diff --git a/dist/index.html b/dist/index.html index dcb5e2c..01469c7 100644 --- a/dist/index.html +++ b/dist/index.html @@ -159,8 +159,8 @@

Loading...

- - - + + + \ No newline at end of file diff --git a/dist/js/app-loader.js b/dist/js/app-loader.js index 09e210e..bd3485b 100644 --- a/dist/js/app-loader.js +++ b/dist/js/app-loader.js @@ -1,7 +1,7 @@ (function() { var promise, version; - version = 1430807141828; + version = 1430807633638; window.taigaConfig = { "api": "http://localhost:8000/api/v1/", diff --git a/dist/js/app.js b/dist/js/app.js index 2dfe6e5..36c726e 100644 --- a/dist/js/app.js +++ b/dist/js/app.js @@ -1,17 +1,8 @@ (function(){var configure,init,module,modules,taiga;this.taiga=taiga={},this.taigaContribPlugins=this.taigaContribPlugins||[],taiga.generateHash=function(components){return null==components&&(components=[]),components=_.map(components,function(x){return JSON.stringify(x)}),hex_sha1(components.join(":"))},taiga.generateUniqueSessionIdentifier=function(){var date,randomNumber;return date=(new Date).getTime(),randomNumber=Math.floor(150994944*Math.random()),taiga.generateHash([date,randomNumber])},taiga.sessionId=taiga.generateUniqueSessionIdentifier(),configure=function($routeProvider,$locationProvider,$httpProvider,$provide,$tgEventsProvider,tgLoaderProvider,$compileProvider){var authHttpIntercept,defaultHeaders,versionCheckHttpIntercept;return $routeProvider.when("/",{templateUrl:"project/projects.html",resolve:{loader:tgLoaderProvider.add()}}),$routeProvider.when("/project/:pslug/",{templateUrl:"project/project.html"}),$routeProvider.when("/project/:pslug/search",{templateUrl:"search/search.html",reloadOnSearch:!1}),$routeProvider.when("/project/:pslug/backlog",{templateUrl:"backlog/backlog.html",resolve:{loader:tgLoaderProvider.add()}}),$routeProvider.when("/project/:pslug/kanban",{templateUrl:"kanban/kanban.html",resolve:{loader:tgLoaderProvider.add()}}),$routeProvider.when("/project/:pslug/taskboard/:sslug",{templateUrl:"taskboard/taskboard.html",resolve:{loader:tgLoaderProvider.add()}}),$routeProvider.when("/project/:pslug/us/:usref",{templateUrl:"us/us-detail.html",resolve:{loader:tgLoaderProvider.add()}}),$routeProvider.when("/project/:pslug/task/:taskref",{templateUrl:"task/task-detail.html",resolve:{loader:tgLoaderProvider.add()}}),$routeProvider.when("/project/:pslug/wiki",{redirectTo:function(params){return"/project/"+params.pslug+"/wiki/home"}}),$routeProvider.when("/project/:pslug/wiki/:slug",{templateUrl:"wiki/wiki.html",resolve:{loader:tgLoaderProvider.add()}}),$routeProvider.when("/project/:pslug/team",{templateUrl:"team/team.html",resolve:{loader:tgLoaderProvider.add()}}),$routeProvider.when("/project/:pslug/issues",{templateUrl:"issue/issues.html",resolve:{loader:tgLoaderProvider.add()}}),$routeProvider.when("/project/:pslug/issue/:issueref",{templateUrl:"issue/issues-detail.html",resolve:{loader:tgLoaderProvider.add()}}),$routeProvider.when("/project/:pslug/admin/project-profile/details",{templateUrl:"admin/admin-project-profile.html"}),$routeProvider.when("/project/:pslug/admin/project-profile/default-values",{templateUrl:"admin/admin-project-default-values.html"}),$routeProvider.when("/project/:pslug/admin/project-profile/modules",{templateUrl:"admin/admin-project-modules.html"}),$routeProvider.when("/project/:pslug/admin/project-profile/export",{templateUrl:"admin/admin-project-export.html"}),$routeProvider.when("/project/:pslug/admin/project-profile/reports",{templateUrl:"admin/admin-project-reports.html"}),$routeProvider.when("/project/:pslug/admin/project-values/status",{templateUrl:"admin/admin-project-values-status.html"}),$routeProvider.when("/project/:pslug/admin/project-values/points",{templateUrl:"admin/admin-project-values-points.html"}),$routeProvider.when("/project/:pslug/admin/project-values/priorities",{templateUrl:"admin/admin-project-values-priorities.html"}),$routeProvider.when("/project/:pslug/admin/project-values/severities",{templateUrl:"admin/admin-project-values-severities.html"}),$routeProvider.when("/project/:pslug/admin/project-values/types",{templateUrl:"admin/admin-project-values-types.html"}),$routeProvider.when("/project/:pslug/admin/project-values/custom-fields",{templateUrl:"admin/admin-project-values-custom-fields.html"}),$routeProvider.when("/project/:pslug/admin/memberships",{templateUrl:"admin/admin-memberships.html"}),$routeProvider.when("/project/:pslug/admin/roles",{templateUrl:"admin/admin-roles.html"}),$routeProvider.when("/project/:pslug/admin/third-parties/webhooks",{templateUrl:"admin/admin-third-parties-webhooks.html"}),$routeProvider.when("/project/:pslug/admin/third-parties/github",{templateUrl:"admin/admin-third-parties-github.html"}),$routeProvider.when("/project/:pslug/admin/third-parties/gitlab",{templateUrl:"admin/admin-third-parties-gitlab.html"}),$routeProvider.when("/project/:pslug/admin/third-parties/bitbucket",{templateUrl:"admin/admin-third-parties-bitbucket.html"}),$routeProvider.when("/project/:pslug/admin/contrib/:plugin",{templateUrl:"contrib/main.html"}),$routeProvider.when("/project/:pslug/user-settings/user-profile",{templateUrl:"user/user-profile.html"}),$routeProvider.when("/project/:pslug/user-settings/user-change-password",{templateUrl:"user/user-change-password.html"}),$routeProvider.when("/project/:pslug/user-settings/user-avatar",{templateUrl:"user/user-avatar.html"}),$routeProvider.when("/project/:pslug/user-settings/mail-notifications",{templateUrl:"user/mail-notifications.html"}),$routeProvider.when("/change-email/:email_token",{templateUrl:"user/change-email.html"}),$routeProvider.when("/cancel-account/:cancel_token",{templateUrl:"user/cancel-account.html"}),$routeProvider.when("/login",{templateUrl:"auth/login.html"}),$routeProvider.when("/register",{templateUrl:"auth/register.html"}),$routeProvider.when("/forgot-password",{templateUrl:"auth/forgot-password.html"}),$routeProvider.when("/change-password",{templateUrl:"auth/change-password-from-recovery.html"}),$routeProvider.when("/change-password/:token",{templateUrl:"auth/change-password-from-recovery.html"}),$routeProvider.when("/invitation/:token",{templateUrl:"auth/invitation.html"}),$routeProvider.when("/error",{templateUrl:"error/error.html"}),$routeProvider.when("/not-found",{templateUrl:"error/not-found.html"}),$routeProvider.when("/permission-denied",{templateUrl:"error/permission-denied.html"}),$routeProvider.otherwise({redirectTo:"/not-found"}),$locationProvider.html5Mode({enabled:!0,requireBase:!1}),defaultHeaders={"Content-Type":"application/json","Accept-Language":"en","X-Session-Id":taiga.sessionId},$httpProvider.defaults.headers["delete"]=defaultHeaders,$httpProvider.defaults.headers.patch=defaultHeaders,$httpProvider.defaults.headers.post=defaultHeaders,$httpProvider.defaults.headers.put=defaultHeaders,$httpProvider.defaults.headers.get={"X-Session-Id":taiga.sessionId},$tgEventsProvider.setSessionId(taiga.sessionId),authHttpIntercept=function($q,$location,$navUrls,$lightboxService){var httpResponseError;return httpResponseError=function(response){var nextPath;return 0===response.status?($lightboxService.closeAll(),$location.path($navUrls.resolve("error")),$location.replace()):401===response.status&&(nextPath=$location.path(),$location.url($navUrls.resolve("login")).search("next="+nextPath)),$q.reject(response)},{responseError:httpResponseError}},$provide.factory("authHttpIntercept",["$q","$location","$tgNavUrls","lightboxService",authHttpIntercept]),$httpProvider.interceptors.push("authHttpIntercept"),versionCheckHttpIntercept=function($q,$confirm){var httpResponseError,versionErrorMsg;return versionErrorMsg="Someone inside Taiga has changed this before and our Oompa Loompas cannot apply your changes. Please reload and apply your changes again (they will be lost).",httpResponseError=function(response){return 400===response.status&&response.data.version?($confirm.notify("error",versionErrorMsg,null,1e4),$q.reject(response)):$q.reject(response)},{responseError:httpResponseError}},$provide.factory("versionCheckHttpIntercept",["$q","$tgConfirm",versionCheckHttpIntercept]),$httpProvider.interceptors.push("versionCheckHttpIntercept"),window.checksley.updateValidators({linewidth:function(val,width){var lines,valid;return lines=taiga.nl2br(val).split("
"),valid=_.every(lines,function(line){return line.lengthi;i++)if(i in this&&this[i]===item)return i;return-1},slice=[].slice,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;nl2br=function(){return function(str){var breakTag;return breakTag="
",(str+"").replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g,"$1"+breakTag+"$2")}}(this),bindMethods=function(){return function(object){var dependencies,methods;return dependencies=_.keys(object),methods=[],_.forIn(object,function(value,key){return indexOf.call(dependencies,key)<0?methods.push(key):void 0}),_.bindAll(object,methods)}}(this),bindOnce=function(){return function(scope,attr,continuation){var delBind,val;return val=scope.$eval(attr),void 0!==val?continuation(val):(delBind=null,delBind=scope.$watch(attr,function(val){return void 0!==val?(continuation(val),delBind?delBind():void 0):void 0}))}}(this),mixOf=function(){var Mixed,base,i,method,mixin,mixins,name,ref;for(base=arguments[0],mixins=2<=arguments.length?slice.call(arguments,1):[],Mixed=function(superClass){function Mixed(){return Mixed.__super__.constructor.apply(this,arguments)}return extend(Mixed,superClass),Mixed}(base),i=mixins.length-1;i>=0;i+=-1){mixin=mixins[i],ref=mixin.prototype;for(name in ref)method=ref[name],Mixed.prototype[name]=method}return Mixed},trim=function(data,char){return _.str.trim(data,char)},slugify=function(data){return _.str.slugify(data)},unslugify=function(data){return data?_.str.capitalize(data.replace(/-/g," ")):data},toggleText=function(element,texts){var nextTextPosition,text;return nextTextPosition=element.data("nextTextPosition"),(null==nextTextPosition||nextTextPosition>=texts.length)&&(nextTextPosition=0),text=texts[nextTextPosition],element.data("nextTextPosition",nextTextPosition+1),element.text(text)},groupBy=function(coll,pred){var i,item,len,result;for(result={},i=0,len=coll.length;len>i;i++)item=coll[i],result[pred(item)]=item;return result},timeout=function(wait,continuation){return window.setTimeout(continuation,wait)},cancelTimeout=function(timeoutVar){return window.clearTimeout(timeoutVar)},scopeDefer=function(scope,func){return _.defer(function(){return function(){return scope.$apply(func)}}(this))},toString=function(value){return _.isNumber(value)?value+"":_.isString(value)?value:_.isPlainObject(value)?JSON.stringify(value):_.isUndefined(value)?"":value.toString()},joinStr=function(str,coll){return _.str.join(str,coll)},debounce=function(wait,func){return _.debounce(func,wait,{leading:!0,trailing:!1})},debounceLeading=function(wait,func){return _.debounce(func,wait,{leading:!1,trailing:!0})},startswith=function(str1,str2){return _.str.startsWith(str1,str2)},sizeFormat=function(input,precision){var number,size,units;return null==precision&&(precision=1),isNaN(parseFloat(input))||!isFinite(input)?"-":0===input?"0 bytes":(units=["bytes","KB","MB","GB","TB","PB"],number=Math.floor(Math.log(input)/Math.log(1024)),number>5&&(number=5),size=(input/Math.pow(1024,number)).toFixed(precision),size+" "+units[number])},taiga=this.taiga,taiga.nl2br=nl2br,taiga.bindMethods=bindMethods,taiga.bindOnce=bindOnce,taiga.mixOf=mixOf,taiga.trim=trim,taiga.slugify=slugify,taiga.unslugify=unslugify,taiga.toggleText=toggleText,taiga.groupBy=groupBy,taiga.timeout=timeout,taiga.cancelTimeout=cancelTimeout,taiga.scopeDefer=scopeDefer,taiga.toString=toString,taiga.joinStr=joinStr,taiga.debounce=debounce,taiga.debounceLeading=debounceLeading,taiga.startswith=startswith,taiga.sizeFormat=sizeFormat}.call(this),function(){var FiltersMixin,PageMixin,groupBy,joinStr,taiga,toString,trim;taiga=this.taiga,groupBy=this.taiga.groupBy,joinStr=this.taiga.joinStr,trim=this.taiga.trim,toString=this.taiga.toString,PageMixin=function(){function PageMixin(){}return PageMixin.prototype.fillUsersAndRoles=function(users,roles){var activeUsers,availableRoles;return activeUsers=_.filter(users,function(){return function(user){return user.is_active}}(this)),this.scope.activeUsers=_.sortBy(activeUsers,"full_name_display"),this.scope.activeUsersById=groupBy(this.scope.activeUsers,function(e){return e.id}),this.scope.users=_.sortBy(users,"full_name_display"),this.scope.usersById=groupBy(this.scope.users,function(e){return e.id}),this.scope.roles=_.sortBy(roles,"order"),availableRoles=_(this.scope.project.memberships).map("role").uniq().value(),this.scope.computableRoles=_(roles).filter("computable").filter(function(x){return _.contains(availableRoles,x.id)}).value()},PageMixin.prototype.loadUsersAndRoles=function(){var promise;return promise=this.q.all([this.rs.projects.usersList(this.scope.projectId),this.rs.projects.rolesList(this.scope.projectId)]),promise.then(function(_this){return function(results){var roles,users;return users=results[0],roles=results[1],_this.fillUsersAndRoles(users,roles),results}}(this))},PageMixin}(),taiga.PageMixin=PageMixin,FiltersMixin=function(){function FiltersMixin(){}return FiltersMixin.prototype.selectFilter=function(name,value,load){var existing,location,params;return null==load&&(load=!1),params=this.location.search(),void 0!==params[name]&&"page"!==name&&(existing=_.map(taiga.toString(params[name]).split(","),function(x){return trim(x)}),existing.push(taiga.toString(value)),existing=_.compact(existing),value=joinStr(",",_.uniq(existing))),this.location.isInCurrentRouteParams(name,value)?void 0:(location=load?this.location:this.location.noreload(this.scope),location.search(name,value))},FiltersMixin.prototype.replaceFilter=function(name,value,load){var location;return null==load&&(load=!1),this.location.isInCurrentRouteParams(name,value)?void 0:(location=load?this.location:this.location.noreload(this.scope),location.search(name,value))},FiltersMixin.prototype.replaceAllFilters=function(filters,load){var location;return null==load&&(load=!1),location=load?this.location:this.location.noreload(this.scope),location.search(filters)},FiltersMixin.prototype.unselectFilter=function(name,value,load){var location,newValues,params,parsedValues;return null==load&&(load=!1),params=this.location.search(),void 0!==params[name]?((void 0===value||null===value)&&delete params[name],parsedValues=_.map(taiga.toString(params[name]).split(","),function(x){return trim(x)}),newValues=_.reject(parsedValues,function(x){return x===taiga.toString(value)}),newValues=_.compact(newValues),value=_.isEmpty(newValues)?null:joinStr(",",_.uniq(newValues)),location=load?this.location:this.location.noreload(this.scope),location.search(name,value)):void 0},FiltersMixin}(),taiga.FiltersMixin=FiltersMixin}.call(this),function(){var module;module=angular.module("taigaAdmin",[])}.call(this),function(){var AuthService,CancelAccountDirective,ChangeEmailDirective,ChangePasswordFromRecoveryDirective,ForgotPasswordDirective,InvitationDirective,LoginDirective,PublicRegisterMessageDirective,RegisterDirective,debounce,module,taiga,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,debounce=this.taiga.debounce,module=angular.module("taigaAuth",["taigaResources"]),AuthService=function(superClass){function AuthService(rootscope,storage,model,rs,http,urls){this.rootscope=rootscope,this.storage=storage,this.model=model,this.rs=rs,this.http=http,this.urls=urls,AuthService.__super__.constructor.call(this)}return extend(AuthService,superClass),AuthService.$inject=["$rootScope","$tgStorage","$tgModel","$tgResources","$tgHttp","$tgUrls"],AuthService.prototype.getUser=function(){var user,userData;return this.rootscope.user?this.rootscope.user:(userData=this.storage.get("userInfo"),userData?(user=this.model.make_model("users",userData),this.rootscope.user=user,user):null)},AuthService.prototype.setUser=function(user){return this.rootscope.auth=user,this.rootscope.$broadcast("i18n:change",user.default_language),this.storage.set("userInfo",user.getAttrs()),this.rootscope.user=user},AuthService.prototype.clear=function(){return this.rootscope.auth=null,this.rootscope.user=null,this.storage.remove("userInfo")},AuthService.prototype.setToken=function(token){return this.storage.set("token",token)},AuthService.prototype.getToken=function(){return this.storage.get("token")},AuthService.prototype.removeToken=function(){return this.storage.remove("token")},AuthService.prototype.isAuthenticated=function(){return null!==this.getUser()?!0:!1},AuthService.prototype.login=function(data,type){var url;return url=this.urls.resolve("auth"),data=_.clone(data,!1),data.type=type?type:"normal",this.removeToken(),this.http.post(url,data).then(function(_this){return function(data){var user;return user=_this.model.make_model("users",data.data),_this.setToken(user.auth_token),_this.setUser(user),user}}(this))},AuthService.prototype.logout=function(){return this.removeToken(),this.clear()},AuthService.prototype.register=function(data,type,existing){var url;return url=this.urls.resolve("auth-register"),data=_.clone(data,!1),data.type=type?type:"public","private"===type&&(data.existing=existing?existing:!1),this.removeToken(),this.http.post(url,data).then(function(_this){return function(response){var user;return user=_this.model.make_model("users",response.data),_this.setToken(user.auth_token),_this.setUser(user),user}}(this))},AuthService.prototype.getInvitation=function(token){return this.rs.invitations.get(token)},AuthService.prototype.acceptInvitiationWithNewUser=function(data){return this.register(data,"private",!1)},AuthService.prototype.acceptInvitiationWithExistingUser=function(data){return this.register(data,"private",!0)},AuthService.prototype.forgotPassword=function(data){var url;return url=this.urls.resolve("users-password-recovery"),data=_.clone(data,!1),this.removeToken(),this.http.post(url,data)},AuthService.prototype.changePasswordFromRecovery=function(data){var url;return url=this.urls.resolve("users-change-password-from-recovery"),data=_.clone(data,!1),this.removeToken(),this.http.post(url,data)},AuthService.prototype.changeEmail=function(data){var url;return url=this.urls.resolve("users-change-email"),data=_.clone(data,!1),this.http.post(url,data)},AuthService.prototype.cancelAccount=function(data){var url;return url=this.urls.resolve("users-cancel-account"),data=_.clone(data,!1),this.http.post(url,data)},AuthService}(taiga.Service),module.service("$tgAuth",AuthService),PublicRegisterMessageDirective=function($config,$navUrls,templates){var template,templateFn;return template=templates.get("auth/login-text.html",!0),templateFn=function(){var publicRegisterEnabled;return publicRegisterEnabled=$config.get("publicRegisterEnabled"),publicRegisterEnabled?template({url:$navUrls.resolve("register")}):""},{restrict:"AE",scope:{},template:templateFn}},module.directive("tgPublicRegisterMessage",["$tgConfig","$tgNavUrls","$tgTemplate",PublicRegisterMessageDirective]),LoginDirective=function($auth,$confirm,$location,$config,$routeParams,$navUrls,$events){var link;return link=function($scope,$el){var onError,onSuccess,submit;return onSuccess=function(){var nextUrl;return nextUrl=$routeParams.next&&$routeParams.next!==$navUrls.resolve("login")?$routeParams.next:$navUrls.resolve("home"),$events.setupConnection(),$location.path(nextUrl)},onError=function(){return $confirm.notify("light-error","According to our Oompa Loompas, your username/email or password are incorrect.")},submit=debounce(2e3,function(){return function(event){var data,form,loginFormType,promise;return event.preventDefault(),form=new checksley.Form($el.find("form.login-form")),form.validate()?(data={username:$el.find("form.login-form input[name=username]").val(),password:$el.find("form.login-form input[name=password]").val()},loginFormType=$config.get("loginFormType","normal"),promise=$auth.login(data,loginFormType),promise.then(onSuccess,onError)):void 0}}(this)),$el.on("submit","form",submit)},{link:link}},module.directive("tgLogin",["$tgAuth","$tgConfirm","$tgLocation","$tgConfig","$routeParams","$tgNavUrls","$tgEvents",LoginDirective]),RegisterDirective=function($auth,$confirm,$location,$navUrls,$config,$analytics){var link;return link=function($scope,$el){var form,onErrorSubmit,onSuccessSubmit,submit;return $config.get("publicRegisterEnabled")||($location.path($navUrls.resolve("not-found")),$location.replace()),$scope.data={},form=$el.find("form").checksley({onlyOneErrorElement:!0}),onSuccessSubmit=function(){return $analytics.trackEvent("auth","register","user registration",1),$confirm.notify("success","Our Oompa Loompas are happy, welcome to Taiga."),$location.path($navUrls.resolve("home"))},onErrorSubmit=function(response){return null!=response.data._error_message&&$confirm.notify("light-error","According to our Oompa Loompas there was an error. "+response.data._error_message),form.setErrors(response.data)},submit=debounce(2e3,function(){return function(event){var promise;return event.preventDefault(),form.validate()?(promise=$auth.register($scope.data),promise.then(onSuccessSubmit,onErrorSubmit)):void 0}}(this)),$el.on("submit","form",submit)},{link:link}},module.directive("tgRegister",["$tgAuth","$tgConfirm","$tgLocation","$tgNavUrls","$tgConfig","$tgAnalytics",RegisterDirective]),ForgotPasswordDirective=function($auth,$confirm,$location,$navUrls){var link;return link=function($scope,$el){var form,onErrorSubmit,onSuccessSubmit,submit;return $scope.data={},form=$el.find("form").checksley(),onSuccessSubmit=function(response){return $location.path($navUrls.resolve("login")),$confirm.success("Check your inbox!
We have sent a mail to
"+response.data.email+"
with the instructions to set a new password")},onErrorSubmit=function(){return $confirm.notify("light-error","According to our Oompa Loompas, your are not registered yet.")},submit=debounce(2e3,function(){return function(event){var promise;return event.preventDefault(),form.validate()?(promise=$auth.forgotPassword($scope.data),promise.then(onSuccessSubmit,onErrorSubmit)):void 0}}(this)),$el.on("submit","form",submit)},{link:link}},module.directive("tgForgotPassword",["$tgAuth","$tgConfirm","$tgLocation","$tgNavUrls",ForgotPasswordDirective]),ChangePasswordFromRecoveryDirective=function($auth,$confirm,$location,$params,$navUrls){var link;return link=function($scope,$el){var form,onErrorSubmit,onSuccessSubmit,submit;return $scope.data={},null!=$params.token?($scope.tokenInParams=!0,$scope.data.token=$params.token):$scope.tokenInParams=!1,form=$el.find("form").checksley(),onSuccessSubmit=function(){return $location.path($navUrls.resolve("login")),$confirm.success("Our Oompa Loompas saved your new password.
Try to sign in with it.")},onErrorSubmit=function(response){return $confirm.notify("light-error","One of our Oompa Loompas say '"+response.data._error_message+"'.")},submit=debounce(2e3,function(){return function(event){var promise;return event.preventDefault(),form.validate()?(promise=$auth.changePasswordFromRecovery($scope.data),promise.then(onSuccessSubmit,onErrorSubmit)):void 0}}(this)),$el.on("submit","form",submit)},{link:link}},module.directive("tgChangePasswordFromRecovery",["$tgAuth","$tgConfirm","$tgLocation","$routeParams","$tgNavUrls",ChangePasswordFromRecoveryDirective]),InvitationDirective=function($auth,$confirm,$location,$params,$navUrls,$analytics){var link;return link=function($scope,$el){var loginForm,onErrorSubmitLogin,onErrorSubmitRegister,onSuccessSubmitLogin,onSuccessSubmitRegister,promise,registerForm,submitLogin,submitRegister,token;return token=$params.token,promise=$auth.getInvitation(token),promise.then(function(invitation){return $scope.invitation=invitation}),promise.then(null,function(){return $location.path($navUrls.resolve("login")),$confirm.success("Ooops, we have a problem
Our Oompa Loompas can't find your invitation.")}),$scope.dataLogin={token:token},loginForm=$el.find("form.login-form").checksley({onlyOneErrorElement:!0}),onSuccessSubmitLogin=function(){return $analytics.trackEvent("auth","invitationAccept","invitation accept with existing user",1),$location.path($navUrls.resolve("project",{project:$scope.invitation.project_slug})),$confirm.notify("success","You've successfully joined this project","Welcome to "+_.escape($scope.invitation.project_name))},onErrorSubmitLogin=function(){return $confirm.notify("light-error","According to our Oompa Loompas, your are not registered yet or typed an invalid password.")},submitLogin=debounce(2e3,function(){return function(event){return event.preventDefault(),loginForm.validate()?(promise=$auth.acceptInvitiationWithExistingUser($scope.dataLogin),promise.then(onSuccessSubmitLogin,onErrorSubmitLogin)):void 0}}(this)),$el.on("submit","form.login-form",submitLogin),$el.on("click",".button-login",submitLogin),$scope.dataRegister={token:token},registerForm=$el.find("form.register-form").checksley(),onSuccessSubmitRegister=function(){return $analytics.trackEvent("auth","invitationAccept","invitation accept with new user",1),$location.path($navUrls.resolve("project",{project:$scope.invitation.project_slug})),$confirm.notify("success","You've successfully joined this project","Welcome to "+_.escape($scope.invitation.project_name))},onErrorSubmitRegister=function(){return $confirm.notify("light-error","According to our Oompa Loompas, that username or email is already in use.")},submitRegister=debounce(2e3,function(){return function(event){return event.preventDefault(),registerForm.validate()?(promise=$auth.acceptInvitiationWithNewUser($scope.dataRegister),promise.then(onSuccessSubmitRegister,onErrorSubmitRegister)):void 0}}(this)),$el.on("submit","form.register-form",submitRegister),$el.on("click",".button-register",submitRegister)},{link:link}},module.directive("tgInvitation",["$tgAuth","$tgConfirm","$tgLocation","$routeParams","$tgNavUrls","$tgAnalytics",InvitationDirective]),ChangeEmailDirective=function($repo,$model,$auth,$confirm,$location,$params,$navUrls){var link;return link=function($scope,$el){var form,onErrorSubmit,onSuccessSubmit,submit;return $scope.data={},$scope.data.email_token=$params.email_token,form=$el.find("form").checksley(),onSuccessSubmit=function(){return $repo.queryOne("users",$auth.getUser().id).then(function(){return function(data){return $auth.setUser(data),$location.path($navUrls.resolve("home")),$confirm.success("Our Oompa Loompas updated your email")}}(this))},onErrorSubmit=function(response){return $confirm.notify("error","One of our Oompa Loompas says '"+response.data._error_message+"'.")},submit=function(){var promise;if(form.validate())return promise=$auth.changeEmail($scope.data),promise.then(onSuccessSubmit,onErrorSubmit)},$el.on("submit",function(event){return event.preventDefault(),submit()}),$el.on("click","a.button-change-email",function(event){return event.preventDefault(),submit()})},{link:link}},module.directive("tgChangeEmail",["$tgRepo","$tgModel","$tgAuth","$tgConfirm","$tgLocation","$routeParams","$tgNavUrls",ChangeEmailDirective]),CancelAccountDirective=function($repo,$model,$auth,$confirm,$location,$params,$navUrls){var link;return link=function($scope,$el){var form,onErrorSubmit,onSuccessSubmit,submit;return $scope.data={},$scope.data.cancel_token=$params.cancel_token,form=$el.find("form").checksley(),onSuccessSubmit=function(){return $auth.logout(),$location.path($navUrls.resolve("home")),$confirm.success("Our Oompa Loompas removed your account")},onErrorSubmit=function(response){return $confirm.notify("error","One of our Oompa Loompas says '"+response.data._error_message+"'.")},submit=debounce(2e3,function(){return function(event){var promise;return event.preventDefault(),form.validate()?(promise=$auth.cancelAccount($scope.data),promise.then(onSuccessSubmit,onErrorSubmit)):void 0}}(this)),$el.on("submit","form",submit)},{link:link}},module.directive("tgCancelAccount",["$tgRepo","$tgModel","$tgAuth","$tgConfirm","$tgLocation","$routeParams","$tgNavUrls",CancelAccountDirective])}.call(this),function(){var module;module=angular.module("taigaBacklog",[])}.call(this),function(){var TaigaMainDirective,bindOnce,groupBy,init,module,taiga,urls;taiga=this.taiga,groupBy=this.taiga.groupBy,bindOnce=this.taiga.bindOnce,module=angular.module("taigaBase",["taigaLocales"]),TaigaMainDirective=function($rootscope,$window){var link;return link=function(){return $window.onresize=function(){return $rootscope.$broadcast("resize")}},{link:link}},module.directive("tgMain",["$rootScope","$window",TaigaMainDirective]),urls={home:"/",error:"/error","not-found":"/not-found","permission-denied":"/permission-denied",login:"/login","forgot-password":"/forgot-password","change-password":"/change-password/:token","change-email":"/change-email/:token","cancel-account":"/cancel-account/:token",register:"/register",invitation:"/invitation/:token","create-project":"/create-project",profile:"/:user",project:"/project/:project","project-backlog":"/project/:project/backlog","project-taskboard":"/project/:project/taskboard/:sprint","project-kanban":"/project/:project/kanban","project-issues":"/project/:project/issues","project-search":"/project/:project/search","project-userstories-detail":"/project/:project/us/:ref","project-tasks-detail":"/project/:project/task/:ref","project-issues-detail":"/project/:project/issue/:ref","project-wiki":"/project/:project/wiki","project-wiki-page":"/project/:project/wiki/:slug","project-team":"/project/:project/team","project-admin-home":"/project/:project/admin/project-profile/details","project-admin-project-profile-details":"/project/:project/admin/project-profile/details","project-admin-project-profile-default-values":"/project/:project/admin/project-profile/default-values","project-admin-project-profile-modules":"/project/:project/admin/project-profile/modules","project-admin-project-profile-export":"/project/:project/admin/project-profile/export","project-admin-project-profile-reports":"/project/:project/admin/project-profile/reports","project-admin-project-values-status":"/project/:project/admin/project-values/status","project-admin-project-values-points":"/project/:project/admin/project-values/points","project-admin-project-values-priorities":"/project/:project/admin/project-values/priorities","project-admin-project-values-severities":"/project/:project/admin/project-values/severities","project-admin-project-values-types":"/project/:project/admin/project-values/types","project-admin-project-values-custom-fields":"/project/:project/admin/project-values/custom-fields","project-admin-memberships":"/project/:project/admin/memberships","project-admin-roles":"/project/:project/admin/roles","project-admin-third-parties-webhooks":"/project/:project/admin/third-parties/webhooks","project-admin-third-parties-github":"/project/:project/admin/third-parties/github","project-admin-third-parties-gitlab":"/project/:project/admin/third-parties/gitlab","project-admin-third-parties-bitbucket":"/project/:project/admin/third-parties/bitbucket","project-admin-contrib":"/project/:project/admin/contrib/:plugin","user-settings-user-profile":"/project/:project/user-settings/user-profile","user-settings-user-change-password":"/project/:project/user-settings/user-change-password","user-settings-user-avatar":"/project/:project/user-settings/user-avatar","user-settings-mail-notifications":"/project/:project/user-settings/mail-notifications"},init=function($log,$navurls){return $log.debug("Initialize navigation urls"),$navurls.update(urls) },module.run(["$log","$tgNavUrls",init])}.call(this),function(){var AnimationFrame,AppTitle,CheckPermissionDirective,ClassPermissionDirective,LimitLineLengthDirective,ProjectUrl,Qqueue,SelectedText,Template,ToggleCommentDirective,module,taiga,slice=[].slice;taiga=this.taiga,module=angular.module("taigaCommon",[]),SelectedText=function($window,$document){var get;return get=function(){return $window.getSelection?$window.getSelection().toString():$document.selection?$document.selection.createRange().text:""},{get:get}},module.factory("$selectedText",["$window","$document",SelectedText]),CheckPermissionDirective=function(){var link,render;return render=function($el,project,permission){return project.my_permissions.indexOf(permission)>-1?$el.removeClass("hidden"):void 0},link=function($scope,$el,$attrs){var permission;return $el.addClass("hidden"),permission=$attrs.tgCheckPermission,$scope.$watch("project",function(project){return null!=project?render($el,project,permission):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgCheckPermission",CheckPermissionDirective),ClassPermissionDirective=function(){var link,name;return name="tgClassPermission",link=function($scope,$el,$attrs){var checkPermissions,tgClassPermissionWatchAction,unbindWatcher;return checkPermissions=function(project,className,permission){var negation;return negation="!"===permission[0],negation&&(permission=permission.slice(1)),negation&&-1===project.my_permissions.indexOf(permission)?$el.addClass(className):negation||-1===project.my_permissions.indexOf(permission)?$el.removeClass(className):$el.addClass(className)},tgClassPermissionWatchAction=function(project){var className,classes,permission,results;if(project){unbindWatcher(),classes=$scope.$eval($attrs[name]),results=[];for(className in classes)permission=classes[className],results.push(checkPermissions(project,className,permission));return results}},unbindWatcher=$scope.$watch("project",tgClassPermissionWatchAction)},{link:link}},module.directive("tgClassPermission",ClassPermissionDirective),AnimationFrame=function(){var add,animationFrame,performAnimation,tail;return animationFrame=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame,performAnimation=function(){return function(){var fn;return fn=tail.shift(),fn(),tail.length?animationFrame(performAnimation):void 0}}(this),tail=[],add=function(){var fn,i,len,results;for(results=[],i=0,len=arguments.length;len>i;i++)fn=arguments[i],tail.push(fn),results.push(1===tail.length?animationFrame(performAnimation):void 0);return results},{add:add}},module.factory("animationFrame",AnimationFrame),ToggleCommentDirective=function(){var link;return link=function($scope,$el){return $el.find("textarea").on("focus",function(){return $el.addClass("active")})},{link:link}},module.directive("tgToggleComment",ToggleCommentDirective),AppTitle=function(){var set;return set=function(text){return $("title").text(text)},{set:set}},module.factory("$appTitle",AppTitle),ProjectUrl=function($navurls){var get;return get=function(project){var ctx;return ctx={project:project.slug},project.is_backlog_activated&&project.my_permissions.indexOf("view_us")>-1?$navurls.resolve("project-backlog",ctx):project.is_kanban_activated&&project.my_permissions.indexOf("view_us")>-1?$navurls.resolve("project-kanban",ctx):project.is_wiki_activated&&project.my_permissions.indexOf("view_wiki_pages")>-1?$navurls.resolve("project-wiki",ctx):project.is_issues_activated&&project.my_permissions.indexOf("view_issues")>-1?$navurls.resolve("project-issues",ctx):$navurls.resolve("project",ctx)},{get:get}},module.factory("$projectUrl",["$tgNavUrls",ProjectUrl]),LimitLineLengthDirective=function(){var link;return link=function($scope,$el){var maxColsPerLine;return maxColsPerLine=parseInt($el.attr("cols")),$el.on("keyup",function(event){var code,lines;return code=event.keyCode,lines=$el.val().split("\n"),_.each(lines,function(line,index){return lines[index]=line.substring(0,maxColsPerLine-2)}),$el.val(lines.join("\n"))})},{link:link}},module.directive("tgLimitLineLength",LimitLineLengthDirective),Qqueue=function($q){var deferred,lastPromise,qqueue;return deferred=$q.defer(),deferred.resolve(),lastPromise=deferred.promise,qqueue={bindAdd:function(_this){return function(fn){return function(){var args;return args=1<=arguments.length?slice.call(arguments,0):[],lastPromise=lastPromise.then(function(){return fn.apply(_this,args)})}}}(this),add:function(){return function(fn){return lastPromise=lastPromise?lastPromise.then(fn):fn(),qqueue}}(this)}},module.factory("$tgQqueue",["$q",Qqueue]),Template=function($templateCache){return{get:function(){return function(name,lodash){var tmp;return null==lodash&&(lodash=!1),tmp=$templateCache.get(name),lodash&&(tmp=_.template(tmp)),tmp}}(this)}},module.factory("$tgTemplate",["$templateCache",Template])}.call(this),function(){var EventsProvider,EventsService,bindMethods,module,startswith,taiga;taiga=this.taiga,startswith=this.taiga.startswith,bindMethods=this.taiga.bindMethods,module=angular.module("taigaEvents",[]),EventsService=function(){function EventsService(win,log,config,auth){this.win=win,this.log=log,this.config=config,this.auth=auth,bindMethods(this)}return EventsService.prototype.initialize=function(sessionId){return this.sessionId=sessionId,this.subscriptions={},this.connected=!1,this.error=!1,this.pendingMessages=[],void 0===this.win.WebSocket?this.log.info("WebSockets not supported on your browser"):void 0},EventsService.prototype.setupConnection=function(){var loc,path,scheme,url;return this.stopExistingConnection(),(url=this.config.get("eventsUrl"))?(startswith(url,"ws:")||startswith(url,"wss:")||(loc=this.win.location,scheme="https:"===loc.protocol?"wss:":"ws:",path=_.str.ltrim(url,"/"),url=scheme+"//"+loc.host+"/"+path),this.ws=new this.win.WebSocket(url),this.ws.addEventListener("open",this.onOpen),this.ws.addEventListener("message",this.onMessage),this.ws.addEventListener("error",this.onError),this.ws.addEventListener("close",this.onClose)):void 0},EventsService.prototype.stopExistingConnection=function(){return void 0!==this.ws?(this.ws.removeEventListener("open",this.onOpen),this.ws.removeEventListener("close",this.onClose),this.ws.removeEventListener("error",this.onError),this.ws.removeEventListener("message",this.onMessage),this.ws.close(),delete this.ws):void 0},EventsService.prototype.serialize=function(message){return _.isObject(message)?JSON.stringify(message):message},EventsService.prototype.sendMessage=function(message){var i,len,messages,msg,results;if(this.pendingMessages.push(message),this.connected){for(messages=_.map(this.pendingMessages,this.serialize),this.pendingMessages=[],results=[],i=0,len=messages.length;len>i;i++)msg=messages[i],results.push(this.ws.send(msg));return results}},EventsService.prototype.subscribe=function(scope,routingKey,callback){var message,subscription;if(!this.error)return this.log.debug("Subscribe to: "+routingKey),subscription={scope:scope,routingKey:routingKey,callback:_.debounce(callback,500,{leading:!0,trailing:!1})},message={cmd:"subscribe",routing_key:routingKey},this.subscriptions[routingKey]=subscription,this.sendMessage(message),scope.$on("$destroy",function(_this){return function(){return _this.unsubscribe(routingKey)}}(this))},EventsService.prototype.unsubscribe=function(routingKey){var message;if(!this.error)return this.log.debug("Unsubscribe from: "+routingKey),message={cmd:"unsubscribe",routing_key:routingKey},this.sendMessage(message)},EventsService.prototype.onOpen=function(){var message,token;return this.connected=!0,this.log.debug("WebSocket connection opened"),token=this.auth.getToken(),message={cmd:"auth",data:{token:token,sessionId:this.sessionId}},this.sendMessage(message)},EventsService.prototype.onMessage=function(event){var data,routingKey,subscription;return this.log.debug("WebSocket message received: "+event.data),data=JSON.parse(event.data),routingKey=data.routing_key,null!=this.subscriptions[routingKey]?(subscription=this.subscriptions[routingKey],subscription.scope.$apply(function(){return subscription.callback(data.data)})):void 0},EventsService.prototype.onError=function(error){return this.log.error("WebSocket error: "+error),this.error=!0},EventsService.prototype.onClose=function(){return this.log.debug("WebSocket closed."),this.connected=!1},EventsService}(),EventsProvider=function(){function EventsProvider(){}return EventsProvider.prototype.setSessionId=function(sessionId){return this.sessionId=sessionId},EventsProvider.prototype.$get=function($win,$log,$conf,$auth){var service;return service=new EventsService($win,$log,$conf,$auth),service.initialize(this.sessionId),service},EventsProvider.prototype.$get.$inject=["$window","$log","$tgConfig","$tgAuth"],EventsProvider}(),module.provider("$tgEvents",EventsProvider)}.call(this),function(){var FeedbackDirective,bindOnce,debounce,groupBy,mixOf,module,taiga,trim;taiga=this.taiga,groupBy=this.taiga.groupBy,bindOnce=this.taiga.bindOnce,mixOf=this.taiga.mixOf,debounce=this.taiga.debounce,trim=this.taiga.trim,module=angular.module("taigaFeedback",[]),FeedbackDirective=function($lightboxService,$repo,$confirm,$loading){var link;return link=function($scope,$el){var form,submit,submitButton;return form=$el.find("form").checksley(),submit=debounce(2e3,function(){return function(event){var promise;return event.preventDefault(),form.validate()?($loading.start(submitButton),promise=$repo.create("feedback",$scope.feedback),promise.then(function(){return $loading.finish(submitButton),$lightboxService.close($el),$confirm.notify("success","\\o/ we'll be happy to read your")}),promise.then(null,function(){return $loading.finish(submitButton),$confirm.notify("error")})):void 0}}(this)),submitButton=$el.find(".submit-button"),$el.on("submit","form",submit),$scope.$on("feedback:show",function(){return $scope.$apply(function(){return $scope.feedback={}}),$lightboxService.open($el),$el.find("textarea").focus()}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgLbFeedback",["lightboxService","$tgRepo","$tgConfirm","$tgLoading",FeedbackDirective])}.call(this),function(){var module;module=angular.module("taigaIntegrations",[])}.call(this),function(){var module;module=angular.module("taigaIssues",[])}.call(this),function(){var module;module=angular.module("taigaKanban",[])}.call(this),function(){var module;module=angular.module("taigaLocales",[])}.call(this),function(){var ProjectMenuDirective,ProjectsNavigationController,ProjectsNavigationDirective,bindOnce,groupBy,module,taiga,timeout,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,groupBy=this.taiga.groupBy,bindOnce=this.taiga.bindOnce,timeout=this.taiga.timeout,module=angular.module("taigaNavMenu",[]),ProjectsNavigationController=function(superClass){function ProjectsNavigationController(scope,rootscope,rs,navurls,projectUrl){var promise;this.scope=scope,this.rootscope=rootscope,this.rs=rs,this.navurls=navurls,this.projectUrl=projectUrl,promise=this.loadInitialData(),promise.then(null,function(){return console.log("FAIL")}),this.scope.$on("projects:reload",function(_this){return function(){return _this.loadInitialData()}}(this)),this.scope.$on("project:loaded",function(_this){return function(){return _this.loadInitialData()}}(this))}return extend(ProjectsNavigationController,superClass),ProjectsNavigationController.$inject=["$scope","$rootScope","$tgResources","$tgNavUrls","$projectUrl"],ProjectsNavigationController.prototype.loadInitialData=function(){var ref;return this.rs.projects.listByMember(null!=(ref=this.rootscope.user)?ref.id:void 0).then(function(_this){return function(projects){var i,len,project;for(i=0,len=projects.length;len>i;i++)project=projects[i],project.url=_this.projectUrl.get(project);return _this.scope.projects=projects,_this.scope.filteredProjects=projects,_this.scope.filterText="",projects}}(this))},ProjectsNavigationController.prototype.newProject=function(){return this.scope.$apply(function(_this){return function(){return _this.rootscope.$broadcast("projects:create")}}(this))},ProjectsNavigationController.prototype.filterProjects=function(text){return this.scope.filteredProjects=_.filter(this.scope.projects,function(project){return project.name.toLowerCase().indexOf(text)>-1}),this.scope.filterText=text,this.rootscope.$broadcast("projects:filtered")},ProjectsNavigationController}(taiga.Controller),module.controller("ProjectsNavigationController",ProjectsNavigationController),ProjectsNavigationDirective=function($rootscope,animationFrame,$timeout,tgLoader,$location,$compile,$template){var baseTemplate,hideMenu,link,loadingStart,overlay,projectsTemplate;return baseTemplate=$template.get("project/project-navigation-base.html",!0),projectsTemplate=$template.get("project/project-navigation-list.html",!0),overlay=$(".projects-nav-overlay"),loadingStart=0,hideMenu=function(){var difftime,timeoutValue;return overlay.is(":visible")?(difftime=(new Date).getTime()-loadingStart,timeoutValue=0,1e3>difftime&&(timeoutValue=1e3-timeoutValue),timeout(timeoutValue,function(){return overlay.one("transitionend",function(){return $(document.body).removeClass("loading-project open-projects-nav closed-projects-nav").css("overflow-x","visible"),overlay.hide()}),$(document.body).addClass("closed-projects-nav"),tgLoader.disablePreventLoading()})):void 0},link=function($scope,$el,$attrs,$ctrls){var $ctrl,render,renderProjects;return $ctrl=$ctrls[0],$rootscope.$on("project:loaded",hideMenu),renderProjects=function(projects){var html;return html=projectsTemplate({projects:projects}),$el.find(".projects-list").html(html),$scope.$emit("regenerate:project-pagination")},render=function(projects){return $el.html($compile(baseTemplate())($scope)),renderProjects(projects)},overlay.on("click",function(){return hideMenu()}),$(document).on("keydown",function(){return function(e){var code;return code=e.keyCode?e.keyCode:e.which,27===code?hideMenu():void 0}}(this)),$scope.$on("nav:projects-list:open",function(){return $(document.body).hasClass("open-projects-nav")||animationFrame.add(function(){return function(){return overlay.show()}}(this)),animationFrame.add(function(){return function(){return $(document.body).css("overflow-x","hidden")}}(this),function(){return function(){return $(document.body).toggleClass("open-projects-nav")}}(this))}),$el.on("click",".projects-list > li > a",function(event){var currentUrl,nextUrl,target;return target=angular.element(event.currentTarget),nextUrl=target.prop("href"),currentUrl=$location.absUrl(),nextUrl===currentUrl?void hideMenu():($(document.body).addClass("loading-project"),tgLoader.preventLoading(),loadingStart=(new Date).getTime())}),$el.on("click",".create-project-button",function(event){return event.preventDefault(),$ctrl.newProject()}),$el.on("keyup",".search-project",function(event){var target;return target=angular.element(event.currentTarget),$ctrl.filterProjects(target.val())}),$scope.$on("projects:filtered",function(){return renderProjects($scope.filteredProjects)}),$scope.$watch("projects",function(projects){return null!=projects?render(projects):void 0})},{require:["tgProjectsNav"],controller:ProjectsNavigationController,link:link}},module.directive("tgProjectsNav",["$rootScope","animationFrame","$timeout","tgLoader","$tgLocation","$compile","$tgTemplate",ProjectsNavigationDirective]),ProjectMenuDirective=function($log,$compile,$auth,$rootscope,$tgAuth,$location,$navUrls,$config,$template){var getSectionName,link,mainTemplate,menuEntriesTemplate,renderMainMenu,renderMenuEntries,videoConferenceUrl;return menuEntriesTemplate=$template.get("project/project-menu.html",!0),mainTemplate=_.template('\n'),getSectionName=function($el,sectionName,project){var oldSectionName,ref;return oldSectionName=null!=(ref=$el.find("a.active").parent().attr("id"))?ref.replace("nav-",""):void 0,"backlog-kanban"===sectionName&&("backlog"===oldSectionName||"kanban"===oldSectionName?sectionName=oldSectionName:project.is_backlog_activated&&!project.is_kanban_activated?sectionName="backlog":!project.is_backlog_activated&&project.is_kanban_activated&&(sectionName="kanban")),sectionName},renderMainMenu=function($el){var html;return html=mainTemplate({}),$el.html(html)},renderMenuEntries=function($el,targetScope,project){var container,ctx,dom,sectionName;return null==project&&(project={}),container=$el.find(".menu-container"),sectionName=getSectionName($el,targetScope.section,project),ctx={user:$auth.getUser(),project:project,feedbackEnabled:$config.get("feedbackEnabled")},dom=$compile(menuEntriesTemplate(ctx))(targetScope),dom.find("a.active").removeClass("active"),dom.find("#nav-"+sectionName+" > a").addClass("active"),container.replaceWith(dom)},videoConferenceUrl=function(project){var baseUrl,url;if("appear-in"===project.videoconferences)baseUrl="https://appear.in/";else{if("talky"!==project.videoconferences)return"";baseUrl="https://talky.io/"}return url=project.videoconferences_salt?project.slug+"-"+project.videoconferences_salt:""+project.slug,baseUrl+url},link=function($scope,$el){var project;return renderMainMenu($el),project=null,$el.on("click",".logo",function(event){var target;return event.preventDefault(),target=angular.element(event.currentTarget),$rootscope.$broadcast("nav:projects-list:open")}),$el.on("click",".user-settings .avatar",function(event){return event.preventDefault(),$el.find(".user-settings .popover").popover().open()}),$el.on("click",".logout",function(event){return event.preventDefault(),$auth.logout(),$scope.$apply(function(){return $location.path($navUrls.resolve("login"))})}),$el.on("click","#nav-search > a",function(event){return event.preventDefault(),$rootscope.$broadcast("search-box:show",project)}),$el.on("click",".feedback",function(event){return event.preventDefault(),$rootscope.$broadcast("feedback:show")}),$scope.$on("projects:loaded",function(listener){return $el.addClass("hidden"),listener.stopPropagation()}),$scope.$on("project:loaded",function(ctx,newProject){return project=newProject,$el.hasClass("hidden")&&$el.removeClass("hidden"),project.videoconferenceUrl=videoConferenceUrl(project),renderMenuEntries($el,ctx.targetScope,project)})},{link:link}},module.directive("tgProjectMenu",["$log","$compile","$tgAuth","$rootScope","$tgAuth","$tgLocation","$tgNavUrls","$tgConfig","$tgTemplate",ProjectMenuDirective])}.call(this),function(){var module;module=angular.module("taigaProject",[])}.call(this),function(){var RelatedTaskAssignedToInlineEditionDirective,RelatedTaskCreateButtonDirective,RelatedTaskCreateFormDirective,RelatedTaskRowDirective,RelatedTasksDirective,debounce,module,taiga,trim;taiga=this.taiga,trim=this.taiga.trim,debounce=this.taiga.debounce,module=angular.module("taigaRelatedTasks",[]),RelatedTaskRowDirective=function($repo,$compile,$confirm,$rootscope,$loading,$template){var link,templateEdit,templateView;return templateView=$template.get("task/related-task-row.html",!0),templateEdit=$template.get("task/related-task-row-edit.html",!0),link=function($scope,$el,$attrs,$model){var renderEdit,renderView,saveTask;return saveTask=debounce(2e3,function(task){var promise;return task.subject=$el.find("input").val(),$loading.start($el.find(".task-name")),promise=$repo.save(task),promise.then(function(){return function(){return $loading.finish($el.find(".task-name")),$confirm.notify("success"),$rootscope.$broadcast("related-tasks:update")}}(this)),promise.then(null,function(){return function(){return $loading.finish($el.find(".task-name")),$el.find("input").val(task.subject),$confirm.notify("error")}}(this)),promise}),renderEdit=function(task){return $el.html($compile(templateEdit({task:task}))($scope)),$el.on("keyup","input",function(event){return 13===event.keyCode?saveTask($model.$modelValue).then(function(){return renderView($model.$modelValue)}):27===event.keyCode?renderView($model.$modelValue):void 0}),$el.on("click",".icon-floppy",function(){return saveTask($model.$modelValue).then(function(){return renderView($model.$modelValue)})}),$el.on("click",".cancel-edit",function(){return renderView($model.$modelValue)})},renderView=function(task){var perms;return $el.off(),perms={modify_task:-1!==$scope.project.my_permissions.indexOf("modify_task"),delete_task:-1!==$scope.project.my_permissions.indexOf("delete_task")},$el.html($compile(templateView({task:task,perms:perms}))($scope)),$el.on("click",".icon-edit",function(){return renderEdit($model.$modelValue),$el.find("input").focus().select()}),$el.on("click",".delete-task",function(){var message,title;return task=$model.$modelValue,title="Delete Task",message=task.subject,$confirm.askOnDelete(title,message).then(function(finish){var promise;return promise=$repo.remove(task),promise.then(function(){return finish(),$confirm.notify("success"),$scope.$emit("related-tasks:delete")}),promise.then(null,function(){return $confirm.notify("error")})})})},$scope.$watch($attrs.ngModel,function(val){return val?renderView(val):void 0}),$scope.$on("related-tasks:assigned-to-changed",function(){return $rootscope.$broadcast("related-tasks:update")}),$scope.$on("related-tasks:status-changed",function(){return $rootscope.$broadcast("related-tasks:update")}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,require:"ngModel"}},module.directive("tgRelatedTaskRow",["$tgRepo","$compile","$tgConfirm","$rootScope","$tgLoading","$tgTemplate",RelatedTaskRowDirective]),RelatedTaskCreateFormDirective=function($repo,$compile,$confirm,$tgmodel,$loading,$analytics,$template){var link,newTask,template;return template=$template.get("task/related-task-create-form.html",!0),newTask={subject:"",assigned_to:null},link=function($scope,$el){var createTask,render;return createTask=debounce(2e3,function(task){var promise;return task.subject=$el.find("input").val(),task.assigned_to=$scope.newTask.assigned_to,task.status=$scope.newTask.status,$scope.newTask.status=$scope.project.default_task_status,$scope.newTask.assigned_to=null,$loading.start($el.find(".task-name")),promise=$repo.create("tasks",task),promise.then(function(){return $analytics.trackEvent("task","create","create task on userstory",1),$loading.finish($el.find(".task-name")),$scope.$emit("related-tasks:add"),$confirm.notify("success")}),promise.then(null,function(){return $el.find("input").val(task.subject),$loading.finish($el.find(".task-name")),$confirm.notify("error")}),promise}),render=function(){return $el.off(),$el.html($compile(template())($scope)),$el.find("input").focus().select(),$el.addClass("active"),$el.on("keyup","input",function(event){return 13===event.keyCode?createTask(newTask).then(function(){return render()}):27===event.keyCode?$el.html(""):void 0}),$el.on("click",".icon-delete",function(){return $el.html("")}),$el.on("click",".icon-floppy",function(){return createTask(newTask).then(function(){return $el.html("")})})},taiga.bindOnce($scope,"us",function(){return newTask.status=$scope.project.default_task_status,newTask.project=$scope.project.id,newTask.user_story=$scope.us.id,$scope.newTask=$tgmodel.make_model("tasks",newTask),$el.html("")}),$scope.$on("related-tasks:show-form",function(){return render()}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgRelatedTaskCreateForm",["$tgRepo","$compile","$tgConfirm","$tgModel","$tgLoading","$tgAnalytics","$tgTemplate",RelatedTaskCreateFormDirective]),RelatedTaskCreateButtonDirective=function(){var link,template;return template=_.template(''),link=function($scope,$el){return $scope.$watch("project",function(val){return val?($el.off(),$el.html(-1!==$scope.project.my_permissions.indexOf("add_task")?template():""),$el.on("click",".icon",function(){return $scope.$emit("related-tasks:add-new-clicked")})):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgRelatedTaskCreateButton",["$tgRepo","$compile","$tgConfirm","$tgModel",RelatedTaskCreateButtonDirective]),RelatedTasksDirective=function($repo,$rs,$rootscope){var link;return link=function($scope,$el){var loadTasks;return loadTasks=function(){return $rs.tasks.list($scope.projectId,null,$scope.usId).then(function(){return function(tasks){return $scope.tasks=tasks,tasks}}(this))},$scope.$on("related-tasks:add",function(){return loadTasks().then(function(){return $rootscope.$broadcast("related-tasks:update")})}),$scope.$on("related-tasks:delete",function(){return loadTasks().then(function(){return $rootscope.$broadcast("related-tasks:update")})}),$scope.$on("related-tasks:add-new-clicked",function(){return $scope.$broadcast("related-tasks:show-form")}),taiga.bindOnce($scope,"us",function(){return loadTasks()}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgRelatedTasks",["$tgRepo","$tgResources","$rootScope",RelatedTasksDirective]),RelatedTaskAssignedToInlineEditionDirective=function($repo,$rootscope){var link,template;return template=_.template('<%- name %>\n
<%- name %>
'),link=function($scope,$el,$attrs){var $ctrl,autoSave,notAutoSave,task,updateRelatedTask;return updateRelatedTask=function(task){var ctx,member;return ctx={name:"Unassigned",imgurl:"/images/unnamed.png"},member=$scope.usersById[task.assigned_to],member&&(ctx.imgurl=member.photo,ctx.name=member.full_name_display),$el.find(".avatar").html(template(ctx)),$el.find(".task-assignedto").attr("title",ctx.name)},$ctrl=$el.controller(),task=$scope.$eval($attrs.tgRelatedTaskAssignedToInlineEdition),notAutoSave=$scope.$eval($attrs.notAutoSave),autoSave=!notAutoSave,updateRelatedTask(task),$el.on("click",".task-assignedto",function(){return $rootscope.$broadcast("assigned-to:add",task)}),taiga.bindOnce($scope,"project",function(project){return-1===project.my_permissions.indexOf("modify_task")?($el.unbind("click"),$el.find("a").addClass("not-clickable")):void 0}),$scope.$on("assigned-to:added",debounce(2e3,function(){return function(ctx,userId,updatedRelatedTask){return updatedRelatedTask.id===task.id?(updatedRelatedTask.assigned_to=userId,autoSave&&$repo.save(updatedRelatedTask).then(function(){return $scope.$emit("related-tasks:assigned-to-changed")}),updateRelatedTask(updatedRelatedTask)):void 0}}(this))),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgRelatedTaskAssignedToInlineEdition",["$tgRepo","$rootScope",RelatedTaskAssignedToInlineEditionDirective])}.call(this),function(){var ResourcesService,initResources,initUrls,module,taiga,urls,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,ResourcesService=function(superClass){function ResourcesService(){return ResourcesService.__super__.constructor.apply(this,arguments)}return extend(ResourcesService,superClass),ResourcesService}(taiga.Service),urls={auth:"/auth","auth-register":"/auth/register",invitations:"/invitations",permissions:"/permissions",roles:"/roles",projects:"/projects",memberships:"/memberships","notify-policies":"/notify-policies","bulk-create-memberships":"/memberships/bulk_create",milestones:"/milestones",userstories:"/userstories","bulk-create-us":"/userstories/bulk_create","bulk-update-us-backlog-order":"/userstories/bulk_update_backlog_order","bulk-update-us-sprint-order":"/userstories/bulk_update_sprint_order","bulk-update-us-kanban-order":"/userstories/bulk_update_kanban_order","userstories-restore":"/userstories/%s/restore",tasks:"/tasks","bulk-create-tasks":"/tasks/bulk_create","bulk-update-task-taskboard-order":"/tasks/bulk_update_taskboard_order","tasks-restore":"/tasks/%s/restore",issues:"/issues","bulk-create-issues":"/issues/bulk_create","issues-restore":"/issues/%s/restore",wiki:"/wiki","wiki-restore":"/wiki/%s/restore","wiki-links":"/wiki-links","choices/userstory-statuses":"/userstory-statuses","choices/userstory-statuses/bulk-update-order":"/userstory-statuses/bulk_update_order","choices/points":"/points","choices/points/bulk-update-order":"/points/bulk_update_order","choices/task-statuses":"/task-statuses","choices/task-statuses/bulk-update-order":"/task-statuses/bulk_update_order","choices/issue-statuses":"/issue-statuses","choices/issue-statuses/bulk-update-order":"/issue-statuses/bulk_update_order","choices/issue-types":"/issue-types","choices/issue-types/bulk-update-order":"/issue-types/bulk_update_order","choices/priorities":"/priorities","choices/priorities/bulk-update-order":"/priorities/bulk_update_order","choices/severities":"/severities","choices/severities/bulk-update-order":"/severities/bulk_update_order",search:"/search",sites:"/sites","project-templates":"/project-templates","site-members":"/site-members","site-projects":"/site-projects",users:"/users","users-password-recovery":"/users/password_recovery","users-change-password-from-recovery":"/users/change_password_from_recovery","users-change-password":"/users/change_password","users-change-email":"/users/change_email","users-cancel-account":"/users/cancel","user-storage":"/user-storage",resolver:"/resolver","userstory-statuses":"/userstory-statuses",points:"/points","task-statuses":"/task-statuses","issue-statuses":"/issue-statuses","issue-types":"/issue-types",priorities:"/priorities",severities:"/severities","project-modules":"/projects/%s/modules",webhooks:"/webhooks","webhooks-test":"/webhooks/%s/test",webhooklogs:"/webhooklogs","webhooklogs-resend":"/webhooklogs/%s/resend","history/us":"/history/userstory","history/issue":"/history/issue","history/task":"/history/task","history/wiki":"/history/wiki","attachments/us":"/userstories/attachments","attachments/issue":"/issues/attachments","attachments/task":"/tasks/attachments","attachments/wiki_page":"/wiki/attachments","custom-attributes/userstory":"/userstory-custom-attributes","custom-attributes/issue":"/issue-custom-attributes","custom-attributes/task":"/task-custom-attributes","custom-attributes-values/userstory":"/userstories/custom-attributes-values","custom-attributes-values/issue":"/issues/custom-attributes-values","custom-attributes-values/task":"/tasks/custom-attributes-values",feedback:"/feedback",exporter:"/exporter",importer:"/importer/load_dump","userstories-csv":"/userstories/csv?uuid=%s","tasks-csv":"/tasks/csv?uuid=%s","issues-csv":"/issues/csv?uuid=%s"},initUrls=function($log,$urls){return $log.debug("Initialize api urls"),$urls.update(urls) -},initResources=function($log,$rs){var i,len,provider,providers,results;for($log.debug("Initialize resources"),providers=_.toArray(arguments).slice(2),results=[],i=0,len=providers.length;len>i;i++)provider=providers[i],results.push(provider($rs));return results},module=angular.module("taigaResources",["taigaBase"]),module.service("$tgResources",ResourcesService),module.run(["$log","$tgUrls",initUrls]),module.run(["$log","$tgResources","$tgProjectsResourcesProvider","$tgCustomAttributesResourcesProvider","$tgCustomAttributesValuesResourcesProvider","$tgMembershipsResourcesProvider","$tgNotifyPoliciesResourcesProvider","$tgInvitationsResourcesProvider","$tgRolesResourcesProvider","$tgUserSettingsResourcesProvider","$tgSprintsResourcesProvider","$tgUserstoriesResourcesProvider","$tgTasksResourcesProvider","$tgIssuesResourcesProvider","$tgWikiResourcesProvider","$tgSearchResourcesProvider","$tgAttachmentsResourcesProvider","$tgMdRenderResourcesProvider","$tgHistoryResourcesProvider","$tgKanbanResourcesProvider","$tgModulesResourcesProvider","$tgWebhooksResourcesProvider","$tgWebhookLogsResourcesProvider",initResources])}.call(this),function(){var SearchBoxDirective,SearchController,SearchDirective,bindOnce,debounce,debounceLeading,groupBy,mixOf,module,taiga,trim,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,groupBy=this.taiga.groupBy,bindOnce=this.taiga.bindOnce,mixOf=this.taiga.mixOf,debounceLeading=this.taiga.debounceLeading,trim=this.taiga.trim,debounce=this.taiga.debounce,module=angular.module("taigaSearch",[]),SearchController=function(superClass){function SearchController(scope1,repo,rs,params,q,location,appTitle,navUrls,tgLoader){var loadSearchData,promise;this.scope=scope1,this.repo=repo,this.rs=rs,this.params=params,this.q=q,this.location=location,this.appTitle=appTitle,this.navUrls=navUrls,this.tgLoader=tgLoader,this.scope.sectionName="Search",promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.appTitle.set("Search")}}(this)),promise.then(null,this.onInitialDataError.bind(this)),this.scope.searchTerm="",loadSearchData=debounceLeading(100,function(_this){return function(t){return _this.loadSearchData(t)}}(this)),this.scope.$watch("searchTerm",function(_this){return function(term){return term?loadSearchData(term):_this.tgLoader.pageLoaded()}}(this))}return extend(SearchController,superClass),SearchController.$inject=["$scope","$tgRepo","$tgResources","$routeParams","$q","$tgLocation","$appTitle","$tgNavUrls","tgLoader"],SearchController.prototype.loadFilters=function(){var defered;return defered=this.q.defer(),defered.resolve(),defered.promise},SearchController.prototype.loadProject=function(){return this.rs.projects.getBySlug(this.params.pslug).then(function(_this){return function(project){return _this.scope.project=project,_this.scope.$emit("project:loaded",project),_this.scope.issueStatusById=groupBy(project.issue_statuses,function(x){return x.id}),_this.scope.taskStatusById=groupBy(project.task_statuses,function(x){return x.id}),_this.scope.severityById=groupBy(project.severities,function(x){return x.id}),_this.scope.priorityById=groupBy(project.priorities,function(x){return x.id}),_this.scope.membersById=groupBy(project.memberships,function(x){return x.user}),_this.scope.usStatusById=groupBy(project.us_statuses,function(x){return x.id}),project}}(this))},SearchController.prototype.loadSearchData=function(term){var promise;return promise=this.rs.search["do"](this.scope.projectId,term).then(function(_this){return function(data){return _this.scope.searchResults=data,data}}(this)),promise["finally"](function(_this){return function(){return _this.tgLoader.pageLoaded()}}(this)),promise},SearchController.prototype.loadInitialData=function(){return this.loadProject().then(function(_this){return function(project){return _this.scope.projectId=project.id,_this.fillUsersAndRoles(project.users,project.roles)}}(this))},SearchController}(mixOf(taiga.Controller,taiga.PageMixin)),module.controller("SearchController",SearchController),SearchBoxDirective=function($lightboxService,$navurls,$location,$route){var link;return link=function($scope,$el){var project,submit;return project=null,submit=debounce(2e3,function(){return function(event){var form,text,url;return event.preventDefault(),form=$el.find("form").checksley(),form.validate()?(text=$el.find("#search-text").val(),url=$navurls.resolve("project-search",{project:project.slug}),$lightboxService.close($el),$scope.$apply(function(){return $location.path(url),$location.search("text",text).path(url),$route.reload()})):void 0}}(this)),$scope.$on("search-box:show",function(ctx,newProject){return project=newProject,$lightboxService.open($el),$el.find("#search-text").val("")}),$el.on("submit","form",submit)},{link:link}},module.directive("tgSearchBox",["lightboxService","$tgNavUrls","$tgLocation","$route",SearchBoxDirective]),SearchDirective=function($log,$compile,$templatecache,$routeparams,$location){var link,linkTable;return linkTable=function($scope,$el){var getActiveSection,lastSeatchResults,markSectionTabActive,renderFilterTabs,renderTableContent,tabsDom,templates;return tabsDom=$el.find("section.search-filter"),lastSeatchResults=null,getActiveSection=function(data){var maxVal,name,selectedSectionData,selectedSectionName,value;maxVal=0,selectedSectionName=null,selectedSectionData=null;for(name in data)value=data[name],"count"!==name&&value.length>maxVal&&(maxVal=value.length,selectedSectionName=name,selectedSectionData=value);return 0===maxVal?{name:"userstories",value:[]}:{name:selectedSectionName,value:selectedSectionData}},renderFilterTabs=function(data){var name,results,value;results=[];for(name in data)value=data[name],"count"!==name&&results.push(tabsDom.find("li."+name+" .num").html(value.length));return results},markSectionTabActive=function(section){return tabsDom.find("a.active").removeClass("active"),tabsDom.find("li."+section.name+" a").addClass("active")},templates={issues:$templatecache.get("search-issues"),tasks:$templatecache.get("search-tasks"),userstories:$templatecache.get("search-userstories"),wikipages:$templatecache.get("search-wikipages")},renderTableContent=function(section){var element,oldElements,oldScope,scope,template;return oldElements=$el.find(".search-result-table").children(),oldScope=oldElements.scope(),oldScope&&(oldScope.$destroy(),oldElements.remove()),scope=$scope.$new(),scope[section.name]=section.value,template=angular.element.parseHTML(trim(templates[section.name])),element=$compile(template)(scope),$el.find(".search-result-table").html(element)},$scope.$watch("searchResults",function(data){var activeSection;return lastSeatchResults=data,activeSection=getActiveSection(data),renderFilterTabs(data),renderTableContent(activeSection),markSectionTabActive(activeSection)}),$scope.$watch("searchTerm",function(searchTerm){return searchTerm?$location.search("text",searchTerm):void 0}),$el.on("click",".search-filter li > a",function(event){var section,sectionData,sectionName,target;return event.preventDefault(),target=angular.element(event.currentTarget),sectionName=target.parent().data("name"),sectionData=lastSeatchResults[sectionName],section={name:sectionName,value:sectionData},$scope.$apply(function(){return renderTableContent(section),markSectionTabActive(section)})})},link=function($scope,$el,$attrs){var $ctrl,searchText;return $ctrl=$el.controller(),linkTable($scope,$el,$attrs,$ctrl),searchText=$routeparams.text,$scope.$watch("projectId",function(projectId){return null!=projectId?$scope.searchTerm=searchText:void 0})},{link:link}},module.directive("tgSearch",["$log","$compile","$templateCache","$routeParams","$tgLocation",SearchDirective])}.call(this),function(){var module;module=angular.module("taigaTaskboard",[])}.call(this),function(){var module;module=angular.module("taigaTasks",[])}.call(this),function(){var module;module=angular.module("taigaTeam",[])}.call(this),function(){var module;module=angular.module("taigaUserSettings",[])}.call(this),function(){var module;module=angular.module("taigaUserStories",[])}.call(this),function(){var module;module=angular.module("taigaWiki",[])}.call(this),function(){var AnalyticsService,module,taiga,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,module=angular.module("taigaCommon"),AnalyticsService=function(superClass){function AnalyticsService(rootscope,log,config,win,doc,location){var conf;this.rootscope=rootscope,this.log=log,this.config=config,this.win=win,this.doc=doc,this.location=location,this.initialized=!1,conf=this.config.get("analytics",{}),this.accountId=conf.accountId,this.pageEvent=conf.pageEvent||"$routeChangeSuccess",this.trackRoutes=conf.trackRoutes||!0,this.ignoreFirstPageLoad=conf.ignoreFirstPageLoad||!1}return extend(AnalyticsService,superClass),AnalyticsService.$inject=["$rootScope","$log","$tgConfig","$window","$document","$location"],AnalyticsService.prototype.initialize=function(){return this.accountId?(this.injectAnalytics(),this.win.ga("create",this.accountId,"auto"),this.win.ga("require","displayfeatures"),this.trackRoutes&&!this.ignoreFirstPageLoad&&this.win.ga("send","pageview",this.getUrl()),this.trackRoutes&&this.rootscope.$on(this.pageEvent,function(_this){return function(){return _this.trackPage(_this.getUrl(),"Taiga")}}(this)),this.initialized=!0):void this.log.debug("Analytics: no acount id provided. Disabling.")},AnalyticsService.prototype.getUrl=function(){return this.location.path()},AnalyticsService.prototype.injectAnalytics=function(){var fn;return(fn=function(i,s,o,g,r,a,m){i.GoogleAnalyticsObject=r,i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date,a=s.createElement(o),m=s.getElementsByTagName(o)[0],a.async=1,a.src=g,m.parentNode.insertBefore(a,m)})(window,document,"script","//www.google-analytics.com/analytics.js","ga")},AnalyticsService.prototype.trackPage=function(url,title){return this.initialized&&this.win.ga?(title=title||this.doc[0].title,this.win.ga("send","pageview",{page:url,title:title})):void 0},AnalyticsService.prototype.trackEvent=function(category,action,label,value){return this.initialized&&this.win.ga?this.win.ga("send","event",category,action,label,value):void 0},AnalyticsService}(taiga.Service),module.service("$tgAnalytics",AnalyticsService)}.call(this),function(){var AttachmentDirective,AttachmentsController,AttachmentsDirective,bindMethods,bindOnce,module,sizeFormat,taiga,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,sizeFormat=this.taiga.sizeFormat,bindOnce=this.taiga.bindOnce,bindMethods=this.taiga.bindMethods,module=angular.module("taigaCommon"),AttachmentsController=function(superClass){function AttachmentsController(scope,rootscope,repo,rs,confirm,q){this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.rs=rs,this.confirm=confirm,this.q=q,bindMethods(this),this.type=null,this.objectId=null,this.projectId=null,this.uploadingAttachments=[],this.attachments=[],this.attachmentsCount=0,this.deprecatedAttachmentsCount=0,this.showDeprecated=!1}return extend(AttachmentsController,superClass),AttachmentsController.$inject=["$scope","$rootScope","$tgRepo","$tgResources","$tgConfirm","$q"],AttachmentsController.prototype.initialize=function(type,objectId){return this.type=type,this.objectId=objectId,this.projectId=this.scope.projectId},AttachmentsController.prototype.loadAttachments=function(){var urlname;return this.objectId?(urlname="attachments/"+this.type,this.rs.attachments.list(urlname,this.objectId,this.projectId).then(function(_this){return function(attachments){return _this.attachments=_.sortBy(attachments,"order"),_this.updateCounters(),attachments}}(this))):this.attachments},AttachmentsController.prototype.updateCounters=function(){return this.attachmentsCount=this.attachments.length,this.deprecatedAttachmentsCount=_.filter(this.attachments,{is_deprecated:!0}).length},AttachmentsController.prototype._createAttachment=function(attachment){var promise,urlName;return urlName="attachments/"+this.type,promise=this.rs.attachments.create(urlName,this.projectId,this.objectId,attachment),promise=promise.then(function(_this){return function(data){var index;return data.isCreatedRightNow=!0,index=_this.uploadingAttachments.indexOf(attachment),_this.uploadingAttachments.splice(index,1),_this.attachments.push(data),_this.rootscope.$broadcast("attachment:create")}}(this)),promise=promise.then(null,function(_this){return function(data){var index;return 413===data.status&&_this.scope.$emit("attachments:size-error"),index=_this.uploadingAttachments.indexOf(attachment),_this.uploadingAttachments.splice(index,1),_this.confirm.notify("error","We have not been able to upload '"+attachment.name+"'. "+data.data._error_message),_this.q.reject(data)}}(this))},AttachmentsController.prototype.createAttachments=function(attachments){var promises;return promises=_.map(attachments,function(_this){return function(x){return _this._createAttachment(x)}}(this)),this.q.all(promises).then(function(_this){return function(){return _this.updateCounters()}}(this))},AttachmentsController.prototype.addUploadingAttachments=function(attachments){return this.uploadingAttachments=_.union(this.uploadingAttachments,attachments)},AttachmentsController.prototype.reorderAttachment=function(attachment,newIndex){var oldIndex;return oldIndex=this.attachments.indexOf(attachment),oldIndex!==newIndex?(this.attachments.splice(oldIndex,1),this.attachments.splice(newIndex,0,attachment),_.each(this.attachments,function(x,i){return x.order=i+1})):void 0},AttachmentsController.prototype.updateAttachment=function(attachment){var onError,onSuccess;return onSuccess=function(_this){return function(){return _this.updateCounters(),_this.rootscope.$broadcast("attachment:edit")}}(this),onError=function(_this){return function(response){return 413===response.status&&$scope.$emit("attachments:size-error"),_this.confirm.notify("error"),_this.q.reject()}}(this),this.repo.save(attachment).then(onSuccess,onError)},AttachmentsController.prototype.saveAttachments=function(){return this.repo.saveAll(this.attachments).then(null,function(_this){return function(){var item,j,len,ref;for(ref=_this.attachments,j=0,len=ref.length;len>j;j++)item=ref[j],item.revert();return _this.attachments=_.sortBy(_this.attachments,"order")}}(this))},AttachmentsController.prototype.removeAttachment=function(attachment){var message,title;return title="Delete attachment",message="the attachment '"+attachment.name+"'",this.confirm.askOnDelete(title,message).then(function(_this){return function(finish){var onError,onSuccess;return onSuccess=function(){var index;return finish(),index=_this.attachments.indexOf(attachment),_this.attachments.splice(index,1),_this.updateCounters(),_this.rootscope.$broadcast("attachment:delete")},onError=function(){return finish(!1),_this.confirm.notify("error",null,"We have not been able to delete "+message+"."),_this.q.reject()},_this.repo.remove(attachment).then(onSuccess,onError)}}(this))},AttachmentsController.prototype.filterAttachments=function(item){return this.showDeprecated?!0:!item.is_deprecated},AttachmentsController}(taiga.Controller),AttachmentsDirective=function($config,$confirm,$templates){var link,template,templateFn;return template=$templates.get("attachment/attachments.html",!0),link=function($scope,$el,$attrs,$ctrls){var $ctrl,$model,showSizeInfo,tdom;return $ctrl=$ctrls[0],$model=$ctrls[1],bindOnce($scope,$attrs.ngModel,function(value){return $ctrl.initialize($attrs.type,value.id),$ctrl.loadAttachments()}),tdom=$el.find("div.attachment-body.sortable"),tdom.sortable({items:"div.single-attachment",handle:"a.settings.icon.icon-drag-v",containment:".attachments",dropOnEmpty:!0,scroll:!1,tolerance:"pointer",placeholder:"sortable-placeholder single-attachment"}),tdom.on("sortstop",function(event,ui){var attachment,newIndex;return attachment=ui.item.scope().attach,newIndex=ui.item.index(),$ctrl.reorderAttachment(attachment,newIndex),$ctrl.saveAttachments().then(function(){return $scope.$emit("attachment:edit")})}),showSizeInfo=function(){return $el.find(".size-info").removeClass("hidden")},$scope.$on("attachments:size-error",function(){return showSizeInfo()}),$el.on("change",".attachments-header input",function(event){var files;return files=_.toArray(event.target.files),files.length<1?void 0:$scope.$apply(function(){return $ctrl.addUploadingAttachments(files),$ctrl.createAttachments(files)})}),$el.on("click",".more-attachments",function(event){var target;return event.preventDefault(),target=angular.element(event.currentTarget),$scope.$apply(function(){return $ctrl.showDeprecated=!$ctrl.showDeprecated}),target.find("span.text").addClass("hidden"),$ctrl.showDeprecated?(target.find("span[data-type=hide]").removeClass("hidden"),target.find("more-attachments-num").addClass("hidden")):(target.find("span[data-type=show]").removeClass("hidden"),target.find("more-attachments-num").removeClass("hidden"))}),$scope.$on("$destroy",function(){return $el.off()})},templateFn=function($el,$attrs){var ctx,maxFileSize,maxFileSizeMsg;return maxFileSize=$config.get("maxUploadFileSize",null),maxFileSize&&(maxFileSize=sizeFormat(maxFileSize)),maxFileSizeMsg=maxFileSize?"Maximum upload size is "+maxFileSize:"",ctx={type:$attrs.type,maxFileSize:maxFileSize,maxFileSizeMsg:maxFileSizeMsg},template(ctx)},{require:["tgAttachments","ngModel"],controller:AttachmentsController,controllerAs:"ctrl",restrict:"AE",scope:!0,link:link,template:templateFn}},module.directive("tgAttachments",["$tgConfig","$tgConfirm","$tgTemplate",AttachmentsDirective]),AttachmentDirective=function($template){var link,template,templateEdit;return template=$template.get("attachment/attachment.html",!0),templateEdit=$template.get("attachment/attachment-edit.html",!0),link=function($scope,$el,$attrs,$ctrl){var attachment,render,saveAttachment;return render=function(attachment,edit){var ctx,html,modifyPermission,permissions;return null==edit&&(edit=!1),permissions=$scope.project.my_permissions,modifyPermission=permissions.indexOf("modify_"+$ctrl.type)>-1,ctx={id:attachment.id,name:attachment.name,created_date:moment(attachment.created_date).format("DD MMM YYYY [at] hh:mm"),url:attachment.url,size:sizeFormat(attachment.size),description:attachment.description,isDeprecated:attachment.is_deprecated,modifyPermission:modifyPermission},html=edit?templateEdit(ctx):template(ctx),$el.html(html),attachment.is_deprecated?($el.addClass("deprecated"),$el.find("input:checkbox").prop("checked",!0)):void 0},saveAttachment=function(){return attachment.description=$el.find("input[name='description']").val(),attachment.is_deprecated=$el.find("input[name='is-deprecated']").prop("checked"),$scope.$apply(function(){return $ctrl.updateAttachment(attachment).then(function(){return render(attachment,!1)})})},$el.on("click","a.editable-settings.icon-floppy",function(event){return event.preventDefault(),saveAttachment()}),$el.on("keyup","input[name=description]",function(event){return 13===event.keyCode?saveAttachment():27===event.keyCode?render(attachment,!1):void 0}),$el.on("click","a.editable-settings.icon-delete",function(event){return event.preventDefault(),render(attachment,!1)}),$el.on("click","a.settings.icon-edit",function(event){return event.preventDefault(),render(attachment,!0),$el.find("input[name='description']").focus().select()}),$el.on("click","a.settings.icon-delete",function(event){return event.preventDefault(),$scope.$apply(function(){return $ctrl.removeAttachment(attachment)})}),$scope.$on("$destroy",function(){return $el.off()}),attachment=$scope.$eval($attrs.tgAttachment),render(attachment,attachment.isCreatedRightNow),attachment.isCreatedRightNow?$el.find("input[name='description']").focus().select():void 0},{link:link,require:"^tgAttachments",restrict:"AE"}},module.directive("tgAttachment",["$tgTemplate",AttachmentDirective])}.call(this),function(){var BindScope,module;module=angular.module("taigaCommon"),BindScope=function(config){var link;return config.debugInfo||(jQuery.fn.scope=function(){return this.data("scope")}),link=function($scope,$el){return config.debugInfo?void 0:$el.data("scope",$scope).addClass("tg-scope")},{link:link}},module.directive("tgBindScope",["$tgConfig",BindScope])}.call(this),function(){var AssignedToDirective,BlockButtonDirective,CreatedByDisplayDirective,DateRangeDirective,DateSelectorDirective,DeleteButtonDirective,EditableDescriptionDirective,EditableSubjectDirective,ListItemAssignedtoDirective,ListItemIssueStatusDirective,ListItemPriorityDirective,ListItemSeverityDirective,ListItemTaskStatusDirective,ListItemTypeDirective,ListItemUsStatusDirective,SprintProgressBarDirective,TgMainTitleDirective,TgProgressBarDirective,WatchersDirective,bindOnce,module,taiga;taiga=this.taiga,bindOnce=this.taiga.bindOnce,module=angular.module("taigaCommon"),DateRangeDirective=function(){var link,renderRange;return renderRange=function($el,first,second){var endDate,initDate;return initDate=moment(first).format("DD MMM YYYY"),endDate=moment(second).format("DD MMM YYYY"),$el.html(initDate+"-"+endDate)},link=function($scope,$el,$attrs){var first,ref,second;return ref=$attrs.tgDateRange.split(","),first=ref[0],second=ref[1],bindOnce($scope,first,function(valFirst){return bindOnce($scope,second,function(valSecond){return renderRange($el,valFirst,valSecond)})})},{link:link}},module.directive("tgDateRange",DateRangeDirective),DateSelectorDirective=function(){var link;return link=function($scope,$el,$attrs){var selectedDate;return selectedDate=null,$el.picker=new Pikaday({field:$el[0],format:"DD MMM YYYY",onSelect:function(){return function(date){return selectedDate=date}}(this),onOpen:function(){return function(){return null!=selectedDate?$el.picker.setDate(selectedDate):void 0}}(this)}),$scope.$watch($attrs.ngModel,function(val){return null!=val?$el.picker.setDate(val):void 0})},{link:link,require:"ngModel"}},module.directive("tgDateSelector",DateSelectorDirective),SprintProgressBarDirective=function(){var link,renderProgress;return renderProgress=function($el,percentage,visual_percentage){return $el.hasClass(".current-progress")?$el.css("width",percentage+"%"):($el.find(".current-progress").css("width",visual_percentage+"%"),$el.find(".number").html(percentage+" %"))},link=function($scope,$el,$attrs){return bindOnce($scope,$attrs.tgSprintProgressbar,function(sprint){var closedPoints,percentage,totalPoints,visual_percentage;return closedPoints=sprint.closed_points,totalPoints=sprint.total_points,percentage=0,0!==totalPoints&&(percentage=Math.round(100*(closedPoints/totalPoints))),visual_percentage=0,0!==totalPoints&&(visual_percentage=Math.round(98*(closedPoints/totalPoints))),renderProgress($el,percentage,visual_percentage)})},{link:link}},module.directive("tgSprintProgressbar",SprintProgressBarDirective),CreatedByDisplayDirective=function($template){var link,template;return template=$template.get("common/components/created-by.html",!0),link=function($scope,$el,$attrs){var render;return render=function(model){var html,owner,ref;return owner=(null!=(ref=$scope.usersById)?ref[model.owner]:void 0)||{full_name_display:"external user",photo:"/images/unnamed.png"},html=template({owner:owner,date:moment(model.created_date).format("DD MMM YYYY HH:mm")}),$el.html(html)},bindOnce($scope,$attrs.ngModel,function(model){return null!=model?render(model):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgCreatedByDisplay",["$tgTemplate",CreatedByDisplayDirective]),WatchersDirective=function($rootscope,$confirm,$repo,$qqueue,$template){var link,template;return template=$template.get("common/components/watchers.html",!0),link=function($scope,$el,$attrs,$model){var deleteWatcher,isEditable,renderWatchers,save;return isEditable=function(){var ref,ref1;return-1!==(null!=(ref=$scope.project)&&null!=(ref1=ref.my_permissions)?ref1.indexOf($attrs.requiredPerm):void 0)},save=$qqueue.bindAdd(function(){return function(watchers){var item,promise;return item=$model.$modelValue.clone(),item.watchers=watchers,$model.$setViewValue(item),promise=$repo.save($model.$modelValue),promise.then(function(){return $confirm.notify("success"),watchers=_.map(watchers,function(watcherId){return $scope.usersById[watcherId]}),renderWatchers(watchers),$rootscope.$broadcast("history:reload")}),promise.then(null,function(){return $model.$modelValue.revert()})}}(this)),deleteWatcher=$qqueue.bindAdd(function(){return function(watcherIds){var item,promise;return item=$model.$modelValue.clone(),item.watchers=watcherIds,$model.$setViewValue(item),promise=$repo.save($model.$modelValue),promise.then(function(){var watchers;return $confirm.notify("success"),watchers=_.map(item.watchers,function(watcherId){return $scope.usersById[watcherId]}),renderWatchers(watchers),$rootscope.$broadcast("history:reload")}),promise.then(null,function(){return item.revert(),$confirm.notify("error")})}}(this)),renderWatchers=function(watchers){var ctx,html;return ctx={watchers:watchers,isEditable:isEditable()},html=template(ctx),$el.html(html),isEditable()&&0===watchers.length?($el.find(".title").text("Add watchers"),$el.find(".watchers-header").addClass("no-watchers")):void 0},$el.on("click",".icon-delete",function(event){var message,target,title,watcherId;return event.preventDefault(),isEditable()?(target=angular.element(event.currentTarget),watcherId=target.data("watcher-id"),title="Delete watcher",message=$scope.usersById[watcherId].full_name_display,$confirm.askOnDelete(title,message).then(function(){return function(finish){var watcherIds;return finish(),watcherIds=_.clone($model.$modelValue.watchers,!1),watcherIds=_.pull(watcherIds,watcherId),deleteWatcher(watcherIds)}}(this))):void 0}),$el.on("click",".add-watcher",function(event){return event.preventDefault(),isEditable()?$scope.$apply(function(){return $rootscope.$broadcast("watcher:add",$model.$modelValue)}):void 0}),$scope.$on("watcher:added",function(ctx,watcherId){var watchers;return watchers=_.clone($model.$modelValue.watchers,!1),watchers.push(watcherId),watchers=_.uniq(watchers),save(watchers)}),$scope.$watch($attrs.ngModel,function(item){var watchers;if(null!=item)return watchers=_.map(item.watchers,function(watcherId){return $scope.usersById[watcherId]}),renderWatchers(watchers)}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,require:"ngModel"}},module.directive("tgWatchers",["$rootScope","$tgConfirm","$tgRepo","$tgQqueue","$tgTemplate",WatchersDirective]),AssignedToDirective=function($rootscope,$confirm,$repo,$loading,$qqueue,$template){var link,template;return template=$template.get("common/components/assigned-to.html",!0),link=function($scope,$el,$attrs,$model){var isEditable,renderAssignedTo,save;return isEditable=function(){var ref,ref1;return-1!==(null!=(ref=$scope.project)&&null!=(ref1=ref.my_permissions)?ref1.indexOf($attrs.requiredPerm):void 0)},save=$qqueue.bindAdd(function(){return function(userId){var promise;return $model.$modelValue.assigned_to=userId,$loading.start($el),promise=$repo.save($model.$modelValue),promise.then(function(){return $loading.finish($el),$confirm.notify("success"),renderAssignedTo($model.$modelValue),$rootscope.$broadcast("history:reload")}),promise.then(null,function(){return $model.$modelValue.revert(),$confirm.notify("error"),$loading.finish($el)}),promise}}(this)),renderAssignedTo=function(issue){var assignedTo,assignedToId,ctx,html;return assignedToId=null!=issue?issue.assigned_to:void 0,assignedTo=null!=assignedToId?$scope.usersById[assignedToId]:null,ctx={assignedTo:assignedTo,isEditable:isEditable()},html=template(ctx),$el.html(html)},$el.on("click",".user-assigned",function(event){return event.preventDefault(),isEditable()?$scope.$apply(function(){return $rootscope.$broadcast("assigned-to:add",$model.$modelValue)}):void 0}),$el.on("click",".icon-delete",function(event){var title;return event.preventDefault(),isEditable()?(title="Are you sure you want to leave it unassigned?",$confirm.ask(title).then(function(){return function(finish){return finish(),$model.$modelValue.assigned_to=null,save(null)}}(this))):void 0}),$scope.$on("assigned-to:added",function(ctx,userId,item){return item.id===$model.$modelValue.id?save(userId):void 0}),$scope.$watch($attrs.ngModel,function(instance){return renderAssignedTo(instance)}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,require:"ngModel"}},module.directive("tgAssignedTo",["$rootScope","$tgConfirm","$tgRepo","$tgLoading","$tgQqueue","$tgTemplate",AssignedToDirective]),BlockButtonDirective=function($rootscope,$loading,$template){var link,template;return template=$template.get("common/components/block-button.html"),link=function($scope,$el,$attrs,$model){var isEditable;return isEditable=function(){return-1!==$scope.project.my_permissions.indexOf("modify_us")},$scope.$watch($attrs.ngModel,function(item){return item?(isEditable()&&$el.find(".item-block").addClass("editable"),item.is_blocked?($el.find(".item-block").hide(),$el.find(".item-unblock").show()):($el.find(".item-block").show(),$el.find(".item-unblock").hide())):void 0}),$el.on("click",".item-block",function(event){return event.preventDefault(),$rootscope.$broadcast("block",$model.$modelValue)}),$el.on("click",".item-unblock",function(event){var finish;return event.preventDefault(),$loading.start($el.find(".item-unblock")),finish=function(){return $loading.finish($el.find(".item-unblock"))},$rootscope.$broadcast("unblock",$model.$modelValue,finish)}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel",template:template}},module.directive("tgBlockButton",["$rootScope","$tgLoading","$tgTemplate",BlockButtonDirective]),DeleteButtonDirective=function($log,$repo,$confirm,$location,$template){var link,template;return template=$template.get("common/components/delete-button.html"),link=function($scope,$el,$attrs,$model){return $attrs.onDeleteGoToUrl?$attrs.onDeleteTitle?($el.on("click",".button",function(){var subtitle,title;return title=$scope.$eval($attrs.onDeleteTitle),subtitle=$model.$modelValue.subject,$confirm.askOnDelete(title,subtitle).then(function(){return function(finish){var promise;return promise=$repo.remove($model.$modelValue),promise.then(function(){var url;return finish(),url=$scope.$eval($attrs.onDeleteGoToUrl),$location.path(url)}),promise.then(null,function(){return finish(!1),$confirm.notify("error")})}}(this))}),$scope.$on("$destroy",function(){return $el.off()})):$log.error("DeleteButtonDirective requires on-delete-title set in scope."):$log.error("DeleteButtonDirective requires on-delete-go-to-url set in scope.")},{link:link,restrict:"EA",require:"ngModel",template:template}},module.directive("tgDeleteButton",["$log","$tgRepo","$tgConfirm","$tgLocation","$tgTemplate",DeleteButtonDirective]),EditableSubjectDirective=function($rootscope,$repo,$confirm,$loading,$qqueue,$template){var link,template;return template=$template.get("common/components/editable-subject.html"),link=function($scope,$el,$attrs,$model){var isEditable,save;return isEditable=function(){return-1!==$scope.project.my_permissions.indexOf($attrs.requiredPerm)},save=$qqueue.bindAdd(function(){return function(subject){var promise;return $model.$modelValue.subject=subject,$loading.start($el.find(".save-container")),promise=$repo.save($model.$modelValue),promise.then(function(){return $confirm.notify("success"),$rootscope.$broadcast("history:reload"),$el.find(".edit-subject").hide(),$el.find(".view-subject").show() -}),promise.then(null,function(){return $confirm.notify("error")}),promise["finally"](function(){return $loading.finish($el.find(".save-container"))}),promise}}(this)),$el.click(function(){return isEditable()?($el.find(".edit-subject").show(),$el.find(".view-subject").hide(),$el.find("input").focus()):void 0}),$el.on("click",".save",function(){var subject;return subject=$scope.item.subject,save(subject)}),$el.on("keyup","input",function(event){var subject;return 13===event.keyCode?(subject=$scope.item.subject,save(subject)):27===event.keyCode?($scope.$apply(function(){return function(){return $model.$modelValue.revert()}}(this)),$el.find("div.edit-subject").hide(),$el.find("div.view-subject").show()):void 0}),$el.find("div.edit-subject").hide(),$el.find("div.view-subject span.edit").hide(),$scope.$watch($attrs.ngModel,function(value){return value?($scope.item=value,isEditable()?void 0:$el.find(".view-subject .edit").remove()):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel",template:template}},module.directive("tgEditableSubject",["$rootScope","$tgRepo","$tgConfirm","$tgLoading","$tgQqueue","$tgTemplate",EditableSubjectDirective]),EditableDescriptionDirective=function($rootscope,$repo,$confirm,$compile,$loading,$selectedText,$qqueue,$template){var link,noDescriptionMegEditMode,noDescriptionMegReadMode,template;return template=$template.get("common/components/editable-description.html"),noDescriptionMegEditMode=$template.get("common/components/editable-description-msg-edit-mode.html"),noDescriptionMegReadMode=$template.get("common/components/editable-description-msg-read-mode.html"),link=function($scope,$el,$attrs,$model){var isEditable,save;return $el.find(".edit-description").hide(),$el.find(".view-description .edit").hide(),isEditable=function(){return-1!==$scope.project.my_permissions.indexOf($attrs.requiredPerm)},save=$qqueue.bindAdd(function(){return function(description){var promise;return $model.$modelValue.description=description,$loading.start($el.find(".save-container")),promise=$repo.save($model.$modelValue),promise.then(function(){return $confirm.notify("success"),$rootscope.$broadcast("history:reload"),$el.find(".edit-description").hide(),$el.find(".view-description").show()}),promise.then(null,function(){return $confirm.notify("error")}),promise["finally"](function(){return $loading.finish($el.find(".save-container"))})}}(this)),$el.on("mouseup",".view-description",function(event){var target;return target=angular.element(event.target),!isEditable()||target.is("a")||$selectedText.get().length?void 0:($el.find(".edit-description").show(),$el.find(".view-description").hide(),$el.find("textarea").focus())}),$el.on("click",".save",function(e){var description;return e.preventDefault(),description=$scope.item.description,save(description)}),$el.on("keydown","textarea",function(event){return 27===event.keyCode?($scope.$apply(function(){return function(){return $scope.item.revert()}}(this)),$el.find(".edit-description").hide(),$el.find(".view-description").show()):void 0}),$scope.$watch($attrs.ngModel,function(value){return value?($scope.item=value,isEditable()?($el.find(".view-description .edit").show(),$el.find(".view-description .us-content").addClass("editable"),$scope.noDescriptionMsg=noDescriptionMegEditMode):$scope.noDescriptionMsg=noDescriptionMegReadMode):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel",template:template}},module.directive("tgEditableDescription",["$rootScope","$tgRepo","$tgConfirm","$compile","$tgLoading","$selectedText","$tgQqueue","$tgTemplate",EditableDescriptionDirective]),ListItemIssueStatusDirective=function(){var link;return link=function($scope,$el,$attrs){var issue;return issue=$scope.$eval($attrs.tgListitemIssueStatus),bindOnce($scope,"issueStatusById",function(issueStatusById){return $el.html(issueStatusById[issue.status].name)})},{link:link}},ListItemTaskStatusDirective=function(){var link;return link=function($scope,$el,$attrs){var task;return task=$scope.$eval($attrs.tgListitemTaskStatus),bindOnce($scope,"taskStatusById",function(taskStatusById){return $el.html(taskStatusById[task.status].name)})},{link:link}},ListItemUsStatusDirective=function(){var link;return link=function($scope,$el,$attrs){var us;return us=$scope.$eval($attrs.tgListitemUsStatus),bindOnce($scope,"usStatusById",function(usStatusById){return $el.html(usStatusById[us.status].name)})},{link:link}},ListItemAssignedtoDirective=function($template){var link,template;return template=$template.get("common/components/list-item-assigned-to-avatar.html",!0),link=function($scope,$el,$attrs){return bindOnce($scope,"membersById",function(membersById){var ctx,item,member;return item=$scope.$eval($attrs.tgListitemAssignedto),ctx={name:"Unassigned",imgurl:"/images/unnamed.png"},member=membersById[item.assigned_to],member&&(ctx.imgurl=member.photo,ctx.name=member.full_name),$el.html(template(ctx))})},{link:link}},module.directive("tgListitemAssignedto",["$tgTemplate",ListItemAssignedtoDirective]),ListItemPriorityDirective=function(){var link;return link=function($scope,$el,$attrs){var render;return render=function(priorityById,issue){var domNode,priority;return priority=priorityById[issue.priority],domNode=$el.find(".level"),domNode.css("background-color",priority.color),domNode.attr("title",priority.name)},bindOnce($scope,"priorityById",function(priorityById){var issue;return issue=$scope.$eval($attrs.tgListitemPriority),render(priorityById,issue)}),$scope.$watch($attrs.tgListitemPriority,function(issue){return render($scope.priorityById,issue)})},{link:link,templateUrl:"common/components/level.html"}},module.directive("tgListitemPriority",ListItemPriorityDirective),ListItemSeverityDirective=function(){var link;return link=function($scope,$el,$attrs){var render;return render=function(severityById,issue){var domNode,severity;return severity=severityById[issue.severity],domNode=$el.find(".level"),domNode.css("background-color",severity.color),domNode.attr("title",severity.name)},bindOnce($scope,"severityById",function(severityById){var issue;return issue=$scope.$eval($attrs.tgListitemSeverity),render(severityById,issue)}),$scope.$watch($attrs.tgListitemSeverity,function(issue){return render($scope.severityById,issue)})},{link:link,templateUrl:"common/components/level.html"}},ListItemTypeDirective=function(){var link;return link=function($scope,$el,$attrs){var render;return render=function(issueTypeById,issue){var domNode,type;return type=issueTypeById[issue.type],domNode=$el.find(".level"),domNode.css("background-color",type.color),domNode.attr("title",type.name)},bindOnce($scope,"issueTypeById",function(issueTypeById){var issue;return issue=$scope.$eval($attrs.tgListitemType),render(issueTypeById,issue)}),$scope.$watch($attrs.tgListitemType,function(issue){return render($scope.issueTypeById,issue)})},{link:link,templateUrl:"common/components/level.html"}},TgProgressBarDirective=function($template){var link,render,template;return template=$template.get("common/components/progress-bar.html",!0),render=function(el,percentage){return el.html(template({percentage:percentage}))},link=function($scope,$el,$attrs){var element;return element=angular.element($el),$scope.$watch($attrs.tgProgressBar,function(percentage){return percentage=_.max([0,percentage]),percentage=_.min([100,percentage]),render($el,percentage)}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgProgressBar",["$tgTemplate",TgProgressBarDirective]),TgMainTitleDirective=function($template){var link,render,template;return template=$template.get("common/components/main-title.html",!0),render=function(el,projectName,sectionName){return el.html(template({projectName:projectName,sectionName:sectionName}))},link=function($scope,$el){var element;return element=angular.element($el),$scope.$watch("project",function(project){return project?render($el,project.name,$scope.sectionName):void 0}),$scope.$on("project:loaded",function(){return function(ctx,project){return render($el,project.name,$scope.sectionName)}}(this)),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgMainTitle",["$tgTemplate",TgMainTitleDirective]),module.directive("tgListitemType",ListItemTypeDirective),module.directive("tgListitemIssueStatus",ListItemIssueStatusDirective),module.directive("tgListitemSeverity",ListItemSeverityDirective),module.directive("tgListitemTaskStatus",ListItemTaskStatusDirective),module.directive("tgListitemUsStatus",ListItemUsStatusDirective)}.call(this),function(){var ConfirmService,NOTIFICATION_MSG,bindMethods,cancelTimeout,debounce,module,taiga,timeout,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,timeout=this.taiga.timeout,cancelTimeout=this.taiga.cancelTimeout,debounce=this.taiga.debounce,bindMethods=this.taiga.bindMethods,NOTIFICATION_MSG={success:{title:"Everything is ok",message:"Our Oompa Loompas saved all your changes!"},error:{title:"Oops, something happened...",message:"Our Oompa Loompas are sad, your changes were not saved!"},"light-error":{title:"Oops, something happened...",message:"Our Oompa Loompas are sad, your changes were not saved!"}},ConfirmService=function(superClass){function ConfirmService(q,lightboxService,loading){this.q=q,this.lightboxService=lightboxService,this.loading=loading,bindMethods(this)}return extend(ConfirmService,superClass),ConfirmService.$inject=["$q","lightboxService","$tgLoading"],ConfirmService.prototype.hide=function(el){return el?(this.lightboxService.close(el),el.off(".confirm-dialog")):void 0},ConfirmService.prototype.ask=function(title,subtitle,message,lightboxSelector){var defered,el;return null==lightboxSelector&&(lightboxSelector=".lightbox-generic-ask"),el=angular.element(lightboxSelector),el.find("h2.title").html(title),el.find("span.subtitle").html(subtitle),el.find("span.message").html(message),defered=this.q.defer(),el.on("click.confirm-dialog","a.button-green",debounce(2e3,function(_this){return function(event){var target;return event.preventDefault(),target=angular.element(event.currentTarget),_this.loading.start(target),defered.resolve(function(ok){return null==ok&&(ok=!0),_this.loading.finish(target),ok?_this.hide(el):void 0})}}(this))),el.on("click.confirm-dialog","a.button-red",function(_this){return function(event){return event.preventDefault(),defered.reject(),_this.hide(el)}}(this)),this.lightboxService.open(el),defered.promise},ConfirmService.prototype.askOnDelete=function(title,message){return this.ask(title,"Are you sure you want to delete?",message)},ConfirmService.prototype.askChoice=function(title,subtitle,choices,replacement,warning,lightboxSelector){var choicesField,defered,el;return null==lightboxSelector&&(lightboxSelector=".lightbox-ask-choice"),el=angular.element(lightboxSelector),el.find(".title").html(title),el.find(".subtitle").html(subtitle),replacement?el.find(".replacement").html(replacement):el.find(".replacement").remove(),warning?el.find(".warning").html(warning):el.find(".warning").remove(),choicesField=el.find(".choices"),choicesField.html(""),_.each(choices,function(value,key){return choicesField.append(angular.element(""))}),defered=this.q.defer(),el.on("click.confirm-dialog","a.button-green",debounce(2e3,function(_this){return function(event){var target;return event.preventDefault(),target=angular.element(event.currentTarget),_this.loading.start(target),defered.resolve({selected:choicesField.val(),finish:function(){return _this.loading.finish(target),_this.hide(el)}})}}(this))),el.on("click.confirm-dialog","a.button-red",function(_this){return function(event){return event.preventDefault(),defered.reject(),_this.hide(el)}}(this)),this.lightboxService.open(el),defered.promise},ConfirmService.prototype.error=function(message){var defered,el;return el=angular.element(".lightbox-generic-error"),el.find("h2.title").html(message),defered=this.q.defer(),el.on("click.confirm-dialog","a.button-green",function(_this){return function(event){return event.preventDefault(),defered.resolve(),_this.hide(el)}}(this)),el.on("click.confirm-dialog","a.close",function(_this){return function(event){return event.preventDefault(),defered.resolve(),_this.hide(el)}}(this)),this.lightboxService.open(el),defered.promise},ConfirmService.prototype.success=function(title,message){var defered,el;return el=angular.element(".lightbox-generic-success"),title&&el.find("h2.title").html(title),message&&el.find("p.message").html(message),defered=this.q.defer(),el.on("click.confirm-dialog","a.button-green",function(_this){return function(event){return event.preventDefault(),defered.resolve(),_this.hide(el)}}(this)),el.on("click.confirm-dialog","a.close",function(_this){return function(event){return event.preventDefault(),defered.resolve(),_this.hide(el)}}(this)),this.lightboxService.open(el),defered.promise},ConfirmService.prototype.loader=function(title,message){var el;return el=angular.element(".lightbox-generic-loading"),title&&el.find("h2.title").html(title),message&&el.find("p.message").html(message),{start:function(_this){return function(){return _this.lightboxService.open(el)}}(this),stop:function(_this){return function(){return _this.lightboxService.close(el)}}(this),update:function(){return function(status,title,message,percent){return title&&el.find("h2.title").html(title),message&&el.find("p.message").html(message),percent?(el.find(".spin").addClass("hidden"),el.find(".progress-bar-wrapper").removeClass("hidden"),el.find(".progress-bar-wrapper > .bar").width(percent+"%"),el.find(".progress-bar-wrapper > span").html(percent+"%").css("left",percent-9+"%")):(el.find(".spin").removeClass("hidden"),el.find(".progress-bar-wrapper").addClass("hidden"))}}(this)}},ConfirmService.prototype.notify=function(type,message,title,time){var body,el,selector;return selector=".notification-message-"+type,el=angular.element(selector),el.hasClass("active")?void 0:(el.find("h4").html(title?title:NOTIFICATION_MSG[type].title),el.find("p").html(message?message:NOTIFICATION_MSG[type].message),body=angular.element("body"),body.find(".notification-message .notification-light").removeClass("active").addClass("inactive"),body.find(selector).removeClass("inactive").addClass("active"),this.tsem&&cancelTimeout(this.tsem),time||(time="error"===type||"light-error"===type?3500:1500),this.tsem=timeout(time,function(_this){return function(){return body.find(selector).removeClass("active").addClass("inactive"),delete _this.tsem}}(this)),el.on("click",".icon-delete",function(){return function(){return body.find(selector).removeClass("active").addClass("inactive")}}(this)))},ConfirmService}(taiga.Service),module=angular.module("taigaCommon"),module.service("$tgConfirm",ConfirmService)}.call(this),function(){var CustomAttributeValueDirective,CustomAttributesValuesController,CustomAttributesValuesDirective,bindMethods,bindOnce,debounce,generateHash,module,taiga,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,bindMethods=this.taiga.bindMethods,bindOnce=this.taiga.bindOnce,debounce=this.taiga.debounce,generateHash=taiga.generateHash,module=angular.module("taigaCommon"),CustomAttributesValuesController=function(superClass){function CustomAttributesValuesController(scope,rootscope,repo,rs,confirm,q){this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.rs=rs,this.confirm=confirm,this.q=q,bindMethods(this),this.type=null,this.objectId=null,this.projectId=null,this.customAttributes=[],this.customAttributesValues=null}return extend(CustomAttributesValuesController,superClass),CustomAttributesValuesController.$inject=["$scope","$rootScope","$tgRepo","$tgResources","$tgConfirm","$q"],CustomAttributesValuesController.prototype.initialize=function(type,objectId){return this.project=this.scope.project,this.type=type,this.objectId=objectId,this.projectId=this.scope.projectId},CustomAttributesValuesController.prototype.loadCustomAttributesValues=function(){return this.objectId?this.rs.customAttributesValues[this.type].get(this.objectId).then(function(_this){return function(customAttributesValues){return _this.customAttributes=_this.project[_this.type+"_custom_attributes"],_this.customAttributesValues=customAttributesValues,customAttributesValues}}(this)):this.customAttributesValues},CustomAttributesValuesController.prototype.getAttributeValue=function(attribute){var attributeValue;return attributeValue=_.clone(attribute,!1),attributeValue.value=this.customAttributesValues.attributes_values[attribute.id],attributeValue},CustomAttributesValuesController.prototype.updateAttributeValue=function(attributeValue){var attributesValues,onError,onSuccess;return onSuccess=function(_this){return function(){return _this.rootscope.$broadcast("custom-attributes-values:edit")}}(this),onError=function(_this){return function(){return _this.confirm.notify("error"),_this.q.reject()}}(this),attributesValues=_.clone(this.customAttributesValues.attributes_values,!0),attributesValues[attributeValue.id]=attributeValue.value,this.customAttributesValues.attributes_values=attributesValues,this.customAttributesValues.id=this.objectId,this.repo.save(this.customAttributesValues).then(onSuccess,onError)},CustomAttributesValuesController}(taiga.Controller),CustomAttributesValuesDirective=function($templates,$storage){var collapsedHash,link,template,templateFn;return template=$templates.get("custom-attributes/custom-attributes-values.html",!0),collapsedHash=function(type){return generateHash(["custom-attributes-collapsed",type])},link=function($scope,$el,$attrs,$ctrls){var $ctrl,$model;return $ctrl=$ctrls[0],$model=$ctrls[1],bindOnce($scope,$attrs.ngModel,function(value){return $ctrl.initialize($attrs.type,value.id),$ctrl.loadCustomAttributesValues()}),$el.on("click",".custom-fields-header a",function(){var collapsed,hash;return hash=collapsedHash($attrs.type),collapsed=!$storage.get(hash),$storage.set(hash,collapsed),collapsed?($el.find(".custom-fields-header a").removeClass("open"),$el.find(".custom-fields-body").removeClass("open")):($el.find(".custom-fields-header a").addClass("open"),$el.find(".custom-fields-body").addClass("open"))}),$scope.$on("$destroy",function(){return $el.off()})},templateFn=function($el,$attrs){var collapsed;return collapsed=$storage.get(collapsedHash($attrs.type))||!1,template({requiredEditionPerm:$attrs.requiredEditionPerm,collapsed:collapsed})},{require:["tgCustomAttributesValues","ngModel"],controller:CustomAttributesValuesController,controllerAs:"ctrl",restrict:"AE",scope:!0,link:link,template:templateFn}},module.directive("tgCustomAttributesValues",["$tgTemplate","$tgStorage",CustomAttributesValuesDirective]),CustomAttributeValueDirective=function($template,$selectedText){var link,template,templateEdit;return template=$template.get("custom-attributes/custom-attribute-value.html",!0),templateEdit=$template.get("custom-attributes/custom-attribute-value-edit.html",!0),link=function($scope,$el,$attrs,$ctrl){var attributeValue,isEditable,render,saveAttributeValue,submit;return render=function(attributeValue,edit){var ctx,editable,html,value;return null==edit&&(edit=!1),value=attributeValue.value,editable=isEditable(),ctx={id:attributeValue.id,name:attributeValue.name,description:attributeValue.description,value:value,isEditable:editable},html=!editable||!edit&&value?template(ctx):templateEdit(ctx),$el.html(html)},isEditable=function(){var permissions,requiredEditionPerm;return permissions=$scope.project.my_permissions,requiredEditionPerm=$attrs.requiredEditionPerm,permissions.indexOf(requiredEditionPerm)>-1},saveAttributeValue=function(){return attributeValue.value=$el.find("input").val(),$scope.$apply(function(){return $ctrl.updateAttributeValue(attributeValue).then(function(){return render(attributeValue,!1)})})},$el.on("keyup","input[name=description]",function(event){return 13===event.keyCode?submit(event):27===event.keyCode?render(attributeValue,!1):void 0}),$el.on("click",".custom-field-value.read-mode",function(){return isEditable()&&!$selectedText.get().length?(render(attributeValue,!0),$el.find("input[name='description']").focus().select()):void 0}),$el.on("click","a.icon-edit",function(event){return event.preventDefault(),render(attributeValue,!0),$el.find("input[name='description']").focus().select()}),submit=debounce(2e3,function(){return function(event){return event.preventDefault(),saveAttributeValue()}}(this)),$el.on("submit","form",submit),$el.on("click","a.icon-floppy",submit),$scope.$on("$destroy",function(){return $el.off()}),attributeValue=$scope.$eval($attrs.tgCustomAttributeValue),render(attributeValue)},{link:link,require:"^tgCustomAttributesValues",restrict:"AE"}},module.directive("tgCustomAttributeValue",["$tgTemplate","$selectedText",CustomAttributeValueDirective])}.call(this),function(){var EstimationsService,LbUsEstimationDirective,UsEstimationDirective,groupBy,module,taiga,bind=function(fn,me){return function(){return fn.apply(me,arguments)}};taiga=this.taiga,groupBy=this.taiga.groupBy,module=angular.module("taigaCommon"),LbUsEstimationDirective=function($tgEstimationsService,$rootScope,$repo,$confirm,$template){var link;return link=function($scope,$el,$attrs,$model){return $scope.$watch($attrs.ngModel,function(us){var estimationProcess;return us?(estimationProcess=$tgEstimationsService.create($el,us,$scope.project),estimationProcess.onSelectedPointForRole=function(){return $scope.$apply(function(){return $model.$setViewValue(us)})},estimationProcess.render=function(){var ctx,html,mainTemplate,template;return ctx={totalPoints:this.calculateTotalPoints(),roles:this.calculateRoles(),editable:this.isEditable},mainTemplate="common/estimation/us-estimation-points-per-role.html",template=$template.get(mainTemplate,!0),html=template(ctx),this.$el.html(html)},estimationProcess.render()):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgLbUsEstimation",["$tgEstimationsService","$rootScope","$tgRepo","$tgConfirm","$tgTemplate",LbUsEstimationDirective]),UsEstimationDirective=function($tgEstimationsService,$rootScope,$repo,$confirm,$qqueue,$template){var link;return link=function($scope,$el,$attrs){return $scope.$watch($attrs.ngModel,function(us){var estimationProcess;return us?(estimationProcess=$tgEstimationsService.create($el,us,$scope.project),estimationProcess.onSelectedPointForRole=function(roleId,pointId){return this.save(roleId,pointId).then(function(){return $rootScope.$broadcast("history:reload")})},estimationProcess.render=function(){var ctx,html,mainTemplate,template;return ctx={totalPoints:this.calculateTotalPoints(),roles:this.calculateRoles(),editable:this.isEditable},mainTemplate="common/estimation/us-estimation-points-per-role.html",template=$template.get(mainTemplate,!0),html=template(ctx),this.$el.html(html)},estimationProcess.render()):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgUsEstimation",["$tgEstimationsService","$rootScope","$tgRepo","$tgConfirm","$tgQqueue","$tgTemplate",UsEstimationDirective]),EstimationsService=function($template,$qqueue,$repo,$confirm,$q){var EstimationProcess,create,pointsTemplate;return pointsTemplate=$template.get("common/estimation/us-estimation-points.html",!0),EstimationProcess=function(){function EstimationProcess($el1,us1,project1){this.$el=$el1,this.us=us1,this.project=project1,this.bindClickEvents=bind(this.bindClickEvents,this),this.isEditable=-1!==this.project.my_permissions.indexOf("modify_us"),this.roles=this.project.roles,this.points=this.project.points,this.pointsById=groupBy(this.points,function(x){return x.id}),this.onSelectedPointForRole=function(){},this.render=function(){}}return EstimationProcess.prototype.save=function(){var deferred;return deferred=$q.defer(),$qqueue.add(function(_this){return function(){var onError,onSuccess;return onSuccess=function(){return deferred.resolve(),$confirm.notify("success")},onError=function(){return $confirm.notify("error"),_this.us.revert(),_this.render(),deferred.reject()},$repo.save(_this.us).then(onSuccess,onError)}}(this)),deferred.promise},EstimationProcess.prototype.calculateTotalPoints=function(){var notNullValues,values;return values=_.map(this.us.points,function(_this){return function(v){var ref;return null!=(ref=_this.pointsById[v])?ref.value:void 0}}(this)),0===values.length?"0":(notNullValues=_.filter(values,function(v){return null!=v}),0===notNullValues.length?"?":_.reduce(notNullValues,function(acc,num){return acc+num}))},EstimationProcess.prototype.calculateRoles=function(){var computableRoles,roles;return computableRoles=_.filter(this.project.roles,"computable"),roles=_.map(computableRoles,function(_this){return function(role){var pointId,pointObj;return pointId=_this.us.points[role.id],pointObj=_this.pointsById[pointId],role=_.clone(role,!0),role.points=null!=pointObj&&null!=pointObj.name?pointObj.name:"?",role}}(this))},EstimationProcess.prototype.bindClickEvents=function(){return this.$el.on("click",".total.clickable",function(_this){return function(event){var roleId,target;return event.preventDefault(),event.stopPropagation(),target=angular.element(event.currentTarget),roleId=target.data("role-id"),_this.renderPointsSelector(roleId,target),target.siblings().removeClass("active"),target.addClass("active")}}(this)),this.$el.on("click",".point",function(_this){return function(event){var pointId,points,roleId,target;return event.preventDefault(),event.stopPropagation(),target=angular.element(event.currentTarget),roleId=target.data("role-id"),pointId=target.data("point-id"),_this.$el.find(".popover").popover().close(),points=_.clone(_this.us.points,!0),points[roleId]=pointId,_this.us.points=points,_this.render(),_this.onSelectedPointForRole(roleId,pointId)}}(this))},EstimationProcess.prototype.renderPointsSelector=function(roleId,target){var horizontalList,html,maxPointLength,points;return points=_.map(this.points,function(_this){return function(point){return point=_.clone(point,!0),point.selected=_this.us.points[roleId]===point.id?!1:!0,point}}(this)),maxPointLength=5,horizontalList=_.some(points,function(){return function(point){return point.name.length>maxPointLength}}(this)),html=pointsTemplate({points:points,roleId:roleId,horizontal:horizontalList}),this.$el.find(".popover").popover().close(),this.$el.find(".pop-points-open").remove(),null!=target?this.$el.find(target).append(html):this.$el.append(html),this.$el.find(".pop-points-open").popover().open(function(){return $(this).removeClass("active").closest("li").removeClass("active")}),this.$el.find(".pop-points-open").show()},EstimationProcess}(),create=function($el,us,project){var estimationProcess;return $el.unbind("click"),estimationProcess=new EstimationProcess($el,us,project),estimationProcess.isEditable&&estimationProcess.bindClickEvents(),estimationProcess},{create:create}},module.factory("$tgEstimationsService",["$tgTemplate","$tgQqueue","$tgRepo","$tgConfirm","$q",EstimationsService])}.call(this),function(){var defaultFilter,module,momentFormat,momentFromNow,taiga,unslugify,yesNoFilter;taiga=this.taiga,module=angular.module("taigaCommon"),defaultFilter=function(){return function(value,defaultValue){return value===[null,void 0]?defaultValue:value}},module.filter("default",defaultFilter),yesNoFilter=function(){return function(value){return value?"Yes":"No"}},module.filter("yesNo",yesNoFilter),unslugify=function(){return taiga.unslugify},module.filter("unslugify",unslugify),momentFormat=function(){return function(input,format){return input?moment(input).format(format):""}},module.filter("momentFormat",momentFormat),momentFromNow=function(){return function(input,without_suffix){return input?moment(input).fromNow(without_suffix||!1):""}},module.filter("momentFromNow",momentFromNow)}.call(this),function(){var HistoryController,HistoryDirective,bindOnce,debounce,module,taiga,trim,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,trim=this.taiga.trim,bindOnce=this.taiga.bindOnce,debounce=this.taiga.debounce,module=angular.module("taigaCommon"),HistoryController=function(superClass){function HistoryController(scope,repo,rs){this.scope=scope,this.repo=repo,this.rs=rs}return extend(HistoryController,superClass),HistoryController.$inject=["$scope","$tgRepo","$tgResources"],HistoryController.prototype.initialize=function(type,objectId){return this.type=type,this.objectId=objectId},HistoryController.prototype.loadHistory=function(type,objectId){return this.rs.history.get(type,objectId).then(function(_this){return function(history){var historyResult,i,len;for(i=0,len=history.length;len>i;i++)historyResult=history[i],null!=historyResult.values_diff.description_diff&&(historyResult.values_diff.description=historyResult.values_diff.description_diff),delete historyResult.values_diff.description_html,delete historyResult.values_diff.description_diff,null!=historyResult.values_diff.blocked_note_diff&&(historyResult.values_diff.blocked_note=historyResult.values_diff.blocked_note_diff),delete historyResult.values_diff.blocked_note_html,delete historyResult.values_diff.blocked_note_diff;return _this.scope.history=history,_this.scope.comments=_.filter(history,function(item){return""!==item.comment})}}(this))},HistoryController.prototype.deleteComment=function(type,objectId,activityId){return this.rs.history.deleteComment(type,objectId,activityId).then(function(_this){return function(){return _this.loadHistory(type,objectId)}}(this))},HistoryController.prototype.undeleteComment=function(type,objectId,activityId){return this.rs.history.undeleteComment(type,objectId,activityId).then(function(_this){return function(){return _this.loadHistory(type,objectId)}}(this))},HistoryController}(taiga.Controller),HistoryDirective=function($log,$loading,$qqueue,$template,$confirm){var link,templateActivity,templateBase,templateBaseEntries,templateChangeAttachment,templateChangeDiff,templateChangeGeneric,templateChangeList,templateChangePoints,templateDeletedComment,templateFn;return templateChangeDiff=$template.get("common/history/history-change-diff.html",!0),templateChangePoints=$template.get("common/history/history-change-points.html",!0),templateChangeGeneric=$template.get("common/history/history-change-generic.html",!0),templateChangeAttachment=$template.get("common/history/history-change-attachment.html",!0),templateChangeList=$template.get("common/history/history-change-list.html",!0),templateDeletedComment=$template.get("common/history/history-deleted-comment.html",!0),templateActivity=$template.get("common/history/history-activity.html",!0),templateBaseEntries=$template.get("common/history/history-base-entries.html",!0),templateBase=$template.get("common/history/history-base.html",!0),link=function($scope,$el,$attrs,$ctrl){var countChanges,formatChange,getHumanizedFieldName,getUserAvatar,getUserFullName,objectId,renderActivity,renderAttachmentEntry,renderChange,renderChangeEntries,renderChangeEntry,renderChangesHelperText,renderComment,renderComments,renderCustomAttributesEntry,renderHistory,save,showAllActivity,showAllComments,type;return type=$attrs.type,objectId=null,showAllComments=!1,showAllActivity=!1,bindOnce($scope,$attrs.ngModel,function(model){return type=$attrs.type,objectId=model.id,$ctrl.initialize(type,objectId),$ctrl.loadHistory(type,objectId) -}),getHumanizedFieldName=function(field){var humanizedFieldNames;return humanizedFieldNames={assigned_to:"assigned to",is_closed:"is closed",finish_date:"finish date",client_requirement:"client requirement",team_requirement:"team requirement",milestone:"sprint",user_story:"user story",is_iocaine:"is iocaine",is_deprecated:"is deprecated",blocked_note:"blocked note",is_blocked:"is blocked"},humanizedFieldNames[field]||field},getUserFullName=function(userId){var ref;return null!=(ref=$scope.usersById[userId])?ref.full_name_display:void 0},getUserAvatar=function(userId){return null!=$scope.usersById[userId]?$scope.usersById[userId].photo:"/images/unnamed.png"},countChanges=function(comment){return _.keys(comment.values_diff).length},formatChange=function(change){return _.isArray(change)?0===change.length?"empty":change.join(", "):""===change?"empty":null==change||change===!1?"no":change===!0?"yes":change},renderAttachmentEntry=function(value){var attachments;return attachments=_.map(value,function(changes,type){return"new"===type?_.map(changes,function(change){return templateChangeDiff({name:"new attachment",diff:change.filename})}):"deleted"===type?_.map(changes,function(change){return templateChangeDiff({name:"deleted attachment",diff:change.filename})}):_.map(changes,function(change){var diff,name;return name="updated attachment "+change.filename,diff=_.map(change.changes,function(values,name){return{name:getHumanizedFieldName(name),from:formatChange(values[0]),to:formatChange(values[1])}}),templateChangeAttachment({name:name,diff:diff})})}),_.flatten(attachments).join("\n")},renderCustomAttributesEntry=function(value){var customAttributes;return customAttributes=_.map(value,function(changes,type){return"new"===type?_.map(changes,function(change){return templateChangeGeneric({name:change.name,from:formatChange(""),to:formatChange(change.value)})}):"deleted"===type?_.map(changes,function(change){return templateChangeDiff({name:"deleted custom attribute",diff:change.name})}):_.map(changes,function(change){var customAttrsChanges;return customAttrsChanges=_.map(change.changes,function(values){return templateChangeGeneric({name:change.name,from:formatChange(values[0]),to:formatChange(values[1])})}),_.flatten(customAttrsChanges).join("\n")})}),_.flatten(customAttributes).join("\n")},renderChangeEntry=function(field,value){var added,from,name,removed,to;return"description"===field?templateChangeDiff({name:getHumanizedFieldName("description"),diff:value[1]}):"blocked_note"===field?templateChangeDiff({name:getHumanizedFieldName("blocked_note"),diff:value[1]}):"points"===field?templateChangePoints({points:value}):"attachments"===field?renderAttachmentEntry(value):"custom_attributes"===field?renderCustomAttributesEntry(value):"tags"===field||"watchers"===field?(name=getHumanizedFieldName(field),removed=_.difference(value[0],value[1]),added=_.difference(value[1],value[0]),templateChangeList({name:name,removed:removed,added:added})):"assigned_to"===field?(name=getHumanizedFieldName(field),from=formatChange(value[0]||"Unassigned"),to=formatChange(value[1]||"Unassigned"),templateChangeGeneric({name:name,from:from,to:to})):(name=getHumanizedFieldName(field),from=formatChange(value[0]),to=formatChange(value[1]),templateChangeGeneric({name:name,from:from,to:to}))},renderChangeEntries=function(change){return _.map(change.values_diff,function(value,field){return renderChangeEntry(field,value)})},renderChangesHelperText=function(change){var size;return size=countChanges(change),1===size?"Made "+size+" change":"Made "+size+" changes"},renderComment=function(comment){var ref,ref1,ref2;return comment.delete_comment_date||(null!=(ref=comment.delete_comment_user)?ref.name:void 0)?templateDeletedComment({deleteCommentDate:comment.delete_comment_date?moment(comment.delete_comment_date).format("DD MMM YYYY HH:mm"):void 0,deleteCommentUser:comment.delete_comment_user.name,deleteComment:comment.comment_html,activityId:comment.id,canRestoreComment:comment.delete_comment_user.pk===$scope.user.id||$scope.project.my_permissions.indexOf("modify_project")>-1}):templateActivity({avatar:getUserAvatar(comment.user.pk),userFullName:comment.user.name,creationDate:moment(comment.created_at).format("DD MMM YYYY HH:mm"),comment:comment.comment_html,changesText:renderChangesHelperText(comment),changes:renderChangeEntries(comment),mode:"comment",deleteCommentDate:comment.delete_comment_date?moment(comment.delete_comment_date).format("DD MMM YYYY HH:mm"):void 0,deleteCommentUser:(null!=(ref1=comment.delete_comment_user)?ref1.name:void 0)?comment.delete_comment_user.name:void 0,activityId:comment.id,canDeleteComment:comment.user.pk===(null!=(ref2=$scope.user)?ref2.id:void 0)||$scope.project.my_permissions.indexOf("modify_project")>-1})},renderChange=function(change){var ref;return templateActivity({avatar:getUserAvatar(change.user.pk),userFullName:change.user.name,creationDate:moment(change.created_at).format("DD MMM YYYY HH:mm"),comment:change.comment_html,changes:renderChangeEntries(change),changesText:"",mode:"activity",deleteCommentDate:change.delete_comment_date?moment(change.delete_comment_date).format("DD MMM YYYY HH:mm"):void 0,deleteCommentUser:(null!=(ref=change.delete_comment_user)?ref.name:void 0)?change.delete_comment_user.name:void 0,activityId:change.id})},renderHistory=function(entries,totalEntries){var showMore;return showMore=entries.length===totalEntries?0:totalEntries-entries.length,templateBaseEntries({entries:entries,showMore:showMore})},renderComments=function(){var comments,html,totalComments;return comments=$scope.comments||[],totalComments=comments.length,showAllComments||(comments=_.last(comments,4)),comments=_.map(comments,function(x){return renderComment(x)}),html=renderHistory(comments,totalComments),$el.find(".comments-list").html(html)},renderActivity=function(){var changes,html,totalChanges;return changes=$scope.history||[],totalChanges=changes.length,showAllActivity||(changes=_.last(changes,4)),changes=_.map(changes,function(x){return renderChange(x)}),html=renderHistory(changes,totalChanges),$el.find(".changes-list").html(html)},save=$qqueue.bindAdd(function(){return function(target){var model,onError,onSuccess;return $scope.$broadcast("markdown-editor:submit"),$el.find(".comment-list").addClass("activeanimation"),onSuccess=function(){return $ctrl.loadHistory(type,objectId)["finally"](function(){return $loading.finish(target)})},onError=function(){return $loading.finish(target),$confirm.notify("error")},model=$scope.$eval($attrs.ngModel),$loading.start(target),$ctrl.repo.save(model).then(onSuccess,onError)}}(this)),$scope.$watch("comments",renderComments),$scope.$watch("history",renderActivity),$scope.$on("history:reload",function(){return $ctrl.loadHistory(type,objectId)}),$el.on("click",".add-comment a.button-green",debounce(2e3,function(event){var target;return event.preventDefault(),target=angular.element(event.currentTarget),save(target)})),$el.on("click",".show-more",function(event){var target;return event.preventDefault(),target=angular.element(event.currentTarget),target.parent().is(".changes-list")?(showAllActivity=!showAllActivity,renderActivity()):(showAllComments=!showAllComments,renderComments())}),$el.on("click",".show-deleted-comment",function(event){var target;return event.preventDefault(),target=angular.element(event.currentTarget),target.parents(".activity-single").find(".hide-deleted-comment").show(),target.parents(".activity-single").find(".show-deleted-comment").hide(),target.parents(".activity-single").find(".comment-body").show()}),$el.on("click",".hide-deleted-comment",function(event){var target;return event.preventDefault(),target=angular.element(event.currentTarget),target.parents(".activity-single").find(".hide-deleted-comment").hide(),target.parents(".activity-single").find(".show-deleted-comment").show(),target.parents(".activity-single").find(".comment-body").hide()}),$el.on("click",".changes-title",function(event){var target;return event.preventDefault(),target=angular.element(event.currentTarget),target.parent().find(".change-entry").toggleClass("active")}),$el.on("focus",".add-comment textarea",function(){return $(this).addClass("active")}),$el.on("click",".history-tabs li a",function(){return $el.find(".history-tabs li a").toggleClass("active"),$el.find(".history section").toggleClass("hidden")}),$el.on("click",".comment-delete",debounce(2e3,function(event){var activityId,target;return event.preventDefault(),target=angular.element(event.currentTarget),activityId=target.data("activity-id"),$ctrl.deleteComment(type,objectId,activityId)})),$el.on("click",".comment-restore",debounce(2e3,function(event){var activityId,target;return event.preventDefault(),target=angular.element(event.currentTarget),activityId=target.data("activity-id"),$ctrl.undeleteComment(type,objectId,activityId)})),$scope.$on("$destroy",function(){return $el.off()})},templateFn=function($el,$attrs){return templateBase({ngmodel:$attrs.ngModel,type:$attrs.type,mode:$attrs.mode})},{controller:HistoryController,template:templateFn,restrict:"AE",link:link}},module.directive("tgHistory",["$log","$tgLoading","$tgQqueue","$tgTemplate","$tgConfirm",HistoryDirective])}.call(this),function(){var ImportProjectButtonDirective,module;module=angular.module("taigaCommon"),ImportProjectButtonDirective=function($rs,$confirm,$location,$navUrls){var link;return link=function($scope,$el){return $el.on("click",".import-project-button",function(event){return event.preventDefault(),$el.find("input.import-file").val(""),$el.find("input.import-file").trigger("click")}),$el.on("change","input.import-file",function(event){var file,loader,onError,onSuccess;return event.preventDefault(),(file=event.target.files[0])?(loader=$confirm.loader("Uploading dump file"),onSuccess=function(result){var ctx,message,title;return loader.stop(),202===result.status?(title="Our Oompa Loompas are importing your project",message="This process could take a few minutes
We will send you an email when ready",$confirm.success(title,message)):(ctx={project:result.data.slug},$location.path($navUrls.resolve("project-admin-project-profile-details",ctx)),$confirm.notify("success","Your project has been imported successfuly."))},onError=function(result){var errorMsg,ref;return loader.stop(),console.log("Error",result),errorMsg="Our oompa loompas have some problems importing your dump data. Please try again. ",429===result.status?errorMsg="Sorry, our oompa loompas are very busy right now. Please try again in a few minutes. ":(null!=(ref=result.data)?ref._error_message:void 0)&&(errorMsg="Our oompa loompas have some problems importing your dump data: "+result.data._error_message),$confirm.notify("error",errorMsg)},loader.start(),$rs.projects["import"](file,loader.update).then(onSuccess,onError)):void 0})},{link:link}},module.directive("tgImportProjectButton",["$tgResources","$tgConfirm","$location","$tgNavUrls",ImportProjectButtonDirective])}.call(this),function(){var AssignedToLightboxDirective,BlockLightboxDirective,BlockingMessageInputDirective,CreateBulkUserstoriesDirective,CreateEditUserstoryDirective,LightboxDirective,LightboxKeyboardNavigationService,LightboxService,WatchersLightboxDirective,bindOnce,debounce,module,timeout,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;module=angular.module("taigaCommon"),bindOnce=this.taiga.bindOnce,timeout=this.taiga.timeout,debounce=this.taiga.debounce,LightboxService=function(superClass){function LightboxService(animationFrame,q){this.animationFrame=animationFrame,this.q=q}return extend(LightboxService,superClass),LightboxService.prototype.open=function($el){var defered,docEl,lightboxContent;return defered=this.q.defer(),lightboxContent=$el.children().not(".close"),lightboxContent.hide(),$el.css("display","flex"),$el.find("input,textarea").first().focus(),this.animationFrame.add(function(){return function(){return $el.addClass("open")}}(this)),this.animationFrame.add(function(){return function(){return lightboxContent.show(),defered.resolve()}}(this)),docEl=angular.element(document),docEl.on("keydown.lightbox",function(_this){return function(e){var code;return code=e.keyCode?e.keyCode:e.which,27===code?_this.close($el):void 0}}(this)),defered.promise},LightboxService.prototype.close=function($el){var docEl;return docEl=angular.element(document),docEl.off(".lightbox"),docEl.off(".keyboard-navigation"),$el.one("transitionend",function(){return function(){return $el.removeAttr("style"),$el.removeClass("open").removeClass("close")}}(this)),$el.addClass("close")},LightboxService.prototype.closeAll=function(){var docEl,i,len,lightboxEl,ref,results;for(docEl=angular.element(document),ref=docEl.find(".lightbox.open"),results=[],i=0,len=ref.length;len>i;i++)lightboxEl=ref[i],results.push(this.close($(lightboxEl)));return results},LightboxService}(taiga.Service),module.service("lightboxService",["animationFrame","$q",LightboxService]),LightboxKeyboardNavigationService=function(superClass){function LightboxKeyboardNavigationService(){return LightboxKeyboardNavigationService.__super__.constructor.apply(this,arguments)}return extend(LightboxKeyboardNavigationService,superClass),LightboxKeyboardNavigationService.prototype.stop=function(){var docEl;return docEl=angular.element(document),docEl.off(".keyboard-navigation")},LightboxKeyboardNavigationService.prototype.dispatch=function($el,code){var activeElement,next,prev;if(activeElement=$el.find(".active"),13===code)return activeElement.trigger("click");if(40===code){if(!activeElement.length)return $el.find(".watcher-single:first").addClass("active");if(next=activeElement.next(".watcher-single"),next.length)return activeElement.removeClass("active"),next.addClass("active")}else if(38===code){if(!activeElement.length)return $el.find(".watcher-single:last").addClass("active");if(prev=activeElement.prev(".watcher-single"),prev.length)return activeElement.removeClass("active"),prev.addClass("active")}},LightboxKeyboardNavigationService.prototype.init=function($el){var docEl;return this.stop(),docEl=angular.element(document),docEl.on("keydown.keyboard-navigation",function(_this){return function(event){var code;return code=event.keyCode?event.keyCode:event.which,40===code||38===code||13===code?(event.preventDefault(),_this.dispatch($el,code)):void 0}}(this))},LightboxKeyboardNavigationService}(taiga.Service),module.service("lightboxKeyboardNavigationService",LightboxKeyboardNavigationService),LightboxDirective=function(lightboxService){var link;return link=function($scope,$el){return $el.on("click",".close",function(event){return event.preventDefault(),lightboxService.close($el)})},{restrict:"C",link:link}},module.directive("lightbox",["lightboxService",LightboxDirective]),BlockLightboxDirective=function($rootscope,$tgrepo,$confirm,lightboxService,$loading,$qqueue){var link;return link=function($scope,$el,$attrs,$model){var block,unblock;return $el.find("h2.title").text($attrs.title),unblock=$qqueue.bindAdd(function(){return function(item,finishCallback){var promise;return promise=$tgrepo.save(item),promise.then(function(){return $confirm.notify("success"),$rootscope.$broadcast("history:reload"),$model.$setViewValue(item),finishCallback()}),promise.then(null,function(){return $confirm.notify("error"),item.revert(),$model.$setViewValue(item)}),promise["finally"](function(){return finishCallback()}),promise}}(this)),block=$qqueue.bindAdd(function(){return function(item){var promise;return $model.$setViewValue(item),$loading.start($el.find(".button-green")),promise=$tgrepo.save($model.$modelValue),promise.then(function(){return $confirm.notify("success"),$rootscope.$broadcast("history:reload")}),promise.then(null,function(){return $confirm.notify("error"),item.revert(),$model.$setViewValue(item)}),promise["finally"](function(){return $loading.finish($el.find(".button-green")),lightboxService.close($el)})}}(this)),$scope.$on("block",function(){return $el.find(".reason").val($model.$modelValue.blocked_note),lightboxService.open($el)}),$scope.$on("unblock",function(){return function(event,model,finishCallback){var item;return item=$model.$modelValue.clone(),item.is_blocked=!1,item.blocked_note="",unblock(item,finishCallback)}}(this)),$scope.$on("$destroy",function(){return $el.off()}),$el.on("click",".button-green",function(event){var item;return event.preventDefault(),item=$model.$modelValue.clone(),item.is_blocked=!0,item.blocked_note=$el.find(".reason").val(),block(item)})},{templateUrl:"common/lightbox/lightbox-block.html",link:link,require:"ngModel"}},module.directive("tgLbBlock",["$rootScope","$tgRepo","$tgConfirm","lightboxService","$tgLoading","$tgQqueue",BlockLightboxDirective]),BlockingMessageInputDirective=function($log,$template){var link,template,templateFn;return template=$template.get("common/lightbox/lightbox-blocking-message-input.html",!0),link=function($scope,$el,$attrs){return $attrs.watch?$scope.$watch($attrs.watch,function(value){return value===!0&&value===!0?$el.find(".blocked-note").removeClass("hidden"):$el.find(".blocked-note").addClass("hidden")}):$log.error("No watch attribute on tg-blocking-message-input directive")},templateFn=function($el,$attrs){return template({ngmodel:$attrs.ngModel})},{template:templateFn,link:link,require:"ngModel",restrict:"EA"}},module.directive("tgBlockingMessageInput",["$log","$tgTemplate",BlockingMessageInputDirective]),CreateEditUserstoryDirective=function($repo,$model,$rs,$rootScope,lightboxService,$loading){var link;return link=function($scope,$el){var submit,submitButton;return $scope.isNew=!0,$scope.$on("usform:new",function(ctx,projectId,status,statusList){return $scope.isNew=!0,$scope.usStatusList=statusList,$scope.us=$model.make_model("userstories",{project:projectId,points:{},status:status,is_archived:!1,tags:[]}),$el.find(".button-green").html("Create"),$el.find(".title").html("New user story "),$el.find(".tag-input").val(""),$el.find(".blocked-note").addClass("hidden"),$el.find("label.blocked").removeClass("selected"),$el.find("label.team-requirement").removeClass("selected"),$el.find("label.client-requirement").removeClass("selected"),lightboxService.open($el)}),$scope.$on("usform:edit",function(ctx,us){return $scope.us=us,$scope.isNew=!1,$el.find(".button-green").html("Save"),$el.find(".title").html("Edit user story "),$el.find(".tag-input").val(""),us.is_blocked?($el.find(".blocked-note").removeClass("hidden"),$el.find("label.blocked").addClass("selected")):($el.find(".blocked-note").addClass("hidden"),$el.find("label.blocked").removeClass("selected")),us.team_requirement?$el.find("label.team-requirement").addClass("selected"):$el.find("label.team-requirement").removeClass("selected"),us.client_requirement?$el.find("label.client-requirement").addClass("selected"):$el.find("label.client-requirement").removeClass("selected"),lightboxService.open($el)}),submit=debounce(2e3,function(){return function(event){var broadcastEvent,form,promise;return event.preventDefault(),form=$el.find("form").checksley(),form.validate()?($loading.start(submitButton),$scope.isNew?(promise=$repo.create("userstories",$scope.us),broadcastEvent="usform:new:success"):(promise=$repo.save($scope.us),broadcastEvent="usform:edit:success"),promise.then(function(data){return $loading.finish(submitButton),lightboxService.close($el),$rootScope.$broadcast(broadcastEvent,data)}),promise.then(null,function(data){return $loading.finish(submitButton),form.setErrors(data),data._error_message?$confirm.notify("error",data._error_message):void 0})):void 0}}(this)),submitButton=$el.find(".submit-button"),$el.on("submit","form",submit),$el.on("click",".close",function(event){return event.preventDefault(),$scope.$apply(function(){return $scope.us.revert()}),lightboxService.close($el)}),$el.keydown(function(event){var code;return code=event.keyCode?event.keyCode:event.which,27===code?(lightboxService.close($el),$scope.$apply(function(){return $scope.us.revert()})):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgLbCreateEditUserstory",["$tgRepo","$tgModel","$tgResources","$rootScope","lightboxService","$tgLoading",CreateEditUserstoryDirective]),CreateBulkUserstoriesDirective=function($repo,$rs,$rootscope,lightboxService,$loading){var link;return link=function($scope,$el){var submit,submitButton;return $scope.$on("usform:bulk",function(ctx,projectId,status){return $scope["new"]={projectId:projectId,statusId:status,bulk:""},lightboxService.open($el)}),submit=debounce(2e3,function(){return function(event){var form,promise;return event.preventDefault(),form=$el.find("form").checksley({onlyOneErrorElement:!0}),form.validate()?($loading.start(submitButton),promise=$rs.userstories.bulkCreate($scope["new"].projectId,$scope["new"].statusId,$scope["new"].bulk),promise.then(function(result){return $loading.finish(submitButton),$rootscope.$broadcast("usform:bulk:success",result),lightboxService.close($el)}),promise.then(null,function(data){return $loading.finish(submitButton),form.setErrors(data),data._error_message?$confirm.notify("error",data._error_message):void 0})):void 0}}(this)),submitButton=$el.find(".submit-button"),$el.on("submit","form",submit),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgLbCreateBulkUserstories",["$tgRepo","$tgResources","$rootScope","lightboxService","$tgLoading",CreateBulkUserstoriesDirective]),AssignedToLightboxDirective=function(lightboxService,lightboxKeyboardNavigationService,$template){var link;return link=function($scope,$el){var closeLightbox,filterUsers,normalizeString,render,selectedItem,selectedUser,usersTemplate;return selectedUser=null,selectedItem=null,usersTemplate=$template.get("common/lightbox/lightbox-assigned-to-users.html",!0),normalizeString=function(string){var normalizedString;return normalizedString=string,normalizedString=normalizedString.replace("Á","A").replace("Ä","A").replace("À","A"),normalizedString=normalizedString.replace("É","E").replace("Ë","E").replace("È","E"),normalizedString=normalizedString.replace("Í","I").replace("Ï","I").replace("Ì","I"),normalizedString=normalizedString.replace("Ó","O").replace("Ö","O").replace("Ò","O"),normalizedString=normalizedString.replace("Ú","U").replace("Ü","U").replace("Ù","U")},filterUsers=function(text,user){var username;return username=user.full_name_display.toUpperCase(),username=normalizeString(username),text=text.toUpperCase(),text=normalizeString(text),_.contains(username,text)},render=function(selected,text){var ctx,html,users;return users=_.clone($scope.activeUsers,!0),null!=selected&&(users=_.reject(users,{id:selected.id})),null!=text&&(users=_.filter(users,_.partial(filterUsers,text))),ctx={selected:selected,users:_.first(users,5),showMore:users.length>5},html=usersTemplate(ctx),$el.find("div.watchers").html(html),lightboxKeyboardNavigationService.init($el)},closeLightbox=function(){return lightboxKeyboardNavigationService.stop(),lightboxService.close($el)},$scope.$on("assigned-to:add",function(ctx,item){var assignedToId;return selectedItem=item,assignedToId=item.assigned_to,selectedUser=$scope.usersById[assignedToId],render(selectedUser),lightboxService.open($el).then(function(){return $el.find("input").focus()})}),$scope.$watch("usersSearch",function(searchingText){return null!=searchingText?(render(selectedUser,searchingText),$el.find("input").focus()):void 0}),$el.on("click",".watcher-single",function(event){var target;return event.preventDefault(),target=angular.element(event.currentTarget),closeLightbox(),$scope.$apply(function(){return $scope.$broadcast("assigned-to:added",target.data("user-id"),selectedItem),$scope.usersSearch=null})}),$el.on("click",".remove-assigned-to",function(event){return event.preventDefault(),event.stopPropagation(),closeLightbox(),$scope.$apply(function(){return $scope.usersSearch=null,$scope.$broadcast("assigned-to:added",null,selectedItem)})}),$el.on("click",".close",function(event){return event.preventDefault(),closeLightbox(),$scope.$apply(function(){return $scope.usersSearch=null})}),$scope.$on("$destroy",function(){return $el.off()})},{templateUrl:"common/lightbox/lightbox-assigned-to.html",link:link}},module.directive("tgLbAssignedto",["lightboxService","lightboxKeyboardNavigationService","$tgTemplate",AssignedToLightboxDirective]),WatchersLightboxDirective=function($repo,lightboxService,lightboxKeyboardNavigationService,$template){var link;return link=function($scope,$el){var closeLightbox,getFilteredUsers,render,selectedItem,usersTemplate;return selectedItem=null,usersTemplate=$template.get("common/lightbox/lightbox-assigned-to-users.html",!0),getFilteredUsers=function(text){var _filterUsers,users;return null==text&&(text=""),_filterUsers=function(text,user){var username;return selectedItem&&_.find(selectedItem.watchers,function(x){return x===user.id})?!1:(username=user.full_name_display.toUpperCase(),text=text.toUpperCase(),_.contains(username,text))},users=_.clone($scope.activeUsers,!0),users=_.filter(users,_.partial(_filterUsers,text))},render=function(users){var ctx,html;return ctx={selected:!1,users:_.first(users,5),showMore:users.length>5},html=usersTemplate(ctx),$el.find("div.watchers").html(html)},closeLightbox=function(){return lightboxKeyboardNavigationService.stop(),lightboxService.close($el)},$scope.$on("watcher:add",function(ctx,item){var users;return selectedItem=item,users=getFilteredUsers(),render(users),lightboxService.open($el).then(function(){return $el.find("input").focus()}),lightboxKeyboardNavigationService.init($el)}),$scope.$watch("usersSearch",function(searchingText){var users;if(null!=searchingText)return users=getFilteredUsers(searchingText),render(users),$el.find("input").focus()}),$el.on("click",".watcher-single",debounce(2e3,function(event){var target;return closeLightbox(),event.preventDefault(),target=angular.element(event.currentTarget),$scope.$apply(function(){return $scope.usersSearch=null,$scope.$broadcast("watcher:added",target.data("user-id"))})})),$el.on("click",".close",function(event){return event.preventDefault(),closeLightbox(),$scope.$apply(function(){return $scope.usersSearch=null})}),$scope.$on("$destroy",function(){return $el.off()})},{templateUrl:"common/lightbox/lightbox-users.html",link:link}},module.directive("tgLbWatchers",["$tgRepo","lightboxService","lightboxKeyboardNavigationService","$tgTemplate",WatchersLightboxDirective])}.call(this),function(){var Loader,LoaderDirective,module,sizeFormat,taiga,timeout;taiga=this.taiga,sizeFormat=this.taiga.sizeFormat,timeout=this.taiga.timeout,module=angular.module("taigaCommon"),LoaderDirective=function(tgLoader,$rootscope){var link;return link=function($scope,$el){return tgLoader.onStart(function(){return $(document.body).addClass("loader-active"),$el.addClass("active")}),tgLoader.onEnd(function(){return $(document.body).removeClass("loader-active"),$el.removeClass("active")}),$rootscope.$on("$routeChangeSuccess",function(){return tgLoader.startCurrentPageLoader()}),$rootscope.$on("$locationChangeSuccess",function(){return tgLoader.reset()})},{link:link}},module.directive("tgLoader",["tgLoader","$rootScope",LoaderDirective]),Loader=function(){var config,defaultConfig,forceDisabled;forceDisabled=!1,defaultConfig={enabled:!1,minTime:300},config=_.merge({},defaultConfig),this.add=function(){return function(){return forceDisabled?void 0:config.enabled=!0}},this.$get=["$rootScope",function($rootscope){var pageLoaded,reset,start,startLoadTime;return startLoadTime=0,reset=function(){return config=_.merge({},defaultConfig)},pageLoaded=function(force){var diff,endTime,timeoutValue;return null==force&&(force=!1),startLoadTime?(timeoutValue=0,force||(endTime=(new Date).getTime(),diff=endTime-startLoadTime,diff"))},TgLoadingService.prototype.finish=function(target){var oldContent;return target.hasClass("loading")?(oldContent=target.data("loading-old-content"),target.data("loading-old-content",null),target.html(oldContent),target.removeClass("loading")):void 0},TgLoadingService}(taiga.Service),module.service("$tgLoading",TgLoadingService)}.call(this),function(){var RelatedTaskStatusDirective,UsStatusDirective,bindOnce,debounce,module,taiga;taiga=this.taiga,bindOnce=this.taiga.bindOnce,debounce=this.taiga.debounce,module=angular.module("taigaCommon"),UsStatusDirective=function($repo,$template){var link,template;return template=$template.get("common/popover/popover-us-status.html",!0),link=function($scope,$el,$attrs){var $ctrl,render,us;return $ctrl=$el.controller(),render=function(us){var usStatusById,usStatusDom,usStatusDomParent;return usStatusDomParent=$el.find(".us-status"),usStatusDom=$el.find(".us-status .us-status-bind"),usStatusById=$scope.usStatusById,usStatusById[us.status]?(usStatusDom.text(usStatusById[us.status].name),usStatusDomParent.css("color",usStatusById[us.status].color)):void 0},$el.on("click",".us-status",function(event){return event.preventDefault(),event.stopPropagation(),$el.find(".pop-status").popover().open()}),$el.on("click",".status",debounce(2e3,function(event){var target,us;return event.preventDefault(),event.stopPropagation(),target=angular.element(event.currentTarget),us=$scope.$eval($attrs.tgUsStatus),us.status=target.data("status-id"),render(us),$el.find(".pop-status").popover().close(),$scope.$apply(function(){return $repo.save(us).then(function(){return $scope.$eval($attrs.onUpdate)})})})),$scope.$on("userstories:loaded",function(){return render($scope.$eval($attrs.tgUsStatus))}),$scope.$on("$destroy",function(){return $el.off()}),us=$scope.$eval($attrs.tgUsStatus),render(us),bindOnce($scope,"project",function(project){var html;return html=template({statuses:project.us_statuses}),$el.append(html),-1===$scope.project.my_permissions.indexOf("modify_us")?($el.unbind("click"),$el.find("a").addClass("not-clickable")):void 0})},{link:link}},module.directive("tgUsStatus",["$tgRepo","$tgTemplate",UsStatusDirective]),RelatedTaskStatusDirective=function($repo,$template){var link,selectionTemplate,updateTaskStatus;return selectionTemplate=$template.get("common/popover/popover-related-task-status.html",!0),updateTaskStatus=function($el,task,taskStatusById){var taskStatusDom,taskStatusDomParent;return taskStatusDomParent=$el.find(".us-status"),taskStatusDom=$el.find(".task-status .task-status-bind"),taskStatusById[task.status]?(taskStatusDom.text(taskStatusById[task.status].name),taskStatusDomParent.css("color",taskStatusById[task.status].color)):void 0 -},link=function($scope,$el,$attrs){var $ctrl,autoSave,notAutoSave,task;return $ctrl=$el.controller(),task=$scope.$eval($attrs.tgRelatedTaskStatus),notAutoSave=$scope.$eval($attrs.notAutoSave),autoSave=!notAutoSave,$el.on("click",".task-status",function(event){return event.preventDefault(),event.stopPropagation(),$el.find(".pop-status").popover().open()}),$el.on("click",".status",debounce(2e3,function(event){var target;return event.preventDefault(),event.stopPropagation(),target=angular.element(event.currentTarget),task.status=target.data("status-id"),$el.find(".pop-status").popover().close(),updateTaskStatus($el,task,$scope.taskStatusById),autoSave?$scope.$apply(function(){return $repo.save(task).then(function(){return $scope.$eval($attrs.onUpdate),$scope.$emit("related-tasks:status-changed")})}):void 0})),taiga.bindOnce($scope,"project",function(project){return $el.append(selectionTemplate({statuses:project.task_statuses})),updateTaskStatus($el,task,$scope.taskStatusById),-1===project.my_permissions.indexOf("modify_task")?($el.unbind("click"),$el.find("a").addClass("not-clickable")):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgRelatedTaskStatus",["$tgRepo","$tgTemplate",RelatedTaskStatusDirective]),$.fn.popover=function(){var $el,close,closeAll,closePopover,isVisible,open;return $el=this,isVisible=function(){return function(){var docViewBottom,docViewLeft,docViewRight,docViewTop,docViewWidth,elemBottom,elemLeft,elemRight,elemTop,elemWidth;return $el.css({display:"block",visibility:"hidden"}),docViewTop=$(window).scrollTop(),docViewBottom=docViewTop+$(window).height(),docViewWidth=$(window).width(),docViewRight=docViewWidth,docViewLeft=0,elemTop=$el.offset().top,elemBottom=elemTop+$el.height(),elemWidth=$el.width(),elemLeft=$el.offset().left,elemRight=$el.offset().left+elemWidth,$el.css({display:"none",visibility:"visible"}),docViewBottom>=elemBottom&&elemTop>=docViewTop&&elemLeft>=docViewLeft&&docViewRight>=elemRight}}(this),closePopover=function(){return function(onClose){return onClose&&onClose.call($el),$el.fadeOut(function(){return $el.removeClass("active").removeClass("fix")}),$el.off("popup:close")}}(this),closeAll=function(){return function(){return $(".popover.active").each(function(){return $(this).trigger("popup:close")})}}(this),open=function(){return function(onClose){return $el.hasClass("active")?close():(closeAll(),isVisible()||$el.addClass("fix"),$el.fadeIn(function(){return $el.addClass("active"),$(document.body).off("popover"),$(document.body).one("click.popover",function(){return closeAll()})}),$el.on("popup:close",function(){return closePopover(onClose)}))}}(this),close=function(){return function(){return $el.trigger("popup:close")}}(this),{open:open,close:close,closeAll:closeAll}}}.call(this),function(){var ExceptionHandlerFactory,module,taiga;taiga=this.taiga,module=angular.module("taigaCommon"),ExceptionHandlerFactory=function($log,config){var ravenConfig;return this.config=config,ravenConfig=this.config.get("ravenConfig",null),ravenConfig?($log.debug("Using the RavenJS exception handler."),Raven.config(ravenConfig).install(),function(exception){return $log.error.apply($log,arguments),Raven.captureException(exception)}):($log.debug("Using the default logging exception handler."),function(){return $log.error.apply($log,arguments)})},module.factory("$exceptionHandler",["$log","$tgConfig",ExceptionHandlerFactory])}.call(this),function(){var ColorizeTagsDirective,LbTagLineDirective,TagLineDirective,TagsDirective,bindOnce,module,taiga,trim,indexOf=[].indexOf||function(item){for(var i=0,l=this.length;l>i;i++)if(i in this&&this[i]===item)return i;return-1};taiga=this.taiga,trim=this.taiga.trim,bindOnce=this.taiga.bindOnce,module=angular.module("taigaCommon"),TagsDirective=function(){var formatter,link,parser;return formatter=function(v){return _.isArray(v)?v.join(", "):""},parser=function(v){var result;return v?(result=_(v.split(",")).map(function(x){return _.str.trim(x)}),result.value()):[]},link=function($scope,$el,$attrs,$ctrl){return $ctrl.$formatters.push(formatter),$ctrl.$parsers.push(parser),$scope.$on("$destroy",function(){return $el.off()})},{require:"ngModel",link:link}},module.directive("tgTags",TagsDirective),ColorizeTagsDirective=function(){var link,templates;return templates={backlog:_.template('<% _.each(tags, function(tag) { %>\n <%- tag.name %>\n<% }) %>'),kanban:_.template('<% _.each(tags, function(tag) { %>\n \n<% }) %>'),taskboard:_.template('<% _.each(tags, function(tag) { %>\n \n<% }) %>')},link=function($scope,$el,$attrs){var render;return render=function(srcTags){var html,tags,template;return template=templates[$attrs.tgColorizeTagsType],srcTags.sort(),tags=_.map(srcTags,function(tag){var color;return color=$scope.project.tags_colors[tag],{name:tag,color:color}}),html=template({tags:tags}),$el.html(html)},$scope.$watch($attrs.tgColorizeTags,function(tags){return null!=tags?render(tags):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgColorizeTags",ColorizeTagsDirective),LbTagLineDirective=function($rs,$template){var COMMA_KEY,ENTER_KEY,link,templateTags;return ENTER_KEY=13,COMMA_KEY=188,templateTags=$template.get("common/tag/lb-tag-line-tags.html",!0),link=function($scope,$el,$attrs,$model){var addValue,deleteValue,hideSaveButton,removeInputLastCharacter,renderTags,resetInput,saveInputTag,showSaveButton;return renderTags=function(tags,tagsColors){var ctx,html;return ctx={tags:_.map(tags,function(t){return{name:t,color:tagsColors[t]}})},_.map(ctx.tags,function(){return function(tag){return tag.color?tag.style="border-left: 5px solid "+tag.color:void 0}}(this)),html=templateTags(ctx),$el.find("div.tags-container").html(html)},showSaveButton=function(){return $el.find(".save").removeClass("hidden")},hideSaveButton=function(){return $el.find(".save").addClass("hidden")},resetInput=function(){return $el.find("input").val(""),$el.find("input").autocomplete("close")},addValue=function(value){var tags;return value=trim(value.toLowerCase()),0!==value.length?(tags=_.clone($model.$modelValue,!1),null==tags&&(tags=[]),indexOf.call(tags,value)<0&&tags.push(value),$scope.$apply(function(){return $model.$setViewValue(tags)}),hideSaveButton()):void 0},deleteValue=function(value){var tags;return value=trim(value.toLowerCase()),0!==value.length?(tags=_.clone($model.$modelValue,!1),tags=_.pull(tags,value),$scope.$apply(function(){return $model.$setViewValue(tags)})):void 0},saveInputTag=function(){var value;return value=$el.find("input").val(),addValue(value),resetInput()},removeInputLastCharacter=function(){return function(input){var inputValue;return inputValue=input.val(),input.val(inputValue.substring(0,inputValue.length-1))}}(this),$el.on("keypress","input",function(event){return event.keyCode===ENTER_KEY?event.preventDefault():void 0}),$el.on("keyup","input",function(event){var target;return target=angular.element(event.currentTarget),event.keyCode===ENTER_KEY?saveInputTag():event.keyCode===COMMA_KEY?(removeInputLastCharacter(target),saveInputTag()):target.val().length?showSaveButton():hideSaveButton()}),$el.on("click",".save",function(event){return event.preventDefault(),saveInputTag()}),$el.on("click",".icon-delete",function(event){var target,value;return event.preventDefault(),target=angular.element(event.currentTarget),value=target.siblings(".tag-name").text(),deleteValue(value)}),bindOnce($scope,"project",function(project){var positioningFunction;return positioningFunction=function(position,elements){var menu;return menu=elements.element.element,menu.css("width",elements.target.width),menu.css("top",position.top),menu.css("left",position.left)},$el.find("input").autocomplete({source:_.keys(project.tags_colors),position:{my:"left top",using:positioningFunction},select:function(event,ui){return addValue(ui.item.value),ui.item.value=""}})}),$scope.$watch($attrs.ngModel,function(tags){var ref,tagsColors;return tagsColors=(null!=(ref=$scope.project)?ref.tags_colors:void 0)||[],renderTags(tags,tagsColors)}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,require:"ngModel",templateUrl:"common/tag/lb-tag-line.html"}},module.directive("tgLbTagLine",["$tgResources","$tgTemplate",LbTagLineDirective]),TagLineDirective=function($rootScope,$repo,$rs,$confirm,$qqueue,$template){var COMMA_KEY,ENTER_KEY,ESC_KEY,link,templateTags;return ENTER_KEY=13,ESC_KEY=27,COMMA_KEY=188,templateTags=$template.get("common/tag/tags-line-tags.html",!0),link=function($scope,$el,$attrs,$model){var addValue,deleteValue,hideAddTagButton,hideAddTagButtonText,hideInput,hideSaveButton,isEditable,removeInputLastCharacter,renderInReadModeOnly,renderTags,resetInput,saveInputTag,showAddTagButton,showAddTagButtonText,showInput,showSaveButton;return isEditable=function(){return-1!==$scope.project.my_permissions.indexOf($attrs.requiredPerm)},renderTags=function(tags,tagsColors){var ctx,html;return ctx={tags:_.map(tags,function(t){return{name:t,color:tagsColors[t]}}),isEditable:isEditable()},html=templateTags(ctx),$el.find("div.tags-container").html(html)},renderInReadModeOnly=function(){return $el.find(".add-tag").remove(),$el.find("input").remove(),$el.find(".save").remove()},showAddTagButton=function(){return $el.find(".add-tag").removeClass("hidden")},hideAddTagButton=function(){return $el.find(".add-tag").addClass("hidden")},showAddTagButtonText=function(){return $el.find(".add-tag-text").removeClass("hidden")},hideAddTagButtonText=function(){return $el.find(".add-tag-text").addClass("hidden")},showSaveButton=function(){return $el.find(".save").removeClass("hidden")},hideSaveButton=function(){return $el.find(".save").addClass("hidden")},showInput=function(){return $el.find("input").removeClass("hidden").focus()},hideInput=function(){return $el.find("input").addClass("hidden").blur()},resetInput=function(){return $el.find("input").val(""),$el.find("input").autocomplete("close")},addValue=$qqueue.bindAdd(function(value){var model,onError,onSuccess,tags;return value=trim(value.toLowerCase()),0!==value.length?(tags=_.clone($model.$modelValue.tags,!1),null==tags&&(tags=[]),indexOf.call(tags,value)<0&&tags.push(value),model=$model.$modelValue.clone(),model.tags=tags,$model.$setViewValue(model),onSuccess=function(){return $rootScope.$broadcast("history:reload")},onError=function(){return $confirm.notify("error"),model.revert(),$model.$setViewValue(model)},$repo.save(model).then(onSuccess,onError),hideSaveButton()):void 0}),deleteValue=$qqueue.bindAdd(function(value){var model,onError,onSuccess,tags;return value=trim(value.toLowerCase()),0!==value.length?(tags=_.clone($model.$modelValue.tags,!1),tags=_.pull(tags,value),model=$model.$modelValue.clone(),model.tags=tags,$model.$setViewValue(model),onSuccess=function(){return $rootScope.$broadcast("history:reload")},onError=function(){return $confirm.notify("error"),model.revert(),$model.$setViewValue(model)},$repo.save(model).then(onSuccess,onError)):void 0}),saveInputTag=function(){var value;return value=$el.find("input").val(),addValue(value),resetInput()},removeInputLastCharacter=function(){return function(input){var inputValue;return inputValue=input.val(),input.val(inputValue.substring(0,inputValue.length-1))}}(this),$el.on("keypress","input",function(event){var ref;if((ref=event.keyCode)===ENTER_KEY||ref===ESC_KEY)return event.preventDefault()}),$el.on("keyup","input",function(event){var target;return target=angular.element(event.currentTarget),event.keyCode===ENTER_KEY?saveInputTag():event.keyCode===COMMA_KEY?(removeInputLastCharacter(target),saveInputTag()):event.keyCode===ESC_KEY?(resetInput(),hideInput(),hideSaveButton(),showAddTagButton()):target.val().length?showSaveButton():hideSaveButton()}),$el.on("click",".save",function(event){return event.preventDefault(),saveInputTag()}),$el.on("click",".add-tag",function(event){return event.preventDefault(),hideAddTagButton(),showInput()}),$el.on("click",".icon-delete",function(event){var target,value;return event.preventDefault(),target=angular.element(event.currentTarget),value=target.siblings(".tag-name").text(),deleteValue(value)}),bindOnce($scope,"project",function(project){var positioningFunction;return isEditable()?(showAddTagButton(),positioningFunction=function(position,elements){var menu;return menu=elements.element.element,menu.css("width",elements.target.width),menu.css("top",position.top),menu.css("left",position.left)},$el.find("input").autocomplete({source:_.keys(project.tags_colors),position:{my:"left top",using:positioningFunction},select:function(event,ui){return addValue(ui.item.value),ui.item.value=""}})):void renderInReadModeOnly()}),$scope.$watch($attrs.ngModel,function(model){var ref,ref1,tagsColors;if(model)return(null!=(ref=model.tags)?ref.length:void 0)?hideAddTagButtonText():showAddTagButtonText(),tagsColors=(null!=(ref1=$scope.project)?ref1.tags_colors:void 0)||[],renderTags(model.tags,tagsColors)}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,require:"ngModel",templateUrl:"common/tag/tag-line.html"}},module.directive("tgTagLine",["$rootScope","$tgRepo","$tgResources","$tgConfirm","$tgQqueue","$tgTemplate",TagLineDirective])}.call(this),function(){var bindOnce,module,taiga,tgMarkitupDirective,indexOf=[].indexOf||function(item){for(var i=0,l=this.length;l>i;i++)if(i in this&&this[i]===item)return i;return-1};taiga=this.taiga,bindOnce=this.taiga.bindOnce,module=angular.module("taigaCommon"),tgMarkitupDirective=function($rootscope,$rs,$tr,$selectedText,$template){var link,previewTemplate;return previewTemplate=$template.get("common/wysiwyg/wysiwyg-markitup-preview.html",!0),link=function($scope,$el,$attrs,$model){var addLine,closePreviewMode,element,markdownSettings,markdownTitle,prepareUrlFormatting,preview,previewDomNode,setCaretPosition,urlFormatting;return element=angular.element($el),previewDomNode=$("
",{"class":"preview"}),closePreviewMode=function(){return element.parents(".markdown").find(".preview").remove(),element.parents(".markItUp").show()},$scope.$on("markdown-editor:submit",function(){return closePreviewMode()}),preview=function(){var markItUpDomNode,markdownDomNode;return markdownDomNode=element.parents(".markdown"),markItUpDomNode=element.parents(".markItUp"),$rs.mdrender.render($scope.projectId,$model.$modelValue).then(function(data){var markdown;return markdownDomNode.append(previewTemplate({data:data.data})),markItUpDomNode.hide(),markdown=element.closest(".markdown"),markdown.on("mouseup.preview",".preview",function(event){var target;return event.preventDefault(),target=angular.element(event.target),target.is("a")||!$selectedText.get().length?(markdown.off(".preview"),closePreviewMode()):void 0})})},setCaretPosition=function(textarea,caretPosition){var line,range,scrollRelation,totalLines;return textarea.createTextRange?(range=textarea.createTextRange(),range.move("character",caretPosition),range.select()):textarea.selectionStart&&(textarea.focus(),textarea.setSelectionRange(caretPosition,caretPosition)),totalLines=textarea.value.split("\n").length,line=textarea.value.slice(0,+(caretPosition-1)+1||9e9).split("\n").length,scrollRelation=line/totalLines,$el.scrollTop(scrollRelation*$el[0].scrollHeight-$el.height()/2)},addLine=function(textarea,nline,replace){var cursorPosition,j,key,len,line,lines;for(lines=textarea.value.split("\n"),lines[nline]=replace?replace+lines[nline]:"",cursorPosition=0,key=j=0,len=lines.length;len>j&&(line=lines[key],cursorPosition+=line.length+1||1,key!==nline);key=++j);return textarea.value=lines.join("\n"),replace?cursorPosition-lines[nline].length+replace.length-1:cursorPosition},markdownSettings={nameSpace:"markdown",onShiftEnter:{keepDefault:!1,openWith:"\n\n"},onEnter:{keepDefault:!1,replaceWith:function(){return"\n"},afterInsert:function(data){var cursorLine,emptyListItem,lastLine,lines,markdownCaretPositon,match,newLineContent;return lines=data.textarea.value.split("\n"),cursorLine=data.textarea.value.slice(0,+(data.caretPosition-1)+1||9e9).split("\n").length,newLineContent=data.textarea.value.slice(data.caretPosition).split("\n")[0],lastLine=lines[cursorLine-1],match=lastLine.match(/^(\s*- ).*/),match&&(emptyListItem=lastLine.match(/^(\s*)\-\s$/),markdownCaretPositon=emptyListItem?addLine(data.textarea,cursorLine-1):addLine(data.textarea,cursorLine,""+match[1])),match=lastLine.match(/^(\s*\* ).*/),match&&(emptyListItem=lastLine.match(/^(\s*\* )$/),markdownCaretPositon=emptyListItem?addLine(data.textarea,cursorLine-1):addLine(data.textarea,cursorLine,""+match[1])),match=lastLine.match(/^(\s*)(\d+)\.\s/),match&&(emptyListItem=lastLine.match(/^(\s*)(\d+)\.\s$/),markdownCaretPositon=emptyListItem?addLine(data.textarea,cursorLine-1):addLine(data.textarea,cursorLine,match[1]+(parseInt(match[2],10)+1)+". ")),markdownCaretPositon?setCaretPosition(data.textarea,markdownCaretPositon):void 0}},markupSet:[{name:$tr.t("markdown-editor.heading-1"),key:"1",placeHolder:$tr.t("markdown-editor.placeholder"),closeWith:function(markItUp){return markdownTitle(markItUp,"=")}},{name:$tr.t("markdown-editor.heading-2"),key:"2",placeHolder:$tr.t("markdown-editor.placeholder"),closeWith:function(markItUp){return markdownTitle(markItUp,"-")}},{name:$tr.t("markdown-editor.heading-3"),key:"3",openWith:"### ",placeHolder:$tr.t("markdown-editor.placeholder")},{separator:"---------------"},{name:$tr.t("markdown-editor.bold"),key:"B",openWith:"**",closeWith:"**"},{name:$tr.t("markdown-editor.italic"),key:"I",openWith:"_",closeWith:"_"},{name:$tr.t("markdown-editor.strike"),key:"S",openWith:"~~",closeWith:"~~"},{separator:"---------------"},{name:$tr.t("markdown-editor.bulleted-list"),openWith:"- "},{name:$tr.t("markdown-editor.numeric-list"),openWith:function(markItUp){return markItUp.line+". "}},{separator:"---------------"},{name:$tr.t("markdown-editor.picture"),key:"P",replaceWith:'![[![Alternative text]!]](<<<[![Url:!:http://]!]>>> "[![Title]!]")',beforeInsert:function(markItUp){return prepareUrlFormatting(markItUp)},afterInsert:function(markItUp){return urlFormatting(markItUp)}},{name:$tr.t("markdown-editor.link"),key:"L",openWith:"[",closeWith:'](<<<[![Url:!:http://]!]>>> "[![Title]!]")',placeHolder:$tr.t("markdown-editor.link-placeholder"),beforeInsert:function(markItUp){return prepareUrlFormatting(markItUp)},afterInsert:function(markItUp){return urlFormatting(markItUp)}},{separator:"---------------"},{name:$tr.t("markdown-editor.quotes"),openWith:"> "},{name:$tr.t("markdown-editor.code-block"),openWith:"```\n",closeWith:"\n```"},{separator:"---------------"},{name:$tr.t("markdown-editor.preview"),call:preview,className:"preview-icon"}],afterInsert:function(event){var target;return target=angular.element(event.textarea),$model.$setViewValue(target.val())}},prepareUrlFormatting=function(markItUp){var indices,regex,result;for(console.log(markItUp),regex=/(<<<|>>>)/gi,result=0,indices=[];result=regex.exec(markItUp.textarea.value);)indices.push(result.index);return markItUp.donotparse=indices,console.log(indices)},urlFormatting=function(markItUp){var endIndex,ref,ref1,regex,result,startIndex,url,value;for(console.log(markItUp.donotparse),regex=/<<>>/gi,endIndex=0;;){if(result=regex.exec(markItUp.textarea.value),!result)break;if(ref1=result.index,indexOf.call(markItUp.donotparse,ref1)<0){endIndex=result.index;break}}return value=markItUp.textarea.value,url=value.substring(startIndex,endIndex).replace("<<<","").replace(">>>",""),url=url.replace("(","%28").replace(")","%29"),url=url.replace("[","%5B").replace("]","%5D"),value=value.substring(0,startIndex)+url+value.substring(endIndex+3,value.length),markItUp.textarea.value=value,markItUp.donotparse=void 0},markdownTitle=function(markItUp,char){var heading,i,j,n,ref;for(heading="",n=$.trim(markItUp.selection||markItUp.placeHolder).length,i=j=0,ref=n-1;ref>=0?ref>=j:j>=ref;i=ref>=0?++j:--j)heading+=char;return"\n"+heading+"\n"},element.markItUp(markdownSettings),element.on("keypress",function(){return $scope.$apply()}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,require:"ngModel"}},module.directive("tgMarkitup",["$rootScope","$tgResources","$tgI18n","$selectedText","$tgTemplate",tgMarkitupDirective])}.call(this),function(){var BacklogFiltersDirective,bindOnce,debounceLeading,groupBy,mixOf,module,scopeDefer,taiga,toggleText;taiga=this.taiga,mixOf=this.taiga.mixOf,toggleText=this.taiga.toggleText,scopeDefer=this.taiga.scopeDefer,bindOnce=this.taiga.bindOnce,groupBy=this.taiga.groupBy,debounceLeading=this.taiga.debounceLeading,module=angular.module("taigaBacklog"),BacklogFiltersDirective=function($log,$location,$templates){var link,template,templateSelected;return template=$templates.get("backlog/filters.html",!0),templateSelected=$templates.get("backlog/filter-selected.html",!0),link=function($scope,$el){var $ctrl,initializeSelectedFilters,renderFilters,renderSelectedFilters,selectQFilter,selectedFilters,showCategories,showFilters,toggleFilterSelection;return $ctrl=$el.closest(".wrapper").controller(),selectedFilters=[],showFilters=function(title,type){return $el.find(".filters-cats").hide(),$el.find(".filter-list").removeClass("hidden"),$el.find("h2.breadcrumb").removeClass("hidden"),$el.find("h2 a.subfilter span.title").html(title),$el.find("h2 a.subfilter span.title").prop("data-type",type)},showCategories=function(){return $el.find(".filters-cats").show(),$el.find(".filter-list").addClass("hidden"),$el.find("h2.breadcrumb").addClass("hidden")},initializeSelectedFilters=function(filters){var i,len,name,val,values;showCategories(),selectedFilters=[];for(name in filters)for(values=filters[name],i=0,len=values.length;len>i;i++)val=values[i],val.selected&&selectedFilters.push(val);return renderSelectedFilters()},renderSelectedFilters=function(){var html;return _.map(selectedFilters,function(){return function(f){return f.color?f.style="border-left: 3px solid "+f.color:void 0}}(this)),html=templateSelected({filters:selectedFilters}),$el.find(".filters-applied").html(html)},renderFilters=function(filters){var html;return _.map(filters,function(){return function(f){return f.color?f.style="border-left: 3px solid "+f.color:void 0}}(this)),html=template({filters:filters}),$el.find(".filter-list").html(html)},toggleFilterSelection=function(type,id){var currentFiltersType,filter,filters;return filters=$scope.filters[type],filter=_.find(filters,{id:taiga.toString(id)}),filter.selected=!filter.selected,filter.selected?(selectedFilters.push(filter),$scope.$apply(function(){return $ctrl.selectFilter(type,id)})):(selectedFilters=_.reject(selectedFilters,filter),$scope.$apply(function(){return $ctrl.unselectFilter(type,id)})),renderSelectedFilters(selectedFilters),currentFiltersType=$el.find("h2 a.subfilter span.title").prop("data-type"),type===currentFiltersType&&renderFilters(_.reject(filters,"selected")),$ctrl.loadUserstories()},selectQFilter=debounceLeading(100,function(value){return void 0!==value?(0===value.length?$ctrl.replaceFilter("q",null):$ctrl.replaceFilter("q",value),$ctrl.loadUserstories()):void 0}),$scope.$watch("filtersQ",selectQFilter),$scope.$on("filters:loaded",function(ctx,filters){return initializeSelectedFilters(filters)}),$el.on("click",".filters-cats > ul > li > a",function(event){var tags,target;return event.preventDefault(),target=angular.element(event.currentTarget),tags=$scope.filters[target.data("type")],renderFilters(_.reject(tags,"selected")),showFilters(target.attr("title"),target.data("type"))}),$el.on("click",".filters-inner > .filters-step-cat > .breadcrumb > .back",function(event){return event.preventDefault(),showCategories()}),$el.on("click",".filters-applied a",function(event){var id,target,type;return event.preventDefault(),target=angular.element(event.currentTarget),id=target.data("id"),type=target.data("type"),toggleFilterSelection(type,id)}),$el.on("click",".filter-list .single-filter",function(event){var id,target,type;return event.preventDefault(),target=angular.element(event.currentTarget),target.hasClass("active")?target.removeClass("active"):target.addClass("active"),id=target.data("id"),type=target.data("type"),toggleFilterSelection(type,id)})},{link:link}},module.directive("tgBacklogFilters",["$log","$tgLocation","$tgTemplate",BacklogFiltersDirective])}.call(this),function(){var CreateEditSprint,bindOnce,debounce,module,taiga;taiga=this.taiga,bindOnce=this.taiga.bindOnce,debounce=this.taiga.debounce,module=angular.module("taigaBacklog"),CreateEditSprint=function($repo,$confirm,$rs,$rootscope,lightboxService,$loading){var link;return link=function($scope,$el){var createSprint,hasErrors,remove,submit,submitButton;return hasErrors=!1,createSprint=!0,$scope.sprint={project:null,name:null,estimated_start:null,estimated_finish:null},submit=debounce(2e3,function(){return function(event){var broadcastEvent,form,newSprint,promise,target;return event.preventDefault(),target=angular.element(event.currentTarget),form=$el.find("form").checksley(),form.validate()?(hasErrors=!1,newSprint=angular.copy($scope.sprint),broadcastEvent=null,createSprint?(newSprint.estimated_start=moment(newSprint.estimated_start).format("YYYY-MM-DD"),newSprint.estimated_finish=moment(newSprint.estimated_finish).format("YYYY-MM-DD"),promise=$repo.create("milestones",newSprint),broadcastEvent="sprintform:create:success"):(newSprint.setAttr("estimated_start",moment(newSprint.estimated_start).format("YYYY-MM-DD")),newSprint.setAttr("estimated_finish",moment(newSprint.estimated_finish).format("YYYY-MM-DD")),promise=$repo.save(newSprint),broadcastEvent="sprintform:edit:success"),$loading.start(submitButton),promise.then(function(data){return $loading.finish(submitButton),createSprint&&($scope.sprintsCounter+=1),$rootscope.$broadcast(broadcastEvent,data),lightboxService.close($el)}),promise.then(null,function(data){return $loading.finish(submitButton),form.setErrors(data),data._error_message?$confirm.notify("light-error",data._error_message):data.__all__?$confirm.notify("light-error",data.__all__[0]):void 0})):(hasErrors=!0,void $el.find(".last-sprint-name").addClass("disappear"))}}(this)),remove=function(){var message,title;return title="Delete sprint",message=$scope.sprint.name,$confirm.askOnDelete(title,message).then(function(){return function(finish){var onError,onSuccess;return onSuccess=function(){return finish(),$scope.milestonesCounter-=1,lightboxService.close($el),$rootscope.$broadcast("sprintform:remove:success")},onError=function(){return finish(!1),$confirm.notify("error")},$repo.remove($scope.sprint).then(onSuccess,onError)}}(this))},$scope.$on("sprintform:create",function(event,projectId){var estimatedFinish,estimatedStart,form,lastSprint,lastSprintNameDom;return form=$el.find("form").checksley(),form.reset(),createSprint=!0,$scope.sprint.project=projectId,$scope.sprint.name=null,$scope.sprint.slug=null,lastSprint=$scope.sprints[0],estimatedStart=moment(),$scope.sprint.estimated_start?estimatedStart=moment($scope.sprint.estimated_start):null!=lastSprint&&(estimatedStart=moment(lastSprint.estimated_finish)),$scope.sprint.estimated_start=estimatedStart.format("DD MMM YYYY"),estimatedFinish=moment().add(2,"weeks"),$scope.sprint.estimated_finish?estimatedFinish=moment($scope.sprint.estimated_finish):null!=lastSprint&&(estimatedFinish=moment(lastSprint.estimated_finish).add(2,"weeks")),$scope.sprint.estimated_finish=estimatedFinish.format("DD MMM YYYY"),lastSprintNameDom=$el.find(".last-sprint-name"),null!=(null!=lastSprint?lastSprint.name:void 0)&&lastSprintNameDom.html(" last sprint is "+lastSprint.name+" ;-) "),$el.find(".delete-sprint").addClass("hidden"),$el.find(".title").text("New sprint"),$el.find(".button-green").text("Create"),lightboxService.open($el),$el.find(".sprint-name").focus(),$el.find(".last-sprint-name").removeClass("disappear")}),$scope.$on("sprintform:edit",function(ctx,sprint){return createSprint=!1,$scope.$apply(function(){return $scope.sprint=sprint,$scope.sprint.estimated_start=moment($scope.sprint.estimated_start).format("DD MMM YYYY"),$scope.sprint.estimated_finish=moment($scope.sprint.estimated_finish).format("DD MMM YYYY")}),$el.find(".delete-sprint").removeClass("hidden"),$el.find(".title").text("Edit sprint"),$el.find(".button-green").text("Save"),lightboxService.open($el),$el.find(".sprint-name").focus().select(),$el.find(".last-sprint-name").addClass("disappear")}),$el.on("keyup",".sprint-name",function(){return $el.find(".sprint-name").val().length>0||hasErrors?$el.find(".last-sprint-name").addClass("disappear"):$el.find(".last-sprint-name").removeClass("disappear")}),submitButton=$el.find(".submit-button"),$el.on("submit","form",submit),$el.on("click",".delete-sprint .icon-delete",function(event){return event.preventDefault(),remove()}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgLbCreateEditSprint",["$tgRepo","$tgConfirm","$tgResources","$rootScope","lightboxService","$tgLoading",CreateEditSprint])}.call(this),function(){var BacklogController,BacklogDirective,TgBacklogProgressBarDirective,UsPointsDirective,UsRolePointsSelectorDirective,bindMethods,bindOnce,groupBy,mixOf,module,scopeDefer,taiga,tgBacklogGraphDirective,timeout,toggleText,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,mixOf=this.taiga.mixOf,toggleText=this.taiga.toggleText,scopeDefer=this.taiga.scopeDefer,bindOnce=this.taiga.bindOnce,groupBy=this.taiga.groupBy,timeout=this.taiga.timeout,bindMethods=this.taiga.bindMethods,module=angular.module("taigaBacklog"),BacklogController=function(superClass){function BacklogController(scope,rootscope,repo,confirm,rs,params1,q,location,appTitle,navUrls,events,analytics,tgLoader){var promise;this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.confirm=confirm,this.rs=rs,this.params=params1,this.q=q,this.location=location,this.appTitle=appTitle,this.navUrls=navUrls,this.events=events,this.analytics=analytics,bindMethods(this),this.scope.sectionName="Backlog",this.showTags=!1,this.activeFilters=!1,this.initializeEventHandlers(),promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.appTitle.set("Backlog - "+_this.scope.project.name),_this.rs.userstories.getShowTags(_this.scope.projectId)?(_this.showTags=!0,_this.scope.$broadcast("showTags",_this.showTags)):void 0}}(this)),promise.then(null,this.onInitialDataError.bind(this)),promise["finally"](tgLoader.pageLoaded)}return extend(BacklogController,superClass),BacklogController.$inject=["$scope","$rootScope","$tgRepo","$tgConfirm","$tgResources","$routeParams","$q","$tgLocation","$appTitle","$tgNavUrls","$tgEvents","$tgAnalytics","tgLoader"],BacklogController.prototype.initializeEventHandlers=function(){return this.scope.$on("usform:bulk:success",function(_this){return function(){return _this.loadUserstories(),_this.loadProjectStats(),_this.analytics.trackEvent("userstory","create","bulk create userstory on backlog",1)}}(this)),this.scope.$on("sprintform:create:success",function(_this){return function(){return _this.loadSprints(),_this.loadProjectStats(),_this.analytics.trackEvent("sprint","create","create sprint on backlog",1)}}(this)),this.scope.$on("usform:new:success",function(_this){return function(){return _this.loadUserstories(),_this.loadProjectStats(),_this.analytics.trackEvent("userstory","create","create userstory on backlog",1) -}}(this)),this.scope.$on("sprintform:edit:success",function(_this){return function(){return _this.loadProjectStats()}}(this)),this.scope.$on("sprintform:remove:success",function(_this){return function(){return _this.loadSprints(),_this.loadProjectStats(),_this.loadUserstories()}}(this)),this.scope.$on("usform:edit:success",function(_this){return function(){return _this.loadUserstories()}}(this)),this.scope.$on("sprint:us:move",this.moveUs),this.scope.$on("sprint:us:moved",this.loadSprints),this.scope.$on("sprint:us:moved",this.loadProjectStats),this.scope.$on("backlog:load-closed-sprints",this.loadClosedSprints),this.scope.$on("backlog:unload-closed-sprints",this.unloadClosedSprints)},BacklogController.prototype.initializeSubscription=function(){var routingKey1,routingKey2;return routingKey1="changes.project."+this.scope.projectId+".userstories",this.events.subscribe(this.scope,routingKey1,function(_this){return function(){return _this.loadUserstories(),_this.loadSprints()}}(this)),routingKey2="changes.project."+this.scope.projectId+".milestones",this.events.subscribe(this.scope,routingKey2,function(_this){return function(){return _this.loadSprints()}}(this))},BacklogController.prototype.toggleShowTags=function(){return this.scope.$apply(function(_this){return function(){return _this.showTags=!_this.showTags,_this.rs.userstories.storeShowTags(_this.scope.projectId,_this.showTags)}}(this))},BacklogController.prototype.toggleActiveFilters=function(){return this.activeFilters=!this.activeFilters},BacklogController.prototype.loadProjectStats=function(){return this.rs.projects.stats(this.scope.projectId).then(function(_this){return function(stats){return _this.scope.stats=stats,_this.scope.stats.completedPercentage=stats.total_points?Math.round(100*stats.closed_points/stats.total_points):0,stats}}(this))},BacklogController.prototype.refreshTagsColors=function(){return this.rs.projects.tagsColors(this.scope.projectId).then(function(_this){return function(tags_colors){return _this.scope.project.tags_colors=tags_colors}}(this))},BacklogController.prototype.unloadClosedSprints=function(){return this.scope.$apply(function(_this){return function(){return _this.scope.closedSprints=[],_this.rootscope.$broadcast("closed-sprints:reloaded",[])}}(this))},BacklogController.prototype.loadClosedSprints=function(){var params;return params={closed:!0},this.rs.sprints.list(this.scope.projectId,params).then(function(_this){return function(sprints){var j,len,sprint;for(j=0,len=sprints.length;len>j;j++)sprint=sprints[j],sprint.user_stories=_.sortBy(sprint.user_stories,"sprint_order");return _this.scope.closedSprints=sprints,_this.rootscope.$broadcast("closed-sprints:reloaded",sprints),sprints}}(this))},BacklogController.prototype.loadSprints=function(){var params;return params={closed:!1},this.rs.sprints.list(this.scope.projectId,params).then(function(_this){return function(sprints){var j,len,sprint;for(j=0,len=sprints.length;len>j;j++)sprint=sprints[j],sprint.user_stories=_.sortBy(sprint.user_stories,"sprint_order");return _this.scope.sprints=sprints,_this.scope.openSprints=_.filter(sprints,function(sprint){return!sprint.closed}).reverse(),_this.scope.closedSprints||(_this.scope.closedSprints=[]),_this.scope.sprintsCounter=sprints.length,_this.scope.sprintsById=groupBy(sprints,function(x){return x.id}),_this.rootscope.$broadcast("sprints:loaded",sprints),sprints}}(this))},BacklogController.prototype.resetFilters=function(){var selectedStatuses,selectedTags;return selectedTags=_.filter(this.scope.filters.tags,"selected"),selectedStatuses=_.filter(this.scope.filters.statuses,"selected"),this.scope.filtersQ="",_.each([selectedTags,selectedStatuses],function(_this){return function(filterGrp){return _.each(filterGrp,function(item){var filter,filters;return filters=_this.scope.filters[item.type],filter=_.find(filters,{id:taiga.toString(item.id)}),filter.selected=!1,_this.unselectFilter(item.type,item.id)})}}(this)),this.loadUserstories()},BacklogController.prototype.loadUserstories=function(){var promise;return this.scope.httpParams=this.getUrlFilters(),this.rs.userstories.storeQueryParams(this.scope.projectId,this.scope.httpParams),promise=this.q.all([this.refreshTagsColors(),this.rs.userstories.listUnassigned(this.scope.projectId,this.scope.httpParams)]),promise.then(function(_this){return function(data){var userstories;return userstories=data[1],_this.scope.userstories=_.sortBy(userstories,"backlog_order"),_this.setSearchDataFilters(),_this.filterVisibleUserstories(),_this.generateFilters(),_this.rootscope.$broadcast("filters:loaded",_this.scope.filters),scopeDefer(_this.scope,function(){return _this.scope.$broadcast("userstories:loaded")}),userstories}}(this))},BacklogController.prototype.loadBacklog=function(){return this.q.all([this.loadProjectStats(),this.loadSprints(),this.loadUserstories()])},BacklogController.prototype.loadProject=function(){return this.rs.projects.getBySlug(this.params.pslug).then(function(_this){return function(project){return project.is_backlog_activated||_this.location.path(_this.navUrls.resolve("permission-denied")),_this.scope.projectId=project.id,_this.scope.project=project,_this.scope.totalClosedMilestones=project.total_closed_milestones,_this.scope.$emit("project:loaded",project),_this.scope.points=_.sortBy(project.points,"order"),_this.scope.pointsById=groupBy(project.points,function(x){return x.id}),_this.scope.usStatusById=groupBy(project.us_statuses,function(x){return x.id}),_this.scope.usStatusList=_.sortBy(project.us_statuses,"id"),project}}(this))},BacklogController.prototype.loadInitialData=function(){var promise;return promise=this.loadProject(),promise.then(function(_this){return function(project){return _this.fillUsersAndRoles(project.users,project.roles),_this.initializeSubscription()}}(this)),promise.then(function(_this){return function(){return _this.loadBacklog()}}(this))},BacklogController.prototype.filterVisibleUserstories=function(){return this.scope.visibleUserstories=[],this.scope.visibleUserstories=_.reject(this.scope.userstories,function(_this){return function(us){return _.some(us.tags,function(tag){return _this.isFilterSelected("tag",tag)})}}(this)),this.scope.visibleUserstories=_.filter(this.scope.visibleUserstories,function(_this){return function(us){return _this.searchdata.statuses&&Object.keys(_this.searchdata.statuses).length?_this.isFilterSelected("statuses",taiga.toString(us.status)):!0}}(this))},BacklogController.prototype.prepareBulkUpdateData=function(uses,field){return null==field&&(field="backlog_order"),_.map(uses,function(x){return{us_id:x.id,order:x[field]}})},BacklogController.prototype.resortUserStories=function(uses,field){var index,item,items,j,len;for(null==field&&(field="backlog_order"),items=[],index=j=0,len=uses.length;len>j;index=++j)item=uses[index],item[field]=index,item.isModified()&&items.push(item);return items},BacklogController.prototype.moveUs=function(ctx,usList,newUsIndex,newSprintId){var data,items,j,l,len,len1,len2,m,newSprint,oldSprintId,project,promise,promises,us,userstories;if(oldSprintId=usList[0].milestone,project=usList[0].project,newSprintId===oldSprintId)return items=null,userstories=null,userstories=null===newSprintId?this.scope.userstories:this.scope.sprintsById[newSprintId].user_stories,this.scope.$apply(function(){var args,j,key,len,r,us;for(key=j=0,len=usList.length;len>j;key=++j)us=usList[key],r=userstories.indexOf(us),userstories.splice(r,1);return args=[newUsIndex,0].concat(usList),Array.prototype.splice.apply(userstories,args)}),null===newSprintId?(items=this.resortUserStories(userstories,"backlog_order"),data=this.prepareBulkUpdateData(items,"backlog_order"),this.rs.userstories.bulkUpdateBacklogOrder(project,data).then(function(_this){return function(){var j,len,results,us;for(results=[],j=0,len=usList.length;len>j;j++)us=usList[j],results.push(_this.rootscope.$broadcast("sprint:us:moved",us,oldSprintId,newSprintId));return results}}(this))):(items=this.resortUserStories(userstories,"sprint_order"),data=this.prepareBulkUpdateData(items,"sprint_order"),this.rs.userstories.bulkUpdateSprintOrder(project,data).then(function(_this){return function(){var j,len,results,us;for(results=[],j=0,len=usList.length;len>j;j++)us=usList[j],results.push(_this.rootscope.$broadcast("sprint:us:moved",us,oldSprintId,newSprintId));return results}}(this))),promise;if(null===newSprintId){for(j=0,len=usList.length;len>j;j++)us=usList[j],us.milestone=null;return this.scope.$apply(function(_this){return function(){var args,key,l,len1,r,results,sprint;for(args=[newUsIndex,0].concat(usList),Array.prototype.splice.apply(_this.scope.userstories,args),Array.prototype.splice.apply(_this.scope.visibleUserstories,args),_this.filterVisibleUserstories(),sprint=_this.scope.sprintsById[oldSprintId],results=[],key=l=0,len1=usList.length;len1>l;key=++l)us=usList[key],r=sprint.user_stories.indexOf(us),results.push(sprint.user_stories.splice(r,1));return results}}(this)),promise=this.repo.save(us),promise=promise.then(function(_this){return function(){return items=_this.resortUserStories(_this.scope.userstories,"backlog_order"),data=_this.prepareBulkUpdateData(items,"backlog_order"),_this.rs.userstories.bulkUpdateBacklogOrder(us.project,data).then(function(){return _this.rootscope.$broadcast("sprint:us:moved",us,oldSprintId,newSprintId)})}}(this)),promise.then(null,function(){return console.log("FAIL")}),promise}if(newSprint=this.scope.sprintsById[newSprintId],null===oldSprintId){for(l=0,len1=usList.length;len1>l;l++)us=usList[l],us.milestone=newSprintId;this.scope.$apply(function(_this){return function(){var args,key,len2,m,r,results;for(args=[newUsIndex,0].concat(usList),Array.prototype.splice.apply(newSprint.user_stories,args),results=[],key=m=0,len2=usList.length;len2>m;key=++m)us=usList[key],r=_this.scope.visibleUserstories.indexOf(us),_this.scope.visibleUserstories.splice(r,1),r=_this.scope.userstories.indexOf(us),results.push(_this.scope.userstories.splice(r,1));return results}}(this))}else{for(m=0,len2=usList.length;len2>m;m++)us=usList[m],us.milestone=newSprintId;this.scope.$apply(function(_this){return function(){var args,len3,n,oldSprint,r,results;for(args=[newUsIndex,0].concat(usList),Array.prototype.splice.apply(newSprint.user_stories,args),results=[],n=0,len3=usList.length;len3>n;n++)us=usList[n],oldSprint=_this.scope.sprintsById[oldSprintId],r=oldSprint.user_stories.indexOf(us),results.push(oldSprint.user_stories.splice(r,1));return results}}(this))}return promises=_.map(usList,function(_this){return function(us){return _this.repo.save(us)}}(this)),promise=this.q.all(promises).then(function(_this){return function(){return items=_this.resortUserStories(newSprint.user_stories,"sprint_order"),data=_this.prepareBulkUpdateData(items,"sprint_order"),_this.rs.userstories.bulkUpdateSprintOrder(project,data).then(function(){return _this.rootscope.$broadcast("sprint:us:moved",us,oldSprintId,newSprintId)}),_this.rs.userstories.bulkUpdateBacklogOrder(project,data).then(function(){var len3,n,results;for(results=[],n=0,len3=usList.length;len3>n;n++)us=usList[n],results.push(_this.rootscope.$broadcast("sprint:us:moved",us,oldSprintId,newSprintId));return results})}}(this)),promise.then(null,function(){return console.log("FAIL")}),promise},BacklogController.prototype.isFilterSelected=function(type,id){return null!=this.searchdata[type]&&this.searchdata[type][id]?!0:!1},BacklogController.prototype.setSearchDataFilters=function(){var name,results,urlfilters,val,value;urlfilters=this.getUrlFilters(),urlfilters.q&&(this.scope.filtersQ=this.scope.filtersQ||urlfilters.q),this.searchdata={},results=[];for(name in urlfilters)value=urlfilters[name],null==this.searchdata[name]&&(this.searchdata[name]={}),results.push(function(){var j,len,ref,results1;for(ref=taiga.toString(value).split(","),results1=[],j=0,len=ref.length;len>j;j++)val=ref[j],results1.push(this.searchdata[name][val]=!0);return results1}.call(this));return results},BacklogController.prototype.getUrlFilters=function(){return _.pick(this.location.search(),"statuses","tags","q")},BacklogController.prototype.generateFilters=function(){var plainStatuses,plainTags,selectedStatuses,selectedTags;return this.scope.filters={},plainTags=_.flatten(_.filter(_.map(this.scope.visibleUserstories,"tags"))),plainTags.sort(),this.scope.filters.tags=_.map(_.countBy(plainTags),function(_this){return function(v,k){var obj;return obj={id:k,type:"tags",name:k,color:_this.scope.project.tags_colors[k],count:v},_this.isFilterSelected("tags",obj.id)&&(obj.selected=!0),obj}}(this)),selectedTags=_.filter(this.scope.filters.tags,"selected"),selectedTags=_.map(selectedTags,"name"),plainStatuses=_.map(this.scope.visibleUserstories,"status"),plainStatuses=_.filter(plainStatuses,function(){return function(status){return status?status:void 0}}(this)),this.scope.filters.statuses=_.map(_.countBy(plainStatuses),function(_this){return function(v,k){var obj;return obj={id:k,type:"statuses",name:_this.scope.usStatusById[k].name,color:_this.scope.usStatusById[k].color,count:v},_this.isFilterSelected("statuses",obj.id)&&(obj.selected=!0),obj}}(this)),selectedStatuses=_.filter(this.scope.filters.statuses,"selected"),selectedStatuses=_.map(selectedStatuses,"id"),this.rs.userstories.storeQueryParams(this.scope.projectId,{status:selectedStatuses,tags:selectedTags,project:this.scope.projectId,milestone:null})},BacklogController.prototype.editUserStory=function(us){return this.rootscope.$broadcast("usform:edit",us)},BacklogController.prototype.deleteUserStory=function(us){var message,title;return title="Delete User Story",message=us.subject,this.confirm.askOnDelete(title,message).then(function(_this){return function(finish){var promise;return _this.scope.userstories=_.without(_this.scope.userstories,us),_this.filterVisibleUserstories(),promise=_this.repo.remove(us),promise.then(function(){return finish(),_this.loadBacklog()}),promise.then(null,function(){return finish(!1),_this.confirm.notify("error")})}}(this))},BacklogController.prototype.addNewUs=function(type){switch(type){case"standard":return this.rootscope.$broadcast("usform:new",this.scope.projectId,this.scope.project.default_us_status,this.scope.usStatusList);case"bulk":return this.rootscope.$broadcast("usform:bulk",this.scope.projectId,this.scope.project.default_us_status)}},BacklogController.prototype.addNewSprint=function(){return this.rootscope.$broadcast("sprintform:create",this.scope.projectId)},BacklogController}(mixOf(taiga.Controller,taiga.PageMixin,taiga.FiltersMixin)),module.controller("BacklogController",BacklogController),BacklogDirective=function($repo,$rootscope){var doomLineTemplate,link,linkDoomLine,linkFilters,linkToolbar,showHideFilter,showHideTags;return doomLineTemplate=_.template('
Project Scope [Doomline]
'),linkDoomLine=function($scope,$el){var addDoomLineDom,getUsItems,reloadDoomLine,removeDoomlineDom;return reloadDoomLine=function(){var current_sum,domElement,i,j,len,ref,results,stats,total_points,us;if(null!=$scope.stats){if(removeDoomlineDom(),stats=$scope.stats,total_points=stats.total_points,current_sum=stats.assigned_points,!$scope.visibleUserstories)return;for(ref=$scope.visibleUserstories,results=[],i=j=0,len=ref.length;len>j;i=++j){if(us=ref[i],current_sum+=us.total_points,current_sum>total_points){domElement=$el.find(".backlog-table-body .us-item-row")[i],addDoomLineDom(domElement);break}results.push(void 0)}return results}},removeDoomlineDom=function(){return $el.find(".doom-line").remove()},addDoomLineDom=function(element){return $(element).before(doomLineTemplate({}))},getUsItems=function(){var rowElements;return rowElements=$el.find(".backlog-table-body .us-item-row"),_.map(rowElements,function(x){return angular.element(x)})},$scope.$on("userstories:loaded",reloadDoomLine),$scope.$watch("stats",reloadDoomLine)},linkToolbar=function($scope,$el,$attrs,$ctrl){var moveToCurrentSprint;return moveToCurrentSprint=function(selectedUss){var extraPoints,totalExtraPoints,ussCurrent;return ussCurrent=_($scope.userstories),$scope.userstories=ussCurrent.without.apply(ussCurrent,selectedUss).value(),extraPoints=_.map(selectedUss,function(v){return v.total_points}),totalExtraPoints=_.reduce(extraPoints,function(acc,num){return acc+num}),$scope.sprints[0].user_stories=_.union($scope.sprints[0].user_stories,selectedUss),$scope.sprints[0].total_points+=totalExtraPoints,$ctrl.filterVisibleUserstories(),$repo.saveAll(selectedUss).then(function(){return $ctrl.loadSprints(),$ctrl.loadProjectStats()})},$el.on("change",".backlog-table-body .user-stories input:checkbox",function(event){var moveToCurrentSprintDom,selectedUsDom,target;return target=angular.element(event.currentTarget),moveToCurrentSprintDom=$el.find("#move-to-current-sprint"),selectedUsDom=$el.find(".backlog-table-body .user-stories input:checkbox:checked"),selectedUsDom.length>0&&$scope.sprints.length>0?moveToCurrentSprintDom.show():moveToCurrentSprintDom.hide(),target.closest(".us-item-row").toggleClass("ui-multisortable-multiple")}),$el.on("click","#move-to-current-sprint",function(){return function(){var ussDom,ussToMove;return ussDom=$el.find(".backlog-table-body .user-stories input:checkbox:checked"),ussToMove=_.map(ussDom,function(item){var itemScope;return item=$(item).closest(".tg-scope"),itemScope=item.scope(),itemScope.us.milestone=$scope.sprints[0].id,itemScope.us}),$scope.$apply(_.partial(moveToCurrentSprint,ussToMove))}}(this)),$el.on("click","#show-tags",function(event){return event.preventDefault(),$ctrl.toggleShowTags(),showHideTags($ctrl)})},showHideTags=function($ctrl){var elm;return elm=angular.element("#show-tags"),$ctrl.showTags?(elm.addClass("active"),elm.find(".text").text("Hide Tags")):(elm.removeClass("active"),elm.find(".text").text("Show Tags"))},showHideFilter=function($scope,$el,$ctrl){var sidebar,target;return sidebar=$el.find("sidebar.filters-bar"),sidebar.one("transitionend",function(){return timeout(150,function(){return $rootscope.$broadcast("resize"),$(".burndown").css("visibility","visible")})}),target=angular.element("#show-filters-button"),$(".burndown").css("visibility","hidden"),sidebar.toggleClass("active"),target.toggleClass("active"),toggleText(target.find(".text"),["Remove Filters","Show Filters"]),sidebar.hasClass("active")||$ctrl.resetFilters(),$ctrl.toggleActiveFilters()},linkFilters=function($scope,$el,$attrs,$ctrl){return $scope.filtersSearch={},$el.on("click","#show-filters-button",function(event){return event.preventDefault(),$scope.$apply(function(){return showHideFilter($scope,$el,$ctrl)})})},link=function($scope,$el,$attrs){var $ctrl,filters;return $ctrl=$el.controller(),linkToolbar($scope,$el,$attrs,$ctrl),linkFilters($scope,$el,$attrs,$ctrl),linkDoomLine($scope,$el,$attrs,$ctrl),$el.find(".backlog-table-body").disableSelection(),filters=$ctrl.getUrlFilters(),(filters.statuses||filters.tags||filters.q)&&showHideFilter($scope,$el,$ctrl),$scope.$on("showTags",function(){return showHideTags($ctrl)}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgBacklog",["$tgRepo","$rootScope",BacklogDirective]),UsRolePointsSelectorDirective=function($rootscope,$template){var link,selectionTemplate;return selectionTemplate=$template.get("backlog/us-role-points-popover.html",!0),link=function($scope,$el){return bindOnce($scope,"project",function(project){var numberOfRoles,roles;return roles=_.filter(project.roles,"computable"),numberOfRoles=_.size(roles),numberOfRoles>1?$el.append(selectionTemplate({roles:roles})):($el.find(".icon-arrow-bottom").remove(),$el.find(".header-points").addClass("not-clickable"))}),$scope.$on("uspoints:select",function(ctx,roleId,roleName){return $el.find(".popover").popover().close(),$el.find(".header-points").html(roleName+"/Total")}),$scope.$on("uspoints:clear-selection",function(){return $el.find(".popover").popover().close(),$el.find(".header-points").text("Points")}),$el.on("click",function(event){var target;return target=angular.element(event.target),(target.is("span")||target.is("div"))&&event.stopPropagation(),$el.find(".popover").popover().open()}),$el.on("click",".clear-selection",function(event){return event.preventDefault(),event.stopPropagation(),$rootscope.$broadcast("uspoints:clear-selection")}),$el.on("click",".role",function(event){var rolScope,target;return event.preventDefault(),event.stopPropagation(),target=angular.element(event.currentTarget),rolScope=target.scope(),$rootscope.$broadcast("uspoints:select",target.data("role-id"),target.text())}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgUsRolePointsSelector",["$rootScope","$tgTemplate",UsRolePointsSelectorDirective]),UsPointsDirective=function($tgEstimationsService,$repo,$tgTemplate){var link,rolesTemplate;return rolesTemplate=$tgTemplate.get("common/estimation/us-points-roles-popover.html",!0),link=function($scope,$el,$attrs){var $ctrl,bindClickElements,estimationProcess,filteringRoleId,renderRolesSelector,selectedRoleId,updatingSelectedRoleId;return $ctrl=$el.controller(),updatingSelectedRoleId=null,selectedRoleId=null,filteringRoleId=null,estimationProcess=null,$scope.$on("uspoints:select",function(ctx,roleId){var us;return us=$scope.$eval($attrs.tgBacklogUsPoints),selectedRoleId=roleId,estimationProcess.render()}),$scope.$on("uspoints:clear-selection",function(){var us;return us=$scope.$eval($attrs.tgBacklogUsPoints),selectedRoleId=null,estimationProcess.render()}),$scope.$watch($attrs.tgBacklogUsPoints,function(us){var roles;return us?(estimationProcess=$tgEstimationsService.create($el,us,$scope.project),roles=estimationProcess.calculateRoles(),0===roles.length?($el.find(".icon-arrow-bottom").remove(),$el.find("a.us-points").addClass("not-clickable")):1===roles.length&&(selectedRoleId=_.keys(us.points)[0]),estimationProcess.isEditable&&bindClickElements(),estimationProcess.onSelectedPointForRole=function(roleId,pointId){return this.save(roleId,pointId).then(function(){return $ctrl.loadProjectStats()})},estimationProcess.render=function(){var ctx,html,mainTemplate,pointId,pointObj,template,text,title,totalPoints;return totalPoints=this.calculateTotalPoints(),null==selectedRoleId||1===roles.length?(text=totalPoints,title=totalPoints):(pointId=this.us.points[selectedRoleId],pointObj=this.pointsById[pointId],text=pointObj.name+" / "+totalPoints+"",title=pointObj.name+" / "+totalPoints),ctx={totalPoints:totalPoints,roles:this.calculateRoles(),editable:this.isEditable,text:text,title:title},mainTemplate="common/estimation/us-estimation-total.html",template=$tgTemplate.get(mainTemplate,!0),html=template(ctx),this.$el.html(html)},estimationProcess.render()):void 0}),renderRolesSelector=function(){var html,roles;return roles=estimationProcess.calculateRoles(),html=rolesTemplate({roles:roles}),$el.append(html),$el.find(".pop-role").popover().open(function(){return $(this).remove()})},bindClickElements=function(){return $el.on("click","a.us-points span",function(event){var us;return event.preventDefault(),event.stopPropagation(),us=$scope.$eval($attrs.tgBacklogUsPoints),updatingSelectedRoleId=selectedRoleId,null!=selectedRoleId?estimationProcess.renderPointsSelector(selectedRoleId):renderRolesSelector()}),$el.on("click",".role",function(event){var popRolesDom,target,us;return event.preventDefault(),event.stopPropagation(),target=angular.element(event.currentTarget),us=$scope.$eval($attrs.tgBacklogUsPoints),updatingSelectedRoleId=target.data("role-id"),popRolesDom=$el.find(".pop-role"),popRolesDom.find("a").removeClass("active"),popRolesDom.find("a[data-role-id='"+updatingSelectedRoleId+"']").addClass("active"),estimationProcess.renderPointsSelector(updatingSelectedRoleId)})},$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgBacklogUsPoints",["$tgEstimationsService","$tgRepo","$tgTemplate",UsPointsDirective]),tgBacklogGraphDirective=function(){var link,redrawChart;return redrawChart=function(element,dataToDraw){var client_increment_line,colors,data,evolution_line,milestonesRange,optimal_line,options,results,team_increment_line,width,zero_line;return width=element.width(),element.height(width/6),milestonesRange=function(){results=[];for(var j=0,ref=dataToDraw.milestones.length-1;ref>=0?ref>=j:j>=ref;ref>=0?j++:j--)results.push(j);return results}.apply(this),data=[],zero_line=_.map(dataToDraw.milestones,function(){return 0}),data.push({data:_.zip(milestonesRange,zero_line),lines:{fillColor:"rgba(0,0,0,0)"},points:{show:!1}}),optimal_line=_.map(dataToDraw.milestones,function(ml){return ml.optimal}),data.push({data:_.zip(milestonesRange,optimal_line),lines:{fillColor:"rgba(120,120,120,0.2)"}}),evolution_line=_.filter(_.map(dataToDraw.milestones,function(ml){return ml.evolution}),function(evolution){return null!=evolution}),data.push({data:_.zip(milestonesRange,evolution_line),lines:{fillColor:"rgba(102,153,51,0.3)"}}),team_increment_line=_.map(dataToDraw.milestones,function(ml){return-ml["team-increment"]}),data.push({data:_.zip(milestonesRange,team_increment_line),lines:{fillColor:"rgba(153,51,51,0.3)"}}),client_increment_line=_.map(dataToDraw.milestones,function(ml){return-ml["team-increment"]-ml["client-increment"]}),data.push({data:_.zip(milestonesRange,client_increment_line),lines:{fillColor:"rgba(255,51,51,0.3)"}}),colors=["rgba(0,0,0,1)","rgba(120,120,120,0.2)","rgba(102,153,51,1)","rgba(153,51,51,1)","rgba(255,51,51,1)"],options={grid:{borderWidth:{top:0,right:1,left:0,bottom:0},borderColor:"#ccc",hoverable:!0},xaxis:{ticks:dataToDraw.milestones.length,axisLabel:"Sprints",axisLabelUseCanvas:!0,axisLabelFontSizePixels:14,axisLabelFontFamily:"Verdana, Arial, Helvetica, Tahoma, sans-serif",axisLabelPadding:15,tickFormatter:function(){return""}},series:{shadowSize:0,lines:{show:!0,fill:!0},points:{show:!0,fill:!0,radius:4,lineWidth:2}},colors:colors,tooltip:!0,tooltipOpts:{content:function(label,xval,yval,flotItem){return 1===flotItem.seriesIndex?"Optimal pending points for sprint "+xval+" should be "+yval:2===flotItem.seriesIndex?"Real pending points for sprint "+xval+" is "+yval:3===flotItem.seriesIndex?"Incremented points by team requirements for sprint "+xval+" is "+Math.abs(yval):"Incremented points by client requirements for sprint "+xval+" is "+Math.abs(yval)}}},element.empty(),element.plot(data,options).data("plot")},link=function($scope,$el){var element;return element=angular.element($el),$scope.$watch("stats",function(){return null!=$scope.stats?(redrawChart(element,$scope.stats),$scope.$on("resize",function(){return redrawChart(element,$scope.stats)})):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgGmBacklogGraph",tgBacklogGraphDirective),TgBacklogProgressBarDirective=function($template){var adjustPercentaje,link,render,template;return template=$template.get("backlog/progress-bar.html",!0),render=function(el,projectPointsPercentaje,closedPointsPercentaje){return el.html(template({projectPointsPercentaje:projectPointsPercentaje,closedPointsPercentaje:closedPointsPercentaje}))},adjustPercentaje=function(percentage){var adjusted;return adjusted=_.max([0,percentage]),adjusted=_.min([100,adjusted]),Math.round(adjusted)},link=function($scope,$el,$attrs){var element;return element=angular.element($el),$scope.$watch($attrs.tgBacklogProgressBar,function(stats){var closedPoints,closedPointsPercentaje,definedPoints,projectPointsPercentaje,totalPoints;return null!=stats?(totalPoints=stats.total_points,definedPoints=stats.defined_points,closedPoints=stats.closed_points,definedPoints>totalPoints?(projectPointsPercentaje=100*totalPoints/definedPoints,closedPointsPercentaje=100*closedPoints/definedPoints):(projectPointsPercentaje=100,closedPointsPercentaje=100*closedPoints/totalPoints),projectPointsPercentaje=adjustPercentaje(projectPointsPercentaje-3),closedPointsPercentaje=adjustPercentaje(closedPointsPercentaje-3),render($el,projectPointsPercentaje,closedPointsPercentaje)):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgBacklogProgressBar",["$tgTemplate",TgBacklogProgressBarDirective])}.call(this),function(){var BacklogEmptySortableDirective,BacklogSortableDirective,SprintSortableDirective,bindOnce,deleteElement,groupBy,mixOf,module,scopeDefer,taiga,toggleText;taiga=this.taiga,mixOf=this.taiga.mixOf,toggleText=this.taiga.toggleText,scopeDefer=this.taiga.scopeDefer,bindOnce=this.taiga.bindOnce,groupBy=this.taiga.groupBy,module=angular.module("taigaBacklog"),deleteElement=function(el){return el.scope().$destroy(),el.off(),el.remove()},BacklogSortableDirective=function($repo,$rs,$rootscope,$tgConfirm){var link;return link=function($scope,$el){var getUsIndex;return getUsIndex=function(){return function(us){return $(us).index(".backlog-table-body .row")}}(this),bindOnce($scope,"project",function(project){var filterError;if(project.my_permissions.indexOf("modify_us")>-1)return filterError=function(){var text;return text=$translate.instant("BACKLOG.SORTABLE_FILTER_ERROR"),$tgConfirm.notify("error",text)},$el.sortable({items:".us-item-row",cancel:".popover",connectWith:".sprint",containment:".wrapper",dropOnEmpty:!0,placeholder:"row us-item-row us-item-drag sortable-placeholder",scroll:!0,tolerance:"pointer",revert:!1,cursorAt:{right:15},stop:function(){return $el.hasClass("active-filters")?($el.sortable("cancel"),filterError()):void 0}}),$el.on("multiplesortreceive",function(event,ui){var itemIndex,itemUs;return $el.hasClass("active-filters")?(ui.source.sortable("cancel"),void filterError()):(itemUs=ui.item.scope().us,itemIndex=getUsIndex(ui.item),deleteElement(ui.item),$scope.$emit("sprint:us:move",[itemUs],itemIndex,null),ui.item.find("a").removeClass("noclick"))}),$el.on("multiplesortstop",function(event,ui){var index,items,us;if(0!==$(ui.items[0]).parent().length&&!$el.hasClass("active-filters"))return items=_.sortBy(ui.items,function(item){return $(item).index()}),index=_.min(_.map(items,function(item){return getUsIndex(item)})),us=_.map(items,function(item){var itemUs;return item=$(item),itemUs=item.scope().us,setTimeout(function(){return function(){return item.find("a").removeClass("noclick")}}(this),300),itemUs}),$scope.$emit("sprint:us:move",us,index,null)}),$el.on("sortstart",function(event,ui){return ui.item.find("a").addClass("noclick")})}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},BacklogEmptySortableDirective=function(){var link;return link=function($scope,$el){return bindOnce($scope,"project",function(project){return project.my_permissions.indexOf("modify_us")>-1?($el.sortable({dropOnEmpty:!0}),$el.on("sortreceive",function(event,ui){var itemIndex,itemUs;return itemUs=ui.item.scope().us,itemIndex=ui.item.index(),deleteElement(ui.item),$scope.$emit("sprint:us:move",[itemUs],itemIndex,null),ui.item.find("a").removeClass("noclick")})):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},SprintSortableDirective=function(){var link;return link=function($scope,$el){return bindOnce($scope,"project",function(project){return project.my_permissions.indexOf("modify_us")>-1?($el.sortable({scroll:!0,dropOnEmpty:!0,items:".sprint-table .milestone-us-item-row",connectWith:".sprint,.backlog-table-body,.empty-backlog"}),$el.on("multiplesortreceive",function(event,ui){var index,items,us;return items=_.sortBy(ui.items,function(item){return $(item).index()}),index=_.min(_.map(items,function(item){return $(item).index()})),us=_.map(items,function(item){var itemUs;return item=$(item),itemUs=item.scope().us,deleteElement(item),itemUs}),$scope.$emit("sprint:us:move",us,index,$scope.sprint.id)}),$el.on("multiplesortstop",function(event,ui){var itemIndex,itemUs;if(0!==ui.item.parent().length)return itemUs=ui.item.scope().us,itemIndex=ui.item.index(),setTimeout(function(){return function(){return ui.item.find("a").removeClass("noclick")}}(this),300),$scope.$emit("sprint:us:move",[itemUs],itemIndex,$scope.sprint.id) -}),$el.on("sortstart",function(event,ui){return ui.item.find("a").addClass("noclick")})):void 0})},{link:link}},module.directive("tgBacklogSortable",["$tgRepo","$tgResources","$rootScope","$tgConfirm",BacklogSortableDirective]),module.directive("tgBacklogEmptySortable",["$tgRepo","$tgResources","$rootScope",BacklogEmptySortableDirective]),module.directive("tgSprintSortable",["$tgRepo","$tgResources","$rootScope",SprintSortableDirective])}.call(this),function(){var BacklogSprintDirective,BacklogSprintHeaderDirective,ToggleExcludeClosedSprintsVisualization,module,taiga;taiga=this.taiga,module=angular.module("taigaBacklog"),BacklogSprintDirective=function($repo,$rootscope){var link,refreshSprintTableHeight,slideOptions,sprintTableMinHeight,toggleSprint;return sprintTableMinHeight=50,slideOptions={duration:500,easing:"linear"},refreshSprintTableHeight=function(){return function(sprintTable){return sprintTable.find(".row").length?sprintTable.css("height","auto"):sprintTable.css("height",sprintTableMinHeight)}}(this),toggleSprint=function(){return function($el){var sprintArrow,sprintTable;return sprintTable=$el.find(".sprint-table"),sprintArrow=$el.find(".icon-arrow-up"),sprintArrow.toggleClass("active"),sprintTable.toggleClass("open"),refreshSprintTableHeight(sprintTable)}}(this),link=function($scope,$el,$attrs){return $scope.$watch($attrs.tgBacklogSprint,function(sprint){return sprint=$scope.$eval($attrs.tgBacklogSprint),sprint.closed?$el.addClass("sprint-closed"):toggleSprint($el)}),$el.on("click",".sprint-name > .icon-arrow-up",function(event){return event.preventDefault(),toggleSprint($el),$el.find(".sprint-table").slideToggle(slideOptions)}),$el.on("click",".sprint-name > .icon-edit",function(event){var sprint;return event.preventDefault(),sprint=$scope.$eval($attrs.tgBacklogSprint),$rootscope.$broadcast("sprintform:edit",sprint)}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgBacklogSprint",["$tgRepo","$rootScope",BacklogSprintDirective]),BacklogSprintHeaderDirective=function($navUrls,$template){var link,template;return template=$template.get("backlog/sprint-header.html",!0),link=function($scope,$el,$attrs,$model){var isEditable,isVisible,render;return isEditable=function(){return-1!==$scope.project.my_permissions.indexOf("modify_milestone")},isVisible=function(){return-1!==$scope.project.my_permissions.indexOf("view_milestones")},render=function(sprint){var ctx,estimatedDateRange,finish,start,taskboardUrl;return taskboardUrl=$navUrls.resolve("project-taskboard",{project:$scope.project.slug,sprint:sprint.slug}),start=moment(sprint.estimated_start).format("DD MMM YYYY"),finish=moment(sprint.estimated_finish).format("DD MMM YYYY"),estimatedDateRange=start+"-"+finish,ctx={name:sprint.name,taskboardUrl:taskboardUrl,estimatedDateRange:estimatedDateRange,closedPoints:sprint.closed_points||0,totalPoints:sprint.total_points||0,isVisible:isVisible(),isEditable:isEditable()},$el.html(template(ctx))},$scope.$watch($attrs.ngModel,function(sprint){return render(sprint)}),$scope.$on("sprintform:edit:success",function(){return render($model.$modelValue)}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgBacklogSprintHeader",["$tgNavUrls","$tgTemplate",BacklogSprintHeaderDirective]),ToggleExcludeClosedSprintsVisualization=function($rootscope,$loading){var excludeClosedSprints,link;return excludeClosedSprints=!0,link=function($scope,$el){var loadingElm;return loadingElm=$("
"),$el.after(loadingElm),$el.on("click",function(event){return event.preventDefault(),excludeClosedSprints=!excludeClosedSprints,$loading.start(loadingElm),$rootscope.$broadcast(excludeClosedSprints?"backlog:unload-closed-sprints":"backlog:load-closed-sprints")}),$scope.$on("$destroy",function(){return $el.off()}),$scope.$on("closed-sprints:reloaded",function(){return function(ctx,sprints){var text;return $loading.finish(loadingElm),text=sprints.length>0?"Hide closed sprints":"Show closed sprints",$el.find(".text").text(text)}}(this))},{link:link}},module.directive("tgBacklogToggleClosedSprintsVisualization",["$rootScope","$tgLoading",ToggleExcludeClosedSprintsVisualization])}.call(this),function(){var SprintGraphDirective,bindOnce,groupBy,mixOf,module,scopeDefer,taiga,timeout,toggleText;taiga=this.taiga,mixOf=this.taiga.mixOf,toggleText=this.taiga.toggleText,scopeDefer=this.taiga.scopeDefer,bindOnce=this.taiga.bindOnce,groupBy=this.taiga.groupBy,timeout=this.taiga.timeout,module=angular.module("taigaTaskboard"),SprintGraphDirective=function(){var link,redrawChart;return redrawChart=function(element,dataToDraw){var data,days,options,width;return width=element.width(),element.height(240),days=_.map(dataToDraw,function(x){return moment(x.day)}),data=[],data.unshift({data:_.zip(days,_.map(dataToDraw,function(d){return d.optimal_points})),lines:{fillColor:"rgba(120,120,120,0.2)"}}),data.unshift({data:_.zip(days,_.map(dataToDraw,function(d){return d.open_points})),lines:{fillColor:"rgba(102,153,51,0.3)"}}),options={grid:{borderWidth:{top:0,right:1,left:0,bottom:0},borderColor:"#ccc",hoverable:!0},xaxis:{tickSize:[1,"day"],min:days[0],max:_.last(days),mode:"time",daysNames:days,axisLabel:"Day",axisLabelUseCanvas:!0,axisLabelFontSizePixels:12,axisLabelFontFamily:"Verdana, Arial, Helvetica, Tahoma, sans-serif",axisLabelPadding:5},yaxis:{min:0},series:{shadowSize:0,lines:{show:!0,fill:!0},points:{show:!0,fill:!0,radius:4,lineWidth:2}},colors:["rgba(102,153,51,1)","rgba(120,120,120,0.2)"],tooltip:!0,tooltipOpts:{content:function(label,xval,yval,flotItem){var formattedDate,roundedValue;return formattedDate=moment(xval).format("DD MMM"),roundedValue=Math.round(yval),1===flotItem.seriesIndex?"Optimal pending points for day "+formattedDate+" should be "+roundedValue:"Real pending points for day "+formattedDate+" is "+roundedValue}}},element.empty(),element.plot(data,options).data("plot")},link=function($scope,$el){var element;return element=angular.element($el),$scope.$on("resize",function(){return $scope.stats?redrawChart(element,$scope.stats.days):void 0}),$scope.$on("taskboard:graph:toggle-visibility",function(){return $el.parent().toggleClass("open"),timeout(100,function(){return $scope.stats?redrawChart(element,$scope.stats.days):void 0})}),$scope.$watch("stats",function(){return null!=$scope.stats?redrawChart(element,$scope.stats.days):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgSprintGraph",SprintGraphDirective)}.call(this),function(){var CreateBulkTasksDirective,CreateEditTaskDirective,bindOnce,debounce,module,taiga;taiga=this.taiga,bindOnce=this.taiga.bindOnce,debounce=this.taiga.debounce,CreateEditTaskDirective=function($repo,$model,$rs,$rootscope,$loading,lightboxService){var link;return link=function($scope,$el){var submit,submitButton;return $scope.isNew=!0,$scope.$on("taskform:new",function(ctx,sprintId,usId){return $scope.task={project:$scope.projectId,milestone:sprintId,user_story:usId,is_archived:!1,status:$scope.project.default_task_status,assigned_to:null,tags:[]},$scope.isNew=!0,$el.find(".button-green").html("Create"),$el.find(".title").html("New task "),$el.find(".tag-input").val(""),lightboxService.open($el)}),$scope.$on("taskform:edit",function(ctx,task){return $scope.task=task,$scope.isNew=!1,$el.find(".button-green").html("Save"),$el.find(".title").html("Edit task "),$el.find(".tag-input").val(""),lightboxService.open($el)}),submitButton=$el.find(".submit-button"),submit=debounce(2e3,function(){return function(event){var broadcastEvent,form,promise;return event.preventDefault(),form=$el.find("form").checksley(),form.validate()?($scope.isNew?(promise=$repo.create("tasks",$scope.task),broadcastEvent="taskform:new:success"):(promise=$repo.save($scope.task),broadcastEvent="taskform:edit:success"),$loading.start(submitButton),promise.then(function(data){return $loading.finish(submitButton),lightboxService.close($el),$rootscope.$broadcast(broadcastEvent,data)})):void 0}}(this)),$el.on("submit","form",submit),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},CreateBulkTasksDirective=function($repo,$rs,$rootscope,$loading,lightboxService){var link;return link=function($scope,$el){var submit,submitButton;return $scope.form={data:"",usId:null},submit=debounce(2e3,function(){return function(event){var data,form,projectId,promise,sprintId,usId;return event.preventDefault(),form=$el.find("form").checksley(),form.validate()?($loading.start(submitButton),data=$scope.form.data,projectId=$scope.projectId,sprintId=$scope.form.sprintId,usId=$scope.form.usId,promise=$rs.tasks.bulkCreate(projectId,sprintId,usId,data),promise.then(function(result){return $loading.finish(submitButton),$rootscope.$broadcast("taskform:bulk:success",result),lightboxService.close($el)}),promise.then(null,function(){return $loading.finish(submitButton),console.log("FAIL")})):void 0}}(this)),$scope.$on("taskform:bulk",function(ctx,sprintId,usId){return lightboxService.open($el),$scope.form={data:"",sprintId:sprintId,usId:usId}}),submitButton=$el.find(".submit-button"),$el.on("submit","form",submit),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module=angular.module("taigaTaskboard"),module.directive("tgLbCreateEditTask",["$tgRepo","$tgModel","$tgResources","$rootScope","$tgLoading","lightboxService",CreateEditTaskDirective]),module.directive("tgLbCreateBulkTasks",["$tgRepo","$tgResources","$rootScope","$tgLoading","lightboxService",CreateBulkTasksDirective])}.call(this),function(){var TaskboardController,TaskboardDirective,TaskboardSquishColumnDirective,TaskboardTaskDirective,TaskboardUserDirective,bindMethods,bindOnce,groupBy,mixOf,module,scopeDefer,taiga,timeout,toggleText,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,toggleText=this.taiga.toggleText,mixOf=this.taiga.mixOf,groupBy=this.taiga.groupBy,bindOnce=this.taiga.bindOnce,scopeDefer=this.taiga.scopeDefer,timeout=this.taiga.timeout,bindMethods=this.taiga.bindMethods,module=angular.module("taigaTaskboard"),TaskboardController=function(superClass){function TaskboardController(scope,rootscope,repo,confirm,rs1,params1,q,appTitle,location,navUrls,events,analytics,tgLoader){var promise;this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.confirm=confirm,this.rs=rs1,this.params=params1,this.q=q,this.appTitle=appTitle,this.location=location,this.navUrls=navUrls,this.events=events,this.analytics=analytics,bindMethods(this),this.scope.sectionName="Taskboard",this.initializeEventHandlers(),promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.appTitle.set("Taskboard - "+_this.scope.project.name)}}(this)),promise.then(null,this.onInitialDataError.bind(this)),promise["finally"](tgLoader.pageLoaded)}return extend(TaskboardController,superClass),TaskboardController.$inject=["$scope","$rootScope","$tgRepo","$tgConfirm","$tgResources","$routeParams","$q","$appTitle","$tgLocation","$tgNavUrls","$tgEvents","$tgAnalytics","tgLoader"],TaskboardController.prototype.initializeEventHandlers=function(){return this.scope.$on("taskform:bulk:success",function(_this){return function(){return _this.loadTaskboard(),_this.analytics.trackEvent("task","create","bulk create task on taskboard",1)}}(this)),this.scope.$on("taskform:new:success",function(_this){return function(){return _this.loadTaskboard(),_this.analytics.trackEvent("task","create","create task on taskboard",1)}}(this)),this.scope.$on("taskform:edit:success",function(_this){return function(){return _this.loadTaskboard()}}(this)),this.scope.$on("taskboard:task:move",this.taskMove),this.scope.$on("assigned-to:added",function(_this){return function(ctx,userId,task){var promise;return task.assigned_to=userId,promise=_this.repo.save(task),promise.then(null,function(){return console.log("FAIL")})}}(this))},TaskboardController.prototype.initializeSubscription=function(){var routingKey,routingKey1;return routingKey="changes.project."+this.scope.projectId+".tasks",this.events.subscribe(this.scope,routingKey,function(_this){return function(){return _this.loadTaskboard()}}(this)),routingKey1="changes.project."+this.scope.projectId+".userstories",this.events.subscribe(this.scope,routingKey1,function(_this){return function(){return _this.refreshTagsColors(),_this.loadSprintStats(),_this.loadSprint()}}(this))},TaskboardController.prototype.loadProject=function(){return this.rs.projects.get(this.scope.projectId).then(function(_this){return function(project){return project.is_backlog_activated||_this.location.path(_this.navUrls.resolve("permission-denied")),_this.scope.project=project,_this.scope.pointsList=_.sortBy(project.points,"order"),_this.scope.pointsById=groupBy(project.points,function(e){return e.id}),_this.scope.roleById=groupBy(project.roles,function(e){return e.id}),_this.scope.taskStatusList=_.sortBy(project.task_statuses,"order"),_this.scope.usStatusList=_.sortBy(project.us_statuses,"order"),_this.scope.usStatusById=groupBy(project.us_statuses,function(e){return e.id}),_this.scope.$emit("project:loaded",project),_this.fillUsersAndRoles(project.users,project.roles),project}}(this))},TaskboardController.prototype.loadSprintStats=function(){return this.rs.sprints.stats(this.scope.projectId,this.scope.sprintId).then(function(_this){return function(stats){var completedPointsSum,remainingPointsSum,remainingTasks,totalPointsSum;return totalPointsSum=_.reduce(_.values(stats.total_points),function(res,n){return res+n},0),completedPointsSum=_.reduce(_.values(stats.completed_points),function(res,n){return res+n},0),remainingPointsSum=totalPointsSum-completedPointsSum,remainingTasks=stats.total_tasks-stats.completed_tasks,_this.scope.stats=stats,_this.scope.stats.totalPointsSum=totalPointsSum,_this.scope.stats.completedPointsSum=completedPointsSum,_this.scope.stats.remainingPointsSum=remainingPointsSum,_this.scope.stats.remainingTasks=remainingTasks,_this.scope.stats.completedPercentage=stats.totalPointsSum?Math.round(100*stats.completedPointsSum/stats.totalPointsSum):0,_this.scope.stats.openTasks=stats.total_tasks-stats.completed_tasks,stats}}(this))},TaskboardController.prototype.refreshTagsColors=function(){return this.rs.projects.tagsColors(this.scope.projectId).then(function(_this){return function(tags_colors){return _this.scope.project.tags_colors=tags_colors}}(this))},TaskboardController.prototype.loadSprint=function(){return this.rs.sprints.get(this.scope.projectId,this.scope.sprintId).then(function(_this){return function(sprint){return _this.scope.sprint=sprint,_this.scope.userstories=_.sortBy(sprint.user_stories,"sprint_order"),sprint}}(this))},TaskboardController.prototype.loadTasks=function(){return this.rs.tasks.list(this.scope.projectId,this.scope.sprintId).then(function(_this){return function(tasks){var i,j,k,len,len1,len2,ref,ref1,ref2,status,task,us;for(_this.scope.tasks=_.sortBy(tasks,"taskboard_order"),_this.scope.usTasks={},ref=_.union(_this.scope.userstories,[{id:null}]),i=0,len=ref.length;len>i;i++)for(us=ref[i],_this.scope.usTasks[us.id]={},ref1=_this.scope.taskStatusList,j=0,len1=ref1.length;len1>j;j++)status=ref1[j],_this.scope.usTasks[us.id][status.id]=[];for(ref2=_this.scope.tasks,k=0,len2=ref2.length;len2>k;k++)task=ref2[k],null!=_this.scope.usTasks[task.user_story]&&null!=_this.scope.usTasks[task.user_story][task.status]&&_this.scope.usTasks[task.user_story][task.status].push(task);return tasks}}(this))},TaskboardController.prototype.loadTaskboard=function(){return this.q.all([this.refreshTagsColors(),this.loadSprintStats(),this.loadSprint().then(function(_this){return function(){return _this.loadTasks()}}(this))])},TaskboardController.prototype.loadInitialData=function(){var params,promise;return params={pslug:this.params.pslug,sslug:this.params.sslug},promise=this.repo.resolve(params).then(function(_this){return function(data){return _this.scope.projectId=data.project,_this.scope.sprintId=data.milestone,_this.initializeSubscription(),data}}(this)),promise.then(function(_this){return function(){return _this.loadProject()}}(this)).then(function(_this){return function(){return _this.loadTaskboard()}}(this))},TaskboardController.prototype.refreshTasksOrder=function(tasks){var data,items;return items=this.resortTasks(tasks),data=this.prepareBulkUpdateData(items),this.rs.tasks.bulkUpdateTaskTaskboardOrder(this.scope.project.id,data)},TaskboardController.prototype.resortTasks=function(tasks){var i,index,item,items,len;for(items=[],index=i=0,len=tasks.length;len>i;index=++i)item=tasks[index],item.taskboard_order=index,item.isModified()&&items.push(item);return items},TaskboardController.prototype.prepareBulkUpdateData=function(uses){return _.map(uses,function(x){return{task_id:x.id,order:x.taskboard_order}})},TaskboardController.prototype.taskMove=function(ctx,task,usId,statusId,order){var promise,r,tasks;return r=this.scope.usTasks[task.user_story][task.status].indexOf(task),this.scope.usTasks[task.user_story][task.status].splice(r,1),tasks=this.scope.usTasks[usId][statusId],tasks.splice(order,0,task),task.user_story=usId,task.status=statusId,task.taskboard_order=order,promise=this.repo.save(task),this.rootscope.$broadcast("sprint:task:moved",task),promise.then(function(_this){return function(){return _this.refreshTasksOrder(tasks),_this.loadSprintStats()}}(this)),promise.then(null,function(){return function(){return console.log("FAIL TASK SAVE")}}(this))},TaskboardController.prototype.addNewTask=function(type,us){switch(type){case"standard":return this.rootscope.$broadcast("taskform:new",this.scope.sprintId,null!=us?us.id:void 0);case"bulk":return this.rootscope.$broadcast("taskform:bulk",this.scope.sprintId,null!=us?us.id:void 0)}},TaskboardController.prototype.editTaskAssignedTo=function(task){return this.rootscope.$broadcast("assigned-to:add",task)},TaskboardController}(mixOf(taiga.Controller,taiga.PageMixin)),module.controller("TaskboardController",TaskboardController),TaskboardDirective=function($rootscope){var link;return link=function($scope,$el){var $ctrl,tableBodyDom;return $ctrl=$el.controller(),$el.on("click",".toggle-analytics-visibility",function(event){var target;return event.preventDefault(),target=angular.element(event.currentTarget),target.toggleClass("active"),$rootscope.$broadcast("taskboard:graph:toggle-visibility")}),tableBodyDom=$el.find(".taskboard-table-body"),tableBodyDom.on("scroll",function(event){var tableHeaderDom,target;return target=angular.element(event.currentTarget),tableHeaderDom=$el.find(".taskboard-table-header .taskboard-table-inner"),tableHeaderDom.css("left",-1*target.scrollLeft())}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgTaskboard",["$rootScope",TaskboardDirective]),TaskboardTaskDirective=function($rootscope){var link;return link=function($scope,$el){return $el.disableSelection(),$scope.$watch("task",function(task){return task.is_blocked&&!$el.hasClass("blocked")?$el.addClass("blocked"):!task.is_blocked&&$el.hasClass("blocked")?$el.removeClass("blocked"):void 0}),$el.find(".icon-edit").on("click",function(){return $el.find(".icon-edit").hasClass("noclick")?void 0:$scope.$apply(function(){return $rootscope.$broadcast("taskform:edit",$scope.task)})})},{link:link}},module.directive("tgTaskboardTask",["$rootScope",TaskboardTaskDirective]),TaskboardSquishColumnDirective=function(rs){var avatarWidth,link,maxColumnWidth;return avatarWidth=40,maxColumnWidth=300,link=function($scope,$el){var getCeilWidth,recalculateStatusColumnWidth,recalculateTaskboardWidth,refreshTaskboardTableWidth,setStatusColumnWidth;return $scope.$on("sprint:task:moved",function(){return function(){return recalculateTaskboardWidth()}}(this)),bindOnce($scope,"usTasks",function(){return $scope.statusesFolded=rs.tasks.getStatusColumnModes($scope.project.id),$scope.usFolded=rs.tasks.getUsRowModes($scope.project.id,$scope.sprintId),recalculateTaskboardWidth()}),$scope.foldStatus=function(status){return $scope.statusesFolded[status.id]=!$scope.statusesFolded[status.id],rs.tasks.storeStatusColumnModes($scope.projectId,$scope.statusesFolded),recalculateTaskboardWidth()},$scope.foldUs=function(us){return us?$scope.usFolded[us.id]=!$scope.usFolded[us.id]:$scope.usFolded[null]=!$scope.usFolded[null],rs.tasks.storeUsRowModes($scope.projectId,$scope.sprintId,$scope.usFolded),recalculateTaskboardWidth()},getCeilWidth=function(){return function(usId,statusId){var tasks,tasksMatrixSize,width;return tasks=$scope.usTasks[usId][statusId].length,$scope.statusesFolded[statusId]?(tasks&&$scope.usFolded[usId]?(tasksMatrixSize=Math.round(Math.sqrt(tasks)),width=avatarWidth*tasksMatrixSize):width=avatarWidth,width):0}}(this),setStatusColumnWidth=function(){return function(statusId,width){var column;return column=$el.find(".squish-status-"+statusId),width?column.css("max-width",width):column.css("max-width",maxColumnWidth)}}(this),refreshTaskboardTableWidth=function(){return function(){var columnWidths,columns,totalWidth;return columnWidths=[],columns=$el.find(".task-colum-name"),columnWidths=_.map(columns,function(column){return $(column).outerWidth(!0)}),totalWidth=_.reduce(columnWidths,function(total,width){return total+width}),$el.find(".taskboard-table-inner").css("width",totalWidth)}}(this),recalculateStatusColumnWidth=function(){return function(statusId){var statusFoldedWidth;return statusFoldedWidth=getCeilWidth(null,statusId),_.forEach($scope.userstories,function(us){var width;return width=getCeilWidth(us.id,statusId),width>statusFoldedWidth?statusFoldedWidth=width:void 0}),setStatusColumnWidth(statusId,statusFoldedWidth)}}(this),recalculateTaskboardWidth=function(){return function(){_.forEach($scope.taskStatusList,function(status){return recalculateStatusColumnWidth(status.id)}),refreshTaskboardTableWidth()}}(this)},{link:link}},module.directive("tgTaskboardSquishColumn",["$tgResources",TaskboardSquishColumnDirective]),TaskboardUserDirective=function(){var clickable,link;return clickable=!1,link=function($scope,$el){var username_label;return username_label=$el.parent().find("a.task-assigned"),username_label.addClass("not-clickable"),$scope.$watch("task.assigned_to",function(assigned_to){var user;return user=$scope.usersById[assigned_to],void 0===user?_.assign($scope,{name:"Unassigned",imgurl:"/images/unnamed.png",clickable:clickable}):_.assign($scope,{name:user.full_name_display,imgurl:user.photo,clickable:clickable}),username_label.text($scope.name)}),bindOnce($scope,"project",function(project){return project.my_permissions.indexOf("modify_task")>-1?(clickable=!0,$el.find(".avatar-assigned-to").on("click",function(){return function(){var $ctrl;if(!$el.find("a").hasClass("noclick"))return $ctrl=$el.controller(),$ctrl.editTaskAssignedTo($scope.task)}}(this)),username_label.removeClass("not-clickable"),username_label.on("click",function(){var $ctrl;if(!$el.find("a").hasClass("noclick"))return $ctrl=$el.controller(),$ctrl.editTaskAssignedTo($scope.task)})):void 0})},{link:link,templateUrl:"taskboard/taskboard-user.html",scope:{usersById:"=users",project:"=",task:"="}}},module.directive("tgTaskboardUserAvatar",["$log",TaskboardUserDirective])}.call(this),function(){var TaskboardSortableDirective,bindOnce,groupBy,mixOf,module,scopeDefer,taiga,toggleText;taiga=this.taiga,mixOf=this.taiga.mixOf,toggleText=this.taiga.toggleText,scopeDefer=this.taiga.scopeDefer,bindOnce=this.taiga.bindOnce,groupBy=this.taiga.groupBy,module=angular.module("taigaBacklog"),TaskboardSortableDirective=function($repo,$rs,$rootscope){var link;return link=function($scope,$el){return bindOnce($scope,"project",function(project){var deleteElement,itemEl,newParentScope,oldParentScope,tdom;if(project.my_permissions.indexOf("modify_us")>-1)return oldParentScope=null,newParentScope=null,itemEl=null,tdom=$el,deleteElement=function(itemEl){return itemEl.scope().$destroy(),itemEl.off(),itemEl.remove()},tdom.sortable({handle:".taskboard-task-inner",dropOnEmpty:!0,connectWith:".taskboard-tasks-box",revert:400}),tdom.on("sortstop",function(event,ui){var itemIndex,itemTask,newStatusId,newUsId,oldStatusId,oldUsId,parentEl;return parentEl=ui.item.parent(),itemEl=ui.item,itemTask=itemEl.scope().task,itemIndex=itemEl.index(),newParentScope=parentEl.scope(),oldUsId=oldParentScope.us?oldParentScope.us.id:null,oldStatusId=oldParentScope.st.id,newUsId=newParentScope.us?newParentScope.us.id:null,newStatusId=newParentScope.st.id,(newStatusId!==oldStatusId||newUsId!==oldUsId)&&deleteElement(itemEl),$scope.$apply(function(){return $rootscope.$broadcast("taskboard:task:move",itemTask,newUsId,newStatusId,itemIndex)}),ui.item.find("a").removeClass("noclick")}),tdom.on("sortstart",function(event,ui){return oldParentScope=ui.item.parent().scope(),ui.item.find("a").addClass("noclick")})}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgTaskboardSortable",["$tgRepo","$tgResources","$rootScope",TaskboardSortableDirective])}.call(this),function(){var KanbanArchivedStatusHeaderDirective,KanbanArchivedStatusIntroDirective,KanbanController,KanbanDirective,KanbanSquishColumnDirective,KanbanUserDirective,KanbanUserstoryDirective,KanbanWipLimitDirective,bindMethods,bindOnce,defaultViewMode,defaultViewModes,groupBy,mixOf,module,scopeDefer,taiga,timeout,toggleText,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,mixOf=this.taiga.mixOf,toggleText=this.taiga.toggleText,scopeDefer=this.taiga.scopeDefer,bindOnce=this.taiga.bindOnce,groupBy=this.taiga.groupBy,timeout=this.taiga.timeout,bindMethods=this.taiga.bindMethods,module=angular.module("taigaKanban"),defaultViewMode="maximized",defaultViewModes={maximized:{cardClass:"kanban-task-maximized"},minimized:{cardClass:"kanban-task-minimized"}},KanbanController=function(superClass){function KanbanController(scope,rootscope,repo,confirm,rs1,params1,q,location,appTitle,navUrls,events,analytics,tgLoader){var promise;this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.confirm=confirm,this.rs=rs1,this.params=params1,this.q=q,this.location=location,this.appTitle=appTitle,this.navUrls=navUrls,this.events=events,this.analytics=analytics,bindMethods(this),this.scope.sectionName="Kanban",this.scope.statusViewModes={},this.initializeEventHandlers(),promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.appTitle.set("Kanban - "+_this.scope.project.name)}}(this)),promise.then(null,this.onInitialDataError.bind(this)),promise["finally"](tgLoader.pageLoaded)}return extend(KanbanController,superClass),KanbanController.$inject=["$scope","$rootScope","$tgRepo","$tgConfirm","$tgResources","$routeParams","$q","$tgLocation","$appTitle","$tgNavUrls","$tgEvents","$tgAnalytics","tgLoader"],KanbanController.prototype.initializeEventHandlers=function(){return this.scope.$on("usform:new:success",function(_this){return function(){return _this.loadUserstories(),_this.refreshTagsColors(),_this.analytics.trackEvent("userstory","create","create userstory on kanban",1)}}(this)),this.scope.$on("usform:bulk:success",function(_this){return function(){return _this.loadUserstories(),_this.analytics.trackEvent("userstory","create","bulk create userstory on kanban",1)}}(this)),this.scope.$on("usform:edit:success",function(_this){return function(){return _this.loadUserstories(),_this.refreshTagsColors()}}(this)),this.scope.$on("assigned-to:added",this.onAssignedToChanged),this.scope.$on("kanban:us:move",this.moveUs),this.scope.$on("kanban:show-userstories-for-status",this.loadUserStoriesForStatus),this.scope.$on("kanban:hide-userstories-for-status",this.hideUserStoriesForStatus)},KanbanController.prototype.addNewUs=function(type,statusId){switch(type){case"standard":return this.rootscope.$broadcast("usform:new",this.scope.projectId,statusId,this.scope.usStatusList);case"bulk":return this.rootscope.$broadcast("usform:bulk",this.scope.projectId,statusId)}},KanbanController.prototype.changeUsAssignedTo=function(us){return this.rootscope.$broadcast("assigned-to:add",us)},KanbanController.prototype.onAssignedToChanged=function(ctx,userid,us){var promise;return us.assigned_to=userid,promise=this.repo.save(us),promise.then(null,function(){return console.log("FAIL")})},KanbanController.prototype.refreshTagsColors=function(){return this.rs.projects.tagsColors(this.scope.projectId).then(function(_this){return function(tags_colors){return _this.scope.project.tags_colors=tags_colors}}(this))},KanbanController.prototype.loadUserstories=function(){var params;return params={status__is_archived:!1},this.rs.userstories.listAll(this.scope.projectId,params).then(function(_this){return function(userstories){var i,j,k,len,len1,len2,ref,ref1,ref2,status,us,usByStatus,us_archived;for(_this.scope.userstories=userstories,usByStatus=_.groupBy(userstories,"status"),us_archived=[],ref=_this.scope.usStatusList,i=0,len=ref.length;len>i;i++){if(status=ref[i],null==usByStatus[status.id]&&(usByStatus[status.id]=[]),null!=_this.scope.usByStatus)for(ref1=_this.scope.usByStatus[status.id],j=0,len1=ref1.length;len1>j;j++)us=ref1[j],us.status!==status.id&&us_archived.push(us);if(status.is_archived&&null!=_this.scope.usByStatus&&0!==_this.scope.usByStatus[status.id].length)for(ref2=_this.scope.usByStatus[status.id].concat(us_archived),k=0,len2=ref2.length;len2>k;k++)us=ref2[k],us.status===status.id&&usByStatus[status.id].push(us);usByStatus[status.id]=_.sortBy(usByStatus[status.id],"kanban_order")}return _this.scope.usByStatus=usByStatus,scopeDefer(_this.scope,function(){return _this.scope.$broadcast("userstories:loaded",userstories)}),userstories}}(this))},KanbanController.prototype.loadUserStoriesForStatus=function(ctx,statusId){var params;return params={status:statusId},this.rs.userstories.listAll(this.scope.projectId,params).then(function(_this){return function(userstories){return _this.scope.usByStatus[statusId]=_.sortBy(userstories,"kanban_order"),_this.scope.$broadcast("kanban:shown-userstories-for-status",statusId,userstories),userstories}}(this))},KanbanController.prototype.hideUserStoriesForStatus=function(ctx,statusId){return this.scope.usByStatus[statusId]=[],this.scope.$broadcast("kanban:hidden-userstories-for-status",statusId)},KanbanController.prototype.loadKanban=function(){return this.q.all([this.refreshTagsColors(),this.loadUserstories()])},KanbanController.prototype.loadProject=function(){return this.rs.projects.getBySlug(this.params.pslug).then(function(_this){return function(project){return project.is_kanban_activated||_this.location.path(_this.navUrls.resolve("permission-denied")),_this.scope.projectId=project.id,_this.scope.project=project,_this.scope.projectId=project.id,_this.scope.points=_.sortBy(project.points,"order"),_this.scope.pointsById=groupBy(project.points,function(x){return x.id}),_this.scope.usStatusById=groupBy(project.us_statuses,function(x){return x.id}),_this.scope.usStatusList=_.sortBy(project.us_statuses,"order"),_this.generateStatusViewModes(),_this.scope.$emit("project:loaded",project),project}}(this))},KanbanController.prototype.initializeSubscription=function(){var routingKey1;return routingKey1="changes.project."+this.scope.projectId+".userstories",this.events.subscribe(this.scope,routingKey1,function(_this){return function(){return _this.loadUserstories()}}(this))},KanbanController.prototype.loadInitialData=function(){var promise;return promise=this.loadProject(),promise.then(function(_this){return function(project){return _this.fillUsersAndRoles(project.users,project.roles),_this.initializeSubscription(),_this.loadKanban().then(function(){return _this.scope.$broadcast("redraw:wip") -})}}(this))},KanbanController.prototype.generateStatusViewModes=function(){var i,len,mode,ref,status,storedStatusViewModes;for(storedStatusViewModes=this.rs.kanban.getStatusViewModes(this.scope.projectId),this.scope.statusViewModes={},ref=this.scope.usStatusList,i=0,len=ref.length;len>i;i++)status=ref[i],mode=storedStatusViewModes[status.id],this.scope.statusViewModes[status.id]=_.has(defaultViewModes,mode)?mode:defaultViewMode;return this.storeStatusViewModes()},KanbanController.prototype.storeStatusViewModes=function(){return this.rs.kanban.storeStatusViewModes(this.scope.projectId,this.scope.statusViewModes)},KanbanController.prototype.updateStatusViewMode=function(statusId,newViewMode){return this.scope.statusViewModes[statusId]=newViewMode,this.storeStatusViewModes()},KanbanController.prototype.getCardClass=function(statusId){var mode;return mode=this.scope.statusViewModes[statusId]||defaultViewMode,defaultViewModes[mode].cardClass||defaultViewModes[defaultViewMode].cardClass},KanbanController.prototype.prepareBulkUpdateData=function(uses,field){return null==field&&(field="kanban_order"),_.map(uses,function(x){return{us_id:x.id,order:x[field]}})},KanbanController.prototype.resortUserStories=function(uses){var i,index,item,items,len;for(items=[],index=i=0,len=uses.length;len>i;index=++i)item=uses[index],item.kanban_order=index,item.isModified()&&items.push(item);return items},KanbanController.prototype.moveUs=function(ctx,us,oldStatusId,newStatusId,index){var itemsToSave,promise,r;return oldStatusId!==newStatusId?(r=this.scope.usByStatus[oldStatusId].indexOf(us),this.scope.usByStatus[oldStatusId].splice(r,1),this.scope.usByStatus[newStatusId].splice(index,0,us),us.status=newStatusId):(r=this.scope.usByStatus[newStatusId].indexOf(us),this.scope.usByStatus[newStatusId].splice(r,1),this.scope.usByStatus[newStatusId].splice(index,0,us)),itemsToSave=this.resortUserStories(this.scope.usByStatus[newStatusId]),this.scope.usByStatus[newStatusId]=_.sortBy(this.scope.usByStatus[newStatusId],"kanban_order"),promise=this.repo.save(us),promise=promise.then(function(_this){return function(){var data;return itemsToSave=_.reject(itemsToSave,{id:us.id}),data=_this.prepareBulkUpdateData(itemsToSave),_this.rs.userstories.bulkUpdateKanbanOrder(us.project,data).then(function(){return itemsToSave})}}(this))},KanbanController}(mixOf(taiga.Controller,taiga.PageMixin,taiga.FiltersMixin)),module.controller("KanbanController",KanbanController),KanbanDirective=function(){var link;return link=function($scope,$el){var tableBodyDom;return tableBodyDom=$el.find(".kanban-table-body"),tableBodyDom.on("scroll",function(event){var tableHeaderDom,target;return target=angular.element(event.currentTarget),tableHeaderDom=$el.find(".kanban-table-header .kanban-table-inner"),tableHeaderDom.css("left",-1*target.scrollLeft())}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgKanban",["$tgRepo","$rootScope",KanbanDirective]),KanbanArchivedStatusHeaderDirective=function($rootscope){var hideArchivedText,link,showArchivedText;return showArchivedText="Show archived",hideArchivedText="Hide archived",link=function($scope,$el,$attrs){var hidden,status;return status=$scope.$eval($attrs.tgKanbanArchivedStatusHeader),hidden=!0,$scope["class"]="icon icon-open-eye",$scope.title=showArchivedText,$el.on("click",function(){return hidden=!hidden,$scope.$apply(function(){return hidden?($scope["class"]="icon icon-open-eye",$scope.title=showArchivedText,$rootscope.$broadcast("kanban:hide-userstories-for-status",status.id)):($scope["class"]="icon icon-closed-eye",$scope.title=hideArchivedText,$rootscope.$broadcast("kanban:show-userstories-for-status",status.id))})}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgKanbanArchivedStatusHeader",["$rootScope",KanbanArchivedStatusHeaderDirective]),KanbanArchivedStatusIntroDirective=function(){var hiddenUserStoriexText,link,userStories;return hiddenUserStoriexText="The user stories in this status are hidden by default",userStories=[],link=function($scope,$el,$attrs){var status,updateIntroText;return status=$scope.$eval($attrs.tgKanbanArchivedStatusIntro),$el.text(hiddenUserStoriexText),updateIntroText=function(){return $el.text(userStories.length>0?"":hiddenUserStoriexText)},$scope.$on("kanban:us:move",function(ctx,itemUs,oldStatusId,newStatusId,itemIndex){var r;return status.id===newStatusId?status.id===oldStatusId?(r=userStories.indexOf(itemUs),userStories.splice(r,1),userStories.splice(itemIndex,0,itemUs)):(itemUs.isArchived=!0,userStories.splice(itemIndex,0,itemUs)):status.id===oldStatusId&&(itemUs.isArchived=!1,r=userStories.indexOf(itemUs),userStories.splice(r,1)),updateIntroText()}),$scope.$on("kanban:shown-userstories-for-status",function(ctx,statusId,userStoriesLoaded){return statusId===status.id?(userStories=_.filter(userStoriesLoaded,function(us){return us.status===status.id}),updateIntroText()):void 0}),$scope.$on("kanban:hidden-userstories-for-status",function(ctx,statusId){return statusId===status.id?(userStories=[],updateIntroText()):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgKanbanArchivedStatusIntro",KanbanArchivedStatusIntroDirective),KanbanUserstoryDirective=function($rootscope){var link;return link=function($scope,$el,$attrs,$model){return $el.disableSelection(),$scope.$watch("us",function(us){return us.is_blocked&&!$el.hasClass("blocked")?$el.addClass("blocked"):!us.is_blocked&&$el.hasClass("blocked")?$el.removeClass("blocked"):void 0}),$el.find(".icon-edit").on("click",function(){return $el.find(".icon-edit").hasClass("noclick")?void 0:$scope.$apply(function(){return $rootscope.$broadcast("usform:edit",$model.$modelValue)})}),$scope.$on("$destroy",function(){return $el.off()})},{templateUrl:"kanban/kanban-task.html",link:link,require:"ngModel"}},module.directive("tgKanbanUserstory",["$rootScope",KanbanUserstoryDirective]),KanbanSquishColumnDirective=function(rs){var link;return link=function($scope,$el){var updateTableWidth;return $scope.$on("project:loaded",function(event,project){return $scope.folds=rs.kanban.getStatusColumnModes(project.id),updateTableWidth()}),$scope.foldStatus=function(status){$scope.folds[status.id]=!$scope.folds[status.id],rs.kanban.storeStatusColumnModes($scope.projectId,$scope.folds),updateTableWidth()},updateTableWidth=function(){var columnWidths,totalWidth;return columnWidths=_.map($scope.usStatusList,function(status){return $scope.folds[status.id]?40:310}),totalWidth=_.reduce(columnWidths,function(total,width){return total+width}),$el.find(".kanban-table-inner").css("width",totalWidth)}},{link:link}},module.directive("tgKanbanSquishColumn",["$tgResources",KanbanSquishColumnDirective]),KanbanWipLimitDirective=function(){var link;return link=function($scope,$el,$attrs){var redrawWipLimit;return $el.disableSelection(),redrawWipLimit=function(){return $el.find(".kanban-wip-limit").remove(),timeout(200,function(){var element;return element=$el.find(".kanban-task")[$scope.$eval($attrs.tgKanbanWipLimit)],element?angular.element(element).before("
"):void 0})},$scope.$on("redraw:wip",redrawWipLimit),$scope.$on("kanban:us:move",redrawWipLimit),$scope.$on("usform:new:success",redrawWipLimit),$scope.$on("usform:bulk:success",redrawWipLimit),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgKanbanWipLimit",KanbanWipLimitDirective),KanbanUserDirective=function($log){var clickable,link,template;return template=_.template('
\n class="not-clickable"<% } %>>\n <%- name %>\n \n
'),clickable=!1,link=function($scope,$el,$attrs,$model){var render,username_label,wtid;return username_label=$el.parent().find("a.task-assigned"),username_label.addClass("not-clickable"),$attrs.tgKanbanUserAvatar?(wtid=$scope.$watch($attrs.tgKanbanUserAvatar,function(v){var user;return null==$scope.usersById?($log.error("KanbanUserDirective requires userById set in scope."),wtid()):(user=$scope.usersById[v],render(user))}),render=function(user){var ctx,html;return ctx=void 0===user?{name:"Unassigned",imgurl:"/images/unnamed.png",clickable:clickable}:{name:user.full_name_display,imgurl:user.photo,clickable:clickable},html=template(ctx),$el.html(html),username_label.text(ctx.name)},bindOnce($scope,"project",function(project){return project.my_permissions.indexOf("modify_us")>-1?(clickable=!0,$el.on("click",function(){return function(){var $ctrl,us;if(!$el.find("a").hasClass("noclick"))return us=$model.$modelValue,$ctrl=$el.controller(),$ctrl.changeUsAssignedTo(us)}}(this)),username_label.removeClass("not-clickable"),username_label.on("click",function(){var $ctrl,us;if(!$el.find("a").hasClass("noclick"))return us=$model.$modelValue,$ctrl=$el.controller(),$ctrl.changeUsAssignedTo(us)})):void 0}),$scope.$on("$destroy",function(){return $el.off()})):$log.error("KanbanUserDirective: no attr is defined")},{link:link,require:"ngModel"}},module.directive("tgKanbanUserAvatar",["$log",KanbanUserDirective])}.call(this),function(){var KanbanSortableDirective,bindOnce,groupBy,mixOf,module,scopeDefer,taiga,timeout,toggleText;taiga=this.taiga,mixOf=this.taiga.mixOf,toggleText=this.taiga.toggleText,scopeDefer=this.taiga.scopeDefer,bindOnce=this.taiga.bindOnce,groupBy=this.taiga.groupBy,timeout=this.taiga.timeout,module=angular.module("taigaKanban"),KanbanSortableDirective=function($repo,$rs,$rootscope){var link;return link=function($scope,$el){return bindOnce($scope,"project",function(project){var deleteElement,itemEl,newParentScope,oldParentScope,tdom;if(project.my_permissions.indexOf("modify_us")>-1)return oldParentScope=null,newParentScope=null,itemEl=null,tdom=$el,deleteElement=function(itemEl){return itemEl.scope().$destroy(),itemEl.off(),itemEl.remove()},tdom.sortable({handle:".kanban-task-inner",dropOnEmpty:!0,connectWith:".kanban-uses-box",revert:400}),tdom.on("sortstop",function(event,ui){var itemIndex,itemUs,newStatusId,oldStatusId,parentEl;return parentEl=ui.item.parent(),itemEl=ui.item,itemUs=itemEl.scope().us,itemIndex=itemEl.index(),newParentScope=parentEl.scope(),newStatusId=newParentScope.s.id,oldStatusId=oldParentScope.s.id,newStatusId!==oldStatusId&&deleteElement(itemEl),$scope.$apply(function(){return $rootscope.$broadcast("kanban:us:move",itemUs,itemUs.status,newStatusId,itemIndex)}),ui.item.find("a").removeClass("noclick")}),tdom.on("sortstart",function(event,ui){return oldParentScope=ui.item.parent().scope(),ui.item.find("a").addClass("noclick")})}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgKanbanSortable",["$tgRepo","$tgResources","$rootScope",KanbanSortableDirective])}.call(this),function(){var IssueDetailController,IssuePriorityButtonDirective,IssueSeverityButtonDirective,IssueStatusButtonDirective,IssueStatusDisplayDirective,IssueTypeButtonDirective,PromoteIssueToUsButtonDirective,bindOnce,groupBy,joinStr,mixOf,module,taiga,toString,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,mixOf=this.taiga.mixOf,toString=this.taiga.toString,joinStr=this.taiga.joinStr,groupBy=this.taiga.groupBy,bindOnce=this.taiga.bindOnce,module=angular.module("taigaIssues"),IssueDetailController=function(superClass){function IssueDetailController(scope,rootscope,repo,confirm,rs,params,q,location,log,appTitle,analytics,navUrls,tgLoader){var promise;this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.confirm=confirm,this.rs=rs,this.params=params,this.q=q,this.location=location,this.log=log,this.appTitle=appTitle,this.analytics=analytics,this.navUrls=navUrls,this.scope.issueRef=this.params.issueref,this.scope.sectionName="Issue Details",this.initializeEventHandlers(),promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.appTitle.set(_this.scope.issue.subject+" - "+_this.scope.project.name),_this.initializeOnDeleteGoToUrl()}}(this)),promise.then(null,this.onInitialDataError.bind(this)),promise["finally"](tgLoader.pageLoaded)}return extend(IssueDetailController,superClass),IssueDetailController.$inject=["$scope","$rootScope","$tgRepo","$tgConfirm","$tgResources","$routeParams","$q","$tgLocation","$log","$appTitle","$tgAnalytics","$tgNavUrls","tgLoader"],IssueDetailController.prototype.initializeEventHandlers=function(){return this.scope.$on("attachment:create",function(_this){return function(){return _this.rootscope.$broadcast("history:reload"),_this.analytics.trackEvent("attachment","create","create attachment on issue",1)}}(this)),this.scope.$on("attachment:edit",function(_this){return function(){return _this.rootscope.$broadcast("history:reload")}}(this)),this.scope.$on("attachment:delete",function(_this){return function(){return _this.rootscope.$broadcast("history:reload")}}(this)),this.scope.$on("promote-issue-to-us:success",function(_this){return function(){return _this.analytics.trackEvent("issue","promoteToUserstory","promote issue to userstory",1),_this.rootscope.$broadcast("history:reload"),_this.loadIssue()}}(this)),this.scope.$on("custom-attributes-values:edit",function(_this){return function(){return _this.rootscope.$broadcast("history:reload")}}(this))},IssueDetailController.prototype.initializeOnDeleteGoToUrl=function(){var ctx;return ctx={project:this.scope.project.slug},this.scope.onDeleteGoToUrl=this.scope.project.is_issues_activated?this.navUrls.resolve("project-issues",ctx):this.navUrls.resolve("project",ctx)},IssueDetailController.prototype.loadProject=function(){return this.rs.projects.getBySlug(this.params.pslug).then(function(_this){return function(project){return _this.scope.projectId=project.id,_this.scope.project=project,_this.scope.$emit("project:loaded",project),_this.scope.statusList=project.issue_statuses,_this.scope.statusById=groupBy(project.issue_statuses,function(x){return x.id}),_this.scope.typeById=groupBy(project.issue_types,function(x){return x.id}),_this.scope.typeList=_.sortBy(project.issue_types,"order"),_this.scope.severityList=project.severities,_this.scope.severityById=groupBy(project.severities,function(x){return x.id}),_this.scope.priorityList=project.priorities,_this.scope.priorityById=groupBy(project.priorities,function(x){return x.id}),_this.scope.membersById=groupBy(project.memberships,function(x){return x.user}),project}}(this))},IssueDetailController.prototype.loadIssue=function(){return this.rs.issues.getByRef(this.scope.projectId,this.params.issueref).then(function(_this){return function(issue){var ctx;return _this.scope.issue=issue,_this.scope.issueId=issue.id,_this.scope.commentModel=issue,null!=_this.scope.issue.neighbors.previous.ref&&(ctx={project:_this.scope.project.slug,ref:_this.scope.issue.neighbors.previous.ref},_this.scope.previousUrl=_this.navUrls.resolve("project-issues-detail",ctx)),null!=_this.scope.issue.neighbors.next.ref?(ctx={project:_this.scope.project.slug,ref:_this.scope.issue.neighbors.next.ref},_this.scope.nextUrl=_this.navUrls.resolve("project-issues-detail",ctx)):void 0}}(this))},IssueDetailController.prototype.loadInitialData=function(){var promise;return promise=this.loadProject(),promise.then(function(_this){return function(project){return _this.fillUsersAndRoles(project.users,project.roles),_this.loadIssue()}}(this))},IssueDetailController}(mixOf(taiga.Controller,taiga.PageMixin)),module.controller("IssueDetailController",IssueDetailController),IssueStatusDisplayDirective=function($template){var link,template;return template=$template.get("common/components/status-display.html",!0),link=function($scope,$el,$attrs){var render;return render=function(issue){var html,status;return status=$scope.statusById[issue.status],html=template({is_closed:status.is_closed,status:status}),$el.html(html)},$scope.$watch($attrs.ngModel,function(issue){return null!=issue?render(issue):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgIssueStatusDisplay",["$tgTemplate",IssueStatusDisplayDirective]),IssueStatusButtonDirective=function($rootScope,$repo,$confirm,$loading,$qqueue,$template){var link,template;return template=$template.get("issue/issues-status-button.html",!0),link=function($scope,$el,$attrs,$model){var isEditable,render,save;return isEditable=function(){return-1!==$scope.project.my_permissions.indexOf("modify_issue")},render=function(){return function(issue){var html,status;return status=$scope.statusById[issue.status],html=template({status:status,statuses:$scope.statusList,editable:isEditable()}),$el.html(html)}}(this),save=$qqueue.bindAdd(function(){return function(statusId){var issue,onError,onSuccess;return $.fn.popover().closeAll(),issue=$model.$modelValue.clone(),issue.status=statusId,onSuccess=function(){return $confirm.notify("success"),$model.$setViewValue(issue),$rootScope.$broadcast("history:reload"),$loading.finish($el.find(".level-name"))},onError=function(){return $confirm.notify("error"),issue.revert(),$model.$setViewValue(issue),$loading.finish($el.find(".level-name"))},$loading.start($el.find(".level-name")),$repo.save(issue).then(onSuccess,onError)}}(this)),$el.on("click",".status-data",function(event){return event.preventDefault(),event.stopPropagation(),isEditable()?$el.find(".pop-status").popover().open():void 0}),$el.on("click",".status",function(event){var target;return event.preventDefault(),event.stopPropagation(),isEditable()?(target=angular.element(event.currentTarget),save(target.data("status-id"))):void 0}),$scope.$watch($attrs.ngModel,function(issue){return issue?render(issue):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgIssueStatusButton",["$rootScope","$tgRepo","$tgConfirm","$tgLoading","$tgQqueue","$tgTemplate",IssueStatusButtonDirective]),IssueTypeButtonDirective=function($rootScope,$repo,$confirm,$loading,$qqueue,$template){var link,template;return template=$template.get("issue/issue-type-button.html",!0),link=function($scope,$el,$attrs,$model){var isEditable,render,save;return isEditable=function(){return-1!==$scope.project.my_permissions.indexOf("modify_issue")},render=function(){return function(issue){var html,type;return type=$scope.typeById[issue.type],html=template({type:type,typees:$scope.typeList,editable:isEditable()}),$el.html(html)}}(this),save=$qqueue.bindAdd(function(){return function(type){var issue,onError,onSuccess;return $.fn.popover().closeAll(),issue=$model.$modelValue.clone(),issue.type=type,onSuccess=function(){return $confirm.notify("success"),$model.$setViewValue(issue),$rootScope.$broadcast("history:reload"),$loading.finish($el.find(".level-name"))},onError=function(){return $confirm.notify("error"),issue.revert(),$model.$setViewValue(issue),$loading.finish($el.find(".level-name"))},$loading.start($el.find(".level-name")),$repo.save(issue).then(onSuccess,onError)}}(this)),$el.on("click",".type-data",function(event){return event.preventDefault(),event.stopPropagation(),isEditable()?$el.find(".pop-type").popover().open():void 0}),$el.on("click",".type",function(event){var target,type;return event.preventDefault(),event.stopPropagation(),isEditable()?(target=angular.element(event.currentTarget),type=target.data("type-id"),save(type)):void 0}),$scope.$watch($attrs.ngModel,function(issue){return issue?render(issue):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgIssueTypeButton",["$rootScope","$tgRepo","$tgConfirm","$tgLoading","$tgQqueue","$tgTemplate",IssueTypeButtonDirective]),IssueSeverityButtonDirective=function($rootScope,$repo,$confirm,$loading,$qqueue,$template){var link,template;return template=$template.get("issue/issue-severity-button.html",!0),link=function($scope,$el,$attrs,$model){var isEditable,render,save;return isEditable=function(){return-1!==$scope.project.my_permissions.indexOf("modify_issue")},render=function(){return function(issue){var html,severity;return severity=$scope.severityById[issue.severity],html=template({severity:severity,severityes:$scope.severityList,editable:isEditable()}),$el.html(html)}}(this),save=$qqueue.bindAdd(function(){return function(severity){var issue,onError,onSuccess;return $.fn.popover().closeAll(),issue=$model.$modelValue.clone(),issue.severity=severity,onSuccess=function(){return $confirm.notify("success"),$model.$setViewValue(issue),$rootScope.$broadcast("history:reload"),$loading.finish($el.find(".level-name"))},onError=function(){return $confirm.notify("error"),issue.revert(),$model.$setViewValue(issue),$loading.finish($el.find(".level-name"))},$loading.start($el.find(".level-name")),$repo.save(issue).then(onSuccess,onError)}}(this)),$el.on("click",".severity-data",function(event){return event.preventDefault(),event.stopPropagation(),isEditable()?$el.find(".pop-severity").popover().open():void 0}),$el.on("click",".severity",function(event){var severity,target;return event.preventDefault(),event.stopPropagation(),isEditable()?(target=angular.element(event.currentTarget),severity=target.data("severity-id"),save(severity)):void 0}),$scope.$watch($attrs.ngModel,function(issue){return issue?render(issue):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgIssueSeverityButton",["$rootScope","$tgRepo","$tgConfirm","$tgLoading","$tgQqueue","$tgTemplate",IssueSeverityButtonDirective]),IssuePriorityButtonDirective=function($rootScope,$repo,$confirm,$loading,$qqueue,$template){var link,template;return template=$template.get("issue/issue-priority-button.html",!0),link=function($scope,$el,$attrs,$model){var isEditable,render,save;return isEditable=function(){return-1!==$scope.project.my_permissions.indexOf("modify_issue")},render=function(){return function(issue){var html,priority;return priority=$scope.priorityById[issue.priority],html=template({priority:priority,priorityes:$scope.priorityList,editable:isEditable()}),$el.html(html)}}(this),save=$qqueue.bindAdd(function(){return function(priority){var issue,onError,onSuccess;return $.fn.popover().closeAll(),issue=$model.$modelValue.clone(),issue.priority=priority,onSuccess=function(){return $confirm.notify("success"),$model.$setViewValue(issue),$rootScope.$broadcast("history:reload"),$loading.finish($el.find(".level-name"))},onError=function(){return $confirm.notify("error"),issue.revert(),$model.$setViewValue(issue),$loading.finish($el.find(".level-name"))},$loading.start($el.find(".level-name")),$repo.save(issue).then(onSuccess,onError)}}(this)),$el.on("click",".priority-data",function(event){return event.preventDefault(),event.stopPropagation(),isEditable()?$el.find(".pop-priority").popover().open():void 0}),$el.on("click",".priority",function(event){var priority,target;return event.preventDefault(),event.stopPropagation(),isEditable()?(target=angular.element(event.currentTarget),priority=target.data("priority-id"),save(priority)):void 0}),$scope.$watch($attrs.ngModel,function(issue){return issue?render(issue):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgIssuePriorityButton",["$rootScope","$tgRepo","$tgConfirm","$tgLoading","$tgQqueue","$tgTemplate",IssuePriorityButtonDirective]),PromoteIssueToUsButtonDirective=function($rootScope,$repo,$confirm,$qqueue){var link;return link=function($scope,$el,$attrs,$model){var save;return save=$qqueue.bindAdd(function(){return function(issue,finish){var data,onError,onSuccess;return data={generated_from_issue:issue.id,project:issue.project,subject:issue.subject,description:issue.description,tags:issue.tags,is_blocked:issue.is_blocked,blocked_note:issue.blocked_note},onSuccess=function(){return finish(),$confirm.notify("success"),$rootScope.$broadcast("promote-issue-to-us:success")},onError=function(){return finish(!1),$confirm.notify("error")},$repo.create("userstories",data).then(onSuccess,onError)}}(this)),$el.on("click","a",function(event){var issue,message,subtitle,title;return event.preventDefault(),issue=$model.$modelValue,title="Promote this issue to a new user story",message="Are you sure you want to create a new US from this Issue?",subtitle=issue.subject,$confirm.ask(title,subtitle,message).then(function(){return function(finish){return save(issue,finish)}}(this))}),$scope.$on("$destroy",function(){return $el.off()})},{restrict:"AE",require:"ngModel",templateUrl:"issue/promote-issue-to-us-button.html",link:link}},module.directive("tgPromoteIssueToUsButton",["$rootScope","$tgRepo","$tgConfirm","$tgQqueue",PromoteIssueToUsButtonDirective])}.call(this),function(){var CreateBulkIssuesDirective,CreateIssueDirective,bindOnce,debounce,module,taiga;taiga=this.taiga,bindOnce=this.taiga.bindOnce,debounce=this.taiga.debounce,module=angular.module("taigaIssues"),CreateIssueDirective=function($repo,$confirm,$rootscope,lightboxService,$loading){var link;return link=function($scope,$el){var form,submit,submitButton;return form=$el.find("form").checksley(),$scope.issue={},$scope.$on("issueform:new",function(ctx,project){return $el.find(".tag-input").val(""),lightboxService.open($el),$scope.issue={project:project.id,subject:"",status:project.default_issue_status,type:project.default_issue_type,priority:project.default_priority,severity:project.default_severity,tags:[]}}),$scope.$on("$destroy",function(){return $el.off()}),submit=debounce(2e3,function(){return function(event){var promise;return event.preventDefault(),form.validate()?($loading.start(submitButton),promise=$repo.create("issues",$scope.issue),promise.then(function(data){return $loading.finish(submitButton),$rootscope.$broadcast("issueform:new:success",data),lightboxService.close($el),$confirm.notify("success")}),promise.then(null,function(){return $loading.finish(submitButton),$confirm.notify("error")})):void 0}}(this)),submitButton=$el.find(".submit-button"),$el.on("submit","form",submit)},{link:link}},module.directive("tgLbCreateIssue",["$tgRepo","$tgConfirm","$rootScope","lightboxService","$tgLoading",CreateIssueDirective]),CreateBulkIssuesDirective=function($repo,$rs,$confirm,$rootscope,$loading,lightboxService){var link;return link=function($scope,$el){var submit,submitButton;return $scope.$on("issueform:bulk",function(ctx,projectId){return lightboxService.open($el),$scope["new"]={projectId:projectId,bulk:""}}),submit=debounce(2e3,function(){return function(event){var data,form,projectId,promise;return event.preventDefault(),form=$el.find("form").checksley(),form.validate()?($loading.start(submitButton),data=$scope["new"].bulk,projectId=$scope["new"].projectId,promise=$rs.issues.bulkCreate(projectId,data),promise.then(function(result){return $loading.finish(submitButton),$rootscope.$broadcast("issueform:new:success",result),lightboxService.close($el),$confirm.notify("success")}),promise.then(null,function(){return $loading.finish(submitButton),$confirm.notify("error")})):void 0}}(this)),submitButton=$el.find(".submit-button"),$el.on("submit","form",submit),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgLbCreateBulkIssues",["$tgRepo","$tgResources","$tgConfirm","$rootScope","$tgLoading","lightboxService",CreateBulkIssuesDirective])}.call(this),function(){var IssueAssignedToInlineEditionDirective,IssueStatusInlineEditionDirective,IssuesController,IssuesDirective,IssuesFiltersDirective,bindOnce,debounceLeading,groupBy,joinStr,mixOf,module,startswith,taiga,toString,trim,bind=function(fn,me){return function(){return fn.apply(me,arguments)}},extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,mixOf=this.taiga.mixOf,trim=this.taiga.trim,toString=this.taiga.toString,joinStr=this.taiga.joinStr,groupBy=this.taiga.groupBy,bindOnce=this.taiga.bindOnce,debounceLeading=this.taiga.debounceLeading,startswith=this.taiga.startswith,module=angular.module("taigaIssues"),IssuesController=function(superClass){function IssuesController(scope,rootscope,repo,confirm,rs,urls,params,q,location,appTitle,navUrls,events,analytics,tgLoader){var filters,promise;return this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.confirm=confirm,this.rs=rs,this.urls=urls,this.params=params,this.q=q,this.location=location,this.appTitle=appTitle,this.navUrls=navUrls,this.events=events,this.analytics=analytics,this.loadIssues=bind(this.loadIssues,this),this.scope.sectionName="Issues",this.scope.filters={},_.isEmpty(this.location.search())?(filters=this.rs.issues.getFilters(this.params.pslug),filters.page=1,this.location.search(filters),void this.location.replace()):(promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.appTitle.set("Issues - "+_this.scope.project.name)}}(this)),promise.then(null,this.onInitialDataError.bind(this)),promise["finally"](tgLoader.pageLoaded),void this.scope.$on("issueform:new:success",function(_this){return function(){return _this.analytics.trackEvent("issue","create","create issue on issues list",1),_this.loadIssues(),_this.loadFilters()}}(this)))}return extend(IssuesController,superClass),IssuesController.$inject=["$scope","$rootScope","$tgRepo","$tgConfirm","$tgResources","$tgUrls","$routeParams","$q","$tgLocation","$appTitle","$tgNavUrls","$tgEvents","$tgAnalytics","tgLoader"],IssuesController.prototype.initializeSubscription=function(){var routingKey;return routingKey="changes.project."+this.scope.projectId+".issues",this.events.subscribe(this.scope,routingKey,function(_this){return function(){return _this.loadIssues()}}(this))},IssuesController.prototype.storeFilters=function(){return this.rs.issues.storeFilters(this.params.pslug,this.location.search())},IssuesController.prototype.loadProject=function(){return this.rs.projects.getBySlug(this.params.pslug).then(function(_this){return function(project){return project.is_issues_activated||_this.location.path(_this.navUrls.resolve("permission-denied")),_this.scope.projectId=project.id,_this.scope.project=project,_this.scope.$emit("project:loaded",project),_this.scope.issueStatusById=groupBy(project.issue_statuses,function(x){return x.id}),_this.scope.issueStatusList=_.sortBy(project.issue_statuses,"order"),_this.scope.severityById=groupBy(project.severities,function(x){return x.id}),_this.scope.severityList=_.sortBy(project.severities,"order"),_this.scope.priorityById=groupBy(project.priorities,function(x){return x.id}),_this.scope.priorityList=_.sortBy(project.priorities,"order"),_this.scope.issueTypes=_.sortBy(project.issue_types,"order"),_this.scope.issueTypeById=groupBy(project.issue_types,function(x){return x.id}),_this.scope.membersById=groupBy(project.memberships,function(x){return x.user}),project}}(this))},IssuesController.prototype.getUrlFilters=function(){var filters;return filters=_.pick(this.location.search(),"page","tags","statuses","types","q","severities","priorities","assignedTo","createdBy","orderBy"),filters.page||(filters.page=1),filters},IssuesController.prototype.getUrlFilter=function(name){var filters;return filters=_.pick(this.location.search(),name),filters[name]},IssuesController.prototype.loadMyFilters=function(){return this.rs.issues.getMyFilters(this.scope.projectId).then(function(){return function(filters){return _.map(filters,function(value,key){return{id:key,name:key,type:"myFilters",selected:!1}})}}(this))},IssuesController.prototype.removeNotExistingFiltersFromUrl=function(){var currentSearch,existingValues,filterName,filterValue,splittedValues,urlfilters; -currentSearch=this.location.search(),urlfilters=this.getUrlFilters();for(filterName in urlfilters)filterValue=urlfilters[filterName],"page"!==filterName&&"orderBy"!==filterName&&"q"!==filterName&&(splittedValues="tags"===filterName?_.map((""+filterValue).split(",")):_.map((""+filterValue).split(","),function(x){return"null"===x?null:parseInt(x)}),existingValues=_.intersection(splittedValues,_.map(this.scope.filters[filterName],"id")),splittedValues.length!==existingValues.length&&this.location.search(filterName,existingValues.join()));return currentSearch!==this.location.search()?this.location.replace():void 0},IssuesController.prototype.markSelectedFilters=function(filters,urlfilters){var isSelected,j,key,len,name,obj,ref,ref1,results,searchdata,val,value;searchdata={},ref=_.omit(urlfilters,"page","orderBy");for(name in ref)for(value=ref[name],null==searchdata[name]&&(searchdata[name]={}),ref1=(""+value).split(","),j=0,len=ref1.length;len>j;j++)val=ref1[j],searchdata[name][val]=!0;isSelected=function(type,id){return null!=searchdata[type]&&searchdata[type][id]?!0:!1},results=[];for(key in filters)value=filters[key],results.push(function(){var k,len1,results1;for(results1=[],k=0,len1=value.length;len1>k;k++)obj=value[k],results1.push(obj.selected=isSelected(obj.type,obj.id)?!0:void 0);return results1}());return results},IssuesController.prototype.loadFilters=function(){var promise,urlfilters;return urlfilters=this.getUrlFilters(),urlfilters.q&&(this.scope.filtersQ=urlfilters.q),promise=this.loadMyFilters().then(function(_this){return function(myFilters){return _this.scope.filters.myFilters=myFilters,myFilters}}(this)),promise=promise.then(function(_this){return function(){return _this.rs.issues.filtersData(_this.scope.projectId)}}(this)),promise.then(function(_this){return function(data){var choicesFiltersFormat,tagsFilterFormat,usersFiltersFormat;return usersFiltersFormat=function(users,type,unknownOption){var reformatedUsers,unknownItem;return reformatedUsers=_.map(users,function(t){return{id:t[0],count:t[1],type:type,name:t[0]?_this.scope.usersById[t[0]].full_name_display:unknownOption}}),unknownItem=_.remove(reformatedUsers,function(u){return!u.id}),reformatedUsers=_.sortBy(reformatedUsers,function(u){return u.name.toUpperCase()}),unknownItem.length>0&&reformatedUsers.unshift(unknownItem[0]),reformatedUsers},choicesFiltersFormat=function(choices,type,byIdObject){return _.map(choices,function(t){return{id:t[0],name:byIdObject[t[0]].name,color:byIdObject[t[0]].color,count:t[1],type:type}})},tagsFilterFormat=function(tags){return _.map(tags,function(t){return{id:t[0],name:t[0],color:_this.scope.project.tags_colors[t[0]],count:t[1],type:"tags"}})},_this.scope.filters.statuses=choicesFiltersFormat(data.statuses,"statuses",_this.scope.issueStatusById),_this.scope.filters.severities=choicesFiltersFormat(data.severities,"severities",_this.scope.severityById),_this.scope.filters.priorities=choicesFiltersFormat(data.priorities,"priorities",_this.scope.priorityById),_this.scope.filters.assignedTo=usersFiltersFormat(data.assigned_to,"assignedTo","Unassigned"),_this.scope.filters.createdBy=usersFiltersFormat(data.created_by,"createdBy","Unknown"),_this.scope.filters.types=choicesFiltersFormat(data.types,"types",_this.scope.issueTypeById),_this.scope.filters.tags=tagsFilterFormat(data.tags),_this.removeNotExistingFiltersFromUrl(),_this.markSelectedFilters(_this.scope.filters,urlfilters),_this.rootscope.$broadcast("filters:loaded",_this.scope.filters)}}(this))},IssuesController.prototype.loadIssuesRequests=0,IssuesController.prototype.loadIssues=function(){var name,promise,ref,values;this.scope.urlFilters=this.getUrlFilters(),this.scope.httpParams={},ref=this.scope.urlFilters;for(name in ref)values=ref[name],"severities"===name?name="severity":"orderBy"===name?name="order_by":"priorities"===name?name="priority":"assignedTo"===name?name="assigned_to":"createdBy"===name?name="owner":"statuses"===name?name="status":"types"===name&&(name="type"),this.scope.httpParams[name]=values;return promise=this.rs.issues.list(this.scope.projectId,this.scope.httpParams),this.loadIssuesRequests+=1,promise.index=this.loadIssuesRequests,promise.then(function(_this){return function(data){return promise.index===_this.loadIssuesRequests&&(_this.scope.issues=data.models,_this.scope.page=data.current,_this.scope.count=data.count,_this.scope.paginatedBy=data.paginatedBy),data}}(this))},IssuesController.prototype.loadInitialData=function(){var promise;return promise=this.loadProject(),promise.then(function(_this){return function(project){return _this.fillUsersAndRoles(project.users,project.roles),_this.initializeSubscription(),_this.q.all([_this.loadFilters(),_this.loadIssues()])}}(this))},IssuesController.prototype.saveCurrentFiltersTo=function(newFilter){var deferred;return deferred=this.q.defer(),this.rs.issues.getMyFilters(this.scope.projectId).then(function(_this){return function(filters){return filters[newFilter]=_this.location.search(),_this.rs.issues.storeMyFilters(_this.scope.projectId,filters).then(function(){return deferred.resolve()})}}(this)),deferred.promise},IssuesController.prototype.deleteMyFilter=function(filter){var deferred;return deferred=this.q.defer(),this.rs.issues.getMyFilters(this.scope.projectId).then(function(_this){return function(filters){return delete filters[filter],_this.rs.issues.storeMyFilters(_this.scope.projectId,filters).then(function(){return deferred.resolve()})}}(this)),deferred.promise},IssuesController.prototype.addNewIssue=function(){return this.rootscope.$broadcast("issueform:new",this.scope.project)},IssuesController.prototype.addIssuesInBulk=function(){return this.rootscope.$broadcast("issueform:bulk",this.scope.projectId)},IssuesController}(mixOf(taiga.Controller,taiga.PageMixin,taiga.FiltersMixin)),module.controller("IssuesController",IssuesController),IssuesDirective=function($log,$location,$template){var link,linkOrdering,linkPagination,template;return template=$template.get("issue/issue-paginator.html",!0),linkPagination=function($scope,$el,$attrs,$ctrl){var $pagEl,afterCurrent,atBegin,atEnd,beforeCurrent,getNumPages,renderPagination;return afterCurrent=2,beforeCurrent=4,atBegin=2,atEnd=2,$pagEl=$el.find(".issues-paginator"),getNumPages=function(){var numPages;return numPages=$scope.count/$scope.paginatedBy,numPages=parseInt(numPages,10)=numPages)return void $pagEl.hide();for($pagEl.show(),pages=[],options={},options.pages=pages,options.showPrevious=$scope.page>1,options.showNext=!($scope.page===numPages),cpage=$scope.page,i=j=1,ref=numPages;ref>=1?ref>=j:j>=ref;i=ref>=1?++j:--j)i===cpage+afterCurrent&&numPages>cpage+afterCurrent+atEnd?pages.push({classes:"dots",type:"dots"}):i===cpage-beforeCurrent&&cpage>atBegin+beforeCurrent?pages.push({classes:"dots",type:"dots"}):i>cpage+afterCurrent&&numPages-atEnd>=i||cpage-beforeCurrent>i&&i>atBegin||pages.push(i===cpage?{classes:"active",num:i,type:"page-active"}:{classes:"page",num:i,type:"page"});return $pagEl.html(template(options))},$scope.$watch("issues",function(value){return value?renderPagination():void 0}),$el.on("click",".issues-paginator a.next",function(event){return event.preventDefault(),$scope.$apply(function(){return $ctrl.selectFilter("page",$scope.page+1),$ctrl.loadIssues()})}),$el.on("click",".issues-paginator a.previous",function(event){return event.preventDefault(),$scope.$apply(function(){return $ctrl.selectFilter("page",$scope.page-1),$ctrl.loadIssues()})}),$el.on("click",".issues-paginator li.page > a",function(event){var pagenum,target;return event.preventDefault(),target=angular.element(event.currentTarget),pagenum=target.data("pagenum"),$scope.$apply(function(){return $ctrl.selectFilter("page",pagenum),$ctrl.loadIssues()})})},linkOrdering=function($scope,$el,$attrs,$ctrl){var colHeadElement,currentOrder,icon;return currentOrder=$ctrl.getUrlFilter("orderBy")||"created_date",currentOrder&&(icon=startswith(currentOrder,"-")?"icon-caret-up":"icon-caret-down",colHeadElement=$el.find(".row.title > div[data-fieldname='"+trim(currentOrder,"-")+"']"),colHeadElement.html(colHeadElement.html()+"")),$el.on("click",".row.title > div",function(event){var finalOrder,newOrder,target;return target=angular.element(event.currentTarget),currentOrder=$ctrl.getUrlFilter("orderBy"),newOrder=target.data("fieldname"),finalOrder=currentOrder===newOrder?"-"+newOrder:newOrder,$scope.$apply(function(){return $ctrl.replaceFilter("orderBy",finalOrder),$ctrl.storeFilters(),$ctrl.loadIssues().then(function(){return $el.find(".row.title > div > span.icon").remove(),icon=startswith(finalOrder,"-")?"icon-caret-up":"icon-caret-down",target.html(target.html()+"")})})})},link=function($scope,$el,$attrs){var $ctrl;return $ctrl=$el.controller(),linkOrdering($scope,$el,$attrs,$ctrl),linkPagination($scope,$el,$attrs,$ctrl),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgIssues",["$log","$tgLocation","$tgTemplate",IssuesDirective]),IssuesFiltersDirective=function($log,$location,$rs,$confirm,$loading,$template){var link,template,templateSelected;return template=$template.get("issue/issues-filters.html",!0),templateSelected=$template.get("issue/issues-filters-selected.html",!0),link=function($scope,$el){var $ctrl,initializeSelectedFilters,renderFilters,renderSelectedFilters,selectQFilter,selectedFilters,showCategories,showFilters,toggleFilterSelection;return $ctrl=$el.closest(".wrapper").controller(),selectedFilters=[],showFilters=function(title,type){return $el.find(".filters-cats").hide(),$el.find(".filter-list").removeClass("hidden"),$el.find("h2.breadcrumb").removeClass("hidden"),$el.find("h2 a.subfilter span.title").html(title),$el.find("h2 a.subfilter span.title").prop("data-type",type)},showCategories=function(){return $el.find(".filters-cats").show(),$el.find(".filter-list").addClass("hidden"),$el.find("h2.breadcrumb").addClass("hidden")},initializeSelectedFilters=function(filters){var j,len,name,val,values;selectedFilters=[];for(name in filters)for(values=filters[name],j=0,len=values.length;len>j;j++)val=values[j],val.selected&&selectedFilters.push(val);return renderSelectedFilters(selectedFilters)},renderSelectedFilters=function(selectedFilters){var html;return _.filter(selectedFilters,function(){return function(f){return f.color?f.style="border-left: 3px solid "+f.color:void 0}}(this)),html=templateSelected({filters:selectedFilters}),$el.find(".filters-applied").html(html),selectedFilters.length>0?$el.find(".save-filters").show():$el.find(".save-filters").hide()},renderFilters=function(filters){var html;return _.filter(filters,function(){return function(f){return f.color?f.style="border-left: 3px solid "+f.color:void 0}}(this)),html=template({filters:filters}),$el.find(".filter-list").html(html)},toggleFilterSelection=function(type,id){var currentFiltersType,filter,filterId,filters;return"myFilters"===type?($rs.issues.getMyFilters($scope.projectId).then(function(data){var filters,myFilters;return myFilters=data,filters=myFilters[id],filters.page=1,$ctrl.replaceAllFilters(filters),$ctrl.storeFilters(),$ctrl.loadIssues(),$ctrl.markSelectedFilters($scope.filters,filters),initializeSelectedFilters($scope.filters)}),null):(filters=$scope.filters[type],filterId="tags"===type?taiga.toString(id):id,filter=_.find(filters,{id:filterId}),filter.selected=!filter.selected,null===id&&(id="null"),filter.selected?(selectedFilters.push(filter),$scope.$apply(function(){return $ctrl.selectFilter(type,id),$ctrl.selectFilter("page",1),$ctrl.storeFilters(),$ctrl.loadIssues()})):(selectedFilters=_.reject(selectedFilters,filter),$scope.$apply(function(){return $ctrl.unselectFilter(type,id),$ctrl.selectFilter("page",1),$ctrl.storeFilters(),$ctrl.loadIssues()})),renderSelectedFilters(selectedFilters),currentFiltersType=$el.find("h2 a.subfilter span.title").prop("data-type"),type===currentFiltersType?renderFilters(_.reject(filters,"selected")):void 0)},$scope.$on("filters:loaded",function(ctx,filters){return initializeSelectedFilters(filters)}),$scope.$on("filters:issueupdate",function(ctx,filters){var html;return html=template({filters:filters.statuses}),$el.find(".filter-list").html(html)}),selectQFilter=debounceLeading(100,function(value){return void 0!==value?($ctrl.replaceFilter("page",null),0===value.length?($ctrl.replaceFilter("q",null),$ctrl.storeFilters()):($ctrl.replaceFilter("q",value),$ctrl.storeFilters()),$ctrl.loadIssues()):void 0}),$scope.$watch("filtersQ",selectQFilter),$el.on("click",".filters-cats > ul > li > a",function(event){var tags,target;return event.preventDefault(),target=angular.element(event.currentTarget),tags=$scope.filters[target.data("type")],renderFilters(_.reject(tags,"selected")),showFilters(target.attr("title"),target.data("type"))}),$el.on("click",".filters-inner > .filters-step-cat > .breadcrumb > .back",function(event){return event.preventDefault(),showCategories($el)}),$el.on("click",".filters-applied a",function(event){var id,target,type;return event.preventDefault(),target=angular.element(event.currentTarget),id=target.data("id")||null,type=target.data("type"),toggleFilterSelection(type,id)}),$el.on("click",".filter-list .single-filter",function(event){var id,target,type;return event.preventDefault(),target=angular.element(event.currentTarget),target.toggleClass("active"),id=target.data("id")||null,type=target.data("type"),"myFilters"===type&&target.removeClass("active"),toggleFilterSelection(type,id)}),$el.on("click",".filter-list .single-filter .icon-delete",function(event){var customFilterName,message,target,title;return event.preventDefault(),event.stopPropagation(),target=angular.element(event.currentTarget),customFilterName=target.parent().data("id"),title="Delete custom filter",message="the custom filter '"+customFilterName+"'",$confirm.askOnDelete(title,message).then(function(finish){var promise;return promise=$ctrl.deleteMyFilter(customFilterName),promise.then(function(){return promise=$ctrl.loadMyFilters(),promise.then(function(filters){return finish(),$scope.filters.myFilters=filters,renderFilters($scope.filters.myFilters)}),promise.then(null,function(){return finish()})}),promise.then(null,function(){return finish(!1),$confirm.notify("error")})})}),$el.on("click",".save-filters",function(event){return event.preventDefault(),renderFilters($scope.filters.myFilters),showFilters("My filters","myFilters"),$el.find(".save-filters").hide(),$el.find(".my-filter-name").removeClass("hidden"),$el.find(".my-filter-name").focus()}),$el.on("keyup",".my-filter-name",function(event){var newFilter,promise,target;return event.preventDefault(),13===event.keyCode?(target=angular.element(event.currentTarget),newFilter=target.val(),$loading.start($el.find(".new")),promise=$ctrl.saveCurrentFiltersTo(newFilter),promise.then(function(){var loadPromise;return loadPromise=$ctrl.loadMyFilters(),loadPromise.then(function(filters){var currentfilterstype;return $loading.finish($el.find(".new")),$scope.filters.myFilters=filters,currentfilterstype=$el.find("h2 a.subfilter span.title").prop("data-type"),"myFilters"===currentfilterstype&&renderFilters($scope.filters.myFilters),$el.find(".my-filter-name").addClass("hidden"),$el.find(".save-filters").show()}),loadPromise.then(null,function(){return $loading.finish($el.find(".new")),$confirm.notify("error","Error loading custom filters")})}),promise.then(null,function(){return $loading.finish($el.find(".new")),$el.find(".my-filter-name").val(newFilter).focus().select(),$confirm.notify("error","Filter not saved")})):27===event.keyCode?($el.find(".my-filter-name").val(""),$el.find(".my-filter-name").addClass("hidden"),$el.find(".save-filters").show()):void 0})},{link:link}},module.directive("tgIssuesFilters",["$log","$tgLocation","$tgResources","$tgConfirm","$tgLoading","$tgTemplate",IssuesFiltersDirective]),IssueStatusInlineEditionDirective=function($repo,$template,$rootscope){var link,selectionTemplate,updateIssueStatus;return selectionTemplate=$template.get("issue/issue-status-inline-edition-selection.html",!0),updateIssueStatus=function($el,issue,issueStatusById){var issueStatusDom,issueStatusDomParent,status;return issueStatusDomParent=$el.find(".issue-status"),issueStatusDom=$el.find(".issue-status .issue-status-bind"),status=issueStatusById[issue.status],status?(issueStatusDom.text(status.name),issueStatusDom.prop("title",status.name),issueStatusDomParent.css("color",status.color)):void 0},link=function($scope,$el,$attrs){var $ctrl,issue;return $ctrl=$el.controller(),issue=$scope.$eval($attrs.tgIssueStatusInlineEdition),$el.on("click",".issue-status",function(event){return event.preventDefault(),event.stopPropagation(),$el.find(".pop-status").popover().open()}),$el.on("click",".status",function(event){var filter,j,len,ref,target;for(event.preventDefault(),event.stopPropagation(),target=angular.element(event.currentTarget),ref=$scope.filters.statuses,j=0,len=ref.length;len>j;j++)filter=ref[j],filter.id===issue.status&&filter.count--;return issue.status=target.data("status-id"),$el.find(".pop-status").popover().close(),updateIssueStatus($el,issue,$scope.issueStatusById),$scope.$apply(function(){var k,len1,ref1;for($repo.save(issue).then,ref1=$scope.filters.statuses,k=0,len1=ref1.length;len1>k;k++)filter=ref1[k],filter.id===issue.status&&filter.count++;return $rootscope.$broadcast("filters:issueupdate",$scope.filters)})}),taiga.bindOnce($scope,"project",function(project){return $el.append(selectionTemplate({statuses:project.issue_statuses})),updateIssueStatus($el,issue,$scope.issueStatusById),-1===project.my_permissions.indexOf("modify_issue")?($el.unbind("click"),$el.find("a").addClass("not-clickable")):void 0}),$scope.$watch($attrs.tgIssueStatusInlineEdition,function(){return function(val){return updateIssueStatus($el,val,$scope.issueStatusById)}}(this)),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgIssueStatusInlineEdition",["$tgRepo","$tgTemplate","$rootScope",IssueStatusInlineEditionDirective]),IssueAssignedToInlineEditionDirective=function($repo,$rootscope){var link,template;return template=_.template('<%- name %>\n
<%- name %>
'),link=function($scope,$el,$attrs){var $ctrl,issue,updateIssue;return updateIssue=function(issue){var ctx,member;return ctx={name:"Unassigned",imgurl:"/images/unnamed.png"},member=$scope.usersById[issue.assigned_to],member&&(ctx.imgurl=member.photo,ctx.name=member.full_name_display),$el.find(".avatar").html(template(ctx)),$el.find(".issue-assignedto").attr("title",ctx.name)},$ctrl=$el.controller(),issue=$scope.$eval($attrs.tgIssueAssignedToInlineEdition),updateIssue(issue),$el.on("click",".issue-assignedto",function(){return $rootscope.$broadcast("assigned-to:add",issue)}),taiga.bindOnce($scope,"project",function(project){return-1===project.my_permissions.indexOf("modify_issue")?($el.unbind("click"),$el.find("a").addClass("not-clickable")):void 0}),$scope.$on("assigned-to:added",function(){return function(ctx,userId,updatedIssue){return updatedIssue.id===issue.id?(updatedIssue.assigned_to=userId,$repo.save(updatedIssue),updateIssue(updatedIssue)):void 0}}(this)),$scope.$watch($attrs.tgIssueAssignedToInlineEdition,function(){return function(val){return updateIssue(val)}}(this)),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgIssueAssignedToInlineEdition",["$tgRepo","$rootScope",IssueAssignedToInlineEditionDirective])}.call(this),function(){var UsClientRequirementButtonDirective,UsStatusButtonDirective,UsStatusDisplayDirective,UsTasksProgressDisplayDirective,UsTeamRequirementButtonDirective,UserStoryDetailController,bindOnce,groupBy,mixOf,module,taiga,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,mixOf=this.taiga.mixOf,groupBy=this.taiga.groupBy,bindOnce=this.taiga.bindOnce,module=angular.module("taigaUserStories"),UserStoryDetailController=function(superClass){function UserStoryDetailController(scope,rootscope,repo,confirm,rs,params,q,location,log,appTitle,navUrls,analytics,tgLoader){var promise;this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.confirm=confirm,this.rs=rs,this.params=params,this.q=q,this.location=location,this.log=log,this.appTitle=appTitle,this.navUrls=navUrls,this.analytics=analytics,this.scope.usRef=this.params.usref,this.scope.sectionName="User Story Details",this.initializeEventHandlers(),promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.appTitle.set(_this.scope.us.subject+" - "+_this.scope.project.name),_this.initializeOnDeleteGoToUrl()}}(this)),promise.then(null,this.onInitialDataError.bind(this)),promise["finally"](tgLoader.pageLoaded)}return extend(UserStoryDetailController,superClass),UserStoryDetailController.$inject=["$scope","$rootScope","$tgRepo","$tgConfirm","$tgResources","$routeParams","$q","$tgLocation","$log","$appTitle","$tgNavUrls","$tgAnalytics","tgLoader"],UserStoryDetailController.prototype.initializeEventHandlers=function(){return this.scope.$on("related-tasks:update",function(_this){return function(){return _this.loadUs(),_this.scope.tasks=_.clone(_this.scope.tasks,!1)}}(this)),this.scope.$on("attachment:create",function(_this){return function(){return _this.analytics.trackEvent("attachment","create","create attachment on userstory",1),_this.rootscope.$broadcast("history:reload")}}(this)),this.scope.$on("attachment:edit",function(_this){return function(){return _this.rootscope.$broadcast("history:reload")}}(this)),this.scope.$on("attachment:delete",function(_this){return function(){return _this.rootscope.$broadcast("history:reload")}}(this)),this.scope.$on("custom-attributes-values:edit",function(_this){return function(){return _this.rootscope.$broadcast("history:reload")}}(this))},UserStoryDetailController.prototype.initializeOnDeleteGoToUrl=function(){var ctx;return ctx={project:this.scope.project.slug},this.scope.onDeleteGoToUrl=this.navUrls.resolve("project",ctx),this.scope.project.is_backlog_activated?this.scope.us.milestone?(ctx.sprint=this.scope.sprint.slug,this.scope.onDeleteGoToUrl=this.navUrls.resolve("project-taskboard",ctx)):this.scope.onDeleteGoToUrl=this.navUrls.resolve("project-backlog",ctx):this.scope.project.is_kanban_activated?this.scope.onDeleteGoToUrl=this.navUrls.resolve("project-kanban",ctx):void 0},UserStoryDetailController.prototype.loadProject=function(){return this.rs.projects.getBySlug(this.params.pslug).then(function(_this){return function(project){return _this.scope.projectId=project.id,_this.scope.project=project,_this.scope.$emit("project:loaded",project),_this.scope.statusList=project.us_statuses,_this.scope.statusById=groupBy(project.us_statuses,function(x){return x.id}),_this.scope.taskStatusById=groupBy(project.task_statuses,function(x){return x.id}),_this.scope.membersById=groupBy(project.memberships,function(x){return x.user}),_this.scope.pointsList=_.sortBy(project.points,"order"),_this.scope.pointsById=groupBy(_this.scope.pointsList,function(e){return e.id}),project}}(this))},UserStoryDetailController.prototype.loadUs=function(){return this.rs.userstories.getByRef(this.scope.projectId,this.params.usref).then(function(_this){return function(us){var ctx;return _this.scope.us=us,_this.scope.usId=us.id,_this.scope.commentModel=us,null!=_this.scope.us.neighbors.previous.ref&&(ctx={project:_this.scope.project.slug,ref:_this.scope.us.neighbors.previous.ref},_this.scope.previousUrl=_this.navUrls.resolve("project-userstories-detail",ctx)),null!=_this.scope.us.neighbors.next.ref&&(ctx={project:_this.scope.project.slug,ref:_this.scope.us.neighbors.next.ref},_this.scope.nextUrl=_this.navUrls.resolve("project-userstories-detail",ctx)),us}}(this))},UserStoryDetailController.prototype.loadSprint=function(){return this.scope.us.milestone?this.rs.sprints.get(this.scope.us.project,this.scope.us.milestone).then(function(_this){return function(sprint){return _this.scope.sprint=sprint,sprint}}(this)):void 0},UserStoryDetailController.prototype.loadTasks=function(){return this.rs.tasks.list(this.scope.projectId,null,this.scope.usId).then(function(_this){return function(tasks){return _this.scope.tasks=tasks,tasks}}(this))},UserStoryDetailController.prototype.loadInitialData=function(){var promise;return promise=this.loadProject(),promise.then(function(_this){return function(project){return _this.fillUsersAndRoles(project.users,project.roles),_this.loadUs().then(function(){return _this.q.all([_this.loadSprint(),_this.loadTasks()])})}}(this))},UserStoryDetailController}(mixOf(taiga.Controller,taiga.PageMixin)),module.controller("UserStoryDetailController",UserStoryDetailController),UsStatusDisplayDirective=function($template){var link,template;return template=$template.get("common/components/status-display.html",!0),link=function($scope,$el,$attrs){var render;return render=function(us){var html;return html=template({is_closed:us.is_closed,status:$scope.statusById[us.status]}),$el.html(html)},$scope.$watch($attrs.ngModel,function(us){return null!=us?render(us):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgUsStatusDisplay",["$tgTemplate",UsStatusDisplayDirective]),UsTasksProgressDisplayDirective=function($template){var link,template;return template=$template.get("us/us-task-progress.html",!0),link=function($scope,$el,$attrs){var render;return render=function(tasks){var html,progress,totalClosedTasks,totalTasks;return totalTasks=tasks.length,totalClosedTasks=_.filter(tasks,function(){return function(task){return $scope.taskStatusById[task.status].is_closed}}(this)).length,progress=totalTasks>0?100*totalClosedTasks/totalTasks:0,html=template({totalTasks:totalTasks,totalClosedTasks:totalClosedTasks,progress:progress}),$el.html(html)},$scope.$watch($attrs.ngModel,function(tasks){return null!=tasks?render(tasks):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgUsTasksProgressDisplay",["$tgTemplate",UsTasksProgressDisplayDirective]),UsStatusButtonDirective=function($rootScope,$repo,$confirm,$loading,$qqueue,$template){var link,template;return template=$template.get("us/us-status-button.html",!0),link=function($scope,$el,$attrs,$model){var isEditable,render,save;return isEditable=function(){return-1!==$scope.project.my_permissions.indexOf("modify_us")},render=function(){return function(us){var html,status;return status=$scope.statusById[us.status],html=template({status:status,statuses:$scope.statusList,editable:isEditable()}),$el.html(html)}}(this),save=$qqueue.bindAdd(function(){return function(status){var onError,onSuccess,us;return us=$model.$modelValue.clone(),us.status=status,$.fn.popover().closeAll(),$model.$setViewValue(us),onSuccess=function(){return $confirm.notify("success"),$rootScope.$broadcast("history:reload"),$loading.finish($el.find(".level-name"))},onError=function(){return $confirm.notify("error"),us.revert(),$model.$setViewValue(us),$loading.finish($el.find(".level-name"))},$loading.start($el.find(".level-name")),$repo.save($model.$modelValue).then(onSuccess,onError)}}(this)),$el.on("click",".status-data",function(event){return event.preventDefault(),event.stopPropagation(),isEditable()?$el.find(".pop-status").popover().open():void 0}),$el.on("click",".status",function(event){var status,target;return event.preventDefault(),event.stopPropagation(),isEditable()?(target=angular.element(event.currentTarget),status=target.data("status-id"),save(status)):void 0}),$scope.$watch($attrs.ngModel,function(us){return us?render(us):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgUsStatusButton",["$rootScope","$tgRepo","$tgConfirm","$tgLoading","$tgQqueue","$tgTemplate",UsStatusButtonDirective]),UsTeamRequirementButtonDirective=function($rootscope,$tgrepo,$confirm,$loading,$qqueue,$template){var link,template;return template=$template.get("us/us-team-requirement-button.html",!0),link=function($scope,$el,$attrs,$model){var canEdit,render,save;return canEdit=function(){return-1!==$scope.project.my_permissions.indexOf("modify_us")},render=function(us){var ctx,html;return canEdit()||us.team_requirement?(ctx={canEdit:canEdit(),isRequired:us.team_requirement},html=template(ctx),$el.html(html)):void $el.html("")},save=$qqueue.bindAdd(function(){return function(team_requirement){var promise,us;return us=$model.$modelValue.clone(),us.team_requirement=team_requirement,$model.$setViewValue(us),$loading.start($el.find("label")),promise=$tgrepo.save($model.$modelValue),promise.then(function(){return $loading.finish($el.find("label")),$rootscope.$broadcast("history:reload")}),promise.then(null,function(){return $loading.finish($el.find("label")),$confirm.notify("error"),us.revert(),$model.$setViewValue(us)})}}(this)),$el.on("click",".team-requirement",function(){var team_requirement;if(canEdit())return team_requirement=!$model.$modelValue.team_requirement,save(team_requirement)}),$scope.$watch($attrs.ngModel,function(us){return us?render(us):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgUsTeamRequirementButton",["$rootScope","$tgRepo","$tgConfirm","$tgLoading","$tgQqueue","$tgTemplate",UsTeamRequirementButtonDirective]),UsClientRequirementButtonDirective=function($rootscope,$tgrepo,$confirm,$loading,$qqueue,$template){var link,template;return template=$template.get("us/us-client-requirement-button.html",!0),link=function($scope,$el,$attrs,$model){var canEdit,render,save;return canEdit=function(){return-1!==$scope.project.my_permissions.indexOf("modify_us")},render=function(us){var ctx,html;return canEdit()||us.client_requirement?(ctx={canEdit:canEdit(),isRequired:us.client_requirement},html=template(ctx),$el.html(html)):void $el.html("")},save=$qqueue.bindAdd(function(){return function(client_requirement){var promise,us;return us=$model.$modelValue.clone(),us.client_requirement=client_requirement,$model.$setViewValue(us),$loading.start($el.find("label")),promise=$tgrepo.save($model.$modelValue),promise.then(function(){return $loading.finish($el.find("label")),$rootscope.$broadcast("history:reload")}),promise.then(null,function(){return $loading.finish($el.find("label")),$confirm.notify("error"),us.revert(),$model.$setViewValue(us)})}}(this)),$el.on("click",".client-requirement",function(){var client_requirement;if(canEdit())return client_requirement=!$model.$modelValue.client_requirement,save(client_requirement)}),$scope.$watch($attrs.ngModel,function(us){return us?render(us):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgUsClientRequirementButton",["$rootScope","$tgRepo","$tgConfirm","$tgLoading","$tgQqueue","$tgTemplate",UsClientRequirementButtonDirective])}.call(this),function(){var TaskDetailController,TaskIsIocaineButtonDirective,TaskStatusButtonDirective,TaskStatusDisplayDirective,groupBy,mixOf,module,taiga,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,mixOf=this.taiga.mixOf,groupBy=this.taiga.groupBy,module=angular.module("taigaTasks"),TaskDetailController=function(superClass){function TaskDetailController(scope,rootscope,repo,confirm,rs,params,q,location,log,appTitle,navUrls,analytics,tgLoader){var promise; -this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.confirm=confirm,this.rs=rs,this.params=params,this.q=q,this.location=location,this.log=log,this.appTitle=appTitle,this.navUrls=navUrls,this.analytics=analytics,this.scope.taskRef=this.params.taskref,this.scope.sectionName="Task Details",this.initializeEventHandlers(),promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.appTitle.set(_this.scope.task.subject+" - "+_this.scope.project.name),_this.initializeOnDeleteGoToUrl()}}(this)),promise.then(null,this.onInitialDataError.bind(this)),promise["finally"](tgLoader.pageLoaded)}return extend(TaskDetailController,superClass),TaskDetailController.$inject=["$scope","$rootScope","$tgRepo","$tgConfirm","$tgResources","$routeParams","$q","$tgLocation","$log","$appTitle","$tgNavUrls","$tgAnalytics","tgLoader"],TaskDetailController.prototype.initializeEventHandlers=function(){return this.scope.$on("attachment:create",function(_this){return function(){return _this.analytics.trackEvent("attachment","create","create attachment on task",1),_this.rootscope.$broadcast("history:reload")}}(this)),this.scope.$on("attachment:edit",function(_this){return function(){return _this.rootscope.$broadcast("history:reload")}}(this)),this.scope.$on("attachment:delete",function(_this){return function(){return _this.rootscope.$broadcast("history:reload")}}(this)),this.scope.$on("custom-attributes-values:edit",function(_this){return function(){return _this.rootscope.$broadcast("history:reload")}}(this))},TaskDetailController.prototype.initializeOnDeleteGoToUrl=function(){var ctx;if(ctx={project:this.scope.project.slug},this.scope.onDeleteGoToUrl=this.navUrls.resolve("project",ctx),this.scope.project.is_backlog_activated){if(this.scope.task.milestone)return ctx.sprint=this.scope.sprint.slug,this.scope.onDeleteGoToUrl=this.navUrls.resolve("project-taskboard",ctx);if(this.scope.task.us)return ctx.ref=this.scope.us.ref,this.scope.onDeleteGoToUrl=this.navUrls.resolve("project-userstories-detail",ctx)}else if(this.scope.project.is_kanban_activated&&this.scope.us)return ctx.ref=this.scope.us.ref,this.scope.onDeleteGoToUrl=this.navUrls.resolve("project-userstories-detail",ctx)},TaskDetailController.prototype.loadProject=function(){return this.rs.projects.getBySlug(this.params.pslug).then(function(_this){return function(project){return _this.scope.projectId=project.id,_this.scope.project=project,_this.scope.$emit("project:loaded",project),_this.scope.statusList=project.task_statuses,_this.scope.statusById=groupBy(project.task_statuses,function(x){return x.id}),_this.scope.membersById=groupBy(project.memberships,function(x){return x.user}),project}}(this))},TaskDetailController.prototype.loadTask=function(){return this.rs.tasks.getByRef(this.scope.projectId,this.params.taskref).then(function(_this){return function(task){var ctx;return _this.scope.task=task,_this.scope.taskId=task.id,_this.scope.commentModel=task,null!=_this.scope.task.neighbors.previous.ref&&(ctx={project:_this.scope.project.slug,ref:_this.scope.task.neighbors.previous.ref},_this.scope.previousUrl=_this.navUrls.resolve("project-tasks-detail",ctx)),null!=_this.scope.task.neighbors.next.ref&&(ctx={project:_this.scope.project.slug,ref:_this.scope.task.neighbors.next.ref},_this.scope.nextUrl=_this.navUrls.resolve("project-tasks-detail",ctx)),task}}(this))},TaskDetailController.prototype.loadSprint=function(){return this.scope.task.milestone?this.rs.sprints.get(this.scope.task.project,this.scope.task.milestone).then(function(_this){return function(sprint){return _this.scope.sprint=sprint,sprint}}(this)):void 0},TaskDetailController.prototype.loadUserStory=function(){return this.scope.task.user_story?this.rs.userstories.get(this.scope.task.project,this.scope.task.user_story).then(function(_this){return function(us){return _this.scope.us=us,us}}(this)):void 0},TaskDetailController.prototype.loadInitialData=function(){var promise;return promise=this.loadProject(),promise.then(function(_this){return function(project){return _this.fillUsersAndRoles(project.users,project.roles),_this.loadTask().then(function(){return _this.q.all([_this.loadSprint(),_this.loadUserStory()])})}}(this))},TaskDetailController}(mixOf(taiga.Controller,taiga.PageMixin)),module.controller("TaskDetailController",TaskDetailController),TaskStatusDisplayDirective=function($template){var link,template;return template=$template.get("common/components/status-display.html",!0),link=function($scope,$el,$attrs){var render;return render=function(task){var html,status;return status=$scope.statusById[task.status],html=template({is_closed:status.is_closed,status:status}),$el.html(html)},$scope.$watch($attrs.ngModel,function(task){return null!=task?render(task):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgTaskStatusDisplay",["$tgTemplate",TaskStatusDisplayDirective]),TaskStatusButtonDirective=function($rootScope,$repo,$confirm,$loading,$qqueue){var link,template;return template=_.template('
\n \n <%- status.name %>\n <% if(editable){ %><% }%>\n status\n\n
    \n <% _.each(statuses, function(st) { %>\n
  • <%- st.name %>
  • \n <% }); %>\n
\n
'),link=function($scope,$el,$attrs,$model){var isEditable,render,save;return isEditable=function(){return-1!==$scope.project.my_permissions.indexOf("modify_task")},render=function(){return function(task){var html,status;return status=$scope.statusById[task.status],html=template({status:status,statuses:$scope.statusList,editable:isEditable()}),$el.html(html)}}(this),save=$qqueue.bindAdd(function(){return function(status){var onError,onSuccess,task;return task=$model.$modelValue.clone(),task.status=status,$model.$setViewValue(task),onSuccess=function(){return $confirm.notify("success"),$rootScope.$broadcast("history:reload"),$loading.finish($el.find(".level-name"))},onError=function(){return $confirm.notify("error"),task.revert(),$model.$setViewValue(task),$loading.finish($el.find(".level-name"))},$loading.start($el.find(".level-name")),$repo.save($model.$modelValue).then(onSuccess,onError)}}(this)),$el.on("click",".status-data",function(event){return event.preventDefault(),event.stopPropagation(),isEditable()?$el.find(".pop-status").popover().open():void 0}),$el.on("click",".status",function(event){var target;return event.preventDefault(),event.stopPropagation(),isEditable()?(target=angular.element(event.currentTarget),$.fn.popover().closeAll(),save(target.data("status-id"))):void 0}),$scope.$watch($attrs.ngModel,function(task){return task?render(task):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgTaskStatusButton",["$rootScope","$tgRepo","$tgConfirm","$tgLoading","$tgQqueue",TaskStatusButtonDirective]),TaskIsIocaineButtonDirective=function($rootscope,$tgrepo,$confirm,$loading,$qqueue){var link,template;return template=_.template('
\n \n \n
'),link=function($scope,$el,$attrs,$model){var isEditable,render,save;return isEditable=function(){return-1!==$scope.project.my_permissions.indexOf("modify_task")},render=function(task){var ctx,html;return isEditable()||task.is_iocaine?(ctx={isIocaine:task.is_iocaine,isEditable:isEditable()},html=template(ctx),$el.html(html)):void $el.html("")},save=$qqueue.bindAdd(function(){return function(is_iocaine){var promise,task;return task=$model.$modelValue.clone(),task.is_iocaine=is_iocaine,$model.$setViewValue(task),$loading.start($el.find("label")),promise=$tgrepo.save(task),promise.then(function(){return $confirm.notify("success"),$rootscope.$broadcast("history:reload")}),promise.then(null,function(){return task.revert(),$model.$setViewValue(task),$confirm.notify("error")}),promise["finally"](function(){return $loading.finish($el.find("label"))})}}(this)),$el.on("click",".is-iocaine",function(){var is_iocaine;if(isEditable())return is_iocaine=!$model.$modelValue.is_iocaine,save(is_iocaine)}),$scope.$watch($attrs.ngModel,function(task){return task?render(task):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgTaskIsIocaineButton",["$rootScope","$tgRepo","$tgConfirm","$tgLoading","$tgQqueue",TaskIsIocaineButtonDirective])}.call(this),function(){var LeaveProjectDirective,TeamController,TeamFiltersDirective,TeamMemberCurrentUserDirective,TeamMemberStatsDirective,TeamMembersDirective,mixOf,module,taiga,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,mixOf=this.taiga.mixOf,module=angular.module("taigaTeam"),TeamController=function(superClass){function TeamController(scope,rootscope,repo,rs,params,q,location,navUrls,appTitle,auth,tgLoader){var promise;this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.rs=rs,this.params=params,this.q=q,this.location=location,this.navUrls=navUrls,this.appTitle=appTitle,this.auth=auth,this.scope.sectionName="Team",promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.appTitle.set("Team - "+_this.scope.project.name)}}(this)),promise.then(null,this.onInitialDataError.bind(this)),promise["finally"](tgLoader.pageLoaded)}return extend(TeamController,superClass),TeamController.$inject=["$scope","$rootScope","$tgRepo","$tgResources","$routeParams","$q","$location","$tgNavUrls","$appTitle","$tgAuth","tgLoader"],TeamController.prototype.setRole=function(role){return this.scope.filtersRole=role?role:null},TeamController.prototype.loadMembers=function(){return this.rs.memberships.list(this.scope.projectId,{},!1).then(function(_this){return function(data){var currentUser,i,len,membership,ref;for(currentUser=_this.auth.getUser(),null!=currentUser&&null==currentUser.photo&&(currentUser.photo="/images/unnamed.png"),_this.scope.currentUser=_.find(data,function(membership){return null!=currentUser&&membership.user===currentUser.id}),_this.scope.totals={},_.forEach(data,function(membership){return _this.scope.totals[membership.user]=0}),_this.scope.memberships=_.filter(data,function(membership){return membership.user&&(null==currentUser||membership.user!==currentUser.id)&&membership.is_user_active?membership:void 0}),ref=_this.scope.memberships,i=0,len=ref.length;len>i;i++)membership=ref[i],null==membership.photo&&(membership.photo="/images/unnamed.png");return data}}(this))},TeamController.prototype.loadProject=function(){return this.rs.projects.getBySlug(this.params.pslug).then(function(_this){return function(project){return _this.scope.projectId=project.id,_this.scope.project=project,_this.scope.$emit("project:loaded",project),_this.scope.issuesEnabled=project.is_issues_activated,_this.scope.tasksEnabled=project.is_kanban_activated||project.is_backlog_activated,_this.scope.wikiEnabled=project.is_wiki_activated,project}}(this))},TeamController.prototype.loadMemberStats=function(){return this.rs.projects.memberStats(this.scope.projectId).then(function(_this){return function(stats){var totals;return totals={},_.forEach(_this.scope.totals,function(total,userId){var vals;return vals=_.map(stats,function(memberStats){return memberStats[userId]}),total=_.reduce(vals,function(sum,el){return sum+el}),_this.scope.totals[userId]=total}),_this.scope.stats=_this.processStats(stats),_this.scope.stats.totals=_this.scope.totals}}(this))},TeamController.prototype.processStat=function(stat){var max,min,singleStat;return max=_.max(stat),min=_.min(stat),singleStat=_.map(stat,function(value,key){return value===min?[key,.1]:value===max?[key,1]:[key,.5*value/max]}),singleStat=_.object(singleStat)},TeamController.prototype.processStats=function(stats){var key,value;for(key in stats)value=stats[key],stats[key]=this.processStat(value);return stats},TeamController.prototype.loadInitialData=function(){var promise;return promise=this.loadProject(),promise.then(function(_this){return function(project){return _this.fillUsersAndRoles(project.users,project.roles),_this.loadMembers().then(function(){return _this.loadMemberStats()})}}(this))},TeamController}(mixOf(taiga.Controller,taiga.PageMixin)),module.controller("TeamController",TeamController),TeamFiltersDirective=function(){return{templateUrl:"team/team-filter.html"}},module.directive("tgTeamFilters",[TeamFiltersDirective]),TeamMemberStatsDirective=function(){return{templateUrl:"team/team-member-stats.html",scope:{stats:"=",userId:"=user",issuesEnabled:"=issuesenabled",tasksEnabled:"=tasksenabled",wikiEnabled:"=wikienabled"}}},module.directive("tgTeamMemberStats",TeamMemberStatsDirective),TeamMemberCurrentUserDirective=function(){return{templateUrl:"team/team-member-current-user.html",scope:{projectId:"=projectid",currentUser:"=currentuser",stats:"=",issuesEnabled:"=issuesenabled",tasksEnabled:"=tasksenabled",wikiEnabled:"=wikienabled"}}},module.directive("tgTeamCurrentUser",TeamMemberCurrentUserDirective),TeamMembersDirective=function(){var template;return template="team/team-members.html",{templateUrl:template,scope:{memberships:"=",filtersQ:"=filtersq",filtersRole:"=filtersrole",stats:"=",issuesEnabled:"=issuesenabled",tasksEnabled:"=tasksenabled",wikiEnabled:"=wikienabled"}}},module.directive("tgTeamMembers",TeamMembersDirective),LeaveProjectDirective=function($repo,$confirm,$location,$rs,$navurls){var link;return link=function($scope,$el,$attrs){return $scope.leave=function(){return $confirm.ask("Leave this project","Are you sure you want to leave the project?").then(function(){return function(finish){var promise;return promise=$rs.projects.leave($attrs.projectid),promise.then(function(){return finish(),$confirm.notify("success"),$location.path($navurls.resolve("home"))}),promise.then(null,function(response){return finish(),$confirm.notify("error",response.data._error_message)})}}(this))}},{scope:{},templateUrl:"team/leave-project.html",link:link}},module.directive("tgLeaveProject",["$tgRepo","$tgConfirm","$tgLocation","$tgResources","$tgNavUrls",LeaveProjectDirective]),module.filter("membersRoleFilter",function(){return function(input,filtersRole){return null!=filtersRole?_.filter(input,{role:filtersRole.id}):input}})}.call(this),function(){var EditableWikiContentDirective,WikiDetailController,WikiSummaryDirective,bindOnce,debounce,groupBy,mixOf,module,taiga,unslugify,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,mixOf=this.taiga.mixOf,groupBy=this.taiga.groupBy,bindOnce=this.taiga.bindOnce,unslugify=this.taiga.unslugify,debounce=this.taiga.debounce,module=angular.module("taigaWiki"),WikiDetailController=function(superClass){function WikiDetailController(scope,rootscope,repo,model,confirm,rs,params,q,location,filter,log,appTitle,navUrls,analytics,tgLoader){var promise;this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.model=model,this.confirm=confirm,this.rs=rs,this.params=params,this.q=q,this.location=location,this.filter=filter,this.log=log,this.appTitle=appTitle,this.navUrls=navUrls,this.analytics=analytics,this.scope.projectSlug=this.params.pslug,this.scope.wikiSlug=this.params.slug,this.scope.sectionName="Wiki",promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.appTitle.set("Wiki - "+_this.scope.project.name)}}(this)),promise.then(null,this.onInitialDataError.bind(this)),promise["finally"](tgLoader.pageLoaded)}return extend(WikiDetailController,superClass),WikiDetailController.$inject=["$scope","$rootScope","$tgRepo","$tgModel","$tgConfirm","$tgResources","$routeParams","$q","$tgLocation","$filter","$log","$appTitle","$tgNavUrls","$tgAnalytics","tgLoader"],WikiDetailController.prototype.loadProject=function(){return this.rs.projects.getBySlug(this.params.pslug).then(function(_this){return function(project){return project.is_wiki_activated||_this.location.path(_this.navUrls.resolve("permission-denied")),_this.scope.projectId=project.id,_this.scope.project=project,_this.scope.$emit("project:loaded",project),_this.scope.membersById=groupBy(project.memberships,function(x){return x.user}),project}}(this))},WikiDetailController.prototype.loadWiki=function(){var promise;return promise=this.rs.wiki.getBySlug(this.scope.projectId,this.params.slug),promise.then(function(_this){return function(wiki){return _this.scope.wiki=wiki,_this.scope.wikiId=wiki.id,_this.scope.wiki}}(this)),promise.then(null,function(_this){return function(){var data;return _this.scope.wikiId=null,-1===_this.scope.project.my_permissions.indexOf("add_wiki_page")?null:(data={project:_this.scope.projectId,slug:_this.scope.wikiSlug,content:""},_this.scope.wiki=_this.model.make_model("wiki",data),_this.scope.wiki)}}(this))},WikiDetailController.prototype.loadWikiLinks=function(){return this.rs.wiki.listLinks(this.scope.projectId).then(function(_this){return function(wikiLinks){return _this.scope.wikiLinks=wikiLinks}}(this))},WikiDetailController.prototype.loadInitialData=function(){var promise;return promise=this.loadProject(),promise.then(function(_this){return function(project){return _this.fillUsersAndRoles(project.users,project.roles),_this.q.all([_this.loadWikiLinks(),_this.loadWiki()])}}(this))},WikiDetailController.prototype["delete"]=function(){var message,title;return title="Delete Wiki Page",message=unslugify(this.scope.wiki.slug),this.confirm.askOnDelete(title,message).then(function(_this){return function(finish){var onError,onSuccess;return onSuccess=function(){var ctx;return finish(),ctx={project:_this.scope.projectSlug},_this.location.path(_this.navUrls.resolve("project-wiki",ctx)),_this.confirm.notify("success")},onError=function(){return finish(!1),_this.confirm.notify("error")},_this.repo.remove(_this.scope.wiki).then(onSuccess,onError)}}(this))},WikiDetailController}(mixOf(taiga.Controller,taiga.PageMixin)),module.controller("WikiDetailController",WikiDetailController),WikiSummaryDirective=function($log,$template){var link,template;return template=$template.get("wiki/wiki-summary.html",!0),link=function($scope,$el,$attrs){var render;return render=function(wiki){var ctx,html,user;return null==$scope.usersById?$log.error("WikiSummaryDirective requires userById set in scope."):user=$scope.usersById[wiki.last_modifier],user=void 0===user?{name:"unknown",imgUrl:"/images/unnamed.png"}:{name:user.full_name_display,imgUrl:user.photo},ctx={totalEditions:wiki.editions,lastModifiedDate:moment(wiki.modified_date).format("DD MMM YYYY HH:mm"),user:user},html=template(ctx),$el.html(html)},$scope.$watch($attrs.ngModel,function(wikiPage){return wikiPage?render(wikiPage):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgWikiSummary",["$log","$tgTemplate",WikiSummaryDirective]),EditableWikiContentDirective=function($window,$document,$repo,$confirm,$loading,$analytics,$qqueue){var link;return link=function($scope,$el,$attrs,$model){var cancelEdition,disableEdition,getSelectedText,isEditable,save,switchToEditMode,switchToReadMode;return isEditable=function(){return-1!==$scope.project.my_permissions.indexOf("modify_wiki_page")},switchToEditMode=function(){return $el.find(".edit-wiki-content").show(),$el.find(".view-wiki-content").hide(),$el.find("textarea").focus()},switchToReadMode=function(){return $el.find(".edit-wiki-content").hide(),$el.find(".view-wiki-content").show()},disableEdition=function(){return $el.find(".view-wiki-content .edit").remove(),$el.find(".edit-wiki-content").remove()},cancelEdition=function(){return $model.$modelValue.id?($scope.$apply(function(){return function(){return $model.$modelValue.revert()}}(this)),switchToReadMode()):void 0},getSelectedText=function(){return $window.getSelection?$window.getSelection().toString():$document.selection?$document.selection.createRange().text:null},save=$qqueue.bindAdd(function(wiki){var onError,onSuccess,promise;return onSuccess=function(wikiPage){return null==wiki.id&&$analytics.trackEvent("wikipage","create","create wiki page",1),$model.$setViewValue(wikiPage),$confirm.notify("success"),switchToReadMode()},onError=function(){return $confirm.notify("error")},$loading.start($el.find(".save-container")),promise=null!=wiki.id?$repo.save(wiki).then(onSuccess,onError):$repo.create("wiki",wiki).then(onSuccess,onError),promise["finally"](function(){return $loading.finish($el.find(".save-container"))})}),$el.on("mousedown",".view-wiki-content",function(event){var target;target=angular.element(event.target),isEditable()&&2===event.button}),$el.on("mouseup",".view-wiki-content",function(event){var target;return target=angular.element(event.target),getSelectedText()||!isEditable()||target.is("a")||target.is("pre")?void 0:switchToEditMode()}),$el.on("click",".save",debounce(2e3,function(){return save($scope.wiki)})),$el.on("click",".cancel",function(){return cancelEdition()}),$el.on("keydown","textarea",function(event){return 27===event.keyCode?cancelEdition():void 0}),$scope.$watch($attrs.ngModel,function(wikiPage){return wikiPage?isEditable()?($el.addClass("editable"),null==wikiPage.id?switchToEditMode():void 0):disableEdition():void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel",templateUrl:"wiki/editable-wiki-content.html"}},module.directive("tgEditableWikiContent",["$window","$document","$tgRepo","$tgConfirm","$tgLoading","$tgAnalytics","$tgQqueue",EditableWikiContentDirective])}.call(this),function(){var WikiNavDirective,bindOnce,groupBy,mixOf,module,slugify,taiga,unslugify;taiga=this.taiga,mixOf=this.taiga.mixOf,groupBy=this.taiga.groupBy,bindOnce=this.taiga.bindOnce,slugify=this.taiga.slugify,unslugify=this.taiga.slugify,module=angular.module("taigaWiki"),WikiNavDirective=function($tgrepo,$log,$location,$confirm,$navUrls,$analytics,$loading,$template){var link,template;return template=$template.get("wiki/wiki-nav.html",!0),link=function($scope,$el,$attrs){var $ctrl,render;return $ctrl=$el.controller(),null==$attrs.ngModel?$log.error("WikiNavDirective: no ng-model attr is defined"):(render=function(wikiLinks){var addWikiLinkPermission,deleteWikiLinkPermission,html;return addWikiLinkPermission=$scope.project.my_permissions.indexOf("add_wiki_link")>-1,deleteWikiLinkPermission=$scope.project.my_permissions.indexOf("delete_wiki_link")>-1,html=template({wikiLinks:wikiLinks,projectSlug:$scope.projectSlug,addWikiLinkPermission:addWikiLinkPermission,deleteWikiLinkPermission:deleteWikiLinkPermission}),$el.off(),$el.html(html),$el.on("click",".wiki-link .link-title",function(event){var linkId,linkSlug,target;return event.preventDefault(),target=angular.element(event.currentTarget),linkId=target.parents(".wiki-link").data("id"),linkSlug=$scope.wikiLinks[linkId].href,$scope.$apply(function(){var ctx;return ctx={project:$scope.projectSlug,slug:linkSlug},$location.path($navUrls.resolve("project-wiki-page",ctx))})}),$el.on("click",".add-button",function(event){return event.preventDefault(),$el.find(".new").removeClass("hidden"),$el.find(".new input").focus(),$el.find(".add-button").hide()}),$el.on("click",".wiki-link .icon-delete",function(event){var linkId,message,target,title;return event.preventDefault(),event.stopPropagation(),target=angular.element(event.currentTarget),linkId=target.parents(".wiki-link").data("id"),title="Delete Wiki Link",message=$scope.wikiLinks[linkId].title,$confirm.askOnDelete(title,message).then(function(){return function(finish){var promise;return promise=$tgrepo.remove($scope.wikiLinks[linkId]),promise.then(function(){return promise=$ctrl.loadWikiLinks(),promise.then(function(){return finish(),render($scope.wikiLinks)}),promise.then(null,function(){return finish()})}),promise.then(null,function(){return finish(!1),$confirm.notify("error")})}}(this))}),$el.on("keyup",".new input",function(event){var newLink,promise,target;return event.preventDefault(),13===event.keyCode?(target=angular.element(event.currentTarget),newLink=target.val(),$loading.start($el.find(".new")),promise=$tgrepo.create("wiki-links",{project:$scope.projectId,title:newLink,href:slugify(newLink)}),promise.then(function(){var loadPromise;return $analytics.trackEvent("wikilink","create","create wiki link",1),loadPromise=$ctrl.loadWikiLinks(),loadPromise.then(function(){return $loading.finish($el.find(".new")),$el.find(".new").addClass("hidden"),$el.find(".new input").val(""),$el.find(".add-button").show(),render($scope.wikiLinks)}),loadPromise.then(null,function(){return $loading.finish($el.find(".new")),$el.find(".new").addClass("hidden"),$el.find(".new input").val(""),$el.find(".add-button").show(),$confirm.notify("error","Error loading wiki links")})}),promise.then(null,function(error){var ref;return $loading.finish($el.find(".new")),$el.find(".new input").val(newLink),$el.find(".new input").focus().select(),null!=(null!=error&&null!=(ref=error.__all__)?ref[0]:void 0)?$confirm.notify("error","The link already exists"):$confirm.notify("error")})):27===event.keyCode?(target=angular.element(event.currentTarget),$el.find(".new").addClass("hidden"),$el.find(".new input").val(""),$el.find(".add-button").show()):void 0})},bindOnce($scope,$attrs.ngModel,render))},{link:link}},module.directive("tgWikiNav",["$tgRepo","$log","$tgLocation","$tgConfirm","$tgNavUrls","$tgAnalytics","$tgLoading","$tgTemplate",WikiNavDirective])}.call(this),function(){var CreateMembersDirective,MAX_MEMBERSHIP_FIELDSETS,debounce,module,taiga;taiga=this.taiga,debounce=this.taiga.debounce,module=angular.module("taigaKanban"),MAX_MEMBERSHIP_FIELDSETS=4,CreateMembersDirective=function($rs,$rootScope,$confirm,$loading,lightboxService){var extraTextTemplate,link,template;return extraTextTemplate='
\n \n
',template=_.template('
\n
\n data-required="true" <% } %> data-type="email" />\n
\n
\n \n \n
\n
'),link=function($scope,$el){var createFieldSet,resetForm,submit,submitButton;return createFieldSet=function(required){var ctx;return null==required&&(required=!0),ctx={roleList:$scope.roles,required:required},template(ctx)},resetForm=function(){var fieldSet,invitations;return $el.find("form textarea").remove(""),$el.find("form .add-member-wrapper").remove(),invitations=$el.find(".add-member-forms"),invitations.html(extraTextTemplate),fieldSet=createFieldSet(),invitations.prepend(fieldSet)},$scope.$on("membersform:new",function(){return resetForm(),lightboxService.open($el)}),$scope.$on("$destroy",function(){return $el.off()}),$el.on("click",".delete-fieldset",function(event){var fieldSet,lastActionButton,target;return event.preventDefault(),target=angular.element(event.currentTarget),fieldSet=target.closest(".add-member-wrapper"),fieldSet.remove(),lastActionButton=$el.find("fieldset:last > a"),lastActionButton.hasClass("icon-delete delete-fieldset")?lastActionButton.removeClass("icon-delete delete-fieldset").addClass("icon-plus add-fieldset"):void 0}),$el.on("click",".add-fieldset",function(event){var fieldSet,newFieldSet,target;return event.preventDefault(),target=angular.element(event.currentTarget),fieldSet=target.closest(".add-member-wrapper"),target.removeClass("icon-plus add-fieldset").addClass("icon-delete delete-fieldset"),newFieldSet=createFieldSet(!1),fieldSet.after(newFieldSet),$el.find(".add-member-wrapper").length===MAX_MEMBERSHIP_FIELDSETS?$el.find(".add-member-wrapper fieldset:last > a").removeClass("icon-plus add-fieldset").addClass("icon-delete delete-fieldset"):void 0}),submit=debounce(2e3,function(){return function(event){var form,invitation_extra_text,invitations,memberWrappers,onError,onSuccess;return event.preventDefault(),$loading.start(submitButton),onSuccess=function(){return $loading.finish(submitButton),lightboxService.close($el),$confirm.notify("success"),$rootScope.$broadcast("membersform:new:success")},onError=function(){return $loading.finish(submitButton),lightboxService.close($el),$confirm.notify("error"),$rootScope.$broadcast("membersform:new:error")},form=$el.find("form").checksley(),form.destroy(),form.initialize(),form.validate()?(memberWrappers=$el.find("form .add-member-wrapper"),memberWrappers=_.filter(memberWrappers,function(mw){return angular.element(mw).find("input").hasClass("checksley-ok")}),invitations=_.map(memberWrappers,function(mw){var email,memberWrapper,role;return memberWrapper=angular.element(mw),email=memberWrapper.find("input"),role=memberWrapper.find("select"),{email:email.val(),role_id:role.val()}}),invitations.length?(invitation_extra_text=$el.find("form textarea").val(),$rs.memberships.bulkCreateMemberships($scope.project.id,invitations,invitation_extra_text).then(onSuccess,onError)):void 0):void 0}}(this)),submitButton=$el.find(".submit-button"),$el.on("submit","form",submit)},{link:link}},module.directive("tgLbCreateMembers",["$tgResources","$rootScope","$tgConfirm","$tgLoading","lightboxService",CreateMembersDirective])}.call(this),function(){var MembershipsController,MembershipsDirective,MembershipsRowActionsDirective,MembershipsRowAdminCheckboxDirective,MembershipsRowAvatarDirective,MembershipsRowRoleSelectorDirective,bindMethods,mixOf,module,taiga,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,mixOf=this.taiga.mixOf,bindMethods=this.taiga.bindMethods,module=angular.module("taigaAdmin"),MembershipsController=function(superClass){function MembershipsController(scope,rootscope,repo,confirm,rs,params,q,location,navUrls,analytics,appTitle){var promise;this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.confirm=confirm,this.rs=rs,this.params=params,this.q=q,this.location=location,this.navUrls=navUrls,this.analytics=analytics,this.appTitle=appTitle,bindMethods(this),this.scope.sectionName="Manage Members",this.scope.project={},this.scope.filters={},promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.appTitle.set("Membership - "+_this.scope.project.name) -}}(this)),promise.then(null,this.onInitialDataError.bind(this)),this.scope.$on("membersform:new:success",function(_this){return function(){return _this.loadMembers(),_this.analytics.trackEvent("membership","create","create memberships on admin",1)}}(this))}return extend(MembershipsController,superClass),MembershipsController.$inject=["$scope","$rootScope","$tgRepo","$tgConfirm","$tgResources","$routeParams","$q","$tgLocation","$tgNavUrls","$tgAnalytics","$appTitle"],MembershipsController.prototype.loadProject=function(){return this.rs.projects.get(this.scope.projectId).then(function(_this){return function(project){return project.i_am_owner||_this.location.path(_this.navUrls.resolve("permission-denied")),_this.scope.project=project,_this.scope.$emit("project:loaded",project),project}}(this))},MembershipsController.prototype.loadMembers=function(){var httpFilters;return httpFilters=this.getUrlFilters(),this.rs.memberships.list(this.scope.projectId,httpFilters).then(function(_this){return function(data){return _this.scope.memberships=_.filter(data.models,function(membership){return null===membership.user||membership.is_user_active}),_this.scope.page=data.current,_this.scope.count=data.count,_this.scope.paginatedBy=data.paginatedBy,data}}(this))},MembershipsController.prototype.loadInitialData=function(){var promise;return promise=this.repo.resolve({pslug:this.params.pslug}).then(function(_this){return function(data){return _this.scope.projectId=data.project,data}}(this)),promise.then(function(_this){return function(){return _this.loadProject()}}(this)).then(function(_this){return function(){return _this.loadUsersAndRoles()}}(this)).then(function(_this){return function(){return _this.loadMembers()}}(this))},MembershipsController.prototype.getUrlFilters=function(){var filters;return filters=_.pick(this.location.search(),"page"),filters.page||(filters.page=1),filters},MembershipsController.prototype.addNewMembers=function(){return this.rootscope.$broadcast("membersform:new")},MembershipsController}(mixOf(taiga.Controller,taiga.PageMixin,taiga.FiltersMixin)),module.controller("MembershipsController",MembershipsController),MembershipsDirective=function($template){var link,linkPagination,template;return template=$template.get("admin/admin-membership-paginator.html",!0),linkPagination=function($scope,$el,$attrs,$ctrl){var $pagEl,afterCurrent,atBegin,atEnd,beforeCurrent,getNumPages,renderPagination;return afterCurrent=2,beforeCurrent=4,atBegin=2,atEnd=2,$pagEl=$el.find(".memberships-paginator"),getNumPages=function(){var numPages;return numPages=$scope.count/$scope.paginatedBy,numPages=parseInt(numPages,10)=numPages)return void $pagEl.hide();for(pages=[],options={},options.pages=pages,options.showPrevious=$scope.page>1,options.showNext=!($scope.page===numPages),cpage=$scope.page,i=j=1,ref=numPages;ref>=1?ref>=j:j>=ref;i=ref>=1?++j:--j)i===cpage+afterCurrent&&numPages>cpage+afterCurrent+atEnd?pages.push({classes:"dots",type:"dots"}):i===cpage-beforeCurrent&&cpage>atBegin+beforeCurrent?pages.push({classes:"dots",type:"dots"}):i>cpage+afterCurrent&&numPages-atEnd>=i||cpage-beforeCurrent>i&&i>atBegin||pages.push(i===cpage?{classes:"active",num:i,type:"page-active"}:{classes:"page",num:i,type:"page"});return $pagEl.html(template(options))},$scope.$watch("memberships",function(value){return value?renderPagination():void 0}),$el.on("click",".memberships-paginator a.next",function(event){return event.preventDefault(),$scope.$apply(function(){return $ctrl.selectFilter("page",$scope.page+1),$ctrl.loadMembers()})}),$el.on("click",".memberships-paginator a.previous",function(event){return event.preventDefault(),$scope.$apply(function(){return $ctrl.selectFilter("page",$scope.page-1),$ctrl.loadMembers()})}),$el.on("click",".memberships-paginator li.page > a",function(event){var pagenum,target;return event.preventDefault(),target=angular.element(event.currentTarget),pagenum=target.data("pagenum"),$scope.$apply(function(){return $ctrl.selectFilter("page",pagenum),$ctrl.loadMembers()})})},link=function($scope,$el,$attrs){var $ctrl;return $ctrl=$el.controller(),linkPagination($scope,$el,$attrs,$ctrl),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgMemberships",["$tgTemplate",MembershipsDirective]),MembershipsRowAvatarDirective=function($log,$template){var link,template;return template=$template.get("admin/memberships-row-avatar.html",!0),link=function($scope,$el,$attrs){var member,render;return render=function(member){var ctx,html;return ctx={full_name:member.full_name?member.full_name:"",email:member.user_email?member.user_email:member.email,imgurl:member.photo?member.photo:"/images/unnamed.png"},html=template(ctx),$el.html(html)},null==$attrs.tgMembershipsRowAvatar?$log.error("MembershipsRowAvatarDirective: the directive need a member"):(member=$scope.$eval($attrs.tgMembershipsRowAvatar),render(member),$scope.$on("$destroy",function(){return $el.off()}))},{link:link}},module.directive("tgMembershipsRowAvatar",["$log","$tgTemplate",MembershipsRowAvatarDirective]),MembershipsRowAdminCheckboxDirective=function($log,$repo,$confirm,$template){var link,template;return template=$template.get("admin/admin-memberships-row-checkbox.html",!0),link=function($scope,$el,$attrs){var html,member,render;return render=function(member){var ctx,html;return ctx={inputId:"is-admin-"+member.id},html=template(ctx),$el.html(html)},null==$attrs.tgMembershipsRowAdminCheckbox?$log.error("MembershipsRowAdminCheckboxDirective: the directive need a member"):(member=$scope.$eval($attrs.tgMembershipsRowAdminCheckbox),html=render(member),member.is_owner&&$el.find(":checkbox").prop("checked",!0),$el.on("click",":checkbox",function(){return function(event){var onError,onSuccess,target;return onSuccess=function(){return $confirm.notify("success")},onError=function(data){return member.revert(),$el.find(":checkbox").prop("checked",member.is_owner),$confirm.notify("error",data.is_owner[0])},target=angular.element(event.currentTarget),member.is_owner=target.prop("checked"),$repo.save(member).then(onSuccess,onError)}}(this)),$scope.$on("$destroy",function(){return $el.off()}))},{link:link}},module.directive("tgMembershipsRowAdminCheckbox",["$log","$tgRepo","$tgConfirm","$tgTemplate",MembershipsRowAdminCheckboxDirective]),MembershipsRowRoleSelectorDirective=function($log,$repo,$confirm){var link,template;return template=_.template(''),link=function($scope,$el,$attrs){var $ctrl,html,member,render;return render=function(member){var ctx,html;return ctx={roleList:$scope.roles,selectedRole:member.role},html=template(ctx),$el.html(html)},null==$attrs.tgMembershipsRowRoleSelector?$log.error("MembershipsRowRoleSelectorDirective: the directive need a member"):($ctrl=$el.controller(),member=$scope.$eval($attrs.tgMembershipsRowRoleSelector),html=render(member),$el.on("change","select",function(){return function(event){var newRole,onError,onSuccess,target;return onSuccess=function(){return $confirm.notify("success")},onError=function(){return $confirm.notify("error")},target=angular.element(event.currentTarget),newRole=parseInt(target.val(),10),member.role!==newRole?(member.role=newRole,$repo.save(member).then(onSuccess,onError)):void 0}}(this)),$scope.$on("$destroy",function(){return $el.off()}))},{link:link}},module.directive("tgMembershipsRowRoleSelector",["$log","$tgRepo","$tgConfirm",MembershipsRowRoleSelectorDirective]),MembershipsRowActionsDirective=function($log,$repo,$rs,$confirm){var activedTemplate,link,pendingTemplate;return activedTemplate=_.template('
\n Active\n
\n\n \n'),pendingTemplate=_.template('\n Pending\n \n\n\n \n'),link=function($scope,$el,$attrs){var $ctrl,member,render;return render=function(member){var html;return html=member.user?activedTemplate():pendingTemplate(),$el.html(html)},null==$attrs.tgMembershipsRowActions?$log.error("MembershipsRowActionsDirective: the directive need a member"):($ctrl=$el.controller(),member=$scope.$eval($attrs.tgMembershipsRowActions),render(member),$el.on("click",".pending",function(event){var onError,onSuccess;return event.preventDefault(),onSuccess=function(){return $confirm.notify("success","We've sent the invitationi again to '"+$scope.member.email+"'.")},onError=function(){return $confirm.notify("error","We haven't sent the invitation.")},$rs.memberships.resendInvitation($scope.member.id).then(onSuccess,onError)}),$el.on("click",".delete",function(event){var message,title;return event.preventDefault(),title="Delete member",message=member.user?member.full_name:"the invitation to "+member.email,$confirm.askOnDelete(title,message).then(function(finish){var onError,onSuccess;return onSuccess=function(){return finish(),$ctrl.loadMembers(),$confirm.notify("success",null,"We've deleted "+message+".")},onError=function(){return finish(!1),$confirm.notify("error",null,"We have not been able to delete "+message+".")},$repo.remove(member).then(onSuccess,onError)})}),$scope.$on("$destroy",function(){return $el.off()}))},{link:link}},module.directive("tgMembershipsRowActions",["$log","$tgRepo","$tgResources","$tgConfirm",MembershipsRowActionsDirective])}.call(this),function(){var AdminNavigationDirective,module;AdminNavigationDirective=function(){var link;return link=function($scope,$el,$attrs){var section;return section=$attrs.tgAdminNavigation,$el.find(".active").removeClass("active"),$el.find("#adminmenu-"+section+" a").addClass("active"),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module=angular.module("taigaAdmin"),module.directive("tgAdminNavigation",AdminNavigationDirective)}.call(this),function(){var CsvExporterController,CsvExporterIssuesController,CsvExporterTasksController,CsvExporterUserstoriesController,ProjectDefaultValuesDirective,ProjectExportDirective,ProjectModulesDirective,ProjectProfileController,ProjectProfileDirective,bindOnce,debounce,groupBy,joinStr,mixOf,module,taiga,toString,trim,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty,bind=function(fn,me){return function(){return fn.apply(me,arguments)}};taiga=this.taiga,mixOf=this.taiga.mixOf,trim=this.taiga.trim,toString=this.taiga.toString,joinStr=this.taiga.joinStr,groupBy=this.taiga.groupBy,bindOnce=this.taiga.bindOnce,debounce=this.taiga.debounce,module=angular.module("taigaAdmin"),ProjectProfileController=function(superClass){function ProjectProfileController(scope,rootscope,repo,confirm,rs,params,q,location,navUrls,appTitle){var promise;this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.confirm=confirm,this.rs=rs,this.params=params,this.q=q,this.location=location,this.navUrls=navUrls,this.appTitle=appTitle,this.scope.project={},promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.appTitle.set("Project profile - "+_this.scope.sectionName+" - "+_this.scope.project.name)}}(this)),promise.then(null,this.onInitialDataError.bind(this)),this.scope.$on("project:loaded",function(_this){return function(){return _this.appTitle.set("Project profile - "+_this.scope.sectionName+" - "+_this.scope.project.name)}}(this))}return extend(ProjectProfileController,superClass),ProjectProfileController.$inject=["$scope","$rootScope","$tgRepo","$tgConfirm","$tgResources","$routeParams","$q","$tgLocation","$tgNavUrls","$appTitle"],ProjectProfileController.prototype.loadProject=function(){return this.rs.projects.get(this.scope.projectId).then(function(_this){return function(project){return project.i_am_owner||_this.location.path(_this.navUrls.resolve("permission-denied")),_this.scope.project=project,_this.scope.pointsList=_.sortBy(project.points,"order"),_this.scope.usStatusList=_.sortBy(project.us_statuses,"order"),_this.scope.taskStatusList=_.sortBy(project.task_statuses,"order"),_this.scope.prioritiesList=_.sortBy(project.priorities,"order"),_this.scope.severitiesList=_.sortBy(project.severities,"order"),_this.scope.issueTypesList=_.sortBy(project.issue_types,"order"),_this.scope.issueStatusList=_.sortBy(project.issue_statuses,"order"),_this.scope.$emit("project:loaded",project),project}}(this))},ProjectProfileController.prototype.loadInitialData=function(){var promise;return promise=this.repo.resolve({pslug:this.params.pslug}).then(function(_this){return function(data){return _this.scope.projectId=data.project,data}}(this)),promise.then(function(_this){return function(){return _this.loadProject()}}(this))},ProjectProfileController.prototype.openDeleteLightbox=function(){return this.rootscope.$broadcast("deletelightbox:new",this.scope.project)},ProjectProfileController}(mixOf(taiga.Controller,taiga.PageMixin)),module.controller("ProjectProfileController",ProjectProfileController),ProjectProfileDirective=function($repo,$confirm,$loading,$navurls,$location){var link;return link=function($scope,$el){var form,submit,submitButton;return form=$el.find("form").checksley({onlyOneErrorElement:!0}),submit=debounce(2e3,function(){return function(event){var promise;return event.preventDefault(),form.validate()?($loading.start(submitButton),promise=$repo.save($scope.project),promise.then(function(){var newUrl;return $loading.finish(submitButton),$confirm.notify("success"),newUrl=$navurls.resolve("project-admin-project-profile-details",{project:$scope.project.slug}),$location.path(newUrl),$scope.$emit("project:loaded",$scope.project)}),promise.then(null,function(data){return $loading.finish(target),form.setErrors(data),data._error_message?$confirm.notify("error",data._error_message):void 0})):void 0}}(this)),submitButton=$el.find(".submit-button"),$el.on("submit","form",submit)},{link:link}},module.directive("tgProjectProfile",["$tgRepo","$tgConfirm","$tgLoading","$tgNavUrls","$tgLocation",ProjectProfileDirective]),ProjectDefaultValuesDirective=function($repo,$confirm,$loading){var link;return link=function($scope,$el){var form,submit,submitButton;return form=$el.find("form").checksley({onlyOneErrorElement:!0}),submit=debounce(2e3,function(){return function(event){var promise;return event.preventDefault(),form.validate()?($loading.start(submitButton),promise=$repo.save($scope.project),promise.then(function(){return $loading.finish(submitButton),$confirm.notify("success")}),promise.then(null,function(data){return $loading.finish(target),form.setErrors(data),data._error_message?$confirm.notify("error",data._error_message):void 0})):void 0}}(this)),submitButton=$el.find(".submit-button"),$el.on("submit","form",submit),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgProjectDefaultValues",["$tgRepo","$tgConfirm","$tgLoading",ProjectDefaultValuesDirective]),ProjectModulesDirective=function($repo,$confirm,$loading){var link;return link=function($scope,$el){var form,submit;return form=$el.find("form").checksley(),submit=function(){return function(){var promise,target;if(form.validate())return target=angular.element(".admin-functionalities a.button-green"),$loading.start(target),promise=$repo.save($scope.project),promise.then(function(){return $loading.finish(target),$confirm.notify("success"),$scope.$emit("project:loaded",$scope.project)}),promise.then(null,function(data){return $loading.finish(target),$confirm.notify("error",data._error_message)})}}(this),$el.on("submit","form",function(event){return event.preventDefault(),submit()}),$el.on("click",".admin-functionalities a.button-green",function(event){return event.preventDefault(),submit()}),$scope.$watch("isVideoconferenceActivated",function(isVideoconferenceActivated){return isVideoconferenceActivated?$el.find(".videoconference-attributes").removeClass("hidden"):($el.find(".videoconference-attributes").addClass("hidden"),$scope.project.videoconferences=null,$scope.project.videoconferences_salt="")}),$scope.$watch("project",function(project){return $scope.isVideoconferenceActivated=null!=project.videoconferences?!0:!1})},{link:link}},module.directive("tgProjectModules",["$tgRepo","$tgConfirm","$tgLoading",ProjectModulesDirective]),ProjectExportDirective=function($window,$rs,$confirm){var link;return link=function($scope,$el){var buttonsEl,hideButtons,hideResult,hideSpinner,resultEl,resultMessageEl,resultTitleEl,setAsyncMessage,setAsyncTitle,setLoadingMessage,setLoadingTitle,setSyncMessage,setSyncTitle,showButtons,showErrorMode,showExportResultAsyncMode,showExportResultSyncMode,showLoadingMode,showResult,showSpinner,spinnerEl;return buttonsEl=$el.find(".admin-project-export-buttons"),showButtons=function(){return buttonsEl.removeClass("hidden")},hideButtons=function(){return buttonsEl.addClass("hidden")},resultEl=$el.find(".admin-project-export-result"),showResult=function(){return resultEl.removeClass("hidden")},hideResult=function(){return resultEl.addClass("hidden")},spinnerEl=$el.find(".spin"),showSpinner=function(){return spinnerEl.removeClass("hidden")},hideSpinner=function(){return spinnerEl.addClass("hidden")},resultTitleEl=$el.find(".result-title"),setLoadingTitle=function(){return resultTitleEl.html("We are generating your dump file")},setAsyncTitle=function(){return resultTitleEl.html("We are generating your dump file")},setSyncTitle=function(){return resultTitleEl.html("Your dump file is ready!")},resultMessageEl=$el.find(".result-message "),setLoadingMessage=function(){return resultMessageEl.html("Please don't close this page.")},setAsyncMessage=function(){return resultMessageEl.html("We will send you an email when ready.")},setSyncMessage=function(url){return resultMessageEl.html("If the download doesn't start automatically click here.")},showLoadingMode=function(){return showSpinner(),setLoadingTitle(),setLoadingMessage(),hideButtons(),showResult()},showExportResultAsyncMode=function(){return hideSpinner(),setAsyncTitle(),setAsyncMessage()},showExportResultSyncMode=function(url){return hideSpinner(),setSyncTitle(),setSyncMessage(url)},showErrorMode=function(){return hideSpinner(),hideResult(),showButtons()},$el.on("click","a.button-export",debounce(2e3,function(){return function(event){var onError,onSuccess;return event.preventDefault(),onSuccess=function(result){var dumpUrl;return 202===result.status?showExportResultAsyncMode():(dumpUrl=result.data.url,showExportResultSyncMode(dumpUrl),$window.open(dumpUrl,"_blank"))},onError=function(result){var errorMsg,ref;return showErrorMode(),errorMsg="Our oompa loompas have some problems generasting your dump. Please try again. ",429===result.status?errorMsg="Sorry, our oompa loompas are very busy right now. Please try again in a few minutes. ":(null!=(ref=result.data)?ref._error_message:void 0)&&(errorMsg="Our oompa loompas have some problems generasting your dump: "+result.data._error_message),$confirm.notify("error",errorMsg)},showLoadingMode(),$rs.projects["export"]($scope.projectId).then(onSuccess,onError)}}(this)))},{link:link}},module.directive("tgProjectExport",["$window","$tgResources","$tgConfirm",ProjectExportDirective]),CsvExporterController=function(superClass){function CsvExporterController(scope,rootscope,urls,confirm,rs){this.scope=scope,this.rootscope=rootscope,this.urls=urls,this.confirm=confirm,this.rs=rs,this._generateUuid=bind(this._generateUuid,this),this.setCsvUuid=bind(this.setCsvUuid,this),this.rootscope.$on("project:loaded",this.setCsvUuid),this.scope.$watch("csvUuid",function(_this){return function(value){return _this.scope.csvUrl=value?_this.urls.resolveAbsolute(_this.type+"-csv",value):""}}(this))}return extend(CsvExporterController,superClass),CsvExporterController.$inject=["$scope","$rootScope","$tgUrls","$tgConfirm","$tgResources"],CsvExporterController.prototype.setCsvUuid=function(){return this.scope.csvUuid=this.scope.project[this.type+"_csv_uuid"]},CsvExporterController.prototype._generateUuid=function(finish){var promise;return promise=this.rs.projects["regenerate_"+this.type+"_csv_uuid"](this.scope.projectId),promise.then(function(_this){return function(data){var ref;return _this.scope.csvUuid=null!=(ref=data.data)?ref.uuid:void 0}}(this)),promise.then(null,function(_this){return function(){return _this.confirm.notify("error")}}(this)),promise["finally"](function(){return finish()}),promise},CsvExporterController.prototype.regenerateUuid=function(){var subtitle,title;return this.scope.csvUuid?(title="Change URL",subtitle="You going to change the CSV data access url. The previous url will be disabled. Are you sure?",this.confirm.ask(title,subtitle).then(this._generateUuid)):this._generateUuid(_.identity)},CsvExporterController}(taiga.Controller),CsvExporterUserstoriesController=function(superClass){function CsvExporterUserstoriesController(){return CsvExporterUserstoriesController.__super__.constructor.apply(this,arguments)}return extend(CsvExporterUserstoriesController,superClass),CsvExporterUserstoriesController.prototype.type="userstories",CsvExporterUserstoriesController}(CsvExporterController),CsvExporterTasksController=function(superClass){function CsvExporterTasksController(){return CsvExporterTasksController.__super__.constructor.apply(this,arguments)}return extend(CsvExporterTasksController,superClass),CsvExporterTasksController.prototype.type="tasks",CsvExporterTasksController}(CsvExporterController),CsvExporterIssuesController=function(superClass){function CsvExporterIssuesController(){return CsvExporterIssuesController.__super__.constructor.apply(this,arguments)}return extend(CsvExporterIssuesController,superClass),CsvExporterIssuesController.prototype.type="issues",CsvExporterIssuesController}(CsvExporterController),module.controller("CsvExporterUserstoriesController",CsvExporterUserstoriesController),module.controller("CsvExporterTasksController",CsvExporterTasksController),module.controller("CsvExporterIssuesController",CsvExporterIssuesController)}.call(this),function(){var ColorSelectionDirective,ProjectCustomAttributesController,ProjectCustomAttributesDirective,ProjectValuesController,ProjectValuesDirective,ProjectValuesSectionController,bindOnce,debounce,groupBy,joinStr,mixOf,module,taiga,toString,trim,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty,bind=function(fn,me){return function(){return fn.apply(me,arguments)}};taiga=this.taiga,mixOf=this.taiga.mixOf,trim=this.taiga.trim,toString=this.taiga.toString,joinStr=this.taiga.joinStr,groupBy=this.taiga.groupBy,bindOnce=this.taiga.bindOnce,debounce=this.taiga.debounce,module=angular.module("taigaAdmin"),ProjectValuesSectionController=function(superClass){function ProjectValuesSectionController(scope,rootscope,repo,confirm,rs,params,q,location,navUrls,appTitle){var promise;this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.confirm=confirm,this.rs=rs,this.params=params,this.q=q,this.location=location,this.navUrls=navUrls,this.appTitle=appTitle,this.scope.project={},promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.appTitle.set("Project values - "+_this.scope.sectionName+" - "+_this.scope.project.name)}}(this)),promise.then(null,this.onInitialDataError.bind(this))}return extend(ProjectValuesSectionController,superClass),ProjectValuesSectionController.$inject=["$scope","$rootScope","$tgRepo","$tgConfirm","$tgResources","$routeParams","$q","$tgLocation","$tgNavUrls","$appTitle"],ProjectValuesSectionController.prototype.loadProject=function(){return this.rs.projects.get(this.scope.projectId).then(function(_this){return function(project){return project.i_am_owner||_this.location.path(_this.navUrls.resolve("permission-denied")),_this.scope.project=project,_this.scope.$emit("project:loaded",project),project}}(this))},ProjectValuesSectionController.prototype.loadInitialData=function(){var promise;return promise=this.repo.resolve({pslug:this.params.pslug}).then(function(_this){return function(data){return _this.scope.projectId=data.project,data}}(this)),promise.then(function(_this){return function(){return _this.loadProject()}}(this))},ProjectValuesSectionController}(mixOf(taiga.Controller,taiga.PageMixin)),module.controller("ProjectValuesSectionController",ProjectValuesSectionController),ProjectValuesController=function(superClass){function ProjectValuesController(scope,rootscope,repo,confirm,rs){this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.confirm=confirm,this.rs=rs,this.moveValue=bind(this.moveValue,this),this.loadValues=bind(this.loadValues,this),this.scope.$on("admin:project-values:move",this.moveValue),this.rootscope.$on("project:loaded",this.loadValues)}return extend(ProjectValuesController,superClass),ProjectValuesController.$inject=["$scope","$rootScope","$tgRepo","$tgConfirm","$tgResources"],ProjectValuesController.prototype.loadValues=function(){return this.rs[this.scope.resource].listValues(this.scope.projectId,this.scope.type).then(function(_this){return function(values){return _this.scope.values=values,_this.scope.maxValueOrder=_.max(values,"order").order,values}}(this))},ProjectValuesController.prototype.moveValue=function(ctx,itemValue,itemIndex){var r,values;return values=this.scope.values,r=values.indexOf(itemValue),values.splice(r,1),values.splice(itemIndex,0,itemValue),_.each(values,function(value,index){return value.order=index}),this.repo.saveAll(values)},ProjectValuesController}(taiga.Controller),module.controller("ProjectValuesController",ProjectValuesController),ProjectValuesDirective=function($log,$repo,$confirm){var link,linkDragAndDrop,linkValue;return linkDragAndDrop=function($scope,$el){var itemEl,newParentScope,oldParentScope,tdom;return oldParentScope=null,newParentScope=null,itemEl=null,tdom=$el.find(".sortable"),tdom.sortable({handle:".row.table-main.visualization",dropOnEmpty:!0,connectWith:".project-values-body",revert:400,axis:"y"}),tdom.on("sortstop",function(event,ui){var itemIndex,itemValue;return itemEl=ui.item,itemValue=itemEl.scope().value,itemIndex=itemEl.index(),$scope.$broadcast("admin:project-values:move",itemValue,itemIndex)}),$scope.$on("$destroy",function(){return $el.off()})},linkValue=function($scope,$el,$attrs){var $ctrl,cancel,goToBottomList,initializeNewValue,saveNewValue,saveValue,valueType;return $ctrl=$el.controller(),valueType=$attrs.type,initializeNewValue=function(){return $scope.newValue={name:"",is_closed:!1,is_archived:!1}},initializeNewValue(),goToBottomList=function(){return function(focus){var table;return null==focus&&(focus=!1),table=$el.find(".table-main"),$(document.body).scrollTop(table.offset().top+table.height()),focus?$el.find(".new-value input:visible").first().focus():void 0}}(this),saveValue=function(target){var form,formEl,promise,value;return formEl=target.parents("form"),form=formEl.checksley(),form.validate()?(value=formEl.scope().value,promise=$repo.save(value),promise.then(function(){return function(){var row;return row=target.parents(".row.table-main"),row.addClass("hidden"),row.siblings(".visualization").removeClass("hidden")}}(this)),promise.then(null,function(data){return form.setErrors(data)})):void 0},saveNewValue=function(target){var form,formEl,promise;return formEl=target.parents("form"),form=formEl.checksley(),form.validate()?($scope.newValue.project=$scope.project.id,$scope.newValue.order=$scope.maxValueOrder?$scope.maxValueOrder+1:1,promise=$repo.create(valueType,$scope.newValue),promise.then(function(){return function(data){return target.addClass("hidden"),$scope.values.push(data),$scope.maxValueOrder=data.order,initializeNewValue()}}(this)),promise.then(null,function(data){return form.setErrors(data)})):void 0},cancel=function(target){var formEl,row,value;return row=target.parents(".row.table-main"),formEl=target.parents("form"),value=formEl.scope().value,$scope.$apply(function(){return row.addClass("hidden"),value.revert(),row.siblings(".visualization").removeClass("hidden")})},$el.on("click",".show-add-new",function(event){return event.preventDefault(),$el.find(".new-value").removeClass("hidden"),goToBottomList(!0)}),$el.on("click",".add-new",debounce(2e3,function(event){var target;return event.preventDefault(),target=$el.find(".new-value"),saveNewValue(target)})),$el.on("click",".delete-new",function(event){return event.preventDefault(),$el.find(".new-value").addClass("hidden"),initializeNewValue()}),$el.on("click",".edit-value",function(event){var editionRow,row,target;return event.preventDefault(),target=angular.element(event.currentTarget),row=target.parents(".row.table-main"),row.addClass("hidden"),editionRow=row.siblings(".edition"),editionRow.removeClass("hidden"),editionRow.find("input:visible").first().focus().select()}),$el.on("keyup",".edition input",function(event){var target;return 13===event.keyCode?(target=angular.element(event.currentTarget),saveValue(target)):27===event.keyCode?(target=angular.element(event.currentTarget),cancel(target)):void 0}),$el.on("keyup",".new-value input",function(event){var target;return 13===event.keyCode?(target=$el.find(".new-value"),saveNewValue(target)):27===event.keyCode?($el.find(".new-value").addClass("hidden"),initializeNewValue()):void 0}),$el.on("click",".save",function(event){var target;return event.preventDefault(),target=angular.element(event.currentTarget),saveValue(target)}),$el.on("click",".cancel",function(event){var target;return event.preventDefault(),target=angular.element(event.currentTarget),cancel(target)}),$el.on("click",".delete-value",function(event){var choices,formEl,replacement,subtitle,target,title,value;return event.preventDefault(),target=angular.element(event.currentTarget),formEl=target.parents("form"),value=formEl.scope().value,choices={},_.each($scope.values,function(option){return value.id!==option.id?choices[option.id]=option.name:void 0}),title="Delete value",subtitle=value.name,replacement="All items with this value will be changed to",0===_.keys(choices).length?$confirm.error("You can't delete all values."):$confirm.askChoice(title,subtitle,choices,replacement).then(function(response){var onError,onSucces;return onSucces=function(){return $ctrl.loadValues()["finally"](function(){return response.finish()})},onError=function(){return $confirm.notify("error")},$repo.remove(value,{moveTo:response.selected}).then(onSucces,onError)})})},link=function($scope,$el,$attrs){return linkDragAndDrop($scope,$el,$attrs),linkValue($scope,$el,$attrs),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgProjectValues",["$log","$tgRepo","$tgConfirm","$tgLocation","animationFrame",ProjectValuesDirective]),ColorSelectionDirective=function(){var link;return link=function($scope,$el,$attrs,$model){var $ctrl;return $ctrl=$el.controller(),$scope.$watch($attrs.ngModel,function(element){return $scope.color=element.color}),$el.on("click",".current-color",function(event){var body,target;return event.preventDefault(),event.stopPropagation(),target=angular.element(event.currentTarget),$el.find(".select-color").hide(),target.siblings(".select-color").show(),body=angular.element("body"),body.on("click",function(){return function(event){return 0===angular.element(event.target).parent(".select-color").length?($el.find(".select-color").hide(),body.unbind("click")):void 0 -}}(this))}),$el.on("click",".select-color .color",function(event){var target;return event.preventDefault(),target=angular.element(event.currentTarget),$scope.$apply(function(){return $model.$modelValue.color=target.data("color")}),$el.find(".select-color").hide()}),$el.on("click",".select-color .selected-color",function(event){return event.preventDefault(),$scope.$apply(function(){return $model.$modelValue.color=$scope.color}),$el.find(".select-color").hide()}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,require:"ngModel"}},module.directive("tgColorSelection",ColorSelectionDirective),ProjectCustomAttributesController=function(superClass){function ProjectCustomAttributesController(scope,rootscope,repo,rs,params,q,location,navUrls,appTitle){this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.rs=rs,this.params=params,this.q=q,this.location=location,this.navUrls=navUrls,this.appTitle=appTitle,this.moveCustomAttributes=bind(this.moveCustomAttributes,this),this.deleteCustomAttribute=bind(this.deleteCustomAttribute,this),this.saveCustomAttribute=bind(this.saveCustomAttribute,this),this.createCustomAttribute=bind(this.createCustomAttribute,this),this.loadCustomAttributes=bind(this.loadCustomAttributes,this),this.scope.project={},this.rootscope.$on("project:loaded",function(_this){return function(){return _this.loadCustomAttributes(),_this.appTitle.set("Project Custom Attributes - "+_this.scope.sectionName+" - "+_this.scope.project.name)}}(this))}return extend(ProjectCustomAttributesController,superClass),ProjectCustomAttributesController.$inject=["$scope","$rootScope","$tgRepo","$tgResources","$routeParams","$q","$tgLocation","$tgNavUrls","$appTitle"],ProjectCustomAttributesController.prototype.loadCustomAttributes=function(){return this.rs.customAttributes[this.scope.type].list(this.scope.projectId).then(function(_this){return function(customAttributes){return _this.scope.customAttributes=customAttributes,_this.scope.maxOrder=_.max(customAttributes,"order").order,customAttributes}}(this))},ProjectCustomAttributesController.prototype.createCustomAttribute=function(attrValues){return this.repo.create("custom-attributes/"+this.scope.type,attrValues)},ProjectCustomAttributesController.prototype.saveCustomAttribute=function(attrModel){return this.repo.save(attrModel)},ProjectCustomAttributesController.prototype.deleteCustomAttribute=function(attrModel){return this.repo.remove(attrModel)},ProjectCustomAttributesController.prototype.moveCustomAttributes=function(attrModel,newIndex){var customAttributes,r;return customAttributes=this.scope.customAttributes,r=customAttributes.indexOf(attrModel),customAttributes.splice(r,1),customAttributes.splice(newIndex,0,attrModel),_.each(customAttributes,function(val,idx){return val.order=idx}),this.repo.saveAll(customAttributes)},ProjectCustomAttributesController}(mixOf(taiga.Controller,taiga.PageMixin)),module.controller("ProjectCustomAttributesController",ProjectCustomAttributesController),ProjectCustomAttributesDirective=function($log,$confirm){var link;return link=function($scope,$el){var $ctrl,cancelCreate,cancelUpdate,create,deleteCustomAttribute,hideAddButton,hideCancelButton,hideCreateForm,hideEditForm,resetNewAttr,revertChangesInCustomAttribute,showAddButton,showCancelButton,showCreateForm,showEditForm,sortableEl,update;return $ctrl=$el.controller(),$scope.$on("$destroy",function(){return $el.off()}),sortableEl=$el.find(".js-sortable"),sortableEl.sortable({handle:".js-view-custom-field",dropOnEmpty:!0,revert:400,axis:"y"}),sortableEl.on("sortstop",function(event,ui){var itemAttr,itemEl,itemIndex;return itemEl=ui.item,itemAttr=itemEl.scope().attr,itemIndex=itemEl.index(),$ctrl.moveCustomAttributes(itemAttr,itemIndex)}),showCreateForm=function(){return $el.find(".js-new-custom-field").removeClass("hidden"),$el.find(".js-new-custom-field input:visible").first().focus()},hideCreateForm=function(){return $el.find(".js-new-custom-field").addClass("hidden")},showAddButton=function(){return $el.find(".js-add-custom-field-button").removeClass("hidden")},hideAddButton=function(){return $el.find(".js-add-custom-field-button").addClass("hidden")},showCancelButton=function(){return $el.find(".js-cancel-new-custom-field-button").removeClass("hidden")},hideCancelButton=function(){return $el.find(".js-cancel-new-custom-field-button").addClass("hidden")},resetNewAttr=function(){return $scope.newAttr={}},create=function(formEl){var attr,form,onError,onSucces;return form=formEl.checksley(),form.validate()?(onSucces=function(){return function(){return $ctrl.loadCustomAttributes(),hideCreateForm(),resetNewAttr(),$confirm.notify("success")}}(this),onError=function(){return function(data){return form.setErrors(data)}}(this),attr=$scope.newAttr,attr.project=$scope.projectId,attr.order=$scope.maxOrder?$scope.maxOrder+1:1,$ctrl.createCustomAttribute(attr).then(onSucces,onError)):void 0},cancelCreate=function(){return hideCreateForm(),resetNewAttr()},$scope.$watch("customAttributes",function(customAttributes){return customAttributes?0===customAttributes.length?(hideCancelButton(),hideAddButton(),showCreateForm()):(hideCreateForm(),showAddButton(),showCancelButton()):void 0}),$el.on("click",".js-add-custom-field-button",function(event){return event.preventDefault(),showCreateForm()}),$el.on("click",".js-create-custom-field-button",debounce(2e3,function(event){var formEl,target;return event.preventDefault(),target=angular.element(event.currentTarget),formEl=target.closest("form"),create(formEl)})),$el.on("click",".js-cancel-new-custom-field-button",function(event){return event.preventDefault(),cancelCreate()}),$el.on("keyup",".js-new-custom-field input",function(event){var formEl,target;return 13===event.keyCode?(target=angular.element(event.currentTarget),formEl=target.closest("form"),create(formEl)):27===event.keyCode?cancelCreate():void 0}),showEditForm=function(formEl){return formEl.find(".js-view-custom-field").addClass("hidden"),formEl.find(".js-edit-custom-field").removeClass("hidden"),formEl.find(".js-edit-custom-field input:visible").first().focus().select()},hideEditForm=function(formEl){return formEl.find(".js-edit-custom-field").addClass("hidden"),formEl.find(".js-view-custom-field").removeClass("hidden")},revertChangesInCustomAttribute=function(formEl){return $scope.$apply(function(){return formEl.scope().attr.revert()})},update=function(formEl){var attr,form,onError,onSucces;return form=formEl.checksley(),form.validate()?(onSucces=function(){return function(){return $ctrl.loadCustomAttributes(),hideEditForm(formEl),$confirm.notify("success")}}(this),onError=function(){return function(data){return form.setErrors(data)}}(this),attr=formEl.scope().attr,$ctrl.saveCustomAttribute(attr).then(onSucces,onError)):void 0},cancelUpdate=function(formEl){return hideEditForm(formEl),revertChangesInCustomAttribute(formEl)},$el.on("click",".js-edit-custom-field-button",function(event){var formEl,target;return event.preventDefault(),target=angular.element(event.currentTarget),formEl=target.closest("form"),showEditForm(formEl)}),$el.on("click",".js-update-custom-field-button",debounce(2e3,function(event){var formEl,target;return event.preventDefault(),target=angular.element(event.currentTarget),formEl=target.closest("form"),update(formEl)})),$el.on("click",".js-cancel-edit-custom-field-button",function(event){var formEl,target;return event.preventDefault(),target=angular.element(event.currentTarget),formEl=target.closest("form"),cancelUpdate(formEl)}),$el.on("keyup",".js-edit-custom-field input",function(event){var formEl,target;return 13===event.keyCode?(target=angular.element(event.currentTarget),formEl=target.closest("form"),update(formEl)):27===event.keyCode?(target=angular.element(event.currentTarget),formEl=target.closest("form"),cancelUpdate(formEl)):void 0}),deleteCustomAttribute=function(formEl){var attr,message,subtitle,title;return attr=formEl.scope().attr,title="Delete custom attribute",subtitle="Remeber that all values in this custom field will be deleted.
Are you sure you want to continue?",message=attr.name,$confirm.ask(title,subtitle,message).then(function(finish){var onError,onSucces;return onSucces=function(){return $ctrl.loadCustomAttributes()["finally"](function(){return finish()})},onError=function(){return finish(!1),$confirm.notify("error",null,"We have not been able to delete '"+message+"'.")},$ctrl.deleteCustomAttribute(attr).then(onSucces,onError)})},$el.on("click",".js-delete-custom-field-button",debounce(2e3,function(event){var formEl,target;return event.preventDefault(),target=angular.element(event.currentTarget),formEl=target.closest("form"),deleteCustomAttribute(formEl)}))},{link:link}},module.directive("tgProjectCustomAttributes",["$log","$tgConfirm","animationFrame",ProjectCustomAttributesDirective])}.call(this),function(){var EditRoleDirective,NewRoleDirective,RolePermissionsDirective,RolesController,RolesDirective,bindMethods,bindOnce,debounce,mixOf,module,taiga,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty,indexOf=[].indexOf||function(item){for(var i=0,l=this.length;l>i;i++)if(i in this&&this[i]===item)return i;return-1};taiga=this.taiga,mixOf=this.taiga.mixOf,bindOnce=this.taiga.bindOnce,debounce=this.taiga.debounce,bindMethods=this.taiga.bindMethods,module=angular.module("taigaAdmin"),RolesController=function(superClass){function RolesController(scope,rootscope,repo,confirm,rs,params,q,location,navUrls,appTitle){var promise;this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.confirm=confirm,this.rs=rs,this.params=params,this.q=q,this.location=location,this.navUrls=navUrls,this.appTitle=appTitle,bindMethods(this),this.scope.sectionName="Permissions",this.scope.project={},this.scope.anyComputableRole=!0,promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.appTitle.set("Roles - "+_this.scope.project.name)}}(this)),promise.then(null,this.onInitialDataError.bind(this))}return extend(RolesController,superClass),RolesController.$inject=["$scope","$rootScope","$tgRepo","$tgConfirm","$tgResources","$routeParams","$q","$tgLocation","$tgNavUrls","$appTitle"],RolesController.prototype.loadProject=function(){return this.rs.projects.get(this.scope.projectId).then(function(_this){return function(project){return project.i_am_owner||_this.location.path(_this.navUrls.resolve("permission-denied")),_this.scope.project=project,_this.scope.$emit("project:loaded",project),_this.scope.anyComputableRole=_.some(_.map(project.roles,function(point){return point.computable})),project}}(this))},RolesController.prototype.loadExternalUserRole=function(roles){var public_permission;return roles=roles.map(function(role){return role.external_user=!1,role}),public_permission={name:"External User",permissions:this.scope.project.public_permissions,external_user:!0},roles.push(public_permission),roles},RolesController.prototype.loadRoles=function(){return this.rs.roles.list(this.scope.projectId).then(this.loadExternalUserRole).then(function(_this){return function(roles){return _this.scope.roles=roles,_this.scope.role=_this.scope.roles[0],roles}}(this))},RolesController.prototype.loadInitialData=function(){var promise;return promise=this.repo.resolve({pslug:this.params.pslug}).then(function(_this){return function(data){return _this.scope.projectId=data.project,data}}(this)),promise.then(function(_this){return function(){return _this.loadProject()}}(this)).then(function(_this){return function(){return _this.loadUsersAndRoles()}}(this)).then(function(_this){return function(){return _this.loadRoles()}}(this))},RolesController.prototype.setRole=function(role){return this.scope.role=role,this.scope.$broadcast("role:changed",this.scope.role)},RolesController.prototype["delete"]=function(){var choices,i,len,ref,replacement,role,subtitle,title,warning;for(title="Delete Role",subtitle=this.scope.role.name,replacement="All the users with this role will be moved to",warning="Be careful, all role estimations will be removed",choices={},ref=this.scope.roles,i=0,len=ref.length;len>i;i++)role=ref[i],role.id!==this.scope.role.id&&(choices[role.id]=role.name);return 0===_.keys(choices).length?this.confirm.error("You can't delete all values."):this.confirm.askChoice(title,subtitle,choices,replacement,warning).then(function(_this){return function(response){var promise;return promise=_this.repo.remove(_this.scope.role,{moveTo:response.selected}),promise.then(function(){return _this.loadProject(),_this.loadRoles()["finally"](function(){return response.finish()})}),promise.then(null,function(){return _this.confirm.notify("error")})}}(this))},RolesController.prototype.setComputable=debounce(2e3,function(){var onError,onSuccess;return onSuccess=function(_this){return function(){return _this.confirm.notify("success"),_this.loadProject()}}(this),onError=function(_this){return function(){return _this.confirm.notify("error"),_this.scope.role.revert()}}(this),this.repo.save(this.scope.role).then(onSuccess,onError)}),RolesController}(mixOf(taiga.Controller,taiga.PageMixin,taiga.FiltersMixin)),module.controller("RolesController",RolesController),EditRoleDirective=function($repo,$confirm){var link;return link=function($scope,$el){var submit,toggleView;return toggleView=function(){return $el.find(".total").toggle(),$el.find(".edit-role").toggle()},submit=function(){var promise;return $scope.role.name=$el.find("input").val(),promise=$repo.save($scope.role),promise.then(function(){return $confirm.notify("success")}),promise.then(null,function(){return $confirm.notify("error")}),toggleView()},$el.on("click","a.icon-edit",function(){return toggleView(),$el.find("input").focus(),$el.find("input").val($scope.role.name)}),$el.on("click","a.save",submit),$el.on("keyup","input",function(event){return 13===event.keyCode?submit():27===event.keyCode?toggleView():void 0}),$scope.$on("role:changed",function(){return $el.find(".edit-role").is(":visible")?toggleView():void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgEditRole",["$tgRepo","$tgConfirm",EditRoleDirective]),RolesDirective=function(){var link;return link=function($scope,$el){var $ctrl;return $ctrl=$el.controller(),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgRoles",RolesDirective),NewRoleDirective=function($tgrepo,$confirm){var DEFAULT_PERMISSIONS,link;return DEFAULT_PERMISSIONS=["view_project","view_milestones","view_us","view_tasks","view_issues"],link=function($scope,$el){var $ctrl;return $ctrl=$el.controller(),$scope.$on("$destroy",function(){return $el.off()}),$el.on("click","a.add-button",function(event){return event.preventDefault(),$el.find(".new").removeClass("hidden"),$el.find(".new").focus(),$el.find(".add-button").hide()}),$el.on("keyup",".new",function(event){var newRole,onError,onSuccess,target;return event.preventDefault(),13===event.keyCode?(target=angular.element(event.currentTarget),newRole={project:$scope.projectId,name:target.val(),permissions:DEFAULT_PERMISSIONS,order:_.max($scope.roles,function(r){return r.order}).order+1,computable:!1},$el.find(".new").addClass("hidden"),$el.find(".new").val(""),onSuccess=function(role){return $scope.roles.push(role),$ctrl.setRole(role),$el.find(".add-button").show(),$ctrl.loadProject()},onError=function(){return $confirm.notify("error")},$tgrepo.create("roles",newRole).then(onSuccess,onError)):27===event.keyCode?(target=angular.element(event.currentTarget),$el.find(".new").addClass("hidden"),$el.find(".new").val(""),$el.find(".add-button").show()):void 0})},{link:link}},module.directive("tgNewRole",["$tgRepo","$tgConfirm",NewRoleDirective]),RolePermissionsDirective=function($rootscope,$repo,$confirm){var baseTemplate,categoryTemplate,link,resumeTemplate;return resumeTemplate=_.template('
<%- category.name %>
\n
\n
<%- category.activePermissions %>/<%- category.permissions.length %>
\n <% _.each(category.permissions, function(permission) { %>\n
\n <% }) %>\n
\n
'),categoryTemplate=_.template('
\n
\n
\n
\n
\n <% _.each(category.permissions, function(permission) { %>\n
\n <%- permission.description %>\n
\n disabled="disabled"<% } %> <% if(permission.active) { %>checked="checked"<% } %>/>\n
\n Yes\n No\n
\n
\n <% }) %>\n
\n
\n
'),baseTemplate=_.template('
'),link=function($scope,$el,$attrs){var $ctrl,generateCategoriesFromRole,renderCategory,renderPermissions,renderResume;return $ctrl=$el.controller(),generateCategoriesFromRole=function(role){var categories,isPermissionEditable,issuePermissions,milestonePermissions,setActivePermissions,setActivePermissionsPerCategory,taskPermissions,userStoryPermissions,wikiPermissions;return setActivePermissions=function(permissions){return _.map(permissions,function(x){var ref;return _.extend({},x,{active:(ref=x.key,indexOf.call(role.permissions,ref)>=0)})})},isPermissionEditable=function(permission,role,project){return role.external_user&&!project.is_private&&0===permission.key.indexOf("view_")?!1:!0},setActivePermissionsPerCategory=function(category){return _.map(category,function(cat){return cat.permissions=cat.permissions.map(function(permission){return permission.editable=isPermissionEditable(permission,role,$scope.project),permission}),_.extend({},cat,{activePermissions:_.filter(cat.permissions,"active").length})})},categories=[],milestonePermissions=[{key:"view_milestones",description:"View sprints"},{key:"add_milestone",description:"Add sprint"},{key:"modify_milestone",description:"Modify sprint"},{key:"delete_milestone",description:"Delete sprint"}],categories.push({name:"Sprints",permissions:setActivePermissions(milestonePermissions)}),userStoryPermissions=[{key:"view_us",description:"View user story"},{key:"add_us",description:"Add user story"},{key:"modify_us",description:"Modify user story"},{key:"delete_us",description:"Delete user story"}],categories.push({name:"User Stories",permissions:setActivePermissions(userStoryPermissions)}),taskPermissions=[{key:"view_tasks",description:"View tasks"},{key:"add_task",description:"Add task"},{key:"modify_task",description:"Modify task"},{key:"delete_task",description:"Delete task"}],categories.push({name:"Tasks",permissions:setActivePermissions(taskPermissions)}),issuePermissions=[{key:"view_issues",description:"View issues"},{key:"add_issue",description:"Add issue"},{key:"modify_issue",description:"Modify issue"},{key:"delete_issue",description:"Delete issue"}],categories.push({name:"Issues",permissions:setActivePermissions(issuePermissions)}),wikiPermissions=[{key:"view_wiki_pages",description:"View wiki pages"},{key:"add_wiki_page",description:"Add wiki page"},{key:"modify_wiki_page",description:"Modify wiki page"},{key:"delete_wiki_page",description:"Delete wiki page"},{key:"view_wiki_links",description:"View wiki links"},{key:"add_wiki_link",description:"Add wiki link"},{key:"delete_wiki_link",description:"Delete wiki link"}],categories.push({name:"Wiki",permissions:setActivePermissions(wikiPermissions)}),setActivePermissionsPerCategory(categories)},renderResume=function(element,category){return element.find(".resume").html(resumeTemplate({category:category}))},renderCategory=function(category,index){var html;return html=categoryTemplate({category:category,index:index}),html=angular.element(html),renderResume(html,category),html},renderPermissions=function(){var html;return $el.off(),html=baseTemplate(),_.each(generateCategoriesFromRole($scope.role),function(category,index){return html=angular.element(html).append(renderCategory(category,index))}),$el.html(html),$el.on("click",".resume",function(event){var target;return event.preventDefault(),target=angular.element(event.currentTarget),target.next().toggleClass("open")}),$el.on("change",".category-item input",function(event){var getActivePermissions,onError,onSuccess,target;return getActivePermissions=function(){var activePermissions;return activePermissions=_.filter($el.find(".category-item input"),function(t){return angular.element(t).is(":checked")}),activePermissions=_.sortBy(_.map(activePermissions,function(t){var permission;return permission=angular.element(t).parents(".category-item").data("id")})),activePermissions.push("view_project"),activePermissions},target=angular.element(event.currentTarget),$scope.role.permissions=getActivePermissions(),onSuccess=function(){var categories,categoryId;return categories=generateCategoriesFromRole($scope.role),categoryId=target.parents(".category-config").data("id"),renderResume(target.parents(".category-config"),categories[categoryId]),$rootscope.$broadcast("projects:reload"),$confirm.notify("success"),$ctrl.loadProject()},onError=function(){return $confirm.notify("error"),target.prop("checked",!target.prop("checked")),$scope.role.permissions=getActivePermissions()},$scope.role.external_user?($scope.project.public_permissions=$scope.role.permissions,$scope.project.anon_permissions=$scope.role.permissions.filter(function(permission){return 0===permission.indexOf("view_")}),$repo.save($scope.project).then(onSuccess,onError)):$repo.save($scope.role).then(onSuccess,onError)})},$scope.$on("$destroy",function(){return $el.off()}),$scope.$on("role:changed",function(){return renderPermissions()}),bindOnce($scope,$attrs.ngModel,renderPermissions)},{link:link}},module.directive("tgRolePermissions",["$rootScope","$tgRepo","$tgConfirm",RolePermissionsDirective])}.call(this),function(){var BitbucketController,BitbucketWebhooksDirective,GithubController,GithubWebhooksDirective,GitlabController,GitlabWebhooksDirective,NewWebhookDirective,SelectInputText,ValidOriginIpsDirective,WebhookDirective,WebhooksController,bindMethods,debounce,mixOf,module,taiga,timeout,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,mixOf=this.taiga.mixOf,bindMethods=this.taiga.bindMethods,debounce=this.taiga.debounce,timeout=this.taiga.timeout,module=angular.module("taigaAdmin"),WebhooksController=function(superClass){function WebhooksController(scope,repo,rs,params,location,navUrls,appTitle){var promise;this.scope=scope,this.repo=repo,this.rs=rs,this.params=params,this.location=location,this.navUrls=navUrls,this.appTitle=appTitle,bindMethods(this),this.scope.sectionName="Webhooks",this.scope.project={},promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.appTitle.set("Webhooks - "+_this.scope.project.name)}}(this)),promise.then(null,this.onInitialDataError.bind(this)),this.scope.$on("webhooks:reload",this.loadWebhooks)}return extend(WebhooksController,superClass),WebhooksController.$inject=["$scope","$tgRepo","$tgResources","$routeParams","$tgLocation","$tgNavUrls","$appTitle"],WebhooksController.prototype.loadWebhooks=function(){return this.rs.webhooks.list(this.scope.projectId).then(function(_this){return function(webhooks){return _this.scope.webhooks=webhooks}}(this))},WebhooksController.prototype.loadProject=function(){return this.rs.projects.get(this.scope.projectId).then(function(_this){return function(project){return project.i_am_owner||_this.location.path(_this.navUrls.resolve("permission-denied")),_this.scope.project=project,_this.scope.$emit("project:loaded",project),project}}(this))},WebhooksController.prototype.loadInitialData=function(){var promise;return promise=this.repo.resolve({pslug:this.params.pslug}).then(function(_this){return function(data){return _this.scope.projectId=data.project,data}}(this)),promise.then(function(_this){return function(){return _this.loadProject()}}(this)).then(function(_this){return function(){return _this.loadWebhooks()}}(this))},WebhooksController}(mixOf(taiga.Controller,taiga.PageMixin,taiga.FiltersMixin)),module.controller("WebhooksController",WebhooksController),WebhookDirective=function($rs,$repo,$confirm){var link;return link=function($scope,$el,$attrs){var cancel,openHistory,save,showEditMode,showVisualizationMode,updateLogs,updateShowHideHistoryText,webhook;return webhook=$scope.$eval($attrs.tgWebhook),updateLogs=function(){return $rs.webhooklogs.list(webhook.id).then(function(){return function(webhooklogs){var i,len,log,ref;for(i=0,len=webhooklogs.length;len>i;i++)log=webhooklogs[i],log.validStatus=200<=(ref=log.status)&&300>ref,log.prettySentHeaders=_.map(_.pairs(log.request_headers),function(arg){var header,value;return header=arg[0],value=arg[1],header+": "+value}).join("\n"),log.prettySentData=JSON.stringify(log.request_data),log.prettyDate=moment(log.created).format("DD MMM YYYY [at] hh:mm:ss");return webhook.logs_counter=webhooklogs.length,webhook.logs=webhooklogs,updateShowHideHistoryText()}}(this))},updateShowHideHistoryText=function(){var historyElement,textElement;return textElement=$el.find(".toggle-history"),historyElement=textElement.parents(".single-webhook-wrapper").find(".webhooks-history"),textElement.text(historyElement.hasClass("open")?"(Hide history)":"(Show history)")},showVisualizationMode=function(){return $el.find(".edition-mode").addClass("hidden"),$el.find(".visualization-mode").removeClass("hidden")},showEditMode=function(){return $el.find(".visualization-mode").addClass("hidden"),$el.find(".edition-mode").removeClass("hidden")},openHistory=function(){return $el.find(".webhooks-history").addClass("open")},cancel=function(){return showVisualizationMode(),$scope.$apply(function(){return webhook.revert()})},save=debounce(2e3,function(target){var form,promise;return form=target.parents("form").checksley(),form.validate()?(promise=$repo.save(webhook),promise.then(function(){return function(){return showVisualizationMode()}}(this)),promise.then(null,function(data){return $confirm.notify("error"),form.setErrors(data)})):void 0}),$el.on("click",".test-webhook",function(){return openHistory(),$rs.webhooks.test(webhook.id).then(function(){return function(){return updateLogs()}}(this))}),$el.on("click",".edit-webhook",function(){return showEditMode()}),$el.on("click",".cancel-existing",function(){return cancel()}),$el.on("click",".edit-existing",function(event){var target;return event.preventDefault(),target=angular.element(event.currentTarget),save(target)}),$el.on("keyup",".edition-mode input",function(event){var target;return 13===event.keyCode?(target=angular.element(event.currentTarget),save(target)):27===event.keyCode?(target=angular.element(event.currentTarget),cancel(target)):void 0}),$el.on("click",".delete-webhook",function(){var message,title;return title="Delete webhook",message="Webhook '"+webhook.name+"'",$confirm.askOnDelete(title,message).then(function(){return function(finish){var onError,onSucces;return onSucces=function(){return finish(),$scope.$emit("webhooks:reload")},onError=function(){return finish(!1),$confirm.notify("error")},$repo.remove(webhook).then(onSucces,onError)}}(this))}),$el.on("click",".toggle-history",function(event){var target;return target=angular.element(event.currentTarget),null==webhook.logs||0===webhook.logs.length?updateLogs().then(function(){return timeout(0,function(){return $el.find(".webhooks-history").toggleClass("open"),updateShowHideHistoryText()})}):($el.find(".webhooks-history").toggleClass("open"),$scope.$apply(function(){return updateShowHideHistoryText()}))}),$el.on("click",".history-single",function(event){var target;return target=angular.element(event.currentTarget),target.toggleClass("history-single-open"),target.siblings(".history-single-response").toggleClass("open")}),$el.on("click",".resend-request",function(event){var log,target;return target=angular.element(event.currentTarget),log=target.data("log"),$rs.webhooklogs.resend(log).then(function(){return function(){return updateLogs()}}(this))})},{link:link}},module.directive("tgWebhook",["$tgResources","$tgRepo","$tgConfirm","$tgLoading",WebhookDirective]),NewWebhookDirective=function($rs,$repo,$confirm){var link;return link=function($scope,$el,$attrs){var addWebhookDOMNode,formDOMNode,initializeNewValue,save,webhook;return webhook=$scope.$eval($attrs.tgWebhook),formDOMNode=$el.find(".new-webhook-form"),addWebhookDOMNode=$el.find(".add-webhook"),initializeNewValue=function(){return $scope.newValue={name:"",url:"",key:""}},initializeNewValue(),$scope.$watch("webhooks",function(webhooks){return null!=webhooks?0===webhooks.length?(formDOMNode.removeClass("hidden"),addWebhookDOMNode.addClass("hidden"),formDOMNode.find("input")[0].focus()):(formDOMNode.addClass("hidden"),addWebhookDOMNode.removeClass("hidden")):void 0}),save=debounce(2e3,function(){var form,promise;return form=formDOMNode.checksley(),form.validate()?($scope.newValue.project=$scope.project.id,promise=$repo.create("webhooks",$scope.newValue),promise.then(function(){return function(){return $scope.$emit("webhooks:reload"),initializeNewValue()}}(this)),promise.then(null,function(data){return $confirm.notify("error"),form.setErrors(data)})):void 0}),formDOMNode.on("click",".add-new",function(event){return event.preventDefault(),save()}),formDOMNode.on("keyup","input",function(event){return 13===event.keyCode?save():void 0}),formDOMNode.on("click",".cancel-new",function(){return $scope.$apply(function(){return initializeNewValue()})}),addWebhookDOMNode.on("click",function(){return formDOMNode.removeClass("hidden"),formDOMNode.find("input")[0].focus()})},{link:link}},module.directive("tgNewWebhook",["$tgResources","$tgRepo","$tgConfirm","$tgLoading",NewWebhookDirective]),GithubController=function(superClass){function GithubController(scope,repo,rs,params,appTitle){var promise;this.scope=scope,this.repo=repo,this.rs=rs,this.params=params,this.appTitle=appTitle,bindMethods(this),this.scope.sectionName="Github",this.scope.project={},promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.appTitle.set("Github - "+_this.scope.project.name)}}(this)),promise.then(null,this.onInitialDataError.bind(this))}return extend(GithubController,superClass),GithubController.$inject=["$scope","$tgRepo","$tgResources","$routeParams","$appTitle"],GithubController.prototype.loadModules=function(){return this.rs.modules.list(this.scope.projectId,"github").then(function(_this){return function(github){return _this.scope.github=github}}(this))},GithubController.prototype.loadProject=function(){return this.rs.projects.get(this.scope.projectId).then(function(_this){return function(project){return _this.scope.project=project,_this.scope.$emit("project:loaded",project),project}}(this))},GithubController.prototype.loadInitialData=function(){var promise;return promise=this.repo.resolve({pslug:this.params.pslug}).then(function(_this){return function(data){return _this.scope.projectId=data.project,data}}(this)),promise.then(function(_this){return function(){return _this.loadProject() -}}(this)).then(function(_this){return function(){return _this.loadModules()}}(this))},GithubController}(mixOf(taiga.Controller,taiga.PageMixin,taiga.FiltersMixin)),module.controller("GithubController",GithubController),GitlabController=function(superClass){function GitlabController(scope,repo,rs,params,appTitle){var promise;this.scope=scope,this.repo=repo,this.rs=rs,this.params=params,this.appTitle=appTitle,bindMethods(this),this.scope.sectionName="Gitlab",this.scope.project={},promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.appTitle.set("Gitlab - "+_this.scope.project.name)}}(this)),promise.then(null,this.onInitialDataError.bind(this)),this.scope.$on("project:modules:reload",function(_this){return function(){return _this.loadModules()}}(this))}return extend(GitlabController,superClass),GitlabController.$inject=["$scope","$tgRepo","$tgResources","$routeParams","$appTitle"],GitlabController.prototype.loadModules=function(){return this.rs.modules.list(this.scope.projectId,"gitlab").then(function(_this){return function(gitlab){return _this.scope.gitlab=gitlab}}(this))},GitlabController.prototype.loadProject=function(){return this.rs.projects.get(this.scope.projectId).then(function(_this){return function(project){return _this.scope.project=project,_this.scope.$emit("project:loaded",project),project}}(this))},GitlabController.prototype.loadInitialData=function(){var promise;return promise=this.repo.resolve({pslug:this.params.pslug}).then(function(_this){return function(data){return _this.scope.projectId=data.project,data}}(this)),promise.then(function(_this){return function(){return _this.loadProject()}}(this)).then(function(_this){return function(){return _this.loadModules()}}(this))},GitlabController}(mixOf(taiga.Controller,taiga.PageMixin,taiga.FiltersMixin)),module.controller("GitlabController",GitlabController),BitbucketController=function(superClass){function BitbucketController(scope,repo,rs,params,appTitle){var promise;this.scope=scope,this.repo=repo,this.rs=rs,this.params=params,this.appTitle=appTitle,bindMethods(this),this.scope.sectionName="Bitbucket",this.scope.project={},promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.appTitle.set("Bitbucket - "+_this.scope.project.name)}}(this)),promise.then(null,this.onInitialDataError.bind(this)),this.scope.$on("project:modules:reload",function(_this){return function(){return _this.loadModules()}}(this))}return extend(BitbucketController,superClass),BitbucketController.$inject=["$scope","$tgRepo","$tgResources","$routeParams","$appTitle"],BitbucketController.prototype.loadModules=function(){return this.rs.modules.list(this.scope.projectId,"bitbucket").then(function(_this){return function(bitbucket){return _this.scope.bitbucket=bitbucket}}(this))},BitbucketController.prototype.loadProject=function(){return this.rs.projects.get(this.scope.projectId).then(function(_this){return function(project){return _this.scope.project=project,_this.scope.$emit("project:loaded",project),project}}(this))},BitbucketController.prototype.loadInitialData=function(){var promise;return promise=this.repo.resolve({pslug:this.params.pslug}).then(function(_this){return function(data){return _this.scope.projectId=data.project,data}}(this)),promise.then(function(_this){return function(){return _this.loadProject()}}(this)).then(function(_this){return function(){return _this.loadModules()}}(this))},BitbucketController}(mixOf(taiga.Controller,taiga.PageMixin,taiga.FiltersMixin)),module.controller("BitbucketController",BitbucketController),SelectInputText=function(){var link;return link=function($scope,$el){return $el.on("click",".select-input-content",function(){return $el.find("input").select(),$el.find(".help-copy").addClass("visible")})},{link:link}},module.directive("tgSelectInputText",SelectInputText),GithubWebhooksDirective=function($repo,$confirm,$loading){var link;return link=function($scope,$el){var form,submit,submitButton;return form=$el.find("form").checksley({onlyOneErrorElement:!0}),submit=debounce(2e3,function(){return function(event){var promise;return event.preventDefault(),form.validate()?($loading.start(submitButton),promise=$repo.saveAttribute($scope.github,"github"),promise.then(function(){return $loading.finish(submitButton),$confirm.notify("success")}),promise.then(null,function(data){return $loading.finish(submitButton),form.setErrors(data),data._error_message?$confirm.notify("error",data._error_message):void 0})):void 0}}(this)),submitButton=$el.find(".submit-button"),$el.on("submit","form",submit)},{link:link}},module.directive("tgGithubWebhooks",["$tgRepo","$tgConfirm","$tgLoading",GithubWebhooksDirective]),GitlabWebhooksDirective=function($repo,$confirm,$loading){var link;return link=function($scope,$el){var form,submit,submitButton;return form=$el.find("form").checksley({onlyOneErrorElement:!0}),submit=debounce(2e3,function(){return function(event){var promise;return event.preventDefault(),form.validate()?($loading.start(submitButton),promise=$repo.saveAttribute($scope.gitlab,"gitlab"),promise.then(function(){return $loading.finish(submitButton),$confirm.notify("success"),$scope.$emit("project:modules:reload")}),promise.then(null,function(data){return $loading.finish(submitButton),form.setErrors(data),data._error_message?$confirm.notify("error",data._error_message):void 0})):void 0}}(this)),submitButton=$el.find(".submit-button"),$el.on("submit","form",submit)},{link:link}},module.directive("tgGitlabWebhooks",["$tgRepo","$tgConfirm","$tgLoading",GitlabWebhooksDirective]),BitbucketWebhooksDirective=function($repo,$confirm,$loading){var link;return link=function($scope,$el){var form,submit,submitButton;return form=$el.find("form").checksley({onlyOneErrorElement:!0}),submit=debounce(2e3,function(){return function(event){var promise;return event.preventDefault(),form.validate()?($loading.start(submitButton),promise=$repo.saveAttribute($scope.bitbucket,"bitbucket"),promise.then(function(){return $loading.finish(submitButton),$confirm.notify("success"),$scope.$emit("project:modules:reload")}),promise.then(null,function(data){return $loading.finish(submitButton),form.setErrors(data),data._error_message?$confirm.notify("error",data._error_message):void 0})):void 0}}(this)),submitButton=$el.find(".submit-button"),$el.on("submit","form",submit)},{link:link}},module.directive("tgBitbucketWebhooks",["$tgRepo","$tgConfirm","$tgLoading",BitbucketWebhooksDirective]),ValidOriginIpsDirective=function(){var link;return link=function($scope,$el,$attrs,$ngModel){return $ngModel.$parsers.push(function(value){return value=$.trim(value),""===value?[]:value.split(",")})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgValidOriginIps",ValidOriginIpsDirective)}.call(this),function(){var CreateProject,DeleteProjectDirective,bindOnce,debounce,module,taiga,timeout;taiga=this.taiga,bindOnce=this.taiga.bindOnce,timeout=this.taiga.timeout,debounce=this.taiga.debounce,module=angular.module("taigaProject"),CreateProject=function($rootscope,$repo,$confirm,$location,$navurls,$rs,$projectUrl,$loading,lightboxService,$cacheFactory){var link;return link=function($scope,$el){var form,onErrorSubmit,onSuccessSubmit,submit,submitButton;return $scope.data={},$scope.templates=[],form=$el.find("form").checksley({onlyOneErrorElement:!0}),onSuccessSubmit=function(response){return $cacheFactory.get("$http").removeAll(),$loading.finish(submitButton),$rootscope.$broadcast("projects:reload"),$confirm.notify("success","Success"),$location.url($projectUrl.get(response)),lightboxService.close($el)},onErrorSubmit=function(response){var error_field,error_step,i,len,ref,selectors;for($loading.finish(submitButton),form.setErrors(response),selectors=[],ref=_.keys(response),i=0,len=ref.length;len>i;i++)error_field=ref[i],selectors.push("[name="+error_field+"]");return $el.find(".active").removeClass("active"),error_step=$el.find(selectors.join(",")).first().parents(".wizard-step"),error_step.addClass("active"),$el.find(".progress-bar").removeClass().addClass("progress-bar").addClass(error_step.data("step"))},submit=function(){return function(event){var promise;return event.preventDefault(),form.validate()?($loading.start(submitButton),promise=$repo.create("projects",$scope.data),promise.then(onSuccessSubmit,onErrorSubmit)):void 0}}(this),$scope.$on("projects:create",function(){return $scope.data={total_story_points:100,total_milestones:5},$scope.templates.length?$scope.data.creation_template=_.head(_.filter($scope.templates,function(x){return"scrum"===x.slug})).id:$rs.projects.templates().then(function(){return function(result){return $scope.templates=result,$scope.data.creation_template=_.head(_.filter($scope.templates,function(x){return"scrum"===x.slug})).id}}(this)),$el.find(".active").removeClass("active"),$el.find(".create-step1").addClass("active"),lightboxService.open($el),timeout(600,function(){return $el.find(".progress-bar").addClass("step1")})}),$el.on("click",".button-next",function(event){var current,field,i,len,next,ref,step,valid;for(event.preventDefault(),current=$el.find(".active"),valid=!0,ref=form.fields,i=0,len=ref.length;len>i;i++)field=ref[i],current.find("[name="+field.element.attr("name")+"]").length&&(valid=field.validate()!==!1&&valid);return valid?(next=current.next(),current.toggleClass("active"),next.toggleClass("active"),step=next.data("step"),$el.find(".progress-bar").removeClass().addClass("progress-bar").addClass(step)):void 0}),$el.on("click",".button-prev",function(event){var current,prev,step;return event.preventDefault(),current=$el.find(".active"),prev=current.prev(),current.toggleClass("active"),prev.toggleClass("active"),step=prev.data("step"),$el.find(".progress-bar").removeClass().addClass("progress-bar").addClass(step)}),submitButton=$el.find(".submit-button"),$el.on("submit","form",submit),$el.on("click",".close",function(event){return event.preventDefault(),lightboxService.close($el)})},{link:link}},module.directive("tgLbCreateProject",["$rootScope","$tgRepo","$tgConfirm","$location","$tgNavUrls","$tgResources","$projectUrl","$tgLoading","lightboxService","$cacheFactory",CreateProject]),DeleteProjectDirective=function($repo,$rootscope,$auth,$location,$navUrls,$confirm,lightboxService,tgLoader){var link;return link=function($scope,$el){var projectToDelete,submit;return projectToDelete=null,$scope.$on("deletelightbox:new",function(ctx,project){return lightboxService.open($el),projectToDelete=project}),$scope.$on("$destroy",function(){return $el.off()}),submit=function(){var promise;return tgLoader.start(),lightboxService.close($el),promise=$repo.remove(projectToDelete),promise.then(function(){return tgLoader.pageLoaded(),$rootscope.$broadcast("projects:reload"),$location.path($navUrls.resolve("home")),$confirm.notify("success")}),promise.then(null,function(){return $confirm.notify("error"),lightboxService.close($el)})},$el.on("click",".button-red",function(event){return event.preventDefault(),lightboxService.close($el)}),$el.on("click",".button-green",function(event){return event.preventDefault(),submit()})},{link:link}},module.directive("tgLbDeleteProject",["$tgRepo","$rootScope","$tgAuth","$tgLocation","$tgNavUrls","$tgConfirm","lightboxService","tgLoader",DeleteProjectDirective])}.call(this),function(){var ProjectController,ProjectsController,ProjectsListDirective,ProjectsPaginationDirective,bindOnce,module,taiga,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,module=angular.module("taigaProject"),bindOnce=this.taiga.bindOnce,ProjectsController=function(superClass){function ProjectsController(scope,q,rs,rootscope,navUrls,auth,location,appTitle,projectUrl,tgLoader){var promise;this.scope=scope,this.q=q,this.rs=rs,this.rootscope=rootscope,this.navUrls=navUrls,this.auth=auth,this.location=location,this.appTitle=appTitle,this.projectUrl=projectUrl,this.appTitle.set("Projects"),this.auth.isAuthenticated()||this.location.path(this.navUrls.resolve("login")),this.user=this.auth.getUser(),this.projects=[],promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.scope.$emit("projects:loaded",_this.projects)}}(this)),promise.then(null,this.onInitialDataError.bind(this)),promise["finally"](tgLoader.pageLoaded)}return extend(ProjectsController,superClass),ProjectsController.$inject=["$scope","$q","$tgResources","$rootScope","$tgNavUrls","$tgAuth","$tgLocation","$appTitle","$projectUrl","tgLoader"],ProjectsController.prototype.loadInitialData=function(){var ref;return this.rs.projects.listByMember(null!=(ref=this.rootscope.user)?ref.id:void 0).then(function(_this){return function(projects){var i,len,project;for(_this.projects={recents:projects.slice(0,8),all:projects},i=0,len=projects.length;len>i;i++)project=projects[i],project.url=_this.projectUrl.get(project);return projects}}(this))},ProjectsController.prototype.newProject=function(){return this.rootscope.$broadcast("projects:create")},ProjectsController.prototype.logout=function(){return this.auth.logout(),this.location.path(this.navUrls.resolve("login"))},ProjectsController}(taiga.Controller),module.controller("ProjectsController",ProjectsController),ProjectController=function(superClass){function ProjectController(scope,rs,repo,params,q,rootscope,appTitle,location,navUrls){var promise;this.scope=scope,this.rs=rs,this.repo=repo,this.params=params,this.q=q,this.rootscope=rootscope,this.appTitle=appTitle,this.location=location,this.navUrls=navUrls,promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.appTitle.set(_this.scope.project.name),_this.scope.$emit("regenerate:project-pagination")}}(this)),promise.then(null,this.onInitialDataError.bind(this))}return extend(ProjectController,superClass),ProjectController.$inject=["$scope","$tgResources","$tgRepo","$routeParams","$q","$rootScope","$appTitle","$tgLocation","$tgNavUrls"],ProjectController.prototype.loadInitialData=function(){var promise;return promise=this.repo.resolve({pslug:this.params.pslug}).then(function(_this){return function(data){return _this.scope.projectId=data.project,data}}(this)),promise.then(function(_this){return function(){return _this.loadPageData()}}(this)).then(function(_this){return function(){return _this.scope.$emit("project:loaded",_this.scope.project)}}(this))},ProjectController.prototype.loadPageData=function(){return this.q.all([this.loadProjectStats(),this.loadProject()])},ProjectController.prototype.loadProject=function(){return this.rs.projects.get(this.scope.projectId).then(function(_this){return function(project){return _this.scope.project=project,project}}(this))},ProjectController.prototype.loadProjectStats=function(){return this.rs.projects.stats(this.scope.projectId).then(function(_this){return function(stats){return _this.scope.stats=stats,stats}}(this))},ProjectController}(taiga.Controller),module.controller("ProjectController",ProjectController),ProjectsPaginationDirective=function(){var link;return link=function($scope,$el){var checkButtonVisibility,container,containerSize,hasNextPage,hasPagination,hasPrevPage,hide,nextBtn,nextPage,pageSize,prevBtn,prevPage,remove,render,visible;return prevBtn=$el.find(".v-pagination-previous"),nextBtn=$el.find(".v-pagination-next"),container=$el.find("ul"),pageSize=0,containerSize=0,render=function(){return pageSize=$el.find(".v-pagination-list").height(),container.find("li").length&&hasPagination()?(hasNextPage()?visible(nextBtn):hide(nextBtn),hasPrevPage()?visible(prevBtn):hide(prevBtn)):remove()},hasPagination=function(){return containerSize=container.height(),containerSize>pageSize},hasPrevPage=function(top){return null==top&&(top=-parseInt(container.css("top"),10)||0),0!==top},hasNextPage=function(top){return containerSize=container.height(),top||(top=-parseInt(container.css("top"),10)||0),containerSize>pageSize&&containerSize>top+pageSize},nextPage=function(callback){var lastLi,maxTop,newTop,top;return top=parseInt(container.css("top"),10),newTop=top-pageSize,lastLi=$el.find(".v-pagination-list li:last-child"),maxTop=-(lastLi.position().top+lastLi.outerHeight()-pageSize),maxTop>newTop&&(newTop=maxTop),container.animate({top:newTop},callback),newTop},prevPage=function(callback){var newTop,top;return top=parseInt(container.css("top"),10),newTop=top+pageSize,newTop>0&&(newTop=0),container.animate({top:newTop},callback),newTop},visible=function(element){return element.css("visibility","visible")},hide=function(element){return element.css("visibility","hidden")},checkButtonVisibility=function(){},remove=function(){return container.css("top",0),hide(prevBtn),hide(nextBtn)},$el.on("click",".v-pagination-previous",function(event){var newTop;return event.preventDefault(),container.is(":animated")?void 0:(visible(nextBtn),newTop=prevPage(),hasPrevPage(newTop)?void 0:hide(prevBtn))}),$el.on("click",".v-pagination-next",function(event){var newTop;return event.preventDefault(),container.is(":animated")?void 0:(visible(prevBtn),newTop=-nextPage(),hasNextPage(newTop)?void 0:hide(nextBtn))}),$scope.$on("regenerate:project-pagination",function(){return remove(),render()}),$(window).on("resize.projects-pagination",render),$scope.$on("$destroy",function(){return $(window).off("resize.projects-pagination")})},{link:link}},module.directive("tgProjectsPagination",["$timeout",ProjectsPaginationDirective]),ProjectsListDirective=function($compile,$template){var link,template;return template=$template.get("project/project-list.html",!0),link=function($scope,$el){var render;return render=function(projects){return $el.html($compile(template({projects:projects}))($scope)),$scope.$emit("regenerate:project-pagination")},$scope.$on("projects:loaded",function(ctx,projects){return null!=projects.all?render(projects.all):void 0})},{link:link}},module.directive("tgProjectsList",["$compile","$tgTemplate",ProjectsListDirective])}.call(this),function(){var BindHtmlDirective,BindOnceAltDirective,BindOnceBindDirective,BindOnceHrefDirective,BindOnceHtmlDirective,BindOnceRefDirective,BindOnceSrcDirective,BindOnceTitleDirective,BindTitleDirective,bindOnce,module;bindOnce=this.taiga.bindOnce,BindOnceBindDirective=function(){var link;return link=function($scope,$el,$attrs){return bindOnce($scope,$attrs.tgBoBind,function(val){return $el.text(val)})},{link:link}},BindOnceHtmlDirective=function(){var link;return link=function($scope,$el,$attrs){return bindOnce($scope,$attrs.tgBoHtml,function(val){return $el.html(val)})},{link:link}},BindOnceRefDirective=function(){var link;return link=function($scope,$el,$attrs){return bindOnce($scope,$attrs.tgBoRef,function(val){return $el.html("#"+val+" ")})},{link:link}},BindOnceSrcDirective=function(){var link;return link=function($scope,$el,$attrs){return bindOnce($scope,$attrs.tgBoSrc,function(val){return $el.attr("src",val)})},{link:link}},BindOnceHrefDirective=function(){var link;return link=function($scope,$el,$attrs){return bindOnce($scope,$attrs.tgBoHref,function(val){return $el.attr("href",val)})},{link:link}},BindOnceAltDirective=function(){var link;return link=function($scope,$el,$attrs){return bindOnce($scope,$attrs.tgBoAlt,function(val){return $el.attr("alt",val)})},{link:link}},BindOnceTitleDirective=function(){var link;return link=function($scope,$el,$attrs){return bindOnce($scope,$attrs.tgBoTitle,function(val){return $el.attr("title",val)})},{link:link}},BindTitleDirective=function(){var link;return link=function($scope,$el,$attrs){return $scope.$watch($attrs.tgTitleHtml,function(val){return null!=val?$el.attr("title",val):void 0})},{link:link}},BindHtmlDirective=function(){var link;return link=function($scope,$el,$attrs){return $scope.$watch($attrs.tgBindHtml,function(val){return null!=val?$el.html(val):void 0})},{link:link}},module=angular.module("taigaBase"),module.directive("tgBoBind",BindOnceBindDirective),module.directive("tgBoHtml",BindOnceHtmlDirective),module.directive("tgBoRef",BindOnceRefDirective),module.directive("tgBoSrc",BindOnceSrcDirective),module.directive("tgBoHref",BindOnceHrefDirective),module.directive("tgBoAlt",BindOnceAltDirective),module.directive("tgBoTitle",BindOnceTitleDirective),module.directive("tgBindTitle",BindTitleDirective),module.directive("tgBindHtml",BindHtmlDirective)}.call(this),function(){var ConfigurationService,module;ConfigurationService=function(){function ConfigurationService(){this.config=window.taigaConfig}return ConfigurationService.prototype.get=function(key,defaultValue){return null==defaultValue&&(defaultValue=null),_.has(this.config,key)?this.config[key]:defaultValue},ConfigurationService}(),module=angular.module("taigaBase"),module.service("$tgConfig",ConfigurationService)}.call(this),function(){var ContribController,module,taigaContribPlugins,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taigaContribPlugins=this.taigaContribPlugins=this.taigaContribPlugins||[],ContribController=function(superClass){function ContribController(rootScope,scope,params,repo,rs,confirm,appTitle){var promise;this.rootScope=rootScope,this.scope=scope,this.params=params,this.repo=repo,this.rs=rs,this.confirm=confirm,this.appTitle=appTitle,this.scope.adminPlugins=_.where(this.rootScope.contribPlugins,{type:"admin"}),this.scope.currentPlugin=_.first(_.where(this.scope.adminPlugins,{slug:this.params.plugin})),this.scope.pluginTemplate="contrib/"+this.scope.currentPlugin.slug,this.scope.projectSlug=this.params.pslug,promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.appTitle.set(_this.scope.project.name)}}(this)),promise.then(null,function(_this){return function(){return _this.confirm.notify("error")}}(this))}return extend(ContribController,superClass),ContribController.$inject=["$rootScope","$scope","$routeParams","$tgRepo","$tgResources","$tgConfirm","$appTitle"],ContribController.prototype.loadProject=function(){return this.rs.projects.get(this.scope.projectId).then(function(_this){return function(project){return _this.scope.project=project,_this.scope.$emit("project:loaded",project),_this.scope.$broadcast("project:loaded",project),project}}(this))},ContribController.prototype.loadInitialData=function(){var promise;return promise=this.repo.resolve({pslug:this.params.pslug}).then(function(_this){return function(data){return _this.scope.projectId=data.project,data}}(this)),promise.then(function(_this){return function(){return _this.loadProject()}}(this))},ContribController}(taiga.Controller),module=angular.module("taigaBase"),module.controller("ContribController",ContribController)}.call(this),function(){var FiltersStorageService,taiga,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,FiltersStorageService=function(superClass){function FiltersStorageService(storage,params){this.storage=storage,this.params=params}return extend(FiltersStorageService,superClass),FiltersStorageService.$inject=["$tgStorage","$routeParams"],FiltersStorageService.prototype.generateHash=function(components){return null==components&&(components=[]),components=_.map(components,function(x){return JSON.stringify(x)}),hex_sha1(components.join(":"))},FiltersStorageService}(taiga.Service)}.call(this),function(){var HttpService,module,taiga,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,HttpService=function(superClass){function HttpService(http,q,storage){this.http=http,this.q=q,this.storage=storage,HttpService.__super__.constructor.call(this)}return extend(HttpService,superClass),HttpService.$inject=["$http","$q","$tgStorage"],HttpService.prototype.headers=function(){var token;return token=this.storage.get("token"),token?{Authorization:"Bearer "+token}:{}},HttpService.prototype.request=function(options){return options.headers=_.merge({},options.headers||{},this.headers()),_.isPlainObject(options.data)&&(options.data=JSON.stringify(options.data)),this.http(options)},HttpService.prototype.get=function(url,params,options){return options=_.merge({method:"GET",url:url},options),params&&(options.params=params),this.request(options)},HttpService.prototype.post=function(url,data,params,options){return options=_.merge({method:"POST",url:url},options),data&&(options.data=data),params&&(options.params=params),this.request(options)},HttpService.prototype.put=function(url,data,params,options){return options=_.merge({method:"PUT",url:url},options),data&&(options.data=data),params&&(options.params=params),this.request(options)},HttpService.prototype.patch=function(url,data,params,options){return options=_.merge({method:"PATCH",url:url},options),data&&(options.data=data),params&&(options.params=params),this.request(options)},HttpService.prototype["delete"]=function(url,data,params,options){return options=_.merge({method:"DELETE",url:url},options),data&&(options.data=data),params&&(options.params=params),this.request(options)},HttpService}(taiga.Service),module=angular.module("taigaBase"),module.service("$tgHttp",HttpService)}.call(this),function(){var I18nDirective,I18nService,bindOnce,defaults,module,taiga,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,bindOnce=this.taiga.bindOnce,defaults={ns:"app",fallbackLng:"en",async:!1,lng:"en"},I18nService=function(superClass){function I18nService(rootscope,localesEn){this.rootscope=rootscope,this.options=_.clone(defaults,!0),this.options.resStore={en:{app:localesEn}}}return extend(I18nService,superClass),I18nService.prototype.setLanguage=function(language){return i18n.setLng(language),this.rootscope.currentLang=language,this.rootscope.$broadcast("i18n:changeLang",language)},I18nService.prototype.initialize=function(){return i18n.init(this.options),this.rootscope.t=i18n.t},I18nService.prototype.t=function(path,opts){return i18n.t(path,opts)},I18nService}(taiga.Service),I18nDirective=function($rootscope,$i18n){var link;return link=function($scope,$el,$attrs){var i,len,ns,options,opts,ref,results,v,values;for(values=$attrs.tr.split(","),options=$attrs.trOpts||"{}",opts=$scope.$eval(options),results=[],i=0,len=values.length;len>i;i++)v=values[i],-1===v.indexOf(":")?results.push($el.html(_.escape($i18n.t(v,opts)))):(ref=v.split(":"),ns=ref[0],v=ref[1],results.push($el.attr(ns,_.escape($i18n.t(v,opts)))));return results},{link:link,restrict:"A",scope:!1}},module=angular.module("taigaBase"),module.service("$tgI18n",["$rootScope","localesEn",I18nService]),module.directive("tr",["$rootScope","$tgI18n",I18nDirective])}.call(this),function(){var locationFactory,module;locationFactory=function($location,$route){return $location.noreload=function(scope){var lastRoute,un;return lastRoute=$route.current,un=scope.$on("$locationChangeSuccess",function(){return $route.current=lastRoute,un()}),$location},$location.isInCurrentRouteParams=function(name,value){var params;return params=_.merge($route.current.params,$location.search()),params[name]===value},$location},module=angular.module("taigaBase"),module.factory("$tgLocation",["$location","$route","$rootScope",locationFactory])}.call(this),function(){var Model,ModelService,module,provider,taiga,indexOf=[].indexOf||function(item){for(var i=0,l=this.length;l>i;i++)if(i in this&&this[i]===item)return i;return-1},extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;Model=function(){function Model(name,data,dataTypes){this._attrs=data,this._name=name,this._dataTypes=dataTypes,this.setAttrs(data),this.initialize()}return Model.prototype.clone=function(){var instance;return instance=new Model(this._name,this._attrs,this._dataTypes),instance._modifiedAttrs=this._modifiedAttrs,instance._isModified=this._isModified,instance},Model.prototype.applyCasts=function(){var attrName,castMethod,castName,ref,results;ref=this._dataTypes,results=[];for(attrName in ref)castName=ref[attrName],castMethod=service.casts[castName],castMethod&&results.push(this._attrs[attrName]=castMethod(this._attrs[attrName]));return results},Model.prototype.getIdAttrName=function(){return"id"},Model.prototype.getName=function(){return this._name},Model.prototype.getAttrs=function(patch){return null==patch&&(patch=!1),null!=this._attrs.version&&(this._modifiedAttrs.version=this._attrs.version),patch?_.extend({},this._modifiedAttrs):_.extend({},this._attrs,this._modifiedAttrs)},Model.prototype.setAttrs=function(attrs){return this._attrs=attrs,this._modifiedAttrs={},this.applyCasts(),this._isModified=!1},Model.prototype.setAttr=function(name,value){return this._modifiedAttrs[name]=value,this._isModified=!0},Model.prototype.initialize=function(){var getter,self,setter;return self=this,getter=function(name){return function(){return"string"==typeof name&&"__"===name.substr(0,2)?self[name]:indexOf.call(_.keys(self._modifiedAttrs),name)<0?self._attrs[name]:self._modifiedAttrs[name]}},setter=function(name){return function(value){return"string"==typeof name&&"__"===name.substr(0,2)?void(self[name]=value):void(self._attrs[name]!==value?(self._modifiedAttrs[name]=value,self._isModified=!0):delete self._modifiedAttrs[name])}},_.each(this._attrs,function(value,name){var options;return options={get:getter(name),set:setter(name),enumerable:!0,configurable:!0},Object.defineProperty(self,name,options)})},Model.prototype.serialize=function(){var data;return data={data:_.clone(this._attrs),name:this._name},JSON.stringify(data)},Model.prototype.isModified=function(){return this._isModified},Model.prototype.isAttributeModified=function(attribute){return null!=this._modifiedAttrs[attribute]},Model.prototype.markSaved=function(){return this._isModified=!1,this._attrs=this.getAttrs(),this._modifiedAttrs={}},Model.prototype.revert=function(){return this._modifiedAttrs={},this._isModified=!1},Model.desSerialize=function(sdata){var ddata,model;return ddata=JSON.parse(sdata),model=new Model(ddata.url,ddata.data)},Model}(),taiga=this.taiga,ModelService=function(superClass){function ModelService(q,urls,storage,http){this.q=q,this.urls=urls,this.storage=storage,this.http=http,ModelService.__super__.constructor.call(this)}return extend(ModelService,superClass),ModelService.$inject=["$q","$tgUrls","$tgStorage","$tgHttp"],ModelService}(taiga.Service),provider=function(){var service;return service={},service.make_model=function(name,data,cls,dataTypes){return null==cls&&(cls=Model),null==dataTypes&&(dataTypes={}),new cls(name,data,dataTypes)},service.cls=Model,service.casts={"int":function(value){return parseInt(value,10)},"float":function(value){return parseFloat(value,10)}},service},module=angular.module("taigaBase"),module.factory("$tgModel",["$q","$http","$tgUrls","$tgStorage",provider])}.call(this),function(){var NavigationUrlsDirective,NavigationUrlsService,bindOnce,module,taiga,trim,extend=function(child,parent){function ctor(){this.constructor=child -}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,trim=this.taiga.trim,bindOnce=this.taiga.bindOnce,module=angular.module("taigaBase"),NavigationUrlsService=function(superClass){function NavigationUrlsService(){this.urls={}}return extend(NavigationUrlsService,superClass),NavigationUrlsService.prototype.update=function(urls){return this.urls=_.merge({},this.urls,urls||{})},NavigationUrlsService.prototype.formatUrl=function(url,ctx){var replacer;return null==ctx&&(ctx={}),replacer=function(match){return match=trim(match,":"),ctx[match]||"undefined"},url.replace(/(:\w+)/g,replacer)},NavigationUrlsService.prototype.resolve=function(name,ctx){var url;return url=this.urls[name],url?ctx?this.formatUrl(url,ctx):url:""},NavigationUrlsService}(taiga.Service),module.service("$tgNavUrls",NavigationUrlsService),NavigationUrlsDirective=function($navurls,$auth,$q,$location){var bindOnceP,link,parseNav;return bindOnceP=function($scope,attr){var defered;return defered=$q.defer(),bindOnce($scope,attr,function(v){return defered.resolve(v)}),defered.promise},parseNav=function(data,$scope){var name,params,promises,ref,values;return ref=_.map(data.split(":"),trim),name=ref[0],params=ref[1],params=params?_.map(params.split(","),trim):[],values=_.map(params,function(x){return trim(x.split("=")[1])}),promises=_.map(values,function(x){return bindOnceP($scope,x)}),$q.all(promises).then(function(){var i,item,key,len,options,ref1,value;for(options={},i=0,len=params.length;len>i;i++)item=params[i],ref1=_.map(item.split("="),trim),key=ref1[0],value=ref1[1],options[key]=$scope.$eval(value);return[name,options]})},link=function($scope,$el,$attrs){return $el.is("a")&&$el.attr("href","#"),$el.on("mouseenter",function(event){var target;return target=$(event.currentTarget),target.data("fullUrl")?void 0:parseNav($attrs.tgNav,$scope).then(function(result){var fullUrl,name,options,url,user;return name=result[0],options=result[1],user=$auth.getUser(),user&&(options.user=user.username),url=$navurls.resolve(name),fullUrl=$navurls.formatUrl(url,options),target.data("fullUrl",fullUrl),target.is("a")&&target.attr("href",fullUrl),$el.on("click",function(event){if(event.preventDefault(),target=$(event.currentTarget),!target.hasClass("noclick"))switch(fullUrl=target.data("fullUrl"),event.which){case 1:return $location.url(fullUrl),$scope.$apply();case 2:return window.open(fullUrl)}})})}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgNav",["$tgNavUrls","$tgAuth","$q","$tgLocation",NavigationUrlsDirective])}.call(this),function(){var RepositoryService,module,taiga,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,RepositoryService=function(superClass){function RepositoryService(q,model1,storage,http,urls){this.q=q,this.model=model1,this.storage=storage,this.http=http,this.urls=urls,RepositoryService.__super__.constructor.call(this)}return extend(RepositoryService,superClass),RepositoryService.$inject=["$q","$tgModel","$tgStorage","$tgHttp","$tgUrls"],RepositoryService.prototype.resolveUrlForModel=function(model){var idAttrName;return idAttrName=model.getIdAttrName(),this.urls.resolve(model.getName())+"/"+model[idAttrName]},RepositoryService.prototype.resolveUrlForAttributeModel=function(model){return this.urls.resolve(model.getName(),model.parent)},RepositoryService.prototype.create=function(name,data,dataTypes,extraParams){var defered,promise,url;return null==dataTypes&&(dataTypes={}),null==extraParams&&(extraParams={}),defered=this.q.defer(),url=this.urls.resolve(name),promise=this.http.post(url,JSON.stringify(data)),promise.success(function(_this){return function(_data){return defered.resolve(_this.model.make_model(name,_data,null,dataTypes))}}(this)),promise.error(function(){return function(data){return defered.reject(data)}}(this)),defered.promise},RepositoryService.prototype.remove=function(model,params){var defered,promise,url;return null==params&&(params={}),defered=this.q.defer(),url=this.resolveUrlForModel(model),promise=this.http["delete"](url,{},params),promise.success(function(){return defered.resolve(model)}),promise.error(function(){return defered.reject(model)}),defered.promise},RepositoryService.prototype.saveAll=function(models,patch){var promises;return null==patch&&(patch=!0),promises=_.map(models,function(_this){return function(x){return _this.save(x,!0)}}(this)),this.q.all(promises)},RepositoryService.prototype.save=function(model,patch){var data,defered,promise,url;return null==patch&&(patch=!0),defered=this.q.defer(),!model.isModified()&&patch?(defered.resolve(model),defered.promise):(url=this.resolveUrlForModel(model),data=JSON.stringify(model.getAttrs(patch)),promise=patch?this.http.patch(url,data):this.http.put(url,data),promise.success(function(){return function(data){return model._isModified=!1,model._attrs=_.extend(model.getAttrs(),data),model._modifiedAttrs={},model.applyCasts(),defered.resolve(model)}}(this)),promise.error(function(data){return defered.reject(data)}),defered.promise)},RepositoryService.prototype.saveAttribute=function(model,attribute,patch){var data,defered,promise,url;return null==patch&&(patch=!0),defered=this.q.defer(),!model.isModified()&&patch?(defered.resolve(model),defered.promise):(url=this.resolveUrlForAttributeModel(model),data={},data[attribute]=model.getAttrs(),promise=patch?this.http.patch(url,data):this.http.put(url,data),promise.success(function(){return function(data){return model._isModified=!1,model._attrs=_.extend(model.getAttrs(),data),model._modifiedAttrs={},model.applyCasts(),defered.resolve(model)}}(this)),promise.error(function(data){return defered.reject(data)}),defered.promise)},RepositoryService.prototype.refresh=function(model){var defered,promise,url;return defered=this.q.defer(),url=this.resolveUrlForModel(model),promise=this.http.get(url),promise.success(function(data){return model._modifiedAttrs={},model._attrs=data,model._isModified=!1,model.applyCasts(),defered.resolve(model)}),promise.error(function(data){return defered.reject(data)}),defered.promise},RepositoryService.prototype.queryMany=function(name,params,options){var httpOptions,url;return null==options&&(options={}),url=this.urls.resolve(name),httpOptions={headers:{}},options.enablePagination||(httpOptions.headers["x-disable-pagination"]="1"),this.http.get(url,params,httpOptions).then(function(_this){return function(data){return _.map(data.data,function(x){return _this.model.make_model(name,x)})}}(this))},RepositoryService.prototype.queryOneAttribute=function(name,id,attribute,params,options){var httpOptions,url;return null==options&&(options={}),url=this.urls.resolve(name,id),httpOptions={headers:{}},options.enablePagination||(httpOptions.headers["x-disable-pagination"]="1"),this.http.get(url,params,httpOptions).then(function(_this){return function(data){var model;return model=_this.model.make_model(name,data.data[attribute]),model.parent=id,model}}(this))},RepositoryService.prototype.queryOne=function(name,id,params,options){var httpOptions,url;return null==options&&(options={}),url=this.urls.resolve(name),id&&(url=url+"/"+id),httpOptions={headers:{}},options.enablePagination||(httpOptions.headers["x-disable-pagination"]="1"),this.http.get(url,params,httpOptions).then(function(_this){return function(data){return _this.model.make_model(name,data.data)}}(this))},RepositoryService.prototype.queryOneRaw=function(name,id,params,options){var httpOptions,url;return null==options&&(options={}),url=this.urls.resolve(name),id&&(url=url+"/"+id),httpOptions=_.merge({headers:{}},options),options.enablePagination||(httpOptions.headers["x-disable-pagination"]="1"),this.http.get(url,params,httpOptions).then(function(){return function(data){return data.data}}(this))},RepositoryService.prototype.queryPaginated=function(name,params,options){var httpOptions,url;return null==options&&(options={}),url=this.urls.resolve(name),httpOptions=_.merge({headers:{}},options),this.http.get(url,params,httpOptions).then(function(_this){return function(data){var headers,result;return headers=data.headers(),result={},result.models=_.map(data.data,function(x){return _this.model.make_model(name,x)}),result.count=parseInt(headers["x-pagination-count"],10),result.current=parseInt(headers["x-pagination-current"]||1,10),result.paginatedBy=parseInt(headers["x-paginated-by"],10),result}}(this))},RepositoryService.prototype.resolve=function(options){var cache,params;return params={},null!=options.pslug&&(params.project=options.pslug),null!=options.usref&&(params.us=options.usref),null!=options.taskref&&(params.task=options.taskref),null!=options.issueref&&(params.issue=options.issueref),null!=options.sslug&&(params.milestone=options.sslug),null!=options.wikipage&&(params.wikipage=options.wikipage),cache=!(options.wikipage||options.sslug),this.queryOneRaw("resolver",null,params,{cache:cache})},RepositoryService}(taiga.Service),module=angular.module("taigaBase"),module.service("$tgRepo",RepositoryService)}.call(this),function(){var StorageService,module,taiga,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,StorageService=function(superClass){function StorageService(){StorageService.__super__.constructor.call(this)}return extend(StorageService,superClass),StorageService.$inject=["$rootScope"],StorageService.prototype.get=function(key,_default){var serializedValue;return serializedValue=localStorage.getItem(key),null===serializedValue?_default||null:JSON.parse(serializedValue)},StorageService.prototype.set=function(key,val){return _.isObject(key)?_.each(key,function(_this){return function(val,key){return _this.set(key,val)}}(this)):localStorage.setItem(key,JSON.stringify(val))},StorageService.prototype.contains=function(key){var value;return value=this.get(key),null!==value},StorageService.prototype.remove=function(key){return localStorage.removeItem(key)},StorageService.prototype.clear=function(){return localStorage.clear()},StorageService}(taiga.Service),module=angular.module("taigaBase"),module.service("$tgStorage",StorageService)}.call(this),function(){var UrlsService,format,module,taiga,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;format=function(fmt,obj){return obj=_.clone(obj),fmt.replace(/%s/g,function(){return String(obj.shift())})},taiga=this.taiga,UrlsService=function(superClass){function UrlsService(config){this.config=config,this.urls={},this.mainUrl=this.config.get("api")}return extend(UrlsService,superClass),UrlsService.$inject=["$tgConfig"],UrlsService.prototype.update=function(urls){return this.urls=_.merge(this.urls,urls)},UrlsService.prototype.resolve=function(){var args,name,url;if(args=_.toArray(arguments),0===args.length)throw Error("wrong arguments to setUrls");return name=args.slice(0,1)[0],url=format(this.urls[name],args.slice(1)),format("%s/%s",[_.str.rtrim(this.mainUrl,"/"),_.str.ltrim(url,"/")])},UrlsService.prototype.resolveAbsolute=function(){var url;return url=this.resolve.apply(this,arguments),/^https?:\/\//i.test(url)?url:/^\//.test(url)?window.location.protocol+"//"+window.location.host+url:window.location.protocol+"//"+window.location.host+"/"+url},UrlsService}(taiga.Service),module=angular.module("taigaBase"),module.service("$tgUrls",UrlsService)}.call(this),function(){var module,resourceProvider,sizeFormat,taiga;taiga=this.taiga,sizeFormat=this.taiga.sizeFormat,resourceProvider=function($rootScope,$config,$urls,$model,$repo,$auth,$q){var service;return service={},service.list=function(urlName,objectId,projectId){var params;return params={object_id:objectId,project:projectId},$repo.queryMany(urlName,params)},service.create=function(urlName,projectId,objectId,file){var data,defered,maxFileSize,response,uploadComplete,uploadFailed,uploadProgress,xhr;return defered=$q.defer(),void 0===file?(defered.reject(null),defered.promise):(maxFileSize=$config.get("maxUploadFileSize",null),maxFileSize&&file.size>maxFileSize?(response={status:413,data:{_error_message:"'"+file.name+"' ("+sizeFormat(file.size)+") is too heavy for our oompa loompas, try it with a smaller than ("+sizeFormat(maxFileSize)+")"}},defered.reject(response),defered.promise):(uploadProgress=function(){return function(evt){return $rootScope.$apply(function(){return file.status="in-progress",file.size=sizeFormat(evt.total),file.progressMessage="upload "+sizeFormat(evt.loaded)+" of "+sizeFormat(evt.total),file.progressPercent=Math.round(evt.loaded/evt.total*100)+"%"})}}(this),uploadComplete=function(){return function(evt){return $rootScope.$apply(function(){var data,model;file.status="done";try{data=JSON.parse(evt.target.responseText)}catch(_error){data={}}return model=$model.make_model(urlName,data),defered.resolve(model)})}}(this),uploadFailed=function(){return function(){return $rootScope.$apply(function(){return file.status="error",defered.reject("fail")})}}(this),data=new FormData,data.append("project",projectId),data.append("object_id",objectId),data.append("attached_file",file),xhr=new XMLHttpRequest,xhr.upload.addEventListener("progress",uploadProgress,!1),xhr.addEventListener("load",uploadComplete,!1),xhr.addEventListener("error",uploadFailed,!1),xhr.open("POST",$urls.resolve(urlName)),xhr.setRequestHeader("Authorization","Bearer "+$auth.getToken()),xhr.setRequestHeader("Accept","application/json"),xhr.send(data),defered.promise))},function(instance){return instance.attachments=service}},module=angular.module("taigaResources"),module.factory("$tgAttachmentsResourcesProvider",["$rootScope","$tgConfig","$tgUrls","$tgModel","$tgRepo","$tgAuth","$q",resourceProvider])}.call(this),function(){var module,resourceProvider,taiga;taiga=this.taiga,resourceProvider=function($repo){var _get,service;return _get=function(objectId,resource){return $repo.queryOne(resource,objectId)},service={userstory:{get:function(objectId){return _get(objectId,"custom-attributes-values/userstory")}},task:{get:function(objectId){return _get(objectId,"custom-attributes-values/task")}},issue:{get:function(objectId){return _get(objectId,"custom-attributes-values/issue")}}},function(instance){return instance.customAttributesValues=service}},module=angular.module("taigaResources"),module.factory("$tgCustomAttributesValuesResourcesProvider",["$tgRepo",resourceProvider])}.call(this),function(){var module,resourceProvider,sizeFormat,taiga;taiga=this.taiga,sizeFormat=this.taiga.sizeFormat,resourceProvider=function($repo){var _list,service;return _list=function(projectId,resource){return $repo.queryMany(resource,{project:projectId})},service={userstory:{list:function(projectId){return _list(projectId,"custom-attributes/userstory")}},task:{list:function(projectId){return _list(projectId,"custom-attributes/task")}},issue:{list:function(projectId){return _list(projectId,"custom-attributes/issue")}}},function(instance){return instance.customAttributes=service}},module=angular.module("taigaResources"),module.factory("$tgCustomAttributesResourcesProvider",["$tgRepo",resourceProvider])}.call(this),function(){var module,resourceProvider,taiga;taiga=this.taiga,resourceProvider=function($repo,$http,$urls){var service;return service={},service.get=function(type,objectId){return $repo.queryOneRaw("history/"+type,objectId)},service.deleteComment=function(type,objectId,activityId){var params,url;return url=$urls.resolve("history/"+type),url=url+"/"+objectId+"/delete_comment",params={id:activityId},$http.post(url,null,params).then(function(){return function(data){return data.data}}(this))},service.undeleteComment=function(type,objectId,activityId){var params,url;return url=$urls.resolve("history/"+type),url=url+"/"+objectId+"/undelete_comment",params={id:activityId},$http.post(url,null,params).then(function(){return function(data){return data.data}}(this))},function(instance){return instance.history=service}},module=angular.module("taigaResources"),module.factory("$tgHistoryResourcesProvider",["$tgRepo","$tgHttp","$tgUrls",resourceProvider])}.call(this),function(){var module,resourceProvider,taiga;taiga=this.taiga,resourceProvider=function($repo){var service;return service={},service.get=function(token){return $repo.queryOne("invitations",token)},function(instance){return instance.invitations=service}},module=angular.module("taigaResources"),module.factory("$tgInvitationsResourcesProvider",["$tgRepo",resourceProvider])}.call(this),function(){var generateHash,module,resourceProvider,taiga;taiga=this.taiga,generateHash=taiga.generateHash,resourceProvider=function($repo,$http,$urls,$storage,$q){var filtersHashSuffix,hashSuffix,myFiltersHashSuffix,service;return service={},hashSuffix="issues-queryparams",filtersHashSuffix="issues-filters",myFiltersHashSuffix="issues-my-filters",service.get=function(projectId,issueId){var params;return params=service.getQueryParams(projectId),params.project=projectId,$repo.queryOne("issues",issueId,params)},service.getByRef=function(projectId,ref){var params;return params=service.getQueryParams(projectId),params.project=projectId,params.ref=ref,$repo.queryOne("issues","by_ref",params)},service.list=function(projectId,filters,options){var params;return params={project:projectId},params=_.extend({},params,filters||{}),service.storeQueryParams(projectId,params),$repo.queryPaginated("issues",params,options)},service.bulkCreate=function(projectId,data){var params,url;return url=$urls.resolve("bulk-create-issues"),params={project_id:projectId,bulk_issues:data},$http.post(url,params)},service.stats=function(projectId){return $repo.queryOneRaw("projects",projectId+"/issues_stats")},service.filtersData=function(projectId){return $repo.queryOneRaw("projects",projectId+"/issue_filters_data")},service.listValues=function(projectId,type){var params;return params={project:projectId},service.storeQueryParams(projectId,params),$repo.queryMany(type,params)},service.storeQueryParams=function(projectId,params){var hash,ns;return ns=projectId+":"+hashSuffix,hash=generateHash([projectId,ns]),$storage.set(hash,params)},service.getQueryParams=function(projectId){var hash,ns;return ns=projectId+":"+hashSuffix,hash=generateHash([projectId,ns]),$storage.get(hash)||{}},service.storeFilters=function(projectSlug,params){var hash,ns;return ns=projectSlug+":"+filtersHashSuffix,hash=generateHash([projectSlug,ns]),$storage.set(hash,params)},service.getFilters=function(projectSlug){var hash,ns;return ns=projectSlug+":"+filtersHashSuffix,hash=generateHash([projectSlug,ns]),$storage.get(hash)||{}},service.storeMyFilters=function(projectId,myFilters){var deferred,hash,ns,promise,url;return deferred=$q.defer(),url=$urls.resolve("user-storage"),ns=projectId+":"+myFiltersHashSuffix,hash=generateHash([projectId,ns]),_.isEmpty(myFilters)?(promise=$http["delete"](url+"/"+hash,{key:hash,value:myFilters}),promise.then(function(){return deferred.resolve()}),promise.then(null,function(){return deferred.reject()})):(promise=$http.put(url+"/"+hash,{key:hash,value:myFilters}),promise.then(function(){return deferred.resolve()}),promise.then(null,function(){var innerPromise;return innerPromise=$http.post(""+url,{key:hash,value:myFilters}),innerPromise.then(function(){return deferred.resolve()}),innerPromise.then(null,function(){return deferred.reject()})})),deferred.promise},service.getMyFilters=function(projectId){var deferred,hash,ns,promise,url;return deferred=$q.defer(),url=$urls.resolve("user-storage"),ns=projectId+":"+myFiltersHashSuffix,hash=generateHash([projectId,ns]),promise=$http.get(url+"/"+hash),promise.then(function(data){return deferred.resolve(data.data.value)}),promise.then(null,function(){return deferred.resolve({})}),deferred.promise},function(instance){return instance.issues=service}},module=angular.module("taigaResources"),module.factory("$tgIssuesResourcesProvider",["$tgRepo","$tgHttp","$tgUrls","$tgStorage","$q",resourceProvider])}.call(this),function(){var generateHash,module,resourceProvider,taiga;taiga=this.taiga,generateHash=taiga.generateHash,resourceProvider=function($storage){var hashSuffixStatusColumnModes,hashSuffixStatusViewModes,service;return service={},hashSuffixStatusViewModes="kanban-statusviewmodels",hashSuffixStatusColumnModes="kanban-statuscolumnmodels",service.storeStatusViewModes=function(projectId,params){var hash,ns;return ns=projectId+":"+hashSuffixStatusViewModes,hash=generateHash([projectId,ns]),$storage.set(hash,params)},service.getStatusViewModes=function(projectId){var hash,ns;return ns=projectId+":"+hashSuffixStatusViewModes,hash=generateHash([projectId,ns]),$storage.get(hash)||{}},service.storeStatusColumnModes=function(projectId,params){var hash,ns;return ns=projectId+":"+hashSuffixStatusColumnModes,hash=generateHash([projectId,ns]),$storage.set(hash,params)},service.getStatusColumnModes=function(projectId){var hash,ns;return ns=projectId+":"+hashSuffixStatusColumnModes,hash=generateHash([projectId,ns]),$storage.get(hash)||{}},function(instance){return instance.kanban=service}},module=angular.module("taigaResources"),module.factory("$tgKanbanResourcesProvider",["$tgStorage",resourceProvider])}.call(this),function(){var module,resourceProvider,taiga;taiga=this.taiga,resourceProvider=function($repo,$urls,$http){var service;return service={},service.render=function(projectId,content){var params,url;return(null==content||""===content)&&(content=" "),params={project_id:projectId,content:content},url=$urls.resolve("wiki"),$http.post(url+"/render",params).then(function(){return function(data){return data.data}}(this))},function(instance){return instance.mdrender=service}},module=angular.module("taigaResources"),module.factory("$tgMdRenderResourcesProvider",["$tgRepo","$tgUrls","$tgHttp",resourceProvider])}.call(this),function(){var module,resourceProvider,taiga;taiga=this.taiga,resourceProvider=function($repo,$http,$urls){var service;return service={},service.get=function(id){return $repo.queryOne("memberships",id)},service.list=function(projectId,filters,enablePagination){var options,params;return null==enablePagination&&(enablePagination=!0),params={project:projectId},params=_.extend({},params,filters||{}),enablePagination?$repo.queryPaginated("memberships",params):$repo.queryMany("memberships",params,options={enablePagination:enablePagination})},service.listByUser=function(userId,filters){var params;return params={user:userId},params=_.extend({},params,filters||{}),$repo.queryPaginated("memberships",params)},service.resendInvitation=function(id){var url;return url=$urls.resolve("memberships"),$http.post(url+"/"+id+"/resend_invitation",{})},service.bulkCreateMemberships=function(projectId,data,invitation_extra_text){var params,url;return url=$urls.resolve("bulk-create-memberships"),params={project_id:projectId,bulk_memberships:data,invitation_extra_text:invitation_extra_text},$http.post(url,params)},function(instance){return instance.memberships=service}},module=angular.module("taigaResources"),module.factory("$tgMembershipsResourcesProvider",["$tgRepo","$tgHttp","$tgUrls",resourceProvider])}.call(this),function(){var module,resourceProvider;resourceProvider=function($repo){var service;return service={},service.list=function(projectId,module){return $repo.queryOneAttribute("project-modules",projectId,module)},function(instance){return instance.modules=service}},module=angular.module("taigaResources"),module.factory("$tgModulesResourcesProvider",["$tgRepo",resourceProvider])}.call(this),function(){var module,resourceProvider,taiga;taiga=this.taiga,resourceProvider=function($repo){var service;return service={},service.get=function(id){return $repo.queryOne("notify-policies",id)},service.list=function(filters){var params;return params=_.extend({},params,filters||{}),$repo.queryMany("notify-policies",params)},function(instance){return instance.notifyPolicies=service}},module=angular.module("taigaResources"),module.factory("$tgNotifyPoliciesResourcesProvider",["$tgRepo","$tgHttp","$tgUrls",resourceProvider])}.call(this),function(){var module,resourceProvider,sizeFormat,taiga;taiga=this.taiga,sizeFormat=this.taiga.sizeFormat,resourceProvider=function($config,$repo,$http,$urls,$auth,$q){var service;return service={},service.get=function(projectId){return $repo.queryOne("projects",projectId)},service.getBySlug=function(projectSlug){return $repo.queryOne("projects","by_slug?slug="+projectSlug)},service.list=function(){return $repo.queryMany("projects")},service.listByMember=function(memberId){var params;return params={member:memberId},$repo.queryMany("projects",params)},service.templates=function(){return $repo.queryMany("project-templates")},service.usersList=function(projectId){var params;return params={project:projectId},$repo.queryMany("users",params)},service.rolesList=function(projectId){var params;return params={project:projectId},$repo.queryMany("roles",params)},service.stats=function(projectId){return $repo.queryOneRaw("projects",projectId+"/stats")},service.regenerate_userstories_csv_uuid=function(projectId){var url;return url=$urls.resolve("projects")+"/"+projectId+"/regenerate_userstories_csv_uuid",$http.post(url)},service.regenerate_issues_csv_uuid=function(projectId){var url;return url=$urls.resolve("projects")+"/"+projectId+"/regenerate_issues_csv_uuid",$http.post(url)},service.regenerate_tasks_csv_uuid=function(projectId){var url;return url=$urls.resolve("projects")+"/"+projectId+"/regenerate_tasks_csv_uuid",$http.post(url)},service.leave=function(projectId){var url;return url=$urls.resolve("projects")+"/"+projectId+"/leave",$http.post(url)},service.memberStats=function(projectId){return $repo.queryOneRaw("projects",projectId+"/member_stats")},service.tagsColors=function(projectId){return $repo.queryOne("projects",projectId+"/tags_colors")},service["export"]=function(projectId){var url;return url=$urls.resolve("exporter")+"/"+projectId,$http.get(url)},service["import"]=function(file,statusUpdater){var complete,data,defered,failed,maxFileSize,response,uploadComplete,uploadFailed,uploadProgress,xhr;return defered=$q.defer(),maxFileSize=$config.get("maxUploadFileSize",null),maxFileSize&&file.size>maxFileSize?(response={status:413,data:{_error_message:"'"+file.name+"' ("+sizeFormat(file.size)+") is too heavy for our oompa loompas, try it with a smaller than ("+sizeFormat(maxFileSize)+")"}},defered.reject(response),defered.promise):(uploadProgress=function(){return function(evt){var message,percent;return percent=Math.round(evt.loaded/evt.total*100),message="Uloaded "+sizeFormat(evt.loaded)+" of "+sizeFormat(evt.total),statusUpdater("in-progress",null,message,percent)}}(this),uploadComplete=function(){return function(){return statusUpdater("done","Importing Project","This process can take a while, please keep the window open.")}}(this),uploadFailed=function(){return function(){return statusUpdater("error")}}(this),complete=function(){return function(evt){var ref;response={};try{response.data=JSON.parse(evt.target.responseText)}catch(_error){response.data={}}return response.status=evt.target.status,(201===(ref=response.status)||202===ref)&&defered.resolve(response),defered.reject(response)}}(this),failed=function(){return function(){return defered.reject("fail")}}(this),data=new FormData,data.append("dump",file),xhr=new XMLHttpRequest,xhr.upload.addEventListener("progress",uploadProgress,!1),xhr.upload.addEventListener("load",uploadComplete,!1),xhr.upload.addEventListener("error",uploadFailed,!1),xhr.upload.addEventListener("abort",uploadFailed,!1),xhr.addEventListener("load",complete,!1),xhr.addEventListener("error",failed,!1),xhr.open("POST",$urls.resolve("importer")),xhr.setRequestHeader("Authorization","Bearer "+$auth.getToken()),xhr.setRequestHeader("Accept","application/json"),xhr.send(data),defered.promise)},function(instance){return instance.projects=service}},module=angular.module("taigaResources"),module.factory("$tgProjectsResourcesProvider",["$tgConfig","$tgRepo","$tgHttp","$tgUrls","$tgAuth","$q",resourceProvider])}.call(this),function(){var module,resourceProvider,taiga;taiga=this.taiga,resourceProvider=function($repo){var service;return service={},service.get=function(id){return $repo.queryOne("roles",id)},service.list=function(projectId){return $repo.queryMany("roles",{project:projectId})},function(instance){return instance.roles=service}},module=angular.module("taigaResources"),module.factory("$tgRolesResourcesProvider",["$tgRepo","$tgHttp","$tgUrls",resourceProvider])}.call(this),function(){var module,resourceProvider,taiga;taiga=this.taiga,resourceProvider=function($repo,$urls,$http){var service;return service={},service["do"]=function(projectId,term){var params,url;return url=$urls.resolve("search"),params={project:projectId,text:term,get_all:!1},$http.get(url,params).then(function(data){return data.data})},function(instance){return instance.search=service}},module=angular.module("taigaResources"),module.factory("$tgSearchResourcesProvider",["$tgRepo","$tgUrls","$tgHttp",resourceProvider])}.call(this),function(){var generateHash,module,resourceProvider,taiga;taiga=this.taiga,generateHash=taiga.generateHash,resourceProvider=function($repo,$model,$storage){var hashSuffixUserstories,service;return service={},hashSuffixUserstories="userstories-queryparams",service.get=function(projectId,sprintId){return $repo.queryOne("milestones",sprintId).then(function(sprint){var uses;return service.storeUserstoriesQueryParams(projectId,{milestone:sprintId}),uses=sprint.user_stories,uses=_.map(uses,function(u){return $model.make_model("userstories",u)}),sprint._attrs.user_stories=uses,sprint})},service.stats=function(projectId,sprintId){return $repo.queryOneRaw("milestones",sprintId+"/stats")},service.list=function(projectId,filters){var params;return params={project:projectId},params=_.extend({},params,filters||{}),$repo.queryMany("milestones",params).then(function(){return function(milestones){var i,len,m,uses;for(i=0,len=milestones.length;len>i;i++)m=milestones[i],uses=m.user_stories,uses=_.map(uses,function(u){return $model.make_model("userstories",u)}),m._attrs.user_stories=uses;return milestones}}(this))},service.storeUserstoriesQueryParams=function(projectId,params){var hash,ns;return ns=projectId+":"+hashSuffixUserstories,hash=generateHash([projectId,ns]),$storage.set(hash,params)},function(instance){return instance.sprints=service}},module=angular.module("taigaResources"),module.factory("$tgSprintsResourcesProvider",["$tgRepo","$tgModel","$tgStorage",resourceProvider])}.call(this),function(){var generateHash,module,resourceProvider,taiga;taiga=this.taiga,generateHash=taiga.generateHash,resourceProvider=function($repo,$http,$urls,$storage){var hashSuffix,hashSuffixStatusColumnModes,hashSuffixUsRowModes,service;return service={},hashSuffix="tasks-queryparams",hashSuffixStatusColumnModes="tasks-statuscolumnmodels",hashSuffixUsRowModes="tasks-usrowmodels",service.get=function(projectId,taskId){var params;return params=service.getQueryParams(projectId),params.project=projectId,$repo.queryOne("tasks",taskId,params)},service.getByRef=function(projectId,ref){var params;return params=service.getQueryParams(projectId),params.project=projectId,params.ref=ref,$repo.queryOne("tasks","by_ref",params)},service.list=function(projectId,sprintId,userStoryId){var params;return null==sprintId&&(sprintId=null),null==userStoryId&&(userStoryId=null),params={project:projectId},sprintId&&(params.milestone=sprintId),userStoryId&&(params.user_story=userStoryId),service.storeQueryParams(projectId,params),$repo.queryMany("tasks",params) -},service.bulkCreate=function(projectId,sprintId,usId,data){var params,url;return url=$urls.resolve("bulk-create-tasks"),params={project_id:projectId,sprint_id:sprintId,us_id:usId,bulk_tasks:data},$http.post(url,params).then(function(result){return result.data})},service.bulkUpdateTaskTaskboardOrder=function(projectId,data){var params,url;return url=$urls.resolve("bulk-update-task-taskboard-order"),params={project_id:projectId,bulk_tasks:data},$http.post(url,params)},service.listValues=function(projectId,type){var params;return params={project:projectId},$repo.queryMany(type,params)},service.storeQueryParams=function(projectId,params){var hash,ns;return ns=projectId+":"+hashSuffix,hash=generateHash([projectId,ns]),$storage.set(hash,params)},service.getQueryParams=function(projectId){var hash,ns;return ns=projectId+":"+hashSuffix,hash=generateHash([projectId,ns]),$storage.get(hash)||{}},service.storeStatusColumnModes=function(projectId,params){var hash,ns;return ns=projectId+":"+hashSuffixStatusColumnModes,hash=generateHash([projectId,ns]),$storage.set(hash,params)},service.getStatusColumnModes=function(projectId){var hash,ns;return ns=projectId+":"+hashSuffixStatusColumnModes,hash=generateHash([projectId,ns]),$storage.get(hash)||{}},service.storeUsRowModes=function(projectId,sprintId,params){var hash,ns;return ns=projectId+":"+hashSuffixUsRowModes,hash=generateHash([projectId,sprintId,ns]),$storage.set(hash,params)},service.getUsRowModes=function(projectId,sprintId){var hash,ns;return ns=projectId+":"+hashSuffixUsRowModes,hash=generateHash([projectId,sprintId,ns]),$storage.get(hash)||{}},function(instance){return instance.tasks=service}},module=angular.module("taigaResources"),module.factory("$tgTasksResourcesProvider",["$tgRepo","$tgHttp","$tgUrls","$tgStorage",resourceProvider])}.call(this),function(){var module,resourceProvider,sizeFormat,taiga;taiga=this.taiga,sizeFormat=this.taiga.sizeFormat,resourceProvider=function($config,$repo,$http,$urls,$q){var service;return service={},service.changeAvatar=function(file){var data,defered,maxFileSize,options,response,url;return maxFileSize=$config.get("maxUploadFileSize",null),maxFileSize&&file.size>maxFileSize?(response={status:413,data:{_error_message:"'"+file.name+"' ("+sizeFormat(file.size)+") is too heavy for our oompa loompas, try it with a smaller than ("+sizeFormat(maxFileSize)+")"}},defered=$q.defer(),defered.reject(response),defered.promise):(data=new FormData,data.append("avatar",file),options={transformRequest:angular.identity,headers:{"Content-Type":void 0}},url=$urls.resolve("users")+"/change_avatar",$http.post(url,data,{},options))},service.removeAvatar=function(){var url;return url=$urls.resolve("users")+"/remove_avatar",$http.post(url)},service.changePassword=function(currentPassword,newPassword){var data,url;return url=$urls.resolve("users")+"/change_password",data={current_password:currentPassword,password:newPassword},$http.post(url,data)},function(instance){return instance.userSettings=service}},module=angular.module("taigaResources"),module.factory("$tgUserSettingsResourcesProvider",["$tgConfig","$tgRepo","$tgHttp","$tgUrls","$q",resourceProvider])}.call(this),function(){var generateHash,module,resourceProvider,taiga;taiga=this.taiga,generateHash=taiga.generateHash,resourceProvider=function($repo,$http,$urls,$storage){var hashSuffix,service;return service={},hashSuffix="userstories-queryparams",service.get=function(projectId,usId){var params;return params=service.getQueryParams(projectId),params.project=projectId,$repo.queryOne("userstories",usId,params)},service.getByRef=function(projectId,ref){var params;return params=service.getQueryParams(projectId),params.project=projectId,params.ref=ref,$repo.queryOne("userstories","by_ref",params)},service.listUnassigned=function(projectId,filters){var params;return params={project:projectId,milestone:"null"},params=_.extend({},params,filters||{}),service.storeQueryParams(projectId,params),$repo.queryMany("userstories",params)},service.listAll=function(projectId,filters){var params;return params={project:projectId},params=_.extend({},params,filters||{}),service.storeQueryParams(projectId,params),$repo.queryMany("userstories",params)},service.bulkCreate=function(projectId,status,bulk){var data,url;return data={project_id:projectId,status_id:status,bulk_stories:bulk},url=$urls.resolve("bulk-create-us"),$http.post(url,data)},service.bulkUpdateBacklogOrder=function(projectId,data){var params,url;return url=$urls.resolve("bulk-update-us-backlog-order"),params={project_id:projectId,bulk_stories:data},$http.post(url,params)},service.bulkUpdateSprintOrder=function(projectId,data){var params,url;return url=$urls.resolve("bulk-update-us-sprint-order"),params={project_id:projectId,bulk_stories:data},$http.post(url,params)},service.bulkUpdateKanbanOrder=function(projectId,data){var params,url;return url=$urls.resolve("bulk-update-us-kanban-order"),params={project_id:projectId,bulk_stories:data},$http.post(url,params)},service.listValues=function(projectId,type){var params;return params={project:projectId},service.storeQueryParams(projectId,params),$repo.queryMany(type,params)},service.storeQueryParams=function(projectId,params){var hash,ns;return ns=projectId+":"+hashSuffix,hash=generateHash([projectId,ns]),$storage.set(hash,params)},service.getQueryParams=function(projectId){var hash,ns;return ns=projectId+":"+hashSuffix,hash=generateHash([projectId,ns]),$storage.get(hash)||{}},service.storeShowTags=function(projectId,showTags){var hash;return hash=generateHash([projectId,"showTags"]),$storage.set(hash,showTags)},service.getShowTags=function(projectId){var hash;return hash=generateHash([projectId,"showTags"]),$storage.get(hash)||null},function(instance){return instance.userstories=service}},module=angular.module("taigaResources"),module.factory("$tgUserstoriesResourcesProvider",["$tgRepo","$tgHttp","$tgUrls","$tgStorage",resourceProvider])}.call(this),function(){var module,resourceProvider;resourceProvider=function($repo,$urls,$http){var service;return service={},service.list=function(webhookId){var params;return params={webhook:webhookId},$repo.queryMany("webhooklogs",params)},service.resend=function(webhooklogId){var url;return url=$urls.resolve("webhooklogs-resend",webhooklogId),$http.post(url)},function(instance){return instance.webhooklogs=service}},module=angular.module("taigaResources"),module.factory("$tgWebhookLogsResourcesProvider",["$tgRepo","$tgUrls","$tgHttp",resourceProvider])}.call(this),function(){var module,resourceProvider;resourceProvider=function($repo,$urls,$http){var service;return service={},service.list=function(projectId){var params;return params={project:projectId},$repo.queryMany("webhooks",params)},service.test=function(webhookId){var url;return url=$urls.resolve("webhooks-test",webhookId),$http.post(url)},function(instance){return instance.webhooks=service}},module=angular.module("taigaResources"),module.factory("$tgWebhooksResourcesProvider",["$tgRepo","$tgUrls","$tgHttp",resourceProvider])}.call(this),function(){var module,resourceProvider,taiga;taiga=this.taiga,resourceProvider=function($repo){var service;return service={},service.get=function(wikiId){return $repo.queryOne("wiki",wikiId)},service.getBySlug=function(projectId,slug){return $repo.queryOne("wiki","by_slug?project="+projectId+"&slug="+slug)},service.listLinks=function(projectId){return $repo.queryMany("wiki-links",{project:projectId})},function(instance){return instance.wiki=service}},module=angular.module("taigaResources"),module.factory("$tgWikiResourcesProvider",["$tgRepo","$tgHttp","$tgUrls",resourceProvider])}.call(this),function(){var UserChangePasswordController,UserChangePasswordDirective,debounce,mixOf,module,taiga,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,mixOf=this.taiga.mixOf,debounce=this.taiga.debounce,module=angular.module("taigaUserSettings"),UserChangePasswordController=function(superClass){function UserChangePasswordController(scope,rootscope,repo,confirm,rs,params,q,location,navUrls,auth){var promise;this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.confirm=confirm,this.rs=rs,this.params=params,this.q=q,this.location=location,this.navUrls=navUrls,this.auth=auth,this.scope.sectionName="Change Password",this.scope.project={},this.scope.user=this.auth.getUser(),promise=this.loadInitialData(),promise.then(null,this.onInitialDataError.bind(this))}return extend(UserChangePasswordController,superClass),UserChangePasswordController.$inject=["$scope","$rootScope","$tgRepo","$tgConfirm","$tgResources","$routeParams","$q","$tgLocation","$tgNavUrls","$tgAuth"],UserChangePasswordController.prototype.loadProject=function(){return this.rs.projects.get(this.scope.projectId).then(function(_this){return function(project){return _this.scope.project=project,_this.scope.$emit("project:loaded",project),project}}(this))},UserChangePasswordController.prototype.loadInitialData=function(){var promise;return promise=this.repo.resolve({pslug:this.params.pslug}).then(function(_this){return function(data){return _this.scope.projectId=data.project,data}}(this)),promise.then(function(_this){return function(){return _this.loadProject()}}(this))},UserChangePasswordController}(mixOf(taiga.Controller,taiga.PageMixin)),module.controller("UserChangePasswordController",UserChangePasswordController),UserChangePasswordDirective=function($rs,$confirm,$loading){var link;return link=function($scope,$el){var submit,submitButton;return submit=debounce(2e3,function(){return function(event){var promise;return event.preventDefault(),$scope.newPassword1!==$scope.newPassword2?void $confirm.notify("error","The passwords dosn't match"):($loading.start(submitButton),promise=$rs.userSettings.changePassword($scope.currentPassword,$scope.newPassword1),promise.then(function(){return $loading.finish(submitButton),$confirm.notify("success")}),promise.then(null,function(response){return $loading.finish(submitButton),$confirm.notify("error",response.data._error_message)}))}}(this)),submitButton=$el.find(".submit-button"),$el.on("submit","form",submit),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgUserChangePassword",["$tgResources","$tgConfirm","$tgLoading",UserChangePasswordDirective])}.call(this),function(){var DeleteUserDirective,bindOnce,debounce,module,taiga;taiga=this.taiga,bindOnce=this.taiga.bindOnce,debounce=this.taiga.debounce,module=angular.module("taigaUserSettings"),DeleteUserDirective=function($repo,$rootscope,$auth,$location,$navUrls,lightboxService){var link;return link=function($scope,$el){var submit;return $scope.$on("deletelightbox:new",function(){return lightboxService.open($el)}),$scope.$on("$destroy",function(){return $el.off()}),submit=function(){var promise;return promise=$repo.remove($scope.user),promise.then(function(){return lightboxService.close($el),$auth.logout(),$location.path($navUrls.resolve("login"))}),promise.then(null,function(){return console.log("FAIL")})},$el.on("click",".button-red",function(event){return event.preventDefault(),lightboxService.close($el)}),$el.on("click",".button-green",debounce(2e3,function(event){return event.preventDefault(),submit()}))},{link:link,templateUrl:"user/lightbox/lightbox-delete-account.html"}},module.directive("tgLbDeleteUser",["$tgRepo","$rootScope","$tgAuth","$tgLocation","$tgNavUrls","lightboxService",DeleteUserDirective])}.call(this),function(){var TaigaAvatarModelDirective,UserAvatarDirective,UserProfileDirective,UserSettingsController,debounce,mixOf,module,sizeFormat,taiga,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,mixOf=this.taiga.mixOf,sizeFormat=this.taiga.sizeFormat,module=angular.module("taigaUserSettings"),debounce=this.taiga.debounce,UserSettingsController=function(superClass){function UserSettingsController(scope,rootscope,config,repo,confirm,rs,params,q,location,navUrls,auth){var maxFileSize,promise;this.scope=scope,this.rootscope=rootscope,this.config=config,this.repo=repo,this.confirm=confirm,this.rs=rs,this.params=params,this.q=q,this.location=location,this.navUrls=navUrls,this.auth=auth,this.scope.sectionName="User Profile",this.scope.project={},this.scope.user=this.auth.getUser(),maxFileSize=this.config.get("maxUploadFileSize",null),maxFileSize&&(this.scope.maxFileSizeMsg="[Max, size: "+sizeFormat(maxFileSize)),promise=this.loadInitialData(),promise.then(null,this.onInitialDataError.bind(this))}return extend(UserSettingsController,superClass),UserSettingsController.$inject=["$scope","$rootScope","$tgConfig","$tgRepo","$tgConfirm","$tgResources","$routeParams","$q","$tgLocation","$tgNavUrls","$tgAuth"],UserSettingsController.prototype.loadProject=function(){return this.rs.projects.get(this.scope.projectId).then(function(_this){return function(project){return _this.scope.project=project,_this.scope.$emit("project:loaded",project),project}}(this))},UserSettingsController.prototype.loadInitialData=function(){var promise;return promise=this.repo.resolve({pslug:this.params.pslug}).then(function(_this){return function(data){return _this.scope.projectId=data.project,data}}(this)),promise.then(function(_this){return function(){return _this.loadProject()}}(this))},UserSettingsController.prototype.openDeleteLightbox=function(){return this.rootscope.$broadcast("deletelightbox:new",this.scope.user)},UserSettingsController}(mixOf(taiga.Controller,taiga.PageMixin)),module.controller("UserSettingsController",UserSettingsController),UserProfileDirective=function($confirm,$auth,$repo){var link;return link=function($scope,$el){var submit;return submit=debounce(2e3,function(){return function(event){var changeEmail,form,onError,onSuccess;return event.preventDefault(),form=$el.find("form").checksley(),form.validate()?(changeEmail=$scope.user.isAttributeModified("email"),onSuccess=function(data){return $auth.setUser(data),changeEmail?$confirm.success("Check your inbox!
We have sent a mail to your account
with the instructions to set your new address"):$confirm.notify("success")},onError=function(data){return form.setErrors(data),$confirm.notify("error",data._error_message)},$repo.save($scope.user).then(onSuccess,onError)):void 0}}(this)),$el.on("submit","form",submit),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgUserProfile",["$tgConfirm","$tgAuth","$tgRepo",UserProfileDirective]),UserAvatarDirective=function($auth,$model,$rs,$confirm){var link;return link=function($scope,$el){var onError,onSuccess,showSizeInfo;return showSizeInfo=function(){return $el.find(".size-info").removeClass("hidden")},onSuccess=function(response){var user;return user=$model.make_model("users",response.data),$auth.setUser(user),$scope.user=user,$el.find(".overlay").addClass("hidden"),$confirm.notify("success")},onError=function(response){return 413===response.status&&showSizeInfo(),$el.find(".overlay").addClass("hidden"),$confirm.notify("error",response.data._error_message)},$el.on("click",".js-change-avatar",function(){return $el.find("#avatar-field").click()}),$el.on("change","#avatar-field",function(){return $scope.avatarAttachment?($el.find(".overlay").removeClass("hidden"),$rs.userSettings.changeAvatar($scope.avatarAttachment).then(onSuccess,onError)):void 0}),$el.on("click","a.use-gravatar",function(){return $el.find(".overlay").removeClass("hidden"),$rs.userSettings.removeAvatar().then(onSuccess,onError)}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgUserAvatar",["$tgAuth","$tgModel","$tgResources","$tgConfirm",UserAvatarDirective]),TaigaAvatarModelDirective=function($parse){var link;return link=function($scope,$el,$attrs){var model,modelSetter;return model=$parse($attrs.tgAvatarModel),modelSetter=model.assign,$el.bind("change",function(){return $scope.$apply(function(){return modelSetter($scope,$el[0].files[0])})})},{link:link}},module.directive("tgAvatarModel",["$parse",TaigaAvatarModelDirective])}.call(this),function(){var UserSettingsNavigationDirective,module;UserSettingsNavigationDirective=function(){var link;return link=function($scope,$el,$attrs){var section;return section=$attrs.tgUserSettingsNavigation,$el.find(".active").removeClass("active"),$el.find("#usersettingsmenu-"+section+" a").addClass("active"),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module=angular.module("taigaUserSettings"),module.directive("tgUserSettingsNavigation",UserSettingsNavigationDirective)}.call(this),function(){var UserNotificationsController,UserNotificationsDirective,UserNotificationsListDirective,bindOnce,mixOf,module,taiga,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,mixOf=this.taiga.mixOf,bindOnce=this.taiga.bindOnce,module=angular.module("taigaUserSettings"),UserNotificationsController=function(superClass){function UserNotificationsController(scope,rootscope,repo,confirm,rs,params,q,location,navUrls,auth){var promise;this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.confirm=confirm,this.rs=rs,this.params=params,this.q=q,this.location=location,this.navUrls=navUrls,this.auth=auth,this.scope.sectionName="Email Notifications",this.scope.project={},this.scope.user=this.auth.getUser(),promise=this.loadInitialData(),promise.then(null,this.onInitialDataError.bind(this))}return extend(UserNotificationsController,superClass),UserNotificationsController.$inject=["$scope","$rootScope","$tgRepo","$tgConfirm","$tgResources","$routeParams","$q","$tgLocation","$tgNavUrls","$tgAuth"],UserNotificationsController.prototype.loadProject=function(){return this.rs.projects.get(this.scope.projectId).then(function(_this){return function(project){return _this.scope.project=project,_this.scope.$emit("project:loaded",project),project}}(this))},UserNotificationsController.prototype.loadNotifyPolicies=function(){return this.rs.notifyPolicies.list().then(function(_this){return function(notifyPolicies){return _this.scope.notifyPolicies=notifyPolicies,notifyPolicies}}(this))},UserNotificationsController.prototype.loadInitialData=function(){var promise;return promise=this.repo.resolve({pslug:this.params.pslug}).then(function(_this){return function(data){return _this.scope.projectId=data.project,data}}(this)),promise.then(function(_this){return function(){return _this.loadProject()}}(this)).then(function(_this){return function(){return _this.loadNotifyPolicies()}}(this))},UserNotificationsController}(mixOf(taiga.Controller,taiga.PageMixin)),module.controller("UserNotificationsController",UserNotificationsController),UserNotificationsDirective=function(){var link;return link=function($scope,$el){return $scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgUserNotifications",UserNotificationsDirective),UserNotificationsListDirective=function($repo,$confirm){var link,template;return template=_.template('<% _.each(notifyPolicies, function (notifyPolicy, index) { %>\n
\n
<%- notifyPolicy.project_name %>
\n
\n
\n checked="checked"<% } %>/>\n \n
\n
\n
\n
\n checked="checked"<% } %> />\n \n
\n
\n
\n
\n checked="checked"<% } %> />\n \n
\n
\n
\n<% }) %>'),link=function($scope,$el,$attrs){var render;return render=function(){return $el.off(),$el.html(template({notifyPolicies:$scope.notifyPolicies})),$el.on("change","input[type=radio]",function(event){var onError,onSuccess,policy,policyIndex,prev_level,target;return target=angular.element(event.currentTarget),policyIndex=target.parents(".policy-table-row").data("index"),policy=$scope.notifyPolicies[policyIndex],prev_level=policy.notify_level,policy.notify_level=parseInt(target.val(),10),onSuccess=function(){return $confirm.notify("success")},onError=function(){return $confirm.notify("error"),target.parents(".policy-table-row").find("input[value="+prev_level+"]").prop("checked",!0)},$repo.save(policy).then(onSuccess,onError)})},$scope.$on("$destroy",function(){return $el.off()}),bindOnce($scope,$attrs.ngModel,render)},{link:link}},module.directive("tgUserNotificationsList",["$tgRepo","$tgConfirm",UserNotificationsListDirective])}.call(this),function(){var module;module=angular.module("taigaPlugins",["ngRoute"])}.call(this),function(){var configure,module,taiga;taiga=this.taiga,module=angular.module("taigaPlugins"),configure=function($routeProvider){return $routeProvider.when("/humans.html",{templateUrl:"/plugins/humanshtml/templates/humans.html"})},module.config(["$routeProvider",configure])}.call(this),function(){var TermsNoticeDirective,module,taiga,template;taiga=this.taiga,module=angular.module("taigaPlugins"),template=_.template('

\n By clicking "Sign up", you agree to our
\n
terms of service\n and\n privacy policy.\n

'),TermsNoticeDirective=function($config){var privacyPolicyUrl,templateFn,termsOfServiceUrl;return privacyPolicyUrl=$config.get("privacyPolicyUrl"),termsOfServiceUrl=$config.get("termsOfServiceUrl"),templateFn=function(){var ctx;return privacyPolicyUrl&&termsOfServiceUrl?(ctx={termsUrl:termsOfServiceUrl,privacyUrl:privacyPolicyUrl},template(ctx)):""},{scope:{},restrict:"AE",template:templateFn}},module.directive("tgTermsNotice",["$tgConfig",TermsNoticeDirective])}.call(this),angular.module("taigaBase").value("localesEn",{checksley:{defaultMessage:"This value seems to be invalid.","type-email":"This value should be a valid email.","type-url":"This value should be a valid url.","type-urlstrict":"This value should be a valid url.","type-number":"This value should be a valid number.","type-digits":"This value should be digits.","type-dateIso":"This value should be a valid date (YYYY-MM-DD).","type-alphanum":"This value should be alphanumeric.","type-phone":"This value should be a valid phone number.",notnull:"This value should not be null.",notblank:"This value should not be blank.",required:"This value is required.",regexp:"This value seems to be invalid.",min:"This value should be greater than or equal to %s.",max:"This value should be lower than or equal to %s.",range:"This value should be between %s and %s.",minlength:"This value is too short. It should have %s characters or more.",maxlength:"This value is too long. It should have %s characters or less.",rangelength:"This value length is invalid. It should be between %s and %s characters long.",mincheck:"You must select at least %s choices.",maxcheck:"You must select %s choices or less.",rangecheck:"You must select between %s and %s choices.",equalto:"This value should be the same."},common:{subject:"Subject",save:"Save",blocked:"Blocked",cancel:"Cancel",status:"Status","new-bulk":"New bulk insert","one-item-line":"One item per line..."},pagination:{next:"Next",prev:"Previous"},"markdown-editor":{"heading-1":"First Level Heading","heading-2":"Second Level Heading","heading-3":"Third Level Heading",bold:"Bold",italic:"Italic",strike:"Strike","bulleted-list":"Bulleted List","numeric-list":"Numeric List",picture:"Picture",link:"Link",quotes:"Quotes","code-block":"Code Block / Code",preview:"Preview",help:"Help",placeholder:"Your title here...","link-placeholder":"Your text to link here..."},us:{"title-new":"New User Story","team-requirement":"Team Requirement","client-requirement":"Client Requirement"}}); +},initResources=function($log,$rs){var i,len,provider,providers,results;for($log.debug("Initialize resources"),providers=_.toArray(arguments).slice(2),results=[],i=0,len=providers.length;len>i;i++)provider=providers[i],results.push(provider($rs));return results},module=angular.module("taigaResources",["taigaBase"]),module.service("$tgResources",ResourcesService),module.run(["$log","$tgUrls",initUrls]),module.run(["$log","$tgResources","$tgProjectsResourcesProvider","$tgCustomAttributesResourcesProvider","$tgCustomAttributesValuesResourcesProvider","$tgMembershipsResourcesProvider","$tgNotifyPoliciesResourcesProvider","$tgInvitationsResourcesProvider","$tgRolesResourcesProvider","$tgUserSettingsResourcesProvider","$tgSprintsResourcesProvider","$tgUserstoriesResourcesProvider","$tgTasksResourcesProvider","$tgIssuesResourcesProvider","$tgWikiResourcesProvider","$tgSearchResourcesProvider","$tgAttachmentsResourcesProvider","$tgMdRenderResourcesProvider","$tgHistoryResourcesProvider","$tgKanbanResourcesProvider","$tgModulesResourcesProvider","$tgWebhooksResourcesProvider","$tgWebhookLogsResourcesProvider",initResources])}.call(this),function(){var SearchBoxDirective,SearchController,SearchDirective,bindOnce,debounce,debounceLeading,groupBy,mixOf,module,taiga,trim,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,groupBy=this.taiga.groupBy,bindOnce=this.taiga.bindOnce,mixOf=this.taiga.mixOf,debounceLeading=this.taiga.debounceLeading,trim=this.taiga.trim,debounce=this.taiga.debounce,module=angular.module("taigaSearch",[]),SearchController=function(superClass){function SearchController(scope1,repo,rs,params,q,location,appTitle,navUrls,tgLoader){var loadSearchData,promise;this.scope=scope1,this.repo=repo,this.rs=rs,this.params=params,this.q=q,this.location=location,this.appTitle=appTitle,this.navUrls=navUrls,this.tgLoader=tgLoader,this.scope.sectionName="Search",promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.appTitle.set("Search")}}(this)),promise.then(null,this.onInitialDataError.bind(this)),this.scope.searchTerm="",loadSearchData=debounceLeading(100,function(_this){return function(t){return _this.loadSearchData(t)}}(this)),this.scope.$watch("searchTerm",function(_this){return function(term){return term?loadSearchData(term):_this.tgLoader.pageLoaded()}}(this))}return extend(SearchController,superClass),SearchController.$inject=["$scope","$tgRepo","$tgResources","$routeParams","$q","$tgLocation","$appTitle","$tgNavUrls","tgLoader"],SearchController.prototype.loadFilters=function(){var defered;return defered=this.q.defer(),defered.resolve(),defered.promise},SearchController.prototype.loadProject=function(){return this.rs.projects.getBySlug(this.params.pslug).then(function(_this){return function(project){return _this.scope.project=project,_this.scope.$emit("project:loaded",project),_this.scope.issueStatusById=groupBy(project.issue_statuses,function(x){return x.id}),_this.scope.taskStatusById=groupBy(project.task_statuses,function(x){return x.id}),_this.scope.severityById=groupBy(project.severities,function(x){return x.id}),_this.scope.priorityById=groupBy(project.priorities,function(x){return x.id}),_this.scope.membersById=groupBy(project.memberships,function(x){return x.user}),_this.scope.usStatusById=groupBy(project.us_statuses,function(x){return x.id}),project}}(this))},SearchController.prototype.loadSearchData=function(term){var promise;return promise=this.rs.search["do"](this.scope.projectId,term).then(function(_this){return function(data){return _this.scope.searchResults=data,data}}(this)),promise["finally"](function(_this){return function(){return _this.tgLoader.pageLoaded()}}(this)),promise},SearchController.prototype.loadInitialData=function(){return this.loadProject().then(function(_this){return function(project){return _this.scope.projectId=project.id,_this.fillUsersAndRoles(project.users,project.roles)}}(this))},SearchController}(mixOf(taiga.Controller,taiga.PageMixin)),module.controller("SearchController",SearchController),SearchBoxDirective=function($lightboxService,$navurls,$location,$route){var link;return link=function($scope,$el){var project,submit;return project=null,submit=debounce(2e3,function(){return function(event){var form,text,url;return event.preventDefault(),form=$el.find("form").checksley(),form.validate()?(text=$el.find("#search-text").val(),url=$navurls.resolve("project-search",{project:project.slug}),$lightboxService.close($el),$scope.$apply(function(){return $location.path(url),$location.search("text",text).path(url),$route.reload()})):void 0}}(this)),$scope.$on("search-box:show",function(ctx,newProject){return project=newProject,$lightboxService.open($el),$el.find("#search-text").val("")}),$el.on("submit","form",submit)},{link:link}},module.directive("tgSearchBox",["lightboxService","$tgNavUrls","$tgLocation","$route",SearchBoxDirective]),SearchDirective=function($log,$compile,$templatecache,$routeparams,$location){var link,linkTable;return linkTable=function($scope,$el){var getActiveSection,lastSeatchResults,markSectionTabActive,renderFilterTabs,renderTableContent,tabsDom,templates;return tabsDom=$el.find("section.search-filter"),lastSeatchResults=null,getActiveSection=function(data){var maxVal,name,selectedSectionData,selectedSectionName,value;maxVal=0,selectedSectionName=null,selectedSectionData=null;for(name in data)value=data[name],"count"!==name&&value.length>maxVal&&(maxVal=value.length,selectedSectionName=name,selectedSectionData=value);return 0===maxVal?{name:"userstories",value:[]}:{name:selectedSectionName,value:selectedSectionData}},renderFilterTabs=function(data){var name,results,value;results=[];for(name in data)value=data[name],"count"!==name&&results.push(tabsDom.find("li."+name+" .num").html(value.length));return results},markSectionTabActive=function(section){return tabsDom.find("a.active").removeClass("active"),tabsDom.find("li."+section.name+" a").addClass("active")},templates={issues:$templatecache.get("search-issues"),tasks:$templatecache.get("search-tasks"),userstories:$templatecache.get("search-userstories"),wikipages:$templatecache.get("search-wikipages")},renderTableContent=function(section){var element,oldElements,oldScope,scope,template;return oldElements=$el.find(".search-result-table").children(),oldScope=oldElements.scope(),oldScope&&(oldScope.$destroy(),oldElements.remove()),scope=$scope.$new(),scope[section.name]=section.value,template=angular.element.parseHTML(trim(templates[section.name])),element=$compile(template)(scope),$el.find(".search-result-table").html(element)},$scope.$watch("searchResults",function(data){var activeSection;return lastSeatchResults=data,activeSection=getActiveSection(data),renderFilterTabs(data),renderTableContent(activeSection),markSectionTabActive(activeSection)}),$scope.$watch("searchTerm",function(searchTerm){return searchTerm?$location.search("text",searchTerm):void 0}),$el.on("click",".search-filter li > a",function(event){var section,sectionData,sectionName,target;return event.preventDefault(),target=angular.element(event.currentTarget),sectionName=target.parent().data("name"),sectionData=lastSeatchResults[sectionName],section={name:sectionName,value:sectionData},$scope.$apply(function(){return renderTableContent(section),markSectionTabActive(section)})})},link=function($scope,$el,$attrs){var $ctrl,searchText;return $ctrl=$el.controller(),linkTable($scope,$el,$attrs,$ctrl),searchText=$routeparams.text,$scope.$watch("projectId",function(projectId){return null!=projectId?$scope.searchTerm=searchText:void 0})},{link:link}},module.directive("tgSearch",["$log","$compile","$templateCache","$routeParams","$tgLocation",SearchDirective])}.call(this),function(){var module;module=angular.module("taigaTaskboard",[])}.call(this),function(){var module;module=angular.module("taigaTasks",[])}.call(this),function(){var module;module=angular.module("taigaTeam",[])}.call(this),function(){var module;module=angular.module("taigaUserSettings",[])}.call(this),function(){var module;module=angular.module("taigaUserStories",[])}.call(this),function(){var module;module=angular.module("taigaWiki",[])}.call(this),function(){var BacklogFiltersDirective,bindOnce,debounceLeading,groupBy,mixOf,module,scopeDefer,taiga,toggleText;taiga=this.taiga,mixOf=this.taiga.mixOf,toggleText=this.taiga.toggleText,scopeDefer=this.taiga.scopeDefer,bindOnce=this.taiga.bindOnce,groupBy=this.taiga.groupBy,debounceLeading=this.taiga.debounceLeading,module=angular.module("taigaBacklog"),BacklogFiltersDirective=function($log,$location,$templates){var link,template,templateSelected;return template=$templates.get("backlog/filters.html",!0),templateSelected=$templates.get("backlog/filter-selected.html",!0),link=function($scope,$el){var $ctrl,initializeSelectedFilters,renderFilters,renderSelectedFilters,selectQFilter,selectedFilters,showCategories,showFilters,toggleFilterSelection;return $ctrl=$el.closest(".wrapper").controller(),selectedFilters=[],showFilters=function(title,type){return $el.find(".filters-cats").hide(),$el.find(".filter-list").removeClass("hidden"),$el.find("h2.breadcrumb").removeClass("hidden"),$el.find("h2 a.subfilter span.title").html(title),$el.find("h2 a.subfilter span.title").prop("data-type",type)},showCategories=function(){return $el.find(".filters-cats").show(),$el.find(".filter-list").addClass("hidden"),$el.find("h2.breadcrumb").addClass("hidden")},initializeSelectedFilters=function(filters){var i,len,name,val,values;showCategories(),selectedFilters=[];for(name in filters)for(values=filters[name],i=0,len=values.length;len>i;i++)val=values[i],val.selected&&selectedFilters.push(val);return renderSelectedFilters()},renderSelectedFilters=function(){var html;return _.map(selectedFilters,function(){return function(f){return f.color?f.style="border-left: 3px solid "+f.color:void 0}}(this)),html=templateSelected({filters:selectedFilters}),$el.find(".filters-applied").html(html)},renderFilters=function(filters){var html;return _.map(filters,function(){return function(f){return f.color?f.style="border-left: 3px solid "+f.color:void 0}}(this)),html=template({filters:filters}),$el.find(".filter-list").html(html)},toggleFilterSelection=function(type,id){var currentFiltersType,filter,filters;return filters=$scope.filters[type],filter=_.find(filters,{id:taiga.toString(id)}),filter.selected=!filter.selected,filter.selected?(selectedFilters.push(filter),$scope.$apply(function(){return $ctrl.selectFilter(type,id)})):(selectedFilters=_.reject(selectedFilters,filter),$scope.$apply(function(){return $ctrl.unselectFilter(type,id)})),renderSelectedFilters(selectedFilters),currentFiltersType=$el.find("h2 a.subfilter span.title").prop("data-type"),type===currentFiltersType&&renderFilters(_.reject(filters,"selected")),$ctrl.loadUserstories()},selectQFilter=debounceLeading(100,function(value){return void 0!==value?(0===value.length?$ctrl.replaceFilter("q",null):$ctrl.replaceFilter("q",value),$ctrl.loadUserstories()):void 0}),$scope.$watch("filtersQ",selectQFilter),$scope.$on("filters:loaded",function(ctx,filters){return initializeSelectedFilters(filters)}),$el.on("click",".filters-cats > ul > li > a",function(event){var tags,target;return event.preventDefault(),target=angular.element(event.currentTarget),tags=$scope.filters[target.data("type")],renderFilters(_.reject(tags,"selected")),showFilters(target.attr("title"),target.data("type"))}),$el.on("click",".filters-inner > .filters-step-cat > .breadcrumb > .back",function(event){return event.preventDefault(),showCategories()}),$el.on("click",".filters-applied a",function(event){var id,target,type;return event.preventDefault(),target=angular.element(event.currentTarget),id=target.data("id"),type=target.data("type"),toggleFilterSelection(type,id)}),$el.on("click",".filter-list .single-filter",function(event){var id,target,type;return event.preventDefault(),target=angular.element(event.currentTarget),target.hasClass("active")?target.removeClass("active"):target.addClass("active"),id=target.data("id"),type=target.data("type"),toggleFilterSelection(type,id)})},{link:link}},module.directive("tgBacklogFilters",["$log","$tgLocation","$tgTemplate",BacklogFiltersDirective])}.call(this),function(){var CreateEditSprint,bindOnce,debounce,module,taiga;taiga=this.taiga,bindOnce=this.taiga.bindOnce,debounce=this.taiga.debounce,module=angular.module("taigaBacklog"),CreateEditSprint=function($repo,$confirm,$rs,$rootscope,lightboxService,$loading){var link;return link=function($scope,$el){var createSprint,hasErrors,remove,submit,submitButton;return hasErrors=!1,createSprint=!0,$scope.sprint={project:null,name:null,estimated_start:null,estimated_finish:null},submit=debounce(2e3,function(){return function(event){var broadcastEvent,form,newSprint,promise,target;return event.preventDefault(),target=angular.element(event.currentTarget),form=$el.find("form").checksley(),form.validate()?(hasErrors=!1,newSprint=angular.copy($scope.sprint),broadcastEvent=null,createSprint?(newSprint.estimated_start=moment(newSprint.estimated_start).format("YYYY-MM-DD"),newSprint.estimated_finish=moment(newSprint.estimated_finish).format("YYYY-MM-DD"),promise=$repo.create("milestones",newSprint),broadcastEvent="sprintform:create:success"):(newSprint.setAttr("estimated_start",moment(newSprint.estimated_start).format("YYYY-MM-DD")),newSprint.setAttr("estimated_finish",moment(newSprint.estimated_finish).format("YYYY-MM-DD")),promise=$repo.save(newSprint),broadcastEvent="sprintform:edit:success"),$loading.start(submitButton),promise.then(function(data){return $loading.finish(submitButton),createSprint&&($scope.sprintsCounter+=1),$rootscope.$broadcast(broadcastEvent,data),lightboxService.close($el)}),promise.then(null,function(data){return $loading.finish(submitButton),form.setErrors(data),data._error_message?$confirm.notify("light-error",data._error_message):data.__all__?$confirm.notify("light-error",data.__all__[0]):void 0})):(hasErrors=!0,void $el.find(".last-sprint-name").addClass("disappear"))}}(this)),remove=function(){var message,title;return title="Delete sprint",message=$scope.sprint.name,$confirm.askOnDelete(title,message).then(function(){return function(finish){var onError,onSuccess;return onSuccess=function(){return finish(),$scope.milestonesCounter-=1,lightboxService.close($el),$rootscope.$broadcast("sprintform:remove:success")},onError=function(){return finish(!1),$confirm.notify("error")},$repo.remove($scope.sprint).then(onSuccess,onError)}}(this))},$scope.$on("sprintform:create",function(event,projectId){var estimatedFinish,estimatedStart,form,lastSprint,lastSprintNameDom;return form=$el.find("form").checksley(),form.reset(),createSprint=!0,$scope.sprint.project=projectId,$scope.sprint.name=null,$scope.sprint.slug=null,lastSprint=$scope.sprints[0],estimatedStart=moment(),$scope.sprint.estimated_start?estimatedStart=moment($scope.sprint.estimated_start):null!=lastSprint&&(estimatedStart=moment(lastSprint.estimated_finish)),$scope.sprint.estimated_start=estimatedStart.format("DD MMM YYYY"),estimatedFinish=moment().add(2,"weeks"),$scope.sprint.estimated_finish?estimatedFinish=moment($scope.sprint.estimated_finish):null!=lastSprint&&(estimatedFinish=moment(lastSprint.estimated_finish).add(2,"weeks")),$scope.sprint.estimated_finish=estimatedFinish.format("DD MMM YYYY"),lastSprintNameDom=$el.find(".last-sprint-name"),null!=(null!=lastSprint?lastSprint.name:void 0)&&lastSprintNameDom.html(" last sprint is "+lastSprint.name+" ;-) "),$el.find(".delete-sprint").addClass("hidden"),$el.find(".title").text("New sprint"),$el.find(".button-green").text("Create"),lightboxService.open($el),$el.find(".sprint-name").focus(),$el.find(".last-sprint-name").removeClass("disappear")}),$scope.$on("sprintform:edit",function(ctx,sprint){return createSprint=!1,$scope.$apply(function(){return $scope.sprint=sprint,$scope.sprint.estimated_start=moment($scope.sprint.estimated_start).format("DD MMM YYYY"),$scope.sprint.estimated_finish=moment($scope.sprint.estimated_finish).format("DD MMM YYYY")}),$el.find(".delete-sprint").removeClass("hidden"),$el.find(".title").text("Edit sprint"),$el.find(".button-green").text("Save"),lightboxService.open($el),$el.find(".sprint-name").focus().select(),$el.find(".last-sprint-name").addClass("disappear")}),$el.on("keyup",".sprint-name",function(){return $el.find(".sprint-name").val().length>0||hasErrors?$el.find(".last-sprint-name").addClass("disappear"):$el.find(".last-sprint-name").removeClass("disappear")}),submitButton=$el.find(".submit-button"),$el.on("submit","form",submit),$el.on("click",".delete-sprint .icon-delete",function(event){return event.preventDefault(),remove()}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgLbCreateEditSprint",["$tgRepo","$tgConfirm","$tgResources","$rootScope","lightboxService","$tgLoading",CreateEditSprint])}.call(this),function(){var BacklogController,BacklogDirective,TgBacklogProgressBarDirective,UsPointsDirective,UsRolePointsSelectorDirective,bindMethods,bindOnce,groupBy,mixOf,module,scopeDefer,taiga,tgBacklogGraphDirective,timeout,toggleText,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,mixOf=this.taiga.mixOf,toggleText=this.taiga.toggleText,scopeDefer=this.taiga.scopeDefer,bindOnce=this.taiga.bindOnce,groupBy=this.taiga.groupBy,timeout=this.taiga.timeout,bindMethods=this.taiga.bindMethods,module=angular.module("taigaBacklog"),BacklogController=function(superClass){function BacklogController(scope,rootscope,repo,confirm,rs,params1,q,location,appTitle,navUrls,events,analytics,tgLoader){var promise;this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.confirm=confirm,this.rs=rs,this.params=params1,this.q=q,this.location=location,this.appTitle=appTitle,this.navUrls=navUrls,this.events=events,this.analytics=analytics,bindMethods(this),this.scope.sectionName="Backlog",this.showTags=!1,this.activeFilters=!1,this.initializeEventHandlers(),promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.appTitle.set("Backlog - "+_this.scope.project.name),_this.rs.userstories.getShowTags(_this.scope.projectId)?(_this.showTags=!0,_this.scope.$broadcast("showTags",_this.showTags)):void 0}}(this)),promise.then(null,this.onInitialDataError.bind(this)),promise["finally"](tgLoader.pageLoaded)}return extend(BacklogController,superClass),BacklogController.$inject=["$scope","$rootScope","$tgRepo","$tgConfirm","$tgResources","$routeParams","$q","$tgLocation","$appTitle","$tgNavUrls","$tgEvents","$tgAnalytics","tgLoader"],BacklogController.prototype.initializeEventHandlers=function(){return this.scope.$on("usform:bulk:success",function(_this){return function(){return _this.loadUserstories(),_this.loadProjectStats(),_this.analytics.trackEvent("userstory","create","bulk create userstory on backlog",1)}}(this)),this.scope.$on("sprintform:create:success",function(_this){return function(){return _this.loadSprints(),_this.loadProjectStats(),_this.analytics.trackEvent("sprint","create","create sprint on backlog",1)}}(this)),this.scope.$on("usform:new:success",function(_this){return function(){return _this.loadUserstories(),_this.loadProjectStats(),_this.analytics.trackEvent("userstory","create","create userstory on backlog",1)}}(this)),this.scope.$on("sprintform:edit:success",function(_this){return function(){return _this.loadProjectStats()}}(this)),this.scope.$on("sprintform:remove:success",function(_this){return function(){return _this.loadSprints(),_this.loadProjectStats(),_this.loadUserstories()}}(this)),this.scope.$on("usform:edit:success",function(_this){return function(){return _this.loadUserstories()}}(this)),this.scope.$on("sprint:us:move",this.moveUs),this.scope.$on("sprint:us:moved",this.loadSprints),this.scope.$on("sprint:us:moved",this.loadProjectStats),this.scope.$on("backlog:load-closed-sprints",this.loadClosedSprints),this.scope.$on("backlog:unload-closed-sprints",this.unloadClosedSprints)},BacklogController.prototype.initializeSubscription=function(){var routingKey1,routingKey2;return routingKey1="changes.project."+this.scope.projectId+".userstories",this.events.subscribe(this.scope,routingKey1,function(_this){return function(){return _this.loadUserstories(),_this.loadSprints()}}(this)),routingKey2="changes.project."+this.scope.projectId+".milestones",this.events.subscribe(this.scope,routingKey2,function(_this){return function(){return _this.loadSprints()}}(this))},BacklogController.prototype.toggleShowTags=function(){return this.scope.$apply(function(_this){return function(){return _this.showTags=!_this.showTags,_this.rs.userstories.storeShowTags(_this.scope.projectId,_this.showTags)}}(this))},BacklogController.prototype.toggleActiveFilters=function(){return this.activeFilters=!this.activeFilters},BacklogController.prototype.loadProjectStats=function(){return this.rs.projects.stats(this.scope.projectId).then(function(_this){return function(stats){return _this.scope.stats=stats,_this.scope.stats.completedPercentage=stats.total_points?Math.round(100*stats.closed_points/stats.total_points):0,stats}}(this))},BacklogController.prototype.refreshTagsColors=function(){return this.rs.projects.tagsColors(this.scope.projectId).then(function(_this){return function(tags_colors){return _this.scope.project.tags_colors=tags_colors}}(this))},BacklogController.prototype.unloadClosedSprints=function(){return this.scope.$apply(function(_this){return function(){return _this.scope.closedSprints=[],_this.rootscope.$broadcast("closed-sprints:reloaded",[])}}(this))},BacklogController.prototype.loadClosedSprints=function(){var params;return params={closed:!0},this.rs.sprints.list(this.scope.projectId,params).then(function(_this){return function(sprints){var j,len,sprint;for(j=0,len=sprints.length;len>j;j++)sprint=sprints[j],sprint.user_stories=_.sortBy(sprint.user_stories,"sprint_order");return _this.scope.closedSprints=sprints,_this.rootscope.$broadcast("closed-sprints:reloaded",sprints),sprints}}(this))},BacklogController.prototype.loadSprints=function(){var params;return params={closed:!1},this.rs.sprints.list(this.scope.projectId,params).then(function(_this){return function(sprints){var j,len,sprint;for(j=0,len=sprints.length;len>j;j++)sprint=sprints[j],sprint.user_stories=_.sortBy(sprint.user_stories,"sprint_order");return _this.scope.sprints=sprints,_this.scope.openSprints=_.filter(sprints,function(sprint){return!sprint.closed}).reverse(),_this.scope.closedSprints||(_this.scope.closedSprints=[]),_this.scope.sprintsCounter=sprints.length,_this.scope.sprintsById=groupBy(sprints,function(x){return x.id}),_this.rootscope.$broadcast("sprints:loaded",sprints),sprints}}(this))},BacklogController.prototype.resetFilters=function(){var selectedStatuses,selectedTags;return selectedTags=_.filter(this.scope.filters.tags,"selected"),selectedStatuses=_.filter(this.scope.filters.statuses,"selected"),this.scope.filtersQ="",_.each([selectedTags,selectedStatuses],function(_this){return function(filterGrp){return _.each(filterGrp,function(item){var filter,filters;return filters=_this.scope.filters[item.type],filter=_.find(filters,{id:taiga.toString(item.id)}),filter.selected=!1,_this.unselectFilter(item.type,item.id)})}}(this)),this.loadUserstories()},BacklogController.prototype.loadUserstories=function(){var promise;return this.scope.httpParams=this.getUrlFilters(),this.rs.userstories.storeQueryParams(this.scope.projectId,this.scope.httpParams),promise=this.q.all([this.refreshTagsColors(),this.rs.userstories.listUnassigned(this.scope.projectId,this.scope.httpParams)]),promise.then(function(_this){return function(data){var userstories;return userstories=data[1],_this.scope.userstories=_.sortBy(userstories,"backlog_order"),_this.setSearchDataFilters(),_this.filterVisibleUserstories(),_this.generateFilters(),_this.rootscope.$broadcast("filters:loaded",_this.scope.filters),scopeDefer(_this.scope,function(){return _this.scope.$broadcast("userstories:loaded")}),userstories}}(this))},BacklogController.prototype.loadBacklog=function(){return this.q.all([this.loadProjectStats(),this.loadSprints(),this.loadUserstories()])},BacklogController.prototype.loadProject=function(){return this.rs.projects.getBySlug(this.params.pslug).then(function(_this){return function(project){return project.is_backlog_activated||_this.location.path(_this.navUrls.resolve("permission-denied")),_this.scope.projectId=project.id,_this.scope.project=project,_this.scope.totalClosedMilestones=project.total_closed_milestones,_this.scope.$emit("project:loaded",project),_this.scope.points=_.sortBy(project.points,"order"),_this.scope.pointsById=groupBy(project.points,function(x){return x.id}),_this.scope.usStatusById=groupBy(project.us_statuses,function(x){return x.id}),_this.scope.usStatusList=_.sortBy(project.us_statuses,"id"),project}}(this))},BacklogController.prototype.loadInitialData=function(){var promise;return promise=this.loadProject(),promise.then(function(_this){return function(project){return _this.fillUsersAndRoles(project.users,project.roles),_this.initializeSubscription()}}(this)),promise.then(function(_this){return function(){return _this.loadBacklog()}}(this))},BacklogController.prototype.filterVisibleUserstories=function(){return this.scope.visibleUserstories=[],this.scope.visibleUserstories=_.reject(this.scope.userstories,function(_this){return function(us){return _.some(us.tags,function(tag){return _this.isFilterSelected("tag",tag)})}}(this)),this.scope.visibleUserstories=_.filter(this.scope.visibleUserstories,function(_this){return function(us){return _this.searchdata.statuses&&Object.keys(_this.searchdata.statuses).length?_this.isFilterSelected("statuses",taiga.toString(us.status)):!0}}(this))},BacklogController.prototype.prepareBulkUpdateData=function(uses,field){return null==field&&(field="backlog_order"),_.map(uses,function(x){return{us_id:x.id,order:x[field]}})},BacklogController.prototype.resortUserStories=function(uses,field){var index,item,items,j,len;for(null==field&&(field="backlog_order"),items=[],index=j=0,len=uses.length;len>j;index=++j)item=uses[index],item[field]=index,item.isModified()&&items.push(item);return items},BacklogController.prototype.moveUs=function(ctx,usList,newUsIndex,newSprintId){var data,items,j,l,len,len1,len2,m,newSprint,oldSprintId,project,promise,promises,us,userstories;if(oldSprintId=usList[0].milestone,project=usList[0].project,newSprintId===oldSprintId)return items=null,userstories=null,userstories=null===newSprintId?this.scope.userstories:this.scope.sprintsById[newSprintId].user_stories,this.scope.$apply(function(){var args,j,key,len,r,us;for(key=j=0,len=usList.length;len>j;key=++j)us=usList[key],r=userstories.indexOf(us),userstories.splice(r,1);return args=[newUsIndex,0].concat(usList),Array.prototype.splice.apply(userstories,args)}),null===newSprintId?(items=this.resortUserStories(userstories,"backlog_order"),data=this.prepareBulkUpdateData(items,"backlog_order"),this.rs.userstories.bulkUpdateBacklogOrder(project,data).then(function(_this){return function(){var j,len,results,us;for(results=[],j=0,len=usList.length;len>j;j++)us=usList[j],results.push(_this.rootscope.$broadcast("sprint:us:moved",us,oldSprintId,newSprintId));return results}}(this))):(items=this.resortUserStories(userstories,"sprint_order"),data=this.prepareBulkUpdateData(items,"sprint_order"),this.rs.userstories.bulkUpdateSprintOrder(project,data).then(function(_this){return function(){var j,len,results,us;for(results=[],j=0,len=usList.length;len>j;j++)us=usList[j],results.push(_this.rootscope.$broadcast("sprint:us:moved",us,oldSprintId,newSprintId));return results}}(this))),promise;if(null===newSprintId){for(j=0,len=usList.length;len>j;j++)us=usList[j],us.milestone=null;return this.scope.$apply(function(_this){return function(){var args,key,l,len1,r,results,sprint;for(args=[newUsIndex,0].concat(usList),Array.prototype.splice.apply(_this.scope.userstories,args),Array.prototype.splice.apply(_this.scope.visibleUserstories,args),_this.filterVisibleUserstories(),sprint=_this.scope.sprintsById[oldSprintId],results=[],key=l=0,len1=usList.length;len1>l;key=++l)us=usList[key],r=sprint.user_stories.indexOf(us),results.push(sprint.user_stories.splice(r,1));return results}}(this)),promise=this.repo.save(us),promise=promise.then(function(_this){return function(){return items=_this.resortUserStories(_this.scope.userstories,"backlog_order"),data=_this.prepareBulkUpdateData(items,"backlog_order"),_this.rs.userstories.bulkUpdateBacklogOrder(us.project,data).then(function(){return _this.rootscope.$broadcast("sprint:us:moved",us,oldSprintId,newSprintId)})}}(this)),promise.then(null,function(){return console.log("FAIL")}),promise}if(newSprint=this.scope.sprintsById[newSprintId],null===oldSprintId){for(l=0,len1=usList.length;len1>l;l++)us=usList[l],us.milestone=newSprintId;this.scope.$apply(function(_this){return function(){var args,key,len2,m,r,results;for(args=[newUsIndex,0].concat(usList),Array.prototype.splice.apply(newSprint.user_stories,args),results=[],key=m=0,len2=usList.length;len2>m;key=++m)us=usList[key],r=_this.scope.visibleUserstories.indexOf(us),_this.scope.visibleUserstories.splice(r,1),r=_this.scope.userstories.indexOf(us),results.push(_this.scope.userstories.splice(r,1));return results}}(this))}else{for(m=0,len2=usList.length;len2>m;m++)us=usList[m],us.milestone=newSprintId;this.scope.$apply(function(_this){return function(){var args,len3,n,oldSprint,r,results;for(args=[newUsIndex,0].concat(usList),Array.prototype.splice.apply(newSprint.user_stories,args),results=[],n=0,len3=usList.length;len3>n;n++)us=usList[n],oldSprint=_this.scope.sprintsById[oldSprintId],r=oldSprint.user_stories.indexOf(us),results.push(oldSprint.user_stories.splice(r,1));return results}}(this))}return promises=_.map(usList,function(_this){return function(us){return _this.repo.save(us)}}(this)),promise=this.q.all(promises).then(function(_this){return function(){return items=_this.resortUserStories(newSprint.user_stories,"sprint_order"),data=_this.prepareBulkUpdateData(items,"sprint_order"),_this.rs.userstories.bulkUpdateSprintOrder(project,data).then(function(){return _this.rootscope.$broadcast("sprint:us:moved",us,oldSprintId,newSprintId)}),_this.rs.userstories.bulkUpdateBacklogOrder(project,data).then(function(){var len3,n,results;for(results=[],n=0,len3=usList.length;len3>n;n++)us=usList[n],results.push(_this.rootscope.$broadcast("sprint:us:moved",us,oldSprintId,newSprintId));return results})}}(this)),promise.then(null,function(){return console.log("FAIL")}),promise},BacklogController.prototype.isFilterSelected=function(type,id){return null!=this.searchdata[type]&&this.searchdata[type][id]?!0:!1},BacklogController.prototype.setSearchDataFilters=function(){var name,results,urlfilters,val,value;urlfilters=this.getUrlFilters(),urlfilters.q&&(this.scope.filtersQ=this.scope.filtersQ||urlfilters.q),this.searchdata={},results=[];for(name in urlfilters)value=urlfilters[name],null==this.searchdata[name]&&(this.searchdata[name]={}),results.push(function(){var j,len,ref,results1;for(ref=taiga.toString(value).split(","),results1=[],j=0,len=ref.length;len>j;j++)val=ref[j],results1.push(this.searchdata[name][val]=!0);return results1}.call(this));return results},BacklogController.prototype.getUrlFilters=function(){return _.pick(this.location.search(),"statuses","tags","q")},BacklogController.prototype.generateFilters=function(){var plainStatuses,plainTags,selectedStatuses,selectedTags;return this.scope.filters={},plainTags=_.flatten(_.filter(_.map(this.scope.visibleUserstories,"tags"))),plainTags.sort(),this.scope.filters.tags=_.map(_.countBy(plainTags),function(_this){return function(v,k){var obj; +return obj={id:k,type:"tags",name:k,color:_this.scope.project.tags_colors[k],count:v},_this.isFilterSelected("tags",obj.id)&&(obj.selected=!0),obj}}(this)),selectedTags=_.filter(this.scope.filters.tags,"selected"),selectedTags=_.map(selectedTags,"name"),plainStatuses=_.map(this.scope.visibleUserstories,"status"),plainStatuses=_.filter(plainStatuses,function(){return function(status){return status?status:void 0}}(this)),this.scope.filters.statuses=_.map(_.countBy(plainStatuses),function(_this){return function(v,k){var obj;return obj={id:k,type:"statuses",name:_this.scope.usStatusById[k].name,color:_this.scope.usStatusById[k].color,count:v},_this.isFilterSelected("statuses",obj.id)&&(obj.selected=!0),obj}}(this)),selectedStatuses=_.filter(this.scope.filters.statuses,"selected"),selectedStatuses=_.map(selectedStatuses,"id"),this.rs.userstories.storeQueryParams(this.scope.projectId,{status:selectedStatuses,tags:selectedTags,project:this.scope.projectId,milestone:null})},BacklogController.prototype.editUserStory=function(us){return this.rootscope.$broadcast("usform:edit",us)},BacklogController.prototype.deleteUserStory=function(us){var message,title;return title="Delete User Story",message=us.subject,this.confirm.askOnDelete(title,message).then(function(_this){return function(finish){var promise;return _this.scope.userstories=_.without(_this.scope.userstories,us),_this.filterVisibleUserstories(),promise=_this.repo.remove(us),promise.then(function(){return finish(),_this.loadBacklog()}),promise.then(null,function(){return finish(!1),_this.confirm.notify("error")})}}(this))},BacklogController.prototype.addNewUs=function(type){switch(type){case"standard":return this.rootscope.$broadcast("usform:new",this.scope.projectId,this.scope.project.default_us_status,this.scope.usStatusList);case"bulk":return this.rootscope.$broadcast("usform:bulk",this.scope.projectId,this.scope.project.default_us_status)}},BacklogController.prototype.addNewSprint=function(){return this.rootscope.$broadcast("sprintform:create",this.scope.projectId)},BacklogController}(mixOf(taiga.Controller,taiga.PageMixin,taiga.FiltersMixin)),module.controller("BacklogController",BacklogController),BacklogDirective=function($repo,$rootscope){var doomLineTemplate,link,linkDoomLine,linkFilters,linkToolbar,showHideFilter,showHideTags;return doomLineTemplate=_.template('
Project Scope [Doomline]
'),linkDoomLine=function($scope,$el){var addDoomLineDom,getUsItems,reloadDoomLine,removeDoomlineDom;return reloadDoomLine=function(){var current_sum,domElement,i,j,len,ref,results,stats,total_points,us;if(null!=$scope.stats){if(removeDoomlineDom(),stats=$scope.stats,total_points=stats.total_points,current_sum=stats.assigned_points,!$scope.visibleUserstories)return;for(ref=$scope.visibleUserstories,results=[],i=j=0,len=ref.length;len>j;i=++j){if(us=ref[i],current_sum+=us.total_points,current_sum>total_points){domElement=$el.find(".backlog-table-body .us-item-row")[i],addDoomLineDom(domElement);break}results.push(void 0)}return results}},removeDoomlineDom=function(){return $el.find(".doom-line").remove()},addDoomLineDom=function(element){return $(element).before(doomLineTemplate({}))},getUsItems=function(){var rowElements;return rowElements=$el.find(".backlog-table-body .us-item-row"),_.map(rowElements,function(x){return angular.element(x)})},$scope.$on("userstories:loaded",reloadDoomLine),$scope.$watch("stats",reloadDoomLine)},linkToolbar=function($scope,$el,$attrs,$ctrl){var moveToCurrentSprint;return moveToCurrentSprint=function(selectedUss){var extraPoints,totalExtraPoints,ussCurrent;return ussCurrent=_($scope.userstories),$scope.userstories=ussCurrent.without.apply(ussCurrent,selectedUss).value(),extraPoints=_.map(selectedUss,function(v){return v.total_points}),totalExtraPoints=_.reduce(extraPoints,function(acc,num){return acc+num}),$scope.sprints[0].user_stories=_.union($scope.sprints[0].user_stories,selectedUss),$scope.sprints[0].total_points+=totalExtraPoints,$ctrl.filterVisibleUserstories(),$repo.saveAll(selectedUss).then(function(){return $ctrl.loadSprints(),$ctrl.loadProjectStats()})},$el.on("change",".backlog-table-body .user-stories input:checkbox",function(event){var moveToCurrentSprintDom,selectedUsDom,target;return target=angular.element(event.currentTarget),moveToCurrentSprintDom=$el.find("#move-to-current-sprint"),selectedUsDom=$el.find(".backlog-table-body .user-stories input:checkbox:checked"),selectedUsDom.length>0&&$scope.sprints.length>0?moveToCurrentSprintDom.show():moveToCurrentSprintDom.hide(),target.closest(".us-item-row").toggleClass("ui-multisortable-multiple")}),$el.on("click","#move-to-current-sprint",function(){return function(){var ussDom,ussToMove;return ussDom=$el.find(".backlog-table-body .user-stories input:checkbox:checked"),ussToMove=_.map(ussDom,function(item){var itemScope;return item=$(item).closest(".tg-scope"),itemScope=item.scope(),itemScope.us.milestone=$scope.sprints[0].id,itemScope.us}),$scope.$apply(_.partial(moveToCurrentSprint,ussToMove))}}(this)),$el.on("click","#show-tags",function(event){return event.preventDefault(),$ctrl.toggleShowTags(),showHideTags($ctrl)})},showHideTags=function($ctrl){var elm;return elm=angular.element("#show-tags"),$ctrl.showTags?(elm.addClass("active"),elm.find(".text").text("Hide Tags")):(elm.removeClass("active"),elm.find(".text").text("Show Tags"))},showHideFilter=function($scope,$el,$ctrl){var sidebar,target;return sidebar=$el.find("sidebar.filters-bar"),sidebar.one("transitionend",function(){return timeout(150,function(){return $rootscope.$broadcast("resize"),$(".burndown").css("visibility","visible")})}),target=angular.element("#show-filters-button"),$(".burndown").css("visibility","hidden"),sidebar.toggleClass("active"),target.toggleClass("active"),toggleText(target.find(".text"),["Remove Filters","Show Filters"]),sidebar.hasClass("active")||$ctrl.resetFilters(),$ctrl.toggleActiveFilters()},linkFilters=function($scope,$el,$attrs,$ctrl){return $scope.filtersSearch={},$el.on("click","#show-filters-button",function(event){return event.preventDefault(),$scope.$apply(function(){return showHideFilter($scope,$el,$ctrl)})})},link=function($scope,$el,$attrs){var $ctrl,filters;return $ctrl=$el.controller(),linkToolbar($scope,$el,$attrs,$ctrl),linkFilters($scope,$el,$attrs,$ctrl),linkDoomLine($scope,$el,$attrs,$ctrl),$el.find(".backlog-table-body").disableSelection(),filters=$ctrl.getUrlFilters(),(filters.statuses||filters.tags||filters.q)&&showHideFilter($scope,$el,$ctrl),$scope.$on("showTags",function(){return showHideTags($ctrl)}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgBacklog",["$tgRepo","$rootScope",BacklogDirective]),UsRolePointsSelectorDirective=function($rootscope,$template){var link,selectionTemplate;return selectionTemplate=$template.get("backlog/us-role-points-popover.html",!0),link=function($scope,$el){return bindOnce($scope,"project",function(project){var numberOfRoles,roles;return roles=_.filter(project.roles,"computable"),numberOfRoles=_.size(roles),numberOfRoles>1?$el.append(selectionTemplate({roles:roles})):($el.find(".icon-arrow-bottom").remove(),$el.find(".header-points").addClass("not-clickable"))}),$scope.$on("uspoints:select",function(ctx,roleId,roleName){return $el.find(".popover").popover().close(),$el.find(".header-points").html(roleName+"/Total")}),$scope.$on("uspoints:clear-selection",function(){return $el.find(".popover").popover().close(),$el.find(".header-points").text("Points")}),$el.on("click",function(event){var target;return target=angular.element(event.target),(target.is("span")||target.is("div"))&&event.stopPropagation(),$el.find(".popover").popover().open()}),$el.on("click",".clear-selection",function(event){return event.preventDefault(),event.stopPropagation(),$rootscope.$broadcast("uspoints:clear-selection")}),$el.on("click",".role",function(event){var rolScope,target;return event.preventDefault(),event.stopPropagation(),target=angular.element(event.currentTarget),rolScope=target.scope(),$rootscope.$broadcast("uspoints:select",target.data("role-id"),target.text())}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgUsRolePointsSelector",["$rootScope","$tgTemplate",UsRolePointsSelectorDirective]),UsPointsDirective=function($tgEstimationsService,$repo,$tgTemplate){var link,rolesTemplate;return rolesTemplate=$tgTemplate.get("common/estimation/us-points-roles-popover.html",!0),link=function($scope,$el,$attrs){var $ctrl,bindClickElements,estimationProcess,filteringRoleId,renderRolesSelector,selectedRoleId,updatingSelectedRoleId;return $ctrl=$el.controller(),updatingSelectedRoleId=null,selectedRoleId=null,filteringRoleId=null,estimationProcess=null,$scope.$on("uspoints:select",function(ctx,roleId){var us;return us=$scope.$eval($attrs.tgBacklogUsPoints),selectedRoleId=roleId,estimationProcess.render()}),$scope.$on("uspoints:clear-selection",function(){var us;return us=$scope.$eval($attrs.tgBacklogUsPoints),selectedRoleId=null,estimationProcess.render()}),$scope.$watch($attrs.tgBacklogUsPoints,function(us){var roles;return us?(estimationProcess=$tgEstimationsService.create($el,us,$scope.project),roles=estimationProcess.calculateRoles(),0===roles.length?($el.find(".icon-arrow-bottom").remove(),$el.find("a.us-points").addClass("not-clickable")):1===roles.length&&(selectedRoleId=_.keys(us.points)[0]),estimationProcess.isEditable&&bindClickElements(),estimationProcess.onSelectedPointForRole=function(roleId,pointId){return this.save(roleId,pointId).then(function(){return $ctrl.loadProjectStats()})},estimationProcess.render=function(){var ctx,html,mainTemplate,pointId,pointObj,template,text,title,totalPoints;return totalPoints=this.calculateTotalPoints(),null==selectedRoleId||1===roles.length?(text=totalPoints,title=totalPoints):(pointId=this.us.points[selectedRoleId],pointObj=this.pointsById[pointId],text=pointObj.name+" / "+totalPoints+"",title=pointObj.name+" / "+totalPoints),ctx={totalPoints:totalPoints,roles:this.calculateRoles(),editable:this.isEditable,text:text,title:title},mainTemplate="common/estimation/us-estimation-total.html",template=$tgTemplate.get(mainTemplate,!0),html=template(ctx),this.$el.html(html)},estimationProcess.render()):void 0}),renderRolesSelector=function(){var html,roles;return roles=estimationProcess.calculateRoles(),html=rolesTemplate({roles:roles}),$el.append(html),$el.find(".pop-role").popover().open(function(){return $(this).remove()})},bindClickElements=function(){return $el.on("click","a.us-points span",function(event){var us;return event.preventDefault(),event.stopPropagation(),us=$scope.$eval($attrs.tgBacklogUsPoints),updatingSelectedRoleId=selectedRoleId,null!=selectedRoleId?estimationProcess.renderPointsSelector(selectedRoleId):renderRolesSelector()}),$el.on("click",".role",function(event){var popRolesDom,target,us;return event.preventDefault(),event.stopPropagation(),target=angular.element(event.currentTarget),us=$scope.$eval($attrs.tgBacklogUsPoints),updatingSelectedRoleId=target.data("role-id"),popRolesDom=$el.find(".pop-role"),popRolesDom.find("a").removeClass("active"),popRolesDom.find("a[data-role-id='"+updatingSelectedRoleId+"']").addClass("active"),estimationProcess.renderPointsSelector(updatingSelectedRoleId)})},$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgBacklogUsPoints",["$tgEstimationsService","$tgRepo","$tgTemplate",UsPointsDirective]),tgBacklogGraphDirective=function(){var link,redrawChart;return redrawChart=function(element,dataToDraw){var client_increment_line,colors,data,evolution_line,milestonesRange,optimal_line,options,results,team_increment_line,width,zero_line;return width=element.width(),element.height(width/6),milestonesRange=function(){results=[];for(var j=0,ref=dataToDraw.milestones.length-1;ref>=0?ref>=j:j>=ref;ref>=0?j++:j--)results.push(j);return results}.apply(this),data=[],zero_line=_.map(dataToDraw.milestones,function(){return 0}),data.push({data:_.zip(milestonesRange,zero_line),lines:{fillColor:"rgba(0,0,0,0)"},points:{show:!1}}),optimal_line=_.map(dataToDraw.milestones,function(ml){return ml.optimal}),data.push({data:_.zip(milestonesRange,optimal_line),lines:{fillColor:"rgba(120,120,120,0.2)"}}),evolution_line=_.filter(_.map(dataToDraw.milestones,function(ml){return ml.evolution}),function(evolution){return null!=evolution}),data.push({data:_.zip(milestonesRange,evolution_line),lines:{fillColor:"rgba(102,153,51,0.3)"}}),team_increment_line=_.map(dataToDraw.milestones,function(ml){return-ml["team-increment"]}),data.push({data:_.zip(milestonesRange,team_increment_line),lines:{fillColor:"rgba(153,51,51,0.3)"}}),client_increment_line=_.map(dataToDraw.milestones,function(ml){return-ml["team-increment"]-ml["client-increment"]}),data.push({data:_.zip(milestonesRange,client_increment_line),lines:{fillColor:"rgba(255,51,51,0.3)"}}),colors=["rgba(0,0,0,1)","rgba(120,120,120,0.2)","rgba(102,153,51,1)","rgba(153,51,51,1)","rgba(255,51,51,1)"],options={grid:{borderWidth:{top:0,right:1,left:0,bottom:0},borderColor:"#ccc",hoverable:!0},xaxis:{ticks:dataToDraw.milestones.length,axisLabel:"Sprints",axisLabelUseCanvas:!0,axisLabelFontSizePixels:14,axisLabelFontFamily:"Verdana, Arial, Helvetica, Tahoma, sans-serif",axisLabelPadding:15,tickFormatter:function(){return""}},series:{shadowSize:0,lines:{show:!0,fill:!0},points:{show:!0,fill:!0,radius:4,lineWidth:2}},colors:colors,tooltip:!0,tooltipOpts:{content:function(label,xval,yval,flotItem){return 1===flotItem.seriesIndex?"Optimal pending points for sprint "+xval+" should be "+yval:2===flotItem.seriesIndex?"Real pending points for sprint "+xval+" is "+yval:3===flotItem.seriesIndex?"Incremented points by team requirements for sprint "+xval+" is "+Math.abs(yval):"Incremented points by client requirements for sprint "+xval+" is "+Math.abs(yval)}}},element.empty(),element.plot(data,options).data("plot")},link=function($scope,$el){var element;return element=angular.element($el),$scope.$watch("stats",function(){return null!=$scope.stats?(redrawChart(element,$scope.stats),$scope.$on("resize",function(){return redrawChart(element,$scope.stats)})):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgGmBacklogGraph",tgBacklogGraphDirective),TgBacklogProgressBarDirective=function($template){var adjustPercentaje,link,render,template;return template=$template.get("backlog/progress-bar.html",!0),render=function(el,projectPointsPercentaje,closedPointsPercentaje){return el.html(template({projectPointsPercentaje:projectPointsPercentaje,closedPointsPercentaje:closedPointsPercentaje}))},adjustPercentaje=function(percentage){var adjusted;return adjusted=_.max([0,percentage]),adjusted=_.min([100,adjusted]),Math.round(adjusted)},link=function($scope,$el,$attrs){var element;return element=angular.element($el),$scope.$watch($attrs.tgBacklogProgressBar,function(stats){var closedPoints,closedPointsPercentaje,definedPoints,projectPointsPercentaje,totalPoints;return null!=stats?(totalPoints=stats.total_points,definedPoints=stats.defined_points,closedPoints=stats.closed_points,definedPoints>totalPoints?(projectPointsPercentaje=100*totalPoints/definedPoints,closedPointsPercentaje=100*closedPoints/definedPoints):(projectPointsPercentaje=100,closedPointsPercentaje=100*closedPoints/totalPoints),projectPointsPercentaje=adjustPercentaje(projectPointsPercentaje-3),closedPointsPercentaje=adjustPercentaje(closedPointsPercentaje-3),render($el,projectPointsPercentaje,closedPointsPercentaje)):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgBacklogProgressBar",["$tgTemplate",TgBacklogProgressBarDirective])}.call(this),function(){var BacklogEmptySortableDirective,BacklogSortableDirective,SprintSortableDirective,bindOnce,deleteElement,groupBy,mixOf,module,scopeDefer,taiga,toggleText;taiga=this.taiga,mixOf=this.taiga.mixOf,toggleText=this.taiga.toggleText,scopeDefer=this.taiga.scopeDefer,bindOnce=this.taiga.bindOnce,groupBy=this.taiga.groupBy,module=angular.module("taigaBacklog"),deleteElement=function(el){return el.scope().$destroy(),el.off(),el.remove()},BacklogSortableDirective=function($repo,$rs,$rootscope,$tgConfirm){var link;return link=function($scope,$el){var getUsIndex;return getUsIndex=function(){return function(us){return $(us).index(".backlog-table-body .row")}}(this),bindOnce($scope,"project",function(project){var filterError;if(project.my_permissions.indexOf("modify_us")>-1)return filterError=function(){var text;return text="You can't drop on backlog when filters are open",$tgConfirm.notify("error",text)},$el.sortable({items:".us-item-row",cancel:".popover",connectWith:".sprint",containment:".wrapper",dropOnEmpty:!0,placeholder:"row us-item-row us-item-drag sortable-placeholder",scroll:!0,tolerance:"pointer",revert:!1,cursorAt:{right:15},stop:function(){return $el.hasClass("active-filters")?($el.sortable("cancel"),filterError()):void 0}}),$el.on("multiplesortreceive",function(event,ui){var itemIndex,itemUs;return $el.hasClass("active-filters")?(ui.source.sortable("cancel"),void filterError()):(itemUs=ui.item.scope().us,itemIndex=getUsIndex(ui.item),deleteElement(ui.item),$scope.$emit("sprint:us:move",[itemUs],itemIndex,null),ui.item.find("a").removeClass("noclick"))}),$el.on("multiplesortstop",function(event,ui){var index,items,us;if(0!==$(ui.items[0]).parent().length&&!$el.hasClass("active-filters"))return items=_.sortBy(ui.items,function(item){return $(item).index()}),index=_.min(_.map(items,function(item){return getUsIndex(item)})),us=_.map(items,function(item){var itemUs;return item=$(item),itemUs=item.scope().us,setTimeout(function(){return function(){return item.find("a").removeClass("noclick")}}(this),300),itemUs}),$scope.$emit("sprint:us:move",us,index,null)}),$el.on("sortstart",function(event,ui){return ui.item.find("a").addClass("noclick")})}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},BacklogEmptySortableDirective=function(){var link;return link=function($scope,$el){return bindOnce($scope,"project",function(project){return project.my_permissions.indexOf("modify_us")>-1?($el.sortable({dropOnEmpty:!0}),$el.on("sortreceive",function(event,ui){var itemIndex,itemUs;return itemUs=ui.item.scope().us,itemIndex=ui.item.index(),deleteElement(ui.item),$scope.$emit("sprint:us:move",[itemUs],itemIndex,null),ui.item.find("a").removeClass("noclick")})):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},SprintSortableDirective=function(){var link;return link=function($scope,$el){return bindOnce($scope,"project",function(project){return project.my_permissions.indexOf("modify_us")>-1?($el.sortable({scroll:!0,dropOnEmpty:!0,items:".sprint-table .milestone-us-item-row",connectWith:".sprint,.backlog-table-body,.empty-backlog"}),$el.on("multiplesortreceive",function(event,ui){var index,items,us;return items=_.sortBy(ui.items,function(item){return $(item).index()}),index=_.min(_.map(items,function(item){return $(item).index()})),us=_.map(items,function(item){var itemUs;return item=$(item),itemUs=item.scope().us,deleteElement(item),itemUs}),$scope.$emit("sprint:us:move",us,index,$scope.sprint.id)}),$el.on("multiplesortstop",function(event,ui){var itemIndex,itemUs;if(0!==ui.item.parent().length)return itemUs=ui.item.scope().us,itemIndex=ui.item.index(),setTimeout(function(){return function(){return ui.item.find("a").removeClass("noclick")}}(this),300),$scope.$emit("sprint:us:move",[itemUs],itemIndex,$scope.sprint.id)}),$el.on("sortstart",function(event,ui){return ui.item.find("a").addClass("noclick")})):void 0})},{link:link}},module.directive("tgBacklogSortable",["$tgRepo","$tgResources","$rootScope","$tgConfirm",BacklogSortableDirective]),module.directive("tgBacklogEmptySortable",["$tgRepo","$tgResources","$rootScope",BacklogEmptySortableDirective]),module.directive("tgSprintSortable",["$tgRepo","$tgResources","$rootScope",SprintSortableDirective])}.call(this),function(){var BacklogSprintDirective,BacklogSprintHeaderDirective,ToggleExcludeClosedSprintsVisualization,module,taiga;taiga=this.taiga,module=angular.module("taigaBacklog"),BacklogSprintDirective=function($repo,$rootscope){var link,refreshSprintTableHeight,slideOptions,sprintTableMinHeight,toggleSprint;return sprintTableMinHeight=50,slideOptions={duration:500,easing:"linear"},refreshSprintTableHeight=function(){return function(sprintTable){return sprintTable.find(".row").length?sprintTable.css("height","auto"):sprintTable.css("height",sprintTableMinHeight)}}(this),toggleSprint=function(){return function($el){var sprintArrow,sprintTable;return sprintTable=$el.find(".sprint-table"),sprintArrow=$el.find(".icon-arrow-up"),sprintArrow.toggleClass("active"),sprintTable.toggleClass("open"),refreshSprintTableHeight(sprintTable)}}(this),link=function($scope,$el,$attrs){return $scope.$watch($attrs.tgBacklogSprint,function(sprint){return sprint=$scope.$eval($attrs.tgBacklogSprint),sprint.closed?$el.addClass("sprint-closed"):toggleSprint($el)}),$el.on("click",".sprint-name > .icon-arrow-up",function(event){return event.preventDefault(),toggleSprint($el),$el.find(".sprint-table").slideToggle(slideOptions)}),$el.on("click",".sprint-name > .icon-edit",function(event){var sprint;return event.preventDefault(),sprint=$scope.$eval($attrs.tgBacklogSprint),$rootscope.$broadcast("sprintform:edit",sprint)}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgBacklogSprint",["$tgRepo","$rootScope",BacklogSprintDirective]),BacklogSprintHeaderDirective=function($navUrls,$template){var link,template;return template=$template.get("backlog/sprint-header.html",!0),link=function($scope,$el,$attrs,$model){var isEditable,isVisible,render;return isEditable=function(){return-1!==$scope.project.my_permissions.indexOf("modify_milestone")},isVisible=function(){return-1!==$scope.project.my_permissions.indexOf("view_milestones")},render=function(sprint){var ctx,estimatedDateRange,finish,start,taskboardUrl;return taskboardUrl=$navUrls.resolve("project-taskboard",{project:$scope.project.slug,sprint:sprint.slug}),start=moment(sprint.estimated_start).format("DD MMM YYYY"),finish=moment(sprint.estimated_finish).format("DD MMM YYYY"),estimatedDateRange=start+"-"+finish,ctx={name:sprint.name,taskboardUrl:taskboardUrl,estimatedDateRange:estimatedDateRange,closedPoints:sprint.closed_points||0,totalPoints:sprint.total_points||0,isVisible:isVisible(),isEditable:isEditable()},$el.html(template(ctx))},$scope.$watch($attrs.ngModel,function(sprint){return render(sprint)}),$scope.$on("sprintform:edit:success",function(){return render($model.$modelValue)}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgBacklogSprintHeader",["$tgNavUrls","$tgTemplate",BacklogSprintHeaderDirective]),ToggleExcludeClosedSprintsVisualization=function($rootscope,$loading){var excludeClosedSprints,link;return excludeClosedSprints=!0,link=function($scope,$el){var loadingElm;return loadingElm=$("
"),$el.after(loadingElm),$el.on("click",function(event){return event.preventDefault(),excludeClosedSprints=!excludeClosedSprints,$loading.start(loadingElm),$rootscope.$broadcast(excludeClosedSprints?"backlog:unload-closed-sprints":"backlog:load-closed-sprints")}),$scope.$on("$destroy",function(){return $el.off()}),$scope.$on("closed-sprints:reloaded",function(){return function(ctx,sprints){var text;return $loading.finish(loadingElm),text=sprints.length>0?"Hide closed sprints":"Show closed sprints",$el.find(".text").text(text)}}(this))},{link:link}},module.directive("tgBacklogToggleClosedSprintsVisualization",["$rootScope","$tgLoading",ToggleExcludeClosedSprintsVisualization])}.call(this),function(){var CreateMembersDirective,MAX_MEMBERSHIP_FIELDSETS,debounce,module,taiga;taiga=this.taiga,debounce=this.taiga.debounce,module=angular.module("taigaKanban"),MAX_MEMBERSHIP_FIELDSETS=4,CreateMembersDirective=function($rs,$rootScope,$confirm,$loading,lightboxService){var extraTextTemplate,link,template;return extraTextTemplate='
\n \n
',template=_.template('
\n
\n data-required="true" <% } %> data-type="email" />\n
\n
\n \n \n
\n
'),link=function($scope,$el){var createFieldSet,resetForm,submit,submitButton;return createFieldSet=function(required){var ctx;return null==required&&(required=!0),ctx={roleList:$scope.roles,required:required},template(ctx)},resetForm=function(){var fieldSet,invitations;return $el.find("form textarea").remove(""),$el.find("form .add-member-wrapper").remove(),invitations=$el.find(".add-member-forms"),invitations.html(extraTextTemplate),fieldSet=createFieldSet(),invitations.prepend(fieldSet)},$scope.$on("membersform:new",function(){return resetForm(),lightboxService.open($el)}),$scope.$on("$destroy",function(){return $el.off()}),$el.on("click",".delete-fieldset",function(event){var fieldSet,lastActionButton,target;return event.preventDefault(),target=angular.element(event.currentTarget),fieldSet=target.closest(".add-member-wrapper"),fieldSet.remove(),lastActionButton=$el.find("fieldset:last > a"),lastActionButton.hasClass("icon-delete delete-fieldset")?lastActionButton.removeClass("icon-delete delete-fieldset").addClass("icon-plus add-fieldset"):void 0}),$el.on("click",".add-fieldset",function(event){var fieldSet,newFieldSet,target;return event.preventDefault(),target=angular.element(event.currentTarget),fieldSet=target.closest(".add-member-wrapper"),target.removeClass("icon-plus add-fieldset").addClass("icon-delete delete-fieldset"),newFieldSet=createFieldSet(!1),fieldSet.after(newFieldSet),$el.find(".add-member-wrapper").length===MAX_MEMBERSHIP_FIELDSETS?$el.find(".add-member-wrapper fieldset:last > a").removeClass("icon-plus add-fieldset").addClass("icon-delete delete-fieldset"):void 0}),submit=debounce(2e3,function(){return function(event){var form,invitation_extra_text,invitations,memberWrappers,onError,onSuccess;return event.preventDefault(),$loading.start(submitButton),onSuccess=function(){return $loading.finish(submitButton),lightboxService.close($el),$confirm.notify("success"),$rootScope.$broadcast("membersform:new:success")},onError=function(){return $loading.finish(submitButton),lightboxService.close($el),$confirm.notify("error"),$rootScope.$broadcast("membersform:new:error")},form=$el.find("form").checksley(),form.destroy(),form.initialize(),form.validate()?(memberWrappers=$el.find("form .add-member-wrapper"),memberWrappers=_.filter(memberWrappers,function(mw){return angular.element(mw).find("input").hasClass("checksley-ok")}),invitations=_.map(memberWrappers,function(mw){var email,memberWrapper,role;return memberWrapper=angular.element(mw),email=memberWrapper.find("input"),role=memberWrapper.find("select"),{email:email.val(),role_id:role.val()}}),invitations.length?(invitation_extra_text=$el.find("form textarea").val(),$rs.memberships.bulkCreateMemberships($scope.project.id,invitations,invitation_extra_text).then(onSuccess,onError)):void 0):void 0}}(this)),submitButton=$el.find(".submit-button"),$el.on("submit","form",submit)},{link:link}},module.directive("tgLbCreateMembers",["$tgResources","$rootScope","$tgConfirm","$tgLoading","lightboxService",CreateMembersDirective])}.call(this),function(){var MembershipsController,MembershipsDirective,MembershipsRowActionsDirective,MembershipsRowAdminCheckboxDirective,MembershipsRowAvatarDirective,MembershipsRowRoleSelectorDirective,bindMethods,mixOf,module,taiga,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,mixOf=this.taiga.mixOf,bindMethods=this.taiga.bindMethods,module=angular.module("taigaAdmin"),MembershipsController=function(superClass){function MembershipsController(scope,rootscope,repo,confirm,rs,params,q,location,navUrls,analytics,appTitle){var promise;this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.confirm=confirm,this.rs=rs,this.params=params,this.q=q,this.location=location,this.navUrls=navUrls,this.analytics=analytics,this.appTitle=appTitle,bindMethods(this),this.scope.sectionName="Manage Members",this.scope.project={},this.scope.filters={},promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.appTitle.set("Membership - "+_this.scope.project.name)}}(this)),promise.then(null,this.onInitialDataError.bind(this)),this.scope.$on("membersform:new:success",function(_this){return function(){return _this.loadMembers(),_this.analytics.trackEvent("membership","create","create memberships on admin",1)}}(this))}return extend(MembershipsController,superClass),MembershipsController.$inject=["$scope","$rootScope","$tgRepo","$tgConfirm","$tgResources","$routeParams","$q","$tgLocation","$tgNavUrls","$tgAnalytics","$appTitle"],MembershipsController.prototype.loadProject=function(){return this.rs.projects.get(this.scope.projectId).then(function(_this){return function(project){return project.i_am_owner||_this.location.path(_this.navUrls.resolve("permission-denied")),_this.scope.project=project,_this.scope.$emit("project:loaded",project),project}}(this))},MembershipsController.prototype.loadMembers=function(){var httpFilters;return httpFilters=this.getUrlFilters(),this.rs.memberships.list(this.scope.projectId,httpFilters).then(function(_this){return function(data){return _this.scope.memberships=_.filter(data.models,function(membership){return null===membership.user||membership.is_user_active}),_this.scope.page=data.current,_this.scope.count=data.count,_this.scope.paginatedBy=data.paginatedBy,data}}(this))},MembershipsController.prototype.loadInitialData=function(){var promise;return promise=this.repo.resolve({pslug:this.params.pslug}).then(function(_this){return function(data){return _this.scope.projectId=data.project,data}}(this)),promise.then(function(_this){return function(){return _this.loadProject()}}(this)).then(function(_this){return function(){return _this.loadUsersAndRoles()}}(this)).then(function(_this){return function(){return _this.loadMembers()}}(this))},MembershipsController.prototype.getUrlFilters=function(){var filters;return filters=_.pick(this.location.search(),"page"),filters.page||(filters.page=1),filters},MembershipsController.prototype.addNewMembers=function(){return this.rootscope.$broadcast("membersform:new")},MembershipsController}(mixOf(taiga.Controller,taiga.PageMixin,taiga.FiltersMixin)),module.controller("MembershipsController",MembershipsController),MembershipsDirective=function($template){var link,linkPagination,template;return template=$template.get("admin/admin-membership-paginator.html",!0),linkPagination=function($scope,$el,$attrs,$ctrl){var $pagEl,afterCurrent,atBegin,atEnd,beforeCurrent,getNumPages,renderPagination;return afterCurrent=2,beforeCurrent=4,atBegin=2,atEnd=2,$pagEl=$el.find(".memberships-paginator"),getNumPages=function(){var numPages;return numPages=$scope.count/$scope.paginatedBy,numPages=parseInt(numPages,10)=numPages)return void $pagEl.hide();for(pages=[],options={},options.pages=pages,options.showPrevious=$scope.page>1,options.showNext=!($scope.page===numPages),cpage=$scope.page,i=j=1,ref=numPages;ref>=1?ref>=j:j>=ref;i=ref>=1?++j:--j)i===cpage+afterCurrent&&numPages>cpage+afterCurrent+atEnd?pages.push({classes:"dots",type:"dots"}):i===cpage-beforeCurrent&&cpage>atBegin+beforeCurrent?pages.push({classes:"dots",type:"dots"}):i>cpage+afterCurrent&&numPages-atEnd>=i||cpage-beforeCurrent>i&&i>atBegin||pages.push(i===cpage?{classes:"active",num:i,type:"page-active"}:{classes:"page",num:i,type:"page"});return $pagEl.html(template(options))},$scope.$watch("memberships",function(value){return value?renderPagination():void 0}),$el.on("click",".memberships-paginator a.next",function(event){return event.preventDefault(),$scope.$apply(function(){return $ctrl.selectFilter("page",$scope.page+1),$ctrl.loadMembers()})}),$el.on("click",".memberships-paginator a.previous",function(event){return event.preventDefault(),$scope.$apply(function(){return $ctrl.selectFilter("page",$scope.page-1),$ctrl.loadMembers()})}),$el.on("click",".memberships-paginator li.page > a",function(event){var pagenum,target;return event.preventDefault(),target=angular.element(event.currentTarget),pagenum=target.data("pagenum"),$scope.$apply(function(){return $ctrl.selectFilter("page",pagenum),$ctrl.loadMembers()})})},link=function($scope,$el,$attrs){var $ctrl;return $ctrl=$el.controller(),linkPagination($scope,$el,$attrs,$ctrl),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgMemberships",["$tgTemplate",MembershipsDirective]),MembershipsRowAvatarDirective=function($log,$template){var link,template;return template=$template.get("admin/memberships-row-avatar.html",!0),link=function($scope,$el,$attrs){var member,render;return render=function(member){var ctx,html;return ctx={full_name:member.full_name?member.full_name:"",email:member.user_email?member.user_email:member.email,imgurl:member.photo?member.photo:"/images/unnamed.png"},html=template(ctx),$el.html(html)},null==$attrs.tgMembershipsRowAvatar?$log.error("MembershipsRowAvatarDirective: the directive need a member"):(member=$scope.$eval($attrs.tgMembershipsRowAvatar),render(member),$scope.$on("$destroy",function(){return $el.off()}))},{link:link}},module.directive("tgMembershipsRowAvatar",["$log","$tgTemplate",MembershipsRowAvatarDirective]),MembershipsRowAdminCheckboxDirective=function($log,$repo,$confirm,$template){var link,template;return template=$template.get("admin/admin-memberships-row-checkbox.html",!0),link=function($scope,$el,$attrs){var html,member,render;return render=function(member){var ctx,html;return ctx={inputId:"is-admin-"+member.id},html=template(ctx),$el.html(html)},null==$attrs.tgMembershipsRowAdminCheckbox?$log.error("MembershipsRowAdminCheckboxDirective: the directive need a member"):(member=$scope.$eval($attrs.tgMembershipsRowAdminCheckbox),html=render(member),member.is_owner&&$el.find(":checkbox").prop("checked",!0),$el.on("click",":checkbox",function(){return function(event){var onError,onSuccess,target;return onSuccess=function(){return $confirm.notify("success")},onError=function(data){return member.revert(),$el.find(":checkbox").prop("checked",member.is_owner),$confirm.notify("error",data.is_owner[0])},target=angular.element(event.currentTarget),member.is_owner=target.prop("checked"),$repo.save(member).then(onSuccess,onError)}}(this)),$scope.$on("$destroy",function(){return $el.off()}))},{link:link}},module.directive("tgMembershipsRowAdminCheckbox",["$log","$tgRepo","$tgConfirm","$tgTemplate",MembershipsRowAdminCheckboxDirective]),MembershipsRowRoleSelectorDirective=function($log,$repo,$confirm){var link,template;return template=_.template(''),link=function($scope,$el,$attrs){var $ctrl,html,member,render;return render=function(member){var ctx,html;return ctx={roleList:$scope.roles,selectedRole:member.role},html=template(ctx),$el.html(html)},null==$attrs.tgMembershipsRowRoleSelector?$log.error("MembershipsRowRoleSelectorDirective: the directive need a member"):($ctrl=$el.controller(),member=$scope.$eval($attrs.tgMembershipsRowRoleSelector),html=render(member),$el.on("change","select",function(){return function(event){var newRole,onError,onSuccess,target;return onSuccess=function(){return $confirm.notify("success")},onError=function(){return $confirm.notify("error")},target=angular.element(event.currentTarget),newRole=parseInt(target.val(),10),member.role!==newRole?(member.role=newRole,$repo.save(member).then(onSuccess,onError)):void 0}}(this)),$scope.$on("$destroy",function(){return $el.off()}))},{link:link}},module.directive("tgMembershipsRowRoleSelector",["$log","$tgRepo","$tgConfirm",MembershipsRowRoleSelectorDirective]),MembershipsRowActionsDirective=function($log,$repo,$rs,$confirm){var activedTemplate,link,pendingTemplate;return activedTemplate=_.template('
\n Active\n
\n\n \n'),pendingTemplate=_.template('\n Pending\n \n\n\n \n'),link=function($scope,$el,$attrs){var $ctrl,member,render;return render=function(member){var html;return html=member.user?activedTemplate():pendingTemplate(),$el.html(html)},null==$attrs.tgMembershipsRowActions?$log.error("MembershipsRowActionsDirective: the directive need a member"):($ctrl=$el.controller(),member=$scope.$eval($attrs.tgMembershipsRowActions),render(member),$el.on("click",".pending",function(event){var onError,onSuccess;return event.preventDefault(),onSuccess=function(){return $confirm.notify("success","We've sent the invitationi again to '"+$scope.member.email+"'.")},onError=function(){return $confirm.notify("error","We haven't sent the invitation.")},$rs.memberships.resendInvitation($scope.member.id).then(onSuccess,onError)}),$el.on("click",".delete",function(event){var message,title;return event.preventDefault(),title="Delete member",message=member.user?member.full_name:"the invitation to "+member.email,$confirm.askOnDelete(title,message).then(function(finish){var onError,onSuccess;return onSuccess=function(){return finish(),$ctrl.loadMembers(),$confirm.notify("success",null,"We've deleted "+message+".")},onError=function(){return finish(!1),$confirm.notify("error",null,"We have not been able to delete "+message+".")},$repo.remove(member).then(onSuccess,onError)})}),$scope.$on("$destroy",function(){return $el.off()}))},{link:link}},module.directive("tgMembershipsRowActions",["$log","$tgRepo","$tgResources","$tgConfirm",MembershipsRowActionsDirective])}.call(this),function(){var AdminNavigationDirective,module;AdminNavigationDirective=function(){var link;return link=function($scope,$el,$attrs){var section;return section=$attrs.tgAdminNavigation,$el.find(".active").removeClass("active"),$el.find("#adminmenu-"+section+" a").addClass("active"),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module=angular.module("taigaAdmin"),module.directive("tgAdminNavigation",AdminNavigationDirective)}.call(this),function(){var CsvExporterController,CsvExporterIssuesController,CsvExporterTasksController,CsvExporterUserstoriesController,ProjectDefaultValuesDirective,ProjectExportDirective,ProjectModulesDirective,ProjectProfileController,ProjectProfileDirective,bindOnce,debounce,groupBy,joinStr,mixOf,module,taiga,toString,trim,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty,bind=function(fn,me){return function(){return fn.apply(me,arguments)}};taiga=this.taiga,mixOf=this.taiga.mixOf,trim=this.taiga.trim,toString=this.taiga.toString,joinStr=this.taiga.joinStr,groupBy=this.taiga.groupBy,bindOnce=this.taiga.bindOnce,debounce=this.taiga.debounce,module=angular.module("taigaAdmin"),ProjectProfileController=function(superClass){function ProjectProfileController(scope,rootscope,repo,confirm,rs,params,q,location,navUrls,appTitle){var promise;this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.confirm=confirm,this.rs=rs,this.params=params,this.q=q,this.location=location,this.navUrls=navUrls,this.appTitle=appTitle,this.scope.project={},promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.appTitle.set("Project profile - "+_this.scope.sectionName+" - "+_this.scope.project.name)}}(this)),promise.then(null,this.onInitialDataError.bind(this)),this.scope.$on("project:loaded",function(_this){return function(){return _this.appTitle.set("Project profile - "+_this.scope.sectionName+" - "+_this.scope.project.name)}}(this))}return extend(ProjectProfileController,superClass),ProjectProfileController.$inject=["$scope","$rootScope","$tgRepo","$tgConfirm","$tgResources","$routeParams","$q","$tgLocation","$tgNavUrls","$appTitle"],ProjectProfileController.prototype.loadProject=function(){return this.rs.projects.get(this.scope.projectId).then(function(_this){return function(project){return project.i_am_owner||_this.location.path(_this.navUrls.resolve("permission-denied")),_this.scope.project=project,_this.scope.pointsList=_.sortBy(project.points,"order"),_this.scope.usStatusList=_.sortBy(project.us_statuses,"order"),_this.scope.taskStatusList=_.sortBy(project.task_statuses,"order"),_this.scope.prioritiesList=_.sortBy(project.priorities,"order"),_this.scope.severitiesList=_.sortBy(project.severities,"order"),_this.scope.issueTypesList=_.sortBy(project.issue_types,"order"),_this.scope.issueStatusList=_.sortBy(project.issue_statuses,"order"),_this.scope.$emit("project:loaded",project),project}}(this))},ProjectProfileController.prototype.loadInitialData=function(){var promise;return promise=this.repo.resolve({pslug:this.params.pslug}).then(function(_this){return function(data){return _this.scope.projectId=data.project,data}}(this)),promise.then(function(_this){return function(){return _this.loadProject()}}(this))},ProjectProfileController.prototype.openDeleteLightbox=function(){return this.rootscope.$broadcast("deletelightbox:new",this.scope.project)},ProjectProfileController}(mixOf(taiga.Controller,taiga.PageMixin)),module.controller("ProjectProfileController",ProjectProfileController),ProjectProfileDirective=function($repo,$confirm,$loading,$navurls,$location){var link;return link=function($scope,$el){var form,submit,submitButton;return form=$el.find("form").checksley({onlyOneErrorElement:!0}),submit=debounce(2e3,function(){return function(event){var promise;return event.preventDefault(),form.validate()?($loading.start(submitButton),promise=$repo.save($scope.project),promise.then(function(){var newUrl;return $loading.finish(submitButton),$confirm.notify("success"),newUrl=$navurls.resolve("project-admin-project-profile-details",{project:$scope.project.slug}),$location.path(newUrl),$scope.$emit("project:loaded",$scope.project)}),promise.then(null,function(data){return $loading.finish(target),form.setErrors(data),data._error_message?$confirm.notify("error",data._error_message):void 0})):void 0}}(this)),submitButton=$el.find(".submit-button"),$el.on("submit","form",submit)},{link:link}},module.directive("tgProjectProfile",["$tgRepo","$tgConfirm","$tgLoading","$tgNavUrls","$tgLocation",ProjectProfileDirective]),ProjectDefaultValuesDirective=function($repo,$confirm,$loading){var link;return link=function($scope,$el){var form,submit,submitButton;return form=$el.find("form").checksley({onlyOneErrorElement:!0}),submit=debounce(2e3,function(){return function(event){var promise;return event.preventDefault(),form.validate()?($loading.start(submitButton),promise=$repo.save($scope.project),promise.then(function(){return $loading.finish(submitButton),$confirm.notify("success")}),promise.then(null,function(data){return $loading.finish(target),form.setErrors(data),data._error_message?$confirm.notify("error",data._error_message):void 0})):void 0}}(this)),submitButton=$el.find(".submit-button"),$el.on("submit","form",submit),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgProjectDefaultValues",["$tgRepo","$tgConfirm","$tgLoading",ProjectDefaultValuesDirective]),ProjectModulesDirective=function($repo,$confirm,$loading){var link;return link=function($scope,$el){var form,submit;return form=$el.find("form").checksley(),submit=function(){return function(){var promise,target;if(form.validate())return target=angular.element(".admin-functionalities a.button-green"),$loading.start(target),promise=$repo.save($scope.project),promise.then(function(){return $loading.finish(target),$confirm.notify("success"),$scope.$emit("project:loaded",$scope.project)}),promise.then(null,function(data){return $loading.finish(target),$confirm.notify("error",data._error_message)})}}(this),$el.on("submit","form",function(event){return event.preventDefault(),submit()}),$el.on("click",".admin-functionalities a.button-green",function(event){return event.preventDefault(),submit()}),$scope.$watch("isVideoconferenceActivated",function(isVideoconferenceActivated){return isVideoconferenceActivated?$el.find(".videoconference-attributes").removeClass("hidden"):($el.find(".videoconference-attributes").addClass("hidden"),$scope.project.videoconferences=null,$scope.project.videoconferences_salt="")}),$scope.$watch("project",function(project){return $scope.isVideoconferenceActivated=null!=project.videoconferences?!0:!1})},{link:link}},module.directive("tgProjectModules",["$tgRepo","$tgConfirm","$tgLoading",ProjectModulesDirective]),ProjectExportDirective=function($window,$rs,$confirm){var link;return link=function($scope,$el){var buttonsEl,hideButtons,hideResult,hideSpinner,resultEl,resultMessageEl,resultTitleEl,setAsyncMessage,setAsyncTitle,setLoadingMessage,setLoadingTitle,setSyncMessage,setSyncTitle,showButtons,showErrorMode,showExportResultAsyncMode,showExportResultSyncMode,showLoadingMode,showResult,showSpinner,spinnerEl;return buttonsEl=$el.find(".admin-project-export-buttons"),showButtons=function(){return buttonsEl.removeClass("hidden")},hideButtons=function(){return buttonsEl.addClass("hidden")},resultEl=$el.find(".admin-project-export-result"),showResult=function(){return resultEl.removeClass("hidden")},hideResult=function(){return resultEl.addClass("hidden")},spinnerEl=$el.find(".spin"),showSpinner=function(){return spinnerEl.removeClass("hidden")},hideSpinner=function(){return spinnerEl.addClass("hidden")},resultTitleEl=$el.find(".result-title"),setLoadingTitle=function(){return resultTitleEl.html("We are generating your dump file")},setAsyncTitle=function(){return resultTitleEl.html("We are generating your dump file")},setSyncTitle=function(){return resultTitleEl.html("Your dump file is ready!")},resultMessageEl=$el.find(".result-message "),setLoadingMessage=function(){return resultMessageEl.html("Please don't close this page.")},setAsyncMessage=function(){return resultMessageEl.html("We will send you an email when ready.")},setSyncMessage=function(url){return resultMessageEl.html("If the download doesn't start automatically click here.")},showLoadingMode=function(){return showSpinner(),setLoadingTitle(),setLoadingMessage(),hideButtons(),showResult()},showExportResultAsyncMode=function(){return hideSpinner(),setAsyncTitle(),setAsyncMessage()},showExportResultSyncMode=function(url){return hideSpinner(),setSyncTitle(),setSyncMessage(url)},showErrorMode=function(){return hideSpinner(),hideResult(),showButtons()},$el.on("click","a.button-export",debounce(2e3,function(){return function(event){var onError,onSuccess;return event.preventDefault(),onSuccess=function(result){var dumpUrl;return 202===result.status?showExportResultAsyncMode():(dumpUrl=result.data.url,showExportResultSyncMode(dumpUrl),$window.open(dumpUrl,"_blank"))},onError=function(result){var errorMsg,ref;return showErrorMode(),errorMsg="Our oompa loompas have some problems generasting your dump. Please try again. ",429===result.status?errorMsg="Sorry, our oompa loompas are very busy right now. Please try again in a few minutes. ":(null!=(ref=result.data)?ref._error_message:void 0)&&(errorMsg="Our oompa loompas have some problems generasting your dump: "+result.data._error_message),$confirm.notify("error",errorMsg)},showLoadingMode(),$rs.projects["export"]($scope.projectId).then(onSuccess,onError)}}(this)))},{link:link}},module.directive("tgProjectExport",["$window","$tgResources","$tgConfirm",ProjectExportDirective]),CsvExporterController=function(superClass){function CsvExporterController(scope,rootscope,urls,confirm,rs){this.scope=scope,this.rootscope=rootscope,this.urls=urls,this.confirm=confirm,this.rs=rs,this._generateUuid=bind(this._generateUuid,this),this.setCsvUuid=bind(this.setCsvUuid,this),this.rootscope.$on("project:loaded",this.setCsvUuid),this.scope.$watch("csvUuid",function(_this){return function(value){return _this.scope.csvUrl=value?_this.urls.resolveAbsolute(_this.type+"-csv",value):""}}(this))}return extend(CsvExporterController,superClass),CsvExporterController.$inject=["$scope","$rootScope","$tgUrls","$tgConfirm","$tgResources"],CsvExporterController.prototype.setCsvUuid=function(){return this.scope.csvUuid=this.scope.project[this.type+"_csv_uuid"]},CsvExporterController.prototype._generateUuid=function(finish){var promise;return promise=this.rs.projects["regenerate_"+this.type+"_csv_uuid"](this.scope.projectId),promise.then(function(_this){return function(data){var ref;return _this.scope.csvUuid=null!=(ref=data.data)?ref.uuid:void 0}}(this)),promise.then(null,function(_this){return function(){return _this.confirm.notify("error")}}(this)),promise["finally"](function(){return finish()}),promise},CsvExporterController.prototype.regenerateUuid=function(){var subtitle,title;return this.scope.csvUuid?(title="Change URL",subtitle="You going to change the CSV data access url. The previous url will be disabled. Are you sure?",this.confirm.ask(title,subtitle).then(this._generateUuid)):this._generateUuid(_.identity)},CsvExporterController}(taiga.Controller),CsvExporterUserstoriesController=function(superClass){function CsvExporterUserstoriesController(){return CsvExporterUserstoriesController.__super__.constructor.apply(this,arguments)}return extend(CsvExporterUserstoriesController,superClass),CsvExporterUserstoriesController.prototype.type="userstories",CsvExporterUserstoriesController}(CsvExporterController),CsvExporterTasksController=function(superClass){function CsvExporterTasksController(){return CsvExporterTasksController.__super__.constructor.apply(this,arguments)}return extend(CsvExporterTasksController,superClass),CsvExporterTasksController.prototype.type="tasks",CsvExporterTasksController}(CsvExporterController),CsvExporterIssuesController=function(superClass){function CsvExporterIssuesController(){return CsvExporterIssuesController.__super__.constructor.apply(this,arguments)}return extend(CsvExporterIssuesController,superClass),CsvExporterIssuesController.prototype.type="issues",CsvExporterIssuesController}(CsvExporterController),module.controller("CsvExporterUserstoriesController",CsvExporterUserstoriesController),module.controller("CsvExporterTasksController",CsvExporterTasksController),module.controller("CsvExporterIssuesController",CsvExporterIssuesController)}.call(this),function(){var ColorSelectionDirective,ProjectCustomAttributesController,ProjectCustomAttributesDirective,ProjectValuesController,ProjectValuesDirective,ProjectValuesSectionController,bindOnce,debounce,groupBy,joinStr,mixOf,module,taiga,toString,trim,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty,bind=function(fn,me){return function(){return fn.apply(me,arguments)}};taiga=this.taiga,mixOf=this.taiga.mixOf,trim=this.taiga.trim,toString=this.taiga.toString,joinStr=this.taiga.joinStr,groupBy=this.taiga.groupBy,bindOnce=this.taiga.bindOnce,debounce=this.taiga.debounce,module=angular.module("taigaAdmin"),ProjectValuesSectionController=function(superClass){function ProjectValuesSectionController(scope,rootscope,repo,confirm,rs,params,q,location,navUrls,appTitle){var promise;this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.confirm=confirm,this.rs=rs,this.params=params,this.q=q,this.location=location,this.navUrls=navUrls,this.appTitle=appTitle,this.scope.project={},promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.appTitle.set("Project values - "+_this.scope.sectionName+" - "+_this.scope.project.name)}}(this)),promise.then(null,this.onInitialDataError.bind(this))}return extend(ProjectValuesSectionController,superClass),ProjectValuesSectionController.$inject=["$scope","$rootScope","$tgRepo","$tgConfirm","$tgResources","$routeParams","$q","$tgLocation","$tgNavUrls","$appTitle"],ProjectValuesSectionController.prototype.loadProject=function(){return this.rs.projects.get(this.scope.projectId).then(function(_this){return function(project){return project.i_am_owner||_this.location.path(_this.navUrls.resolve("permission-denied")),_this.scope.project=project,_this.scope.$emit("project:loaded",project),project}}(this))},ProjectValuesSectionController.prototype.loadInitialData=function(){var promise;return promise=this.repo.resolve({pslug:this.params.pslug}).then(function(_this){return function(data){return _this.scope.projectId=data.project,data}}(this)),promise.then(function(_this){return function(){return _this.loadProject()}}(this))},ProjectValuesSectionController}(mixOf(taiga.Controller,taiga.PageMixin)),module.controller("ProjectValuesSectionController",ProjectValuesSectionController),ProjectValuesController=function(superClass){function ProjectValuesController(scope,rootscope,repo,confirm,rs){this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.confirm=confirm,this.rs=rs,this.moveValue=bind(this.moveValue,this),this.loadValues=bind(this.loadValues,this),this.scope.$on("admin:project-values:move",this.moveValue),this.rootscope.$on("project:loaded",this.loadValues)}return extend(ProjectValuesController,superClass),ProjectValuesController.$inject=["$scope","$rootScope","$tgRepo","$tgConfirm","$tgResources"],ProjectValuesController.prototype.loadValues=function(){return this.rs[this.scope.resource].listValues(this.scope.projectId,this.scope.type).then(function(_this){return function(values){return _this.scope.values=values,_this.scope.maxValueOrder=_.max(values,"order").order,values}}(this))},ProjectValuesController.prototype.moveValue=function(ctx,itemValue,itemIndex){var r,values;return values=this.scope.values,r=values.indexOf(itemValue),values.splice(r,1),values.splice(itemIndex,0,itemValue),_.each(values,function(value,index){return value.order=index}),this.repo.saveAll(values)},ProjectValuesController}(taiga.Controller),module.controller("ProjectValuesController",ProjectValuesController),ProjectValuesDirective=function($log,$repo,$confirm){var link,linkDragAndDrop,linkValue;return linkDragAndDrop=function($scope,$el){var itemEl,newParentScope,oldParentScope,tdom;return oldParentScope=null,newParentScope=null,itemEl=null,tdom=$el.find(".sortable"),tdom.sortable({handle:".row.table-main.visualization",dropOnEmpty:!0,connectWith:".project-values-body",revert:400,axis:"y"}),tdom.on("sortstop",function(event,ui){var itemIndex,itemValue;return itemEl=ui.item,itemValue=itemEl.scope().value,itemIndex=itemEl.index(),$scope.$broadcast("admin:project-values:move",itemValue,itemIndex)}),$scope.$on("$destroy",function(){return $el.off()})},linkValue=function($scope,$el,$attrs){var $ctrl,cancel,goToBottomList,initializeNewValue,saveNewValue,saveValue,valueType;return $ctrl=$el.controller(),valueType=$attrs.type,initializeNewValue=function(){return $scope.newValue={name:"",is_closed:!1,is_archived:!1}},initializeNewValue(),goToBottomList=function(){return function(focus){var table;return null==focus&&(focus=!1),table=$el.find(".table-main"),$(document.body).scrollTop(table.offset().top+table.height()),focus?$el.find(".new-value input:visible").first().focus():void 0}}(this),saveValue=function(target){var form,formEl,promise,value;return formEl=target.parents("form"),form=formEl.checksley(),form.validate()?(value=formEl.scope().value,promise=$repo.save(value),promise.then(function(){return function(){var row;return row=target.parents(".row.table-main"),row.addClass("hidden"),row.siblings(".visualization").removeClass("hidden")}}(this)),promise.then(null,function(data){return form.setErrors(data)})):void 0},saveNewValue=function(target){var form,formEl,promise;return formEl=target.parents("form"),form=formEl.checksley(),form.validate()?($scope.newValue.project=$scope.project.id,$scope.newValue.order=$scope.maxValueOrder?$scope.maxValueOrder+1:1,promise=$repo.create(valueType,$scope.newValue),promise.then(function(){return function(data){return target.addClass("hidden"),$scope.values.push(data),$scope.maxValueOrder=data.order,initializeNewValue()}}(this)),promise.then(null,function(data){return form.setErrors(data)})):void 0},cancel=function(target){var formEl,row,value;return row=target.parents(".row.table-main"),formEl=target.parents("form"),value=formEl.scope().value,$scope.$apply(function(){return row.addClass("hidden"),value.revert(),row.siblings(".visualization").removeClass("hidden")})},$el.on("click",".show-add-new",function(event){return event.preventDefault(),$el.find(".new-value").removeClass("hidden"),goToBottomList(!0)}),$el.on("click",".add-new",debounce(2e3,function(event){var target;return event.preventDefault(),target=$el.find(".new-value"),saveNewValue(target)})),$el.on("click",".delete-new",function(event){return event.preventDefault(),$el.find(".new-value").addClass("hidden"),initializeNewValue()}),$el.on("click",".edit-value",function(event){var editionRow,row,target;return event.preventDefault(),target=angular.element(event.currentTarget),row=target.parents(".row.table-main"),row.addClass("hidden"),editionRow=row.siblings(".edition"),editionRow.removeClass("hidden"),editionRow.find("input:visible").first().focus().select()}),$el.on("keyup",".edition input",function(event){var target;return 13===event.keyCode?(target=angular.element(event.currentTarget),saveValue(target)):27===event.keyCode?(target=angular.element(event.currentTarget),cancel(target)):void 0}),$el.on("keyup",".new-value input",function(event){var target;return 13===event.keyCode?(target=$el.find(".new-value"),saveNewValue(target)):27===event.keyCode?($el.find(".new-value").addClass("hidden"),initializeNewValue()):void 0}),$el.on("click",".save",function(event){var target;return event.preventDefault(),target=angular.element(event.currentTarget),saveValue(target)}),$el.on("click",".cancel",function(event){var target;return event.preventDefault(),target=angular.element(event.currentTarget),cancel(target)}),$el.on("click",".delete-value",function(event){var choices,formEl,replacement,subtitle,target,title,value;return event.preventDefault(),target=angular.element(event.currentTarget),formEl=target.parents("form"),value=formEl.scope().value,choices={},_.each($scope.values,function(option){return value.id!==option.id?choices[option.id]=option.name:void 0}),title="Delete value",subtitle=value.name,replacement="All items with this value will be changed to",0===_.keys(choices).length?$confirm.error("You can't delete all values."):$confirm.askChoice(title,subtitle,choices,replacement).then(function(response){var onError,onSucces;return onSucces=function(){return $ctrl.loadValues()["finally"](function(){return response.finish()})},onError=function(){return $confirm.notify("error")},$repo.remove(value,{moveTo:response.selected}).then(onSucces,onError)})})},link=function($scope,$el,$attrs){return linkDragAndDrop($scope,$el,$attrs),linkValue($scope,$el,$attrs),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgProjectValues",["$log","$tgRepo","$tgConfirm","$tgLocation","animationFrame",ProjectValuesDirective]),ColorSelectionDirective=function(){var link;return link=function($scope,$el,$attrs,$model){var $ctrl;return $ctrl=$el.controller(),$scope.$watch($attrs.ngModel,function(element){return $scope.color=element.color}),$el.on("click",".current-color",function(event){var body,target;return event.preventDefault(),event.stopPropagation(),target=angular.element(event.currentTarget),$el.find(".select-color").hide(),target.siblings(".select-color").show(),body=angular.element("body"),body.on("click",function(){return function(event){return 0===angular.element(event.target).parent(".select-color").length?($el.find(".select-color").hide(),body.unbind("click")):void 0}}(this))}),$el.on("click",".select-color .color",function(event){var target;return event.preventDefault(),target=angular.element(event.currentTarget),$scope.$apply(function(){return $model.$modelValue.color=target.data("color")}),$el.find(".select-color").hide()}),$el.on("click",".select-color .selected-color",function(event){return event.preventDefault(),$scope.$apply(function(){return $model.$modelValue.color=$scope.color}),$el.find(".select-color").hide()}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,require:"ngModel"}},module.directive("tgColorSelection",ColorSelectionDirective),ProjectCustomAttributesController=function(superClass){function ProjectCustomAttributesController(scope,rootscope,repo,rs,params,q,location,navUrls,appTitle){this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.rs=rs,this.params=params,this.q=q,this.location=location,this.navUrls=navUrls,this.appTitle=appTitle,this.moveCustomAttributes=bind(this.moveCustomAttributes,this),this.deleteCustomAttribute=bind(this.deleteCustomAttribute,this),this.saveCustomAttribute=bind(this.saveCustomAttribute,this),this.createCustomAttribute=bind(this.createCustomAttribute,this),this.loadCustomAttributes=bind(this.loadCustomAttributes,this),this.scope.project={},this.rootscope.$on("project:loaded",function(_this){return function(){return _this.loadCustomAttributes(),_this.appTitle.set("Project Custom Attributes - "+_this.scope.sectionName+" - "+_this.scope.project.name)}}(this))}return extend(ProjectCustomAttributesController,superClass),ProjectCustomAttributesController.$inject=["$scope","$rootScope","$tgRepo","$tgResources","$routeParams","$q","$tgLocation","$tgNavUrls","$appTitle"],ProjectCustomAttributesController.prototype.loadCustomAttributes=function(){return this.rs.customAttributes[this.scope.type].list(this.scope.projectId).then(function(_this){return function(customAttributes){return _this.scope.customAttributes=customAttributes,_this.scope.maxOrder=_.max(customAttributes,"order").order,customAttributes}}(this))},ProjectCustomAttributesController.prototype.createCustomAttribute=function(attrValues){return this.repo.create("custom-attributes/"+this.scope.type,attrValues)},ProjectCustomAttributesController.prototype.saveCustomAttribute=function(attrModel){return this.repo.save(attrModel)},ProjectCustomAttributesController.prototype.deleteCustomAttribute=function(attrModel){return this.repo.remove(attrModel)},ProjectCustomAttributesController.prototype.moveCustomAttributes=function(attrModel,newIndex){var customAttributes,r;return customAttributes=this.scope.customAttributes,r=customAttributes.indexOf(attrModel),customAttributes.splice(r,1),customAttributes.splice(newIndex,0,attrModel),_.each(customAttributes,function(val,idx){return val.order=idx +}),this.repo.saveAll(customAttributes)},ProjectCustomAttributesController}(mixOf(taiga.Controller,taiga.PageMixin)),module.controller("ProjectCustomAttributesController",ProjectCustomAttributesController),ProjectCustomAttributesDirective=function($log,$confirm){var link;return link=function($scope,$el){var $ctrl,cancelCreate,cancelUpdate,create,deleteCustomAttribute,hideAddButton,hideCancelButton,hideCreateForm,hideEditForm,resetNewAttr,revertChangesInCustomAttribute,showAddButton,showCancelButton,showCreateForm,showEditForm,sortableEl,update;return $ctrl=$el.controller(),$scope.$on("$destroy",function(){return $el.off()}),sortableEl=$el.find(".js-sortable"),sortableEl.sortable({handle:".js-view-custom-field",dropOnEmpty:!0,revert:400,axis:"y"}),sortableEl.on("sortstop",function(event,ui){var itemAttr,itemEl,itemIndex;return itemEl=ui.item,itemAttr=itemEl.scope().attr,itemIndex=itemEl.index(),$ctrl.moveCustomAttributes(itemAttr,itemIndex)}),showCreateForm=function(){return $el.find(".js-new-custom-field").removeClass("hidden"),$el.find(".js-new-custom-field input:visible").first().focus()},hideCreateForm=function(){return $el.find(".js-new-custom-field").addClass("hidden")},showAddButton=function(){return $el.find(".js-add-custom-field-button").removeClass("hidden")},hideAddButton=function(){return $el.find(".js-add-custom-field-button").addClass("hidden")},showCancelButton=function(){return $el.find(".js-cancel-new-custom-field-button").removeClass("hidden")},hideCancelButton=function(){return $el.find(".js-cancel-new-custom-field-button").addClass("hidden")},resetNewAttr=function(){return $scope.newAttr={}},create=function(formEl){var attr,form,onError,onSucces;return form=formEl.checksley(),form.validate()?(onSucces=function(){return function(){return $ctrl.loadCustomAttributes(),hideCreateForm(),resetNewAttr(),$confirm.notify("success")}}(this),onError=function(){return function(data){return form.setErrors(data)}}(this),attr=$scope.newAttr,attr.project=$scope.projectId,attr.order=$scope.maxOrder?$scope.maxOrder+1:1,$ctrl.createCustomAttribute(attr).then(onSucces,onError)):void 0},cancelCreate=function(){return hideCreateForm(),resetNewAttr()},$scope.$watch("customAttributes",function(customAttributes){return customAttributes?0===customAttributes.length?(hideCancelButton(),hideAddButton(),showCreateForm()):(hideCreateForm(),showAddButton(),showCancelButton()):void 0}),$el.on("click",".js-add-custom-field-button",function(event){return event.preventDefault(),showCreateForm()}),$el.on("click",".js-create-custom-field-button",debounce(2e3,function(event){var formEl,target;return event.preventDefault(),target=angular.element(event.currentTarget),formEl=target.closest("form"),create(formEl)})),$el.on("click",".js-cancel-new-custom-field-button",function(event){return event.preventDefault(),cancelCreate()}),$el.on("keyup",".js-new-custom-field input",function(event){var formEl,target;return 13===event.keyCode?(target=angular.element(event.currentTarget),formEl=target.closest("form"),create(formEl)):27===event.keyCode?cancelCreate():void 0}),showEditForm=function(formEl){return formEl.find(".js-view-custom-field").addClass("hidden"),formEl.find(".js-edit-custom-field").removeClass("hidden"),formEl.find(".js-edit-custom-field input:visible").first().focus().select()},hideEditForm=function(formEl){return formEl.find(".js-edit-custom-field").addClass("hidden"),formEl.find(".js-view-custom-field").removeClass("hidden")},revertChangesInCustomAttribute=function(formEl){return $scope.$apply(function(){return formEl.scope().attr.revert()})},update=function(formEl){var attr,form,onError,onSucces;return form=formEl.checksley(),form.validate()?(onSucces=function(){return function(){return $ctrl.loadCustomAttributes(),hideEditForm(formEl),$confirm.notify("success")}}(this),onError=function(){return function(data){return form.setErrors(data)}}(this),attr=formEl.scope().attr,$ctrl.saveCustomAttribute(attr).then(onSucces,onError)):void 0},cancelUpdate=function(formEl){return hideEditForm(formEl),revertChangesInCustomAttribute(formEl)},$el.on("click",".js-edit-custom-field-button",function(event){var formEl,target;return event.preventDefault(),target=angular.element(event.currentTarget),formEl=target.closest("form"),showEditForm(formEl)}),$el.on("click",".js-update-custom-field-button",debounce(2e3,function(event){var formEl,target;return event.preventDefault(),target=angular.element(event.currentTarget),formEl=target.closest("form"),update(formEl)})),$el.on("click",".js-cancel-edit-custom-field-button",function(event){var formEl,target;return event.preventDefault(),target=angular.element(event.currentTarget),formEl=target.closest("form"),cancelUpdate(formEl)}),$el.on("keyup",".js-edit-custom-field input",function(event){var formEl,target;return 13===event.keyCode?(target=angular.element(event.currentTarget),formEl=target.closest("form"),update(formEl)):27===event.keyCode?(target=angular.element(event.currentTarget),formEl=target.closest("form"),cancelUpdate(formEl)):void 0}),deleteCustomAttribute=function(formEl){var attr,message,subtitle,title;return attr=formEl.scope().attr,title="Delete custom attribute",subtitle="Remeber that all values in this custom field will be deleted.
Are you sure you want to continue?",message=attr.name,$confirm.ask(title,subtitle,message).then(function(finish){var onError,onSucces;return onSucces=function(){return $ctrl.loadCustomAttributes()["finally"](function(){return finish()})},onError=function(){return finish(!1),$confirm.notify("error",null,"We have not been able to delete '"+message+"'.")},$ctrl.deleteCustomAttribute(attr).then(onSucces,onError)})},$el.on("click",".js-delete-custom-field-button",debounce(2e3,function(event){var formEl,target;return event.preventDefault(),target=angular.element(event.currentTarget),formEl=target.closest("form"),deleteCustomAttribute(formEl)}))},{link:link}},module.directive("tgProjectCustomAttributes",["$log","$tgConfirm","animationFrame",ProjectCustomAttributesDirective])}.call(this),function(){var EditRoleDirective,NewRoleDirective,RolePermissionsDirective,RolesController,RolesDirective,bindMethods,bindOnce,debounce,mixOf,module,taiga,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty,indexOf=[].indexOf||function(item){for(var i=0,l=this.length;l>i;i++)if(i in this&&this[i]===item)return i;return-1};taiga=this.taiga,mixOf=this.taiga.mixOf,bindOnce=this.taiga.bindOnce,debounce=this.taiga.debounce,bindMethods=this.taiga.bindMethods,module=angular.module("taigaAdmin"),RolesController=function(superClass){function RolesController(scope,rootscope,repo,confirm,rs,params,q,location,navUrls,appTitle){var promise;this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.confirm=confirm,this.rs=rs,this.params=params,this.q=q,this.location=location,this.navUrls=navUrls,this.appTitle=appTitle,bindMethods(this),this.scope.sectionName="Permissions",this.scope.project={},this.scope.anyComputableRole=!0,promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.appTitle.set("Roles - "+_this.scope.project.name)}}(this)),promise.then(null,this.onInitialDataError.bind(this))}return extend(RolesController,superClass),RolesController.$inject=["$scope","$rootScope","$tgRepo","$tgConfirm","$tgResources","$routeParams","$q","$tgLocation","$tgNavUrls","$appTitle"],RolesController.prototype.loadProject=function(){return this.rs.projects.get(this.scope.projectId).then(function(_this){return function(project){return project.i_am_owner||_this.location.path(_this.navUrls.resolve("permission-denied")),_this.scope.project=project,_this.scope.$emit("project:loaded",project),_this.scope.anyComputableRole=_.some(_.map(project.roles,function(point){return point.computable})),project}}(this))},RolesController.prototype.loadExternalUserRole=function(roles){var public_permission;return roles=roles.map(function(role){return role.external_user=!1,role}),public_permission={name:"External User",permissions:this.scope.project.public_permissions,external_user:!0},roles.push(public_permission),roles},RolesController.prototype.loadRoles=function(){return this.rs.roles.list(this.scope.projectId).then(this.loadExternalUserRole).then(function(_this){return function(roles){return _this.scope.roles=roles,_this.scope.role=_this.scope.roles[0],roles}}(this))},RolesController.prototype.loadInitialData=function(){var promise;return promise=this.repo.resolve({pslug:this.params.pslug}).then(function(_this){return function(data){return _this.scope.projectId=data.project,data}}(this)),promise.then(function(_this){return function(){return _this.loadProject()}}(this)).then(function(_this){return function(){return _this.loadUsersAndRoles()}}(this)).then(function(_this){return function(){return _this.loadRoles()}}(this))},RolesController.prototype.setRole=function(role){return this.scope.role=role,this.scope.$broadcast("role:changed",this.scope.role)},RolesController.prototype["delete"]=function(){var choices,i,len,ref,replacement,role,subtitle,title,warning;for(title="Delete Role",subtitle=this.scope.role.name,replacement="All the users with this role will be moved to",warning="Be careful, all role estimations will be removed",choices={},ref=this.scope.roles,i=0,len=ref.length;len>i;i++)role=ref[i],role.id!==this.scope.role.id&&(choices[role.id]=role.name);return 0===_.keys(choices).length?this.confirm.error("You can't delete all values."):this.confirm.askChoice(title,subtitle,choices,replacement,warning).then(function(_this){return function(response){var promise;return promise=_this.repo.remove(_this.scope.role,{moveTo:response.selected}),promise.then(function(){return _this.loadProject(),_this.loadRoles()["finally"](function(){return response.finish()})}),promise.then(null,function(){return _this.confirm.notify("error")})}}(this))},RolesController.prototype.setComputable=debounce(2e3,function(){var onError,onSuccess;return onSuccess=function(_this){return function(){return _this.confirm.notify("success"),_this.loadProject()}}(this),onError=function(_this){return function(){return _this.confirm.notify("error"),_this.scope.role.revert()}}(this),this.repo.save(this.scope.role).then(onSuccess,onError)}),RolesController}(mixOf(taiga.Controller,taiga.PageMixin,taiga.FiltersMixin)),module.controller("RolesController",RolesController),EditRoleDirective=function($repo,$confirm){var link;return link=function($scope,$el){var submit,toggleView;return toggleView=function(){return $el.find(".total").toggle(),$el.find(".edit-role").toggle()},submit=function(){var promise;return $scope.role.name=$el.find("input").val(),promise=$repo.save($scope.role),promise.then(function(){return $confirm.notify("success")}),promise.then(null,function(){return $confirm.notify("error")}),toggleView()},$el.on("click","a.icon-edit",function(){return toggleView(),$el.find("input").focus(),$el.find("input").val($scope.role.name)}),$el.on("click","a.save",submit),$el.on("keyup","input",function(event){return 13===event.keyCode?submit():27===event.keyCode?toggleView():void 0}),$scope.$on("role:changed",function(){return $el.find(".edit-role").is(":visible")?toggleView():void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgEditRole",["$tgRepo","$tgConfirm",EditRoleDirective]),RolesDirective=function(){var link;return link=function($scope,$el){var $ctrl;return $ctrl=$el.controller(),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgRoles",RolesDirective),NewRoleDirective=function($tgrepo,$confirm){var DEFAULT_PERMISSIONS,link;return DEFAULT_PERMISSIONS=["view_project","view_milestones","view_us","view_tasks","view_issues"],link=function($scope,$el){var $ctrl;return $ctrl=$el.controller(),$scope.$on("$destroy",function(){return $el.off()}),$el.on("click","a.add-button",function(event){return event.preventDefault(),$el.find(".new").removeClass("hidden"),$el.find(".new").focus(),$el.find(".add-button").hide()}),$el.on("keyup",".new",function(event){var newRole,onError,onSuccess,target;return event.preventDefault(),13===event.keyCode?(target=angular.element(event.currentTarget),newRole={project:$scope.projectId,name:target.val(),permissions:DEFAULT_PERMISSIONS,order:_.max($scope.roles,function(r){return r.order}).order+1,computable:!1},$el.find(".new").addClass("hidden"),$el.find(".new").val(""),onSuccess=function(role){return $scope.roles.push(role),$ctrl.setRole(role),$el.find(".add-button").show(),$ctrl.loadProject()},onError=function(){return $confirm.notify("error")},$tgrepo.create("roles",newRole).then(onSuccess,onError)):27===event.keyCode?(target=angular.element(event.currentTarget),$el.find(".new").addClass("hidden"),$el.find(".new").val(""),$el.find(".add-button").show()):void 0})},{link:link}},module.directive("tgNewRole",["$tgRepo","$tgConfirm",NewRoleDirective]),RolePermissionsDirective=function($rootscope,$repo,$confirm){var baseTemplate,categoryTemplate,link,resumeTemplate;return resumeTemplate=_.template('
<%- category.name %>
\n
\n
<%- category.activePermissions %>/<%- category.permissions.length %>
\n <% _.each(category.permissions, function(permission) { %>\n
\n <% }) %>\n
\n
'),categoryTemplate=_.template('
\n
\n
\n
\n
\n <% _.each(category.permissions, function(permission) { %>\n
\n <%- permission.description %>\n
\n disabled="disabled"<% } %> <% if(permission.active) { %>checked="checked"<% } %>/>\n
\n Yes\n No\n
\n
\n <% }) %>\n
\n
\n
'),baseTemplate=_.template('
'),link=function($scope,$el,$attrs){var $ctrl,generateCategoriesFromRole,renderCategory,renderPermissions,renderResume;return $ctrl=$el.controller(),generateCategoriesFromRole=function(role){var categories,isPermissionEditable,issuePermissions,milestonePermissions,setActivePermissions,setActivePermissionsPerCategory,taskPermissions,userStoryPermissions,wikiPermissions;return setActivePermissions=function(permissions){return _.map(permissions,function(x){var ref;return _.extend({},x,{active:(ref=x.key,indexOf.call(role.permissions,ref)>=0)})})},isPermissionEditable=function(permission,role,project){return role.external_user&&!project.is_private&&0===permission.key.indexOf("view_")?!1:!0},setActivePermissionsPerCategory=function(category){return _.map(category,function(cat){return cat.permissions=cat.permissions.map(function(permission){return permission.editable=isPermissionEditable(permission,role,$scope.project),permission}),_.extend({},cat,{activePermissions:_.filter(cat.permissions,"active").length})})},categories=[],milestonePermissions=[{key:"view_milestones",description:"View sprints"},{key:"add_milestone",description:"Add sprint"},{key:"modify_milestone",description:"Modify sprint"},{key:"delete_milestone",description:"Delete sprint"}],categories.push({name:"Sprints",permissions:setActivePermissions(milestonePermissions)}),userStoryPermissions=[{key:"view_us",description:"View user story"},{key:"add_us",description:"Add user story"},{key:"modify_us",description:"Modify user story"},{key:"delete_us",description:"Delete user story"}],categories.push({name:"User Stories",permissions:setActivePermissions(userStoryPermissions)}),taskPermissions=[{key:"view_tasks",description:"View tasks"},{key:"add_task",description:"Add task"},{key:"modify_task",description:"Modify task"},{key:"delete_task",description:"Delete task"}],categories.push({name:"Tasks",permissions:setActivePermissions(taskPermissions)}),issuePermissions=[{key:"view_issues",description:"View issues"},{key:"add_issue",description:"Add issue"},{key:"modify_issue",description:"Modify issue"},{key:"delete_issue",description:"Delete issue"}],categories.push({name:"Issues",permissions:setActivePermissions(issuePermissions)}),wikiPermissions=[{key:"view_wiki_pages",description:"View wiki pages"},{key:"add_wiki_page",description:"Add wiki page"},{key:"modify_wiki_page",description:"Modify wiki page"},{key:"delete_wiki_page",description:"Delete wiki page"},{key:"view_wiki_links",description:"View wiki links"},{key:"add_wiki_link",description:"Add wiki link"},{key:"delete_wiki_link",description:"Delete wiki link"}],categories.push({name:"Wiki",permissions:setActivePermissions(wikiPermissions)}),setActivePermissionsPerCategory(categories)},renderResume=function(element,category){return element.find(".resume").html(resumeTemplate({category:category}))},renderCategory=function(category,index){var html;return html=categoryTemplate({category:category,index:index}),html=angular.element(html),renderResume(html,category),html},renderPermissions=function(){var html;return $el.off(),html=baseTemplate(),_.each(generateCategoriesFromRole($scope.role),function(category,index){return html=angular.element(html).append(renderCategory(category,index))}),$el.html(html),$el.on("click",".resume",function(event){var target;return event.preventDefault(),target=angular.element(event.currentTarget),target.next().toggleClass("open")}),$el.on("change",".category-item input",function(event){var getActivePermissions,onError,onSuccess,target;return getActivePermissions=function(){var activePermissions;return activePermissions=_.filter($el.find(".category-item input"),function(t){return angular.element(t).is(":checked")}),activePermissions=_.sortBy(_.map(activePermissions,function(t){var permission;return permission=angular.element(t).parents(".category-item").data("id")})),activePermissions.push("view_project"),activePermissions},target=angular.element(event.currentTarget),$scope.role.permissions=getActivePermissions(),onSuccess=function(){var categories,categoryId;return categories=generateCategoriesFromRole($scope.role),categoryId=target.parents(".category-config").data("id"),renderResume(target.parents(".category-config"),categories[categoryId]),$rootscope.$broadcast("projects:reload"),$confirm.notify("success"),$ctrl.loadProject()},onError=function(){return $confirm.notify("error"),target.prop("checked",!target.prop("checked")),$scope.role.permissions=getActivePermissions()},$scope.role.external_user?($scope.project.public_permissions=$scope.role.permissions,$scope.project.anon_permissions=$scope.role.permissions.filter(function(permission){return 0===permission.indexOf("view_")}),$repo.save($scope.project).then(onSuccess,onError)):$repo.save($scope.role).then(onSuccess,onError)})},$scope.$on("$destroy",function(){return $el.off()}),$scope.$on("role:changed",function(){return renderPermissions()}),bindOnce($scope,$attrs.ngModel,renderPermissions)},{link:link}},module.directive("tgRolePermissions",["$rootScope","$tgRepo","$tgConfirm",RolePermissionsDirective])}.call(this),function(){var BitbucketController,BitbucketWebhooksDirective,GithubController,GithubWebhooksDirective,GitlabController,GitlabWebhooksDirective,NewWebhookDirective,SelectInputText,ValidOriginIpsDirective,WebhookDirective,WebhooksController,bindMethods,debounce,mixOf,module,taiga,timeout,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,mixOf=this.taiga.mixOf,bindMethods=this.taiga.bindMethods,debounce=this.taiga.debounce,timeout=this.taiga.timeout,module=angular.module("taigaAdmin"),WebhooksController=function(superClass){function WebhooksController(scope,repo,rs,params,location,navUrls,appTitle){var promise;this.scope=scope,this.repo=repo,this.rs=rs,this.params=params,this.location=location,this.navUrls=navUrls,this.appTitle=appTitle,bindMethods(this),this.scope.sectionName="Webhooks",this.scope.project={},promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.appTitle.set("Webhooks - "+_this.scope.project.name)}}(this)),promise.then(null,this.onInitialDataError.bind(this)),this.scope.$on("webhooks:reload",this.loadWebhooks)}return extend(WebhooksController,superClass),WebhooksController.$inject=["$scope","$tgRepo","$tgResources","$routeParams","$tgLocation","$tgNavUrls","$appTitle"],WebhooksController.prototype.loadWebhooks=function(){return this.rs.webhooks.list(this.scope.projectId).then(function(_this){return function(webhooks){return _this.scope.webhooks=webhooks}}(this))},WebhooksController.prototype.loadProject=function(){return this.rs.projects.get(this.scope.projectId).then(function(_this){return function(project){return project.i_am_owner||_this.location.path(_this.navUrls.resolve("permission-denied")),_this.scope.project=project,_this.scope.$emit("project:loaded",project),project}}(this))},WebhooksController.prototype.loadInitialData=function(){var promise;return promise=this.repo.resolve({pslug:this.params.pslug}).then(function(_this){return function(data){return _this.scope.projectId=data.project,data}}(this)),promise.then(function(_this){return function(){return _this.loadProject()}}(this)).then(function(_this){return function(){return _this.loadWebhooks()}}(this))},WebhooksController}(mixOf(taiga.Controller,taiga.PageMixin,taiga.FiltersMixin)),module.controller("WebhooksController",WebhooksController),WebhookDirective=function($rs,$repo,$confirm){var link;return link=function($scope,$el,$attrs){var cancel,openHistory,save,showEditMode,showVisualizationMode,updateLogs,updateShowHideHistoryText,webhook;return webhook=$scope.$eval($attrs.tgWebhook),updateLogs=function(){return $rs.webhooklogs.list(webhook.id).then(function(){return function(webhooklogs){var i,len,log,ref;for(i=0,len=webhooklogs.length;len>i;i++)log=webhooklogs[i],log.validStatus=200<=(ref=log.status)&&300>ref,log.prettySentHeaders=_.map(_.pairs(log.request_headers),function(arg){var header,value;return header=arg[0],value=arg[1],header+": "+value}).join("\n"),log.prettySentData=JSON.stringify(log.request_data),log.prettyDate=moment(log.created).format("DD MMM YYYY [at] hh:mm:ss");return webhook.logs_counter=webhooklogs.length,webhook.logs=webhooklogs,updateShowHideHistoryText()}}(this))},updateShowHideHistoryText=function(){var historyElement,textElement;return textElement=$el.find(".toggle-history"),historyElement=textElement.parents(".single-webhook-wrapper").find(".webhooks-history"),textElement.text(historyElement.hasClass("open")?"(Hide history)":"(Show history)")},showVisualizationMode=function(){return $el.find(".edition-mode").addClass("hidden"),$el.find(".visualization-mode").removeClass("hidden")},showEditMode=function(){return $el.find(".visualization-mode").addClass("hidden"),$el.find(".edition-mode").removeClass("hidden")},openHistory=function(){return $el.find(".webhooks-history").addClass("open")},cancel=function(){return showVisualizationMode(),$scope.$apply(function(){return webhook.revert()})},save=debounce(2e3,function(target){var form,promise;return form=target.parents("form").checksley(),form.validate()?(promise=$repo.save(webhook),promise.then(function(){return function(){return showVisualizationMode()}}(this)),promise.then(null,function(data){return $confirm.notify("error"),form.setErrors(data)})):void 0}),$el.on("click",".test-webhook",function(){return openHistory(),$rs.webhooks.test(webhook.id).then(function(){return function(){return updateLogs()}}(this))}),$el.on("click",".edit-webhook",function(){return showEditMode()}),$el.on("click",".cancel-existing",function(){return cancel()}),$el.on("click",".edit-existing",function(event){var target;return event.preventDefault(),target=angular.element(event.currentTarget),save(target)}),$el.on("keyup",".edition-mode input",function(event){var target;return 13===event.keyCode?(target=angular.element(event.currentTarget),save(target)):27===event.keyCode?(target=angular.element(event.currentTarget),cancel(target)):void 0}),$el.on("click",".delete-webhook",function(){var message,title;return title="Delete webhook",message="Webhook '"+webhook.name+"'",$confirm.askOnDelete(title,message).then(function(){return function(finish){var onError,onSucces;return onSucces=function(){return finish(),$scope.$emit("webhooks:reload")},onError=function(){return finish(!1),$confirm.notify("error")},$repo.remove(webhook).then(onSucces,onError)}}(this))}),$el.on("click",".toggle-history",function(event){var target;return target=angular.element(event.currentTarget),null==webhook.logs||0===webhook.logs.length?updateLogs().then(function(){return timeout(0,function(){return $el.find(".webhooks-history").toggleClass("open"),updateShowHideHistoryText()})}):($el.find(".webhooks-history").toggleClass("open"),$scope.$apply(function(){return updateShowHideHistoryText()}))}),$el.on("click",".history-single",function(event){var target;return target=angular.element(event.currentTarget),target.toggleClass("history-single-open"),target.siblings(".history-single-response").toggleClass("open")}),$el.on("click",".resend-request",function(event){var log,target;return target=angular.element(event.currentTarget),log=target.data("log"),$rs.webhooklogs.resend(log).then(function(){return function(){return updateLogs()}}(this))})},{link:link}},module.directive("tgWebhook",["$tgResources","$tgRepo","$tgConfirm","$tgLoading",WebhookDirective]),NewWebhookDirective=function($rs,$repo,$confirm){var link;return link=function($scope,$el,$attrs){var addWebhookDOMNode,formDOMNode,initializeNewValue,save,webhook;return webhook=$scope.$eval($attrs.tgWebhook),formDOMNode=$el.find(".new-webhook-form"),addWebhookDOMNode=$el.find(".add-webhook"),initializeNewValue=function(){return $scope.newValue={name:"",url:"",key:""}},initializeNewValue(),$scope.$watch("webhooks",function(webhooks){return null!=webhooks?0===webhooks.length?(formDOMNode.removeClass("hidden"),addWebhookDOMNode.addClass("hidden"),formDOMNode.find("input")[0].focus()):(formDOMNode.addClass("hidden"),addWebhookDOMNode.removeClass("hidden")):void 0}),save=debounce(2e3,function(){var form,promise;return form=formDOMNode.checksley(),form.validate()?($scope.newValue.project=$scope.project.id,promise=$repo.create("webhooks",$scope.newValue),promise.then(function(){return function(){return $scope.$emit("webhooks:reload"),initializeNewValue()}}(this)),promise.then(null,function(data){return $confirm.notify("error"),form.setErrors(data)})):void 0}),formDOMNode.on("click",".add-new",function(event){return event.preventDefault(),save()}),formDOMNode.on("keyup","input",function(event){return 13===event.keyCode?save():void 0}),formDOMNode.on("click",".cancel-new",function(){return $scope.$apply(function(){return initializeNewValue()})}),addWebhookDOMNode.on("click",function(){return formDOMNode.removeClass("hidden"),formDOMNode.find("input")[0].focus()})},{link:link}},module.directive("tgNewWebhook",["$tgResources","$tgRepo","$tgConfirm","$tgLoading",NewWebhookDirective]),GithubController=function(superClass){function GithubController(scope,repo,rs,params,appTitle){var promise;this.scope=scope,this.repo=repo,this.rs=rs,this.params=params,this.appTitle=appTitle,bindMethods(this),this.scope.sectionName="Github",this.scope.project={},promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.appTitle.set("Github - "+_this.scope.project.name)}}(this)),promise.then(null,this.onInitialDataError.bind(this))}return extend(GithubController,superClass),GithubController.$inject=["$scope","$tgRepo","$tgResources","$routeParams","$appTitle"],GithubController.prototype.loadModules=function(){return this.rs.modules.list(this.scope.projectId,"github").then(function(_this){return function(github){return _this.scope.github=github}}(this))},GithubController.prototype.loadProject=function(){return this.rs.projects.get(this.scope.projectId).then(function(_this){return function(project){return _this.scope.project=project,_this.scope.$emit("project:loaded",project),project}}(this))},GithubController.prototype.loadInitialData=function(){var promise;return promise=this.repo.resolve({pslug:this.params.pslug}).then(function(_this){return function(data){return _this.scope.projectId=data.project,data}}(this)),promise.then(function(_this){return function(){return _this.loadProject()}}(this)).then(function(_this){return function(){return _this.loadModules()}}(this))},GithubController}(mixOf(taiga.Controller,taiga.PageMixin,taiga.FiltersMixin)),module.controller("GithubController",GithubController),GitlabController=function(superClass){function GitlabController(scope,repo,rs,params,appTitle){var promise;this.scope=scope,this.repo=repo,this.rs=rs,this.params=params,this.appTitle=appTitle,bindMethods(this),this.scope.sectionName="Gitlab",this.scope.project={},promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.appTitle.set("Gitlab - "+_this.scope.project.name)}}(this)),promise.then(null,this.onInitialDataError.bind(this)),this.scope.$on("project:modules:reload",function(_this){return function(){return _this.loadModules()}}(this))}return extend(GitlabController,superClass),GitlabController.$inject=["$scope","$tgRepo","$tgResources","$routeParams","$appTitle"],GitlabController.prototype.loadModules=function(){return this.rs.modules.list(this.scope.projectId,"gitlab").then(function(_this){return function(gitlab){return _this.scope.gitlab=gitlab}}(this))},GitlabController.prototype.loadProject=function(){return this.rs.projects.get(this.scope.projectId).then(function(_this){return function(project){return _this.scope.project=project,_this.scope.$emit("project:loaded",project),project}}(this))},GitlabController.prototype.loadInitialData=function(){var promise;return promise=this.repo.resolve({pslug:this.params.pslug}).then(function(_this){return function(data){return _this.scope.projectId=data.project,data}}(this)),promise.then(function(_this){return function(){return _this.loadProject()}}(this)).then(function(_this){return function(){return _this.loadModules()}}(this))},GitlabController}(mixOf(taiga.Controller,taiga.PageMixin,taiga.FiltersMixin)),module.controller("GitlabController",GitlabController),BitbucketController=function(superClass){function BitbucketController(scope,repo,rs,params,appTitle){var promise;this.scope=scope,this.repo=repo,this.rs=rs,this.params=params,this.appTitle=appTitle,bindMethods(this),this.scope.sectionName="Bitbucket",this.scope.project={},promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.appTitle.set("Bitbucket - "+_this.scope.project.name)}}(this)),promise.then(null,this.onInitialDataError.bind(this)),this.scope.$on("project:modules:reload",function(_this){return function(){return _this.loadModules()}}(this))}return extend(BitbucketController,superClass),BitbucketController.$inject=["$scope","$tgRepo","$tgResources","$routeParams","$appTitle"],BitbucketController.prototype.loadModules=function(){return this.rs.modules.list(this.scope.projectId,"bitbucket").then(function(_this){return function(bitbucket){return _this.scope.bitbucket=bitbucket +}}(this))},BitbucketController.prototype.loadProject=function(){return this.rs.projects.get(this.scope.projectId).then(function(_this){return function(project){return _this.scope.project=project,_this.scope.$emit("project:loaded",project),project}}(this))},BitbucketController.prototype.loadInitialData=function(){var promise;return promise=this.repo.resolve({pslug:this.params.pslug}).then(function(_this){return function(data){return _this.scope.projectId=data.project,data}}(this)),promise.then(function(_this){return function(){return _this.loadProject()}}(this)).then(function(_this){return function(){return _this.loadModules()}}(this))},BitbucketController}(mixOf(taiga.Controller,taiga.PageMixin,taiga.FiltersMixin)),module.controller("BitbucketController",BitbucketController),SelectInputText=function(){var link;return link=function($scope,$el){return $el.on("click",".select-input-content",function(){return $el.find("input").select(),$el.find(".help-copy").addClass("visible")})},{link:link}},module.directive("tgSelectInputText",SelectInputText),GithubWebhooksDirective=function($repo,$confirm,$loading){var link;return link=function($scope,$el){var form,submit,submitButton;return form=$el.find("form").checksley({onlyOneErrorElement:!0}),submit=debounce(2e3,function(){return function(event){var promise;return event.preventDefault(),form.validate()?($loading.start(submitButton),promise=$repo.saveAttribute($scope.github,"github"),promise.then(function(){return $loading.finish(submitButton),$confirm.notify("success")}),promise.then(null,function(data){return $loading.finish(submitButton),form.setErrors(data),data._error_message?$confirm.notify("error",data._error_message):void 0})):void 0}}(this)),submitButton=$el.find(".submit-button"),$el.on("submit","form",submit)},{link:link}},module.directive("tgGithubWebhooks",["$tgRepo","$tgConfirm","$tgLoading",GithubWebhooksDirective]),GitlabWebhooksDirective=function($repo,$confirm,$loading){var link;return link=function($scope,$el){var form,submit,submitButton;return form=$el.find("form").checksley({onlyOneErrorElement:!0}),submit=debounce(2e3,function(){return function(event){var promise;return event.preventDefault(),form.validate()?($loading.start(submitButton),promise=$repo.saveAttribute($scope.gitlab,"gitlab"),promise.then(function(){return $loading.finish(submitButton),$confirm.notify("success"),$scope.$emit("project:modules:reload")}),promise.then(null,function(data){return $loading.finish(submitButton),form.setErrors(data),data._error_message?$confirm.notify("error",data._error_message):void 0})):void 0}}(this)),submitButton=$el.find(".submit-button"),$el.on("submit","form",submit)},{link:link}},module.directive("tgGitlabWebhooks",["$tgRepo","$tgConfirm","$tgLoading",GitlabWebhooksDirective]),BitbucketWebhooksDirective=function($repo,$confirm,$loading){var link;return link=function($scope,$el){var form,submit,submitButton;return form=$el.find("form").checksley({onlyOneErrorElement:!0}),submit=debounce(2e3,function(){return function(event){var promise;return event.preventDefault(),form.validate()?($loading.start(submitButton),promise=$repo.saveAttribute($scope.bitbucket,"bitbucket"),promise.then(function(){return $loading.finish(submitButton),$confirm.notify("success"),$scope.$emit("project:modules:reload")}),promise.then(null,function(data){return $loading.finish(submitButton),form.setErrors(data),data._error_message?$confirm.notify("error",data._error_message):void 0})):void 0}}(this)),submitButton=$el.find(".submit-button"),$el.on("submit","form",submit)},{link:link}},module.directive("tgBitbucketWebhooks",["$tgRepo","$tgConfirm","$tgLoading",BitbucketWebhooksDirective]),ValidOriginIpsDirective=function(){var link;return link=function($scope,$el,$attrs,$ngModel){return $ngModel.$parsers.push(function(value){return value=$.trim(value),""===value?[]:value.split(",")})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgValidOriginIps",ValidOriginIpsDirective)}.call(this),function(){var BindHtmlDirective,BindOnceAltDirective,BindOnceBindDirective,BindOnceHrefDirective,BindOnceHtmlDirective,BindOnceRefDirective,BindOnceSrcDirective,BindOnceTitleDirective,BindTitleDirective,bindOnce,module;bindOnce=this.taiga.bindOnce,BindOnceBindDirective=function(){var link;return link=function($scope,$el,$attrs){return bindOnce($scope,$attrs.tgBoBind,function(val){return $el.text(val)})},{link:link}},BindOnceHtmlDirective=function(){var link;return link=function($scope,$el,$attrs){return bindOnce($scope,$attrs.tgBoHtml,function(val){return $el.html(val)})},{link:link}},BindOnceRefDirective=function(){var link;return link=function($scope,$el,$attrs){return bindOnce($scope,$attrs.tgBoRef,function(val){return $el.html("#"+val+" ")})},{link:link}},BindOnceSrcDirective=function(){var link;return link=function($scope,$el,$attrs){return bindOnce($scope,$attrs.tgBoSrc,function(val){return $el.attr("src",val)})},{link:link}},BindOnceHrefDirective=function(){var link;return link=function($scope,$el,$attrs){return bindOnce($scope,$attrs.tgBoHref,function(val){return $el.attr("href",val)})},{link:link}},BindOnceAltDirective=function(){var link;return link=function($scope,$el,$attrs){return bindOnce($scope,$attrs.tgBoAlt,function(val){return $el.attr("alt",val)})},{link:link}},BindOnceTitleDirective=function(){var link;return link=function($scope,$el,$attrs){return bindOnce($scope,$attrs.tgBoTitle,function(val){return $el.attr("title",val)})},{link:link}},BindTitleDirective=function(){var link;return link=function($scope,$el,$attrs){return $scope.$watch($attrs.tgTitleHtml,function(val){return null!=val?$el.attr("title",val):void 0})},{link:link}},BindHtmlDirective=function(){var link;return link=function($scope,$el,$attrs){return $scope.$watch($attrs.tgBindHtml,function(val){return null!=val?$el.html(val):void 0})},{link:link}},module=angular.module("taigaBase"),module.directive("tgBoBind",BindOnceBindDirective),module.directive("tgBoHtml",BindOnceHtmlDirective),module.directive("tgBoRef",BindOnceRefDirective),module.directive("tgBoSrc",BindOnceSrcDirective),module.directive("tgBoHref",BindOnceHrefDirective),module.directive("tgBoAlt",BindOnceAltDirective),module.directive("tgBoTitle",BindOnceTitleDirective),module.directive("tgBindTitle",BindTitleDirective),module.directive("tgBindHtml",BindHtmlDirective)}.call(this),function(){var ConfigurationService,module;ConfigurationService=function(){function ConfigurationService(){this.config=window.taigaConfig}return ConfigurationService.prototype.get=function(key,defaultValue){return null==defaultValue&&(defaultValue=null),_.has(this.config,key)?this.config[key]:defaultValue},ConfigurationService}(),module=angular.module("taigaBase"),module.service("$tgConfig",ConfigurationService)}.call(this),function(){var ContribController,module,taigaContribPlugins,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taigaContribPlugins=this.taigaContribPlugins=this.taigaContribPlugins||[],ContribController=function(superClass){function ContribController(rootScope,scope,params,repo,rs,confirm,appTitle){var promise;this.rootScope=rootScope,this.scope=scope,this.params=params,this.repo=repo,this.rs=rs,this.confirm=confirm,this.appTitle=appTitle,this.scope.adminPlugins=_.where(this.rootScope.contribPlugins,{type:"admin"}),this.scope.currentPlugin=_.first(_.where(this.scope.adminPlugins,{slug:this.params.plugin})),this.scope.pluginTemplate="contrib/"+this.scope.currentPlugin.slug,this.scope.projectSlug=this.params.pslug,promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.appTitle.set(_this.scope.project.name)}}(this)),promise.then(null,function(_this){return function(){return _this.confirm.notify("error")}}(this))}return extend(ContribController,superClass),ContribController.$inject=["$rootScope","$scope","$routeParams","$tgRepo","$tgResources","$tgConfirm","$appTitle"],ContribController.prototype.loadProject=function(){return this.rs.projects.get(this.scope.projectId).then(function(_this){return function(project){return _this.scope.project=project,_this.scope.$emit("project:loaded",project),_this.scope.$broadcast("project:loaded",project),project}}(this))},ContribController.prototype.loadInitialData=function(){var promise;return promise=this.repo.resolve({pslug:this.params.pslug}).then(function(_this){return function(data){return _this.scope.projectId=data.project,data}}(this)),promise.then(function(_this){return function(){return _this.loadProject()}}(this))},ContribController}(taiga.Controller),module=angular.module("taigaBase"),module.controller("ContribController",ContribController)}.call(this),function(){var module;module=angular.module("taigaPlugins",["ngRoute"])}.call(this),function(){var configure,module,taiga;taiga=this.taiga,module=angular.module("taigaPlugins"),configure=function($routeProvider){return $routeProvider.when("/humans.html",{templateUrl:"/plugins/humanshtml/templates/humans.html"})},module.config(["$routeProvider",configure])}.call(this),function(){var TermsNoticeDirective,module,taiga,template;taiga=this.taiga,module=angular.module("taigaPlugins"),template=_.template('

\n By clicking "Sign up", you agree to our
\n
terms of service\n and\n privacy policy.\n

'),TermsNoticeDirective=function($config){var privacyPolicyUrl,templateFn,termsOfServiceUrl;return privacyPolicyUrl=$config.get("privacyPolicyUrl"),termsOfServiceUrl=$config.get("termsOfServiceUrl"),templateFn=function(){var ctx;return privacyPolicyUrl&&termsOfServiceUrl?(ctx={termsUrl:termsOfServiceUrl,privacyUrl:privacyPolicyUrl},template(ctx)):""},{scope:{},restrict:"AE",template:templateFn}},module.directive("tgTermsNotice",["$tgConfig",TermsNoticeDirective])}.call(this),angular.module("taigaBase").value("localesEn",{checksley:{defaultMessage:"This value seems to be invalid.","type-email":"This value should be a valid email.","type-url":"This value should be a valid url.","type-urlstrict":"This value should be a valid url.","type-number":"This value should be a valid number.","type-digits":"This value should be digits.","type-dateIso":"This value should be a valid date (YYYY-MM-DD).","type-alphanum":"This value should be alphanumeric.","type-phone":"This value should be a valid phone number.",notnull:"This value should not be null.",notblank:"This value should not be blank.",required:"This value is required.",regexp:"This value seems to be invalid.",min:"This value should be greater than or equal to %s.",max:"This value should be lower than or equal to %s.",range:"This value should be between %s and %s.",minlength:"This value is too short. It should have %s characters or more.",maxlength:"This value is too long. It should have %s characters or less.",rangelength:"This value length is invalid. It should be between %s and %s characters long.",mincheck:"You must select at least %s choices.",maxcheck:"You must select %s choices or less.",rangecheck:"You must select between %s and %s choices.",equalto:"This value should be the same."},common:{subject:"Subject",save:"Save",blocked:"Blocked",cancel:"Cancel",status:"Status","new-bulk":"New bulk insert","one-item-line":"One item per line..."},pagination:{next:"Next",prev:"Previous"},"markdown-editor":{"heading-1":"First Level Heading","heading-2":"Second Level Heading","heading-3":"Third Level Heading",bold:"Bold",italic:"Italic",strike:"Strike","bulleted-list":"Bulleted List","numeric-list":"Numeric List",picture:"Picture",link:"Link",quotes:"Quotes","code-block":"Code Block / Code",preview:"Preview",help:"Help",placeholder:"Your title here...","link-placeholder":"Your text to link here..."},us:{"title-new":"New User Story","team-requirement":"Team Requirement","client-requirement":"Client Requirement"}}); //# sourceMappingURL=app.js.map \ No newline at end of file diff --git a/dist/js/app.js.map b/dist/js/app.js.map index 682a200..e583d47 100644 --- a/dist/js/app.js.map +++ b/dist/js/app.js.map @@ -1 +1 @@ -{"version":3,"sources":["app.js","classes.js","utils.js","controllerMixins.js","admin.js","auth.js","backlog.js","base.js","common.js","events.js","feedback.js","integrations.js","issues.js","kanban.js","locales.js","nav.js","projects.js","related-tasks.js","resources.js","search.js","taskboard.js","tasks.js","team.js","user-settings.js","userstories.js","wiki.js","analytics.js","attachments.js","bind-scope.js","components.js","confirm.js","custom-field-values.js","estimation.js","filters.js","history.js","importer.js","lightboxes.js","loader.js","loading.js","popovers.js","raven-logger.js","tags.js","wisiwyg.js","main.js","sortable.js","sprints.js","charts.js","detail.js","list.js","memberships.js","project-profile.js","project-values.js","roles.js","third-parties.js","bind.js","conf.js","contrib.js","http.js","i18n.js","location.js","model.js","navurls.js","repository.js","storage.js","urls.js","custom-attributes-values.js","custom-attributes.js","invitations.js","mdrender.js","modules.js","notify-policies.js","webhooklogs.js","webhooks.js","change-password.js","notifications.js","humanshtml/humanshtml.js","terms/terms.js","locales.en.js"],"names":["configure","init","module","modules","taiga","this","taigaContribPlugins","generateHash","components","_","map","x","JSON","stringify","hex_sha1","join","generateUniqueSessionIdentifier","date","randomNumber","Date","getTime","Math","floor","random","sessionId","$routeProvider","$locationProvider","$httpProvider","$provide","$tgEventsProvider","tgLoaderProvider","$compileProvider","authHttpIntercept","defaultHeaders","versionCheckHttpIntercept","when","templateUrl","resolve","loader","add","reloadOnSearch","redirectTo","params","pslug","otherwise","html5Mode","enabled","requireBase","Content-Type","Accept-Language","X-Session-Id","defaults","headers","patch","post","put","get","setSessionId","$q","$location","$navUrls","$lightboxService","httpResponseError","response","nextPath","status","closeAll","path","replace","url","search","reject","responseError","factory","interceptors","push","$confirm","versionErrorMsg","data","version","notify","window","checksley","updateValidators","linewidth","val","width","lines","valid","nl2br","split","every","line","length","updateMessages","debugInfoEnabled","taigaConfig","debugInfo","$log","$i18n","$config","$rootscope","$auth","$events","$analytics","initialize","debug","contribPlugins","adminPlugins","where","type","isAuthenticated","setupConnection","concat","plugin","angular","config","run","call","TaigaBase","TaigaController","TaigaService","extend","child","parent","ctor","constructor","key","hasProp","prototype","__super__","hasOwnProperty","bind","fn","me","apply","arguments","superClass","onInitialDataError","xhr","location","navUrls","q","Base","Service","Controller","bindMethods","bindOnce","cancelTimeout","debounce","debounceLeading","groupBy","joinStr","mixOf","scopeDefer","sizeFormat","slugify","startswith","timeout","toString","toggleText","trim","unslugify","indexOf","item","i","l","slice","str","breakTag","object","dependencies","methods","keys","forIn","value","bindAll","scope","attr","continuation","delBind","$eval","$watch","Mixed","base","method","mixin","mixins","name","ref","char","capitalize","element","texts","nextTextPosition","text","coll","pred","len","result","wait","setTimeout","timeoutVar","clearTimeout","func","defer","$apply","isNumber","isString","isPlainObject","isUndefined","leading","trailing","str1","str2","startsWith","input","precision","number","size","units","isNaN","parseFloat","isFinite","log","pow","toFixed","FiltersMixin","PageMixin","fillUsersAndRoles","users","roles","activeUsers","availableRoles","filter","user","is_active","sortBy","activeUsersById","e","id","usersById","project","memberships","uniq","computableRoles","contains","loadUsersAndRoles","promise","all","rs","projects","usersList","projectId","rolesList","then","_this","results","selectFilter","load","existing","compact","isInCurrentRouteParams","noreload","replaceFilter","replaceAllFilters","filters","unselectFilter","newValues","parsedValues","isEmpty","AuthService","CancelAccountDirective","ChangeEmailDirective","ChangePasswordFromRecoveryDirective","ForgotPasswordDirective","InvitationDirective","LoginDirective","PublicRegisterMessageDirective","RegisterDirective","rootscope","storage","model","http","urls","$inject","getUser","userData","make_model","setUser","auth","$broadcast","default_language","set","getAttrs","clear","remove","setToken","token","getToken","removeToken","login","clone","auth_token","logout","register","getInvitation","invitations","acceptInvitiationWithNewUser","acceptInvitiationWithExistingUser","forgotPassword","changePasswordFromRecovery","changeEmail","cancelAccount","service","templates","template","templateFn","publicRegisterEnabled","restrict","directive","$routeParams","link","$scope","$el","onError","onSuccess","submit","nextUrl","event","form","loginFormType","preventDefault","Form","find","validate","username","password","on","onErrorSubmit","onSuccessSubmit","onlyOneErrorElement","trackEvent","_error_message","setErrors","success","email","$params","tokenInParams","loginForm","onErrorSubmitLogin","onErrorSubmitRegister","onSuccessSubmitLogin","onSuccessSubmitRegister","registerForm","submitLogin","submitRegister","invitation","dataLogin","project_slug","escape","project_name","dataRegister","$repo","$model","email_token","queryOne","cancel_token","TaigaMainDirective","$window","onresize","home","error","not-found","permission-denied","forgot-password","change-password","change-email","cancel-account","create-project","profile","project-backlog","project-taskboard","project-kanban","project-issues","project-search","project-userstories-detail","project-tasks-detail","project-issues-detail","project-wiki","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-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-contrib","user-settings-user-profile","user-settings-user-change-password","user-settings-user-avatar","user-settings-mail-notifications","$navurls","update","AnimationFrame","AppTitle","CheckPermissionDirective","ClassPermissionDirective","LimitLineLengthDirective","ProjectUrl","Qqueue","SelectedText","Template","ToggleCommentDirective","$document","getSelection","selection","createRange","render","permission","my_permissions","removeClass","$attrs","addClass","tgCheckPermission","$on","off","checkPermissions","tgClassPermissionWatchAction","unbindWatcher","className","negation","classes","animationFrame","performAnimation","tail","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","shift","$","ctx","slug","is_backlog_activated","is_kanban_activated","is_wiki_activated","is_issues_activated","maxColsPerLine","parseInt","code","keyCode","each","index","substring","deferred","lastPromise","qqueue","bindAdd","args","$templateCache","lodash","tmp","EventsProvider","EventsService","win","subscriptions","connected","pendingMessages","WebSocket","info","loc","scheme","stopExistingConnection","protocol","ltrim","host","ws","addEventListener","onOpen","onMessage","onClose","removeEventListener","close","serialize","message","isObject","sendMessage","messages","msg","send","subscribe","routingKey","callback","subscription","cmd","routing_key","unsubscribe","parse","$get","$win","$conf","provider","FeedbackDirective","$loading","submitButton","start","create","feedback","finish","open","focus","ProjectMenuDirective","ProjectsNavigationController","ProjectsNavigationDirective","navurls","projectUrl","loadInitialData","console","listByMember","filteredProjects","filterText","newProject","filterProjects","toLowerCase","controller","$timeout","tgLoader","$compile","$template","baseTemplate","hideMenu","loadingStart","overlay","projectsTemplate","difftime","timeoutValue","is","one","document","body","css","hide","disablePreventLoading","$ctrls","$ctrl","renderProjects","html","$emit","which","hasClass","show","toggleClass","currentUrl","target","currentTarget","prop","absUrl","preventLoading","require","$tgAuth","getSectionName","mainTemplate","menuEntriesTemplate","renderMainMenu","renderMenuEntries","videoConferenceUrl","sectionName","oldSectionName","targetScope","container","dom","section","feedbackEnabled","replaceWith","baseUrl","videoconferences","videoconferences_salt","popover","listener","stopPropagation","videoconferenceUrl","RelatedTaskAssignedToInlineEditionDirective","RelatedTaskCreateButtonDirective","RelatedTaskCreateFormDirective","RelatedTaskRowDirective","RelatedTasksDirective","templateEdit","templateView","renderEdit","renderView","saveTask","task","subject","save","$modelValue","perms","modify_task","delete_task","select","title","askOnDelete","ngModel","$tgmodel","newTask","assigned_to","createTask","default_task_status","us","$rs","loadTasks","tasks","list","usId","autoSave","notAutoSave","updateRelatedTask","member","imgurl","photo","full_name_display","tgRelatedTaskAssignedToInlineEdition","unbind","userId","updatedRelatedTask","ResourcesService","initResources","initUrls","auth-register","permissions","notify-policies","bulk-create-memberships","milestones","userstories","bulk-create-us","bulk-update-us-backlog-order","bulk-update-us-sprint-order","bulk-update-us-kanban-order","userstories-restore","bulk-create-tasks","bulk-update-task-taskboard-order","tasks-restore","issues","bulk-create-issues","issues-restore","wiki","wiki-restore","wiki-links","choices/userstory-statuses","choices/userstory-statuses/bulk-update-order","choices/points","choices/points/bulk-update-order","choices/task-statuses","choices/task-statuses/bulk-update-order","choices/issue-statuses","choices/issue-statuses/bulk-update-order","choices/issue-types","choices/issue-types/bulk-update-order","choices/priorities","choices/priorities/bulk-update-order","choices/severities","choices/severities/bulk-update-order","sites","project-templates","site-members","site-projects","users-password-recovery","users-change-password-from-recovery","users-change-password","users-change-email","users-cancel-account","user-storage","resolver","userstory-statuses","points","task-statuses","issue-statuses","issue-types","priorities","severities","project-modules","webhooks","webhooks-test","webhooklogs","webhooklogs-resend","history/us","history/issue","history/task","history/wiki","attachments/us","attachments/issue","attachments/task","attachments/wiki_page","custom-attributes/userstory","custom-attributes/issue","custom-attributes/task","custom-attributes-values/userstory","custom-attributes-values/issue","custom-attributes-values/task","exporter","importer","userstories-csv","tasks-csv","issues-csv","$urls","providers","toArray","SearchBoxDirective","SearchController","SearchDirective","scope1","repo","appTitle","loadSearchData","searchTerm","t","term","pageLoaded","loadFilters","defered","loadProject","getBySlug","issueStatusById","issue_statuses","taskStatusById","task_statuses","severityById","priorityById","membersById","usStatusById","us_statuses","searchResults","$route","reload","$templatecache","$routeparams","linkTable","getActiveSection","lastSeatchResults","markSectionTabActive","renderFilterTabs","renderTableContent","tabsDom","maxVal","selectedSectionData","selectedSectionName","wikipages","oldElements","oldScope","children","$destroy","$new","parseHTML","activeSection","sectionData","searchText","AnalyticsService","doc","conf","initialized","accountId","pageEvent","trackRoutes","ignoreFirstPageLoad","injectAnalytics","ga","getUrl","trackPage","s","o","g","r","a","m","createElement","getElementsByTagName","async","src","parentNode","insertBefore","page","category","action","label","AttachmentDirective","AttachmentsController","AttachmentsDirective","confirm","objectId","uploadingAttachments","attachments","attachmentsCount","deprecatedAttachmentsCount","showDeprecated","loadAttachments","urlname","updateCounters","is_deprecated","_createAttachment","attachment","urlName","isCreatedRightNow","splice","createAttachments","promises","addUploadingAttachments","union","reorderAttachment","newIndex","oldIndex","order","updateAttachment","saveAttachments","saveAll","j","revert","removeAttachment","filterAttachments","$templates","showSizeInfo","tdom","sortable","items","handle","containment","dropOnEmpty","scroll","tolerance","placeholder","ui","attach","files","maxFileSize","maxFileSizeMsg","controllerAs","saveAttachment","edit","modifyPermission","created_date","moment","format","description","isDeprecated","tgAttachment","BindScope","jQuery","AssignedToDirective","BlockButtonDirective","CreatedByDisplayDirective","DateRangeDirective","DateSelectorDirective","DeleteButtonDirective","EditableDescriptionDirective","EditableSubjectDirective","ListItemAssignedtoDirective","ListItemIssueStatusDirective","ListItemPriorityDirective","ListItemSeverityDirective","ListItemTaskStatusDirective","ListItemTypeDirective","ListItemUsStatusDirective","SprintProgressBarDirective","TgMainTitleDirective","TgProgressBarDirective","WatchersDirective","renderRange","first","second","endDate","initDate","tgDateRange","valFirst","valSecond","selectedDate","picker","Pikaday","field","onSelect","setDate","renderProgress","percentage","visual_percentage","tgSprintProgressbar","sprint","closedPoints","totalPoints","closed_points","total_points","round","owner","$qqueue","deleteWatcher","isEditable","renderWatchers","ref1","requiredPerm","watchers","$setViewValue","watcherId","watcherIds","pull","renderAssignedTo","issue","assignedTo","assignedToId","ask","instance","is_blocked","onDeleteGoToUrl","onDeleteTitle","subtitle","click","$selectedText","noDescriptionMegEditMode","noDescriptionMegReadMode","noDescriptionMsg","tgListitemIssueStatus","tgListitemTaskStatus","tgListitemUsStatus","tgListitemAssignedto","full_name","domNode","priority","color","tgListitemPriority","severity","tgListitemSeverity","issueTypeById","tgListitemType","el","tgProgressBar","max","min","projectName","ConfirmService","NOTIFICATION_MSG","light-error","lightboxService","loading","lightboxSelector","ok","askChoice","choices","replacement","warning","choicesField","append","selected","stop","percent","time","selector","tsem","CustomAttributeValueDirective","CustomAttributesValuesController","CustomAttributesValuesDirective","customAttributes","customAttributesValues","loadCustomAttributesValues","getAttributeValue","attribute","attributeValue","attributes_values","updateAttributeValue","attributesValues","$storage","collapsedHash","collapsed","hash","requiredEditionPerm","saveAttributeValue","editable","tgCustomAttributeValue","EstimationsService","LbUsEstimationDirective","UsEstimationDirective","$tgEstimationsService","$rootScope","estimationProcess","onSelectedPointForRole","calculateTotalPoints","calculateRoles","roleId","pointId","EstimationProcess","pointsTemplate","$el1","us1","project1","bindClickEvents","pointsById","notNullValues","values","v","reduce","acc","num","role","pointObj","renderPointsSelector","siblings","horizontalList","maxPointLength","point","some","horizontal","closest","defaultFilter","momentFormat","momentFromNow","yesNoFilter","defaultValue","without_suffix","fromNow","HistoryController","HistoryDirective","loadHistory","history","historyResult","values_diff","description_diff","description_html","blocked_note_diff","blocked_note","blocked_note_html","comments","comment","deleteComment","activityId","undeleteComment","templateActivity","templateBase","templateBaseEntries","templateChangeAttachment","templateChangeDiff","templateChangeGeneric","templateChangeList","templateChangePoints","templateDeletedComment","countChanges","formatChange","getHumanizedFieldName","getUserAvatar","getUserFullName","renderActivity","renderAttachmentEntry","renderChange","renderChangeEntries","renderChangeEntry","renderChangesHelperText","renderComment","renderComments","renderCustomAttributesEntry","renderHistory","showAllActivity","showAllComments","humanizedFieldNames","is_closed","finish_date","client_requirement","team_requirement","milestone","user_story","is_iocaine","change","isArray","changes","diff","filename","from","to","flatten","customAttrsChanges","added","removed","difference","ref2","delete_comment_date","delete_comment_user","deleteCommentDate","deleteCommentUser","comment_html","canRestoreComment","pk","avatar","userFullName","creationDate","created_at","changesText","mode","canDeleteComment","entries","totalEntries","showMore","totalComments","last","totalChanges","parents","ngmodel","ImportProjectButtonDirective","trigger","file","errorMsg","AssignedToLightboxDirective","BlockLightboxDirective","BlockingMessageInputDirective","CreateBulkUserstoriesDirective","CreateEditUserstoryDirective","LightboxDirective","LightboxKeyboardNavigationService","LightboxService","WatchersLightboxDirective","docEl","lightboxContent","not","removeAttr","lightboxEl","dispatch","activeElement","next","prev","$tgrepo","block","unblock","finishCallback","watch","isNew","statusList","usStatusList","is_archived","tags","broadcastEvent","keydown","statusId","bulk","bulkCreate","lightboxKeyboardNavigationService","closeLightbox","filterUsers","normalizeString","selectedItem","selectedUser","usersTemplate","string","normalizedString","toUpperCase","partial","searchingText","usersSearch","getFilteredUsers","_filterUsers","Loader","LoaderDirective","onStart","onEnd","startCurrentPageLoader","reset","defaultConfig","forceDisabled","minTime","merge","startLoadTime","force","endTime","TgLoadingService","oldContent","RelatedTaskStatusDirective","UsStatusDirective","usStatusDom","usStatusDomParent","tgUsStatus","onUpdate","statuses","selectionTemplate","updateTaskStatus","taskStatusDom","taskStatusDomParent","tgRelatedTaskStatus","closePopover","isVisible","docViewBottom","docViewLeft","docViewRight","docViewTop","docViewWidth","elemBottom","elemLeft","elemRight","elemTop","elemWidth","display","visibility","scrollTop","height","offset","top","left","fadeOut","fadeIn","ExceptionHandlerFactory","ravenConfig","Raven","install","exception","captureException","ColorizeTagsDirective","LbTagLineDirective","TagLineDirective","TagsDirective","formatter","parser","$formatters","$parsers","backlog","kanban","taskboard","srcTags","tgColorizeTagsType","sort","tag","tags_colors","tgColorizeTags","COMMA_KEY","ENTER_KEY","templateTags","addValue","deleteValue","hideSaveButton","removeInputLastCharacter","renderTags","resetInput","saveInputTag","showSaveButton","tagsColors","style","autocomplete","inputValue","positioningFunction","position","elements","menu","source","my","using","ESC_KEY","hideAddTagButton","hideAddTagButtonText","hideInput","renderInReadModeOnly","showAddTagButton","showAddTagButtonText","showInput","blur","tgMarkitupDirective","$tr","previewTemplate","addLine","closePreviewMode","markdownSettings","markdownTitle","prepareUrlFormatting","preview","previewDomNode","setCaretPosition","urlFormatting","class","markItUpDomNode","markdownDomNode","mdrender","markdown","textarea","caretPosition","range","scrollRelation","totalLines","createTextRange","move","selectionStart","setSelectionRange","scrollHeight","nline","cursorPosition","nameSpace","onShiftEnter","keepDefault","openWith","onEnter","afterInsert","cursorLine","emptyListItem","lastLine","markdownCaretPositon","match","newLineContent","markupSet","placeHolder","closeWith","markItUp","separator","beforeInsert","indices","regex","exec","donotparse","endIndex","startIndex","heading","n","BacklogFiltersDirective","templateSelected","initializeSelectedFilters","renderFilters","renderSelectedFilters","selectQFilter","selectedFilters","showCategories","showFilters","toggleFilterSelection","f","currentFiltersType","loadUserstories","CreateEditSprint","createSprint","hasErrors","estimated_start","estimated_finish","newSprint","copy","setAttr","sprintsCounter","__all__","milestonesCounter","estimatedFinish","estimatedStart","lastSprint","lastSprintNameDom","sprints","BacklogController","BacklogDirective","TgBacklogProgressBarDirective","UsPointsDirective","UsRolePointsSelectorDirective","tgBacklogGraphDirective","params1","events","analytics","showTags","activeFilters","initializeEventHandlers","getShowTags","loadProjectStats","loadSprints","moveUs","loadClosedSprints","unloadClosedSprints","initializeSubscription","routingKey1","routingKey2","toggleShowTags","storeShowTags","toggleActiveFilters","stats","completedPercentage","refreshTagsColors","closedSprints","closed","user_stories","openSprints","reverse","sprintsById","resetFilters","selectedStatuses","selectedTags","filtersQ","filterGrp","httpParams","getUrlFilters","storeQueryParams","listUnassigned","setSearchDataFilters","filterVisibleUserstories","generateFilters","loadBacklog","totalClosedMilestones","total_closed_milestones","visibleUserstories","isFilterSelected","searchdata","Object","prepareBulkUpdateData","uses","us_id","resortUserStories","isModified","usList","newUsIndex","newSprintId","len1","len2","oldSprintId","Array","bulkUpdateBacklogOrder","bulkUpdateSprintOrder","len3","oldSprint","urlfilters","results1","pick","plainStatuses","plainTags","countBy","k","obj","count","editUserStory","deleteUserStory","without","addNewUs","default_us_status","addNewSprint","doomLineTemplate","linkDoomLine","linkFilters","linkToolbar","showHideFilter","showHideTags","addDoomLineDom","getUsItems","reloadDoomLine","removeDoomlineDom","current_sum","domElement","assigned_points","before","rowElements","moveToCurrentSprint","selectedUss","extraPoints","totalExtraPoints","ussCurrent","moveToCurrentSprintDom","selectedUsDom","ussDom","ussToMove","itemScope","elm","sidebar","filtersSearch","disableSelection","numberOfRoles","roleName","rolScope","$tgTemplate","rolesTemplate","bindClickElements","filteringRoleId","renderRolesSelector","selectedRoleId","updatingSelectedRoleId","tgBacklogUsPoints","popRolesDom","redrawChart","dataToDraw","client_increment_line","colors","evolution_line","milestonesRange","optimal_line","options","team_increment_line","zero_line","zip","fillColor","ml","optimal","evolution","grid","borderWidth","right","bottom","borderColor","hoverable","xaxis","ticks","axisLabel","axisLabelUseCanvas","axisLabelFontSizePixels","axisLabelFontFamily","axisLabelPadding","tickFormatter","series","shadowSize","fill","radius","lineWidth","tooltip","tooltipOpts","content","xval","yval","flotItem","seriesIndex","abs","empty","plot","adjustPercentaje","projectPointsPercentaje","closedPointsPercentaje","adjusted","tgBacklogProgressBar","definedPoints","defined_points","BacklogEmptySortableDirective","BacklogSortableDirective","SprintSortableDirective","deleteElement","$tgConfirm","getUsIndex","filterError","$translate","instant","cancel","connectWith","cursorAt","itemIndex","itemUs","BacklogSprintDirective","BacklogSprintHeaderDirective","ToggleExcludeClosedSprintsVisualization","refreshSprintTableHeight","slideOptions","sprintTableMinHeight","toggleSprint","duration","easing","sprintTable","sprintArrow","tgBacklogSprint","slideToggle","estimatedDateRange","taskboardUrl","excludeClosedSprints","loadingElm","after","SprintGraphDirective","days","day","unshift","d","optimal_points","open_points","tickSize","daysNames","yaxis","formattedDate","roundedValue","CreateBulkTasksDirective","CreateEditTaskDirective","sprintId","TaskboardController","TaskboardDirective","TaskboardSquishColumnDirective","TaskboardTaskDirective","TaskboardUserDirective","rs1","loadTaskboard","taskMove","loadSprintStats","loadSprint","pointsList","roleById","taskStatusList","completedPointsSum","remainingPointsSum","remainingTasks","totalPointsSum","res","completed_points","total_tasks","completed_tasks","openTasks","usTasks","sslug","refreshTasksOrder","resortTasks","bulkUpdateTaskTaskboardOrder","task_id","taskboard_order","addNewTask","editTaskAssignedTo","tableBodyDom","tableHeaderDom","scrollLeft","avatarWidth","maxColumnWidth","getCeilWidth","recalculateStatusColumnWidth","recalculateTaskboardWidth","refreshTaskboardTableWidth","setStatusColumnWidth","statusesFolded","getStatusColumnModes","usFolded","getUsRowModes","foldStatus","storeStatusColumnModes","foldUs","storeUsRowModes","tasksMatrixSize","sqrt","column","columnWidths","columns","totalWidth","outerWidth","total","statusFoldedWidth","forEach","clickable","username_label","assign","TaskboardSortableDirective","itemEl","newParentScope","oldParentScope","itemTask","newStatusId","newUsId","oldStatusId","oldUsId","parentEl","st","KanbanArchivedStatusHeaderDirective","KanbanArchivedStatusIntroDirective","KanbanController","KanbanDirective","KanbanSquishColumnDirective","KanbanUserDirective","KanbanUserstoryDirective","KanbanWipLimitDirective","defaultViewMode","defaultViewModes","maximized","cardClass","minimized","statusViewModes","onAssignedToChanged","loadUserStoriesForStatus","hideUserStoriesForStatus","changeUsAssignedTo","userid","status__is_archived","listAll","usByStatus","us_archived","loadKanban","generateStatusViewModes","storedStatusViewModes","getStatusViewModes","has","storeStatusViewModes","updateStatusViewMode","newViewMode","getCardClass","kanban_order","itemsToSave","bulkUpdateKanbanOrder","hideArchivedText","showArchivedText","hidden","tgKanbanArchivedStatusHeader","hiddenUserStoriexText","userStories","updateIntroText","tgKanbanArchivedStatusIntro","isArchived","userStoriesLoaded","updateTableWidth","folds","redrawWipLimit","tgKanbanWipLimit","wtid","tgKanbanUserAvatar","KanbanSortableDirective","IssueDetailController","IssuePriorityButtonDirective","IssueSeverityButtonDirective","IssueStatusButtonDirective","IssueStatusDisplayDirective","IssueTypeButtonDirective","PromoteIssueToUsButtonDirective","issueRef","issueref","initializeOnDeleteGoToUrl","loadIssue","statusById","typeById","issue_types","typeList","severityList","priorityList","getByRef","issueId","commentModel","neighbors","previous","previousUrl","typees","severityes","priorityes","generated_from_issue","CreateBulkIssuesDirective","CreateIssueDirective","default_issue_status","default_issue_type","default_priority","default_severity","IssueAssignedToInlineEditionDirective","IssueStatusInlineEditionDirective","IssuesController","IssuesDirective","IssuesFiltersDirective","loadIssues","getFilters","storeFilters","issueStatusList","issueTypes","getUrlFilter","loadMyFilters","getMyFilters","removeNotExistingFiltersFromUrl","currentSearch","existingValues","filterName","filterValue","splittedValues","intersection","markSelectedFilters","isSelected","omit","myFilters","filtersData","choicesFiltersFormat","tagsFilterFormat","usersFiltersFormat","unknownOption","reformatedUsers","unknownItem","u","byIdObject","createdBy","created_by","types","loadIssuesRequests","urlFilters","models","current","paginatedBy","saveCurrentFiltersTo","newFilter","storeMyFilters","deleteMyFilter","addNewIssue","addIssuesInBulk","linkOrdering","linkPagination","$pagEl","afterCurrent","atBegin","atEnd","beforeCurrent","getNumPages","renderPagination","numPages","cpage","pages","showPrevious","showNext","pagenum","colHeadElement","currentOrder","icon","finalOrder","newOrder","filterId","customFilterName","loadPromise","currentfilterstype","updateIssueStatus","issueStatusDom","issueStatusDomParent","tgIssueStatusInlineEdition","updateIssue","tgIssueAssignedToInlineEdition","updatedIssue","UsClientRequirementButtonDirective","UsStatusButtonDirective","UsStatusDisplayDirective","UsTasksProgressDisplayDirective","UsTeamRequirementButtonDirective","UserStoryDetailController","usRef","usref","loadUs","progress","totalClosedTasks","totalTasks","canEdit","isRequired","TaskDetailController","TaskIsIocaineButtonDirective","TaskStatusButtonDirective","TaskStatusDisplayDirective","taskRef","taskref","loadTask","taskId","loadUserStory","isIocaine","LeaveProjectDirective","TeamController","TeamFiltersDirective","TeamMemberCurrentUserDirective","TeamMemberStatsDirective","TeamMembersDirective","setRole","filtersRole","loadMembers","currentUser","membership","totals","is_user_active","issuesEnabled","tasksEnabled","wikiEnabled","loadMemberStats","memberStats","vals","sum","processStats","processStat","stat","singleStat","leave","projectid","EditableWikiContentDirective","WikiDetailController","WikiSummaryDirective","projectSlug","wikiSlug","loadWiki","wikiId","loadWikiLinks","listLinks","wikiLinks","last_modifier","imgUrl","totalEditions","editions","lastModifiedDate","modified_date","wikiPage","cancelEdition","disableEdition","getSelectedText","switchToEditMode","switchToReadMode","button","WikiNavDirective","addWikiLinkPermission","deleteWikiLinkPermission","linkId","linkSlug","href","newLink","CreateMembersDirective","MAX_MEMBERSHIP_FIELDSETS","extraTextTemplate","createFieldSet","resetForm","required","roleList","fieldSet","prepend","lastActionButton","newFieldSet","invitation_extra_text","memberWrappers","destroy","mw","memberWrapper","role_id","bulkCreateMemberships","MembershipsController","MembershipsDirective","MembershipsRowActionsDirective","MembershipsRowAdminCheckboxDirective","MembershipsRowAvatarDirective","MembershipsRowRoleSelectorDirective","i_am_owner","httpFilters","addNewMembers","user_email","tgMembershipsRowAvatar","inputId","tgMembershipsRowAdminCheckbox","is_owner","selectedRole","tgMembershipsRowRoleSelector","newRole","activedTemplate","pendingTemplate","tgMembershipsRowActions","resendInvitation","AdminNavigationDirective","tgAdminNavigation","CsvExporterController","CsvExporterIssuesController","CsvExporterTasksController","CsvExporterUserstoriesController","ProjectDefaultValuesDirective","ProjectExportDirective","ProjectModulesDirective","ProjectProfileController","ProjectProfileDirective","prioritiesList","severitiesList","issueTypesList","openDeleteLightbox","newUrl","isVideoconferenceActivated","buttonsEl","hideButtons","hideResult","hideSpinner","resultEl","resultMessageEl","resultTitleEl","setAsyncMessage","setAsyncTitle","setLoadingMessage","setLoadingTitle","setSyncMessage","setSyncTitle","showButtons","showErrorMode","showExportResultAsyncMode","showExportResultSyncMode","showLoadingMode","showResult","showSpinner","spinnerEl","dumpUrl","_generateUuid","setCsvUuid","csvUrl","resolveAbsolute","csvUuid","uuid","regenerateUuid","identity","ColorSelectionDirective","ProjectCustomAttributesController","ProjectCustomAttributesDirective","ProjectValuesController","ProjectValuesDirective","ProjectValuesSectionController","moveValue","loadValues","resource","listValues","maxValueOrder","itemValue","linkDragAndDrop","linkValue","axis","goToBottomList","initializeNewValue","saveNewValue","saveValue","valueType","newValue","table","formEl","row","editionRow","option","onSucces","moveTo","moveCustomAttributes","deleteCustomAttribute","saveCustomAttribute","createCustomAttribute","loadCustomAttributes","maxOrder","attrValues","attrModel","idx","cancelCreate","cancelUpdate","hideAddButton","hideCancelButton","hideCreateForm","hideEditForm","resetNewAttr","revertChangesInCustomAttribute","showAddButton","showCancelButton","showCreateForm","showEditForm","sortableEl","itemAttr","newAttr","EditRoleDirective","NewRoleDirective","RolePermissionsDirective","RolesController","RolesDirective","anyComputableRole","computable","loadExternalUserRole","public_permission","external_user","public_permissions","loadRoles","setComputable","toggleView","toggle","DEFAULT_PERMISSIONS","categoryTemplate","resumeTemplate","generateCategoriesFromRole","renderCategory","renderPermissions","renderResume","categories","isPermissionEditable","issuePermissions","milestonePermissions","setActivePermissions","setActivePermissionsPerCategory","taskPermissions","userStoryPermissions","wikiPermissions","active","is_private","cat","activePermissions","getActivePermissions","categoryId","anon_permissions","BitbucketController","BitbucketWebhooksDirective","GithubController","GithubWebhooksDirective","GitlabController","GitlabWebhooksDirective","NewWebhookDirective","SelectInputText","ValidOriginIpsDirective","WebhookDirective","WebhooksController","loadWebhooks","openHistory","showEditMode","showVisualizationMode","updateLogs","updateShowHideHistoryText","webhook","tgWebhook","validStatus","prettySentHeaders","pairs","request_headers","arg","header","prettySentData","request_data","prettyDate","created","logs_counter","logs","historyElement","textElement","test","resend","addWebhookDOMNode","formDOMNode","loadModules","github","gitlab","bitbucket","saveAttribute","$ngModel","CreateProject","DeleteProjectDirective","$projectUrl","$cacheFactory","removeAll","error_field","error_step","selectors","total_story_points","total_milestones","creation_template","head","step","fields","projectToDelete","ProjectController","ProjectsController","ProjectsListDirective","ProjectsPaginationDirective","recents","loadPageData","checkButtonVisibility","containerSize","hasNextPage","hasPagination","hasPrevPage","nextBtn","nextPage","pageSize","prevBtn","prevPage","visible","lastLi","maxTop","newTop","outerHeight","animate","BindHtmlDirective","BindOnceAltDirective","BindOnceBindDirective","BindOnceHrefDirective","BindOnceHtmlDirective","BindOnceRefDirective","BindOnceSrcDirective","BindOnceTitleDirective","BindTitleDirective","tgBoBind","tgBoHtml","tgBoRef","tgBoSrc","tgBoHref","tgBoAlt","tgBoTitle","tgTitleHtml","tgBindHtml","ConfigurationService","ContribController","rootScope","currentPlugin","pluginTemplate","FiltersStorageService","HttpService","Authorization","request","I18nDirective","I18nService","ns","fallbackLng","lng","localesEn","resStore","en","app","setLanguage","language","i18n","setLng","currentLang","opts","tr","trOpts","locationFactory","lastRoute","un","Model","ModelService","dataTypes","_attrs","_name","_dataTypes","setAttrs","_modifiedAttrs","_isModified","applyCasts","attrName","castMethod","castName","casts","getIdAttrName","getName","attrs","getter","self","setter","substr","enumerable","configurable","defineProperty","isAttributeModified","markSaved","desSerialize","sdata","ddata","cls","int","float","NavigationUrlsDirective","NavigationUrlsService","formatUrl","replacer","bindOnceP","parseNav","tgNav","fullUrl","RepositoryService","model1","resolveUrlForModel","idAttrName","resolveUrlForAttributeModel","extraParams","_data","refresh","queryMany","httpOptions","enablePagination","queryOneAttribute","queryOneRaw","queryPaginated","cache","wikipage","StorageService","_default","serializedValue","localStorage","getItem","setItem","removeItem","UrlsService","fmt","String","mainUrl","Error","rtrim","resourceProvider","object_id","uploadComplete","uploadFailed","uploadProgress","evt","progressMessage","loaded","progressPercent","responseText","_error","FormData","XMLHttpRequest","upload","setRequestHeader","_get","userstory","_list","$http","filtersHashSuffix","hashSuffix","myFiltersHashSuffix","getQueryParams","project_id","bulk_issues","innerPromise","hashSuffixStatusColumnModes","hashSuffixStatusViewModes","listByUser","bulk_memberships","notifyPolicies","memberId","regenerate_userstories_csv_uuid","regenerate_issues_csv_uuid","regenerate_tasks_csv_uuid","statusUpdater","complete","failed","get_all","hashSuffixUserstories","storeUserstoriesQueryParams","hashSuffixUsRowModes","userStoryId","sprint_id","bulk_tasks","changeAvatar","transformRequest","removeAvatar","changePassword","currentPassword","newPassword","current_password","userSettings","status_id","bulk_stories","webhookId","webhooklogId","UserChangePasswordController","UserChangePasswordDirective","newPassword1","newPassword2","DeleteUserDirective","TaigaAvatarModelDirective","UserAvatarDirective","UserProfileDirective","UserSettingsController","avatarAttachment","$parse","modelSetter","tgAvatarModel","UserSettingsNavigationDirective","tgUserSettingsNavigation","UserNotificationsController","UserNotificationsDirective","UserNotificationsListDirective","loadNotifyPolicies","policy","policyIndex","prev_level","notify_level","TermsNoticeDirective","privacyPolicyUrl","termsOfServiceUrl","termsUrl","privacyUrl","defaultMessage","type-email","type-url","type-urlstrict","type-number","type-digits","type-dateIso","type-alphanum","type-phone","notnull","notblank","regexp","minlength","maxlength","rangelength","mincheck","maxcheck","rangecheck","equalto","common","blocked","new-bulk","one-item-line","pagination","markdown-editor","heading-1","heading-2","heading-3","bold","italic","strike","bulleted-list","numeric-list","picture","quotes","code-block","help","link-placeholder","title-new","team-requirement","client-requirement"],"mappings":"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","file":"app.js","sourcesContent":["\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: app.coffee\n */\n\n(function() {\n var configure, init, module, modules, taiga;\n\n this.taiga = taiga = {};\n\n this.taigaContribPlugins = this.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 configure = function($routeProvider, $locationProvider, $httpProvider, $provide, $tgEventsProvider, tgLoaderProvider, $compileProvider) {\n var authHttpIntercept, defaultHeaders, versionCheckHttpIntercept;\n $routeProvider.when(\"/\", {\n templateUrl: \"project/projects.html\",\n resolve: {\n loader: tgLoaderProvider.add()\n }\n });\n $routeProvider.when(\"/project/:pslug/\", {\n templateUrl: \"project/project.html\"\n });\n $routeProvider.when(\"/project/:pslug/search\", {\n templateUrl: \"search/search.html\",\n reloadOnSearch: false\n });\n $routeProvider.when(\"/project/:pslug/backlog\", {\n templateUrl: \"backlog/backlog.html\",\n resolve: {\n loader: tgLoaderProvider.add()\n }\n });\n $routeProvider.when(\"/project/:pslug/kanban\", {\n templateUrl: \"kanban/kanban.html\",\n resolve: {\n loader: tgLoaderProvider.add()\n }\n });\n $routeProvider.when(\"/project/:pslug/taskboard/:sslug\", {\n templateUrl: \"taskboard/taskboard.html\",\n resolve: {\n loader: tgLoaderProvider.add()\n }\n });\n $routeProvider.when(\"/project/:pslug/us/:usref\", {\n templateUrl: \"us/us-detail.html\",\n resolve: {\n loader: tgLoaderProvider.add()\n }\n });\n $routeProvider.when(\"/project/:pslug/task/:taskref\", {\n templateUrl: \"task/task-detail.html\",\n resolve: {\n loader: tgLoaderProvider.add()\n }\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/:slug\", {\n templateUrl: \"wiki/wiki.html\",\n resolve: {\n loader: tgLoaderProvider.add()\n }\n });\n $routeProvider.when(\"/project/:pslug/team\", {\n templateUrl: \"team/team.html\",\n resolve: {\n loader: tgLoaderProvider.add()\n }\n });\n $routeProvider.when(\"/project/:pslug/issues\", {\n templateUrl: \"issue/issues.html\",\n resolve: {\n loader: tgLoaderProvider.add()\n }\n });\n $routeProvider.when(\"/project/:pslug/issue/:issueref\", {\n templateUrl: \"issue/issues-detail.html\",\n resolve: {\n loader: tgLoaderProvider.add()\n }\n });\n $routeProvider.when(\"/project/:pslug/admin/project-profile/details\", {\n templateUrl: \"admin/admin-project-profile.html\"\n });\n $routeProvider.when(\"/project/:pslug/admin/project-profile/default-values\", {\n templateUrl: \"admin/admin-project-default-values.html\"\n });\n $routeProvider.when(\"/project/:pslug/admin/project-profile/modules\", {\n templateUrl: \"admin/admin-project-modules.html\"\n });\n $routeProvider.when(\"/project/:pslug/admin/project-profile/export\", {\n templateUrl: \"admin/admin-project-export.html\"\n });\n $routeProvider.when(\"/project/:pslug/admin/project-profile/reports\", {\n templateUrl: \"admin/admin-project-reports.html\"\n });\n $routeProvider.when(\"/project/:pslug/admin/project-values/status\", {\n templateUrl: \"admin/admin-project-values-status.html\"\n });\n $routeProvider.when(\"/project/:pslug/admin/project-values/points\", {\n templateUrl: \"admin/admin-project-values-points.html\"\n });\n $routeProvider.when(\"/project/:pslug/admin/project-values/priorities\", {\n templateUrl: \"admin/admin-project-values-priorities.html\"\n });\n $routeProvider.when(\"/project/:pslug/admin/project-values/severities\", {\n templateUrl: \"admin/admin-project-values-severities.html\"\n });\n $routeProvider.when(\"/project/:pslug/admin/project-values/types\", {\n templateUrl: \"admin/admin-project-values-types.html\"\n });\n $routeProvider.when(\"/project/:pslug/admin/project-values/custom-fields\", {\n templateUrl: \"admin/admin-project-values-custom-fields.html\"\n });\n $routeProvider.when(\"/project/:pslug/admin/memberships\", {\n templateUrl: \"admin/admin-memberships.html\"\n });\n $routeProvider.when(\"/project/:pslug/admin/roles\", {\n templateUrl: \"admin/admin-roles.html\"\n });\n $routeProvider.when(\"/project/:pslug/admin/third-parties/webhooks\", {\n templateUrl: \"admin/admin-third-parties-webhooks.html\"\n });\n $routeProvider.when(\"/project/:pslug/admin/third-parties/github\", {\n templateUrl: \"admin/admin-third-parties-github.html\"\n });\n $routeProvider.when(\"/project/:pslug/admin/third-parties/gitlab\", {\n templateUrl: \"admin/admin-third-parties-gitlab.html\"\n });\n $routeProvider.when(\"/project/:pslug/admin/third-parties/bitbucket\", {\n templateUrl: \"admin/admin-third-parties-bitbucket.html\"\n });\n $routeProvider.when(\"/project/:pslug/admin/contrib/:plugin\", {\n templateUrl: \"contrib/main.html\"\n });\n $routeProvider.when(\"/project/:pslug/user-settings/user-profile\", {\n templateUrl: \"user/user-profile.html\"\n });\n $routeProvider.when(\"/project/:pslug/user-settings/user-change-password\", {\n templateUrl: \"user/user-change-password.html\"\n });\n $routeProvider.when(\"/project/:pslug/user-settings/user-avatar\", {\n templateUrl: \"user/user-avatar.html\"\n });\n $routeProvider.when(\"/project/:pslug/user-settings/mail-notifications\", {\n templateUrl: \"user/mail-notifications.html\"\n });\n $routeProvider.when(\"/change-email/:email_token\", {\n templateUrl: \"user/change-email.html\"\n });\n $routeProvider.when(\"/cancel-account/:cancel_token\", {\n templateUrl: \"user/cancel-account.html\"\n });\n $routeProvider.when(\"/login\", {\n templateUrl: \"auth/login.html\"\n });\n $routeProvider.when(\"/register\", {\n templateUrl: \"auth/register.html\"\n });\n $routeProvider.when(\"/forgot-password\", {\n templateUrl: \"auth/forgot-password.html\"\n });\n $routeProvider.when(\"/change-password\", {\n templateUrl: \"auth/change-password-from-recovery.html\"\n });\n $routeProvider.when(\"/change-password/:token\", {\n templateUrl: \"auth/change-password-from-recovery.html\"\n });\n $routeProvider.when(\"/invitation/:token\", {\n templateUrl: \"auth/invitation.html\"\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 redirectTo: '/not-found'\n });\n $locationProvider.html5Mode({\n enabled: true,\n requireBase: false\n });\n defaultHeaders = {\n \"Content-Type\": \"application/json\",\n \"Accept-Language\": \"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 $tgEventsProvider.setSessionId(taiga.sessionId);\n authHttpIntercept = function($q, $location, $navUrls, $lightboxService) {\n var httpResponseError;\n httpResponseError = function(response) {\n var nextPath;\n if (response.status === 0) {\n $lightboxService.closeAll();\n $location.path($navUrls.resolve(\"error\"));\n $location.replace();\n } else if (response.status === 401) {\n nextPath = $location.path();\n $location.url($navUrls.resolve(\"login\")).search(\"next=\" + nextPath);\n }\n return $q.reject(response);\n };\n return {\n responseError: httpResponseError\n };\n };\n $provide.factory(\"authHttpIntercept\", [\"$q\", \"$location\", \"$tgNavUrls\", \"lightboxService\", authHttpIntercept]);\n $httpProvider.interceptors.push('authHttpIntercept');\n versionCheckHttpIntercept = function($q, $confirm) {\n var httpResponseError, versionErrorMsg;\n versionErrorMsg = \"Someone inside Taiga has changed this before and our Oompa Loompas cannot apply your changes. Please reload and apply your changes again (they will be lost).\";\n httpResponseError = function(response) {\n if (response.status === 400 && response.data.version) {\n $confirm.notify(\"error\", versionErrorMsg, null, 10000);\n return $q.reject(response);\n }\n return $q.reject(response);\n };\n return {\n responseError: httpResponseError\n };\n };\n $provide.factory(\"versionCheckHttpIntercept\", [\"$q\", \"$tgConfirm\", versionCheckHttpIntercept]);\n $httpProvider.interceptors.push('versionCheckHttpIntercept');\n window.checksley.updateValidators({\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 });\n window.checksley.updateMessages(\"default\", {\n linewidth: \"The subject must have a maximum size of %s\"\n });\n return $compileProvider.debugInfoEnabled(window.taigaConfig.debugInfo || false);\n };\n\n init = function($log, $i18n, $config, $rootscope, $auth, $events, $analytics) {\n $i18n.initialize($config.get(\"defaultLanguage\"));\n $log.debug(\"Initialize application\");\n $rootscope.contribPlugins = this.taigaContribPlugins;\n $rootscope.adminPlugins = _.where(this.taigaContribPlugins, {\n \"type\": \"admin\"\n });\n if ($auth.isAuthenticated()) {\n $events.setupConnection();\n }\n return $analytics.initialize();\n };\n\n modules = [\"taigaBase\", \"taigaCommon\", \"taigaResources\", \"taigaLocales\", \"taigaAuth\", \"taigaEvents\", \"taigaRelatedTasks\", \"taigaBacklog\", \"taigaTaskboard\", \"taigaKanban\", \"taigaIssues\", \"taigaUserStories\", \"taigaTasks\", \"taigaTeam\", \"taigaWiki\", \"taigaSearch\", \"taigaAdmin\", \"taigaNavMenu\", \"taigaProject\", \"taigaUserSettings\", \"taigaFeedback\", \"taigaPlugins\", \"taigaIntegrations\", \"templates\", \"ngRoute\", \"ngAnimate\"].concat(_.map(this.taigaContribPlugins, function(plugin) {\n return plugin.module;\n }));\n\n module = angular.module(\"taiga\", modules);\n\n module.config([\"$routeProvider\", \"$locationProvider\", \"$httpProvider\", \"$provide\", \"$tgEventsProvider\", \"tgLoaderProvider\", \"$compileProvider\", configure]);\n\n module.run([\"$log\", \"$tgI18n\", \"$tgConfig\", \"$rootScope\", \"$tgAuth\", \"$tgEvents\", \"$tgAnalytics\", init]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: classes.coffee\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.location.path(this.navUrls.resolve(\"not-found\"));\n this.location.replace();\n } else if (xhr.status === 403) {\n this.location.path(this.navUrls.resolve(\"permission-denied\"));\n this.location.replace();\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 * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: utils.coffee\n */\n\n(function() {\n var bindMethods, bindOnce, cancelTimeout, debounce, debounceLeading, groupBy, joinStr, mixOf, nl2br, scopeDefer, sizeFormat, slugify, startswith, taiga, timeout, toString, toggleText, trim, 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 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) {\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 _.str.trim(data, char);\n };\n\n slugify = function(data) {\n return _.str.slugify(data);\n };\n\n unslugify = function(data) {\n if (data) {\n return _.str.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 _.str.join(str, coll);\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 _.str.startsWith(str1, str2);\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 taiga = this.taiga;\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.debounce = debounce;\n\n taiga.debounceLeading = debounceLeading;\n\n taiga.startswith = startswith;\n\n taiga.sizeFormat = sizeFormat;\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/controllerMixins.coffee\n */\n\n(function() {\n var FiltersMixin, PageMixin, 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, availableRoles;\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(this.scope.users, function(e) {\n return e.id;\n });\n this.scope.roles = _.sortBy(roles, \"order\");\n availableRoles = _(this.scope.project.memberships).map(\"role\").uniq().value();\n return this.scope.computableRoles = _(roles).filter(\"computable\").filter(function(x) {\n return _.contains(availableRoles, 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.selectFilter = function(name, value, load) {\n var existing, location, params;\n if (load == null) {\n load = false;\n }\n params = this.location.search();\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) {\n var location, newValues, params, parsedValues;\n if (load == null) {\n load = false;\n }\n params = this.location.search();\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 return FiltersMixin;\n\n })();\n\n taiga.FiltersMixin = FiltersMixin;\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/admin.coffee\n */\n\n(function() {\n var module;\n\n module = angular.module(\"taigaAdmin\", []);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/auth.coffee\n */\n\n(function() {\n var AuthService, CancelAccountDirective, ChangeEmailDirective, ChangePasswordFromRecoveryDirective, ForgotPasswordDirective, InvitationDirective, LoginDirective, PublicRegisterMessageDirective, RegisterDirective, 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 AuthService = (function(superClass) {\n extend(AuthService, superClass);\n\n AuthService.$inject = [\"$rootScope\", \"$tgStorage\", \"$tgModel\", \"$tgResources\", \"$tgHttp\", \"$tgUrls\"];\n\n function AuthService(rootscope, storage, model, rs, http, urls) {\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 AuthService.__super__.constructor.call(this);\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 return user;\n }\n return null;\n };\n\n AuthService.prototype.setUser = function(user) {\n this.rootscope.auth = user;\n this.rootscope.$broadcast(\"i18n:change\", user.default_language);\n this.storage.set(\"userInfo\", user.getAttrs());\n return this.rootscope.user = user;\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.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 return this.storage.remove(\"token\");\n };\n\n AuthService.prototype.isAuthenticated = function() {\n if (this.getUser() !== null) {\n return true;\n }\n return false;\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.setUser(user);\n return user;\n };\n })(this));\n };\n\n AuthService.prototype.logout = function() {\n this.removeToken();\n return this.clear();\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 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.acceptInvitiationWithExistingUser = function(data) {\n return this.register(data, \"private\", true);\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 return AuthService;\n\n })(taiga.Service);\n\n module.service(\"$tgAuth\", AuthService);\n\n PublicRegisterMessageDirective = function($config, $navUrls, templates) {\n var template, templateFn;\n template = templates.get(\"auth/login-text.html\", true);\n templateFn = function() {\n var publicRegisterEnabled;\n publicRegisterEnabled = $config.get(\"publicRegisterEnabled\");\n if (!publicRegisterEnabled) {\n return \"\";\n }\n return template({\n url: $navUrls.resolve(\"register\")\n });\n };\n return {\n restrict: \"AE\",\n scope: {},\n template: templateFn\n };\n };\n\n module.directive(\"tgPublicRegisterMessage\", [\"$tgConfig\", \"$tgNavUrls\", \"$tgTemplate\", PublicRegisterMessageDirective]);\n\n LoginDirective = function($auth, $confirm, $location, $config, $routeParams, $navUrls, $events) {\n var link;\n link = function($scope, $el, $attrs) {\n var onError, onSuccess, submit;\n onSuccess = function(response) {\n var nextUrl;\n if ($routeParams['next'] && $routeParams['next'] !== $navUrls.resolve(\"login\")) {\n nextUrl = $routeParams['next'];\n } else {\n nextUrl = $navUrls.resolve(\"home\");\n }\n $events.setupConnection();\n return $location.path(nextUrl);\n };\n onError = function(response) {\n return $confirm.notify(\"light-error\", \"According to our Oompa Loompas, your username/email or password are incorrect.\");\n };\n submit = debounce(2000, (function(_this) {\n return function(event) {\n var data, form, loginFormType, promise;\n event.preventDefault();\n form = new checksley.Form($el.find(\"form.login-form\"));\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 return $el.on(\"submit\", \"form\", submit);\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgLogin\", [\"$tgAuth\", \"$tgConfirm\", \"$tgLocation\", \"$tgConfig\", \"$routeParams\", \"$tgNavUrls\", \"$tgEvents\", LoginDirective]);\n\n RegisterDirective = function($auth, $confirm, $location, $navUrls, $config, $analytics) {\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 onSuccessSubmit = function(response) {\n $analytics.trackEvent(\"auth\", \"register\", \"user registration\", 1);\n $confirm.notify(\"success\", \"Our Oompa Loompas are happy, welcome to Taiga.\");\n return $location.path($navUrls.resolve(\"home\"));\n };\n onErrorSubmit = function(response) {\n if (response.data._error_message != null) {\n $confirm.notify(\"light-error\", \"According to our Oompa Loompas there was an error. \" + response.data._error_message);\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 return $el.on(\"submit\", \"form\", submit);\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgRegister\", [\"$tgAuth\", \"$tgConfirm\", \"$tgLocation\", \"$tgNavUrls\", \"$tgConfig\", \"$tgAnalytics\", RegisterDirective]);\n\n ForgotPasswordDirective = function($auth, $confirm, $location, $navUrls) {\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 $location.path($navUrls.resolve(\"login\"));\n return $confirm.success(\"Check your inbox!
We have sent a mail to
\" + response.data.email + \"
with the instructions to set a new password\");\n };\n onErrorSubmit = function(response) {\n return $confirm.notify(\"light-error\", \"According to our Oompa Loompas, your are not registered yet.\");\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 return $el.on(\"submit\", \"form\", submit);\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgForgotPassword\", [\"$tgAuth\", \"$tgConfirm\", \"$tgLocation\", \"$tgNavUrls\", ForgotPasswordDirective]);\n\n ChangePasswordFromRecoveryDirective = function($auth, $confirm, $location, $params, $navUrls) {\n var link;\n link = function($scope, $el, $attrs) {\n var form, onErrorSubmit, onSuccessSubmit, submit;\n $scope.data = {};\n if ($params.token != null) {\n $scope.tokenInParams = true;\n $scope.data.token = $params.token;\n } else {\n $scope.tokenInParams = false;\n }\n form = $el.find(\"form\").checksley();\n onSuccessSubmit = function(response) {\n $location.path($navUrls.resolve(\"login\"));\n return $confirm.success(\"Our Oompa Loompas saved your new password.
Try to sign in with it.\");\n };\n onErrorSubmit = function(response) {\n return $confirm.notify(\"light-error\", \"One of our Oompa Loompas say '\" + response.data._error_message + \"'.\");\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 return $el.on(\"submit\", \"form\", submit);\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgChangePasswordFromRecovery\", [\"$tgAuth\", \"$tgConfirm\", \"$tgLocation\", \"$routeParams\", \"$tgNavUrls\", ChangePasswordFromRecoveryDirective]);\n\n InvitationDirective = function($auth, $confirm, $location, $params, $navUrls, $analytics) {\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 return $scope.invitation = invitation;\n });\n promise.then(null, function(response) {\n $location.path($navUrls.resolve(\"login\"));\n return $confirm.success(\"Ooops, we have a problem
Our Oompa Loompas can't find your invitation.\");\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 $analytics.trackEvent(\"auth\", \"invitationAccept\", \"invitation accept with existing user\", 1);\n $location.path($navUrls.resolve(\"project\", {\n project: $scope.invitation.project_slug\n }));\n return $confirm.notify(\"success\", \"You've successfully joined this project\", \"Welcome to \" + (_.escape($scope.invitation.project_name)));\n };\n onErrorSubmitLogin = function(response) {\n return $confirm.notify(\"light-error\", \"According to our Oompa Loompas, your are not registered yet or typed an invalid password.\");\n };\n submitLogin = debounce(2000, (function(_this) {\n return function(event) {\n event.preventDefault();\n if (!loginForm.validate()) {\n return;\n }\n promise = $auth.acceptInvitiationWithExistingUser($scope.dataLogin);\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 onSuccessSubmitRegister = function(response) {\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 return $confirm.notify(\"success\", \"You've successfully joined this project\", \"Welcome to \" + (_.escape($scope.invitation.project_name)));\n };\n onErrorSubmitRegister = function(response) {\n return $confirm.notify(\"light-error\", \"According to our Oompa Loompas, that username or email is already in use.\");\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 return $el.on(\"click\", \".button-register\", submitRegister);\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgInvitation\", [\"$tgAuth\", \"$tgConfirm\", \"$tgLocation\", \"$routeParams\", \"$tgNavUrls\", \"$tgAnalytics\", InvitationDirective]);\n\n ChangeEmailDirective = 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.email_token = $params.email_token;\n form = $el.find(\"form\").checksley();\n onSuccessSubmit = function(response) {\n return $repo.queryOne(\"users\", $auth.getUser().id).then((function(_this) {\n return function(data) {\n $auth.setUser(data);\n $location.path($navUrls.resolve(\"home\"));\n return $confirm.success(\"Our Oompa Loompas updated your email\");\n };\n })(this));\n };\n onErrorSubmit = function(response) {\n return $confirm.notify(\"error\", \"One of our Oompa Loompas says '\" + response.data._error_message + \"'.\");\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 return $el.on(\"click\", \"a.button-change-email\", function(event) {\n event.preventDefault();\n return submit();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgChangeEmail\", [\"$tgRepo\", \"$tgModel\", \"$tgAuth\", \"$tgConfirm\", \"$tgLocation\", \"$routeParams\", \"$tgNavUrls\", 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 $auth.logout();\n $location.path($navUrls.resolve(\"home\"));\n return $confirm.success(\"Our Oompa Loompas removed your account\");\n };\n onErrorSubmit = function(response) {\n return $confirm.notify(\"error\", \"One of our Oompa Loompas says '\" + response.data._error_message + \"'.\");\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 return $el.on(\"submit\", \"form\", submit);\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 * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/backlog.coffee\n */\n\n(function() {\n var module;\n\n module = angular.module(\"taigaBacklog\", []);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/base.coffee\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\", [\"taigaLocales\"]);\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 \"error\": \"/error\",\n \"not-found\": \"/not-found\",\n \"permission-denied\": \"/permission-denied\",\n \"login\": \"/login\",\n \"forgot-password\": \"/forgot-password\",\n \"change-password\": \"/change-password/:token\",\n \"change-email\": \"/change-email/:token\",\n \"cancel-account\": \"/cancel-account/:token\",\n \"register\": \"/register\",\n \"invitation\": \"/invitation/:token\",\n \"create-project\": \"/create-project\",\n \"profile\": \"/:user\",\n \"project\": \"/project/:project\",\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-search\": \"/project/:project/search\",\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-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-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-contrib\": \"/project/:project/admin/contrib/:plugin\",\n \"user-settings-user-profile\": \"/project/:project/user-settings/user-profile\",\n \"user-settings-user-change-password\": \"/project/:project/user-settings/user-change-password\",\n \"user-settings-user-avatar\": \"/project/:project/user-settings/user-avatar\",\n \"user-settings-mail-notifications\": \"/project/:project/user-settings/mail-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 * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/common.coffee\n */\n\n(function() {\n var AnimationFrame, AppTitle, CheckPermissionDirective, ClassPermissionDirective, LimitLineLengthDirective, ProjectUrl, Qqueue, SelectedText, Template, ToggleCommentDirective, module, taiga,\n slice = [].slice;\n\n taiga = this.taiga;\n\n module = angular.module(\"taigaCommon\", []);\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() {\n var link, render;\n render = function($el, project, permission) {\n if (project.my_permissions.indexOf(permission) > -1) {\n return $el.removeClass('hidden');\n }\n };\n link = function($scope, $el, $attrs) {\n var permission;\n $el.addClass('hidden');\n permission = $attrs.tgCheckPermission;\n $scope.$watch(\"project\", function(project) {\n if (project != null) {\n return render($el, project, permission);\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(\"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 AppTitle = function() {\n var set;\n set = function(text) {\n return $(\"title\").text(text);\n };\n return {\n set: set\n };\n };\n\n module.factory(\"$appTitle\", AppTitle);\n\n ProjectUrl = function($navurls) {\n var get;\n get = function(project) {\n var ctx;\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 LimitLineLengthDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n var maxColsPerLine;\n maxColsPerLine = parseInt($el.attr(\"cols\"));\n return $el.on(\"keyup\", function(event) {\n var code, lines;\n code = event.keyCode;\n lines = $el.val().split(\"\\n\");\n _.each(lines, function(line, index) {\n return lines[index] = line.substring(0, maxColsPerLine - 2);\n });\n return $el.val(lines.join(\"\\n\"));\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgLimitLineLength\", LimitLineLengthDirective);\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 return qqueue;\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 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}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/events.coffee\n */\n\n(function() {\n var EventsProvider, EventsService, bindMethods, module, startswith, taiga;\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) {\n this.win = win;\n this.log = log;\n this.config = config;\n this.auth = auth;\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 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 = _.str.ltrim(url, \"/\");\n url = scheme + \"//\" + loc.host + \"/\" + path;\n }\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.ws.close();\n return delete this.ws;\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.subscribe = function(scope, routingKey, callback) {\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: _.debounce(callback, 500, {\n \"leading\": true,\n \"trailing\": false\n })\n };\n message = {\n \"cmd\": \"subscribe\",\n \"routing_key\": routingKey\n };\n this.subscriptions[routingKey] = subscription;\n this.sendMessage(message);\n return scope.$on(\"$destroy\", (function(_this) {\n return function() {\n return _this.unsubscribe(routingKey);\n };\n })(this));\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 return this.sendMessage(message);\n };\n\n EventsService.prototype.onMessage = function(event) {\n var data, routingKey, subscription;\n this.log.debug(\"WebSocket message received: \" + event.data);\n data = JSON.parse(event.data);\n routingKey = data.routing_key;\n if (this.subscriptions[routingKey] == null) {\n return;\n }\n subscription = this.subscriptions[routingKey];\n return subscription.scope.$apply(function() {\n return subscription.callback(data.data);\n });\n };\n\n EventsService.prototype.onError = function(error) {\n this.log.error(\"WebSocket error: \" + error);\n return this.error = true;\n };\n\n EventsService.prototype.onClose = function() {\n this.log.debug(\"WebSocket closed.\");\n return this.connected = false;\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) {\n var service;\n service = new EventsService($win, $log, $conf, $auth);\n service.initialize(this.sessionId);\n return service;\n };\n\n EventsProvider.prototype.$get.$inject = [\"$window\", \"$log\", \"$tgConfig\", \"$tgAuth\"];\n\n return EventsProvider;\n\n })();\n\n module.provider(\"$tgEvents\", EventsProvider);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/feedback.coffee\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) {\n var link;\n link = function($scope, $el, $attrs) {\n var form, submit, submitButton;\n form = $el.find(\"form\").checksley();\n submit = debounce(2000, (function(_this) {\n return function(event) {\n var promise;\n event.preventDefault();\n if (!form.validate()) {\n return;\n }\n $loading.start(submitButton);\n promise = $repo.create(\"feedback\", $scope.feedback);\n promise.then(function(data) {\n $loading.finish(submitButton);\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 $loading.finish(submitButton);\n return $confirm.notify(\"error\");\n });\n };\n })(this));\n submitButton = $el.find(\".submit-button\");\n $el.on(\"submit\", \"form\", submit);\n $scope.$on(\"feedback:show\", function() {\n $scope.$apply(function() {\n return $scope.feedback = {};\n });\n $lightboxService.open($el);\n return $el.find(\"textarea\").focus();\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgLbFeedback\", [\"lightboxService\", \"$tgRepo\", \"$tgConfirm\", \"$tgLoading\", FeedbackDirective]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/integrations.coffee\n */\n\n(function() {\n var module;\n\n module = angular.module(\"taigaIntegrations\", []);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/resources/issues.coffee\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 filtersHashSuffix, hashSuffix, myFiltersHashSuffix, service;\n service = {};\n hashSuffix = \"issues-queryparams\";\n filtersHashSuffix = \"issues-filters\";\n myFiltersHashSuffix = \"issues-my-filters\";\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.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.bulkCreate = function(projectId, data) {\n var params, url;\n url = $urls.resolve(\"bulk-create-issues\");\n params = {\n project_id: projectId,\n bulk_issues: data\n };\n return $http.post(url, params);\n };\n service.stats = function(projectId) {\n return $repo.queryOneRaw(\"projects\", projectId + \"/issues_stats\");\n };\n service.filtersData = function(projectId) {\n return $repo.queryOneRaw(\"projects\", projectId + \"/issue_filters_data\");\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.storeFilters = function(projectSlug, params) {\n var hash, ns;\n ns = projectSlug + \":\" + filtersHashSuffix;\n hash = generateHash([projectSlug, ns]);\n return $storage.set(hash, params);\n };\n service.getFilters = function(projectSlug) {\n var hash, ns;\n ns = projectSlug + \":\" + filtersHashSuffix;\n hash = generateHash([projectSlug, ns]);\n return $storage.get(hash) || {};\n };\n service.storeMyFilters = function(projectId, myFilters) {\n var deferred, hash, ns, promise, url;\n deferred = $q.defer();\n url = $urls.resolve(\"user-storage\");\n ns = projectId + \":\" + myFiltersHashSuffix;\n hash = generateHash([projectId, ns]);\n if (_.isEmpty(myFilters)) {\n promise = $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 = $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(data) {\n var innerPromise;\n innerPromise = $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 }\n return deferred.promise;\n };\n service.getMyFilters = function(projectId) {\n var deferred, hash, ns, promise, url;\n deferred = $q.defer();\n url = $urls.resolve(\"user-storage\");\n ns = projectId + \":\" + myFiltersHashSuffix;\n hash = generateHash([projectId, ns]);\n promise = $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 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 * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/resources/kanban.coffee\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, service;\n service = {};\n hashSuffixStatusViewModes = \"kanban-statusviewmodels\";\n hashSuffixStatusColumnModes = \"kanban-statuscolumnmodels\";\n service.storeStatusViewModes = function(projectId, params) {\n var hash, ns;\n ns = projectId + \":\" + hashSuffixStatusViewModes;\n hash = generateHash([projectId, ns]);\n return $storage.set(hash, params);\n };\n service.getStatusViewModes = function(projectId) {\n var hash, ns;\n ns = projectId + \":\" + hashSuffixStatusViewModes;\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 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 * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/locales.coffee\n */\n\n(function() {\n var module;\n\n module = angular.module(\"taigaLocales\", []);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/user-settings/nav.coffee\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 + \" a\").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 * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/resources/projects.coffee\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, $rootScope) {\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() {\n return $repo.queryMany(\"projects\");\n };\n service.listByMember = function(memberId) {\n var params;\n params = {\n \"member\": memberId\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.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_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.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.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[\"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, failed, maxFileSize, response, uploadComplete, uploadFailed, uploadProgress, xhr;\n defered = $q.defer();\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 var message, percent;\n percent = Math.round((evt.loaded / evt.total) * 100);\n message = \"Uloaded \" + (sizeFormat(evt.loaded)) + \" of \" + (sizeFormat(evt.total));\n return statusUpdater(\"in-progress\", null, message, percent);\n };\n })(this);\n uploadComplete = (function(_this) {\n return function(evt) {\n return statusUpdater(\"done\", \"Importing Project\", \"This process can take a while, please keep the window open.\");\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 ((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 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\", resourceProvider]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/related-tasks.coffee\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) {\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 promise;\n task.subject = $el.find('input').val();\n $loading.start($el.find('.task-name'));\n promise = $repo.save(task);\n promise.then((function(_this) {\n return function() {\n $loading.finish($el.find('.task-name'));\n $confirm.notify(\"success\");\n return $rootscope.$broadcast(\"related-tasks:update\");\n };\n })(this));\n promise.then(null, (function(_this) {\n return function() {\n $loading.finish($el.find('.task-name'));\n $el.find('input').val(task.subject);\n return $confirm.notify(\"error\");\n };\n })(this));\n return promise;\n });\n renderEdit = function(task) {\n $el.html($compile(templateEdit({\n task: task\n }))($scope));\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\", \".icon-floppy\", 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 $el.off();\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 }))($scope));\n $el.on(\"click\", \".icon-edit\", 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 task = $model.$modelValue;\n title = \"Delete Task\";\n message = task.subject;\n return $confirm.askOnDelete(title, message).then(function(finish) {\n var promise;\n promise = $repo.remove(task);\n promise.then(function() {\n finish();\n $confirm.notify(\"success\");\n return $scope.$emit(\"related-tasks:delete\");\n });\n return promise.then(null, function() {\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\", RelatedTaskRowDirective]);\n\n RelatedTaskCreateFormDirective = function($repo, $compile, $confirm, $tgmodel, $loading, $analytics, $template) {\n var link, newTask, template;\n template = $template.get(\"task/related-task-create-form.html\", true);\n newTask = {\n subject: \"\",\n assigned_to: null\n };\n link = function($scope, $el, $attrs) {\n var createTask, render;\n createTask = debounce(2000, function(task) {\n var 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 $loading.start($el.find('.task-name'));\n promise = $repo.create(\"tasks\", task);\n promise.then(function() {\n $analytics.trackEvent(\"task\", \"create\", \"create task on userstory\", 1);\n $loading.finish($el.find('.task-name'));\n $scope.$emit(\"related-tasks:add\");\n return $confirm.notify(\"success\");\n });\n promise.then(null, function() {\n $el.find('input').val(task.subject);\n $loading.finish($el.find('.task-name'));\n return $confirm.notify(\"error\");\n });\n return promise;\n });\n render = function() {\n $el.off();\n $el.html($compile(template())($scope));\n $el.find('input').focus().select();\n $el.addClass('active');\n $el.on(\"keyup\", \"input\", function(event) {\n if (event.keyCode === 13) {\n return createTask(newTask).then(function() {\n return render();\n });\n } else if (event.keyCode === 27) {\n return $el.html(\"\");\n }\n });\n $el.on(\"click\", \".icon-delete\", function(event) {\n return $el.html(\"\");\n });\n return $el.on(\"click\", \".icon-floppy\", function(event) {\n return createTask(newTask).then(function() {\n return $el.html(\"\");\n });\n });\n };\n taiga.bindOnce($scope, \"us\", function(val) {\n newTask[\"status\"] = $scope.project.default_task_status;\n newTask[\"project\"] = $scope.project.id;\n newTask[\"user_story\"] = $scope.us.id;\n $scope.newTask = $tgmodel.make_model(\"tasks\", newTask);\n return $el.html(\"\");\n });\n $scope.$on(\"related-tasks:show-form\", function() {\n return render();\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgRelatedTaskCreateForm\", [\"$tgRepo\", \"$compile\", \"$tgConfirm\", \"$tgModel\", \"$tgLoading\", \"$tgAnalytics\", \"$tgTemplate\", RelatedTaskCreateFormDirective]);\n\n RelatedTaskCreateButtonDirective = function($repo, $compile, $confirm, $tgmodel) {\n var link, template;\n template = _.template(\"\");\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(template());\n } else {\n $el.html(\"\");\n }\n return $el.on(\"click\", \".icon\", 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\", RelatedTaskCreateButtonDirective]);\n\n RelatedTasksDirective = function($repo, $rs, $rootscope) {\n var link;\n link = function($scope, $el, $attrs) {\n var loadTasks;\n loadTasks = function() {\n return $rs.tasks.list($scope.projectId, null, $scope.usId).then((function(_this) {\n return function(tasks) {\n $scope.tasks = tasks;\n return tasks;\n };\n })(this));\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: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, popoverService) {\n var link, template;\n template = _.template(\"\\\" alt=\\\"<%- name %>\\\"/>\\n
<%- name %>
\");\n link = function($scope, $el, $attrs) {\n var $ctrl, autoSave, notAutoSave, task, updateRelatedTask;\n updateRelatedTask = function(task) {\n var ctx, member;\n ctx = {\n name: \"Unassigned\",\n imgurl: \"/images/unnamed.png\"\n };\n member = $scope.usersById[task.assigned_to];\n if (member) {\n ctx.imgurl = member.photo;\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 updateRelatedTask(task);\n $el.on(\"click\", \".task-assignedto\", function(event) {\n return $rootscope.$broadcast(\"assigned-to:add\", task);\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 $scope.$on(\"assigned-to:added\", debounce(2000, (function(_this) {\n return function(ctx, userId, updatedRelatedTask) {\n if (updatedRelatedTask.id === task.id) {\n updatedRelatedTask.assigned_to = userId;\n if (autoSave) {\n $repo.save(updatedRelatedTask).then(function() {\n return $scope.$emit(\"related-tasks:assigned-to-changed\");\n });\n }\n return updateRelatedTask(updatedRelatedTask);\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(\"tgRelatedTaskAssignedToInlineEdition\", [\"$tgRepo\", \"$rootScope\", RelatedTaskAssignedToInlineEditionDirective]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/resources.coffee\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 \"permissions\": \"/permissions\",\n \"roles\": \"/roles\",\n \"projects\": \"/projects\",\n \"memberships\": \"/memberships\",\n \"notify-policies\": \"/notify-policies\",\n \"bulk-create-memberships\": \"/memberships/bulk_create\",\n \"milestones\": \"/milestones\",\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-sprint-order\": \"/userstories/bulk_update_sprint_order\",\n \"bulk-update-us-kanban-order\": \"/userstories/bulk_update_kanban_order\",\n \"userstories-restore\": \"/userstories/%s/restore\",\n \"tasks\": \"/tasks\",\n \"bulk-create-tasks\": \"/tasks/bulk_create\",\n \"bulk-update-task-taskboard-order\": \"/tasks/bulk_update_taskboard_order\",\n \"tasks-restore\": \"/tasks/%s/restore\",\n \"issues\": \"/issues\",\n \"bulk-create-issues\": \"/issues/bulk_create\",\n \"issues-restore\": \"/issues/%s/restore\",\n \"wiki\": \"/wiki\",\n \"wiki-restore\": \"/wiki/%s/restore\",\n \"wiki-links\": \"/wiki-links\",\n \"choices/userstory-statuses\": \"/userstory-statuses\",\n \"choices/userstory-statuses/bulk-update-order\": \"/userstory-statuses/bulk_update_order\",\n \"choices/points\": \"/points\",\n \"choices/points/bulk-update-order\": \"/points/bulk_update_order\",\n \"choices/task-statuses\": \"/task-statuses\",\n \"choices/task-statuses/bulk-update-order\": \"/task-statuses/bulk_update_order\",\n \"choices/issue-statuses\": \"/issue-statuses\",\n \"choices/issue-statuses/bulk-update-order\": \"/issue-statuses/bulk_update_order\",\n \"choices/issue-types\": \"/issue-types\",\n \"choices/issue-types/bulk-update-order\": \"/issue-types/bulk_update_order\",\n \"choices/priorities\": \"/priorities\",\n \"choices/priorities/bulk-update-order\": \"/priorities/bulk_update_order\",\n \"choices/severities\": \"/severities\",\n \"choices/severities/bulk-update-order\": \"/severities/bulk_update_order\",\n \"search\": \"/search\",\n \"sites\": \"/sites\",\n \"project-templates\": \"/project-templates\",\n \"site-members\": \"/site-members\",\n \"site-projects\": \"/site-projects\",\n \"users\": \"/users\",\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 \"user-storage\": \"/user-storage\",\n \"resolver\": \"/resolver\",\n \"userstory-statuses\": \"/userstory-statuses\",\n \"points\": \"/points\",\n \"task-statuses\": \"/task-statuses\",\n \"issue-statuses\": \"/issue-statuses\",\n \"issue-types\": \"/issue-types\",\n \"priorities\": \"/priorities\",\n \"severities\": \"/severities\",\n \"project-modules\": \"/projects/%s/modules\",\n \"webhooks\": \"/webhooks\",\n \"webhooks-test\": \"/webhooks/%s/test\",\n \"webhooklogs\": \"/webhooklogs\",\n \"webhooklogs-resend\": \"/webhooklogs/%s/resend\",\n \"history/us\": \"/history/userstory\",\n \"history/issue\": \"/history/issue\",\n \"history/task\": \"/history/task\",\n \"history/wiki\": \"/history/wiki\",\n \"attachments/us\": \"/userstories/attachments\",\n \"attachments/issue\": \"/issues/attachments\",\n \"attachments/task\": \"/tasks/attachments\",\n \"attachments/wiki_page\": \"/wiki/attachments\",\n \"custom-attributes/userstory\": \"/userstory-custom-attributes\",\n \"custom-attributes/issue\": \"/issue-custom-attributes\",\n \"custom-attributes/task\": \"/task-custom-attributes\",\n \"custom-attributes-values/userstory\": \"/userstories/custom-attributes-values\",\n \"custom-attributes-values/issue\": \"/issues/custom-attributes-values\",\n \"custom-attributes-values/task\": \"/tasks/custom-attributes-values\",\n \"feedback\": \"/feedback\",\n \"exporter\": \"/exporter\",\n \"importer\": \"/importer/load_dump\",\n \"userstories-csv\": \"/userstories/csv?uuid=%s\",\n \"tasks-csv\": \"/tasks/csv?uuid=%s\",\n \"issues-csv\": \"/issues/csv?uuid=%s\"\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\", \"$tgUserSettingsResourcesProvider\", \"$tgSprintsResourcesProvider\", \"$tgUserstoriesResourcesProvider\", \"$tgTasksResourcesProvider\", \"$tgIssuesResourcesProvider\", \"$tgWikiResourcesProvider\", \"$tgSearchResourcesProvider\", \"$tgAttachmentsResourcesProvider\", \"$tgMdRenderResourcesProvider\", \"$tgHistoryResourcesProvider\", \"$tgKanbanResourcesProvider\", \"$tgModulesResourcesProvider\", \"$tgWebhooksResourcesProvider\", \"$tgWebhookLogsResourcesProvider\", initResources]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/resources/search.coffee\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[\"do\"] = function(projectId, term) {\n var params, url;\n url = $urls.resolve(\"search\");\n params = {\n project: projectId,\n text: term,\n get_all: false\n };\n return $http.get(url, params).then(function(data) {\n return data.data;\n });\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\", resourceProvider]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/taskboard.coffee\n */\n\n(function() {\n var module;\n\n module = angular.module(\"taigaTaskboard\", []);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/resources/tasks.coffee\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) {\n var params;\n params = service.getQueryParams(projectId);\n params.project = projectId;\n return $repo.queryOne(\"tasks\", taskId, 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(\"tasks\", \"by_ref\", params);\n };\n service.list = function(projectId, sprintId, userStoryId) {\n var params;\n if (sprintId == null) {\n sprintId = null;\n }\n if (userStoryId == null) {\n userStoryId = null;\n }\n params = {\n project: projectId\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 sprint_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.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.listValues = function(projectId, type) {\n var params;\n params = {\n \"project\": projectId\n };\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.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 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 * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/team.coffee\n */\n\n(function() {\n var module;\n\n module = angular.module(\"taigaTeam\", []);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/resources/memberships.coffee\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 * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/resources/userstories.coffee\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 = \"userstories-queryparams\";\n service.get = function(projectId, usId) {\n var params;\n params = service.getQueryParams(projectId);\n params.project = projectId;\n return $repo.queryOne(\"userstories\", usId, 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(\"userstories\", \"by_ref\", params);\n };\n service.listUnassigned = function(projectId, filters) {\n var params;\n params = {\n \"project\": projectId,\n \"milestone\": \"null\"\n };\n params = _.extend({}, params, filters || {});\n service.storeQueryParams(projectId, params);\n return $repo.queryMany(\"userstories\", params);\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) {\n var data, url;\n data = {\n project_id: projectId,\n status_id: status,\n bulk_stories: bulk\n };\n url = $urls.resolve(\"bulk-create-us\");\n return $http.post(url, data);\n };\n service.bulkUpdateBacklogOrder = function(projectId, data) {\n var params, url;\n url = $urls.resolve(\"bulk-update-us-backlog-order\");\n params = {\n project_id: projectId,\n bulk_stories: data\n };\n return $http.post(url, params);\n };\n service.bulkUpdateSprintOrder = function(projectId, data) {\n var params, url;\n url = $urls.resolve(\"bulk-update-us-sprint-order\");\n params = {\n project_id: projectId,\n bulk_stories: data\n };\n return $http.post(url, params);\n };\n service.bulkUpdateKanbanOrder = function(projectId, data) {\n var params, url;\n url = $urls.resolve(\"bulk-update-us-kanban-order\");\n params = {\n project_id: projectId,\n bulk_stories: data\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.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.storeShowTags = function(projectId, showTags) {\n var hash;\n hash = generateHash([projectId, 'showTags']);\n return $storage.set(hash, showTags);\n };\n service.getShowTags = function(projectId) {\n var hash;\n hash = generateHash([projectId, 'showTags']);\n return $storage.get(hash) || null;\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\", resourceProvider]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/resources/wikis.coffee\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.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 * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/common/analytics.coffee\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 acount id provided. Disabling.\");\n return;\n }\n this.injectAnalytics();\n this.win.ga(\"create\", this.accountId, \"auto\");\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 return this.initialized = true;\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 return AnalyticsService;\n\n })(taiga.Service);\n\n module.service(\"$tgAnalytics\", AnalyticsService);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/resources/attachments.coffee\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($rootScope, $config, $urls, $model, $repo, $auth, $q) {\n var service;\n service = {};\n service.list = function(urlName, objectId, projectId) {\n var params;\n params = {\n object_id: objectId,\n project: projectId\n };\n return $repo.queryMany(urlName, params);\n };\n service.create = function(urlName, projectId, objectId, file) {\n var data, defered, maxFileSize, response, uploadComplete, uploadFailed, uploadProgress, xhr;\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 data, model;\n file.status = \"done\";\n try {\n data = JSON.parse(evt.target.responseText);\n } catch (_error) {\n data = {};\n }\n model = $model.make_model(urlName, data);\n return defered.resolve(model);\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 xhr = new XMLHttpRequest();\n xhr.upload.addEventListener(\"progress\", uploadProgress, false);\n xhr.addEventListener(\"load\", uploadComplete, false);\n xhr.addEventListener(\"error\", uploadFailed, false);\n xhr.open(\"POST\", $urls.resolve(urlName));\n xhr.setRequestHeader(\"Authorization\", \"Bearer \" + ($auth.getToken()));\n xhr.setRequestHeader('Accept', 'application/json');\n xhr.send(data);\n return defered.promise;\n };\n return function(instance) {\n return instance.attachments = service;\n };\n };\n\n module = angular.module(\"taigaResources\");\n\n module.factory(\"$tgAttachmentsResourcesProvider\", [\"$rootScope\", \"$tgConfig\", \"$tgUrls\", \"$tgModel\", \"$tgRepo\", \"$tgAuth\", \"$q\", resourceProvider]);\n\n}).call(this);\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 * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/common/components.coffee\n */\n\n(function() {\n var AssignedToDirective, BlockButtonDirective, CreatedByDisplayDirective, DateRangeDirective, DateSelectorDirective, DeleteButtonDirective, EditableDescriptionDirective, EditableSubjectDirective, ListItemAssignedtoDirective, ListItemIssueStatusDirective, ListItemPriorityDirective, ListItemSeverityDirective, ListItemTaskStatusDirective, ListItemTypeDirective, ListItemUsStatusDirective, SprintProgressBarDirective, TgMainTitleDirective, TgProgressBarDirective, WatchersDirective, bindOnce, module, taiga;\n\n taiga = this.taiga;\n\n bindOnce = this.taiga.bindOnce;\n\n module = angular.module(\"taigaCommon\");\n\n DateRangeDirective = function() {\n var link, renderRange;\n renderRange = function($el, first, second) {\n var endDate, initDate;\n initDate = moment(first).format(\"DD MMM YYYY\");\n endDate = moment(second).format(\"DD MMM YYYY\");\n return $el.html(initDate + \"-\" + endDate);\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\", DateRangeDirective);\n\n DateSelectorDirective = function() {\n var link;\n link = function($scope, $el, $attrs, $model) {\n var selectedDate;\n selectedDate = null;\n $el.picker = new Pikaday({\n field: $el[0],\n format: \"DD MMM YYYY\",\n onSelect: (function(_this) {\n return function(date) {\n return selectedDate = date;\n };\n })(this),\n onOpen: (function(_this) {\n return function() {\n if (selectedDate != null) {\n return $el.picker.setDate(selectedDate);\n }\n };\n })(this)\n });\n return $scope.$watch($attrs.ngModel, function(val) {\n if (val != null) {\n return $el.picker.setDate(val);\n }\n });\n };\n return {\n link: link,\n require: \"ngModel\"\n };\n };\n\n module.directive(\"tgDateSelector\", 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 return 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 };\n return {\n link: link\n };\n };\n\n module.directive(\"tgSprintProgressbar\", SprintProgressBarDirective);\n\n CreatedByDisplayDirective = function($template) {\n var link, template;\n template = $template.get(\"common/components/created-by.html\", true);\n link = function($scope, $el, $attrs) {\n var render;\n render = function(model) {\n var html, owner, ref;\n owner = ((ref = $scope.usersById) != null ? ref[model.owner] : void 0) || {\n full_name_display: \"external user\",\n photo: \"/images/unnamed.png\"\n };\n html = template({\n owner: owner,\n date: moment(model.created_date).format(\"DD MMM YYYY HH:mm\")\n });\n return $el.html(html);\n };\n bindOnce($scope, $attrs.ngModel, function(model) {\n if (model != null) {\n return render(model);\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(\"tgCreatedByDisplay\", [\"$tgTemplate\", CreatedByDisplayDirective]);\n\n WatchersDirective = function($rootscope, $confirm, $repo, $qqueue, $template) {\n var link, template;\n template = $template.get(\"common/components/watchers.html\", true);\n link = function($scope, $el, $attrs, $model) {\n var deleteWatcher, isEditable, renderWatchers, save;\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 save = $qqueue.bindAdd((function(_this) {\n return function(watchers) {\n var item, promise;\n item = $model.$modelValue.clone();\n item.watchers = watchers;\n $model.$setViewValue(item);\n promise = $repo.save($model.$modelValue);\n promise.then(function() {\n $confirm.notify(\"success\");\n watchers = _.map(watchers, function(watcherId) {\n return $scope.usersById[watcherId];\n });\n renderWatchers(watchers);\n return $rootscope.$broadcast(\"history:reload\");\n });\n return promise.then(null, function() {\n return $model.$modelValue.revert();\n });\n };\n })(this));\n deleteWatcher = $qqueue.bindAdd((function(_this) {\n return function(watcherIds) {\n var item, promise;\n item = $model.$modelValue.clone();\n item.watchers = watcherIds;\n $model.$setViewValue(item);\n promise = $repo.save($model.$modelValue);\n promise.then(function() {\n var watchers;\n $confirm.notify(\"success\");\n watchers = _.map(item.watchers, function(watcherId) {\n return $scope.usersById[watcherId];\n });\n renderWatchers(watchers);\n return $rootscope.$broadcast(\"history:reload\");\n });\n return promise.then(null, function() {\n item.revert();\n return $confirm.notify(\"error\");\n });\n };\n })(this));\n renderWatchers = function(watchers) {\n var ctx, html;\n ctx = {\n watchers: watchers,\n isEditable: isEditable()\n };\n html = template(ctx);\n $el.html(html);\n if (isEditable() && watchers.length === 0) {\n $el.find(\".title\").text(\"Add watchers\");\n return $el.find(\".watchers-header\").addClass(\"no-watchers\");\n }\n };\n $el.on(\"click\", \".icon-delete\", function(event) {\n var message, target, title, watcherId;\n event.preventDefault();\n if (!isEditable()) {\n return;\n }\n target = angular.element(event.currentTarget);\n watcherId = target.data(\"watcher-id\");\n title = \"Delete watcher\";\n message = $scope.usersById[watcherId].full_name_display;\n return $confirm.askOnDelete(title, message).then((function(_this) {\n return function(finish) {\n var watcherIds;\n finish();\n watcherIds = _.clone($model.$modelValue.watchers, false);\n watcherIds = _.pull(watcherIds, watcherId);\n return deleteWatcher(watcherIds);\n };\n })(this));\n });\n $el.on(\"click\", \".add-watcher\", function(event) {\n event.preventDefault();\n if (!isEditable()) {\n return;\n }\n return $scope.$apply(function() {\n return $rootscope.$broadcast(\"watcher:add\", $model.$modelValue);\n });\n });\n $scope.$on(\"watcher:added\", function(ctx, watcherId) {\n var watchers;\n watchers = _.clone($model.$modelValue.watchers, false);\n watchers.push(watcherId);\n watchers = _.uniq(watchers);\n return save(watchers);\n });\n $scope.$watch($attrs.ngModel, function(item) {\n var watchers;\n if (item == null) {\n return;\n }\n watchers = _.map(item.watchers, function(watcherId) {\n return $scope.usersById[watcherId];\n });\n return renderWatchers(watchers);\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(\"tgWatchers\", [\"$rootScope\", \"$tgConfirm\", \"$tgRepo\", \"$tgQqueue\", \"$tgTemplate\", WatchersDirective]);\n\n AssignedToDirective = function($rootscope, $confirm, $repo, $loading, $qqueue, $template) {\n var link, template;\n template = $template.get(\"common/components/assigned-to.html\", true);\n link = function($scope, $el, $attrs, $model) {\n var isEditable, renderAssignedTo, save;\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 save = $qqueue.bindAdd((function(_this) {\n return function(userId) {\n var promise;\n $model.$modelValue.assigned_to = userId;\n $loading.start($el);\n promise = $repo.save($model.$modelValue);\n promise.then(function() {\n $loading.finish($el);\n $confirm.notify(\"success\");\n renderAssignedTo($model.$modelValue);\n return $rootscope.$broadcast(\"history:reload\");\n });\n promise.then(null, function() {\n $model.$modelValue.revert();\n $confirm.notify(\"error\");\n return $loading.finish($el);\n });\n return promise;\n };\n })(this));\n renderAssignedTo = function(issue) {\n var assignedTo, assignedToId, ctx, html;\n assignedToId = issue != null ? issue.assigned_to : void 0;\n assignedTo = assignedToId != null ? $scope.usersById[assignedToId] : null;\n ctx = {\n assignedTo: assignedTo,\n isEditable: isEditable()\n };\n html = template(ctx);\n return $el.html(html);\n };\n $el.on(\"click\", \".user-assigned\", function(event) {\n event.preventDefault();\n if (!isEditable()) {\n return;\n }\n return $scope.$apply(function() {\n return $rootscope.$broadcast(\"assigned-to:add\", $model.$modelValue);\n });\n });\n $el.on(\"click\", \".icon-delete\", function(event) {\n var title;\n event.preventDefault();\n if (!isEditable()) {\n return;\n }\n title = \"Are you sure you want to leave it unassigned?\";\n return $confirm.ask(title).then((function(_this) {\n return function(finish) {\n finish();\n $model.$modelValue.assigned_to = null;\n return save(null);\n };\n })(this));\n });\n $scope.$on(\"assigned-to:added\", function(ctx, userId, item) {\n if (item.id !== $model.$modelValue.id) {\n return;\n }\n return save(userId);\n });\n $scope.$watch($attrs.ngModel, function(instance) {\n return renderAssignedTo(instance);\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(\"tgAssignedTo\", [\"$rootScope\", \"$tgConfirm\", \"$tgRepo\", \"$tgLoading\", \"$tgQqueue\", \"$tgTemplate\", AssignedToDirective]);\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 if (isEditable()) {\n $el.find('.item-block').addClass('editable');\n }\n if (item.is_blocked) {\n $el.find('.item-block').hide();\n return $el.find('.item-unblock').show();\n } else {\n $el.find('.item-block').show();\n return $el.find('.item-unblock').hide();\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 finish;\n event.preventDefault();\n $loading.start($el.find(\".item-unblock\"));\n finish = function() {\n return $loading.finish($el.find(\".item-unblock\"));\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\", function(event) {\n var subtitle, title;\n title = $scope.$eval($attrs.onDeleteTitle);\n subtitle = $model.$modelValue.subject;\n return $confirm.askOnDelete(title, subtitle).then((function(_this) {\n return function(finish) {\n var promise;\n promise = $repo.remove($model.$modelValue);\n promise.then(function() {\n var url;\n finish();\n url = $scope.$eval($attrs.onDeleteGoToUrl);\n return $location.path(url);\n });\n return promise.then(null, function() {\n 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 EditableSubjectDirective = function($rootscope, $repo, $confirm, $loading, $qqueue, $template) {\n var link, template;\n template = $template.get(\"common/components/editable-subject.html\");\n link = function($scope, $el, $attrs, $model) {\n var isEditable, save;\n isEditable = function() {\n return $scope.project.my_permissions.indexOf($attrs.requiredPerm) !== -1;\n };\n save = $qqueue.bindAdd((function(_this) {\n return function(subject) {\n var promise;\n $model.$modelValue.subject = subject;\n $loading.start($el.find('.save-container'));\n promise = $repo.save($model.$modelValue);\n promise.then(function() {\n $confirm.notify(\"success\");\n $rootscope.$broadcast(\"history:reload\");\n $el.find('.edit-subject').hide();\n return $el.find('.view-subject').show();\n });\n promise.then(null, function() {\n return $confirm.notify(\"error\");\n });\n promise[\"finally\"](function() {\n return $loading.finish($el.find('.save-container'));\n });\n return promise;\n };\n })(this));\n $el.click(function() {\n if (!isEditable()) {\n return;\n }\n $el.find('.edit-subject').show();\n $el.find('.view-subject').hide();\n return $el.find('input').focus();\n });\n $el.on(\"click\", \".save\", function() {\n var subject;\n subject = $scope.item.subject;\n return save(subject);\n });\n $el.on(\"keyup\", \"input\", function(event) {\n var subject;\n if (event.keyCode === 13) {\n subject = $scope.item.subject;\n return save(subject);\n } else if (event.keyCode === 27) {\n $scope.$apply((function(_this) {\n return function() {\n return $model.$modelValue.revert();\n };\n })(this));\n $el.find('div.edit-subject').hide();\n return $el.find('div.view-subject').show();\n }\n });\n $el.find('div.edit-subject').hide();\n $el.find('div.view-subject span.edit').hide();\n $scope.$watch($attrs.ngModel, function(value) {\n if (!value) {\n return;\n }\n $scope.item = value;\n if (!isEditable()) {\n return $el.find('.view-subject .edit').remove();\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 template: template\n };\n };\n\n module.directive(\"tgEditableSubject\", [\"$rootScope\", \"$tgRepo\", \"$tgConfirm\", \"$tgLoading\", \"$tgQqueue\", \"$tgTemplate\", EditableSubjectDirective]);\n\n EditableDescriptionDirective = function($rootscope, $repo, $confirm, $compile, $loading, $selectedText, $qqueue, $template) {\n var link, noDescriptionMegEditMode, noDescriptionMegReadMode, template;\n template = $template.get(\"common/components/editable-description.html\");\n noDescriptionMegEditMode = $template.get(\"common/components/editable-description-msg-edit-mode.html\");\n noDescriptionMegReadMode = $template.get(\"common/components/editable-description-msg-read-mode.html\");\n link = function($scope, $el, $attrs, $model) {\n var isEditable, save;\n $el.find('.edit-description').hide();\n $el.find('.view-description .edit').hide();\n isEditable = function() {\n return $scope.project.my_permissions.indexOf($attrs.requiredPerm) !== -1;\n };\n save = $qqueue.bindAdd((function(_this) {\n return function(description) {\n var promise;\n $model.$modelValue.description = description;\n $loading.start($el.find('.save-container'));\n promise = $repo.save($model.$modelValue);\n promise.then(function() {\n $confirm.notify(\"success\");\n $rootscope.$broadcast(\"history:reload\");\n $el.find('.edit-description').hide();\n return $el.find('.view-description').show();\n });\n promise.then(null, function() {\n return $confirm.notify(\"error\");\n });\n return promise[\"finally\"](function() {\n return $loading.finish($el.find('.save-container'));\n });\n };\n })(this));\n $el.on(\"mouseup\", \".view-description\", function(event) {\n var target;\n target = angular.element(event.target);\n if (!isEditable()) {\n return;\n }\n if (target.is('a')) {\n return;\n }\n if ($selectedText.get().length) {\n return;\n }\n $el.find('.edit-description').show();\n $el.find('.view-description').hide();\n return $el.find('textarea').focus();\n });\n $el.on(\"click\", \".save\", function(e) {\n var description;\n e.preventDefault();\n description = $scope.item.description;\n return save(description);\n });\n $el.on(\"keydown\", \"textarea\", function(event) {\n if (event.keyCode === 27) {\n $scope.$apply((function(_this) {\n return function() {\n return $scope.item.revert();\n };\n })(this));\n $el.find('.edit-description').hide();\n return $el.find('.view-description').show();\n }\n });\n $scope.$watch($attrs.ngModel, function(value) {\n if (!value) {\n return;\n }\n $scope.item = value;\n if (isEditable()) {\n $el.find('.view-description .edit').show();\n $el.find('.view-description .us-content').addClass('editable');\n return $scope.noDescriptionMsg = noDescriptionMegEditMode;\n } else {\n return $scope.noDescriptionMsg = noDescriptionMegReadMode;\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 template: template\n };\n };\n\n module.directive(\"tgEditableDescription\", [\"$rootScope\", \"$tgRepo\", \"$tgConfirm\", \"$compile\", \"$tgLoading\", \"$selectedText\", \"$tgQqueue\", \"$tgTemplate\", EditableDescriptionDirective]);\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.html(issueStatusById[issue.status].name);\n });\n };\n return {\n link: link\n };\n };\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.html(taskStatusById[task.status].name);\n });\n };\n return {\n link: link\n };\n };\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.html(usStatusById[us.status].name);\n });\n };\n return {\n link: link\n };\n };\n\n ListItemAssignedtoDirective = function($template) {\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, \"membersById\", function(membersById) {\n var ctx, item, member;\n item = $scope.$eval($attrs.tgListitemAssignedto);\n ctx = {\n name: \"Unassigned\",\n imgurl: \"/images/unnamed.png\"\n };\n member = membersById[item.assigned_to];\n if (member) {\n ctx.imgurl = member.photo;\n ctx.name = member.full_name;\n }\n return $el.html(template(ctx));\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgListitemAssignedto\", [\"$tgTemplate\", ListItemAssignedtoDirective]);\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 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 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($template) {\n var link, render, template;\n template = $template.get(\"common/components/main-title.html\", true);\n render = function(el, projectName, sectionName) {\n return el.html(template({\n projectName: projectName,\n sectionName: sectionName\n }));\n };\n link = function($scope, $el, $attrs) {\n var element;\n element = angular.element($el);\n $scope.$watch(\"project\", function(project) {\n if (project) {\n return render($el, project.name, $scope.sectionName);\n }\n });\n $scope.$on(\"project:loaded\", (function(_this) {\n return function(ctx, project) {\n return render($el, project.name, $scope.sectionName);\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(\"tgMainTitle\", [\"$tgTemplate\", TgMainTitleDirective]);\n\n module.directive(\"tgListitemType\", ListItemTypeDirective);\n\n module.directive(\"tgListitemIssueStatus\", ListItemIssueStatusDirective);\n\n module.directive(\"tgListitemSeverity\", ListItemSeverityDirective);\n\n module.directive(\"tgListitemTaskStatus\", ListItemTaskStatusDirective);\n\n module.directive(\"tgListitemUsStatus\", ListItemUsStatusDirective);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/base/confirm.coffee\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: \"Everything is ok\",\n message: \"Our Oompa Loompas saved all your changes!\"\n },\n \"error\": {\n title: \"Oops, something happened...\",\n message: \"Our Oompa Loompas are sad, your changes were not saved!\"\n },\n \"light-error\": {\n title: \"Oops, something happened...\",\n message: \"Our Oompa Loompas are sad, your changes were not saved!\"\n }\n };\n\n ConfirmService = (function(superClass) {\n extend(ConfirmService, superClass);\n\n ConfirmService.$inject = [\"$q\", \"lightboxService\", \"$tgLoading\"];\n\n function ConfirmService(q, lightboxService, loading) {\n this.q = q;\n this.lightboxService = lightboxService;\n this.loading = loading;\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;\n if (lightboxSelector == null) {\n lightboxSelector = \".lightbox-generic-ask\";\n }\n el = angular.element(lightboxSelector);\n el.find(\"h2.title\").html(title);\n el.find(\"span.subtitle\").html(subtitle);\n el.find(\"span.message\").html(message);\n defered = this.q.defer();\n el.on(\"click.confirm-dialog\", \"a.button-green\", debounce(2000, (function(_this) {\n return function(event) {\n var target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n _this.loading.start(target);\n return defered.resolve(function(ok) {\n if (ok == null) {\n ok = true;\n }\n _this.loading.finish(target);\n if (ok) {\n return _this.hide(el);\n }\n });\n };\n })(this)));\n el.on(\"click.confirm-dialog\", \"a.button-red\", (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.askOnDelete = function(title, message) {\n return this.ask(title, \"Are you sure you want to delete?\", 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 el = angular.element(lightboxSelector);\n el.find(\".title\").html(title);\n el.find(\".subtitle\").html(subtitle);\n if (replacement) {\n el.find(\".replacement\").html(replacement);\n } else {\n el.find(\".replacement\").remove();\n }\n if (warning) {\n el.find(\".warning\").html(warning);\n } else {\n el.find(\".warning\").remove();\n }\n choicesField = el.find(\".choices\");\n choicesField.html('');\n _.each(choices, function(value, key) {\n return choicesField.append(angular.element(\"\"));\n });\n defered = this.q.defer();\n el.on(\"click.confirm-dialog\", \"a.button-green\", debounce(2000, (function(_this) {\n return function(event) {\n var target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n _this.loading.start(target);\n return defered.resolve({\n selected: choicesField.val(),\n finish: function() {\n _this.loading.finish(target);\n return _this.hide(el);\n }\n });\n };\n })(this)));\n el.on(\"click.confirm-dialog\", \"a.button-red\", (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 el = angular.element(\".lightbox-generic-error\");\n el.find(\"h2.title\").html(message);\n defered = this.q.defer();\n el.on(\"click.confirm-dialog\", \"a.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\", \"a.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) {\n var defered, el;\n el = angular.element(\".lightbox-generic-success\");\n if (title) {\n el.find(\"h2.title\").html(title);\n }\n if (message) {\n el.find(\"p.message\").html(message);\n }\n defered = this.q.defer();\n el.on(\"click.confirm-dialog\", \"a.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\", \"a.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) {\n var el;\n el = angular.element(\".lightbox-generic-loading\");\n if (title) {\n el.find(\"h2.title\").html(title);\n }\n if (message) {\n el.find(\"p.message\").html(message);\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(\"h2.title\").html(title);\n }\n if (message) {\n el.find(\"p.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(NOTIFICATION_MSG[type].title);\n }\n if (message) {\n el.find(\"p\").html(message);\n } else {\n el.find(\"p\").html(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');\n return delete _this.tsem;\n };\n })(this));\n return el.on(\"click\", \".icon-delete\", (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 * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/common/custom-field-values.coffee\n */\n\n(function() {\n var CustomAttributeValueDirective, CustomAttributesValuesController, CustomAttributesValuesDirective, 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 CustomAttributesValuesController = (function(superClass) {\n extend(CustomAttributesValuesController, superClass);\n\n CustomAttributesValuesController.$inject = [\"$scope\", \"$rootScope\", \"$tgRepo\", \"$tgResources\", \"$tgConfirm\", \"$q\"];\n\n function CustomAttributesValuesController(scope, rootscope, repo, rs, confirm, q) {\n this.scope = scope;\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;\n $ctrl = $ctrls[0];\n $model = $ctrls[1];\n bindOnce($scope, $attrs.ngModel, function(value) {\n $ctrl.initialize($attrs.type, value.id);\n return $ctrl.loadCustomAttributesValues();\n });\n $el.on(\"click\", \".custom-fields-header a\", function() {\n var collapsed, hash;\n hash = collapsedHash($attrs.type);\n collapsed = !($storage.get(hash) || false);\n $storage.set(hash, collapsed);\n if (collapsed) {\n $el.find(\".custom-fields-header a\").removeClass(\"open\");\n return $el.find(\".custom-fields-body\").removeClass(\"open\");\n } else {\n $el.find(\".custom-fields-header a\").addClass(\"open\");\n return $el.find(\".custom-fields-body\").addClass(\"open\");\n }\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n templateFn = function($el, $attrs) {\n var collapsed;\n collapsed = $storage.get(collapsedHash($attrs.type)) || false;\n return template({\n requiredEditionPerm: $attrs.requiredEditionPerm,\n collapsed: collapsed\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\", CustomAttributesValuesDirective]);\n\n CustomAttributeValueDirective = function($template, $selectedText) {\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, render, saveAttributeValue, submit;\n render = function(attributeValue, edit) {\n var ctx, editable, html, value;\n if (edit == null) {\n edit = false;\n }\n value = attributeValue.value;\n editable = isEditable();\n ctx = {\n id: attributeValue.id,\n name: attributeValue.name,\n description: attributeValue.description,\n value: value,\n isEditable: editable\n };\n if (editable && (edit || !value)) {\n html = templateEdit(ctx);\n } else {\n html = template(ctx);\n }\n return $el.html(html);\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 saveAttributeValue = function() {\n attributeValue.value = $el.find(\"input\").val();\n return $scope.$apply(function() {\n return $ctrl.updateAttributeValue(attributeValue).then(function() {\n return render(attributeValue, false);\n });\n });\n };\n $el.on(\"keyup\", \"input[name=description]\", function(event) {\n if (event.keyCode === 13) {\n return submit(event);\n } else if (event.keyCode === 27) {\n return render(attributeValue, false);\n }\n });\n $el.on(\"click\", \".custom-field-value.read-mode\", function() {\n if (!isEditable()) {\n return;\n }\n if ($selectedText.get().length) {\n return;\n }\n render(attributeValue, true);\n return $el.find(\"input[name='description']\").focus().select();\n });\n $el.on(\"click\", \"a.icon-edit\", function(event) {\n event.preventDefault();\n render(attributeValue, true);\n return $el.find(\"input[name='description']\").focus().select();\n });\n submit = debounce(2000, (function(_this) {\n return function(event) {\n event.preventDefault();\n return saveAttributeValue();\n };\n })(this));\n $el.on(\"submit\", \"form\", submit);\n $el.on(\"click\", \"a.icon-floppy\", submit);\n $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n attributeValue = $scope.$eval($attrs.tgCustomAttributeValue);\n return render(attributeValue);\n };\n return {\n link: link,\n require: \"^tgCustomAttributesValues\",\n restrict: \"AE\"\n };\n };\n\n module.directive(\"tgCustomAttributeValue\", [\"$tgTemplate\", \"$selectedText\", CustomAttributeValueDirective]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/common/estimation.coffee\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, $confirm, $template) {\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) {\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 };\n mainTemplate = \"common/estimation/us-estimation-points-per-role.html\";\n template = $template.get(mainTemplate, true);\n html = template(ctx);\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\", \"$tgConfirm\", \"$tgTemplate\", LbUsEstimationDirective]);\n\n UsEstimationDirective = function($tgEstimationsService, $rootScope, $repo, $confirm, $qqueue, $template) {\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) {\n return this.save(roleId, pointId).then(function() {\n return $rootScope.$broadcast(\"history:reload\");\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 };\n mainTemplate = \"common/estimation/us-estimation-points-per-role.html\";\n template = $template.get(mainTemplate, true);\n html = template(ctx);\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\", \"$tgConfirm\", \"$tgQqueue\", \"$tgTemplate\", UsEstimationDirective]);\n\n EstimationsService = function($template, $qqueue, $repo, $confirm, $q) {\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.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 $confirm.notify(\"success\");\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 \"0\";\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 _this.us.points = points;\n _this.render();\n return _this.onSelectedPointForRole(roleId, pointId);\n };\n })(this));\n };\n\n EstimationProcess.prototype.renderPointsSelector = function(roleId, target) {\n var horizontalList, html, maxPointLength, points;\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 return this.$el.find(\".pop-points-open\").show();\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\", \"$tgQqueue\", \"$tgRepo\", \"$tgConfirm\", \"$q\", EstimationsService]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/base/filters.coffee\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 * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/resources/history.coffee\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(type, objectId) {\n return $repo.queryOneRaw(\"history/\" + type, objectId);\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 * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/common/importer.coffee\n */\n\n(function() {\n var ImportProjectButtonDirective, module;\n\n module = angular.module(\"taigaCommon\");\n\n ImportProjectButtonDirective = function($rs, $confirm, $location, $navUrls) {\n var link;\n link = function($scope, $el, $attrs) {\n $el.on(\"click\", \".import-project-button\", function(event) {\n event.preventDefault();\n $el.find(\"input.import-file\").val(\"\");\n return $el.find(\"input.import-file\").trigger(\"click\");\n });\n return $el.on(\"change\", \"input.import-file\", function(event) {\n var file, loader, onError, onSuccess;\n event.preventDefault();\n file = event.target.files[0];\n if (!file) {\n return;\n }\n loader = $confirm.loader(\"Uploading dump file\");\n onSuccess = function(result) {\n var ctx, message, title;\n loader.stop();\n if (result.status === 202) {\n title = \"Our Oompa Loompas are importing your project\";\n message = \"This process could take a few minutes
We will send you an email when ready\";\n return $confirm.success(title, message);\n } else {\n ctx = {\n project: result.data.slug\n };\n $location.path($navUrls.resolve(\"project-admin-project-profile-details\", ctx));\n return $confirm.notify(\"success\", \"Your project has been imported successfuly.\");\n }\n };\n onError = function(result) {\n var errorMsg, ref;\n loader.stop();\n console.log(\"Error\", result);\n errorMsg = \"Our oompa loompas have some problems importing your dump data. Please try again. \";\n if (result.status === 429) {\n errorMsg = \"Sorry, our oompa loompas are very busy right now. Please try again in a few minutes. \";\n } else if ((ref = result.data) != null ? ref._error_message : void 0) {\n errorMsg = \"Our oompa loompas have some problems importing your dump data: \" + result.data._error_message;\n }\n return $confirm.notify(\"error\", errorMsg);\n };\n loader.start();\n return $rs.projects[\"import\"](file, loader.update).then(onSuccess, onError);\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgImportProjectButton\", [\"$tgResources\", \"$tgConfirm\", \"$location\", \"$tgNavUrls\", ImportProjectButtonDirective]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/issues/lightboxes.coffee\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) {\n var link;\n link = function($scope, $el, $attrs) {\n var submit;\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 promise;\n promise = $repo.remove($scope.user);\n promise.then(function(data) {\n lightboxService.close($el);\n $auth.logout();\n return $location.path($navUrls.resolve(\"login\"));\n });\n return promise.then(null, function() {\n return console.log(\"FAIL\");\n });\n };\n $el.on(\"click\", \".button-red\", function(event) {\n event.preventDefault();\n return lightboxService.close($el);\n });\n return $el.on(\"click\", \".button-green\", debounce(2000, function(event) {\n event.preventDefault();\n return submit();\n }));\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\", DeleteUserDirective]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n * Copyright (C) 2014 Juan Francisco Alcántara \n * Copyright (C) 2014 Alejandro Alonso \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/common/loader.coffee\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 tgLoader.onEnd(function() {\n $(document.body).removeClass(\"loader-active\");\n return $el.removeClass(\"active\");\n });\n $rootscope.$on(\"$routeChangeSuccess\", function(e) {\n return tgLoader.startCurrentPageLoader();\n });\n return $rootscope.$on(\"$locationChangeSuccess\", function(e) {\n return tgLoader.reset();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgLoader\", [\"tgLoader\", \"$rootScope\", LoaderDirective]);\n\n Loader = function() {\n var config, defaultConfig, forceDisabled;\n forceDisabled = false;\n defaultConfig = {\n enabled: false,\n minTime: 300\n };\n config = _.merge({}, defaultConfig);\n this.add = function() {\n return function() {\n if (!forceDisabled) {\n return config.enabled = true;\n }\n };\n };\n this.$get = [\n \"$rootScope\", function($rootscope) {\n var pageLoaded, reset, start, startLoadTime;\n startLoadTime = 0;\n reset = function() {\n return config = _.merge({}, defaultConfig);\n };\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 return timeout(timeoutValue, function() {\n return $rootscope.$broadcast(\"loader:end\");\n });\n }\n };\n start = function() {\n startLoadTime = new Date().getTime();\n return $rootscope.$broadcast(\"loader:start\");\n };\n return {\n reset: reset,\n pageLoaded: pageLoaded,\n start: start,\n startCurrentPageLoader: function() {\n if (config.enabled) {\n return start();\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 preventLoading: function() {\n return forceDisabled = true;\n },\n disablePreventLoading: function() {\n return forceDisabled = false;\n }\n };\n }\n ];\n };\n\n module.provider(\"tgLoader\", [Loader]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/lightboxes.coffee\n */\n\n(function() {\n var TgLoadingService, 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 TgLoadingService = (function(superClass) {\n extend(TgLoadingService, superClass);\n\n function TgLoadingService() {\n return TgLoadingService.__super__.constructor.apply(this, arguments);\n }\n\n TgLoadingService.prototype.start = function(target) {\n if (!target.hasClass('loading')) {\n target.data('loading-old-content', target.html());\n target.addClass('loading');\n return target.html(\"loading...\");\n }\n };\n\n TgLoadingService.prototype.finish = function(target) {\n var oldContent;\n if (target.hasClass('loading')) {\n oldContent = target.data('loading-old-content');\n target.data('loading-old-content', null);\n target.html(oldContent);\n return target.removeClass('loading');\n }\n };\n\n return TgLoadingService;\n\n })(taiga.Service);\n\n module.service(\"$tgLoading\", TgLoadingService);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/common/popovers.coffee\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\", \".status\", debounce(2000, function(event) {\n var target, us;\n event.preventDefault();\n event.stopPropagation();\n target = angular.element(event.currentTarget);\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 });\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 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}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/common/raven-logger.coffee\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 * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/common/tags.coffee\n */\n\n(function() {\n var ColorizeTagsDirective, LbTagLineDirective, TagLineDirective, 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 _.str.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 ColorizeTagsDirective = function() {\n var link, templates;\n templates = {\n backlog: _.template(\"<% _.each(tags, function(tag) { %>\\n \\\"><%- tag.name %>\\n<% }) %>\"),\n kanban: _.template(\"<% _.each(tags, function(tag) { %>\\n \\\" title=\\\"<%- tag.name %>\\\" />\\n<% }) %>\"),\n taskboard: _.template(\"<% _.each(tags, function(tag) { %>\\n \\\" title=\\\"<%- tag.name %>\\\" />\\n<% }) %>\")\n };\n link = function($scope, $el, $attrs, $ctrl) {\n var render;\n render = function(srcTags) {\n var html, tags, template;\n template = templates[$attrs.tgColorizeTagsType];\n srcTags.sort();\n tags = _.map(srcTags, function(tag) {\n var color;\n color = $scope.project.tags_colors[tag];\n return {\n name: tag,\n color: color\n };\n });\n html = template({\n tags: tags\n });\n return $el.html(html);\n };\n $scope.$watch($attrs.tgColorizeTags, 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(\"tgColorizeTags\", ColorizeTagsDirective);\n\n LbTagLineDirective = function($rs, $template) {\n var COMMA_KEY, ENTER_KEY, link, templateTags;\n ENTER_KEY = 13;\n COMMA_KEY = 188;\n templateTags = $template.get(\"common/tag/lb-tag-line-tags.html\", true);\n link = function($scope, $el, $attrs, $model) {\n var addValue, deleteValue, hideSaveButton, removeInputLastCharacter, renderTags, resetInput, saveInputTag, showSaveButton;\n renderTags = function(tags, tagsColors) {\n var ctx, html;\n ctx = {\n tags: _.map(tags, function(t) {\n return {\n name: t,\n color: tagsColors[t]\n };\n })\n };\n _.map(ctx.tags, (function(_this) {\n return function(tag) {\n if (tag.color) {\n return tag.style = \"border-left: 5px solid \" + tag.color;\n }\n };\n })(this));\n html = templateTags(ctx);\n return $el.find(\"div.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 $el.find(\"input\").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 removeInputLastCharacter = (function(_this) {\n return function(input) {\n var inputValue;\n inputValue = input.val();\n return input.val(inputValue.substring(0, inputValue.length - 1));\n };\n })(this);\n $el.on(\"keypress\", \"input\", function(event) {\n if (event.keyCode !== ENTER_KEY) {\n return;\n }\n return event.preventDefault();\n });\n $el.on(\"keyup\", \"input\", function(event) {\n var target;\n target = angular.element(event.currentTarget);\n if (event.keyCode === ENTER_KEY) {\n return saveInputTag();\n } else if (event.keyCode === COMMA_KEY) {\n removeInputLastCharacter(target);\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\", \".icon-delete\", 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 positioningFunction;\n positioningFunction = function(position, elements) {\n var menu;\n menu = elements.element.element;\n menu.css(\"width\", elements.target.width);\n menu.css(\"top\", position.top);\n return menu.css(\"left\", position.left);\n };\n return $el.find(\"input\").autocomplete({\n source: _.keys(project.tags_colors),\n position: {\n my: \"left top\",\n using: positioningFunction\n },\n select: function(event, ui) {\n addValue(ui.item.value);\n return ui.item.value = \"\";\n }\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\", LbTagLineDirective]);\n\n TagLineDirective = function($rootScope, $repo, $rs, $confirm, $qqueue, $template) {\n var COMMA_KEY, ENTER_KEY, ESC_KEY, link, templateTags;\n ENTER_KEY = 13;\n ESC_KEY = 27;\n COMMA_KEY = 188;\n templateTags = $template.get(\"common/tag/tags-line-tags.html\", true);\n link = function($scope, $el, $attrs, $model) {\n var addValue, deleteValue, hideAddTagButton, hideAddTagButtonText, hideInput, hideSaveButton, isEditable, removeInputLastCharacter, renderInReadModeOnly, renderTags, resetInput, saveInputTag, showAddTagButton, showAddTagButtonText, showInput, showSaveButton;\n isEditable = function() {\n return $scope.project.my_permissions.indexOf($attrs.requiredPerm) !== -1;\n };\n renderTags = function(tags, tagsColors) {\n var ctx, html;\n ctx = {\n tags: _.map(tags, function(t) {\n return {\n name: t,\n color: tagsColors[t]\n };\n }),\n isEditable: isEditable()\n };\n html = templateTags(ctx);\n return $el.find(\"div.tags-container\").html(html);\n };\n renderInReadModeOnly = function() {\n $el.find(\".add-tag\").remove();\n $el.find(\"input\").remove();\n return $el.find(\".save\").remove();\n };\n showAddTagButton = function() {\n return $el.find(\".add-tag\").removeClass(\"hidden\");\n };\n hideAddTagButton = function() {\n return $el.find(\".add-tag\").addClass(\"hidden\");\n };\n showAddTagButtonText = function() {\n return $el.find(\".add-tag-text\").removeClass(\"hidden\");\n };\n hideAddTagButtonText = function() {\n return $el.find(\".add-tag-text\").addClass(\"hidden\");\n };\n showSaveButton = function() {\n return $el.find(\".save\").removeClass(\"hidden\");\n };\n hideSaveButton = function() {\n return $el.find(\".save\").addClass(\"hidden\");\n };\n showInput = function() {\n return $el.find(\"input\").removeClass(\"hidden\").focus();\n };\n hideInput = function() {\n return $el.find(\"input\").addClass(\"hidden\").blur();\n };\n resetInput = function() {\n $el.find(\"input\").val(\"\");\n return $el.find(\"input\").autocomplete(\"close\");\n };\n addValue = $qqueue.bindAdd(function(value) {\n var model, onError, onSuccess, tags;\n value = trim(value.toLowerCase());\n if (value.length === 0) {\n return;\n }\n tags = _.clone($model.$modelValue.tags, false);\n if (tags == null) {\n tags = [];\n }\n if (indexOf.call(tags, value) < 0) {\n tags.push(value);\n }\n model = $model.$modelValue.clone();\n model.tags = tags;\n $model.$setViewValue(model);\n onSuccess = function() {\n return $rootScope.$broadcast(\"history:reload\");\n };\n onError = function() {\n $confirm.notify(\"error\");\n model.revert();\n return $model.$setViewValue(model);\n };\n $repo.save(model).then(onSuccess, onError);\n return hideSaveButton();\n });\n deleteValue = $qqueue.bindAdd(function(value) {\n var model, onError, onSuccess, tags;\n value = trim(value.toLowerCase());\n if (value.length === 0) {\n return;\n }\n tags = _.clone($model.$modelValue.tags, false);\n tags = _.pull(tags, value);\n model = $model.$modelValue.clone();\n model.tags = tags;\n $model.$setViewValue(model);\n onSuccess = function() {\n return $rootScope.$broadcast(\"history:reload\");\n };\n onError = function() {\n $confirm.notify(\"error\");\n model.revert();\n return $model.$setViewValue(model);\n };\n return $repo.save(model).then(onSuccess, onError);\n });\n saveInputTag = function() {\n var value;\n value = $el.find(\"input\").val();\n addValue(value);\n return resetInput();\n };\n removeInputLastCharacter = (function(_this) {\n return function(input) {\n var inputValue;\n inputValue = input.val();\n return input.val(inputValue.substring(0, inputValue.length - 1));\n };\n })(this);\n $el.on(\"keypress\", \"input\", function(event) {\n var ref;\n if ((ref = event.keyCode) !== ENTER_KEY && ref !== ESC_KEY) {\n return;\n }\n return event.preventDefault();\n });\n $el.on(\"keyup\", \"input\", function(event) {\n var target;\n target = angular.element(event.currentTarget);\n if (event.keyCode === ENTER_KEY) {\n return saveInputTag();\n } else if (event.keyCode === COMMA_KEY) {\n removeInputLastCharacter(target);\n return saveInputTag();\n } else if (event.keyCode === ESC_KEY) {\n resetInput();\n hideInput();\n hideSaveButton();\n return showAddTagButton();\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\", \".add-tag\", function(event) {\n event.preventDefault();\n hideAddTagButton();\n return showInput();\n });\n $el.on(\"click\", \".icon-delete\", 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 positioningFunction;\n if (!isEditable()) {\n renderInReadModeOnly();\n return;\n }\n showAddTagButton();\n positioningFunction = function(position, elements) {\n var menu;\n menu = elements.element.element;\n menu.css(\"width\", elements.target.width);\n menu.css(\"top\", position.top);\n return menu.css(\"left\", position.left);\n };\n return $el.find(\"input\").autocomplete({\n source: _.keys(project.tags_colors),\n position: {\n my: \"left top\",\n using: positioningFunction\n },\n select: function(event, ui) {\n addValue(ui.item.value);\n return ui.item.value = \"\";\n }\n });\n });\n $scope.$watch($attrs.ngModel, function(model) {\n var ref, ref1, tagsColors;\n if (!model) {\n return;\n }\n if ((ref = model.tags) != null ? ref.length : void 0) {\n hideAddTagButtonText();\n } else {\n showAddTagButtonText();\n }\n tagsColors = ((ref1 = $scope.project) != null ? ref1.tags_colors : void 0) || [];\n return renderTags(model.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/tag-line.html\"\n };\n };\n\n module.directive(\"tgTagLine\", [\"$rootScope\", \"$tgRepo\", \"$tgResources\", \"$tgConfirm\", \"$tgQqueue\", \"$tgTemplate\", TagLineDirective]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/common/wisiwyg.coffee\n */\n\n(function() {\n var bindOnce, module, taiga, tgMarkitupDirective,\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 bindOnce = this.taiga.bindOnce;\n\n module = angular.module(\"taigaCommon\");\n\n tgMarkitupDirective = function($rootscope, $rs, $tr, $selectedText, $template) {\n var link, previewTemplate;\n previewTemplate = $template.get(\"common/wysiwyg/wysiwyg-markitup-preview.html\", true);\n link = function($scope, $el, $attrs, $model) {\n var addLine, closePreviewMode, element, markdownSettings, markdownTitle, prepareUrlFormatting, preview, previewDomNode, setCaretPosition, urlFormatting;\n element = angular.element($el);\n previewDomNode = $(\"
\", {\n \"class\": \"preview\"\n });\n closePreviewMode = function() {\n element.parents(\".markdown\").find(\".preview\").remove();\n return element.parents(\".markItUp\").show();\n };\n $scope.$on(\"markdown-editor:submit\", function() {\n return closePreviewMode();\n });\n preview = function() {\n var markItUpDomNode, markdownDomNode;\n markdownDomNode = element.parents(\".markdown\");\n markItUpDomNode = element.parents(\".markItUp\");\n return $rs.mdrender.render($scope.projectId, $model.$modelValue).then(function(data) {\n var markdown;\n markdownDomNode.append(previewTemplate({\n data: data.data\n }));\n markItUpDomNode.hide();\n markdown = element.closest(\".markdown\");\n return markdown.on(\"mouseup.preview\", \".preview\", function(event) {\n var target;\n event.preventDefault();\n target = angular.element(event.target);\n if (!target.is('a') && $selectedText.get().length) {\n return;\n }\n markdown.off(\".preview\");\n return closePreviewMode();\n });\n });\n };\n setCaretPosition = function(textarea, caretPosition) {\n var line, range, scrollRelation, totalLines;\n if (textarea.createTextRange) {\n range = textarea.createTextRange();\n range.move(\"character\", caretPosition);\n range.select();\n } else if (textarea.selectionStart) {\n textarea.focus();\n textarea.setSelectionRange(caretPosition, caretPosition);\n }\n totalLines = textarea.value.split(\"\\n\").length;\n line = textarea.value.slice(0, +(caretPosition - 1) + 1 || 9e9).split(\"\\n\").length;\n scrollRelation = line / totalLines;\n return $el.scrollTop((scrollRelation * $el[0].scrollHeight) - ($el.height() / 2));\n };\n addLine = function(textarea, nline, replace) {\n var cursorPosition, j, key, len, line, lines;\n lines = textarea.value.split(\"\\n\");\n if (replace) {\n lines[nline] = replace + lines[nline];\n } else {\n lines[nline] = \"\";\n }\n cursorPosition = 0;\n for (key = j = 0, len = lines.length; j < len; key = ++j) {\n line = lines[key];\n cursorPosition += line.length + 1 || 1;\n if (key === nline) {\n break;\n }\n }\n textarea.value = lines.join(\"\\n\");\n if (replace) {\n return cursorPosition - lines[nline].length + replace.length - 1;\n } else {\n return cursorPosition;\n }\n };\n markdownSettings = {\n nameSpace: \"markdown\",\n onShiftEnter: {\n keepDefault: false,\n openWith: \"\\n\\n\"\n },\n onEnter: {\n keepDefault: false,\n replaceWith: function() {\n return \"\\n\";\n },\n afterInsert: function(data) {\n var cursorLine, emptyListItem, lastLine, lines, markdownCaretPositon, match, newLineContent;\n lines = data.textarea.value.split(\"\\n\");\n cursorLine = data.textarea.value.slice(0, +(data.caretPosition - 1) + 1 || 9e9).split(\"\\n\").length;\n newLineContent = data.textarea.value.slice(data.caretPosition).split(\"\\n\")[0];\n lastLine = lines[cursorLine - 1];\n match = lastLine.match(/^(\\s*- ).*/);\n if (match) {\n emptyListItem = lastLine.match(/^(\\s*)\\-\\s$/);\n if (emptyListItem) {\n markdownCaretPositon = addLine(data.textarea, cursorLine - 1);\n } else {\n markdownCaretPositon = addLine(data.textarea, cursorLine, \"\" + match[1]);\n }\n }\n match = lastLine.match(/^(\\s*\\* ).*/);\n if (match) {\n emptyListItem = lastLine.match(/^(\\s*\\* )$/);\n if (emptyListItem) {\n markdownCaretPositon = addLine(data.textarea, cursorLine - 1);\n } else {\n markdownCaretPositon = addLine(data.textarea, cursorLine, \"\" + match[1]);\n }\n }\n match = lastLine.match(/^(\\s*)(\\d+)\\.\\s/);\n if (match) {\n emptyListItem = lastLine.match(/^(\\s*)(\\d+)\\.\\s$/);\n if (emptyListItem) {\n markdownCaretPositon = addLine(data.textarea, cursorLine - 1);\n } else {\n markdownCaretPositon = addLine(data.textarea, cursorLine, (match[1] + (parseInt(match[2], 10) + 1)) + \". \");\n }\n }\n if (markdownCaretPositon) {\n return setCaretPosition(data.textarea, markdownCaretPositon);\n }\n }\n },\n markupSet: [\n {\n name: $tr.t(\"markdown-editor.heading-1\"),\n key: \"1\",\n placeHolder: $tr.t(\"markdown-editor.placeholder\"),\n closeWith: function(markItUp) {\n return markdownTitle(markItUp, \"=\");\n }\n }, {\n name: $tr.t(\"markdown-editor.heading-2\"),\n key: \"2\",\n placeHolder: $tr.t(\"markdown-editor.placeholder\"),\n closeWith: function(markItUp) {\n return markdownTitle(markItUp, \"-\");\n }\n }, {\n name: $tr.t(\"markdown-editor.heading-3\"),\n key: \"3\",\n openWith: \"### \",\n placeHolder: $tr.t(\"markdown-editor.placeholder\")\n }, {\n separator: \"---------------\"\n }, {\n name: $tr.t(\"markdown-editor.bold\"),\n key: \"B\",\n openWith: \"**\",\n closeWith: \"**\"\n }, {\n name: $tr.t(\"markdown-editor.italic\"),\n key: \"I\",\n openWith: \"_\",\n closeWith: \"_\"\n }, {\n name: $tr.t(\"markdown-editor.strike\"),\n key: \"S\",\n openWith: \"~~\",\n closeWith: \"~~\"\n }, {\n separator: \"---------------\"\n }, {\n name: $tr.t(\"markdown-editor.bulleted-list\"),\n openWith: \"- \"\n }, {\n name: $tr.t(\"markdown-editor.numeric-list\"),\n openWith: function(markItUp) {\n return markItUp.line + \". \";\n }\n }, {\n separator: \"---------------\"\n }, {\n name: $tr.t(\"markdown-editor.picture\"),\n key: \"P\",\n replaceWith: '![[![Alternative text]!]](<<<[![Url:!:http://]!]>>> \"[![Title]!]\")',\n beforeInsert: function(markItUp) {\n return prepareUrlFormatting(markItUp);\n },\n afterInsert: function(markItUp) {\n return urlFormatting(markItUp);\n }\n }, {\n name: $tr.t(\"markdown-editor.link\"),\n key: \"L\",\n openWith: \"[\",\n closeWith: '](<<<[![Url:!:http://]!]>>> \"[![Title]!]\")',\n placeHolder: $tr.t(\"markdown-editor.link-placeholder\"),\n beforeInsert: function(markItUp) {\n return prepareUrlFormatting(markItUp);\n },\n afterInsert: function(markItUp) {\n return urlFormatting(markItUp);\n }\n }, {\n separator: \"---------------\"\n }, {\n name: $tr.t(\"markdown-editor.quotes\"),\n openWith: \"> \"\n }, {\n name: $tr.t(\"markdown-editor.code-block\"),\n openWith: \"```\\n\",\n closeWith: \"\\n```\"\n }, {\n separator: \"---------------\"\n }, {\n name: $tr.t(\"markdown-editor.preview\"),\n call: preview,\n className: \"preview-icon\"\n }\n ],\n afterInsert: function(event) {\n var target;\n target = angular.element(event.textarea);\n return $model.$setViewValue(target.val());\n }\n };\n prepareUrlFormatting = function(markItUp) {\n var indices, regex, result;\n console.log(markItUp);\n regex = /(<<<|>>>)/gi;\n result = 0;\n indices = [];\n while ((result = regex.exec(markItUp.textarea.value))) {\n indices.push(result.index);\n }\n markItUp.donotparse = indices;\n return console.log(indices);\n };\n urlFormatting = function(markItUp) {\n var endIndex, ref, ref1, regex, result, startIndex, url, value;\n console.log(markItUp.donotparse);\n regex = /<<>>/gi;\n endIndex = 0;\n while (true) {\n result = regex.exec(markItUp.textarea.value);\n if (!result) {\n break;\n }\n if (ref1 = result.index, indexOf.call(markItUp.donotparse, ref1) < 0) {\n endIndex = result.index;\n break;\n }\n }\n value = markItUp.textarea.value;\n url = value.substring(startIndex, endIndex).replace('<<<', '').replace('>>>', '');\n url = url.replace('(', '%28').replace(')', '%29');\n url = url.replace('[', '%5B').replace(']', '%5D');\n value = value.substring(0, startIndex) + url + value.substring(endIndex + 3, value.length);\n markItUp.textarea.value = value;\n return markItUp.donotparse = void 0;\n };\n markdownTitle = function(markItUp, char) {\n var heading, i, j, n, ref;\n heading = \"\";\n n = $.trim(markItUp.selection || markItUp.placeHolder).length;\n for (i = j = 0, ref = n - 1; 0 <= ref ? j <= ref : j >= ref; i = 0 <= ref ? ++j : --j) {\n heading += char;\n }\n return \"\\n\" + heading + \"\\n\";\n };\n element.markItUp(markdownSettings);\n element.on(\"keypress\", function(event) {\n return $scope.$apply();\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(\"tgMarkitup\", [\"$rootScope\", \"$tgResources\", \"$tgI18n\", \"$selectedText\", \"$tgTemplate\", tgMarkitupDirective]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: pluggins/main.coffee\n */\n\n(function() {\n var module;\n\n module = angular.module(\"taigaPlugins\", [\"ngRoute\"]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/kanban/sortable.coffee\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) {\n var link;\n link = function($scope, $el, $attrs) {\n bindOnce($scope, \"project\", function(project) {\n var deleteElement, itemEl, newParentScope, oldParentScope, tdom;\n if (!(project.my_permissions.indexOf(\"modify_us\") > -1)) {\n return;\n }\n oldParentScope = null;\n newParentScope = null;\n itemEl = null;\n tdom = $el;\n deleteElement = function(itemEl) {\n itemEl.scope().$destroy();\n itemEl.off();\n return itemEl.remove();\n };\n tdom.sortable({\n handle: \".kanban-task-inner\",\n dropOnEmpty: true,\n connectWith: \".kanban-uses-box\",\n revert: 400\n });\n tdom.on(\"sortstop\", function(event, ui) {\n var itemIndex, itemUs, newStatusId, oldStatusId, parentEl;\n parentEl = ui.item.parent();\n itemEl = ui.item;\n itemUs = itemEl.scope().us;\n itemIndex = itemEl.index();\n newParentScope = parentEl.scope();\n newStatusId = newParentScope.s.id;\n oldStatusId = oldParentScope.s.id;\n if (newStatusId !== oldStatusId) {\n deleteElement(itemEl);\n }\n $scope.$apply(function() {\n return $rootscope.$broadcast(\"kanban:us:move\", itemUs, itemUs.status, newStatusId, itemIndex);\n });\n return ui.item.find('a').removeClass('noclick');\n });\n return tdom.on(\"sortstart\", function(event, ui) {\n oldParentScope = ui.item.parent().scope();\n return ui.item.find('a').addClass('noclick');\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(\"tgKanbanSortable\", [\"$tgRepo\", \"$tgResources\", \"$rootScope\", KanbanSortableDirective]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/resources/sprints.coffee\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) {\n var hashSuffixUserstories, service;\n service = {};\n hashSuffixUserstories = \"userstories-queryparams\";\n service.get = function(projectId, sprintId) {\n return $repo.queryOne(\"milestones\", sprintId).then(function(sprint) {\n var uses;\n service.storeUserstoriesQueryParams(projectId, {\n \"milestone\": sprintId\n });\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).then((function(_this) {\n return function(milestones) {\n var i, len, m, uses;\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 milestones;\n };\n })(this));\n };\n service.storeUserstoriesQueryParams = function(projectId, params) {\n var hash, ns;\n ns = projectId + \":\" + hashSuffixUserstories;\n hash = generateHash([projectId, ns]);\n return $storage.set(hash, 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\", resourceProvider]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/taskboard/charts.coffee\n */\n\n(function() {\n var SprintGraphDirective, 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 SprintGraphDirective = function() {\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(x.day);\n });\n data = [];\n data.unshift({\n data: _.zip(days, _.map(dataToDraw, function(d) {\n return d.optimal_points;\n })),\n lines: {\n fillColor: \"rgba(120,120,120,0.2)\"\n }\n });\n data.unshift({\n data: _.zip(days, _.map(dataToDraw, function(d) {\n return d.open_points;\n })),\n lines: {\n fillColor: \"rgba(102,153,51,0.3)\"\n }\n });\n options = {\n grid: {\n borderWidth: {\n top: 0,\n right: 1,\n left: 0,\n bottom: 0\n },\n borderColor: '#ccc',\n hoverable: true\n },\n xaxis: {\n tickSize: [1, \"day\"],\n min: days[0],\n max: _.last(days),\n mode: \"time\",\n daysNames: days,\n axisLabel: 'Day',\n axisLabelUseCanvas: true,\n axisLabelFontSizePixels: 12,\n axisLabelFontFamily: 'Verdana, Arial, Helvetica, Tahoma, sans-serif',\n axisLabelPadding: 5\n },\n yaxis: {\n min: 0\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(102,153,51,1)\", \"rgba(120,120,120,0.2)\"],\n tooltip: true,\n tooltipOpts: {\n content: function(label, xval, yval, flotItem) {\n var formattedDate, roundedValue;\n formattedDate = moment(xval).format(\"DD MMM\");\n roundedValue = Math.round(yval);\n if (flotItem.seriesIndex === 1) {\n return \"Optimal pending points for day \" + formattedDate + \" should be \" + roundedValue;\n } else {\n return \"Real pending points for day \" + formattedDate + \" is \" + roundedValue;\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(\"tgSprintGraph\", SprintGraphDirective);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/tasks/detail.coffee\n */\n\n(function() {\n var TaskDetailController, TaskIsIocaineButtonDirective, TaskStatusButtonDirective, TaskStatusDisplayDirective, 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 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\", \"$appTitle\", \"$tgNavUrls\", \"$tgAnalytics\", \"tgLoader\"];\n\n function TaskDetailController(scope, rootscope, repo, confirm, rs, params, q, location, log, appTitle, navUrls, analytics, tgLoader) {\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.appTitle = appTitle;\n this.navUrls = navUrls;\n this.analytics = analytics;\n this.scope.taskRef = this.params.taskref;\n this.scope.sectionName = \"Task Details\";\n this.initializeEventHandlers();\n promise = this.loadInitialData();\n promise.then((function(_this) {\n return function() {\n _this.appTitle.set(_this.scope.task.subject + \" - \" + _this.scope.project.name);\n return _this.initializeOnDeleteGoToUrl();\n };\n })(this));\n promise.then(null, this.onInitialDataError.bind(this));\n promise[\"finally\"](tgLoader.pageLoaded);\n }\n\n TaskDetailController.prototype.initializeEventHandlers = function() {\n this.scope.$on(\"attachment:create\", (function(_this) {\n return function() {\n _this.analytics.trackEvent(\"attachment\", \"create\", \"create attachment on task\", 1);\n return _this.rootscope.$broadcast(\"history:reload\");\n };\n })(this));\n this.scope.$on(\"attachment:edit\", (function(_this) {\n return function() {\n return _this.rootscope.$broadcast(\"history:reload\");\n };\n })(this));\n this.scope.$on(\"attachment:delete\", (function(_this) {\n return function() {\n return _this.rootscope.$broadcast(\"history:reload\");\n };\n })(this));\n return this.scope.$on(\"custom-attributes-values:edit\", (function(_this) {\n return function() {\n return _this.rootscope.$broadcast(\"history:reload\");\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 return this.rs.projects.getBySlug(this.params.pslug).then((function(_this) {\n return function(project) {\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 _this.scope.membersById = groupBy(project.memberships, function(x) {\n return x.user;\n });\n return project;\n };\n })(this));\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;\n _this.scope.task = task;\n _this.scope.taskId = task.id;\n _this.scope.commentModel = task;\n if (_this.scope.task.neighbors.previous.ref != 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 (_this.scope.task.neighbors.next.ref != 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 promise;\n promise = this.loadProject();\n return promise.then((function(_this) {\n return function(project) {\n _this.fillUsersAndRoles(project.users, project.roles);\n return _this.loadTask().then(function() {\n return _this.q.all([_this.loadSprint(), _this.loadUserStory()]);\n });\n };\n })(this));\n };\n\n return TaskDetailController;\n\n })(mixOf(taiga.Controller, taiga.PageMixin));\n\n module.controller(\"TaskDetailController\", TaskDetailController);\n\n TaskStatusDisplayDirective = function($template) {\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 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\", TaskStatusDisplayDirective]);\n\n TaskStatusButtonDirective = function($rootScope, $repo, $confirm, $loading, $qqueue) {\n var link, template;\n template = _.template(\"\");\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 = template({\n status: status,\n statuses: $scope.statusList,\n editable: isEditable()\n });\n return $el.html(html);\n };\n })(this);\n save = $qqueue.bindAdd((function(_this) {\n return function(status) {\n var onError, onSuccess, task;\n task = $model.$modelValue.clone();\n task.status = status;\n $model.$setViewValue(task);\n onSuccess = function() {\n $confirm.notify(\"success\");\n $rootScope.$broadcast(\"history:reload\");\n return $loading.finish($el.find(\".level-name\"));\n };\n onError = function() {\n $confirm.notify(\"error\");\n task.revert();\n $model.$setViewValue(task);\n return $loading.finish($el.find(\".level-name\"));\n };\n $loading.start($el.find(\".level-name\"));\n return $repo.save($model.$modelValue).then(onSuccess, onError);\n };\n })(this));\n $el.on(\"click\", \".status-data\", 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($attrs.ngModel, function(task) {\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\", \"$tgQqueue\", TaskStatusButtonDirective]);\n\n TaskIsIocaineButtonDirective = function($rootscope, $tgrepo, $confirm, $loading, $qqueue) {\n var link, template;\n template = _.template(\"
\\n \\n \\n
\");\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 = template(ctx);\n return $el.html(html);\n };\n save = $qqueue.bindAdd((function(_this) {\n return function(is_iocaine) {\n var promise, task;\n task = $model.$modelValue.clone();\n task.is_iocaine = is_iocaine;\n $model.$setViewValue(task);\n $loading.start($el.find('label'));\n promise = $tgrepo.save(task);\n promise.then(function() {\n $confirm.notify(\"success\");\n return $rootscope.$broadcast(\"history:reload\");\n });\n promise.then(null, function() {\n task.revert();\n $model.$setViewValue(task);\n return $confirm.notify(\"error\");\n });\n return promise[\"finally\"](function() {\n return $loading.finish($el.find('label'));\n });\n };\n })(this));\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($attrs.ngModel, function(task) {\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\", \"$tgQqueue\", TaskIsIocaineButtonDirective]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/issues/list.coffee\n */\n\n(function() {\n var IssueAssignedToInlineEditionDirective, IssueStatusInlineEditionDirective, IssuesController, IssuesDirective, IssuesFiltersDirective, 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 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\", \"$appTitle\", \"$tgNavUrls\", \"$tgEvents\", \"$tgAnalytics\", \"tgLoader\"];\n\n function IssuesController(scope, rootscope, repo, confirm, rs, urls, params, q, location, appTitle, navUrls, events, analytics, tgLoader) {\n var filters, 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 = params;\n this.q = q;\n this.location = location;\n this.appTitle = appTitle;\n this.navUrls = navUrls;\n this.events = events;\n this.analytics = analytics;\n this.loadIssues = bind(this.loadIssues, this);\n this.scope.sectionName = \"Issues\";\n this.scope.filters = {};\n if (_.isEmpty(this.location.search())) {\n filters = this.rs.issues.getFilters(this.params.pslug);\n filters.page = 1;\n this.location.search(filters);\n this.location.replace();\n return;\n }\n promise = this.loadInitialData();\n promise.then((function(_this) {\n return function() {\n return _this.appTitle.set(\"Issues - \" + _this.scope.project.name);\n };\n })(this));\n promise.then(null, this.onInitialDataError.bind(this));\n promise[\"finally\"](tgLoader.pageLoaded);\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 _this.loadIssues();\n return _this.loadFilters();\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, (function(_this) {\n return function(message) {\n return _this.loadIssues();\n };\n })(this));\n };\n\n IssuesController.prototype.storeFilters = function() {\n return this.rs.issues.storeFilters(this.params.pslug, this.location.search());\n };\n\n IssuesController.prototype.loadProject = function() {\n return this.rs.projects.getBySlug(this.params.pslug).then((function(_this) {\n return function(project) {\n if (!project.is_issues_activated) {\n _this.location.path(_this.navUrls.resolve(\"permission-denied\"));\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 _this.scope.membersById = groupBy(project.memberships, function(x) {\n return x.user;\n });\n return project;\n };\n })(this));\n };\n\n IssuesController.prototype.getUrlFilters = function() {\n var filters;\n filters = _.pick(this.location.search(), \"page\", \"tags\", \"statuses\", \"types\", \"q\", \"severities\", \"priorities\", \"assignedTo\", \"createdBy\", \"orderBy\");\n if (!filters.page) {\n filters.page = 1;\n }\n return filters;\n };\n\n IssuesController.prototype.getUrlFilter = function(name) {\n var filters;\n filters = _.pick(this.location.search(), name);\n return filters[name];\n };\n\n IssuesController.prototype.loadMyFilters = function() {\n return this.rs.issues.getMyFilters(this.scope.projectId).then((function(_this) {\n return function(filters) {\n return _.map(filters, function(value, key) {\n return {\n id: key,\n name: key,\n type: \"myFilters\",\n selected: false\n };\n });\n };\n })(this));\n };\n\n IssuesController.prototype.removeNotExistingFiltersFromUrl = function() {\n var currentSearch, existingValues, filterName, filterValue, splittedValues, urlfilters;\n currentSearch = this.location.search();\n urlfilters = this.getUrlFilters();\n for (filterName in urlfilters) {\n filterValue = urlfilters[filterName];\n if (filterName === \"page\" || filterName === \"orderBy\" || filterName === \"q\") {\n continue;\n }\n if (filterName === \"tags\") {\n splittedValues = _.map((\"\" + filterValue).split(\",\"));\n } else {\n splittedValues = _.map((\"\" + filterValue).split(\",\"), function(x) {\n if (x === \"null\") {\n return null;\n } else {\n return parseInt(x);\n }\n });\n }\n existingValues = _.intersection(splittedValues, _.map(this.scope.filters[filterName], \"id\"));\n if (splittedValues.length !== existingValues.length) {\n this.location.search(filterName, existingValues.join());\n }\n }\n if (currentSearch !== this.location.search()) {\n return this.location.replace();\n }\n };\n\n IssuesController.prototype.markSelectedFilters = function(filters, urlfilters) {\n var isSelected, j, key, len, name, obj, ref, ref1, results, searchdata, val, value;\n searchdata = {};\n ref = _.omit(urlfilters, \"page\", \"orderBy\");\n for (name in ref) {\n value = ref[name];\n if (searchdata[name] == null) {\n searchdata[name] = {};\n }\n ref1 = (\"\" + value).split(\",\");\n for (j = 0, len = ref1.length; j < len; j++) {\n val = ref1[j];\n searchdata[name][val] = true;\n }\n }\n isSelected = function(type, id) {\n if ((searchdata[type] != null) && searchdata[type][id]) {\n return true;\n }\n return false;\n };\n results = [];\n for (key in filters) {\n value = filters[key];\n results.push((function() {\n var k, len1, results1;\n results1 = [];\n for (k = 0, len1 = value.length; k < len1; k++) {\n obj = value[k];\n results1.push(obj.selected = isSelected(obj.type, obj.id) ? true : void 0);\n }\n return results1;\n })());\n }\n return results;\n };\n\n IssuesController.prototype.loadFilters = function() {\n var promise, urlfilters;\n urlfilters = this.getUrlFilters();\n if (urlfilters.q) {\n this.scope.filtersQ = urlfilters.q;\n }\n promise = this.loadMyFilters().then((function(_this) {\n return function(myFilters) {\n _this.scope.filters.myFilters = myFilters;\n return myFilters;\n };\n })(this));\n promise = promise.then((function(_this) {\n return function() {\n return _this.rs.issues.filtersData(_this.scope.projectId);\n };\n })(this));\n return promise.then((function(_this) {\n return function(data) {\n var choicesFiltersFormat, tagsFilterFormat, usersFiltersFormat;\n usersFiltersFormat = function(users, type, unknownOption) {\n var reformatedUsers, unknownItem;\n reformatedUsers = _.map(users, function(t) {\n return {\n id: t[0],\n count: t[1],\n type: type,\n name: t[0] ? _this.scope.usersById[t[0]].full_name_display : unknownOption\n };\n });\n unknownItem = _.remove(reformatedUsers, function(u) {\n return !u.id;\n });\n reformatedUsers = _.sortBy(reformatedUsers, function(u) {\n return u.name.toUpperCase();\n });\n if (unknownItem.length > 0) {\n reformatedUsers.unshift(unknownItem[0]);\n }\n return reformatedUsers;\n };\n choicesFiltersFormat = function(choices, type, byIdObject) {\n return _.map(choices, function(t) {\n return {\n id: t[0],\n name: byIdObject[t[0]].name,\n color: byIdObject[t[0]].color,\n count: t[1],\n type: type\n };\n });\n };\n tagsFilterFormat = function(tags) {\n return _.map(tags, function(t) {\n return {\n id: t[0],\n name: t[0],\n color: _this.scope.project.tags_colors[t[0]],\n count: t[1],\n type: \"tags\"\n };\n });\n };\n _this.scope.filters.statuses = choicesFiltersFormat(data.statuses, \"statuses\", _this.scope.issueStatusById);\n _this.scope.filters.severities = choicesFiltersFormat(data.severities, \"severities\", _this.scope.severityById);\n _this.scope.filters.priorities = choicesFiltersFormat(data.priorities, \"priorities\", _this.scope.priorityById);\n _this.scope.filters.assignedTo = usersFiltersFormat(data.assigned_to, \"assignedTo\", \"Unassigned\");\n _this.scope.filters.createdBy = usersFiltersFormat(data.created_by, \"createdBy\", \"Unknown\");\n _this.scope.filters.types = choicesFiltersFormat(data.types, \"types\", _this.scope.issueTypeById);\n _this.scope.filters.tags = tagsFilterFormat(data.tags);\n _this.removeNotExistingFiltersFromUrl();\n _this.markSelectedFilters(_this.scope.filters, urlfilters);\n return _this.rootscope.$broadcast(\"filters:loaded\", _this.scope.filters);\n };\n })(this));\n };\n\n IssuesController.prototype.loadIssuesRequests = 0;\n\n IssuesController.prototype.loadIssues = function() {\n var name, promise, ref, values;\n this.scope.urlFilters = this.getUrlFilters();\n this.scope.httpParams = {};\n ref = this.scope.urlFilters;\n for (name in ref) {\n values = ref[name];\n if (name === \"severities\") {\n name = \"severity\";\n } else if (name === \"orderBy\") {\n name = \"order_by\";\n } else if (name === \"priorities\") {\n name = \"priority\";\n } else if (name === \"assignedTo\") {\n name = \"assigned_to\";\n } else if (name === \"createdBy\") {\n name = \"owner\";\n } else if (name === \"statuses\") {\n name = \"status\";\n } else if (name === \"types\") {\n name = \"type\";\n }\n this.scope.httpParams[name] = values;\n }\n promise = this.rs.issues.list(this.scope.projectId, this.scope.httpParams);\n this.loadIssuesRequests += 1;\n promise.index = this.loadIssuesRequests;\n return 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 };\n\n IssuesController.prototype.loadInitialData = function() {\n var promise;\n promise = this.loadProject();\n return promise.then((function(_this) {\n return function(project) {\n _this.fillUsersAndRoles(project.users, project.roles);\n _this.initializeSubscription();\n return _this.q.all([_this.loadFilters(), _this.loadIssues()]);\n };\n })(this));\n };\n\n IssuesController.prototype.saveCurrentFiltersTo = function(newFilter) {\n var deferred;\n deferred = this.q.defer();\n this.rs.issues.getMyFilters(this.scope.projectId).then((function(_this) {\n return function(filters) {\n filters[newFilter] = _this.location.search();\n return _this.rs.issues.storeMyFilters(_this.scope.projectId, filters).then(function() {\n return deferred.resolve();\n });\n };\n })(this));\n return deferred.promise;\n };\n\n IssuesController.prototype.deleteMyFilter = function(filter) {\n var deferred;\n deferred = this.q.defer();\n this.rs.issues.getMyFilters(this.scope.projectId).then((function(_this) {\n return function(filters) {\n delete filters[filter];\n return _this.rs.issues.storeMyFilters(_this.scope.projectId, filters).then(function() {\n return deferred.resolve();\n });\n };\n })(this));\n return deferred.promise;\n };\n\n IssuesController.prototype.addNewIssue = function() {\n return this.rootscope.$broadcast(\"issueform:new\", this.scope.project);\n };\n\n IssuesController.prototype.addIssuesInBulk = function() {\n return this.rootscope.$broadcast(\"issueform:bulk\", this.scope.projectId);\n };\n\n return IssuesController;\n\n })(mixOf(taiga.Controller, taiga.PageMixin, taiga.FiltersMixin));\n\n module.controller(\"IssuesController\", IssuesController);\n\n IssuesDirective = function($log, $location, $template) {\n var link, linkOrdering, 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, 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 return $pagEl.html(template(options));\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 linkOrdering = function($scope, $el, $attrs, $ctrl) {\n var colHeadElement, currentOrder, icon;\n currentOrder = $ctrl.getUrlFilter(\"orderBy\") || \"created_date\";\n if (currentOrder) {\n icon = startswith(currentOrder, \"-\") ? \"icon-caret-up\" : \"icon-caret-down\";\n colHeadElement = $el.find(\".row.title > div[data-fieldname='\" + (trim(currentOrder, \"-\")) + \"']\");\n colHeadElement.html((colHeadElement.html()) + \"\");\n }\n return $el.on(\"click\", \".row.title > div\", function(event) {\n var finalOrder, newOrder, target;\n target = angular.element(event.currentTarget);\n currentOrder = $ctrl.getUrlFilter(\"orderBy\");\n newOrder = target.data(\"fieldname\");\n finalOrder = currentOrder === newOrder ? \"-\" + newOrder : newOrder;\n return $scope.$apply(function() {\n $ctrl.replaceFilter(\"orderBy\", finalOrder);\n $ctrl.storeFilters();\n return $ctrl.loadIssues().then(function() {\n $el.find(\".row.title > div > span.icon\").remove();\n icon = startswith(finalOrder, \"-\") ? \"icon-caret-up\" : \"icon-caret-down\";\n return target.html((target.html()) + \"\");\n });\n });\n });\n };\n link = function($scope, $el, $attrs) {\n var $ctrl;\n $ctrl = $el.controller();\n linkOrdering($scope, $el, $attrs, $ctrl);\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(\"tgIssues\", [\"$log\", \"$tgLocation\", \"$tgTemplate\", IssuesDirective]);\n\n IssuesFiltersDirective = function($log, $location, $rs, $confirm, $loading, $template) {\n var link, template, templateSelected;\n template = $template.get(\"issue/issues-filters.html\", true);\n templateSelected = $template.get(\"issue/issues-filters-selected.html\", true);\n link = function($scope, $el, $attrs) {\n var $ctrl, initializeSelectedFilters, renderFilters, renderSelectedFilters, selectQFilter, selectedFilters, showCategories, showFilters, toggleFilterSelection;\n $ctrl = $el.closest(\".wrapper\").controller();\n selectedFilters = [];\n showFilters = function(title, type) {\n $el.find(\".filters-cats\").hide();\n $el.find(\".filter-list\").removeClass(\"hidden\");\n $el.find(\"h2.breadcrumb\").removeClass(\"hidden\");\n $el.find(\"h2 a.subfilter span.title\").html(title);\n return $el.find(\"h2 a.subfilter span.title\").prop(\"data-type\", type);\n };\n showCategories = function() {\n $el.find(\".filters-cats\").show();\n $el.find(\".filter-list\").addClass(\"hidden\");\n return $el.find(\"h2.breadcrumb\").addClass(\"hidden\");\n };\n initializeSelectedFilters = function(filters) {\n var j, len, name, val, values;\n selectedFilters = [];\n for (name in filters) {\n values = filters[name];\n for (j = 0, len = values.length; j < len; j++) {\n val = values[j];\n if (val.selected) {\n selectedFilters.push(val);\n }\n }\n }\n return renderSelectedFilters(selectedFilters);\n };\n renderSelectedFilters = function(selectedFilters) {\n var html;\n _.filter(selectedFilters, (function(_this) {\n return function(f) {\n if (f.color) {\n return f.style = \"border-left: 3px solid \" + f.color;\n }\n };\n })(this));\n html = templateSelected({\n filters: selectedFilters\n });\n $el.find(\".filters-applied\").html(html);\n if (selectedFilters.length > 0) {\n return $el.find(\".save-filters\").show();\n } else {\n return $el.find(\".save-filters\").hide();\n }\n };\n renderFilters = function(filters) {\n var html;\n _.filter(filters, (function(_this) {\n return function(f) {\n if (f.color) {\n return f.style = \"border-left: 3px solid \" + f.color;\n }\n };\n })(this));\n html = template({\n filters: filters\n });\n return $el.find(\".filter-list\").html(html);\n };\n toggleFilterSelection = function(type, id) {\n var currentFiltersType, filter, filterId, filters;\n if (type === \"myFilters\") {\n $rs.issues.getMyFilters($scope.projectId).then(function(data) {\n var filters, myFilters;\n myFilters = data;\n filters = myFilters[id];\n filters.page = 1;\n $ctrl.replaceAllFilters(filters);\n $ctrl.storeFilters();\n $ctrl.loadIssues();\n $ctrl.markSelectedFilters($scope.filters, filters);\n return initializeSelectedFilters($scope.filters);\n });\n return null;\n }\n filters = $scope.filters[type];\n filterId = type === 'tags' ? taiga.toString(id) : id;\n filter = _.find(filters, {\n id: filterId\n });\n filter.selected = !filter.selected;\n if (id === null) {\n id = \"null\";\n }\n if (filter.selected) {\n selectedFilters.push(filter);\n $scope.$apply(function() {\n $ctrl.selectFilter(type, id);\n $ctrl.selectFilter(\"page\", 1);\n $ctrl.storeFilters();\n return $ctrl.loadIssues();\n });\n } else {\n selectedFilters = _.reject(selectedFilters, filter);\n $scope.$apply(function() {\n $ctrl.unselectFilter(type, id);\n $ctrl.selectFilter(\"page\", 1);\n $ctrl.storeFilters();\n return $ctrl.loadIssues();\n });\n }\n renderSelectedFilters(selectedFilters);\n currentFiltersType = $el.find(\"h2 a.subfilter span.title\").prop('data-type');\n if (type === currentFiltersType) {\n return renderFilters(_.reject(filters, \"selected\"));\n }\n };\n $scope.$on(\"filters:loaded\", function(ctx, filters) {\n return initializeSelectedFilters(filters);\n });\n $scope.$on(\"filters:issueupdate\", function(ctx, filters) {\n var html;\n html = template({\n filters: filters.statuses\n });\n return $el.find(\".filter-list\").html(html);\n });\n selectQFilter = debounceLeading(100, function(value) {\n if (value === void 0) {\n return;\n }\n $ctrl.replaceFilter(\"page\", null);\n if (value.length === 0) {\n $ctrl.replaceFilter(\"q\", null);\n $ctrl.storeFilters();\n } else {\n $ctrl.replaceFilter(\"q\", value);\n $ctrl.storeFilters();\n }\n return $ctrl.loadIssues();\n });\n $scope.$watch(\"filtersQ\", selectQFilter);\n $el.on(\"click\", \".filters-cats > ul > li > a\", function(event) {\n var tags, target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n tags = $scope.filters[target.data(\"type\")];\n renderFilters(_.reject(tags, \"selected\"));\n return showFilters(target.attr(\"title\"), target.data(\"type\"));\n });\n $el.on(\"click\", \".filters-inner > .filters-step-cat > .breadcrumb > .back\", function(event) {\n event.preventDefault();\n return showCategories($el);\n });\n $el.on(\"click\", \".filters-applied a\", function(event) {\n var id, target, type;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n id = target.data(\"id\") || null;\n type = target.data(\"type\");\n return toggleFilterSelection(type, id);\n });\n $el.on(\"click\", \".filter-list .single-filter\", function(event) {\n var id, target, type;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n target.toggleClass(\"active\");\n id = target.data(\"id\") || null;\n type = target.data(\"type\");\n if (type === \"myFilters\") {\n target.removeClass(\"active\");\n }\n return toggleFilterSelection(type, id);\n });\n $el.on(\"click\", \".filter-list .single-filter .icon-delete\", function(event) {\n var customFilterName, message, target, title;\n event.preventDefault();\n event.stopPropagation();\n target = angular.element(event.currentTarget);\n customFilterName = target.parent().data('id');\n title = \"Delete custom filter\";\n message = \"the custom filter '\" + customFilterName + \"'\";\n return $confirm.askOnDelete(title, message).then(function(finish) {\n var promise;\n promise = $ctrl.deleteMyFilter(customFilterName);\n promise.then(function() {\n promise = $ctrl.loadMyFilters();\n promise.then(function(filters) {\n finish();\n $scope.filters.myFilters = filters;\n return renderFilters($scope.filters.myFilters);\n });\n return promise.then(null, function() {\n return finish();\n });\n });\n return promise.then(null, function() {\n finish(false);\n return $confirm.notify(\"error\");\n });\n });\n });\n $el.on(\"click\", \".save-filters\", function(event) {\n event.preventDefault();\n renderFilters($scope.filters[\"myFilters\"]);\n showFilters(\"My filters\", \"myFilters\");\n $el.find('.save-filters').hide();\n $el.find('.my-filter-name').removeClass(\"hidden\");\n return $el.find('.my-filter-name').focus();\n });\n return $el.on(\"keyup\", \".my-filter-name\", function(event) {\n var newFilter, promise, target;\n event.preventDefault();\n if (event.keyCode === 13) {\n target = angular.element(event.currentTarget);\n newFilter = target.val();\n $loading.start($el.find(\".new\"));\n promise = $ctrl.saveCurrentFiltersTo(newFilter);\n promise.then(function() {\n var loadPromise;\n loadPromise = $ctrl.loadMyFilters();\n loadPromise.then(function(filters) {\n var currentfilterstype;\n $loading.finish($el.find(\".new\"));\n $scope.filters.myFilters = filters;\n currentfilterstype = $el.find(\"h2 a.subfilter span.title\").prop('data-type');\n if (currentfilterstype === \"myFilters\") {\n renderFilters($scope.filters.myFilters);\n }\n $el.find('.my-filter-name').addClass(\"hidden\");\n return $el.find('.save-filters').show();\n });\n return loadPromise.then(null, function() {\n $loading.finish($el.find(\".new\"));\n return $confirm.notify(\"error\", \"Error loading custom filters\");\n });\n });\n return promise.then(null, function() {\n $loading.finish($el.find(\".new\"));\n $el.find(\".my-filter-name\").val(newFilter).focus().select();\n return $confirm.notify(\"error\", \"Filter not saved\");\n });\n } else if (event.keyCode === 27) {\n $el.find('.my-filter-name').val('');\n $el.find('.my-filter-name').addClass(\"hidden\");\n return $el.find('.save-filters').show();\n }\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgIssuesFilters\", [\"$log\", \"$tgLocation\", \"$tgResources\", \"$tgConfirm\", \"$tgLoading\", \"$tgTemplate\", IssuesFiltersDirective]);\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 filter, j, len, ref, target;\n event.preventDefault();\n event.stopPropagation();\n target = angular.element(event.currentTarget);\n ref = $scope.filters.statuses;\n for (j = 0, len = ref.length; j < len; j++) {\n filter = ref[j];\n if (filter.id === issue.status) {\n filter.count--;\n }\n }\n issue.status = target.data(\"status-id\");\n $el.find(\".pop-status\").popover().close();\n updateIssueStatus($el, issue, $scope.issueStatusById);\n return $scope.$apply(function() {\n var k, len1, ref1;\n $repo.save(issue).then;\n ref1 = $scope.filters.statuses;\n for (k = 0, len1 = ref1.length; k < len1; k++) {\n filter = ref1[k];\n if (filter.id === issue.status) {\n filter.count++;\n }\n }\n return $rootscope.$broadcast(\"filters:issueupdate\", $scope.filters);\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, popoverService) {\n var link, template;\n template = _.template(\"\\\" alt=\\\"<%- name %>\\\"/>\\n
<%- name %>
\");\n link = function($scope, $el, $attrs) {\n var $ctrl, issue, updateIssue;\n updateIssue = function(issue) {\n var ctx, member;\n ctx = {\n name: \"Unassigned\",\n imgurl: \"/images/unnamed.png\"\n };\n member = $scope.usersById[issue.assigned_to];\n if (member) {\n ctx.imgurl = member.photo;\n ctx.name = member.full_name_display;\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 return $rootscope.$broadcast(\"assigned-to:add\", issue);\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.$on(\"assigned-to:added\", (function(_this) {\n return function(ctx, userId, updatedIssue) {\n if (updatedIssue.id === issue.id) {\n updatedIssue.assigned_to = userId;\n $repo.save(updatedIssue);\n return updateIssue(updatedIssue);\n }\n };\n })(this));\n $scope.$watch($attrs.tgIssueAssignedToInlineEdition, (function(_this) {\n return function(val) {\n return updateIssue(val);\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(\"tgIssueAssignedToInlineEdition\", [\"$tgRepo\", \"$rootScope\", IssueAssignedToInlineEditionDirective]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/resources/memberships.coffee\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 * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/admin/project-profile.coffee\n */\n\n(function() {\n var CsvExporterController, CsvExporterIssuesController, CsvExporterTasksController, CsvExporterUserstoriesController, ProjectDefaultValuesDirective, ProjectExportDirective, ProjectModulesDirective, ProjectProfileController, ProjectProfileDirective, bindOnce, debounce, 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 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\", \"$appTitle\"];\n\n function ProjectProfileController(scope, rootscope, repo, confirm, rs, params, q, location, navUrls, appTitle) {\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.appTitle = appTitle;\n this.scope.project = {};\n promise = this.loadInitialData();\n promise.then((function(_this) {\n return function() {\n return _this.appTitle.set(\"Project profile - \" + _this.scope.sectionName + \" - \" + _this.scope.project.name);\n };\n })(this));\n promise.then(null, this.onInitialDataError.bind(this));\n this.scope.$on(\"project:loaded\", (function(_this) {\n return function() {\n return _this.appTitle.set(\"Project profile - \" + _this.scope.sectionName + \" - \" + _this.scope.project.name);\n };\n })(this));\n }\n\n ProjectProfileController.prototype.loadProject = function() {\n return this.rs.projects.get(this.scope.projectId).then((function(_this) {\n return function(project) {\n if (!project.i_am_owner) {\n _this.location.path(_this.navUrls.resolve(\"permission-denied\"));\n }\n _this.scope.project = project;\n _this.scope.pointsList = _.sortBy(project.points, \"order\");\n _this.scope.usStatusList = _.sortBy(project.us_statuses, \"order\");\n _this.scope.taskStatusList = _.sortBy(project.task_statuses, \"order\");\n _this.scope.prioritiesList = _.sortBy(project.priorities, \"order\");\n _this.scope.severitiesList = _.sortBy(project.severities, \"order\");\n _this.scope.issueTypesList = _.sortBy(project.issue_types, \"order\");\n _this.scope.issueStatusList = _.sortBy(project.issue_statuses, \"order\");\n _this.scope.$emit('project:loaded', project);\n return project;\n };\n })(this));\n };\n\n ProjectProfileController.prototype.loadInitialData = function() {\n var promise;\n promise = this.repo.resolve({\n pslug: this.params.pslug\n }).then((function(_this) {\n return function(data) {\n _this.scope.projectId = data.project;\n return data;\n };\n })(this));\n return promise.then((function(_this) {\n return function() {\n return _this.loadProject();\n };\n })(this));\n };\n\n ProjectProfileController.prototype.openDeleteLightbox = function() {\n return this.rootscope.$broadcast(\"deletelightbox:new\", this.scope.project);\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) {\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 promise;\n event.preventDefault();\n if (!form.validate()) {\n return;\n }\n $loading.start(submitButton);\n promise = $repo.save($scope.project);\n promise.then(function() {\n var newUrl;\n $loading.finish(submitButton);\n $confirm.notify(\"success\");\n newUrl = $navurls.resolve(\"project-admin-project-profile-details\", {\n project: $scope.project.slug\n });\n $location.path(newUrl);\n return $scope.$emit(\"project:loaded\", $scope.project);\n });\n return promise.then(null, function(data) {\n $loading.finish(target);\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\", ProjectProfileDirective]);\n\n ProjectDefaultValuesDirective = function($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 promise;\n event.preventDefault();\n if (!form.validate()) {\n return;\n }\n $loading.start(submitButton);\n promise = $repo.save($scope.project);\n promise.then(function() {\n $loading.finish(submitButton);\n return $confirm.notify(\"success\");\n });\n return promise.then(null, function(data) {\n $loading.finish(target);\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\", [\"$tgRepo\", \"$tgConfirm\", \"$tgLoading\", ProjectDefaultValuesDirective]);\n\n ProjectModulesDirective = function($repo, $confirm, $loading) {\n var link;\n link = function($scope, $el, $attrs) {\n var form, submit;\n form = $el.find(\"form\").checksley();\n submit = (function(_this) {\n return function() {\n var promise, target;\n if (!form.validate()) {\n return;\n }\n target = angular.element(\".admin-functionalities a.button-green\");\n $loading.start(target);\n promise = $repo.save($scope.project);\n promise.then(function() {\n $loading.finish(target);\n $confirm.notify(\"success\");\n return $scope.$emit(\"project:loaded\", $scope.project);\n });\n return promise.then(null, function(data) {\n $loading.finish(target);\n return $confirm.notify(\"error\", data._error_message);\n });\n };\n })(this);\n $el.on(\"submit\", \"form\", function(event) {\n event.preventDefault();\n return submit();\n });\n $el.on(\"click\", \".admin-functionalities a.button-green\", function(event) {\n event.preventDefault();\n return submit();\n });\n $scope.$watch(\"isVideoconferenceActivated\", function(isVideoconferenceActivated) {\n if (isVideoconferenceActivated) {\n return $el.find(\".videoconference-attributes\").removeClass(\"hidden\");\n } else {\n $el.find(\".videoconference-attributes\").addClass(\"hidden\");\n $scope.project.videoconferences = null;\n return $scope.project.videoconferences_salt = \"\";\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\", [\"$tgRepo\", \"$tgConfirm\", \"$tgLoading\", ProjectModulesDirective]);\n\n ProjectExportDirective = function($window, $rs, $confirm) {\n var link;\n link = function($scope, $el, $attrs) {\n var buttonsEl, hideButtons, hideResult, hideSpinner, resultEl, resultMessageEl, resultTitleEl, setAsyncMessage, setAsyncTitle, setLoadingMessage, setLoadingTitle, setSyncMessage, setSyncTitle, showButtons, showErrorMode, showExportResultAsyncMode, showExportResultSyncMode, showLoadingMode, showResult, showSpinner, spinnerEl;\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 setLoadingTitle = function() {\n return resultTitleEl.html(\"We are generating your dump file\");\n };\n setAsyncTitle = function() {\n return resultTitleEl.html(\"We are generating your dump file\");\n };\n setSyncTitle = function() {\n return resultTitleEl.html(\"Your dump file is ready!\");\n };\n resultMessageEl = $el.find(\".result-message \");\n setLoadingMessage = function() {\n return resultMessageEl.html(\"Please don't close this page.\");\n };\n setAsyncMessage = function() {\n return resultMessageEl.html(\"We will send you an email when ready.\");\n };\n setSyncMessage = function(url) {\n return resultMessageEl.html(\"If the download doesn't start automatically click here.\");\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\", \"a.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 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 = \"Our oompa loompas have some problems generasting your dump. Please try again. \";\n if (result.status === 429) {\n errorMsg = \"Sorry, our oompa loompas are very busy right now. Please try again in a few minutes. \";\n } else if ((ref = result.data) != null ? ref._error_message : void 0) {\n errorMsg = \"Our oompa loompas have some problems generasting your dump: \" + result.data._error_message;\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\", ProjectExportDirective]);\n\n CsvExporterController = (function(superClass) {\n extend(CsvExporterController, superClass);\n\n CsvExporterController.$inject = [\"$scope\", \"$rootScope\", \"$tgUrls\", \"$tgConfirm\", \"$tgResources\"];\n\n function CsvExporterController(scope, rootscope, urls, confirm, rs) {\n this.scope = scope;\n this.rootscope = rootscope;\n this.urls = urls;\n this.confirm = confirm;\n this.rs = rs;\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(finish) {\n var promise;\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 return finish();\n });\n return promise;\n };\n\n CsvExporterController.prototype.regenerateUuid = function() {\n var subtitle, title;\n if (this.scope.csvUuid) {\n title = \"Change URL\";\n subtitle = \"You going to change the CSV data access url. The previous url will be disabled. Are you sure?\";\n return this.confirm.ask(title, subtitle).then(this._generateUuid);\n } else {\n return this._generateUuid(_.identity);\n }\n };\n\n return CsvExporterController;\n\n })(taiga.Controller);\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(\"CsvExporterUserstoriesController\", CsvExporterUserstoriesController);\n\n module.controller(\"CsvExporterTasksController\", CsvExporterTasksController);\n\n module.controller(\"CsvExporterIssuesController\", CsvExporterIssuesController);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/admin/project-profile.coffee\n */\n\n(function() {\n var ColorSelectionDirective, ProjectCustomAttributesController, ProjectCustomAttributesDirective, ProjectValuesController, ProjectValuesDirective, ProjectValuesSectionController, bindOnce, debounce, 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 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\", \"$appTitle\"];\n\n function ProjectValuesSectionController(scope, rootscope, repo, confirm, rs, params, q, location, navUrls, appTitle) {\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.appTitle = appTitle;\n this.scope.project = {};\n promise = this.loadInitialData();\n promise.then((function(_this) {\n return function() {\n return _this.appTitle.set(\"Project values - \" + _this.scope.sectionName + \" - \" + _this.scope.project.name);\n };\n })(this));\n promise.then(null, this.onInitialDataError.bind(this));\n }\n\n ProjectValuesSectionController.prototype.loadProject = function() {\n return this.rs.projects.get(this.scope.projectId).then((function(_this) {\n return function(project) {\n if (!project.i_am_owner) {\n _this.location.path(_this.navUrls.resolve(\"permission-denied\"));\n }\n _this.scope.project = project;\n _this.scope.$emit('project:loaded', project);\n return project;\n };\n })(this));\n };\n\n ProjectValuesSectionController.prototype.loadInitialData = function() {\n var promise;\n promise = this.repo.resolve({\n pslug: this.params.pslug\n }).then((function(_this) {\n return function(data) {\n _this.scope.projectId = data.project;\n return data;\n };\n })(this));\n return promise.then((function(_this) {\n return function() {\n return _this.loadProject();\n };\n })(this));\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 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 this.rootscope.$on(\"project:loaded\", this.loadValues);\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 _this.scope.values = values;\n _this.scope.maxValueOrder = _.max(values, \"order\").order;\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);\n };\n\n return ProjectValuesController;\n\n })(taiga.Controller);\n\n module.controller(\"ProjectValuesController\", ProjectValuesController);\n\n ProjectValuesDirective = function($log, $repo, $confirm, $location, animationFrame) {\n var link, linkDragAndDrop, linkValue;\n linkDragAndDrop = function($scope, $el, $attrs) {\n var itemEl, newParentScope, oldParentScope, tdom;\n oldParentScope = null;\n newParentScope = null;\n itemEl = null;\n tdom = $el.find(\".sortable\");\n tdom.sortable({\n handle: \".row.table-main.visualization\",\n dropOnEmpty: true,\n connectWith: \".project-values-body\",\n revert: 400,\n axis: \"y\"\n });\n tdom.on(\"sortstop\", function(event, ui) {\n var itemIndex, itemValue;\n itemEl = ui.item;\n itemValue = itemEl.scope().value;\n itemIndex = itemEl.index();\n return $scope.$broadcast(\"admin:project-values:move\", itemValue, itemIndex);\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n linkValue = function($scope, $el, $attrs) {\n var $ctrl, cancel, goToBottomList, initializeNewValue, saveNewValue, saveValue, valueType;\n $ctrl = $el.controller();\n valueType = $attrs.type;\n initializeNewValue = function() {\n return $scope.newValue = {\n \"name\": \"\",\n \"is_closed\": false,\n \"is_archived\": false\n };\n };\n initializeNewValue();\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 promise = $repo.save(value);\n promise.then((function(_this) {\n return function() {\n var row;\n row = target.parents(\".row.table-main\");\n row.addClass(\"hidden\");\n return row.siblings(\".visualization\").removeClass('hidden');\n };\n })(this));\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 promise = $repo.create(valueType, $scope.newValue);\n promise.then((function(_this) {\n return function(data) {\n target.addClass(\"hidden\");\n $scope.values.push(data);\n $scope.maxValueOrder = data.order;\n return initializeNewValue();\n };\n })(this));\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\", \".edition input\", function(event) {\n var target;\n if (event.keyCode === 13) {\n target = angular.element(event.currentTarget);\n return saveValue(target);\n } else if (event.keyCode === 27) {\n target = angular.element(event.currentTarget);\n return cancel(target);\n }\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, replacement, subtitle, target, 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 title = \"Delete value\";\n subtitle = value.name;\n replacement = \"All items with this value will be changed to\";\n if (_.keys(choices).length === 0) {\n return $confirm.error(\"You can't delete all values.\");\n }\n return $confirm.askChoice(title, subtitle, choices, replacement).then(function(response) {\n var onError, onSucces;\n onSucces = function() {\n return $ctrl.loadValues()[\"finally\"](function() {\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\", ProjectValuesDirective]);\n\n ColorSelectionDirective = function() {\n var link;\n link = function($scope, $el, $attrs, $model) {\n var $ctrl;\n $ctrl = $el.controller();\n $scope.$watch($attrs.ngModel, function(element) {\n return $scope.color = element.color;\n });\n $el.on(\"click\", \".current-color\", function(event) {\n var body, target;\n event.preventDefault();\n event.stopPropagation();\n target = angular.element(event.currentTarget);\n $el.find(\".select-color\").hide();\n target.siblings(\".select-color\").show();\n body = angular.element(\"body\");\n return body.on(\"click\", (function(_this) {\n return function(event) {\n if (angular.element(event.target).parent(\".select-color\").length === 0) {\n $el.find(\".select-color\").hide();\n return body.unbind(\"click\");\n }\n };\n })(this));\n });\n $el.on(\"click\", \".select-color .color\", function(event) {\n var target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n $scope.$apply(function() {\n return $model.$modelValue.color = target.data(\"color\");\n });\n return $el.find(\".select-color\").hide();\n });\n $el.on(\"click\", \".select-color .selected-color\", function(event) {\n event.preventDefault();\n $scope.$apply(function() {\n return $model.$modelValue.color = $scope.color;\n });\n return $el.find(\".select-color\").hide();\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(\"tgColorSelection\", ColorSelectionDirective);\n\n ProjectCustomAttributesController = (function(superClass) {\n extend(ProjectCustomAttributesController, superClass);\n\n ProjectCustomAttributesController.$inject = [\"$scope\", \"$rootScope\", \"$tgRepo\", \"$tgResources\", \"$routeParams\", \"$q\", \"$tgLocation\", \"$tgNavUrls\", \"$appTitle\"];\n\n function ProjectCustomAttributesController(scope, rootscope, repo, rs, params, q, location, navUrls, appTitle) {\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.appTitle = appTitle;\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.scope.project = {};\n this.rootscope.$on(\"project:loaded\", (function(_this) {\n return function() {\n _this.loadCustomAttributes();\n return _this.appTitle.set(\"Project Custom Attributes - \" + _this.scope.sectionName + \" - \" + _this.scope.project.name);\n };\n })(this));\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 _this.scope.customAttributes = customAttributes;\n _this.scope.maxOrder = _.max(customAttributes, \"order\").order;\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);\n };\n\n ProjectCustomAttributesController.prototype.saveCustomAttribute = function(attrModel) {\n return this.repo.save(attrModel);\n };\n\n ProjectCustomAttributesController.prototype.deleteCustomAttribute = function(attrModel) {\n return this.repo.remove(attrModel);\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);\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) {\n var link;\n link = function($scope, $el, $attrs) {\n var $ctrl, cancelCreate, cancelUpdate, create, deleteCustomAttribute, hideAddButton, hideCancelButton, hideCreateForm, hideEditForm, resetNewAttr, revertChangesInCustomAttribute, showAddButton, showCancelButton, showCreateForm, showEditForm, sortableEl, update;\n $ctrl = $el.controller();\n $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n sortableEl = $el.find(\".js-sortable\");\n sortableEl.sortable({\n handle: \".js-view-custom-field\",\n dropOnEmpty: true,\n revert: 400,\n axis: \"y\"\n });\n sortableEl.on(\"sortstop\", function(event, ui) {\n var itemAttr, itemEl, itemIndex;\n itemEl = ui.item;\n itemAttr = itemEl.scope().attr;\n itemIndex = itemEl.index();\n return $ctrl.moveCustomAttributes(itemAttr, itemIndex);\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(_this) {\n return function() {\n $ctrl.loadCustomAttributes();\n hideCreateForm();\n resetNewAttr();\n return $confirm.notify(\"success\");\n };\n })(this);\n onError = (function(_this) {\n return function(data) {\n return form.setErrors(data);\n };\n })(this);\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 $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 return showCancelButton();\n }\n });\n $el.on(\"click\", \".js-add-custom-field-button\", function(event) {\n event.preventDefault();\n return showCreateForm();\n });\n $el.on(\"click\", \".js-create-custom-field-button\", debounce(2000, function(event) {\n var formEl, target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n formEl = target.closest(\"form\");\n return create(formEl);\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 var formEl, target;\n if (event.keyCode === 13) {\n target = angular.element(event.currentTarget);\n formEl = target.closest(\"form\");\n return create(formEl);\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 return formEl.find(\".js-edit-custom-field input:visible\").first().focus().select();\n };\n hideEditForm = function(formEl) {\n formEl.find(\".js-edit-custom-field\").addClass(\"hidden\");\n return formEl.find(\".js-view-custom-field\").removeClass(\"hidden\");\n };\n revertChangesInCustomAttribute = function(formEl) {\n return $scope.$apply(function() {\n return formEl.scope().attr.revert();\n });\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(_this) {\n return function() {\n $ctrl.loadCustomAttributes();\n hideEditForm(formEl);\n return $confirm.notify(\"success\");\n };\n })(this);\n onError = (function(_this) {\n return function(data) {\n return form.setErrors(data);\n };\n })(this);\n attr = formEl.scope().attr;\n return $ctrl.saveCustomAttribute(attr).then(onSucces, onError);\n };\n cancelUpdate = function(formEl) {\n hideEditForm(formEl);\n return revertChangesInCustomAttribute(formEl);\n };\n $el.on(\"click\", \".js-edit-custom-field-button\", function(event) {\n var formEl, target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n formEl = target.closest(\"form\");\n return showEditForm(formEl);\n });\n $el.on(\"click\", \".js-update-custom-field-button\", debounce(2000, function(event) {\n var formEl, target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n formEl = target.closest(\"form\");\n return update(formEl);\n }));\n $el.on(\"click\", \".js-cancel-edit-custom-field-button\", function(event) {\n var formEl, target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n formEl = target.closest(\"form\");\n return cancelUpdate(formEl);\n });\n $el.on(\"keyup\", \".js-edit-custom-field input\", function(event) {\n var formEl, target;\n if (event.keyCode === 13) {\n target = angular.element(event.currentTarget);\n formEl = target.closest(\"form\");\n return update(formEl);\n } else if (event.keyCode === 27) {\n target = angular.element(event.currentTarget);\n formEl = target.closest(\"form\");\n return cancelUpdate(formEl);\n }\n });\n deleteCustomAttribute = function(formEl) {\n var attr, message, subtitle, title;\n attr = formEl.scope().attr;\n title = \"Delete custom attribute\";\n subtitle = \"Remeber that all values in this custom field will be deleted.
Are you sure you want to continue?\";\n message = attr.name;\n return $confirm.ask(title, subtitle, message).then(function(finish) {\n var onError, onSucces;\n onSucces = function() {\n return $ctrl.loadCustomAttributes()[\"finally\"](function() {\n return finish();\n });\n };\n onError = function() {\n finish(false);\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 return $el.on(\"click\", \".js-delete-custom-field-button\", debounce(2000, function(event) {\n var formEl, target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n formEl = target.closest(\"form\");\n return deleteCustomAttribute(formEl);\n }));\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgProjectCustomAttributes\", [\"$log\", \"$tgConfirm\", \"animationFrame\", ProjectCustomAttributesDirective]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/resources/memberships.coffee\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 * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/admin/third-parties.coffee\n */\n\n(function() {\n var BitbucketController, BitbucketWebhooksDirective, GithubController, GithubWebhooksDirective, GitlabController, GitlabWebhooksDirective, 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\", \"$appTitle\"];\n\n function WebhooksController(scope, repo, rs, params, location, navUrls, appTitle) {\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.appTitle = appTitle;\n bindMethods(this);\n this.scope.sectionName = \"Webhooks\";\n this.scope.project = {};\n promise = this.loadInitialData();\n promise.then((function(_this) {\n return function() {\n return _this.appTitle.set(\"Webhooks - \" + _this.scope.project.name);\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 return this.rs.projects.get(this.scope.projectId).then((function(_this) {\n return function(project) {\n if (!project.i_am_owner) {\n _this.location.path(_this.navUrls.resolve(\"permission-denied\"));\n }\n _this.scope.project = project;\n _this.scope.$emit('project:loaded', project);\n return project;\n };\n })(this));\n };\n\n WebhooksController.prototype.loadInitialData = function() {\n var promise;\n promise = this.repo.resolve({\n pslug: this.params.pslug\n }).then((function(_this) {\n return function(data) {\n _this.scope.projectId = data.project;\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 return _this.loadWebhooks();\n };\n })(this));\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) {\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 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(_.pairs(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(\"DD MMM YYYY [at] hh:mm:ss\");\n }\n webhook.logs_counter = webhooklogs.length;\n webhook.logs = webhooklogs;\n return updateShowHideHistoryText();\n };\n })(this));\n };\n updateShowHideHistoryText = function() {\n var historyElement, textElement;\n textElement = $el.find(\".toggle-history\");\n historyElement = textElement.parents(\".single-webhook-wrapper\").find(\".webhooks-history\");\n if (historyElement.hasClass(\"open\")) {\n return textElement.text(\"(Hide history)\");\n } else {\n return textElement.text(\"(Show history)\");\n }\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 = \"Delete webhook\";\n message = \"Webhook '\" + webhook.name + \"'\";\n return $confirm.askOnDelete(title, message).then((function(_this) {\n return function(finish) {\n var onError, onSucces;\n onSucces = function() {\n finish();\n return $scope.$emit(\"webhooks:reload\");\n };\n onError = function() {\n 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\");\n return updateShowHideHistoryText();\n });\n });\n } else {\n $el.find(\".webhooks-history\").toggleClass(\"open\");\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\", WebhookDirective]);\n\n NewWebhookDirective = function($rs, $repo, $confirm, $loading) {\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 $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 return initializeNewValue();\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\", NewWebhookDirective]);\n\n GithubController = (function(superClass) {\n extend(GithubController, superClass);\n\n GithubController.$inject = [\"$scope\", \"$tgRepo\", \"$tgResources\", \"$routeParams\", \"$appTitle\"];\n\n function GithubController(scope, repo, rs, params, appTitle) {\n var promise;\n this.scope = scope;\n this.repo = repo;\n this.rs = rs;\n this.params = params;\n this.appTitle = appTitle;\n bindMethods(this);\n this.scope.sectionName = \"Github\";\n this.scope.project = {};\n promise = this.loadInitialData();\n promise.then((function(_this) {\n return function() {\n return _this.appTitle.set(\"Github - \" + _this.scope.project.name);\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 return this.rs.projects.get(this.scope.projectId).then((function(_this) {\n return function(project) {\n _this.scope.project = project;\n _this.scope.$emit('project:loaded', project);\n return project;\n };\n })(this));\n };\n\n GithubController.prototype.loadInitialData = function() {\n var promise;\n promise = this.repo.resolve({\n pslug: this.params.pslug\n }).then((function(_this) {\n return function(data) {\n _this.scope.projectId = data.project;\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 return _this.loadModules();\n };\n })(this));\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\", \"$appTitle\"];\n\n function GitlabController(scope, repo, rs, params, appTitle) {\n var promise;\n this.scope = scope;\n this.repo = repo;\n this.rs = rs;\n this.params = params;\n this.appTitle = appTitle;\n bindMethods(this);\n this.scope.sectionName = \"Gitlab\";\n this.scope.project = {};\n promise = this.loadInitialData();\n promise.then((function(_this) {\n return function() {\n return _this.appTitle.set(\"Gitlab - \" + _this.scope.project.name);\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 return this.rs.projects.get(this.scope.projectId).then((function(_this) {\n return function(project) {\n _this.scope.project = project;\n _this.scope.$emit('project:loaded', project);\n return project;\n };\n })(this));\n };\n\n GitlabController.prototype.loadInitialData = function() {\n var promise;\n promise = this.repo.resolve({\n pslug: this.params.pslug\n }).then((function(_this) {\n return function(data) {\n _this.scope.projectId = data.project;\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 return _this.loadModules();\n };\n })(this));\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\", \"$appTitle\"];\n\n function BitbucketController(scope, repo, rs, params, appTitle) {\n var promise;\n this.scope = scope;\n this.repo = repo;\n this.rs = rs;\n this.params = params;\n this.appTitle = appTitle;\n bindMethods(this);\n this.scope.sectionName = \"Bitbucket\";\n this.scope.project = {};\n promise = this.loadInitialData();\n promise.then((function(_this) {\n return function() {\n return _this.appTitle.set(\"Bitbucket - \" + _this.scope.project.name);\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 return this.rs.projects.get(this.scope.projectId).then((function(_this) {\n return function(project) {\n _this.scope.project = project;\n _this.scope.$emit('project:loaded', project);\n return project;\n };\n })(this));\n };\n\n BitbucketController.prototype.loadInitialData = function() {\n var promise;\n promise = this.repo.resolve({\n pslug: this.params.pslug\n }).then((function(_this) {\n return function(data) {\n _this.scope.projectId = data.project;\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 return _this.loadModules();\n };\n })(this));\n };\n\n return BitbucketController;\n\n })(mixOf(taiga.Controller, taiga.PageMixin, taiga.FiltersMixin));\n\n module.controller(\"BitbucketController\", BitbucketController);\n\n SelectInputText = function() {\n var link;\n link = function($scope, $el, $attrs) {\n return $el.on(\"click\", \".select-input-content\", function() {\n $el.find(\"input\").select();\n return $el.find(\".help-copy\").addClass(\"visible\");\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgSelectInputText\", SelectInputText);\n\n GithubWebhooksDirective = function($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 promise;\n event.preventDefault();\n if (!form.validate()) {\n return;\n }\n $loading.start(submitButton);\n promise = $repo.saveAttribute($scope.github, \"github\");\n promise.then(function() {\n $loading.finish(submitButton);\n return $confirm.notify(\"success\");\n });\n return promise.then(null, function(data) {\n $loading.finish(submitButton);\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\", GithubWebhooksDirective]);\n\n GitlabWebhooksDirective = function($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 promise;\n event.preventDefault();\n if (!form.validate()) {\n return;\n }\n $loading.start(submitButton);\n promise = $repo.saveAttribute($scope.gitlab, \"gitlab\");\n promise.then(function() {\n $loading.finish(submitButton);\n $confirm.notify(\"success\");\n return $scope.$emit(\"project:modules:reload\");\n });\n return promise.then(null, function(data) {\n $loading.finish(submitButton);\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\", GitlabWebhooksDirective]);\n\n BitbucketWebhooksDirective = function($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 promise;\n event.preventDefault();\n if (!form.validate()) {\n return;\n }\n $loading.start(submitButton);\n promise = $repo.saveAttribute($scope.bitbucket, \"bitbucket\");\n promise.then(function() {\n $loading.finish(submitButton);\n $confirm.notify(\"success\");\n return $scope.$emit(\"project:modules:reload\");\n });\n return promise.then(null, function(data) {\n $loading.finish(submitButton);\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\", 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}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/base/bind.coffee\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 * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/base/conf.coffee\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 * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/base/contrib.coffee\n */\n\n(function() {\n var ContribController, module, taigaContribPlugins,\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 taigaContribPlugins = this.taigaContribPlugins = this.taigaContribPlugins || [];\n\n ContribController = (function(superClass) {\n extend(ContribController, superClass);\n\n ContribController.$inject = [\"$rootScope\", \"$scope\", \"$routeParams\", \"$tgRepo\", \"$tgResources\", \"$tgConfirm\", \"$appTitle\"];\n\n function ContribController(rootScope, scope, params, repo, rs, confirm, appTitle) {\n var promise;\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.appTitle = appTitle;\n this.scope.adminPlugins = _.where(this.rootScope.contribPlugins, {\n \"type\": \"admin\"\n });\n this.scope.currentPlugin = _.first(_.where(this.scope.adminPlugins, {\n \"slug\": this.params.plugin\n }));\n this.scope.pluginTemplate = \"contrib/\" + this.scope.currentPlugin.slug;\n this.scope.projectSlug = this.params.pslug;\n promise = this.loadInitialData();\n promise.then((function(_this) {\n return function() {\n return _this.appTitle.set(_this.scope.project.name);\n };\n })(this));\n promise.then(null, (function(_this) {\n return function() {\n return _this.confirm.notify(\"error\");\n };\n })(this));\n }\n\n ContribController.prototype.loadProject = function() {\n return this.rs.projects.get(this.scope.projectId).then((function(_this) {\n return function(project) {\n _this.scope.project = project;\n _this.scope.$emit('project:loaded', project);\n _this.scope.$broadcast('project:loaded', project);\n return project;\n };\n })(this));\n };\n\n ContribController.prototype.loadInitialData = function() {\n var promise;\n promise = this.repo.resolve({\n pslug: this.params.pslug\n }).then((function(_this) {\n return function(data) {\n _this.scope.projectId = data.project;\n return data;\n };\n })(this));\n return promise.then((function(_this) {\n return function() {\n return _this.loadProject();\n };\n })(this));\n };\n\n return ContribController;\n\n })(taiga.Controller);\n\n module = angular.module(\"taigaBase\");\n\n module.controller(\"ContribController\", ContribController);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/base/http.coffee\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\", \"$tgStorage\"];\n\n HttpService.prototype.headers = function() {\n var token;\n token = this.storage.get('token');\n if (token) {\n return {\n \"Authorization\": \"Bearer \" + token\n };\n }\n return {};\n };\n\n function HttpService(http, q, storage) {\n this.http = http;\n this.q = q;\n this.storage = storage;\n HttpService.__super__.constructor.call(this);\n }\n\n HttpService.prototype.request = function(options) {\n options.headers = _.merge({}, options.headers || {}, this.headers());\n if (_.isPlainObject(options.data)) {\n options.data = JSON.stringify(options.data);\n }\n return this.http(options);\n };\n\n HttpService.prototype.get = function(url, params, options) {\n options = _.merge({\n method: \"GET\",\n url: url\n }, options);\n if (params) {\n options.params = params;\n }\n return this.request(options);\n };\n\n HttpService.prototype.post = function(url, data, params, options) {\n options = _.merge({\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 return this.request(options);\n };\n\n HttpService.prototype.put = function(url, data, params, options) {\n options = _.merge({\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 = _.merge({\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 = _.merge({\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 * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/base/i18n.coffee\n */\n\n(function() {\n var I18nDirective, I18nService, bindOnce, defaults, 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 bindOnce = this.taiga.bindOnce;\n\n defaults = {\n ns: \"app\",\n fallbackLng: \"en\",\n async: false,\n lng: \"en\"\n };\n\n I18nService = (function(superClass) {\n extend(I18nService, superClass);\n\n function I18nService(rootscope, localesEn) {\n this.rootscope = rootscope;\n this.options = _.clone(defaults, true);\n this.options.resStore = {\n en: {\n app: localesEn\n }\n };\n }\n\n I18nService.prototype.setLanguage = function(language) {\n i18n.setLng(language);\n this.rootscope.currentLang = language;\n return this.rootscope.$broadcast(\"i18n:changeLang\", language);\n };\n\n I18nService.prototype.initialize = function() {\n i18n.init(this.options);\n return this.rootscope.t = i18n.t;\n };\n\n I18nService.prototype.t = function(path, opts) {\n return i18n.t(path, opts);\n };\n\n return I18nService;\n\n })(taiga.Service);\n\n I18nDirective = function($rootscope, $i18n) {\n var link;\n link = function($scope, $el, $attrs) {\n var i, len, ns, options, opts, ref, results, v, values;\n values = $attrs.tr.split(\",\");\n options = $attrs.trOpts || '{}';\n opts = $scope.$eval(options);\n results = [];\n for (i = 0, len = values.length; i < len; i++) {\n v = values[i];\n if (v.indexOf(\":\") === -1) {\n results.push($el.html(_.escape($i18n.t(v, opts))));\n } else {\n ref = v.split(\":\"), ns = ref[0], v = ref[1];\n results.push($el.attr(ns, _.escape($i18n.t(v, opts))));\n }\n }\n return results;\n };\n return {\n link: link,\n restrict: \"A\",\n scope: false\n };\n };\n\n module = angular.module(\"taigaBase\");\n\n module.service(\"$tgI18n\", [\"$rootScope\", \"localesEn\", I18nService]);\n\n module.directive(\"tr\", [\"$rootScope\", \"$tgI18n\", I18nDirective]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/base/location.coffee\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 = _.merge($route.current.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 * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/base/model.coffee\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.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 * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/base/navurl.coffee\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] || \"undefined\";\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 return NavigationUrlsService;\n\n })(taiga.Service);\n\n module.service(\"$tgNavUrls\", NavigationUrlsService);\n\n NavigationUrlsDirective = function($navurls, $auth, $q, $location) {\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 name, params, promises, ref, values;\n ref = _.map(data.split(\":\"), trim), name = ref[0], params = ref[1];\n if (params) {\n params = _.map(params.split(\",\"), trim);\n } else {\n params = [];\n }\n values = _.map(params, function(x) {\n return trim(x.split(\"=\")[1]);\n });\n promises = _.map(values, function(x) {\n return bindOnceP($scope, x);\n });\n return $q.all(promises).then(function() {\n var i, item, key, len, options, ref1, value;\n options = {};\n for (i = 0, len = params.length; i < len; i++) {\n item = params[i];\n ref1 = _.map(item.split(\"=\"), trim), key = ref1[0], value = ref1[1];\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(\"mouseenter\", function(event) {\n var target;\n target = $(event.currentTarget);\n if (!target.data(\"fullUrl\")) {\n return parseNav($attrs.tgNav, $scope).then(function(result) {\n var fullUrl, name, options, url, user;\n name = result[0], options = result[1];\n user = $auth.getUser();\n if (user) {\n options.user = user.username;\n }\n url = $navurls.resolve(name);\n fullUrl = $navurls.formatUrl(url, options);\n target.data(\"fullUrl\", fullUrl);\n if (target.is(\"a\")) {\n target.attr(\"href\", fullUrl);\n }\n return $el.on(\"click\", function(event) {\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 return $scope.$apply();\n case 2:\n return window.open(fullUrl);\n }\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\", NavigationUrlsDirective]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/base/repository.coffee\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));\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) {\n var data, defered, promise, url;\n if (patch == null) {\n patch = true;\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);\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.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.isModified() && 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) {\n var httpOptions, url;\n if (options == null) {\n options = {};\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 return _.map(data.data, function(x) {\n return _this.model.make_model(name, x);\n });\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.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 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 * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/base/storage.coffee\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 serializedValue;\n serializedValue = localStorage.getItem(key);\n if (serializedValue === null) {\n return _default || null;\n }\n return JSON.parse(serializedValue);\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 * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/base/http.coffee\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\", [_.str.rtrim(this.mainUrl, \"/\"), _.str.ltrim(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 * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/resources/custom-field-values.coffee\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 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 * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/resources/projects.coffee\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 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 * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/resources/projects.coffee\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 * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/resources/mdrender.coffee\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","(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 * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/resources/memberships.coffee\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","(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","(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 * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/user-settings/main.coffee\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\"];\n\n function UserChangePasswordController(scope, rootscope, repo, confirm, rs, params, q, location, navUrls, auth) {\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.scope.sectionName = \"Change Password\";\n this.scope.project = {};\n this.scope.user = this.auth.getUser();\n promise = this.loadInitialData();\n promise.then(null, this.onInitialDataError.bind(this));\n }\n\n UserChangePasswordController.prototype.loadProject = function() {\n return this.rs.projects.get(this.scope.projectId).then((function(_this) {\n return function(project) {\n _this.scope.project = project;\n _this.scope.$emit('project:loaded', project);\n return project;\n };\n })(this));\n };\n\n UserChangePasswordController.prototype.loadInitialData = function() {\n var promise;\n promise = this.repo.resolve({\n pslug: this.params.pslug\n }).then((function(_this) {\n return function(data) {\n _this.scope.projectId = data.project;\n return data;\n };\n })(this));\n return promise.then((function(_this) {\n return function() {\n return _this.loadProject();\n };\n })(this));\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) {\n var link;\n link = function($scope, $el, $attrs, ctrl) {\n var submit, submitButton;\n submit = debounce(2000, (function(_this) {\n return function(event) {\n var promise;\n event.preventDefault();\n if ($scope.newPassword1 !== $scope.newPassword2) {\n $confirm.notify('error', \"The passwords dosn't match\");\n return;\n }\n $loading.start(submitButton);\n promise = $rs.userSettings.changePassword($scope.currentPassword, $scope.newPassword1);\n promise.then(function() {\n $loading.finish(submitButton);\n return $confirm.notify('success');\n });\n return promise.then(null, function(response) {\n $loading.finish(submitButton);\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\", UserChangePasswordDirective]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/user-settings/notifications.coffee\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\", \"$rootScope\", \"$tgRepo\", \"$tgConfirm\", \"$tgResources\", \"$routeParams\", \"$q\", \"$tgLocation\", \"$tgNavUrls\", \"$tgAuth\"];\n\n function UserNotificationsController(scope, rootscope, repo, confirm, rs, params, q, location, navUrls, auth) {\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.scope.sectionName = \"Email Notifications\";\n this.scope.project = {};\n this.scope.user = this.auth.getUser();\n promise = this.loadInitialData();\n promise.then(null, this.onInitialDataError.bind(this));\n }\n\n UserNotificationsController.prototype.loadProject = function() {\n return this.rs.projects.get(this.scope.projectId).then((function(_this) {\n return function(project) {\n _this.scope.project = project;\n _this.scope.$emit('project:loaded', project);\n return project;\n };\n })(this));\n };\n\n UserNotificationsController.prototype.loadNotifyPolicies = 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 UserNotificationsController.prototype.loadInitialData = function() {\n var promise;\n promise = this.repo.resolve({\n pslug: this.params.pslug\n }).then((function(_this) {\n return function(data) {\n _this.scope.projectId = data.project;\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 return _this.loadNotifyPolicies();\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) {\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 $el.off();\n $el.html(template({\n notifyPolicies: $scope.notifyPolicies\n }));\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\", UserNotificationsListDirective]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: plugins/humanshtml/humanshtml.coffee\n */\n\n(function() {\n var configure, module, taiga;\n\n taiga = this.taiga;\n\n module = angular.module(\"taigaPlugins\");\n\n configure = function($routeProvider) {\n return $routeProvider.when(\"/humans.html\", {\n \"templateUrl\": \"/plugins/humanshtml/templates/humans.html\"\n });\n };\n\n module.config([\"$routeProvider\", configure]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: plugins/terms/terms.coffee\n */\n\n(function() {\n var TermsNoticeDirective, module, taiga, template;\n\n taiga = this.taiga;\n\n module = angular.module(\"taigaPlugins\");\n\n template = _.template(\"

\\n By clicking \\\"Sign up\\\", you agree to our
\\n
\\\" title=\\\"See terms of service\\\" target=\\\"_blank\\\"> terms of service\\n and\\n \\\" title=\\\"See privacy policy\\\" target=\\\"_blank\\\"> privacy policy.\\n

\");\n\n TermsNoticeDirective = function($config) {\n var privacyPolicyUrl, templateFn, termsOfServiceUrl;\n privacyPolicyUrl = $config.get(\"privacyPolicyUrl\");\n termsOfServiceUrl = $config.get(\"termsOfServiceUrl\");\n templateFn = function() {\n var ctx;\n if (!(privacyPolicyUrl && termsOfServiceUrl)) {\n return \"\";\n }\n ctx = {\n termsUrl: termsOfServiceUrl,\n privacyUrl: privacyPolicyUrl\n };\n return template(ctx);\n };\n return {\n scope: {},\n restrict: \"AE\",\n template: templateFn\n };\n };\n\n module.directive(\"tgTermsNotice\", [\"$tgConfig\", TermsNoticeDirective]);\n\n}).call(this);\n","angular.module('taigaBase').value('localesEn', {\n \"checksley\": {\n \"defaultMessage\": \"This value seems to be invalid.\",\n \"type-email\": \"This value should be a valid email.\",\n \"type-url\": \"This value should be a valid url.\",\n \"type-urlstrict\": \"This value should be a valid url.\",\n \"type-number\": \"This value should be a valid number.\",\n \"type-digits\": \"This value should be digits.\",\n \"type-dateIso\": \"This value should be a valid date (YYYY-MM-DD).\",\n \"type-alphanum\": \"This value should be alphanumeric.\",\n \"type-phone\": \"This value should be a valid phone number.\",\n \"notnull\": \"This value should not be null.\",\n \"notblank\": \"This value should not be blank.\",\n \"required\": \"This value is required.\",\n \"regexp\": \"This value seems to be invalid.\",\n \"min\": \"This value should be greater than or equal to %s.\",\n \"max\": \"This value should be lower than or equal to %s.\",\n \"range\": \"This value should be between %s and %s.\",\n \"minlength\": \"This value is too short. It should have %s characters or more.\",\n \"maxlength\": \"This value is too long. It should have %s characters or less.\",\n \"rangelength\": \"This value length is invalid. It should be between %s and %s characters long.\",\n \"mincheck\": \"You must select at least %s choices.\",\n \"maxcheck\": \"You must select %s choices or less.\",\n \"rangecheck\": \"You must select between %s and %s choices.\",\n \"equalto\": \"This value should be the same.\"\n },\n \"common\": {\n \"subject\": \"Subject\",\n \"save\": \"Save\",\n \"blocked\": \"Blocked\",\n \"cancel\": \"Cancel\",\n \"status\": \"Status\",\n \"new-bulk\": \"New bulk insert\",\n \"one-item-line\": \"One item per line...\"\n },\n \"pagination\": {\n \"next\": \"Next\",\n \"prev\": \"Previous\"\n },\n \"markdown-editor\": {\n \"heading-1\": \"First Level Heading\",\n \"heading-2\": \"Second Level Heading\",\n \"heading-3\": \"Third Level Heading\",\n \"bold\": \"Bold\",\n \"italic\": \"Italic\",\n \"strike\": \"Strike\",\n \"bulleted-list\": \"Bulleted List\",\n \"numeric-list\": \"Numeric List\",\n \"picture\": \"Picture\",\n \"link\": \"Link\",\n \"quotes\": \"Quotes\",\n \"code-block\": \"Code Block / Code\",\n \"preview\": \"Preview\",\n \"help\": \"Help\",\n \"placeholder\": \"Your title here...\",\n \"link-placeholder\": \"Your text to link here...\"\n },\n \"us\": {\n \"title-new\": \"New User Story\",\n \"team-requirement\": \"Team Requirement\",\n \"client-requirement\": \"Client Requirement\"\n }\n}\n);"],"sourceRoot":"/source/"} \ No newline at end of file +{"version":3,"sources":["app.js","classes.js","utils.js","controllerMixins.js","admin.js","auth.js","backlog.js","base.js","common.js","events.js","feedback.js","integrations.js","issues.js","kanban.js","locales.js","nav.js","projects.js","related-tasks.js","resources.js","search.js","taskboard.js","tasks.js","team.js","user-settings.js","userstories.js","wiki.js","filters.js","lightboxes.js","main.js","sortable.js","sprints.js","memberships.js","project-profile.js","project-values.js","roles.js","third-parties.js","bind.js","conf.js","contrib.js","humanshtml/humanshtml.js","terms/terms.js","locales.en.js"],"names":["configure","init","module","modules","taiga","this","taigaContribPlugins","generateHash","components","_","map","x","JSON","stringify","hex_sha1","join","generateUniqueSessionIdentifier","date","randomNumber","Date","getTime","Math","floor","random","sessionId","$routeProvider","$locationProvider","$httpProvider","$provide","$tgEventsProvider","tgLoaderProvider","$compileProvider","authHttpIntercept","defaultHeaders","versionCheckHttpIntercept","when","templateUrl","resolve","loader","add","reloadOnSearch","redirectTo","params","pslug","otherwise","html5Mode","enabled","requireBase","Content-Type","Accept-Language","X-Session-Id","defaults","headers","patch","post","put","get","setSessionId","$q","$location","$navUrls","$lightboxService","httpResponseError","response","nextPath","status","closeAll","path","replace","url","search","reject","responseError","factory","interceptors","push","$confirm","versionErrorMsg","data","version","notify","window","checksley","updateValidators","linewidth","val","width","lines","valid","nl2br","split","every","line","length","updateMessages","debugInfoEnabled","taigaConfig","debugInfo","$log","$i18n","$config","$rootscope","$auth","$events","$analytics","initialize","debug","contribPlugins","adminPlugins","where","type","isAuthenticated","setupConnection","concat","plugin","angular","config","run","call","TaigaBase","TaigaController","TaigaService","extend","child","parent","ctor","constructor","key","hasProp","prototype","__super__","hasOwnProperty","bind","fn","me","apply","arguments","superClass","onInitialDataError","xhr","location","navUrls","q","Base","Service","Controller","bindMethods","bindOnce","cancelTimeout","debounce","debounceLeading","groupBy","joinStr","mixOf","scopeDefer","sizeFormat","slugify","startswith","timeout","toString","toggleText","trim","unslugify","indexOf","item","i","l","slice","str","breakTag","object","dependencies","methods","keys","forIn","value","bindAll","scope","attr","continuation","delBind","$eval","$watch","Mixed","base","method","mixin","mixins","name","ref","char","capitalize","element","texts","nextTextPosition","text","coll","pred","len","result","wait","setTimeout","timeoutVar","clearTimeout","func","defer","$apply","isNumber","isString","isPlainObject","isUndefined","leading","trailing","str1","str2","startsWith","input","precision","number","size","units","isNaN","parseFloat","isFinite","log","pow","toFixed","FiltersMixin","PageMixin","fillUsersAndRoles","users","roles","activeUsers","availableRoles","filter","user","is_active","sortBy","activeUsersById","e","id","usersById","project","memberships","uniq","computableRoles","contains","loadUsersAndRoles","promise","all","rs","projects","usersList","projectId","rolesList","then","_this","results","selectFilter","load","existing","compact","isInCurrentRouteParams","noreload","replaceFilter","replaceAllFilters","filters","unselectFilter","newValues","parsedValues","isEmpty","AuthService","CancelAccountDirective","ChangeEmailDirective","ChangePasswordFromRecoveryDirective","ForgotPasswordDirective","InvitationDirective","LoginDirective","PublicRegisterMessageDirective","RegisterDirective","rootscope","storage","model","http","urls","$inject","getUser","userData","make_model","setUser","auth","$broadcast","default_language","set","getAttrs","clear","remove","setToken","token","getToken","removeToken","login","clone","auth_token","logout","register","getInvitation","invitations","acceptInvitiationWithNewUser","acceptInvitiationWithExistingUser","forgotPassword","changePasswordFromRecovery","changeEmail","cancelAccount","service","templates","template","templateFn","publicRegisterEnabled","restrict","directive","$routeParams","link","$scope","$el","onError","onSuccess","submit","nextUrl","event","form","loginFormType","preventDefault","Form","find","validate","username","password","on","onErrorSubmit","onSuccessSubmit","onlyOneErrorElement","trackEvent","_error_message","setErrors","success","email","$params","tokenInParams","loginForm","onErrorSubmitLogin","onErrorSubmitRegister","onSuccessSubmitLogin","onSuccessSubmitRegister","registerForm","submitLogin","submitRegister","invitation","dataLogin","project_slug","escape","project_name","dataRegister","$repo","$model","email_token","queryOne","cancel_token","TaigaMainDirective","$window","onresize","home","error","not-found","permission-denied","forgot-password","change-password","change-email","cancel-account","create-project","profile","project-backlog","project-taskboard","project-kanban","project-issues","project-search","project-userstories-detail","project-tasks-detail","project-issues-detail","project-wiki","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-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-contrib","user-settings-user-profile","user-settings-user-change-password","user-settings-user-avatar","user-settings-mail-notifications","$navurls","update","AnimationFrame","AppTitle","CheckPermissionDirective","ClassPermissionDirective","LimitLineLengthDirective","ProjectUrl","Qqueue","SelectedText","Template","ToggleCommentDirective","$document","getSelection","selection","createRange","render","permission","my_permissions","removeClass","$attrs","addClass","tgCheckPermission","$on","off","checkPermissions","tgClassPermissionWatchAction","unbindWatcher","className","negation","classes","animationFrame","performAnimation","tail","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","shift","$","ctx","slug","is_backlog_activated","is_kanban_activated","is_wiki_activated","is_issues_activated","maxColsPerLine","parseInt","code","keyCode","each","index","substring","deferred","lastPromise","qqueue","bindAdd","args","$templateCache","lodash","tmp","EventsProvider","EventsService","win","subscriptions","connected","pendingMessages","WebSocket","info","loc","scheme","stopExistingConnection","protocol","ltrim","host","ws","addEventListener","onOpen","onMessage","onClose","removeEventListener","close","serialize","message","isObject","sendMessage","messages","msg","send","subscribe","routingKey","callback","subscription","cmd","routing_key","unsubscribe","parse","$get","$win","$conf","provider","FeedbackDirective","$loading","submitButton","start","create","feedback","finish","open","focus","ProjectMenuDirective","ProjectsNavigationController","ProjectsNavigationDirective","navurls","projectUrl","loadInitialData","console","listByMember","filteredProjects","filterText","newProject","filterProjects","toLowerCase","controller","$timeout","tgLoader","$compile","$template","baseTemplate","hideMenu","loadingStart","overlay","projectsTemplate","difftime","timeoutValue","is","one","document","body","css","hide","disablePreventLoading","$ctrls","$ctrl","renderProjects","html","$emit","which","hasClass","show","toggleClass","currentUrl","target","currentTarget","prop","absUrl","preventLoading","require","$tgAuth","getSectionName","mainTemplate","menuEntriesTemplate","renderMainMenu","renderMenuEntries","videoConferenceUrl","sectionName","oldSectionName","targetScope","container","dom","section","feedbackEnabled","replaceWith","baseUrl","videoconferences","videoconferences_salt","popover","listener","stopPropagation","videoconferenceUrl","RelatedTaskAssignedToInlineEditionDirective","RelatedTaskCreateButtonDirective","RelatedTaskCreateFormDirective","RelatedTaskRowDirective","RelatedTasksDirective","templateEdit","templateView","renderEdit","renderView","saveTask","task","subject","save","$modelValue","perms","modify_task","delete_task","select","title","askOnDelete","ngModel","$tgmodel","newTask","assigned_to","createTask","default_task_status","us","$rs","loadTasks","tasks","list","usId","autoSave","notAutoSave","updateRelatedTask","member","imgurl","photo","full_name_display","tgRelatedTaskAssignedToInlineEdition","unbind","userId","updatedRelatedTask","ResourcesService","initResources","initUrls","auth-register","permissions","notify-policies","bulk-create-memberships","milestones","userstories","bulk-create-us","bulk-update-us-backlog-order","bulk-update-us-sprint-order","bulk-update-us-kanban-order","userstories-restore","bulk-create-tasks","bulk-update-task-taskboard-order","tasks-restore","issues","bulk-create-issues","issues-restore","wiki","wiki-restore","wiki-links","choices/userstory-statuses","choices/userstory-statuses/bulk-update-order","choices/points","choices/points/bulk-update-order","choices/task-statuses","choices/task-statuses/bulk-update-order","choices/issue-statuses","choices/issue-statuses/bulk-update-order","choices/issue-types","choices/issue-types/bulk-update-order","choices/priorities","choices/priorities/bulk-update-order","choices/severities","choices/severities/bulk-update-order","sites","project-templates","site-members","site-projects","users-password-recovery","users-change-password-from-recovery","users-change-password","users-change-email","users-cancel-account","user-storage","resolver","userstory-statuses","points","task-statuses","issue-statuses","issue-types","priorities","severities","project-modules","webhooks","webhooks-test","webhooklogs","webhooklogs-resend","history/us","history/issue","history/task","history/wiki","attachments/us","attachments/issue","attachments/task","attachments/wiki_page","custom-attributes/userstory","custom-attributes/issue","custom-attributes/task","custom-attributes-values/userstory","custom-attributes-values/issue","custom-attributes-values/task","exporter","importer","userstories-csv","tasks-csv","issues-csv","$urls","providers","toArray","SearchBoxDirective","SearchController","SearchDirective","scope1","repo","appTitle","loadSearchData","searchTerm","t","term","pageLoaded","loadFilters","defered","loadProject","getBySlug","issueStatusById","issue_statuses","taskStatusById","task_statuses","severityById","priorityById","membersById","usStatusById","us_statuses","searchResults","$route","reload","$templatecache","$routeparams","linkTable","getActiveSection","lastSeatchResults","markSectionTabActive","renderFilterTabs","renderTableContent","tabsDom","maxVal","selectedSectionData","selectedSectionName","wikipages","oldElements","oldScope","children","$destroy","$new","parseHTML","activeSection","sectionData","searchText","BacklogFiltersDirective","$templates","templateSelected","initializeSelectedFilters","renderFilters","renderSelectedFilters","selectQFilter","selectedFilters","showCategories","showFilters","toggleFilterSelection","closest","values","selected","f","color","style","currentFiltersType","loadUserstories","tags","CreateEditSprint","lightboxService","createSprint","hasErrors","sprint","estimated_start","estimated_finish","broadcastEvent","newSprint","copy","moment","format","setAttr","sprintsCounter","__all__","milestonesCounter","estimatedFinish","estimatedStart","lastSprint","lastSprintNameDom","reset","sprints","BacklogController","BacklogDirective","TgBacklogProgressBarDirective","UsPointsDirective","UsRolePointsSelectorDirective","tgBacklogGraphDirective","confirm","params1","events","analytics","showTags","activeFilters","initializeEventHandlers","getShowTags","loadProjectStats","loadSprints","moveUs","loadClosedSprints","unloadClosedSprints","initializeSubscription","routingKey1","routingKey2","toggleShowTags","storeShowTags","toggleActiveFilters","stats","completedPercentage","total_points","round","closed_points","refreshTagsColors","tagsColors","tags_colors","closedSprints","closed","j","user_stories","openSprints","reverse","sprintsById","resetFilters","selectedStatuses","selectedTags","statuses","filtersQ","filterGrp","httpParams","getUrlFilters","storeQueryParams","listUnassigned","setSearchDataFilters","filterVisibleUserstories","generateFilters","loadBacklog","totalClosedMilestones","total_closed_milestones","pointsById","usStatusList","visibleUserstories","some","tag","isFilterSelected","searchdata","Object","prepareBulkUpdateData","uses","field","us_id","order","resortUserStories","items","isModified","usList","newUsIndex","newSprintId","len1","len2","m","oldSprintId","promises","milestone","r","splice","Array","bulkUpdateBacklogOrder","bulkUpdateSprintOrder","len3","n","oldSprint","urlfilters","results1","pick","plainStatuses","plainTags","flatten","sort","countBy","v","k","obj","count","editUserStory","deleteUserStory","without","addNewUs","default_us_status","addNewSprint","doomLineTemplate","linkDoomLine","linkFilters","linkToolbar","showHideFilter","showHideTags","addDoomLineDom","getUsItems","reloadDoomLine","removeDoomlineDom","current_sum","domElement","assigned_points","before","rowElements","moveToCurrentSprint","selectedUss","extraPoints","totalExtraPoints","ussCurrent","reduce","acc","num","union","saveAll","moveToCurrentSprintDom","selectedUsDom","ussDom","ussToMove","itemScope","partial","elm","sidebar","filtersSearch","disableSelection","selectionTemplate","numberOfRoles","append","roleId","roleName","rolScope","$tgEstimationsService","$tgTemplate","rolesTemplate","bindClickElements","estimationProcess","filteringRoleId","renderRolesSelector","selectedRoleId","updatingSelectedRoleId","tgBacklogUsPoints","calculateRoles","isEditable","onSelectedPointForRole","pointId","pointObj","totalPoints","calculateTotalPoints","editable","renderPointsSelector","popRolesDom","redrawChart","dataToDraw","client_increment_line","colors","evolution_line","milestonesRange","optimal_line","options","team_increment_line","zero_line","height","zip","fillColor","ml","optimal","evolution","grid","borderWidth","top","right","left","bottom","borderColor","hoverable","xaxis","ticks","axisLabel","axisLabelUseCanvas","axisLabelFontSizePixels","axisLabelFontFamily","axisLabelPadding","tickFormatter","series","shadowSize","fill","radius","lineWidth","tooltip","tooltipOpts","content","label","xval","yval","flotItem","seriesIndex","abs","empty","plot","adjustPercentaje","el","projectPointsPercentaje","closedPointsPercentaje","percentage","adjusted","max","min","tgBacklogProgressBar","closedPoints","definedPoints","defined_points","BacklogEmptySortableDirective","BacklogSortableDirective","SprintSortableDirective","deleteElement","$tgConfirm","getUsIndex","filterError","sortable","cancel","connectWith","containment","dropOnEmpty","placeholder","scroll","tolerance","revert","cursorAt","stop","ui","itemIndex","itemUs","source","BacklogSprintDirective","BacklogSprintHeaderDirective","ToggleExcludeClosedSprintsVisualization","refreshSprintTableHeight","slideOptions","sprintTableMinHeight","toggleSprint","duration","easing","sprintTable","sprintArrow","tgBacklogSprint","slideToggle","isVisible","estimatedDateRange","taskboardUrl","excludeClosedSprints","loadingElm","after","CreateMembersDirective","MAX_MEMBERSHIP_FIELDSETS","$rootScope","extraTextTemplate","createFieldSet","resetForm","required","roleList","fieldSet","prepend","lastActionButton","newFieldSet","invitation_extra_text","memberWrappers","destroy","mw","memberWrapper","role","role_id","bulkCreateMemberships","MembershipsController","MembershipsDirective","MembershipsRowActionsDirective","MembershipsRowAdminCheckboxDirective","MembershipsRowAvatarDirective","MembershipsRowRoleSelectorDirective","loadMembers","i_am_owner","httpFilters","models","membership","is_user_active","page","current","paginatedBy","addNewMembers","linkPagination","$pagEl","afterCurrent","atBegin","atEnd","beforeCurrent","getNumPages","renderPagination","numPages","cpage","pages","showPrevious","showNext","pagenum","full_name","user_email","tgMembershipsRowAvatar","inputId","tgMembershipsRowAdminCheckbox","is_owner","selectedRole","tgMembershipsRowRoleSelector","newRole","activedTemplate","pendingTemplate","tgMembershipsRowActions","resendInvitation","AdminNavigationDirective","tgAdminNavigation","CsvExporterController","CsvExporterIssuesController","CsvExporterTasksController","CsvExporterUserstoriesController","ProjectDefaultValuesDirective","ProjectExportDirective","ProjectModulesDirective","ProjectProfileController","ProjectProfileDirective","pointsList","taskStatusList","prioritiesList","severitiesList","issueTypesList","issue_types","issueStatusList","openDeleteLightbox","newUrl","isVideoconferenceActivated","buttonsEl","hideButtons","hideResult","hideSpinner","resultEl","resultMessageEl","resultTitleEl","setAsyncMessage","setAsyncTitle","setLoadingMessage","setLoadingTitle","setSyncMessage","setSyncTitle","showButtons","showErrorMode","showExportResultAsyncMode","showExportResultSyncMode","showLoadingMode","showResult","showSpinner","spinnerEl","dumpUrl","errorMsg","_generateUuid","setCsvUuid","csvUrl","resolveAbsolute","csvUuid","uuid","regenerateUuid","subtitle","ask","identity","ColorSelectionDirective","ProjectCustomAttributesController","ProjectCustomAttributesDirective","ProjectValuesController","ProjectValuesDirective","ProjectValuesSectionController","moveValue","loadValues","resource","listValues","maxValueOrder","itemValue","linkDragAndDrop","linkValue","itemEl","newParentScope","oldParentScope","tdom","handle","axis","goToBottomList","initializeNewValue","saveNewValue","saveValue","valueType","newValue","is_closed","is_archived","table","scrollTop","offset","first","formEl","parents","row","siblings","editionRow","choices","replacement","option","askChoice","onSucces","moveTo","moveCustomAttributes","deleteCustomAttribute","saveCustomAttribute","createCustomAttribute","loadCustomAttributes","customAttributes","maxOrder","attrValues","attrModel","newIndex","idx","cancelCreate","cancelUpdate","hideAddButton","hideCancelButton","hideCreateForm","hideEditForm","resetNewAttr","revertChangesInCustomAttribute","showAddButton","showCancelButton","showCreateForm","showEditForm","sortableEl","itemAttr","newAttr","EditRoleDirective","NewRoleDirective","RolePermissionsDirective","RolesController","RolesDirective","anyComputableRole","point","computable","loadExternalUserRole","public_permission","external_user","public_permissions","loadRoles","setRole","warning","setComputable","toggleView","toggle","$tgrepo","DEFAULT_PERMISSIONS","categoryTemplate","resumeTemplate","generateCategoriesFromRole","renderCategory","renderPermissions","renderResume","categories","isPermissionEditable","issuePermissions","milestonePermissions","setActivePermissions","setActivePermissionsPerCategory","taskPermissions","userStoryPermissions","wikiPermissions","active","is_private","category","cat","activePermissions","description","next","getActivePermissions","categoryId","anon_permissions","BitbucketController","BitbucketWebhooksDirective","GithubController","GithubWebhooksDirective","GitlabController","GitlabWebhooksDirective","NewWebhookDirective","SelectInputText","ValidOriginIpsDirective","WebhookDirective","WebhooksController","loadWebhooks","openHistory","showEditMode","showVisualizationMode","updateLogs","updateShowHideHistoryText","webhook","tgWebhook","validStatus","prettySentHeaders","pairs","request_headers","arg","header","prettySentData","request_data","prettyDate","created","logs_counter","logs","historyElement","textElement","test","resend","addWebhookDOMNode","formDOMNode","loadModules","github","gitlab","bitbucket","saveAttribute","$ngModel","$parsers","BindHtmlDirective","BindOnceAltDirective","BindOnceBindDirective","BindOnceHrefDirective","BindOnceHtmlDirective","BindOnceRefDirective","BindOnceSrcDirective","BindOnceTitleDirective","BindTitleDirective","tgBoBind","tgBoHtml","tgBoRef","tgBoSrc","tgBoHref","tgBoAlt","tgBoTitle","tgTitleHtml","tgBindHtml","ConfigurationService","defaultValue","has","ContribController","rootScope","currentPlugin","pluginTemplate","projectSlug","TermsNoticeDirective","privacyPolicyUrl","termsOfServiceUrl","termsUrl","privacyUrl","defaultMessage","type-email","type-url","type-urlstrict","type-number","type-digits","type-dateIso","type-alphanum","type-phone","notnull","notblank","regexp","range","minlength","maxlength","rangelength","mincheck","maxcheck","rangecheck","equalto","common","blocked","new-bulk","one-item-line","pagination","prev","markdown-editor","heading-1","heading-2","heading-3","bold","italic","strike","bulleted-list","numeric-list","picture","quotes","code-block","preview","help","link-placeholder","title-new","team-requirement","client-requirement"],"mappings":"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","file":"app.js","sourcesContent":["\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: app.coffee\n */\n\n(function() {\n var configure, init, module, modules, taiga;\n\n this.taiga = taiga = {};\n\n this.taigaContribPlugins = this.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 configure = function($routeProvider, $locationProvider, $httpProvider, $provide, $tgEventsProvider, tgLoaderProvider, $compileProvider) {\n var authHttpIntercept, defaultHeaders, versionCheckHttpIntercept;\n $routeProvider.when(\"/\", {\n templateUrl: \"project/projects.html\",\n resolve: {\n loader: tgLoaderProvider.add()\n }\n });\n $routeProvider.when(\"/project/:pslug/\", {\n templateUrl: \"project/project.html\"\n });\n $routeProvider.when(\"/project/:pslug/search\", {\n templateUrl: \"search/search.html\",\n reloadOnSearch: false\n });\n $routeProvider.when(\"/project/:pslug/backlog\", {\n templateUrl: \"backlog/backlog.html\",\n resolve: {\n loader: tgLoaderProvider.add()\n }\n });\n $routeProvider.when(\"/project/:pslug/kanban\", {\n templateUrl: \"kanban/kanban.html\",\n resolve: {\n loader: tgLoaderProvider.add()\n }\n });\n $routeProvider.when(\"/project/:pslug/taskboard/:sslug\", {\n templateUrl: \"taskboard/taskboard.html\",\n resolve: {\n loader: tgLoaderProvider.add()\n }\n });\n $routeProvider.when(\"/project/:pslug/us/:usref\", {\n templateUrl: \"us/us-detail.html\",\n resolve: {\n loader: tgLoaderProvider.add()\n }\n });\n $routeProvider.when(\"/project/:pslug/task/:taskref\", {\n templateUrl: \"task/task-detail.html\",\n resolve: {\n loader: tgLoaderProvider.add()\n }\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/:slug\", {\n templateUrl: \"wiki/wiki.html\",\n resolve: {\n loader: tgLoaderProvider.add()\n }\n });\n $routeProvider.when(\"/project/:pslug/team\", {\n templateUrl: \"team/team.html\",\n resolve: {\n loader: tgLoaderProvider.add()\n }\n });\n $routeProvider.when(\"/project/:pslug/issues\", {\n templateUrl: \"issue/issues.html\",\n resolve: {\n loader: tgLoaderProvider.add()\n }\n });\n $routeProvider.when(\"/project/:pslug/issue/:issueref\", {\n templateUrl: \"issue/issues-detail.html\",\n resolve: {\n loader: tgLoaderProvider.add()\n }\n });\n $routeProvider.when(\"/project/:pslug/admin/project-profile/details\", {\n templateUrl: \"admin/admin-project-profile.html\"\n });\n $routeProvider.when(\"/project/:pslug/admin/project-profile/default-values\", {\n templateUrl: \"admin/admin-project-default-values.html\"\n });\n $routeProvider.when(\"/project/:pslug/admin/project-profile/modules\", {\n templateUrl: \"admin/admin-project-modules.html\"\n });\n $routeProvider.when(\"/project/:pslug/admin/project-profile/export\", {\n templateUrl: \"admin/admin-project-export.html\"\n });\n $routeProvider.when(\"/project/:pslug/admin/project-profile/reports\", {\n templateUrl: \"admin/admin-project-reports.html\"\n });\n $routeProvider.when(\"/project/:pslug/admin/project-values/status\", {\n templateUrl: \"admin/admin-project-values-status.html\"\n });\n $routeProvider.when(\"/project/:pslug/admin/project-values/points\", {\n templateUrl: \"admin/admin-project-values-points.html\"\n });\n $routeProvider.when(\"/project/:pslug/admin/project-values/priorities\", {\n templateUrl: \"admin/admin-project-values-priorities.html\"\n });\n $routeProvider.when(\"/project/:pslug/admin/project-values/severities\", {\n templateUrl: \"admin/admin-project-values-severities.html\"\n });\n $routeProvider.when(\"/project/:pslug/admin/project-values/types\", {\n templateUrl: \"admin/admin-project-values-types.html\"\n });\n $routeProvider.when(\"/project/:pslug/admin/project-values/custom-fields\", {\n templateUrl: \"admin/admin-project-values-custom-fields.html\"\n });\n $routeProvider.when(\"/project/:pslug/admin/memberships\", {\n templateUrl: \"admin/admin-memberships.html\"\n });\n $routeProvider.when(\"/project/:pslug/admin/roles\", {\n templateUrl: \"admin/admin-roles.html\"\n });\n $routeProvider.when(\"/project/:pslug/admin/third-parties/webhooks\", {\n templateUrl: \"admin/admin-third-parties-webhooks.html\"\n });\n $routeProvider.when(\"/project/:pslug/admin/third-parties/github\", {\n templateUrl: \"admin/admin-third-parties-github.html\"\n });\n $routeProvider.when(\"/project/:pslug/admin/third-parties/gitlab\", {\n templateUrl: \"admin/admin-third-parties-gitlab.html\"\n });\n $routeProvider.when(\"/project/:pslug/admin/third-parties/bitbucket\", {\n templateUrl: \"admin/admin-third-parties-bitbucket.html\"\n });\n $routeProvider.when(\"/project/:pslug/admin/contrib/:plugin\", {\n templateUrl: \"contrib/main.html\"\n });\n $routeProvider.when(\"/project/:pslug/user-settings/user-profile\", {\n templateUrl: \"user/user-profile.html\"\n });\n $routeProvider.when(\"/project/:pslug/user-settings/user-change-password\", {\n templateUrl: \"user/user-change-password.html\"\n });\n $routeProvider.when(\"/project/:pslug/user-settings/user-avatar\", {\n templateUrl: \"user/user-avatar.html\"\n });\n $routeProvider.when(\"/project/:pslug/user-settings/mail-notifications\", {\n templateUrl: \"user/mail-notifications.html\"\n });\n $routeProvider.when(\"/change-email/:email_token\", {\n templateUrl: \"user/change-email.html\"\n });\n $routeProvider.when(\"/cancel-account/:cancel_token\", {\n templateUrl: \"user/cancel-account.html\"\n });\n $routeProvider.when(\"/login\", {\n templateUrl: \"auth/login.html\"\n });\n $routeProvider.when(\"/register\", {\n templateUrl: \"auth/register.html\"\n });\n $routeProvider.when(\"/forgot-password\", {\n templateUrl: \"auth/forgot-password.html\"\n });\n $routeProvider.when(\"/change-password\", {\n templateUrl: \"auth/change-password-from-recovery.html\"\n });\n $routeProvider.when(\"/change-password/:token\", {\n templateUrl: \"auth/change-password-from-recovery.html\"\n });\n $routeProvider.when(\"/invitation/:token\", {\n templateUrl: \"auth/invitation.html\"\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 redirectTo: '/not-found'\n });\n $locationProvider.html5Mode({\n enabled: true,\n requireBase: false\n });\n defaultHeaders = {\n \"Content-Type\": \"application/json\",\n \"Accept-Language\": \"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 $tgEventsProvider.setSessionId(taiga.sessionId);\n authHttpIntercept = function($q, $location, $navUrls, $lightboxService) {\n var httpResponseError;\n httpResponseError = function(response) {\n var nextPath;\n if (response.status === 0) {\n $lightboxService.closeAll();\n $location.path($navUrls.resolve(\"error\"));\n $location.replace();\n } else if (response.status === 401) {\n nextPath = $location.path();\n $location.url($navUrls.resolve(\"login\")).search(\"next=\" + nextPath);\n }\n return $q.reject(response);\n };\n return {\n responseError: httpResponseError\n };\n };\n $provide.factory(\"authHttpIntercept\", [\"$q\", \"$location\", \"$tgNavUrls\", \"lightboxService\", authHttpIntercept]);\n $httpProvider.interceptors.push('authHttpIntercept');\n versionCheckHttpIntercept = function($q, $confirm) {\n var httpResponseError, versionErrorMsg;\n versionErrorMsg = \"Someone inside Taiga has changed this before and our Oompa Loompas cannot apply your changes. Please reload and apply your changes again (they will be lost).\";\n httpResponseError = function(response) {\n if (response.status === 400 && response.data.version) {\n $confirm.notify(\"error\", versionErrorMsg, null, 10000);\n return $q.reject(response);\n }\n return $q.reject(response);\n };\n return {\n responseError: httpResponseError\n };\n };\n $provide.factory(\"versionCheckHttpIntercept\", [\"$q\", \"$tgConfirm\", versionCheckHttpIntercept]);\n $httpProvider.interceptors.push('versionCheckHttpIntercept');\n window.checksley.updateValidators({\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 });\n window.checksley.updateMessages(\"default\", {\n linewidth: \"The subject must have a maximum size of %s\"\n });\n return $compileProvider.debugInfoEnabled(window.taigaConfig.debugInfo || false);\n };\n\n init = function($log, $i18n, $config, $rootscope, $auth, $events, $analytics) {\n $i18n.initialize($config.get(\"defaultLanguage\"));\n $log.debug(\"Initialize application\");\n $rootscope.contribPlugins = this.taigaContribPlugins;\n $rootscope.adminPlugins = _.where(this.taigaContribPlugins, {\n \"type\": \"admin\"\n });\n if ($auth.isAuthenticated()) {\n $events.setupConnection();\n }\n return $analytics.initialize();\n };\n\n modules = [\"taigaBase\", \"taigaCommon\", \"taigaResources\", \"taigaLocales\", \"taigaAuth\", \"taigaEvents\", \"taigaRelatedTasks\", \"taigaBacklog\", \"taigaTaskboard\", \"taigaKanban\", \"taigaIssues\", \"taigaUserStories\", \"taigaTasks\", \"taigaTeam\", \"taigaWiki\", \"taigaSearch\", \"taigaAdmin\", \"taigaNavMenu\", \"taigaProject\", \"taigaUserSettings\", \"taigaFeedback\", \"taigaPlugins\", \"taigaIntegrations\", \"templates\", \"ngRoute\", \"ngAnimate\"].concat(_.map(this.taigaContribPlugins, function(plugin) {\n return plugin.module;\n }));\n\n module = angular.module(\"taiga\", modules);\n\n module.config([\"$routeProvider\", \"$locationProvider\", \"$httpProvider\", \"$provide\", \"$tgEventsProvider\", \"tgLoaderProvider\", \"$compileProvider\", configure]);\n\n module.run([\"$log\", \"$tgI18n\", \"$tgConfig\", \"$rootScope\", \"$tgAuth\", \"$tgEvents\", \"$tgAnalytics\", init]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: classes.coffee\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.location.path(this.navUrls.resolve(\"not-found\"));\n this.location.replace();\n } else if (xhr.status === 403) {\n this.location.path(this.navUrls.resolve(\"permission-denied\"));\n this.location.replace();\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 * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: utils.coffee\n */\n\n(function() {\n var bindMethods, bindOnce, cancelTimeout, debounce, debounceLeading, groupBy, joinStr, mixOf, nl2br, scopeDefer, sizeFormat, slugify, startswith, taiga, timeout, toString, toggleText, trim, 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 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) {\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 _.str.trim(data, char);\n };\n\n slugify = function(data) {\n return _.str.slugify(data);\n };\n\n unslugify = function(data) {\n if (data) {\n return _.str.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 _.str.join(str, coll);\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 _.str.startsWith(str1, str2);\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 taiga = this.taiga;\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.debounce = debounce;\n\n taiga.debounceLeading = debounceLeading;\n\n taiga.startswith = startswith;\n\n taiga.sizeFormat = sizeFormat;\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/controllerMixins.coffee\n */\n\n(function() {\n var FiltersMixin, PageMixin, 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, availableRoles;\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(this.scope.users, function(e) {\n return e.id;\n });\n this.scope.roles = _.sortBy(roles, \"order\");\n availableRoles = _(this.scope.project.memberships).map(\"role\").uniq().value();\n return this.scope.computableRoles = _(roles).filter(\"computable\").filter(function(x) {\n return _.contains(availableRoles, 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.selectFilter = function(name, value, load) {\n var existing, location, params;\n if (load == null) {\n load = false;\n }\n params = this.location.search();\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) {\n var location, newValues, params, parsedValues;\n if (load == null) {\n load = false;\n }\n params = this.location.search();\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 return FiltersMixin;\n\n })();\n\n taiga.FiltersMixin = FiltersMixin;\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/admin.coffee\n */\n\n(function() {\n var module;\n\n module = angular.module(\"taigaAdmin\", []);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/auth.coffee\n */\n\n(function() {\n var AuthService, CancelAccountDirective, ChangeEmailDirective, ChangePasswordFromRecoveryDirective, ForgotPasswordDirective, InvitationDirective, LoginDirective, PublicRegisterMessageDirective, RegisterDirective, 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 AuthService = (function(superClass) {\n extend(AuthService, superClass);\n\n AuthService.$inject = [\"$rootScope\", \"$tgStorage\", \"$tgModel\", \"$tgResources\", \"$tgHttp\", \"$tgUrls\"];\n\n function AuthService(rootscope, storage, model, rs, http, urls) {\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 AuthService.__super__.constructor.call(this);\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 return user;\n }\n return null;\n };\n\n AuthService.prototype.setUser = function(user) {\n this.rootscope.auth = user;\n this.rootscope.$broadcast(\"i18n:change\", user.default_language);\n this.storage.set(\"userInfo\", user.getAttrs());\n return this.rootscope.user = user;\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.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 return this.storage.remove(\"token\");\n };\n\n AuthService.prototype.isAuthenticated = function() {\n if (this.getUser() !== null) {\n return true;\n }\n return false;\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.setUser(user);\n return user;\n };\n })(this));\n };\n\n AuthService.prototype.logout = function() {\n this.removeToken();\n return this.clear();\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 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.acceptInvitiationWithExistingUser = function(data) {\n return this.register(data, \"private\", true);\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 return AuthService;\n\n })(taiga.Service);\n\n module.service(\"$tgAuth\", AuthService);\n\n PublicRegisterMessageDirective = function($config, $navUrls, templates) {\n var template, templateFn;\n template = templates.get(\"auth/login-text.html\", true);\n templateFn = function() {\n var publicRegisterEnabled;\n publicRegisterEnabled = $config.get(\"publicRegisterEnabled\");\n if (!publicRegisterEnabled) {\n return \"\";\n }\n return template({\n url: $navUrls.resolve(\"register\")\n });\n };\n return {\n restrict: \"AE\",\n scope: {},\n template: templateFn\n };\n };\n\n module.directive(\"tgPublicRegisterMessage\", [\"$tgConfig\", \"$tgNavUrls\", \"$tgTemplate\", PublicRegisterMessageDirective]);\n\n LoginDirective = function($auth, $confirm, $location, $config, $routeParams, $navUrls, $events) {\n var link;\n link = function($scope, $el, $attrs) {\n var onError, onSuccess, submit;\n onSuccess = function(response) {\n var nextUrl;\n if ($routeParams['next'] && $routeParams['next'] !== $navUrls.resolve(\"login\")) {\n nextUrl = $routeParams['next'];\n } else {\n nextUrl = $navUrls.resolve(\"home\");\n }\n $events.setupConnection();\n return $location.path(nextUrl);\n };\n onError = function(response) {\n return $confirm.notify(\"light-error\", \"According to our Oompa Loompas, your username/email or password are incorrect.\");\n };\n submit = debounce(2000, (function(_this) {\n return function(event) {\n var data, form, loginFormType, promise;\n event.preventDefault();\n form = new checksley.Form($el.find(\"form.login-form\"));\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 return $el.on(\"submit\", \"form\", submit);\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgLogin\", [\"$tgAuth\", \"$tgConfirm\", \"$tgLocation\", \"$tgConfig\", \"$routeParams\", \"$tgNavUrls\", \"$tgEvents\", LoginDirective]);\n\n RegisterDirective = function($auth, $confirm, $location, $navUrls, $config, $analytics) {\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 onSuccessSubmit = function(response) {\n $analytics.trackEvent(\"auth\", \"register\", \"user registration\", 1);\n $confirm.notify(\"success\", \"Our Oompa Loompas are happy, welcome to Taiga.\");\n return $location.path($navUrls.resolve(\"home\"));\n };\n onErrorSubmit = function(response) {\n if (response.data._error_message != null) {\n $confirm.notify(\"light-error\", \"According to our Oompa Loompas there was an error. \" + response.data._error_message);\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 return $el.on(\"submit\", \"form\", submit);\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgRegister\", [\"$tgAuth\", \"$tgConfirm\", \"$tgLocation\", \"$tgNavUrls\", \"$tgConfig\", \"$tgAnalytics\", RegisterDirective]);\n\n ForgotPasswordDirective = function($auth, $confirm, $location, $navUrls) {\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 $location.path($navUrls.resolve(\"login\"));\n return $confirm.success(\"Check your inbox!
We have sent a mail to
\" + response.data.email + \"
with the instructions to set a new password\");\n };\n onErrorSubmit = function(response) {\n return $confirm.notify(\"light-error\", \"According to our Oompa Loompas, your are not registered yet.\");\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 return $el.on(\"submit\", \"form\", submit);\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgForgotPassword\", [\"$tgAuth\", \"$tgConfirm\", \"$tgLocation\", \"$tgNavUrls\", ForgotPasswordDirective]);\n\n ChangePasswordFromRecoveryDirective = function($auth, $confirm, $location, $params, $navUrls) {\n var link;\n link = function($scope, $el, $attrs) {\n var form, onErrorSubmit, onSuccessSubmit, submit;\n $scope.data = {};\n if ($params.token != null) {\n $scope.tokenInParams = true;\n $scope.data.token = $params.token;\n } else {\n $scope.tokenInParams = false;\n }\n form = $el.find(\"form\").checksley();\n onSuccessSubmit = function(response) {\n $location.path($navUrls.resolve(\"login\"));\n return $confirm.success(\"Our Oompa Loompas saved your new password.
Try to sign in with it.\");\n };\n onErrorSubmit = function(response) {\n return $confirm.notify(\"light-error\", \"One of our Oompa Loompas say '\" + response.data._error_message + \"'.\");\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 return $el.on(\"submit\", \"form\", submit);\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgChangePasswordFromRecovery\", [\"$tgAuth\", \"$tgConfirm\", \"$tgLocation\", \"$routeParams\", \"$tgNavUrls\", ChangePasswordFromRecoveryDirective]);\n\n InvitationDirective = function($auth, $confirm, $location, $params, $navUrls, $analytics) {\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 return $scope.invitation = invitation;\n });\n promise.then(null, function(response) {\n $location.path($navUrls.resolve(\"login\"));\n return $confirm.success(\"Ooops, we have a problem
Our Oompa Loompas can't find your invitation.\");\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 $analytics.trackEvent(\"auth\", \"invitationAccept\", \"invitation accept with existing user\", 1);\n $location.path($navUrls.resolve(\"project\", {\n project: $scope.invitation.project_slug\n }));\n return $confirm.notify(\"success\", \"You've successfully joined this project\", \"Welcome to \" + (_.escape($scope.invitation.project_name)));\n };\n onErrorSubmitLogin = function(response) {\n return $confirm.notify(\"light-error\", \"According to our Oompa Loompas, your are not registered yet or typed an invalid password.\");\n };\n submitLogin = debounce(2000, (function(_this) {\n return function(event) {\n event.preventDefault();\n if (!loginForm.validate()) {\n return;\n }\n promise = $auth.acceptInvitiationWithExistingUser($scope.dataLogin);\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 onSuccessSubmitRegister = function(response) {\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 return $confirm.notify(\"success\", \"You've successfully joined this project\", \"Welcome to \" + (_.escape($scope.invitation.project_name)));\n };\n onErrorSubmitRegister = function(response) {\n return $confirm.notify(\"light-error\", \"According to our Oompa Loompas, that username or email is already in use.\");\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 return $el.on(\"click\", \".button-register\", submitRegister);\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgInvitation\", [\"$tgAuth\", \"$tgConfirm\", \"$tgLocation\", \"$routeParams\", \"$tgNavUrls\", \"$tgAnalytics\", InvitationDirective]);\n\n ChangeEmailDirective = 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.email_token = $params.email_token;\n form = $el.find(\"form\").checksley();\n onSuccessSubmit = function(response) {\n return $repo.queryOne(\"users\", $auth.getUser().id).then((function(_this) {\n return function(data) {\n $auth.setUser(data);\n $location.path($navUrls.resolve(\"home\"));\n return $confirm.success(\"Our Oompa Loompas updated your email\");\n };\n })(this));\n };\n onErrorSubmit = function(response) {\n return $confirm.notify(\"error\", \"One of our Oompa Loompas says '\" + response.data._error_message + \"'.\");\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 return $el.on(\"click\", \"a.button-change-email\", function(event) {\n event.preventDefault();\n return submit();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgChangeEmail\", [\"$tgRepo\", \"$tgModel\", \"$tgAuth\", \"$tgConfirm\", \"$tgLocation\", \"$routeParams\", \"$tgNavUrls\", 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 $auth.logout();\n $location.path($navUrls.resolve(\"home\"));\n return $confirm.success(\"Our Oompa Loompas removed your account\");\n };\n onErrorSubmit = function(response) {\n return $confirm.notify(\"error\", \"One of our Oompa Loompas says '\" + response.data._error_message + \"'.\");\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 return $el.on(\"submit\", \"form\", submit);\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 * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/backlog.coffee\n */\n\n(function() {\n var module;\n\n module = angular.module(\"taigaBacklog\", []);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/base.coffee\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\", [\"taigaLocales\"]);\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 \"error\": \"/error\",\n \"not-found\": \"/not-found\",\n \"permission-denied\": \"/permission-denied\",\n \"login\": \"/login\",\n \"forgot-password\": \"/forgot-password\",\n \"change-password\": \"/change-password/:token\",\n \"change-email\": \"/change-email/:token\",\n \"cancel-account\": \"/cancel-account/:token\",\n \"register\": \"/register\",\n \"invitation\": \"/invitation/:token\",\n \"create-project\": \"/create-project\",\n \"profile\": \"/:user\",\n \"project\": \"/project/:project\",\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-search\": \"/project/:project/search\",\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-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-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-contrib\": \"/project/:project/admin/contrib/:plugin\",\n \"user-settings-user-profile\": \"/project/:project/user-settings/user-profile\",\n \"user-settings-user-change-password\": \"/project/:project/user-settings/user-change-password\",\n \"user-settings-user-avatar\": \"/project/:project/user-settings/user-avatar\",\n \"user-settings-mail-notifications\": \"/project/:project/user-settings/mail-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 * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/common.coffee\n */\n\n(function() {\n var AnimationFrame, AppTitle, CheckPermissionDirective, ClassPermissionDirective, LimitLineLengthDirective, ProjectUrl, Qqueue, SelectedText, Template, ToggleCommentDirective, module, taiga,\n slice = [].slice;\n\n taiga = this.taiga;\n\n module = angular.module(\"taigaCommon\", []);\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() {\n var link, render;\n render = function($el, project, permission) {\n if (project.my_permissions.indexOf(permission) > -1) {\n return $el.removeClass('hidden');\n }\n };\n link = function($scope, $el, $attrs) {\n var permission;\n $el.addClass('hidden');\n permission = $attrs.tgCheckPermission;\n $scope.$watch(\"project\", function(project) {\n if (project != null) {\n return render($el, project, permission);\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(\"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 AppTitle = function() {\n var set;\n set = function(text) {\n return $(\"title\").text(text);\n };\n return {\n set: set\n };\n };\n\n module.factory(\"$appTitle\", AppTitle);\n\n ProjectUrl = function($navurls) {\n var get;\n get = function(project) {\n var ctx;\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 LimitLineLengthDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n var maxColsPerLine;\n maxColsPerLine = parseInt($el.attr(\"cols\"));\n return $el.on(\"keyup\", function(event) {\n var code, lines;\n code = event.keyCode;\n lines = $el.val().split(\"\\n\");\n _.each(lines, function(line, index) {\n return lines[index] = line.substring(0, maxColsPerLine - 2);\n });\n return $el.val(lines.join(\"\\n\"));\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgLimitLineLength\", LimitLineLengthDirective);\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 return qqueue;\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 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}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/events.coffee\n */\n\n(function() {\n var EventsProvider, EventsService, bindMethods, module, startswith, taiga;\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) {\n this.win = win;\n this.log = log;\n this.config = config;\n this.auth = auth;\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 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 = _.str.ltrim(url, \"/\");\n url = scheme + \"//\" + loc.host + \"/\" + path;\n }\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.ws.close();\n return delete this.ws;\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.subscribe = function(scope, routingKey, callback) {\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: _.debounce(callback, 500, {\n \"leading\": true,\n \"trailing\": false\n })\n };\n message = {\n \"cmd\": \"subscribe\",\n \"routing_key\": routingKey\n };\n this.subscriptions[routingKey] = subscription;\n this.sendMessage(message);\n return scope.$on(\"$destroy\", (function(_this) {\n return function() {\n return _this.unsubscribe(routingKey);\n };\n })(this));\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 return this.sendMessage(message);\n };\n\n EventsService.prototype.onMessage = function(event) {\n var data, routingKey, subscription;\n this.log.debug(\"WebSocket message received: \" + event.data);\n data = JSON.parse(event.data);\n routingKey = data.routing_key;\n if (this.subscriptions[routingKey] == null) {\n return;\n }\n subscription = this.subscriptions[routingKey];\n return subscription.scope.$apply(function() {\n return subscription.callback(data.data);\n });\n };\n\n EventsService.prototype.onError = function(error) {\n this.log.error(\"WebSocket error: \" + error);\n return this.error = true;\n };\n\n EventsService.prototype.onClose = function() {\n this.log.debug(\"WebSocket closed.\");\n return this.connected = false;\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) {\n var service;\n service = new EventsService($win, $log, $conf, $auth);\n service.initialize(this.sessionId);\n return service;\n };\n\n EventsProvider.prototype.$get.$inject = [\"$window\", \"$log\", \"$tgConfig\", \"$tgAuth\"];\n\n return EventsProvider;\n\n })();\n\n module.provider(\"$tgEvents\", EventsProvider);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/feedback.coffee\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) {\n var link;\n link = function($scope, $el, $attrs) {\n var form, submit, submitButton;\n form = $el.find(\"form\").checksley();\n submit = debounce(2000, (function(_this) {\n return function(event) {\n var promise;\n event.preventDefault();\n if (!form.validate()) {\n return;\n }\n $loading.start(submitButton);\n promise = $repo.create(\"feedback\", $scope.feedback);\n promise.then(function(data) {\n $loading.finish(submitButton);\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 $loading.finish(submitButton);\n return $confirm.notify(\"error\");\n });\n };\n })(this));\n submitButton = $el.find(\".submit-button\");\n $el.on(\"submit\", \"form\", submit);\n $scope.$on(\"feedback:show\", function() {\n $scope.$apply(function() {\n return $scope.feedback = {};\n });\n $lightboxService.open($el);\n return $el.find(\"textarea\").focus();\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgLbFeedback\", [\"lightboxService\", \"$tgRepo\", \"$tgConfirm\", \"$tgLoading\", FeedbackDirective]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/integrations.coffee\n */\n\n(function() {\n var module;\n\n module = angular.module(\"taigaIntegrations\", []);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/issues.coffee\n */\n\n(function() {\n var module;\n\n module = angular.module(\"taigaIssues\", []);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/kanban.coffee\n */\n\n(function() {\n var module;\n\n module = angular.module(\"taigaKanban\", []);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/locales.coffee\n */\n\n(function() {\n var module;\n\n module = angular.module(\"taigaLocales\", []);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/admin/nav.coffee\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 + \" a\").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 * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/projects.coffee\n */\n\n(function() {\n var module;\n\n module = angular.module(\"taigaProject\", []);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/related-tasks.coffee\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) {\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 promise;\n task.subject = $el.find('input').val();\n $loading.start($el.find('.task-name'));\n promise = $repo.save(task);\n promise.then((function(_this) {\n return function() {\n $loading.finish($el.find('.task-name'));\n $confirm.notify(\"success\");\n return $rootscope.$broadcast(\"related-tasks:update\");\n };\n })(this));\n promise.then(null, (function(_this) {\n return function() {\n $loading.finish($el.find('.task-name'));\n $el.find('input').val(task.subject);\n return $confirm.notify(\"error\");\n };\n })(this));\n return promise;\n });\n renderEdit = function(task) {\n $el.html($compile(templateEdit({\n task: task\n }))($scope));\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\", \".icon-floppy\", 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 $el.off();\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 }))($scope));\n $el.on(\"click\", \".icon-edit\", 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 task = $model.$modelValue;\n title = \"Delete Task\";\n message = task.subject;\n return $confirm.askOnDelete(title, message).then(function(finish) {\n var promise;\n promise = $repo.remove(task);\n promise.then(function() {\n finish();\n $confirm.notify(\"success\");\n return $scope.$emit(\"related-tasks:delete\");\n });\n return promise.then(null, function() {\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\", RelatedTaskRowDirective]);\n\n RelatedTaskCreateFormDirective = function($repo, $compile, $confirm, $tgmodel, $loading, $analytics, $template) {\n var link, newTask, template;\n template = $template.get(\"task/related-task-create-form.html\", true);\n newTask = {\n subject: \"\",\n assigned_to: null\n };\n link = function($scope, $el, $attrs) {\n var createTask, render;\n createTask = debounce(2000, function(task) {\n var 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 $loading.start($el.find('.task-name'));\n promise = $repo.create(\"tasks\", task);\n promise.then(function() {\n $analytics.trackEvent(\"task\", \"create\", \"create task on userstory\", 1);\n $loading.finish($el.find('.task-name'));\n $scope.$emit(\"related-tasks:add\");\n return $confirm.notify(\"success\");\n });\n promise.then(null, function() {\n $el.find('input').val(task.subject);\n $loading.finish($el.find('.task-name'));\n return $confirm.notify(\"error\");\n });\n return promise;\n });\n render = function() {\n $el.off();\n $el.html($compile(template())($scope));\n $el.find('input').focus().select();\n $el.addClass('active');\n $el.on(\"keyup\", \"input\", function(event) {\n if (event.keyCode === 13) {\n return createTask(newTask).then(function() {\n return render();\n });\n } else if (event.keyCode === 27) {\n return $el.html(\"\");\n }\n });\n $el.on(\"click\", \".icon-delete\", function(event) {\n return $el.html(\"\");\n });\n return $el.on(\"click\", \".icon-floppy\", function(event) {\n return createTask(newTask).then(function() {\n return $el.html(\"\");\n });\n });\n };\n taiga.bindOnce($scope, \"us\", function(val) {\n newTask[\"status\"] = $scope.project.default_task_status;\n newTask[\"project\"] = $scope.project.id;\n newTask[\"user_story\"] = $scope.us.id;\n $scope.newTask = $tgmodel.make_model(\"tasks\", newTask);\n return $el.html(\"\");\n });\n $scope.$on(\"related-tasks:show-form\", function() {\n return render();\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgRelatedTaskCreateForm\", [\"$tgRepo\", \"$compile\", \"$tgConfirm\", \"$tgModel\", \"$tgLoading\", \"$tgAnalytics\", \"$tgTemplate\", RelatedTaskCreateFormDirective]);\n\n RelatedTaskCreateButtonDirective = function($repo, $compile, $confirm, $tgmodel) {\n var link, template;\n template = _.template(\"\");\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(template());\n } else {\n $el.html(\"\");\n }\n return $el.on(\"click\", \".icon\", 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\", RelatedTaskCreateButtonDirective]);\n\n RelatedTasksDirective = function($repo, $rs, $rootscope) {\n var link;\n link = function($scope, $el, $attrs) {\n var loadTasks;\n loadTasks = function() {\n return $rs.tasks.list($scope.projectId, null, $scope.usId).then((function(_this) {\n return function(tasks) {\n $scope.tasks = tasks;\n return tasks;\n };\n })(this));\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: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, popoverService) {\n var link, template;\n template = _.template(\"\\\" alt=\\\"<%- name %>\\\"/>\\n
<%- name %>
\");\n link = function($scope, $el, $attrs) {\n var $ctrl, autoSave, notAutoSave, task, updateRelatedTask;\n updateRelatedTask = function(task) {\n var ctx, member;\n ctx = {\n name: \"Unassigned\",\n imgurl: \"/images/unnamed.png\"\n };\n member = $scope.usersById[task.assigned_to];\n if (member) {\n ctx.imgurl = member.photo;\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 updateRelatedTask(task);\n $el.on(\"click\", \".task-assignedto\", function(event) {\n return $rootscope.$broadcast(\"assigned-to:add\", task);\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 $scope.$on(\"assigned-to:added\", debounce(2000, (function(_this) {\n return function(ctx, userId, updatedRelatedTask) {\n if (updatedRelatedTask.id === task.id) {\n updatedRelatedTask.assigned_to = userId;\n if (autoSave) {\n $repo.save(updatedRelatedTask).then(function() {\n return $scope.$emit(\"related-tasks:assigned-to-changed\");\n });\n }\n return updateRelatedTask(updatedRelatedTask);\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(\"tgRelatedTaskAssignedToInlineEdition\", [\"$tgRepo\", \"$rootScope\", RelatedTaskAssignedToInlineEditionDirective]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/resources.coffee\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 \"permissions\": \"/permissions\",\n \"roles\": \"/roles\",\n \"projects\": \"/projects\",\n \"memberships\": \"/memberships\",\n \"notify-policies\": \"/notify-policies\",\n \"bulk-create-memberships\": \"/memberships/bulk_create\",\n \"milestones\": \"/milestones\",\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-sprint-order\": \"/userstories/bulk_update_sprint_order\",\n \"bulk-update-us-kanban-order\": \"/userstories/bulk_update_kanban_order\",\n \"userstories-restore\": \"/userstories/%s/restore\",\n \"tasks\": \"/tasks\",\n \"bulk-create-tasks\": \"/tasks/bulk_create\",\n \"bulk-update-task-taskboard-order\": \"/tasks/bulk_update_taskboard_order\",\n \"tasks-restore\": \"/tasks/%s/restore\",\n \"issues\": \"/issues\",\n \"bulk-create-issues\": \"/issues/bulk_create\",\n \"issues-restore\": \"/issues/%s/restore\",\n \"wiki\": \"/wiki\",\n \"wiki-restore\": \"/wiki/%s/restore\",\n \"wiki-links\": \"/wiki-links\",\n \"choices/userstory-statuses\": \"/userstory-statuses\",\n \"choices/userstory-statuses/bulk-update-order\": \"/userstory-statuses/bulk_update_order\",\n \"choices/points\": \"/points\",\n \"choices/points/bulk-update-order\": \"/points/bulk_update_order\",\n \"choices/task-statuses\": \"/task-statuses\",\n \"choices/task-statuses/bulk-update-order\": \"/task-statuses/bulk_update_order\",\n \"choices/issue-statuses\": \"/issue-statuses\",\n \"choices/issue-statuses/bulk-update-order\": \"/issue-statuses/bulk_update_order\",\n \"choices/issue-types\": \"/issue-types\",\n \"choices/issue-types/bulk-update-order\": \"/issue-types/bulk_update_order\",\n \"choices/priorities\": \"/priorities\",\n \"choices/priorities/bulk-update-order\": \"/priorities/bulk_update_order\",\n \"choices/severities\": \"/severities\",\n \"choices/severities/bulk-update-order\": \"/severities/bulk_update_order\",\n \"search\": \"/search\",\n \"sites\": \"/sites\",\n \"project-templates\": \"/project-templates\",\n \"site-members\": \"/site-members\",\n \"site-projects\": \"/site-projects\",\n \"users\": \"/users\",\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 \"user-storage\": \"/user-storage\",\n \"resolver\": \"/resolver\",\n \"userstory-statuses\": \"/userstory-statuses\",\n \"points\": \"/points\",\n \"task-statuses\": \"/task-statuses\",\n \"issue-statuses\": \"/issue-statuses\",\n \"issue-types\": \"/issue-types\",\n \"priorities\": \"/priorities\",\n \"severities\": \"/severities\",\n \"project-modules\": \"/projects/%s/modules\",\n \"webhooks\": \"/webhooks\",\n \"webhooks-test\": \"/webhooks/%s/test\",\n \"webhooklogs\": \"/webhooklogs\",\n \"webhooklogs-resend\": \"/webhooklogs/%s/resend\",\n \"history/us\": \"/history/userstory\",\n \"history/issue\": \"/history/issue\",\n \"history/task\": \"/history/task\",\n \"history/wiki\": \"/history/wiki\",\n \"attachments/us\": \"/userstories/attachments\",\n \"attachments/issue\": \"/issues/attachments\",\n \"attachments/task\": \"/tasks/attachments\",\n \"attachments/wiki_page\": \"/wiki/attachments\",\n \"custom-attributes/userstory\": \"/userstory-custom-attributes\",\n \"custom-attributes/issue\": \"/issue-custom-attributes\",\n \"custom-attributes/task\": \"/task-custom-attributes\",\n \"custom-attributes-values/userstory\": \"/userstories/custom-attributes-values\",\n \"custom-attributes-values/issue\": \"/issues/custom-attributes-values\",\n \"custom-attributes-values/task\": \"/tasks/custom-attributes-values\",\n \"feedback\": \"/feedback\",\n \"exporter\": \"/exporter\",\n \"importer\": \"/importer/load_dump\",\n \"userstories-csv\": \"/userstories/csv?uuid=%s\",\n \"tasks-csv\": \"/tasks/csv?uuid=%s\",\n \"issues-csv\": \"/issues/csv?uuid=%s\"\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\", \"$tgUserSettingsResourcesProvider\", \"$tgSprintsResourcesProvider\", \"$tgUserstoriesResourcesProvider\", \"$tgTasksResourcesProvider\", \"$tgIssuesResourcesProvider\", \"$tgWikiResourcesProvider\", \"$tgSearchResourcesProvider\", \"$tgAttachmentsResourcesProvider\", \"$tgMdRenderResourcesProvider\", \"$tgHistoryResourcesProvider\", \"$tgKanbanResourcesProvider\", \"$tgModulesResourcesProvider\", \"$tgWebhooksResourcesProvider\", \"$tgWebhookLogsResourcesProvider\", initResources]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/search.coffee\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\", \"$appTitle\", \"$tgNavUrls\", \"tgLoader\"];\n\n function SearchController(scope1, repo, rs, params, q, location, appTitle, navUrls, tgLoader) {\n var loadSearchData, promise;\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.appTitle = appTitle;\n this.navUrls = navUrls;\n this.tgLoader = tgLoader;\n this.scope.sectionName = \"Search\";\n promise = this.loadInitialData();\n promise.then((function(_this) {\n return function() {\n return _this.appTitle.set(\"Search\");\n };\n })(this));\n promise.then(null, this.onInitialDataError.bind(this));\n this.scope.searchTerm = \"\";\n loadSearchData = debounceLeading(100, (function(_this) {\n return function(t) {\n return _this.loadSearchData(t);\n };\n })(this));\n this.scope.$watch(\"searchTerm\", (function(_this) {\n return function(term) {\n if (!term) {\n return _this.tgLoader.pageLoaded();\n } else {\n return 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 return this.rs.projects.getBySlug(this.params.pslug).then((function(_this) {\n return function(project) {\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.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.membersById = groupBy(project.memberships, function(x) {\n return x.user;\n });\n _this.scope.usStatusById = groupBy(project.us_statuses, function(x) {\n return x.id;\n });\n return project;\n };\n })(this));\n };\n\n SearchController.prototype.loadSearchData = function(term) {\n var promise;\n promise = this.rs.search[\"do\"](this.scope.projectId, term).then((function(_this) {\n return function(data) {\n _this.scope.searchResults = data;\n return data;\n };\n })(this));\n promise[\"finally\"]((function(_this) {\n return function() {\n return _this.tgLoader.pageLoaded();\n };\n })(this));\n return promise;\n };\n\n SearchController.prototype.loadInitialData = function() {\n return this.loadProject().then((function(_this) {\n return function(project) {\n _this.scope.projectId = project.id;\n return _this.fillUsersAndRoles(project.users, project.roles);\n };\n })(this));\n };\n\n return SearchController;\n\n })(mixOf(taiga.Controller, taiga.PageMixin));\n\n module.controller(\"SearchController\", SearchController);\n\n SearchBoxDirective = function($lightboxService, $navurls, $location, $route) {\n var link;\n link = function($scope, $el, $attrs) {\n var 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.slug\n });\n $lightboxService.close($el);\n return $scope.$apply(function() {\n $location.path(url);\n $location.search(\"text\", text).path(url);\n return $route.reload();\n });\n };\n })(this));\n $scope.$on(\"search-box:show\", function(ctx, newProject) {\n project = newProject;\n $lightboxService.open($el);\n return $el.find(\"#search-text\").val(\"\");\n });\n return $el.on(\"submit\", \"form\", submit);\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgSearchBox\", [\"lightboxService\", \"$tgNavUrls\", \"$tgLocation\", \"$route\", SearchBoxDirective]);\n\n SearchDirective = function($log, $compile, $templatecache, $routeparams, $location) {\n var link, linkTable;\n linkTable = function($scope, $el, $attrs, $ctrl) {\n var getActiveSection, lastSeatchResults, markSectionTabActive, renderFilterTabs, renderTableContent, tabsDom, templates;\n tabsDom = $el.find(\"section.search-filter\");\n lastSeatchResults = null;\n getActiveSection = function(data) {\n var maxVal, name, selectedSectionData, selectedSectionName, value;\n maxVal = 0;\n selectedSectionName = null;\n selectedSectionData = null;\n for (name in data) {\n value = data[name];\n if (name === \"count\") {\n continue;\n }\n if (value.length > maxVal) {\n maxVal = value.length;\n selectedSectionName = name;\n selectedSectionData = value;\n }\n }\n if (maxVal === 0) {\n return {\n name: \"userstories\",\n value: []\n };\n }\n return {\n name: selectedSectionName,\n value: selectedSectionData\n };\n };\n renderFilterTabs = function(data) {\n var name, results, value;\n results = [];\n for (name in data) {\n value = data[name];\n if (name === \"count\") {\n continue;\n }\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 return tabsDom.find(\"li.\" + section.name + \" a\").addClass(\"active\");\n };\n templates = {\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 lastSeatchResults = data;\n activeSection = getActiveSection(data);\n renderFilterTabs(data);\n renderTableContent(activeSection);\n return markSectionTabActive(activeSection);\n });\n $scope.$watch(\"searchTerm\", function(searchTerm) {\n if (searchTerm) {\n return $location.search(\"text\", searchTerm);\n }\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 = lastSeatchResults[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\", SearchDirective]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/taskboard.coffee\n */\n\n(function() {\n var module;\n\n module = angular.module(\"taigaTaskboard\", []);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/tasks.coffee\n */\n\n(function() {\n var module;\n\n module = angular.module(\"taigaTasks\", []);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/team.coffee\n */\n\n(function() {\n var module;\n\n module = angular.module(\"taigaTeam\", []);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/user-settings.coffee\n */\n\n(function() {\n var module;\n\n module = angular.module(\"taigaUserSettings\", []);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/userstories.coffee\n */\n\n(function() {\n var module;\n\n module = angular.module(\"taigaUserStories\", []);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/wiki.coffee\n */\n\n(function() {\n var module;\n\n module = angular.module(\"taigaWiki\", []);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/backlog/main.coffee\n */\n\n(function() {\n var BacklogFiltersDirective, bindOnce, debounceLeading, 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 debounceLeading = this.taiga.debounceLeading;\n\n module = angular.module(\"taigaBacklog\");\n\n BacklogFiltersDirective = function($log, $location, $templates) {\n var link, template, templateSelected;\n template = $templates.get(\"backlog/filters.html\", true);\n templateSelected = $templates.get(\"backlog/filter-selected.html\", true);\n link = function($scope, $el, $attrs) {\n var $ctrl, initializeSelectedFilters, renderFilters, renderSelectedFilters, selectQFilter, selectedFilters, showCategories, showFilters, toggleFilterSelection;\n $ctrl = $el.closest(\".wrapper\").controller();\n selectedFilters = [];\n showFilters = function(title, type) {\n $el.find(\".filters-cats\").hide();\n $el.find(\".filter-list\").removeClass(\"hidden\");\n $el.find(\"h2.breadcrumb\").removeClass(\"hidden\");\n $el.find(\"h2 a.subfilter span.title\").html(title);\n return $el.find(\"h2 a.subfilter span.title\").prop(\"data-type\", type);\n };\n showCategories = function() {\n $el.find(\".filters-cats\").show();\n $el.find(\".filter-list\").addClass(\"hidden\");\n return $el.find(\"h2.breadcrumb\").addClass(\"hidden\");\n };\n initializeSelectedFilters = function(filters) {\n var i, len, name, val, values;\n showCategories();\n selectedFilters = [];\n for (name in filters) {\n values = filters[name];\n for (i = 0, len = values.length; i < len; i++) {\n val = values[i];\n if (val.selected) {\n selectedFilters.push(val);\n }\n }\n }\n return renderSelectedFilters();\n };\n renderSelectedFilters = function() {\n var html;\n _.map(selectedFilters, (function(_this) {\n return function(f) {\n if (f.color) {\n return f.style = \"border-left: 3px solid \" + f.color;\n }\n };\n })(this));\n html = templateSelected({\n filters: selectedFilters\n });\n return $el.find(\".filters-applied\").html(html);\n };\n renderFilters = function(filters) {\n var html;\n _.map(filters, (function(_this) {\n return function(f) {\n if (f.color) {\n return f.style = \"border-left: 3px solid \" + f.color;\n }\n };\n })(this));\n html = template({\n filters: filters\n });\n return $el.find(\".filter-list\").html(html);\n };\n toggleFilterSelection = function(type, id) {\n var currentFiltersType, filter, filters;\n filters = $scope.filters[type];\n filter = _.find(filters, {\n id: taiga.toString(id)\n });\n filter.selected = !filter.selected;\n if (filter.selected) {\n selectedFilters.push(filter);\n $scope.$apply(function() {\n return $ctrl.selectFilter(type, id);\n });\n } else {\n selectedFilters = _.reject(selectedFilters, filter);\n $scope.$apply(function() {\n return $ctrl.unselectFilter(type, id);\n });\n }\n renderSelectedFilters(selectedFilters);\n currentFiltersType = $el.find(\"h2 a.subfilter span.title\").prop('data-type');\n if (type === currentFiltersType) {\n renderFilters(_.reject(filters, \"selected\"));\n }\n return $ctrl.loadUserstories();\n };\n selectQFilter = debounceLeading(100, function(value) {\n if (value === void 0) {\n return;\n }\n if (value.length === 0) {\n $ctrl.replaceFilter(\"q\", null);\n } else {\n $ctrl.replaceFilter(\"q\", value);\n }\n return $ctrl.loadUserstories();\n });\n $scope.$watch(\"filtersQ\", selectQFilter);\n $scope.$on(\"filters:loaded\", function(ctx, filters) {\n return initializeSelectedFilters(filters);\n });\n $el.on(\"click\", \".filters-cats > ul > li > a\", function(event) {\n var tags, target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n tags = $scope.filters[target.data(\"type\")];\n renderFilters(_.reject(tags, \"selected\"));\n return showFilters(target.attr(\"title\"), target.data(\"type\"));\n });\n $el.on(\"click\", \".filters-inner > .filters-step-cat > .breadcrumb > .back\", function(event) {\n event.preventDefault();\n return showCategories();\n });\n $el.on(\"click\", \".filters-applied a\", function(event) {\n var id, target, type;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n id = target.data(\"id\");\n type = target.data(\"type\");\n return toggleFilterSelection(type, id);\n });\n return $el.on(\"click\", \".filter-list .single-filter\", function(event) {\n var id, target, type;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n if (target.hasClass(\"active\")) {\n target.removeClass(\"active\");\n } else {\n target.addClass(\"active\");\n }\n id = target.data(\"id\");\n type = target.data(\"type\");\n return toggleFilterSelection(type, id);\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgBacklogFilters\", [\"$log\", \"$tgLocation\", \"$tgTemplate\", BacklogFiltersDirective]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/admin/lightboxes.coffee\n */\n\n(function() {\n var CreateMembersDirective, MAX_MEMBERSHIP_FIELDSETS, debounce, module, taiga;\n\n taiga = this.taiga;\n\n debounce = this.taiga.debounce;\n\n module = angular.module(\"taigaKanban\");\n\n MAX_MEMBERSHIP_FIELDSETS = 4;\n\n CreateMembersDirective = function($rs, $rootScope, $confirm, $loading, lightboxService) {\n var extraTextTemplate, link, template;\n extraTextTemplate = \"
\\n \\n
\";\n template = _.template(\"
\\n
\\n data-required=\\\"true\\\" <% } %> data-type=\\\"email\\\" />\\n
\\n
\\n \\n \\n
\\n
\");\n link = function($scope, $el, $attrs) {\n var createFieldSet, resetForm, submit, submitButton;\n createFieldSet = function(required) {\n var ctx;\n if (required == null) {\n required = true;\n }\n ctx = {\n roleList: $scope.roles,\n required: required\n };\n return template(ctx);\n };\n resetForm = function() {\n var fieldSet, invitations;\n $el.find(\"form textarea\").remove(\"\");\n $el.find(\"form .add-member-wrapper\").remove();\n invitations = $el.find(\".add-member-forms\");\n invitations.html(extraTextTemplate);\n fieldSet = createFieldSet();\n return invitations.prepend(fieldSet);\n };\n $scope.$on(\"membersform:new\", function() {\n resetForm();\n return lightboxService.open($el);\n });\n $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n $el.on(\"click\", \".delete-fieldset\", function(event) {\n var fieldSet, lastActionButton, target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n fieldSet = target.closest('.add-member-wrapper');\n fieldSet.remove();\n lastActionButton = $el.find(\"fieldset:last > a\");\n if (lastActionButton.hasClass(\"icon-delete delete-fieldset\")) {\n return lastActionButton.removeClass(\"icon-delete delete-fieldset\").addClass(\"icon-plus add-fieldset\");\n }\n });\n $el.on(\"click\", \".add-fieldset\", function(event) {\n var fieldSet, newFieldSet, target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n fieldSet = target.closest('.add-member-wrapper');\n target.removeClass(\"icon-plus add-fieldset\").addClass(\"icon-delete delete-fieldset\");\n newFieldSet = createFieldSet(false);\n fieldSet.after(newFieldSet);\n if ($el.find(\".add-member-wrapper\").length === MAX_MEMBERSHIP_FIELDSETS) {\n return $el.find(\".add-member-wrapper fieldset:last > a\").removeClass(\"icon-plus add-fieldset\").addClass(\"icon-delete delete-fieldset\");\n }\n });\n submit = debounce(2000, (function(_this) {\n return function(event) {\n var form, invitation_extra_text, invitations, memberWrappers, onError, onSuccess;\n event.preventDefault();\n $loading.start(submitButton);\n onSuccess = function(data) {\n $loading.finish(submitButton);\n lightboxService.close($el);\n $confirm.notify(\"success\");\n return $rootScope.$broadcast(\"membersform:new:success\");\n };\n onError = function(data) {\n $loading.finish(submitButton);\n lightboxService.close($el);\n $confirm.notify(\"error\");\n return $rootScope.$broadcast(\"membersform:new:error\");\n };\n form = $el.find(\"form\").checksley();\n form.destroy();\n form.initialize();\n if (!form.validate()) {\n return;\n }\n memberWrappers = $el.find(\"form .add-member-wrapper\");\n memberWrappers = _.filter(memberWrappers, function(mw) {\n return angular.element(mw).find(\"input\").hasClass('checksley-ok');\n });\n invitations = _.map(memberWrappers, function(mw) {\n var email, memberWrapper, role;\n memberWrapper = angular.element(mw);\n email = memberWrapper.find(\"input\");\n role = memberWrapper.find(\"select\");\n return {\n email: email.val(),\n role_id: role.val()\n };\n });\n if (invitations.length) {\n invitation_extra_text = $el.find(\"form textarea\").val();\n return $rs.memberships.bulkCreateMemberships($scope.project.id, invitations, invitation_extra_text).then(onSuccess, onError);\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(\"tgLbCreateMembers\", [\"$tgResources\", \"$rootScope\", \"$tgConfirm\", \"$tgLoading\", \"lightboxService\", CreateMembersDirective]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: pluggins/main.coffee\n */\n\n(function() {\n var module;\n\n module = angular.module(\"taigaPlugins\", [\"ngRoute\"]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/backlog/sortable.coffee\n */\n\n(function() {\n var BacklogEmptySortableDirective, BacklogSortableDirective, SprintSortableDirective, bindOnce, deleteElement, 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 deleteElement = function(el) {\n el.scope().$destroy();\n el.off();\n return el.remove();\n };\n\n BacklogSortableDirective = function($repo, $rs, $rootscope, $tgConfirm) {\n var link;\n link = function($scope, $el, $attrs) {\n var getUsIndex;\n getUsIndex = (function(_this) {\n return function(us) {\n return $(us).index(\".backlog-table-body .row\");\n };\n })(this);\n bindOnce($scope, \"project\", function(project) {\n var filterError;\n if (!(project.my_permissions.indexOf(\"modify_us\") > -1)) {\n return;\n }\n filterError = function() {\n var text;\n text = \"You can't drop on backlog when filters are open\";\n return $tgConfirm.notify(\"error\", text);\n };\n $el.sortable({\n items: \".us-item-row\",\n cancel: \".popover\",\n connectWith: \".sprint\",\n containment: \".wrapper\",\n dropOnEmpty: true,\n placeholder: \"row us-item-row us-item-drag sortable-placeholder\",\n scroll: true,\n tolerance: \"pointer\",\n revert: false,\n cursorAt: {\n right: 15\n },\n stop: function() {\n if ($el.hasClass(\"active-filters\")) {\n $el.sortable(\"cancel\");\n return filterError();\n }\n }\n });\n $el.on(\"multiplesortreceive\", function(event, ui) {\n var itemIndex, itemUs;\n if ($el.hasClass(\"active-filters\")) {\n ui.source.sortable(\"cancel\");\n filterError();\n return;\n }\n itemUs = ui.item.scope().us;\n itemIndex = getUsIndex(ui.item);\n deleteElement(ui.item);\n $scope.$emit(\"sprint:us:move\", [itemUs], itemIndex, null);\n return ui.item.find('a').removeClass('noclick');\n });\n $el.on(\"multiplesortstop\", function(event, ui) {\n var index, items, us;\n if ($(ui.items[0]).parent().length === 0) {\n return;\n }\n if ($el.hasClass(\"active-filters\")) {\n return;\n }\n items = _.sortBy(ui.items, function(item) {\n return $(item).index();\n });\n index = _.min(_.map(items, function(item) {\n return getUsIndex(item);\n }));\n us = _.map(items, function(item) {\n var itemUs;\n item = $(item);\n itemUs = item.scope().us;\n setTimeout(((function(_this) {\n return function() {\n return item.find('a').removeClass('noclick');\n };\n })(this)), 300);\n return itemUs;\n });\n return $scope.$emit(\"sprint:us:move\", us, index, null);\n });\n return $el.on(\"sortstart\", function(event, ui) {\n return ui.item.find('a').addClass('noclick');\n });\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n BacklogEmptySortableDirective = function($repo, $rs, $rootscope) {\n var link;\n link = function($scope, $el, $attrs) {\n bindOnce($scope, \"project\", function(project) {\n if (project.my_permissions.indexOf(\"modify_us\") > -1) {\n $el.sortable({\n dropOnEmpty: true\n });\n return $el.on(\"sortreceive\", function(event, ui) {\n var itemIndex, itemUs;\n itemUs = ui.item.scope().us;\n itemIndex = ui.item.index();\n deleteElement(ui.item);\n $scope.$emit(\"sprint:us:move\", [itemUs], itemIndex, null);\n return ui.item.find('a').removeClass('noclick');\n });\n }\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n SprintSortableDirective = function($repo, $rs, $rootscope) {\n var link;\n link = function($scope, $el, $attrs) {\n return bindOnce($scope, \"project\", function(project) {\n if (project.my_permissions.indexOf(\"modify_us\") > -1) {\n $el.sortable({\n scroll: true,\n dropOnEmpty: true,\n items: \".sprint-table .milestone-us-item-row\",\n connectWith: \".sprint,.backlog-table-body,.empty-backlog\"\n });\n $el.on(\"multiplesortreceive\", function(event, ui) {\n var index, items, us;\n items = _.sortBy(ui.items, function(item) {\n return $(item).index();\n });\n index = _.min(_.map(items, function(item) {\n return $(item).index();\n }));\n us = _.map(items, function(item) {\n var itemUs;\n item = $(item);\n itemUs = item.scope().us;\n deleteElement(item);\n return itemUs;\n });\n return $scope.$emit(\"sprint:us:move\", us, index, $scope.sprint.id);\n });\n $el.on(\"multiplesortstop\", function(event, ui) {\n var itemIndex, itemUs;\n if (ui.item.parent().length === 0) {\n return;\n }\n itemUs = ui.item.scope().us;\n itemIndex = ui.item.index();\n setTimeout(((function(_this) {\n return function() {\n return ui.item.find('a').removeClass('noclick');\n };\n })(this)), 300);\n return $scope.$emit(\"sprint:us:move\", [itemUs], itemIndex, $scope.sprint.id);\n });\n return $el.on(\"sortstart\", function(event, ui) {\n return ui.item.find('a').addClass('noclick');\n });\n }\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgBacklogSortable\", [\"$tgRepo\", \"$tgResources\", \"$rootScope\", \"$tgConfirm\", BacklogSortableDirective]);\n\n module.directive(\"tgBacklogEmptySortable\", [\"$tgRepo\", \"$tgResources\", \"$rootScope\", BacklogEmptySortableDirective]);\n\n module.directive(\"tgSprintSortable\", [\"$tgRepo\", \"$tgResources\", \"$rootScope\", SprintSortableDirective]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/backlog/sprints.coffee\n */\n\n(function() {\n var BacklogSprintDirective, BacklogSprintHeaderDirective, ToggleExcludeClosedSprintsVisualization, module, taiga;\n\n taiga = this.taiga;\n\n module = angular.module(\"taigaBacklog\");\n\n BacklogSprintDirective = function($repo, $rootscope) {\n var link, refreshSprintTableHeight, slideOptions, sprintTableMinHeight, toggleSprint;\n sprintTableMinHeight = 50;\n slideOptions = {\n duration: 500,\n easing: 'linear'\n };\n refreshSprintTableHeight = (function(_this) {\n return function(sprintTable) {\n if (!sprintTable.find(\".row\").length) {\n return sprintTable.css(\"height\", sprintTableMinHeight);\n } else {\n return sprintTable.css(\"height\", \"auto\");\n }\n };\n })(this);\n toggleSprint = (function(_this) {\n return function($el) {\n var sprintArrow, sprintTable;\n sprintTable = $el.find(\".sprint-table\");\n sprintArrow = $el.find(\".icon-arrow-up\");\n sprintArrow.toggleClass('active');\n sprintTable.toggleClass('open');\n return refreshSprintTableHeight(sprintTable);\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 > .icon-arrow-up\", function(event) {\n event.preventDefault();\n toggleSprint($el);\n return $el.find(\".sprint-table\").slideToggle(slideOptions);\n });\n $el.on(\"click\", \".sprint-name > .icon-edit\", 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) {\n var link, template;\n template = $template.get(\"backlog/sprint-header.html\", true);\n link = function($scope, $el, $attrs, $model) {\n var isEditable, isVisible, render;\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 ctx, estimatedDateRange, finish, start, taskboardUrl;\n taskboardUrl = $navUrls.resolve(\"project-taskboard\", {\n project: $scope.project.slug,\n sprint: sprint.slug\n });\n start = moment(sprint.estimated_start).format(\"DD MMM YYYY\");\n finish = moment(sprint.estimated_finish).format(\"DD MMM YYYY\");\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 return $el.html(template(ctx));\n };\n $scope.$watch($attrs.ngModel, function(sprint) {\n return render(sprint);\n });\n $scope.$on(\"sprintform:edit:success\", function() {\n return render($model.$modelValue);\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(\"tgBacklogSprintHeader\", [\"$tgNavUrls\", \"$tgTemplate\", BacklogSprintHeaderDirective]);\n\n ToggleExcludeClosedSprintsVisualization = function($rootscope, $loading) {\n var excludeClosedSprints, link;\n excludeClosedSprints = true;\n link = function($scope, $el, $attrs) {\n var loadingElm;\n loadingElm = $(\"
\");\n $el.after(loadingElm);\n $el.on(\"click\", function(event) {\n event.preventDefault();\n excludeClosedSprints = !excludeClosedSprints;\n $loading.start(loadingElm);\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(_this) {\n return function(ctx, sprints) {\n var text;\n $loading.finish(loadingElm);\n if (sprints.length > 0) {\n text = \"Hide closed sprints\";\n } else {\n text = \"Show closed sprints\";\n }\n return $el.find(\".text\").text(text);\n };\n })(this));\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgBacklogToggleClosedSprintsVisualization\", [\"$rootScope\", \"$tgLoading\", ToggleExcludeClosedSprintsVisualization]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/admin/memberships.coffee\n */\n\n(function() {\n var MembershipsController, MembershipsDirective, MembershipsRowActionsDirective, MembershipsRowAdminCheckboxDirective, MembershipsRowAvatarDirective, MembershipsRowRoleSelectorDirective, 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\", \"$appTitle\"];\n\n function MembershipsController(scope, rootscope, repo, confirm, rs, params, q, location, navUrls, analytics, appTitle) {\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.appTitle = appTitle;\n bindMethods(this);\n this.scope.sectionName = \"Manage Members\";\n this.scope.project = {};\n this.scope.filters = {};\n promise = this.loadInitialData();\n promise.then((function(_this) {\n return function() {\n return _this.appTitle.set(\"Membership - \" + _this.scope.project.name);\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.loadMembers();\n return _this.analytics.trackEvent(\"membership\", \"create\", \"create memberships on admin\", 1);\n };\n })(this));\n }\n\n MembershipsController.prototype.loadProject = function() {\n return this.rs.projects.get(this.scope.projectId).then((function(_this) {\n return function(project) {\n if (!project.i_am_owner) {\n _this.location.path(_this.navUrls.resolve(\"permission-denied\"));\n }\n _this.scope.project = project;\n _this.scope.$emit('project:loaded', project);\n return project;\n };\n })(this));\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 _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 var promise;\n promise = this.repo.resolve({\n pslug: this.params.pslug\n }).then((function(_this) {\n return function(data) {\n _this.scope.projectId = data.project;\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 return _this.loadUsersAndRoles();\n };\n })(this)).then((function(_this) {\n return function() {\n return _this.loadMembers();\n };\n })(this));\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.rootscope.$broadcast(\"membersform:new\");\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) {\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, 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 return $pagEl.html(template(options));\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\", MembershipsDirective]);\n\n MembershipsRowAvatarDirective = function($log, $template) {\n var link, template;\n template = $template.get(\"admin/memberships-row-avatar.html\", true);\n link = function($scope, $el, $attrs) {\n var member, render;\n render = function(member) {\n var ctx, html;\n ctx = {\n full_name: member.full_name ? member.full_name : \"\",\n email: member.user_email ? member.user_email : member.email,\n imgurl: member.photo ? member.photo : \"/images/unnamed.png\"\n };\n html = template(ctx);\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\", MembershipsRowAvatarDirective]);\n\n MembershipsRowAdminCheckboxDirective = function($log, $repo, $confirm, $template) {\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 render = function(member) {\n var ctx, html;\n ctx = {\n inputId: \"is-admin-\" + member.id\n };\n html = template(ctx);\n return $el.html(html);\n };\n if ($attrs.tgMembershipsRowAdminCheckbox == null) {\n return $log.error(\"MembershipsRowAdminCheckboxDirective: the directive need a member\");\n }\n member = $scope.$eval($attrs.tgMembershipsRowAdminCheckbox);\n html = render(member);\n if (member.is_owner) {\n $el.find(\":checkbox\").prop(\"checked\", true);\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_owner);\n return $confirm.notify(\"error\", data.is_owner[0]);\n };\n target = angular.element(event.currentTarget);\n member.is_owner = target.prop(\"checked\");\n return $repo.save(member).then(onSuccess, onError);\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(\"tgMembershipsRowAdminCheckbox\", [\"$log\", \"$tgRepo\", \"$tgConfirm\", \"$tgTemplate\", 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.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) {\n var activedTemplate, link, pendingTemplate;\n activedTemplate = _.template(\"
\\n Active\\n
\\n\\n \\n\");\n pendingTemplate = _.template(\"\\n Pending\\n \\n\\n\\n \\n\");\n link = function($scope, $el, $attrs) {\n var $ctrl, member, render;\n render = function(member) {\n var html;\n if (member.user) {\n html = activedTemplate();\n } else {\n html = pendingTemplate();\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\", \".pending\", function(event) {\n var onError, onSuccess;\n event.preventDefault();\n onSuccess = function() {\n return $confirm.notify(\"success\", \"We've sent the invitationi again to '\" + $scope.member.email + \"'.\");\n };\n onError = function() {\n return $confirm.notify(\"error\", \"We haven't sent the invitation.\");\n };\n return $rs.memberships.resendInvitation($scope.member.id).then(onSuccess, onError);\n });\n $el.on(\"click\", \".delete\", function(event) {\n var message, title;\n event.preventDefault();\n title = \"Delete member\";\n message = member.user ? member.full_name : \"the invitation to \" + member.email;\n return $confirm.askOnDelete(title, message).then(function(finish) {\n var onError, onSuccess;\n onSuccess = function() {\n finish();\n $ctrl.loadMembers();\n return $confirm.notify(\"success\", null, \"We've deleted \" + message + \".\");\n };\n onError = function() {\n finish(false);\n return $confirm.notify(\"error\", null, \"We have not been able to delete \" + message + \".\");\n };\n return $repo.remove(member).then(onSuccess, onError);\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\", MembershipsRowActionsDirective]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/admin/project-profile.coffee\n */\n\n(function() {\n var CsvExporterController, CsvExporterIssuesController, CsvExporterTasksController, CsvExporterUserstoriesController, ProjectDefaultValuesDirective, ProjectExportDirective, ProjectModulesDirective, ProjectProfileController, ProjectProfileDirective, bindOnce, debounce, 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 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\", \"$appTitle\"];\n\n function ProjectProfileController(scope, rootscope, repo, confirm, rs, params, q, location, navUrls, appTitle) {\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.appTitle = appTitle;\n this.scope.project = {};\n promise = this.loadInitialData();\n promise.then((function(_this) {\n return function() {\n return _this.appTitle.set(\"Project profile - \" + _this.scope.sectionName + \" - \" + _this.scope.project.name);\n };\n })(this));\n promise.then(null, this.onInitialDataError.bind(this));\n this.scope.$on(\"project:loaded\", (function(_this) {\n return function() {\n return _this.appTitle.set(\"Project profile - \" + _this.scope.sectionName + \" - \" + _this.scope.project.name);\n };\n })(this));\n }\n\n ProjectProfileController.prototype.loadProject = function() {\n return this.rs.projects.get(this.scope.projectId).then((function(_this) {\n return function(project) {\n if (!project.i_am_owner) {\n _this.location.path(_this.navUrls.resolve(\"permission-denied\"));\n }\n _this.scope.project = project;\n _this.scope.pointsList = _.sortBy(project.points, \"order\");\n _this.scope.usStatusList = _.sortBy(project.us_statuses, \"order\");\n _this.scope.taskStatusList = _.sortBy(project.task_statuses, \"order\");\n _this.scope.prioritiesList = _.sortBy(project.priorities, \"order\");\n _this.scope.severitiesList = _.sortBy(project.severities, \"order\");\n _this.scope.issueTypesList = _.sortBy(project.issue_types, \"order\");\n _this.scope.issueStatusList = _.sortBy(project.issue_statuses, \"order\");\n _this.scope.$emit('project:loaded', project);\n return project;\n };\n })(this));\n };\n\n ProjectProfileController.prototype.loadInitialData = function() {\n var promise;\n promise = this.repo.resolve({\n pslug: this.params.pslug\n }).then((function(_this) {\n return function(data) {\n _this.scope.projectId = data.project;\n return data;\n };\n })(this));\n return promise.then((function(_this) {\n return function() {\n return _this.loadProject();\n };\n })(this));\n };\n\n ProjectProfileController.prototype.openDeleteLightbox = function() {\n return this.rootscope.$broadcast(\"deletelightbox:new\", this.scope.project);\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) {\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 promise;\n event.preventDefault();\n if (!form.validate()) {\n return;\n }\n $loading.start(submitButton);\n promise = $repo.save($scope.project);\n promise.then(function() {\n var newUrl;\n $loading.finish(submitButton);\n $confirm.notify(\"success\");\n newUrl = $navurls.resolve(\"project-admin-project-profile-details\", {\n project: $scope.project.slug\n });\n $location.path(newUrl);\n return $scope.$emit(\"project:loaded\", $scope.project);\n });\n return promise.then(null, function(data) {\n $loading.finish(target);\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\", ProjectProfileDirective]);\n\n ProjectDefaultValuesDirective = function($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 promise;\n event.preventDefault();\n if (!form.validate()) {\n return;\n }\n $loading.start(submitButton);\n promise = $repo.save($scope.project);\n promise.then(function() {\n $loading.finish(submitButton);\n return $confirm.notify(\"success\");\n });\n return promise.then(null, function(data) {\n $loading.finish(target);\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\", [\"$tgRepo\", \"$tgConfirm\", \"$tgLoading\", ProjectDefaultValuesDirective]);\n\n ProjectModulesDirective = function($repo, $confirm, $loading) {\n var link;\n link = function($scope, $el, $attrs) {\n var form, submit;\n form = $el.find(\"form\").checksley();\n submit = (function(_this) {\n return function() {\n var promise, target;\n if (!form.validate()) {\n return;\n }\n target = angular.element(\".admin-functionalities a.button-green\");\n $loading.start(target);\n promise = $repo.save($scope.project);\n promise.then(function() {\n $loading.finish(target);\n $confirm.notify(\"success\");\n return $scope.$emit(\"project:loaded\", $scope.project);\n });\n return promise.then(null, function(data) {\n $loading.finish(target);\n return $confirm.notify(\"error\", data._error_message);\n });\n };\n })(this);\n $el.on(\"submit\", \"form\", function(event) {\n event.preventDefault();\n return submit();\n });\n $el.on(\"click\", \".admin-functionalities a.button-green\", function(event) {\n event.preventDefault();\n return submit();\n });\n $scope.$watch(\"isVideoconferenceActivated\", function(isVideoconferenceActivated) {\n if (isVideoconferenceActivated) {\n return $el.find(\".videoconference-attributes\").removeClass(\"hidden\");\n } else {\n $el.find(\".videoconference-attributes\").addClass(\"hidden\");\n $scope.project.videoconferences = null;\n return $scope.project.videoconferences_salt = \"\";\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\", [\"$tgRepo\", \"$tgConfirm\", \"$tgLoading\", ProjectModulesDirective]);\n\n ProjectExportDirective = function($window, $rs, $confirm) {\n var link;\n link = function($scope, $el, $attrs) {\n var buttonsEl, hideButtons, hideResult, hideSpinner, resultEl, resultMessageEl, resultTitleEl, setAsyncMessage, setAsyncTitle, setLoadingMessage, setLoadingTitle, setSyncMessage, setSyncTitle, showButtons, showErrorMode, showExportResultAsyncMode, showExportResultSyncMode, showLoadingMode, showResult, showSpinner, spinnerEl;\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 setLoadingTitle = function() {\n return resultTitleEl.html(\"We are generating your dump file\");\n };\n setAsyncTitle = function() {\n return resultTitleEl.html(\"We are generating your dump file\");\n };\n setSyncTitle = function() {\n return resultTitleEl.html(\"Your dump file is ready!\");\n };\n resultMessageEl = $el.find(\".result-message \");\n setLoadingMessage = function() {\n return resultMessageEl.html(\"Please don't close this page.\");\n };\n setAsyncMessage = function() {\n return resultMessageEl.html(\"We will send you an email when ready.\");\n };\n setSyncMessage = function(url) {\n return resultMessageEl.html(\"If the download doesn't start automatically click here.\");\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\", \"a.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 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 = \"Our oompa loompas have some problems generasting your dump. Please try again. \";\n if (result.status === 429) {\n errorMsg = \"Sorry, our oompa loompas are very busy right now. Please try again in a few minutes. \";\n } else if ((ref = result.data) != null ? ref._error_message : void 0) {\n errorMsg = \"Our oompa loompas have some problems generasting your dump: \" + result.data._error_message;\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\", ProjectExportDirective]);\n\n CsvExporterController = (function(superClass) {\n extend(CsvExporterController, superClass);\n\n CsvExporterController.$inject = [\"$scope\", \"$rootScope\", \"$tgUrls\", \"$tgConfirm\", \"$tgResources\"];\n\n function CsvExporterController(scope, rootscope, urls, confirm, rs) {\n this.scope = scope;\n this.rootscope = rootscope;\n this.urls = urls;\n this.confirm = confirm;\n this.rs = rs;\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(finish) {\n var promise;\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 return finish();\n });\n return promise;\n };\n\n CsvExporterController.prototype.regenerateUuid = function() {\n var subtitle, title;\n if (this.scope.csvUuid) {\n title = \"Change URL\";\n subtitle = \"You going to change the CSV data access url. The previous url will be disabled. Are you sure?\";\n return this.confirm.ask(title, subtitle).then(this._generateUuid);\n } else {\n return this._generateUuid(_.identity);\n }\n };\n\n return CsvExporterController;\n\n })(taiga.Controller);\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(\"CsvExporterUserstoriesController\", CsvExporterUserstoriesController);\n\n module.controller(\"CsvExporterTasksController\", CsvExporterTasksController);\n\n module.controller(\"CsvExporterIssuesController\", CsvExporterIssuesController);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/admin/project-profile.coffee\n */\n\n(function() {\n var ColorSelectionDirective, ProjectCustomAttributesController, ProjectCustomAttributesDirective, ProjectValuesController, ProjectValuesDirective, ProjectValuesSectionController, bindOnce, debounce, 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 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\", \"$appTitle\"];\n\n function ProjectValuesSectionController(scope, rootscope, repo, confirm, rs, params, q, location, navUrls, appTitle) {\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.appTitle = appTitle;\n this.scope.project = {};\n promise = this.loadInitialData();\n promise.then((function(_this) {\n return function() {\n return _this.appTitle.set(\"Project values - \" + _this.scope.sectionName + \" - \" + _this.scope.project.name);\n };\n })(this));\n promise.then(null, this.onInitialDataError.bind(this));\n }\n\n ProjectValuesSectionController.prototype.loadProject = function() {\n return this.rs.projects.get(this.scope.projectId).then((function(_this) {\n return function(project) {\n if (!project.i_am_owner) {\n _this.location.path(_this.navUrls.resolve(\"permission-denied\"));\n }\n _this.scope.project = project;\n _this.scope.$emit('project:loaded', project);\n return project;\n };\n })(this));\n };\n\n ProjectValuesSectionController.prototype.loadInitialData = function() {\n var promise;\n promise = this.repo.resolve({\n pslug: this.params.pslug\n }).then((function(_this) {\n return function(data) {\n _this.scope.projectId = data.project;\n return data;\n };\n })(this));\n return promise.then((function(_this) {\n return function() {\n return _this.loadProject();\n };\n })(this));\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 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 this.rootscope.$on(\"project:loaded\", this.loadValues);\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 _this.scope.values = values;\n _this.scope.maxValueOrder = _.max(values, \"order\").order;\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);\n };\n\n return ProjectValuesController;\n\n })(taiga.Controller);\n\n module.controller(\"ProjectValuesController\", ProjectValuesController);\n\n ProjectValuesDirective = function($log, $repo, $confirm, $location, animationFrame) {\n var link, linkDragAndDrop, linkValue;\n linkDragAndDrop = function($scope, $el, $attrs) {\n var itemEl, newParentScope, oldParentScope, tdom;\n oldParentScope = null;\n newParentScope = null;\n itemEl = null;\n tdom = $el.find(\".sortable\");\n tdom.sortable({\n handle: \".row.table-main.visualization\",\n dropOnEmpty: true,\n connectWith: \".project-values-body\",\n revert: 400,\n axis: \"y\"\n });\n tdom.on(\"sortstop\", function(event, ui) {\n var itemIndex, itemValue;\n itemEl = ui.item;\n itemValue = itemEl.scope().value;\n itemIndex = itemEl.index();\n return $scope.$broadcast(\"admin:project-values:move\", itemValue, itemIndex);\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n linkValue = function($scope, $el, $attrs) {\n var $ctrl, cancel, goToBottomList, initializeNewValue, saveNewValue, saveValue, valueType;\n $ctrl = $el.controller();\n valueType = $attrs.type;\n initializeNewValue = function() {\n return $scope.newValue = {\n \"name\": \"\",\n \"is_closed\": false,\n \"is_archived\": false\n };\n };\n initializeNewValue();\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 promise = $repo.save(value);\n promise.then((function(_this) {\n return function() {\n var row;\n row = target.parents(\".row.table-main\");\n row.addClass(\"hidden\");\n return row.siblings(\".visualization\").removeClass('hidden');\n };\n })(this));\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 promise = $repo.create(valueType, $scope.newValue);\n promise.then((function(_this) {\n return function(data) {\n target.addClass(\"hidden\");\n $scope.values.push(data);\n $scope.maxValueOrder = data.order;\n return initializeNewValue();\n };\n })(this));\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\", \".edition input\", function(event) {\n var target;\n if (event.keyCode === 13) {\n target = angular.element(event.currentTarget);\n return saveValue(target);\n } else if (event.keyCode === 27) {\n target = angular.element(event.currentTarget);\n return cancel(target);\n }\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, replacement, subtitle, target, 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 title = \"Delete value\";\n subtitle = value.name;\n replacement = \"All items with this value will be changed to\";\n if (_.keys(choices).length === 0) {\n return $confirm.error(\"You can't delete all values.\");\n }\n return $confirm.askChoice(title, subtitle, choices, replacement).then(function(response) {\n var onError, onSucces;\n onSucces = function() {\n return $ctrl.loadValues()[\"finally\"](function() {\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\", ProjectValuesDirective]);\n\n ColorSelectionDirective = function() {\n var link;\n link = function($scope, $el, $attrs, $model) {\n var $ctrl;\n $ctrl = $el.controller();\n $scope.$watch($attrs.ngModel, function(element) {\n return $scope.color = element.color;\n });\n $el.on(\"click\", \".current-color\", function(event) {\n var body, target;\n event.preventDefault();\n event.stopPropagation();\n target = angular.element(event.currentTarget);\n $el.find(\".select-color\").hide();\n target.siblings(\".select-color\").show();\n body = angular.element(\"body\");\n return body.on(\"click\", (function(_this) {\n return function(event) {\n if (angular.element(event.target).parent(\".select-color\").length === 0) {\n $el.find(\".select-color\").hide();\n return body.unbind(\"click\");\n }\n };\n })(this));\n });\n $el.on(\"click\", \".select-color .color\", function(event) {\n var target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n $scope.$apply(function() {\n return $model.$modelValue.color = target.data(\"color\");\n });\n return $el.find(\".select-color\").hide();\n });\n $el.on(\"click\", \".select-color .selected-color\", function(event) {\n event.preventDefault();\n $scope.$apply(function() {\n return $model.$modelValue.color = $scope.color;\n });\n return $el.find(\".select-color\").hide();\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(\"tgColorSelection\", ColorSelectionDirective);\n\n ProjectCustomAttributesController = (function(superClass) {\n extend(ProjectCustomAttributesController, superClass);\n\n ProjectCustomAttributesController.$inject = [\"$scope\", \"$rootScope\", \"$tgRepo\", \"$tgResources\", \"$routeParams\", \"$q\", \"$tgLocation\", \"$tgNavUrls\", \"$appTitle\"];\n\n function ProjectCustomAttributesController(scope, rootscope, repo, rs, params, q, location, navUrls, appTitle) {\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.appTitle = appTitle;\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.scope.project = {};\n this.rootscope.$on(\"project:loaded\", (function(_this) {\n return function() {\n _this.loadCustomAttributes();\n return _this.appTitle.set(\"Project Custom Attributes - \" + _this.scope.sectionName + \" - \" + _this.scope.project.name);\n };\n })(this));\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 _this.scope.customAttributes = customAttributes;\n _this.scope.maxOrder = _.max(customAttributes, \"order\").order;\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);\n };\n\n ProjectCustomAttributesController.prototype.saveCustomAttribute = function(attrModel) {\n return this.repo.save(attrModel);\n };\n\n ProjectCustomAttributesController.prototype.deleteCustomAttribute = function(attrModel) {\n return this.repo.remove(attrModel);\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);\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) {\n var link;\n link = function($scope, $el, $attrs) {\n var $ctrl, cancelCreate, cancelUpdate, create, deleteCustomAttribute, hideAddButton, hideCancelButton, hideCreateForm, hideEditForm, resetNewAttr, revertChangesInCustomAttribute, showAddButton, showCancelButton, showCreateForm, showEditForm, sortableEl, update;\n $ctrl = $el.controller();\n $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n sortableEl = $el.find(\".js-sortable\");\n sortableEl.sortable({\n handle: \".js-view-custom-field\",\n dropOnEmpty: true,\n revert: 400,\n axis: \"y\"\n });\n sortableEl.on(\"sortstop\", function(event, ui) {\n var itemAttr, itemEl, itemIndex;\n itemEl = ui.item;\n itemAttr = itemEl.scope().attr;\n itemIndex = itemEl.index();\n return $ctrl.moveCustomAttributes(itemAttr, itemIndex);\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(_this) {\n return function() {\n $ctrl.loadCustomAttributes();\n hideCreateForm();\n resetNewAttr();\n return $confirm.notify(\"success\");\n };\n })(this);\n onError = (function(_this) {\n return function(data) {\n return form.setErrors(data);\n };\n })(this);\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 $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 return showCancelButton();\n }\n });\n $el.on(\"click\", \".js-add-custom-field-button\", function(event) {\n event.preventDefault();\n return showCreateForm();\n });\n $el.on(\"click\", \".js-create-custom-field-button\", debounce(2000, function(event) {\n var formEl, target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n formEl = target.closest(\"form\");\n return create(formEl);\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 var formEl, target;\n if (event.keyCode === 13) {\n target = angular.element(event.currentTarget);\n formEl = target.closest(\"form\");\n return create(formEl);\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 return formEl.find(\".js-edit-custom-field input:visible\").first().focus().select();\n };\n hideEditForm = function(formEl) {\n formEl.find(\".js-edit-custom-field\").addClass(\"hidden\");\n return formEl.find(\".js-view-custom-field\").removeClass(\"hidden\");\n };\n revertChangesInCustomAttribute = function(formEl) {\n return $scope.$apply(function() {\n return formEl.scope().attr.revert();\n });\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(_this) {\n return function() {\n $ctrl.loadCustomAttributes();\n hideEditForm(formEl);\n return $confirm.notify(\"success\");\n };\n })(this);\n onError = (function(_this) {\n return function(data) {\n return form.setErrors(data);\n };\n })(this);\n attr = formEl.scope().attr;\n return $ctrl.saveCustomAttribute(attr).then(onSucces, onError);\n };\n cancelUpdate = function(formEl) {\n hideEditForm(formEl);\n return revertChangesInCustomAttribute(formEl);\n };\n $el.on(\"click\", \".js-edit-custom-field-button\", function(event) {\n var formEl, target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n formEl = target.closest(\"form\");\n return showEditForm(formEl);\n });\n $el.on(\"click\", \".js-update-custom-field-button\", debounce(2000, function(event) {\n var formEl, target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n formEl = target.closest(\"form\");\n return update(formEl);\n }));\n $el.on(\"click\", \".js-cancel-edit-custom-field-button\", function(event) {\n var formEl, target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n formEl = target.closest(\"form\");\n return cancelUpdate(formEl);\n });\n $el.on(\"keyup\", \".js-edit-custom-field input\", function(event) {\n var formEl, target;\n if (event.keyCode === 13) {\n target = angular.element(event.currentTarget);\n formEl = target.closest(\"form\");\n return update(formEl);\n } else if (event.keyCode === 27) {\n target = angular.element(event.currentTarget);\n formEl = target.closest(\"form\");\n return cancelUpdate(formEl);\n }\n });\n deleteCustomAttribute = function(formEl) {\n var attr, message, subtitle, title;\n attr = formEl.scope().attr;\n title = \"Delete custom attribute\";\n subtitle = \"Remeber that all values in this custom field will be deleted.
Are you sure you want to continue?\";\n message = attr.name;\n return $confirm.ask(title, subtitle, message).then(function(finish) {\n var onError, onSucces;\n onSucces = function() {\n return $ctrl.loadCustomAttributes()[\"finally\"](function() {\n return finish();\n });\n };\n onError = function() {\n finish(false);\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 return $el.on(\"click\", \".js-delete-custom-field-button\", debounce(2000, function(event) {\n var formEl, target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n formEl = target.closest(\"form\");\n return deleteCustomAttribute(formEl);\n }));\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgProjectCustomAttributes\", [\"$log\", \"$tgConfirm\", \"animationFrame\", ProjectCustomAttributesDirective]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/admin/memberships.coffee\n */\n\n(function() {\n var EditRoleDirective, NewRoleDirective, RolePermissionsDirective, RolesController, RolesDirective, bindMethods, bindOnce, 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 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 RolesController = (function(superClass) {\n extend(RolesController, superClass);\n\n RolesController.$inject = [\"$scope\", \"$rootScope\", \"$tgRepo\", \"$tgConfirm\", \"$tgResources\", \"$routeParams\", \"$q\", \"$tgLocation\", \"$tgNavUrls\", \"$appTitle\"];\n\n function RolesController(scope, rootscope, repo, confirm, rs, params, q, location, navUrls, appTitle) {\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.appTitle = appTitle;\n bindMethods(this);\n this.scope.sectionName = \"Permissions\";\n this.scope.project = {};\n this.scope.anyComputableRole = true;\n promise = this.loadInitialData();\n promise.then((function(_this) {\n return function() {\n return _this.appTitle.set(\"Roles - \" + _this.scope.project.name);\n };\n })(this));\n promise.then(null, this.onInitialDataError.bind(this));\n }\n\n RolesController.prototype.loadProject = function() {\n return this.rs.projects.get(this.scope.projectId).then((function(_this) {\n return function(project) {\n if (!project.i_am_owner) {\n _this.location.path(_this.navUrls.resolve(\"permission-denied\"));\n }\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 })(this));\n };\n\n RolesController.prototype.loadExternalUserRole = 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\": \"External User\",\n \"permissions\": this.scope.project.public_permissions,\n \"external_user\": true\n };\n roles.push(public_permission);\n return roles;\n };\n\n RolesController.prototype.loadRoles = function() {\n return this.rs.roles.list(this.scope.projectId).then(this.loadExternalUserRole).then((function(_this) {\n return function(roles) {\n _this.scope.roles = roles;\n _this.scope.role = _this.scope.roles[0];\n return roles;\n };\n })(this));\n };\n\n RolesController.prototype.loadInitialData = function() {\n var promise;\n promise = this.repo.resolve({\n pslug: this.params.pslug\n }).then((function(_this) {\n return function(data) {\n _this.scope.projectId = data.project;\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 return _this.loadUsersAndRoles();\n };\n })(this)).then((function(_this) {\n return function() {\n return _this.loadRoles();\n };\n })(this));\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 title = \"Delete Role\";\n subtitle = this.scope.role.name;\n replacement = \"All the users with this role will be moved to\";\n warning = \"Be careful, all role estimations will be removed\";\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(\"You can't delete all values.\");\n }\n return this.confirm.askChoice(title, subtitle, choices, replacement, warning).then((function(_this) {\n return function(response) {\n var promise;\n promise = _this.repo.remove(_this.scope.role, {\n moveTo: response.selected\n });\n promise.then(function() {\n _this.loadProject();\n return _this.loadRoles()[\"finally\"](function() {\n return response.finish();\n });\n });\n return promise.then(null, function() {\n return _this.confirm.notify('error');\n });\n };\n })(this));\n };\n\n RolesController.prototype.setComputable = debounce(2000, function() {\n var onError, onSuccess;\n onSuccess = (function(_this) {\n return function() {\n _this.confirm.notify(\"success\");\n return _this.loadProject();\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 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\", \"a.icon-edit\", 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\", \"a.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: _.max($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 $scope.roles.push(role);\n $ctrl.setRole(role);\n $el.find(\".add-button\").show();\n return $ctrl.loadProject();\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) {\n var baseTemplate, categoryTemplate, link, resumeTemplate;\n resumeTemplate = _.template(\"
<%- category.name %>
\\n
\\n
<%- category.activePermissions %>/<%- category.permissions.length %>
\\n <% _.each(category.permissions, function(permission) { %>\\n
active<% } %>\\\"\\n title=\\\"<%- permission.description %>\\\">
\\n <% }) %>\\n
\\n
\");\n categoryTemplate = _.template(\"
\\\">\\n
\\n
\\n
\\n
\\n <% _.each(category.permissions, function(permission) { %>\\n
\\\">\\n <%- permission.description %>\\n
\\n disabled=\\\"disabled\\\"<% } %> <% if(permission.active) { %>checked=\\\"checked\\\"<% } %>/>\\n
\\n Yes\\n No\\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, 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 milestonePermissions = [\n {\n key: \"view_milestones\",\n description: \"View sprints\"\n }, {\n key: \"add_milestone\",\n description: \"Add sprint\"\n }, {\n key: \"modify_milestone\",\n description: \"Modify sprint\"\n }, {\n key: \"delete_milestone\",\n description: \"Delete sprint\"\n }\n ];\n categories.push({\n name: \"Sprints\",\n permissions: setActivePermissions(milestonePermissions)\n });\n userStoryPermissions = [\n {\n key: \"view_us\",\n description: \"View user story\"\n }, {\n key: \"add_us\",\n description: \"Add user story\"\n }, {\n key: \"modify_us\",\n description: \"Modify user story\"\n }, {\n key: \"delete_us\",\n description: \"Delete user story\"\n }\n ];\n categories.push({\n name: \"User Stories\",\n permissions: setActivePermissions(userStoryPermissions)\n });\n taskPermissions = [\n {\n key: \"view_tasks\",\n description: \"View tasks\"\n }, {\n key: \"add_task\",\n description: \"Add task\"\n }, {\n key: \"modify_task\",\n description: \"Modify task\"\n }, {\n key: \"delete_task\",\n description: \"Delete task\"\n }\n ];\n categories.push({\n name: \"Tasks\",\n permissions: setActivePermissions(taskPermissions)\n });\n issuePermissions = [\n {\n key: \"view_issues\",\n description: \"View issues\"\n }, {\n key: \"add_issue\",\n description: \"Add issue\"\n }, {\n key: \"modify_issue\",\n description: \"Modify issue\"\n }, {\n key: \"delete_issue\",\n description: \"Delete issue\"\n }\n ];\n categories.push({\n name: \"Issues\",\n permissions: setActivePermissions(issuePermissions)\n });\n wikiPermissions = [\n {\n key: \"view_wiki_pages\",\n description: \"View wiki pages\"\n }, {\n key: \"add_wiki_page\",\n description: \"Add wiki page\"\n }, {\n key: \"modify_wiki_page\",\n description: \"Modify wiki page\"\n }, {\n key: \"delete_wiki_page\",\n description: \"Delete wiki page\"\n }, {\n key: \"view_wiki_links\",\n description: \"View wiki links\"\n }, {\n key: \"add_wiki_link\",\n description: \"Add wiki link\"\n }, {\n key: \"delete_wiki_link\",\n description: \"Delete wiki link\"\n }\n ];\n categories.push({\n name: \"Wiki\",\n permissions: setActivePermissions(wikiPermissions)\n });\n return setActivePermissionsPerCategory(categories);\n };\n renderResume = function(element, category) {\n return element.find(\".resume\").html(resumeTemplate({\n category: category\n }));\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 html;\n };\n renderPermissions = function() {\n var html;\n $el.off();\n html = baseTemplate();\n _.each(generateCategoriesFromRole($scope.role), function(category, index) {\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 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 activePermissions.push(\"view_project\");\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.loadProject();\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\", RolePermissionsDirective]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/admin/third-parties.coffee\n */\n\n(function() {\n var BitbucketController, BitbucketWebhooksDirective, GithubController, GithubWebhooksDirective, GitlabController, GitlabWebhooksDirective, 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\", \"$appTitle\"];\n\n function WebhooksController(scope, repo, rs, params, location, navUrls, appTitle) {\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.appTitle = appTitle;\n bindMethods(this);\n this.scope.sectionName = \"Webhooks\";\n this.scope.project = {};\n promise = this.loadInitialData();\n promise.then((function(_this) {\n return function() {\n return _this.appTitle.set(\"Webhooks - \" + _this.scope.project.name);\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 return this.rs.projects.get(this.scope.projectId).then((function(_this) {\n return function(project) {\n if (!project.i_am_owner) {\n _this.location.path(_this.navUrls.resolve(\"permission-denied\"));\n }\n _this.scope.project = project;\n _this.scope.$emit('project:loaded', project);\n return project;\n };\n })(this));\n };\n\n WebhooksController.prototype.loadInitialData = function() {\n var promise;\n promise = this.repo.resolve({\n pslug: this.params.pslug\n }).then((function(_this) {\n return function(data) {\n _this.scope.projectId = data.project;\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 return _this.loadWebhooks();\n };\n })(this));\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) {\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 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(_.pairs(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(\"DD MMM YYYY [at] hh:mm:ss\");\n }\n webhook.logs_counter = webhooklogs.length;\n webhook.logs = webhooklogs;\n return updateShowHideHistoryText();\n };\n })(this));\n };\n updateShowHideHistoryText = function() {\n var historyElement, textElement;\n textElement = $el.find(\".toggle-history\");\n historyElement = textElement.parents(\".single-webhook-wrapper\").find(\".webhooks-history\");\n if (historyElement.hasClass(\"open\")) {\n return textElement.text(\"(Hide history)\");\n } else {\n return textElement.text(\"(Show history)\");\n }\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 = \"Delete webhook\";\n message = \"Webhook '\" + webhook.name + \"'\";\n return $confirm.askOnDelete(title, message).then((function(_this) {\n return function(finish) {\n var onError, onSucces;\n onSucces = function() {\n finish();\n return $scope.$emit(\"webhooks:reload\");\n };\n onError = function() {\n 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\");\n return updateShowHideHistoryText();\n });\n });\n } else {\n $el.find(\".webhooks-history\").toggleClass(\"open\");\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\", WebhookDirective]);\n\n NewWebhookDirective = function($rs, $repo, $confirm, $loading) {\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 $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 return initializeNewValue();\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\", NewWebhookDirective]);\n\n GithubController = (function(superClass) {\n extend(GithubController, superClass);\n\n GithubController.$inject = [\"$scope\", \"$tgRepo\", \"$tgResources\", \"$routeParams\", \"$appTitle\"];\n\n function GithubController(scope, repo, rs, params, appTitle) {\n var promise;\n this.scope = scope;\n this.repo = repo;\n this.rs = rs;\n this.params = params;\n this.appTitle = appTitle;\n bindMethods(this);\n this.scope.sectionName = \"Github\";\n this.scope.project = {};\n promise = this.loadInitialData();\n promise.then((function(_this) {\n return function() {\n return _this.appTitle.set(\"Github - \" + _this.scope.project.name);\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 return this.rs.projects.get(this.scope.projectId).then((function(_this) {\n return function(project) {\n _this.scope.project = project;\n _this.scope.$emit('project:loaded', project);\n return project;\n };\n })(this));\n };\n\n GithubController.prototype.loadInitialData = function() {\n var promise;\n promise = this.repo.resolve({\n pslug: this.params.pslug\n }).then((function(_this) {\n return function(data) {\n _this.scope.projectId = data.project;\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 return _this.loadModules();\n };\n })(this));\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\", \"$appTitle\"];\n\n function GitlabController(scope, repo, rs, params, appTitle) {\n var promise;\n this.scope = scope;\n this.repo = repo;\n this.rs = rs;\n this.params = params;\n this.appTitle = appTitle;\n bindMethods(this);\n this.scope.sectionName = \"Gitlab\";\n this.scope.project = {};\n promise = this.loadInitialData();\n promise.then((function(_this) {\n return function() {\n return _this.appTitle.set(\"Gitlab - \" + _this.scope.project.name);\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 return this.rs.projects.get(this.scope.projectId).then((function(_this) {\n return function(project) {\n _this.scope.project = project;\n _this.scope.$emit('project:loaded', project);\n return project;\n };\n })(this));\n };\n\n GitlabController.prototype.loadInitialData = function() {\n var promise;\n promise = this.repo.resolve({\n pslug: this.params.pslug\n }).then((function(_this) {\n return function(data) {\n _this.scope.projectId = data.project;\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 return _this.loadModules();\n };\n })(this));\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\", \"$appTitle\"];\n\n function BitbucketController(scope, repo, rs, params, appTitle) {\n var promise;\n this.scope = scope;\n this.repo = repo;\n this.rs = rs;\n this.params = params;\n this.appTitle = appTitle;\n bindMethods(this);\n this.scope.sectionName = \"Bitbucket\";\n this.scope.project = {};\n promise = this.loadInitialData();\n promise.then((function(_this) {\n return function() {\n return _this.appTitle.set(\"Bitbucket - \" + _this.scope.project.name);\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 return this.rs.projects.get(this.scope.projectId).then((function(_this) {\n return function(project) {\n _this.scope.project = project;\n _this.scope.$emit('project:loaded', project);\n return project;\n };\n })(this));\n };\n\n BitbucketController.prototype.loadInitialData = function() {\n var promise;\n promise = this.repo.resolve({\n pslug: this.params.pslug\n }).then((function(_this) {\n return function(data) {\n _this.scope.projectId = data.project;\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 return _this.loadModules();\n };\n })(this));\n };\n\n return BitbucketController;\n\n })(mixOf(taiga.Controller, taiga.PageMixin, taiga.FiltersMixin));\n\n module.controller(\"BitbucketController\", BitbucketController);\n\n SelectInputText = function() {\n var link;\n link = function($scope, $el, $attrs) {\n return $el.on(\"click\", \".select-input-content\", function() {\n $el.find(\"input\").select();\n return $el.find(\".help-copy\").addClass(\"visible\");\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgSelectInputText\", SelectInputText);\n\n GithubWebhooksDirective = function($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 promise;\n event.preventDefault();\n if (!form.validate()) {\n return;\n }\n $loading.start(submitButton);\n promise = $repo.saveAttribute($scope.github, \"github\");\n promise.then(function() {\n $loading.finish(submitButton);\n return $confirm.notify(\"success\");\n });\n return promise.then(null, function(data) {\n $loading.finish(submitButton);\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\", GithubWebhooksDirective]);\n\n GitlabWebhooksDirective = function($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 promise;\n event.preventDefault();\n if (!form.validate()) {\n return;\n }\n $loading.start(submitButton);\n promise = $repo.saveAttribute($scope.gitlab, \"gitlab\");\n promise.then(function() {\n $loading.finish(submitButton);\n $confirm.notify(\"success\");\n return $scope.$emit(\"project:modules:reload\");\n });\n return promise.then(null, function(data) {\n $loading.finish(submitButton);\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\", GitlabWebhooksDirective]);\n\n BitbucketWebhooksDirective = function($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 promise;\n event.preventDefault();\n if (!form.validate()) {\n return;\n }\n $loading.start(submitButton);\n promise = $repo.saveAttribute($scope.bitbucket, \"bitbucket\");\n promise.then(function() {\n $loading.finish(submitButton);\n $confirm.notify(\"success\");\n return $scope.$emit(\"project:modules:reload\");\n });\n return promise.then(null, function(data) {\n $loading.finish(submitButton);\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\", 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}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/base/bind.coffee\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 * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/base/conf.coffee\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 * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/base/contrib.coffee\n */\n\n(function() {\n var ContribController, module, taigaContribPlugins,\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 taigaContribPlugins = this.taigaContribPlugins = this.taigaContribPlugins || [];\n\n ContribController = (function(superClass) {\n extend(ContribController, superClass);\n\n ContribController.$inject = [\"$rootScope\", \"$scope\", \"$routeParams\", \"$tgRepo\", \"$tgResources\", \"$tgConfirm\", \"$appTitle\"];\n\n function ContribController(rootScope, scope, params, repo, rs, confirm, appTitle) {\n var promise;\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.appTitle = appTitle;\n this.scope.adminPlugins = _.where(this.rootScope.contribPlugins, {\n \"type\": \"admin\"\n });\n this.scope.currentPlugin = _.first(_.where(this.scope.adminPlugins, {\n \"slug\": this.params.plugin\n }));\n this.scope.pluginTemplate = \"contrib/\" + this.scope.currentPlugin.slug;\n this.scope.projectSlug = this.params.pslug;\n promise = this.loadInitialData();\n promise.then((function(_this) {\n return function() {\n return _this.appTitle.set(_this.scope.project.name);\n };\n })(this));\n promise.then(null, (function(_this) {\n return function() {\n return _this.confirm.notify(\"error\");\n };\n })(this));\n }\n\n ContribController.prototype.loadProject = function() {\n return this.rs.projects.get(this.scope.projectId).then((function(_this) {\n return function(project) {\n _this.scope.project = project;\n _this.scope.$emit('project:loaded', project);\n _this.scope.$broadcast('project:loaded', project);\n return project;\n };\n })(this));\n };\n\n ContribController.prototype.loadInitialData = function() {\n var promise;\n promise = this.repo.resolve({\n pslug: this.params.pslug\n }).then((function(_this) {\n return function(data) {\n _this.scope.projectId = data.project;\n return data;\n };\n })(this));\n return promise.then((function(_this) {\n return function() {\n return _this.loadProject();\n };\n })(this));\n };\n\n return ContribController;\n\n })(taiga.Controller);\n\n module = angular.module(\"taigaBase\");\n\n module.controller(\"ContribController\", ContribController);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: plugins/humanshtml/humanshtml.coffee\n */\n\n(function() {\n var configure, module, taiga;\n\n taiga = this.taiga;\n\n module = angular.module(\"taigaPlugins\");\n\n configure = function($routeProvider) {\n return $routeProvider.when(\"/humans.html\", {\n \"templateUrl\": \"/plugins/humanshtml/templates/humans.html\"\n });\n };\n\n module.config([\"$routeProvider\", configure]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: plugins/terms/terms.coffee\n */\n\n(function() {\n var TermsNoticeDirective, module, taiga, template;\n\n taiga = this.taiga;\n\n module = angular.module(\"taigaPlugins\");\n\n template = _.template(\"

\\n By clicking \\\"Sign up\\\", you agree to our
\\n
\\\" title=\\\"See terms of service\\\" target=\\\"_blank\\\"> terms of service\\n and\\n \\\" title=\\\"See privacy policy\\\" target=\\\"_blank\\\"> privacy policy.\\n

\");\n\n TermsNoticeDirective = function($config) {\n var privacyPolicyUrl, templateFn, termsOfServiceUrl;\n privacyPolicyUrl = $config.get(\"privacyPolicyUrl\");\n termsOfServiceUrl = $config.get(\"termsOfServiceUrl\");\n templateFn = function() {\n var ctx;\n if (!(privacyPolicyUrl && termsOfServiceUrl)) {\n return \"\";\n }\n ctx = {\n termsUrl: termsOfServiceUrl,\n privacyUrl: privacyPolicyUrl\n };\n return template(ctx);\n };\n return {\n scope: {},\n restrict: \"AE\",\n template: templateFn\n };\n };\n\n module.directive(\"tgTermsNotice\", [\"$tgConfig\", TermsNoticeDirective]);\n\n}).call(this);\n","angular.module('taigaBase').value('localesEn', {\n \"checksley\": {\n \"defaultMessage\": \"This value seems to be invalid.\",\n \"type-email\": \"This value should be a valid email.\",\n \"type-url\": \"This value should be a valid url.\",\n \"type-urlstrict\": \"This value should be a valid url.\",\n \"type-number\": \"This value should be a valid number.\",\n \"type-digits\": \"This value should be digits.\",\n \"type-dateIso\": \"This value should be a valid date (YYYY-MM-DD).\",\n \"type-alphanum\": \"This value should be alphanumeric.\",\n \"type-phone\": \"This value should be a valid phone number.\",\n \"notnull\": \"This value should not be null.\",\n \"notblank\": \"This value should not be blank.\",\n \"required\": \"This value is required.\",\n \"regexp\": \"This value seems to be invalid.\",\n \"min\": \"This value should be greater than or equal to %s.\",\n \"max\": \"This value should be lower than or equal to %s.\",\n \"range\": \"This value should be between %s and %s.\",\n \"minlength\": \"This value is too short. It should have %s characters or more.\",\n \"maxlength\": \"This value is too long. It should have %s characters or less.\",\n \"rangelength\": \"This value length is invalid. It should be between %s and %s characters long.\",\n \"mincheck\": \"You must select at least %s choices.\",\n \"maxcheck\": \"You must select %s choices or less.\",\n \"rangecheck\": \"You must select between %s and %s choices.\",\n \"equalto\": \"This value should be the same.\"\n },\n \"common\": {\n \"subject\": \"Subject\",\n \"save\": \"Save\",\n \"blocked\": \"Blocked\",\n \"cancel\": \"Cancel\",\n \"status\": \"Status\",\n \"new-bulk\": \"New bulk insert\",\n \"one-item-line\": \"One item per line...\"\n },\n \"pagination\": {\n \"next\": \"Next\",\n \"prev\": \"Previous\"\n },\n \"markdown-editor\": {\n \"heading-1\": \"First Level Heading\",\n \"heading-2\": \"Second Level Heading\",\n \"heading-3\": \"Third Level Heading\",\n \"bold\": \"Bold\",\n \"italic\": \"Italic\",\n \"strike\": \"Strike\",\n \"bulleted-list\": \"Bulleted List\",\n \"numeric-list\": \"Numeric List\",\n \"picture\": \"Picture\",\n \"link\": \"Link\",\n \"quotes\": \"Quotes\",\n \"code-block\": \"Code Block / Code\",\n \"preview\": \"Preview\",\n \"help\": \"Help\",\n \"placeholder\": \"Your title here...\",\n \"link-placeholder\": \"Your text to link here...\"\n },\n \"us\": {\n \"title-new\": \"New User Story\",\n \"team-requirement\": \"Team Requirement\",\n \"client-requirement\": \"Client Requirement\"\n }\n}\n);"],"sourceRoot":"/source/"} \ No newline at end of file diff --git a/dist/js/templates.js b/dist/js/templates.js index 71e54b0..01c8239 100644 --- a/dist/js/templates.js +++ b/dist/js/templates.js @@ -1,7 +1,4 @@ -angular.module("templates", []).run(["$templateCache", function($templateCache) {$templateCache.put("attachment/attachment-edit.html","\n\n
<%- size %>
\n
\n \" placeholder=\"Type a short description\"/>\n
\n
\n -is-deprecated\"/>\n \n
\n
"); -$templateCache.put("attachment/attachment.html","\n\n
<%- size %>
\n
<% if (isDeprecated){ %>(deprecated)<% } %><%- description %>
<% if (modifyPermission) {%>\n
<% } %>"); -$templateCache.put("attachment/attachments.html","\n
\n
\n

attachments

\n
\" title=\"Add new attachment. <%- maxFileSizeMsg %>\" class=\"add-attach\"><% if (maxFileSize){ %>[Max. size: <%- maxFileSize %>]<% }; %>\n \n \n
\n
\n \n
"); -$templateCache.put("admin/admin-membership-paginator.html","\n
    <% if (showPrevious) { %>\n
  • Prev
  • <% } %>\n <% _.each(pages, function(item) { %>\n
  • \"><% if (item.type === \"page\") { %>\"><%- item.num %><% } else if (item.type === \"page-active\") { %><%- item.num %><% } else { %>...<% } %>
  • <% }); %>\n <% if (showNext) { %>\n
  • Next
  • <% } %>\n
"); +angular.module("templates", []).run(["$templateCache", function($templateCache) {$templateCache.put("admin/admin-membership-paginator.html","\n
    <% if (showPrevious) { %>\n
  • Prev
  • <% } %>\n <% _.each(pages, function(item) { %>\n
  • \"><% if (item.type === \"page\") { %>\"><%- item.num %><% } else if (item.type === \"page-active\") { %><%- item.num %><% } else { %>...<% } %>
  • <% }); %>\n <% if (showNext) { %>\n
  • Next
  • <% } %>\n
"); $templateCache.put("admin/admin-memberships-row-checkbox.html","\n
\n \"/>\n
YesNo\n
"); $templateCache.put("admin/admin-memberships.html","\n
\n \n
\n
\n

Admin

\n
\n \n
\n
\n
\n
\n
\n
\n

\n
\n
\n \n
\n
\n
\n
Member
\n
Admin
\n
Role
\n
Status
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n

New Member

\n
\n \n

If users are already registered on Taiga, they will be added automatically. Otherwise they will receive an invitation.

\n
\n
\n
"); $templateCache.put("admin/admin-project-default-values.html","\n
\n \n
\n
\n

Admin

\n
\n \n
\n
\n \n
\n
\n

Project Profile

\n
\n \n
\n
\n
\n
\n
\n

\n
\n
\n

Default Values

\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n
\n
\n
\n
\n
"); @@ -21,6 +18,9 @@ $templateCache.put("admin/admin-third-parties-github.html","\n
Taiga Your agile, free, and open source project management tool\n
\n \n
\n
\n

Admin

\n
\n \n
\n
\n \n
\n
\n

Services

\n
\n \n
\n
\n
\n
\n

\n
\n
\n
\n \n \n
\n
\n
\n
\n \n
\n \n
\n
\n
\n
\n
Copy to clipboard: Ctrl+C
\n
\n
\n
\n
\n \n \n
\n \n
Do you need help? Check out our support page!\n
\n
"); $templateCache.put("admin/admin-third-parties-webhooks.html","\nTaiga Your agile, free, and open source project management tool\n
\n \n
\n
\n

Admin

\n
\n \n
\n
\n \n
\n
\n

Services

\n
\n \n
\n
\n
\n
\n

\n
\n

Webhooks notify external services about events in Taiga, like comments, user stories....

\n \n
\n
\n
\n
Name
\n
URL
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
Headers\n \n
\n
Payload\n \n
\n
\n
Response
\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n
Do you need help? Check out our support page!\n
\n
"); $templateCache.put("admin/memberships-row-avatar.html","\n
\" alt=\"<%- full_name %>\"/>\n
<%- full_name %><%- email %>
\n
"); +$templateCache.put("attachment/attachment-edit.html","\n\n
<%- size %>
\n
\n \" placeholder=\"Type a short description\"/>\n
\n
\n -is-deprecated\"/>\n \n
\n
"); +$templateCache.put("attachment/attachment.html","\n\n
<%- size %>
\n
<% if (isDeprecated){ %>(deprecated)<% } %><%- description %>
<% if (modifyPermission) {%>\n
<% } %>"); +$templateCache.put("attachment/attachments.html","\n
\n
\n

attachments

\n
\" title=\"Add new attachment. <%- maxFileSizeMsg %>\" class=\"add-attach\"><% if (maxFileSize){ %>[Max. size: <%- maxFileSize %>]<% }; %>\n \n \n
\n
\n \n
"); $templateCache.put("auth/change-password-from-recovery.html","\n
\n
\n
\n

\"TAIGA\"

\n

Your agile, free, and open source project management tool

\n
\n

Create a new Taiga pass
And hey, you may want to eat some more iron-rich food, it\'s good for your brain :P

\n
\n
\n Need one?\n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
"); $templateCache.put("auth/forgot-password.html","\n
\n
\n
\"TAIGA\"\n

Taiga

\n

LOVE YOUR PROJECT

\n
\n

Oops, did you forget your password?
Enter your username or email to get a new one

\n
\n
\n \n
\n
\n \n
Nah, take me back. I think I remember it.\n
\n
\n
\n
\n
"); $templateCache.put("auth/invitation.html","\n
\n
\n
\n
\n

has invited you to join the project

\n

\n
\n
\n

I already have a Taiga login

\n
\n \n
\n
\n Forgot it?\n
\n
\n \n
\n
\n
\n
\n

Register a new Taiga account (free)

\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n \n
\n
\n
\n
\n
"); @@ -114,13 +114,13 @@ $templateCache.put("common/history/history-change-generic.html","\n
\n
<%- name %>
\n
<% if (removed.length > 0) { %>\n

removed
<%- removed %>

<% } %>\n <% if (added.length > 0) { %>\n

added
<%- added %>

<% } %>\n
\n
"); $templateCache.put("common/history/history-change-points.html","<% _.each(points, function(point, name) { %>\n
\n
US points (<%- name.toLowerCase() %>)
\n
\n

from
<%- point[0] %>

\n

to
<%- point[1] %>

\n
\n
<% }); %>"); $templateCache.put("common/history/history-deleted-comment.html","\n
\n
Comment deleted by <%- deleteCommentUser %> on <%- deleteCommentDate %>(Show deleted comment)(Hide deleted comment)\n
<%= deleteComment %>
\n
<% if (canRestoreComment) { %>\" class=\"comment-restore\">Restore comment<% } %>\n
"); -$templateCache.put("common/popover/popover-related-task-status.html","\n"); -$templateCache.put("common/popover/popover-us-status.html","\n"); $templateCache.put("common/lightbox/lightbox-assigned-to-users.html","<% if (selected) { %>\n<% } %>\n<% _.each(users, function(user) { %>\n<% }) %>\n<% if (showMore) { %>\n
...too many users, keep filtering
<% } %>"); $templateCache.put("common/lightbox/lightbox-assigned-to.html","\n
\n

Select assigned to

\n
\n \n
\n
\n
"); $templateCache.put("common/lightbox/lightbox-block.html","\n
\n

\n
\n \n
Save\n
"); $templateCache.put("common/lightbox/lightbox-blocking-message-input.html","\n
\n \n
"); $templateCache.put("common/lightbox/lightbox-users.html","\n
\n

Add watchers

\n
\n \n
\n
//- The content of this is rendered by directive
\n
"); +$templateCache.put("common/popover/popover-related-task-status.html","\n"); +$templateCache.put("common/popover/popover-us-status.html","\n"); $templateCache.put("common/tag/lb-tag-line-tags.html","<% _.each(tags, function(tag) { %>\" class=\"tag\"><%- tag.name %><% }); %>"); $templateCache.put("common/tag/lb-tag-line.html","\n
\n"); $templateCache.put("common/tag/tag-line.html","\n
Add tag\n"); diff --git a/dist/styles/main.css b/dist/styles/main.css index 624c658..cbc3647 100644 --- a/dist/styles/main.css +++ b/dist/styles/main.css @@ -1,4 +1,4 @@ -@charset "UTF-8";.pika-table,table{border-spacing:0;border-collapse:collapse}.mCSB_horizontal.mCSB_outside>.mCSB_container,.master,body,html{min-height:100%}.menu-secondary,.menu-secondary.filters-bar,.menu-tertiary{-webkit-flex:0 0 auto;-ms-flex:0 0 auto}.menu-secondary,.menu-tertiary{min-height:100vh;-webkit-box-flex:0}.basic-table .row,.error-main,.header-with-actions,.invitation-main,.loader .container,.login-main,.open.lightbox,.project-values-title,.us-story-main-data .us-title .edit-subject,.watchers .watcher-single{-webkit-align-items:center}.basic-table .row,.error-main,.header-with-actions,.invitation-main,.loader .container,.login-main,.project-values-title,.us-story-main-data .us-title .us-title-text,.watchers .watcher-single{-webkit-box-align:center}.dropdown-menu,.main-nav,ol,ul{list-style:none}.lightbox textarea,.wizard-create-project textarea,textarea{resize:vertical}.hll{background-color:#ffc}.c{color:#998;font-style:italic}// Comment .err{background-color:#e3d2d2;color:#a61717}// Error .k,// Keyword .o{color:#000;font-weight:700}// Operator .cm{color:#998;font-style:italic}// Comment.Multiline .cp{color:#999;font-style:italic;font-weight:700}// Comment.Preproc .c1{color:#998;font-style:italic}// Comment.Single .cs{color:#999;font-style:italic;font-weight:700}// Comment.Special .gd{background-color:#fdd;color:#000}// Generic.Deleted .ge{color:#000;font-style:italic}// Generic.Emph .gr{color:#a00}// Generic.Error .gh{color:#999}// Generic.Heading .gi{background-color:#dfd;color:#000}// Generic.Inserted .go{color:#888}// Generic.Output .gp{color:#555}// Generic.Prompt .gs{font-weight:700}// Generic.Strong .gu{color:#aaa}// Generic.Subheading .gt{color:#a00}// Generic.Traceback .kc,// Keyword.Constant .kd,// Keyword.Declaration .kn,// Keyword.Namespace .kp,// Keyword.Pseudo .kr{color:#000;font-weight:700}// Keyword.Reserved .kt{color:#458;font-weight:700}// Keyword.Type .m{color:#099}// Literal.Number .s{color:#d01040}// Literal.String .na{color:teal}// Name.Attribute .nb{color:#0086b3}// Name.Builtin .nc{color:#458;font-weight:700}// Name.Class .no{color:teal}// Name.Constant .nd{color:#3c5d5d;font-weight:700}// Name.Decorator .ni{color:purple}// Name.Entity .ne,// Name.Exception .nf,// Name.Function .nl{color:#900;font-weight:700}// Name.Label .nn{color:#555}// Name.Namespace .nt{color:navy}// Name.Tag .nv{color:teal}// Name.Variable .ow{color:#000;font-weight:700}// Operator.Word .w{color:#bbb}// Literal.Number.Float .mh,// Literal.Number.Hex .mi,// Literal.Number.Integer .mo,// Text.Whitespace .mf{color:#099}// Literal.Number.Oct .sb,// Literal.String.Backtick .sc,// Literal.String.Char .sd,// Literal.String.Doc .s2,// Literal.String.Double .se,// Literal.String.Escape .sh,// Literal.String.Heredoc .si,// Literal.String.Interpol .sx{color:#d01040}// Literal.String.Other .sr{color:#009926}// Literal.String.Regex .s1{color:#d01040}// Literal.String.Single .ss{color:#990073}// Literal.String.Symbol .bp{color:#999}// Name.Builtin.Pseudo .vc,// Name.Variable.Class .vg,// Name.Variable.Global .vi{color:teal}// Name.Variable.Instance .il{color:#099}// Literal.Number.Integer.Long .mCustomScrollbar{-ms-touch-action:none;touch-action:none}.mCustomScrollbar.mCS_no_scrollbar{-ms-touch-action:auto;touch-action:auto}.mCustomScrollBox{position:relative;overflow:hidden;height:100%;max-width:100%;outline:0;direction:ltr}.mCSB_container{overflow:hidden;width:auto;height:auto}.mCSB_inside>.mCSB_container{margin-right:30px}.mCSB_container.mCS_no_scrollbar_y.mCS_y_hidden{margin-right:0}.mCS-dir-rtl>.mCSB_inside>.mCSB_container{margin-right:0;margin-left:30px}.mCS-dir-rtl>.mCSB_inside>.mCSB_container.mCS_no_scrollbar_y.mCS_y_hidden{margin-left:0}.mCSB_scrollTools{position:absolute;width:16px;height:auto;left:auto;top:0;right:0;bottom:0;opacity:.75;filter:"alpha(opacity=75)";-ms-filter:"alpha(opacity=75)"}.mCSB_outside+.mCSB_scrollTools{right:-26px}.mCS-dir-rtl>.mCSB_inside>.mCSB_scrollTools,.mCS-dir-rtl>.mCSB_outside+.mCSB_scrollTools{right:auto;left:0}.mCS-dir-rtl>.mCSB_outside+.mCSB_scrollTools{left:-26px}.mCSB_scrollTools .mCSB_draggerContainer{position:absolute;top:0;left:0;bottom:0;right:0;height:auto}.mCSB_scrollTools a+.mCSB_draggerContainer{margin:20px 0}.mCSB_scrollTools .mCSB_draggerRail{width:2px;height:100%;margin:0 auto;-webkit-border-radius:16px;-moz-border-radius:16px;border-radius:16px}.mCSB_scrollTools .mCSB_dragger{cursor:pointer;width:100%;height:30px;z-index:1}.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{position:relative;width:4px;height:100%;margin:0 auto;-webkit-border-radius:16px;-moz-border-radius:16px;border-radius:16px;text-align:center}.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar,.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar{width:12px}.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded+.mCSB_draggerRail,.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{width:8px}.mCSB_scrollTools .mCSB_buttonDown,.mCSB_scrollTools .mCSB_buttonUp{display:block;position:absolute;height:20px;width:100%;overflow:hidden;margin:0 auto;cursor:pointer}.mCSB_scrollTools .mCSB_buttonDown{bottom:0}.mCSB_horizontal.mCSB_inside>.mCSB_container{margin-right:0;margin-bottom:30px}.mCSB_horizontal>.mCSB_container.mCS_no_scrollbar_x.mCS_x_hidden{margin-bottom:0}.mCSB_scrollTools.mCSB_scrollTools_horizontal{width:auto;height:16px;top:auto;right:0;bottom:0;left:0}.mCustomScrollBox+.mCSB_scrollTools+.mCSB_scrollTools.mCSB_scrollTools_horizontal,.mCustomScrollBox+.mCSB_scrollTools.mCSB_scrollTools_horizontal{bottom:-26px}.mCSB_scrollTools.mCSB_scrollTools_horizontal a+.mCSB_draggerContainer{margin:0 20px}.mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_draggerRail{width:100%;height:2px;margin:7px 0}.mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_dragger{width:30px;height:100%;left:0}.mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{width:100%;height:4px;margin:6px auto}.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar,.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar{height:12px;margin:2px auto}.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded+.mCSB_draggerRail,.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{height:8px;margin:4px 0}.mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_buttonLeft,.mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_buttonRight{display:block;position:absolute;width:20px;height:100%;overflow:hidden;margin:0 auto;cursor:pointer}.mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_buttonLeft{left:0}.mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_buttonRight{right:0}.mCSB_container_wrapper{position:absolute;height:auto;width:auto;overflow:hidden;top:0;left:0;right:0;bottom:0;margin-right:30px;margin-bottom:30px}.mCSB_container_wrapper>.mCSB_container{padding-right:30px;padding-bottom:30px}.mCSB_vertical_horizontal>.mCSB_scrollTools.mCSB_scrollTools_vertical{bottom:20px}.mCSB_vertical_horizontal>.mCSB_scrollTools.mCSB_scrollTools_horizontal{right:20px}.mCSB_container_wrapper.mCS_no_scrollbar_x.mCS_x_hidden+.mCSB_scrollTools.mCSB_scrollTools_vertical{bottom:0}.mCS-dir-rtl>.mCustomScrollBox.mCSB_vertical_horizontal.mCSB_inside>.mCSB_scrollTools.mCSB_scrollTools_horizontal,.mCSB_container_wrapper.mCS_no_scrollbar_y.mCS_y_hidden+.mCSB_scrollTools~.mCSB_scrollTools.mCSB_scrollTools_horizontal{right:0}.mCS-dir-rtl>.mCustomScrollBox.mCSB_vertical_horizontal.mCSB_inside>.mCSB_scrollTools.mCSB_scrollTools_horizontal{left:20px}.mCS-dir-rtl>.mCustomScrollBox.mCSB_vertical_horizontal.mCSB_inside>.mCSB_container_wrapper.mCS_no_scrollbar_y.mCS_y_hidden+.mCSB_scrollTools~.mCSB_scrollTools.mCSB_scrollTools_horizontal{left:0}.mCS-dir-rtl>.mCSB_inside>.mCSB_container_wrapper{margin-right:0;margin-left:30px}.mCSB_container_wrapper.mCS_no_scrollbar_y.mCS_y_hidden>.mCSB_container{padding-right:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.mCSB_container_wrapper.mCS_no_scrollbar_x.mCS_x_hidden>.mCSB_container{padding-bottom:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.mCustomScrollBox.mCSB_vertical_horizontal.mCSB_inside>.mCSB_container_wrapper.mCS_no_scrollbar_y.mCS_y_hidden{margin-right:0;margin-left:0}.mCustomScrollBox.mCSB_vertical_horizontal.mCSB_inside>.mCSB_container_wrapper.mCS_no_scrollbar_x.mCS_x_hidden{margin-bottom:0}.mCSB_scrollTools,.mCSB_scrollTools .mCSB_buttonDown,.mCSB_scrollTools .mCSB_buttonLeft,.mCSB_scrollTools .mCSB_buttonRight,.mCSB_scrollTools .mCSB_buttonUp,.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{-webkit-transition:opacity .2s ease-in-out,background-color .2s ease-in-out;-moz-transition:opacity .2s ease-in-out,background-color .2s ease-in-out;-o-transition:opacity .2s ease-in-out,background-color .2s ease-in-out;transition:opacity .2s ease-in-out,background-color .2s ease-in-out}.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerRail,.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger_bar,.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerRail,.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger_bar{-webkit-transition:width .2s ease-out .2s,height .2s ease-out .2s,margin-left .2s ease-out .2s,margin-right .2s ease-out .2s,margin-top .2s ease-out .2s,margin-bottom .2s ease-out .2s,opacity .2s ease-in-out,background-color .2s ease-in-out;-moz-transition:width .2s ease-out .2s,height .2s ease-out .2s,margin-left .2s ease-out .2s,margin-right .2s ease-out .2s,margin-top .2s ease-out .2s,margin-bottom .2s ease-out .2s,opacity .2s ease-in-out,background-color .2s ease-in-out;-o-transition:width .2s ease-out .2s,height .2s ease-out .2s,margin-left .2s ease-out .2s,margin-right .2s ease-out .2s,margin-top .2s ease-out .2s,margin-bottom .2s ease-out .2s,opacity .2s ease-in-out,background-color .2s ease-in-out;transition:width .2s ease-out .2s,height .2s ease-out .2s,margin-left .2s ease-out .2s,margin-right .2s ease-out .2s,margin-top .2s ease-out .2s,margin-bottom .2s ease-out .2s,opacity .2s ease-in-out,background-color .2s ease-in-out}.mCS-autoHide>.mCustomScrollBox>.mCSB_scrollTools,.mCS-autoHide>.mCustomScrollBox~.mCSB_scrollTools{opacity:0;filter:"alpha(opacity=0)";-ms-filter:"alpha(opacity=0)"}.mCS-autoHide:hover>.mCustomScrollBox>.mCSB_scrollTools,.mCS-autoHide:hover>.mCustomScrollBox~.mCSB_scrollTools,.mCustomScrollBox:hover>.mCSB_scrollTools,.mCustomScrollBox:hover~.mCSB_scrollTools,.mCustomScrollbar>.mCustomScrollBox>.mCSB_scrollTools.mCSB_scrollTools_onDrag,.mCustomScrollbar>.mCustomScrollBox~.mCSB_scrollTools.mCSB_scrollTools_onDrag{opacity:1;filter:"alpha(opacity=100)";-ms-filter:"alpha(opacity=100)"}.mCSB_scrollTools .mCSB_draggerRail{background-color:#000;background-color:rgba(0,0,0,.4);filter:"alpha(opacity=40)";-ms-filter:"alpha(opacity=40)"}.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.75);filter:"alpha(opacity=75)";-ms-filter:"alpha(opacity=75)"}.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.85);filter:"alpha(opacity=85)";-ms-filter:"alpha(opacity=85)"}.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.9);filter:"alpha(opacity=90)";-ms-filter:"alpha(opacity=90)"}.mCSB_scrollTools .mCSB_buttonDown,.mCSB_scrollTools .mCSB_buttonLeft,.mCSB_scrollTools .mCSB_buttonRight,.mCSB_scrollTools .mCSB_buttonUp{background-image:url(mCSB_buttons.png);background-repeat:no-repeat;opacity:.4;filter:"alpha(opacity=40)";-ms-filter:"alpha(opacity=40)"}.mCSB_scrollTools .mCSB_buttonUp{background-position:0 0}.mCSB_scrollTools .mCSB_buttonDown{background-position:0 -20px}.mCSB_scrollTools .mCSB_buttonLeft{background-position:0 -40px}.mCSB_scrollTools .mCSB_buttonRight{background-position:0 -56px}.mCSB_scrollTools .mCSB_buttonDown:hover,.mCSB_scrollTools .mCSB_buttonLeft:hover,.mCSB_scrollTools .mCSB_buttonRight:hover,.mCSB_scrollTools .mCSB_buttonUp:hover{opacity:.75;filter:"alpha(opacity=75)";-ms-filter:"alpha(opacity=75)"}.mCSB_scrollTools .mCSB_buttonDown:active,.mCSB_scrollTools .mCSB_buttonLeft:active,.mCSB_scrollTools .mCSB_buttonRight:active,.mCSB_scrollTools .mCSB_buttonUp:active{opacity:.9;filter:"alpha(opacity=90)";-ms-filter:"alpha(opacity=90)"}.mCS-3d-dark.mCSB_scrollTools,.mCS-3d-thick-dark.mCSB_scrollTools,.mCS-3d-thick.mCSB_scrollTools,.mCS-3d.mCSB_scrollTools{opacity:1;filter:"alpha(opacity=30)";-ms-filter:"alpha(opacity=30)"}.mCS-dark.mCSB_scrollTools .mCSB_draggerRail{background-color:#000;background-color:rgba(0,0,0,.15)}.mCS-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.75)}.mCS-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:rgba(0,0,0,.85)}.mCS-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:rgba(0,0,0,.9)}.mCS-dark.mCSB_scrollTools .mCSB_buttonUp{background-position:-80px 0}.mCS-dark.mCSB_scrollTools .mCSB_buttonDown{background-position:-80px -20px}.mCS-dark.mCSB_scrollTools .mCSB_buttonLeft{background-position:-80px -40px}.mCS-dark.mCSB_scrollTools .mCSB_buttonRight{background-position:-80px -56px}.mCS-dark-2.mCSB_scrollTools .mCSB_draggerRail,.mCS-light-2.mCSB_scrollTools .mCSB_draggerRail{width:4px;background-color:#fff;background-color:rgba(255,255,255,.1);-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px}.mCS-dark-2.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-light-2.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{width:4px;background-color:#fff;background-color:rgba(255,255,255,.75);-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px}.mCS-dark-2.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-dark-2.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-light-2.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-light-2.mCSB_scrollTools_horizontal .mCSB_draggerRail{width:100%;height:4px;margin:6px auto}.mCS-light-2.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.85)}.mCS-light-2.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-light-2.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.9)}.mCS-light-2.mCSB_scrollTools .mCSB_buttonUp{background-position:-32px 0}.mCS-light-2.mCSB_scrollTools .mCSB_buttonDown{background-position:-32px -20px}.mCS-light-2.mCSB_scrollTools .mCSB_buttonLeft{background-position:-40px -40px}.mCS-light-2.mCSB_scrollTools .mCSB_buttonRight{background-position:-40px -56px}.mCS-dark-2.mCSB_scrollTools .mCSB_draggerRail{background-color:#000;background-color:rgba(0,0,0,.1);-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px}.mCS-dark-2.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.75);-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px}.mCS-dark-2.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.85)}.mCS-dark-2.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-dark-2.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.9)}.mCS-dark-2.mCSB_scrollTools .mCSB_buttonUp{background-position:-112px 0}.mCS-dark-2.mCSB_scrollTools .mCSB_buttonDown{background-position:-112px -20px}.mCS-dark-2.mCSB_scrollTools .mCSB_buttonLeft{background-position:-120px -40px}.mCS-dark-2.mCSB_scrollTools .mCSB_buttonRight{background-position:-120px -56px}.mCS-dark-thick.mCSB_scrollTools .mCSB_draggerRail,.mCS-light-thick.mCSB_scrollTools .mCSB_draggerRail{width:4px;background-color:#fff;background-color:rgba(255,255,255,.1);-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px}.mCS-dark-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-light-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{width:6px;background-color:#fff;background-color:rgba(255,255,255,.75);-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px}.mCS-dark-thick.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-light-thick.mCSB_scrollTools_horizontal .mCSB_draggerRail{width:100%;height:4px;margin:6px 0}.mCS-dark-thick.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-light-thick.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{width:100%;height:6px;margin:5px auto}.mCS-light-thick.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.85)}.mCS-light-thick.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-light-thick.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.9)}.mCS-light-thick.mCSB_scrollTools .mCSB_buttonUp{background-position:-16px 0}.mCS-light-thick.mCSB_scrollTools .mCSB_buttonDown{background-position:-16px -20px}.mCS-light-thick.mCSB_scrollTools .mCSB_buttonLeft{background-position:-20px -40px}.mCS-light-thick.mCSB_scrollTools .mCSB_buttonRight{background-position:-20px -56px}.mCS-dark-thick.mCSB_scrollTools .mCSB_draggerRail{background-color:#000;background-color:rgba(0,0,0,.1);-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px}.mCS-dark-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.75);-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px}.mCS-dark-thick.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.85)}.mCS-dark-thick.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-dark-thick.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.9)}.mCS-dark-thick.mCSB_scrollTools .mCSB_buttonUp{background-position:-96px 0}.mCS-dark-thick.mCSB_scrollTools .mCSB_buttonDown{background-position:-96px -20px}.mCS-dark-thick.mCSB_scrollTools .mCSB_buttonLeft{background-position:-100px -40px}.mCS-dark-thick.mCSB_scrollTools .mCSB_buttonRight{background-position:-100px -56px}.mCS-light-thin.mCSB_scrollTools .mCSB_draggerRail{background-color:#fff;background-color:rgba(255,255,255,.1)}.mCS-dark-thin.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-light-thin.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{width:2px}.mCS-dark-thin.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-light-thin.mCSB_scrollTools_horizontal .mCSB_draggerRail{width:100%}.mCS-dark-thin.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-light-thin.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{width:100%;height:2px;margin:7px auto}.mCS-dark-thin.mCSB_scrollTools .mCSB_draggerRail{background-color:#000;background-color:rgba(0,0,0,.15)}.mCS-dark-thin.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.75)}.mCS-dark-thin.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.85)}.mCS-dark-thin.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-dark-thin.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.9)}.mCS-dark-thin.mCSB_scrollTools .mCSB_buttonUp{background-position:-80px 0}.mCS-dark-thin.mCSB_scrollTools .mCSB_buttonDown{background-position:-80px -20px}.mCS-dark-thin.mCSB_scrollTools .mCSB_buttonLeft{background-position:-80px -40px}.mCS-dark-thin.mCSB_scrollTools .mCSB_buttonRight{background-position:-80px -56px}.mCS-rounded.mCSB_scrollTools .mCSB_draggerRail{background-color:#fff;background-color:rgba(255,255,255,.15)}.mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger,.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger,.mCS-rounded-dots.mCSB_scrollTools .mCSB_dragger,.mCS-rounded.mCSB_scrollTools .mCSB_dragger{height:14px}.mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-rounded-dots.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-rounded.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{width:14px;margin:0 1px}.mCS-rounded-dark.mCSB_scrollTools_horizontal .mCSB_dragger,.mCS-rounded-dots-dark.mCSB_scrollTools_horizontal .mCSB_dragger,.mCS-rounded-dots.mCSB_scrollTools_horizontal .mCSB_dragger,.mCS-rounded.mCSB_scrollTools_horizontal .mCSB_dragger{width:14px}.mCS-rounded-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-rounded-dots-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-rounded-dots.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-rounded.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{height:14px;margin:1px 0}.mCS-rounded-dark.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar,.mCS-rounded-dark.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar,.mCS-rounded.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar,.mCS-rounded.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar{width:16px;height:16px;margin:-1px 0}.mCS-rounded-dark.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded+.mCSB_draggerRail,.mCS-rounded-dark.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail,.mCS-rounded.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded+.mCSB_draggerRail,.mCS-rounded.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{width:4px}.mCS-rounded-dark.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar,.mCS-rounded-dark.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar,.mCS-rounded.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar,.mCS-rounded.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar{height:16px;width:16px;margin:0 -1px}.mCS-rounded-dark.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded+.mCSB_draggerRail,.mCS-rounded-dark.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail,.mCS-rounded.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded+.mCSB_draggerRail,.mCS-rounded.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{height:4px;margin:6px 0}.mCS-rounded.mCSB_scrollTools .mCSB_buttonUp{background-position:0 -72px}.mCS-rounded.mCSB_scrollTools .mCSB_buttonDown{background-position:0 -92px}.mCS-rounded.mCSB_scrollTools .mCSB_buttonLeft{background-position:0 -112px}.mCS-rounded.mCSB_scrollTools .mCSB_buttonRight{background-position:0 -128px}.mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.75)}.mCS-rounded-dark.mCSB_scrollTools .mCSB_draggerRail{background-color:#000;background-color:rgba(0,0,0,.15)}.mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar,.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.85)}.mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.9)}.mCS-rounded-dark.mCSB_scrollTools .mCSB_buttonUp{background-position:-80px -72px}.mCS-rounded-dark.mCSB_scrollTools .mCSB_buttonDown{background-position:-80px -92px}.mCS-rounded-dark.mCSB_scrollTools .mCSB_buttonLeft{background-position:-80px -112px}.mCS-rounded-dark.mCSB_scrollTools .mCSB_buttonRight{background-position:-80px -128px}.mCS-rounded-dots-dark.mCSB_scrollTools_vertical .mCSB_draggerRail,.mCS-rounded-dots.mCSB_scrollTools_vertical .mCSB_draggerRail{width:4px}.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_draggerRail,.mCS-rounded-dots-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-rounded-dots.mCSB_scrollTools .mCSB_draggerRail,.mCS-rounded-dots.mCSB_scrollTools_horizontal .mCSB_draggerRail{background-color:transparent;background-position:center}.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_draggerRail,.mCS-rounded-dots.mCSB_scrollTools .mCSB_draggerRail{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAANElEQVQYV2NkIAAYiVbw//9/Y6DiM1ANJoyMjGdBbLgJQAX/kU0DKgDLkaQAvxW4HEvQFwCRcxIJK1XznAAAAABJRU5ErkJggg==);background-repeat:repeat-y;opacity:.3;filter:"alpha(opacity=30)";-ms-filter:"alpha(opacity=30)"}.mCS-rounded-dots-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-rounded-dots.mCSB_scrollTools_horizontal .mCSB_draggerRail{height:4px;margin:6px 0;background-repeat:repeat-x}.mCS-rounded-dots.mCSB_scrollTools .mCSB_buttonUp{background-position:-16px -72px}.mCS-rounded-dots.mCSB_scrollTools .mCSB_buttonDown{background-position:-16px -92px}.mCS-rounded-dots.mCSB_scrollTools .mCSB_buttonLeft{background-position:-20px -112px}.mCS-rounded-dots.mCSB_scrollTools .mCSB_buttonRight{background-position:-20px -128px}.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_draggerRail{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAALElEQVQYV2NkIAAYSVFgDFR8BqrBBEifBbGRTfiPZhpYjiQFBK3A6l6CvgAAE9kGCd1mvgEAAAAASUVORK5CYII=)}.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_buttonUp{background-position:-96px -72px}.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_buttonDown{background-position:-96px -92px}.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_buttonLeft{background-position:-100px -112px}.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_buttonRight{background-position:-100px -128px}.mCS-3d-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-3d-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-3d.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-repeat:repeat-y;background-image:-moz-linear-gradient(left,rgba(255,255,255,.5)0,rgba(255,255,255,0)100%);background-image:-webkit-gradient(linear,left top,right top,color-stop(0,rgba(255,255,255,.5)),color-stop(100%,rgba(255,255,255,0)));background-image:-webkit-linear-gradient(left,rgba(255,255,255,.5)0,rgba(255,255,255,0)100%);background-image:-o-linear-gradient(left,rgba(255,255,255,.5)0,rgba(255,255,255,0)100%);background-image:-ms-linear-gradient(left,rgba(255,255,255,.5)0,rgba(255,255,255,0)100%);background-image:linear-gradient(to right,rgba(255,255,255,.5)0,rgba(255,255,255,0)100%)}.mCS-3d-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-3d-thick-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-3d-thick.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-3d.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{background-repeat:repeat-x;background-image:-moz-linear-gradient(top,rgba(255,255,255,.5)0,rgba(255,255,255,0)100%);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,rgba(255,255,255,.5)),color-stop(100%,rgba(255,255,255,0)));background-image:-webkit-linear-gradient(top,rgba(255,255,255,.5)0,rgba(255,255,255,0)100%);background-image:-o-linear-gradient(top,rgba(255,255,255,.5)0,rgba(255,255,255,0)100%);background-image:-ms-linear-gradient(top,rgba(255,255,255,.5)0,rgba(255,255,255,0)100%);background-image:linear-gradient(to bottom,rgba(255,255,255,.5)0,rgba(255,255,255,0)100%)}.mCS-3d-dark.mCSB_scrollTools_vertical .mCSB_dragger,.mCS-3d.mCSB_scrollTools_vertical .mCSB_dragger{height:70px}.mCS-3d-dark.mCSB_scrollTools_horizontal .mCSB_dragger,.mCS-3d.mCSB_scrollTools_horizontal .mCSB_dragger{width:70px}.mCS-3d-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-3d-dark.mCSB_scrollTools .mCSB_draggerRail,.mCS-3d.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-3d.mCSB_scrollTools .mCSB_draggerRail{-webkit-border-radius:16px;-moz-border-radius:16px;border-radius:16px}.mCS-3d-dark.mCSB_scrollTools .mCSB_draggerRail,.mCS-3d.mCSB_scrollTools .mCSB_draggerRail{width:8px;background-color:#000;background-color:rgba(0,0,0,.2);box-shadow:inset 1px 0 1px rgba(0,0,0,.5),inset -1px 0 1px rgba(255,255,255,.2)}.mCS-3d-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-3d-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-3d-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,.mCS-3d-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar,.mCS-3d.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-3d.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-3d.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,.mCS-3d.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#555}.mCS-3d-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-3d.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{width:8px}.mCS-3d-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-3d.mCSB_scrollTools_horizontal .mCSB_draggerRail{width:100%;height:8px;margin:4px 0;box-shadow:inset 0 1px 1px rgba(0,0,0,.5),inset 0 -1px 1px rgba(255,255,255,.2)}.mCS-3d-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-3d.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{width:100%;height:8px;margin:4px auto}.mCS-3d.mCSB_scrollTools .mCSB_buttonUp{background-position:-32px -72px}.mCS-3d.mCSB_scrollTools .mCSB_buttonDown{background-position:-32px -92px}.mCS-3d.mCSB_scrollTools .mCSB_buttonLeft{background-position:-40px -112px}.mCS-3d.mCSB_scrollTools .mCSB_buttonRight{background-position:-40px -128px}.mCS-3d-dark.mCSB_scrollTools .mCSB_draggerRail{background-color:#000;background-color:rgba(0,0,0,.1);box-shadow:inset 1px 0 1px rgba(0,0,0,.1)}.mCS-3d-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail{box-shadow:inset 0 1px 1px rgba(0,0,0,.1)}.mCS-3d-dark.mCSB_scrollTools .mCSB_buttonUp{background-position:-112px -72px}.mCS-3d-dark.mCSB_scrollTools .mCSB_buttonDown{background-position:-112px -92px}.mCS-3d-dark.mCSB_scrollTools .mCSB_buttonLeft{background-position:-120px -112px}.mCS-3d-dark.mCSB_scrollTools .mCSB_buttonRight{background-position:-120px -128px}.mCS-3d-thick-dark.mCSB_scrollTools,.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_draggerContainer,.mCS-3d-thick.mCSB_scrollTools,.mCS-3d-thick.mCSB_scrollTools .mCSB_draggerContainer{-webkit-border-radius:7px;-moz-border-radius:7px;border-radius:7px}.mCSB_inside+.mCS-3d-thick-dark.mCSB_scrollTools_vertical,.mCSB_inside+.mCS-3d-thick.mCSB_scrollTools_vertical{right:1px}.mCS-3d-thick-dark.mCSB_scrollTools_vertical,.mCS-3d-thick.mCSB_scrollTools_vertical{box-shadow:inset 1px 0 1px rgba(0,0,0,.1),inset 0 0 14px rgba(0,0,0,.5)}.mCS-3d-thick-dark.mCSB_scrollTools_horizontal,.mCS-3d-thick.mCSB_scrollTools_horizontal{bottom:1px;box-shadow:inset 0 1px 1px rgba(0,0,0,.1),inset 0 0 14px rgba(0,0,0,.5)}.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-3d-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;box-shadow:inset 1px 0 0 rgba(255,255,255,.4);width:12px;margin:2px;position:absolute;height:auto;top:0;bottom:0;left:0;right:0}.mCS-3d-thick-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-3d-thick.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{box-shadow:inset 0 1px 0 rgba(255,255,255,.4);height:12px;width:auto}.mCS-3d-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-3d-thick.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-3d-thick.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,.mCS-3d-thick.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#555}.mCS-3d-thick.mCSB_scrollTools .mCSB_draggerContainer{background-color:#000;background-color:rgba(0,0,0,.05);box-shadow:inset 1px 1px 16px rgba(0,0,0,.1)}.mCS-3d-thick.mCSB_scrollTools .mCSB_draggerRail{background-color:transparent}.mCS-3d-thick.mCSB_scrollTools .mCSB_buttonUp{background-position:-32px -72px}.mCS-3d-thick.mCSB_scrollTools .mCSB_buttonDown{background-position:-32px -92px}.mCS-3d-thick.mCSB_scrollTools .mCSB_buttonLeft{background-position:-40px -112px}.mCS-3d-thick.mCSB_scrollTools .mCSB_buttonRight{background-position:-40px -128px}.mCS-3d-thick-dark.mCSB_scrollTools{box-shadow:inset 0 0 14px rgba(0,0,0,.2)}.mCS-3d-thick-dark.mCSB_scrollTools_horizontal{box-shadow:inset 0 1px 1px rgba(0,0,0,.1),inset 0 0 14px rgba(0,0,0,.2)}.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{box-shadow:inset 1px 0 0 rgba(255,255,255,.4),inset -1px 0 0 rgba(0,0,0,.2)}.mCS-3d-thick-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{box-shadow:inset 0 1px 0 rgba(255,255,255,.4),inset 0 -1px 0 rgba(0,0,0,.2)}.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#777}.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_draggerContainer{background-color:#fff;background-color:rgba(0,0,0,.05);box-shadow:inset 1px 1px 16px rgba(0,0,0,.1)}.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_draggerRail,.mCS-minimal-dark.mCSB_scrollTools .mCSB_draggerRail,.mCS-minimal.mCSB_scrollTools .mCSB_draggerRail{background-color:transparent}.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_buttonUp{background-position:-112px -72px}.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_buttonDown{background-position:-112px -92px}.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_buttonLeft{background-position:-120px -112px}.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_buttonRight{background-position:-120px -128px}.mCSB_outside+.mCS-minimal-dark.mCSB_scrollTools_vertical,.mCSB_outside+.mCS-minimal.mCSB_scrollTools_vertical{right:0;margin:12px 0}.mCustomScrollBox.mCS-minimal+.mCSB_scrollTools+.mCSB_scrollTools.mCSB_scrollTools_horizontal,.mCustomScrollBox.mCS-minimal+.mCSB_scrollTools.mCSB_scrollTools_horizontal,.mCustomScrollBox.mCS-minimal-dark+.mCSB_scrollTools+.mCSB_scrollTools.mCSB_scrollTools_horizontal,.mCustomScrollBox.mCS-minimal-dark+.mCSB_scrollTools.mCSB_scrollTools_horizontal{bottom:0;margin:0 12px}.mCS-dir-rtl>.mCSB_outside+.mCS-minimal-dark.mCSB_scrollTools_vertical,.mCS-dir-rtl>.mCSB_outside+.mCS-minimal.mCSB_scrollTools_vertical{left:0;right:auto}.mCS-minimal-dark.mCSB_scrollTools_vertical .mCSB_dragger,.mCS-minimal.mCSB_scrollTools_vertical .mCSB_dragger{height:50px}.mCS-minimal-dark.mCSB_scrollTools_horizontal .mCSB_dragger,.mCS-minimal.mCSB_scrollTools_horizontal .mCSB_dragger{width:50px}.mCS-minimal.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.2);filter:"alpha(opacity=20)";-ms-filter:"alpha(opacity=20)"}.mCS-minimal.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-minimal.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.5);filter:"alpha(opacity=50)";-ms-filter:"alpha(opacity=50)"}.mCS-minimal-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.2);filter:"alpha(opacity=20)";-ms-filter:"alpha(opacity=20)"}.mCS-minimal-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-minimal-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.5);filter:"alpha(opacity=50)";-ms-filter:"alpha(opacity=50)"}.mCS-dark-3.mCSB_scrollTools .mCSB_draggerRail,.mCS-light-3.mCSB_scrollTools .mCSB_draggerRail{width:6px;background-color:#000;background-color:rgba(0,0,0,.2)}.mCS-dark-3.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-light-3.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{width:6px}.mCS-dark-3.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-dark-3.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-light-3.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-light-3.mCSB_scrollTools_horizontal .mCSB_draggerRail{width:100%;height:6px;margin:5px 0}.mCS-dark-3.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded+.mCSB_draggerRail,.mCS-dark-3.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail,.mCS-light-3.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded+.mCSB_draggerRail,.mCS-light-3.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{width:12px}.mCS-dark-3.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded+.mCSB_draggerRail,.mCS-dark-3.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail,.mCS-light-3.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded+.mCSB_draggerRail,.mCS-light-3.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{height:12px;margin:2px 0}.mCS-light-3.mCSB_scrollTools .mCSB_buttonUp{background-position:-32px -72px}.mCS-light-3.mCSB_scrollTools .mCSB_buttonDown{background-position:-32px -92px}.mCS-light-3.mCSB_scrollTools .mCSB_buttonLeft{background-position:-40px -112px}.mCS-light-3.mCSB_scrollTools .mCSB_buttonRight{background-position:-40px -128px}.mCS-dark-3.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.75)}.mCS-dark-3.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.85)}.mCS-dark-3.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-dark-3.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.9)}.mCS-dark-3.mCSB_scrollTools .mCSB_draggerRail{background-color:#000;background-color:rgba(0,0,0,.1)}.mCS-dark-3.mCSB_scrollTools .mCSB_buttonUp{background-position:-112px -72px}.mCS-dark-3.mCSB_scrollTools .mCSB_buttonDown{background-position:-112px -92px}.mCS-dark-3.mCSB_scrollTools .mCSB_buttonLeft{background-position:-120px -112px}.mCS-dark-3.mCSB_scrollTools .mCSB_buttonRight{background-position:-120px -128px}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_draggerRail,.mCS-inset-2.mCSB_scrollTools .mCSB_draggerRail,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_draggerRail,.mCS-inset-3.mCSB_scrollTools .mCSB_draggerRail,.mCS-inset-dark.mCSB_scrollTools .mCSB_draggerRail,.mCS-inset.mCSB_scrollTools .mCSB_draggerRail{width:12px;background-color:#000;background-color:rgba(0,0,0,.2)}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-inset-2.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-inset-3.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-inset-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-inset.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{width:6px;margin:3px 5px;position:absolute;height:auto;top:0;bottom:0;left:0;right:0}.mCS-inset-2-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-inset-2.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-inset-3-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-inset-3.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-inset-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-inset.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{height:6px;margin:5px 3px;position:absolute;width:auto;top:0;bottom:0;left:0;right:0}.mCS-inset-2-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-inset-2.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-inset-3-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-inset-3.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-inset-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-inset.mCSB_scrollTools_horizontal .mCSB_draggerRail{width:100%;height:12px;margin:2px 0}.mCS-inset-2.mCSB_scrollTools .mCSB_buttonUp,.mCS-inset-3.mCSB_scrollTools .mCSB_buttonUp,.mCS-inset.mCSB_scrollTools .mCSB_buttonUp{background-position:-32px -72px}.mCS-inset-2.mCSB_scrollTools .mCSB_buttonDown,.mCS-inset-3.mCSB_scrollTools .mCSB_buttonDown,.mCS-inset.mCSB_scrollTools .mCSB_buttonDown{background-position:-32px -92px}.mCS-inset-2.mCSB_scrollTools .mCSB_buttonLeft,.mCS-inset-3.mCSB_scrollTools .mCSB_buttonLeft,.mCS-inset.mCSB_scrollTools .mCSB_buttonLeft{background-position:-40px -112px}.mCS-inset-2.mCSB_scrollTools .mCSB_buttonRight,.mCS-inset-3.mCSB_scrollTools .mCSB_buttonRight,.mCS-inset.mCSB_scrollTools .mCSB_buttonRight{background-position:-40px -128px}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-inset-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.75)}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar,.mCS-inset-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.85)}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-inset-2-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,.mCS-inset-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-inset-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.9)}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_draggerRail,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_draggerRail,.mCS-inset-dark.mCSB_scrollTools .mCSB_draggerRail{background-color:#000;background-color:rgba(0,0,0,.1)}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_buttonUp,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_buttonUp,.mCS-inset-dark.mCSB_scrollTools .mCSB_buttonUp{background-position:-112px -72px}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_buttonDown,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_buttonDown,.mCS-inset-dark.mCSB_scrollTools .mCSB_buttonDown{background-position:-112px -92px}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_buttonLeft,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_buttonLeft,.mCS-inset-dark.mCSB_scrollTools .mCSB_buttonLeft{background-position:-120px -112px}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_buttonRight,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_buttonRight,.mCS-inset-dark.mCSB_scrollTools .mCSB_buttonRight{background-position:-120px -128px}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_draggerRail,.mCS-inset-2.mCSB_scrollTools .mCSB_draggerRail{background-color:transparent;border-width:1px;border-style:solid;border-color:#fff;border-color:rgba(255,255,255,.2);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_draggerRail{border-color:#000;border-color:rgba(0,0,0,.2)}.mCS-inset-3.mCSB_scrollTools .mCSB_draggerRail{background-color:#fff;background-color:rgba(255,255,255,.6)}.mCS-inset-3-dark.mCSB_scrollTools .mCSB_draggerRail{background-color:#000;background-color:rgba(0,0,0,.6)}.mCS-inset-3.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.75)}.mCS-inset-3.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.85)}.mCS-inset-3.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-inset-3.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.9)}.mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.75)}.mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.85)}.mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.9)}.dropdown-menu{border:1px solid #ddd;background-color:#fff}.dropdown-menu li{border-top:1px solid #ddd;padding:2px 5px}.dropdown-menu li:first-child{border-top:none}.dropdown-menu .active,.dropdown-menu li:hover{background-color:#6eb7db}.textcomplete-wrapper{width:100%}.dropdown-menu{padding:0;margin:0}.dropdown-menu a:hover{cursor:pointer}.markItUp .markItUpButton1 a{background-image:url(../images/markitup/h1.png)}.markItUp .markItUpButton2 a{background-image:url(../images/markitup/h2.png)}.markItUp .markItUpButton3 a{background-image:url(../images/markitup/h3.png)}.markItUp .markItUpButton4 a{background-image:url(../images/markitup/bold.png)}.markItUp .markItUpButton5 a{background-image:url(../images/markitup/italic.png)}.markItUp .markItUpButton6 a{background-image:url(../images/markitup/stroke.png)}.markdown .markItUpButton7 a{background-image:url(../images/markitup/list-bullet.png)}.markdown .markItUpButton8 a{background-image:url(../images/markitup/list-numeric.png)}.markdown .markItUpButton9 a{background-image:url(../images/markitup/picture.png)}.markdown .markItUpButton10 a{background-image:url(../images/markitup/link.png)}.markdown .markItUpButton11 a{background-image:url(../images/markitup/quotes.png)}.markdown .markItUpButton12 a{background-image:url(../images/markitup/code.png)}.markdown .preview-icon a{background-image:url(../images/markitup/preview.png)}.markdown .help a{background-image:url(../images/markitup/help.png)}.markItUp *{margin:0;padding:0;outline:0}.markItUp a:link,.markItUp a:visited{color:#000;text-decoration:none}.markItUpContainer{font:11px Verdana,Arial,Helvetica,sans-serif}.markItUpEditor{font:12px 'Courier New',Courier,monospace;padding:5px;height:320px;clear:both;line-height:18px;overflow:auto}[class*=' icon-']:before,[class^=icon-]:before,[data-icon]:before{line-height:1;font-weight:400!important;font-family:taiga!important;-webkit-font-smoothing:antialiased}.markItUpPreviewFrame{overflow:auto;background-color:#FFF;width:99.9%;height:300px;margin:5px 0}.markItUpFooter{width:100%}.markItUpResizeHandle{overflow:hidden;width:22px;height:5px;margin-left:auto;margin-right:auto;background-image:url(../images/markitup/handle.png);cursor:n-resize}.markItUp .markItUpHeader ul{margin:0}.markItUpHeader ul li{list-style:none;position:relative;margin:3px}.markItUpHeader ul li:hover>ul{display:block}.markItUpHeader ul .markItUpDropMenu{background:url(../images/markitup/menu.png)115% 50% no-repeat;margin-right:5px}.markItUpHeader ul .markItUpDropMenu li{margin-right:0}.markItUpHeader ul ul{display:none;position:absolute;top:18px;left:0;background:#FFF;border:1px solid #000}.markItUpHeader ul ul li{float:none;border-bottom:1px solid #000}.markItUpHeader ul ul .markItUpDropMenu{background:url(../images/markitup/submenu.png)100% 50% no-repeat #FFF}.markItUpHeader ul .markItUpSeparator{margin:2px 10px 0;width:1px;height:16px;overflow:hidden;background-color:#CCC}.markItUpHeader ul ul .markItUpSeparator{width:auto;height:1px;margin:0}.markItUpHeader ul ul ul{position:absolute;top:-1px;left:150px}.markItUpHeader ul ul ul li{float:none}.markItUpHeader ul a{display:block;width:16px;height:16px;text-indent:-10000px;background-repeat:no-repeat;padding:3px;margin:0}.markItUpHeader ul ul a{display:block;text-indent:0;width:120px;padding:5px 5px 5px 25px;background-position:2px 50%}.markItUpHeader ul ul a:hover{color:#FFF;background-color:#000}/*! normalize.css v3.0.1 | MIT License | git.io/normalize */article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background:0 0}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}mark{background:#ff0;color:#000}sub,sup{line-height:0;position:relative}sup{top:-.5em}sub{bottom:-.25em}svg:not(:root){overflow:hidden}pre,textarea{overflow:auto}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}.pika-label,.pika-next,.pika-prev,.taskboard,.taskboard .graphics-container,.taskboard-inner,body.loading-project,body.loading-project .projects-nav-overlay,h1 .date,h1 span{overflow:hidden}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}/*! +@charset "UTF-8";.pika-table,table{border-collapse:collapse}.backlog-table-body .pop-points-open:after,.backlog-table-body .pop-points:after,.backlog-table-body .pop-role:after,.backlog-table-body .pop-status:after,.backlog-table-header .pop-points-open:after,.backlog-table-header .pop-points:after,.backlog-table-header .pop-role:after,.backlog-table-header .pop-status:after{height:15px;content:'';-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg)}.admin-webhooks .webhook-url-inputs,.project-values-row{-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center}.admin-webhooks .webhook-url-inputs,.backlog-table-body .row,.backlog-table-body .user-story-name,.backlog-table-header .backlog-table-title{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.admin-webhooks .history-single,.project-values-row{-webkit-box-align:center;-webkit-align-items:center}.hll{background-color:#ffc}.c{color:#998;font-style:italic}// Comment .err{background-color:#e3d2d2;color:#a61717}// Error .k,// Keyword .o{color:#000;font-weight:700}// Operator .cm{color:#998;font-style:italic}// Comment.Multiline .cp{color:#999;font-style:italic;font-weight:700}// Comment.Preproc .c1{color:#998;font-style:italic}// Comment.Single .cs{color:#999;font-style:italic;font-weight:700}// Comment.Special .gd{background-color:#fdd;color:#000}// Generic.Deleted .ge{color:#000;font-style:italic}// Generic.Emph .gr{color:#a00}// Generic.Error .gh{color:#999}// Generic.Heading .gi{background-color:#dfd;color:#000}// Generic.Inserted .go{color:#888}// Generic.Output .gp{color:#555}// Generic.Prompt .gs{font-weight:700}// Generic.Strong .gu{color:#aaa}// Generic.Subheading .gt{color:#a00}// Generic.Traceback .kc,// Keyword.Constant .kd,// Keyword.Declaration .kn,// Keyword.Namespace .kp,// Keyword.Pseudo .kr{color:#000;font-weight:700}// Keyword.Reserved .kt{color:#458;font-weight:700}// Keyword.Type .m{color:#099}// Literal.Number .s{color:#d01040}// Literal.String .na{color:teal}// Name.Attribute .nb{color:#0086b3}// Name.Builtin .nc{color:#458;font-weight:700}// Name.Class .no{color:teal}// Name.Constant .nd{color:#3c5d5d;font-weight:700}// Name.Decorator .ni{color:purple}// Name.Entity .ne,// Name.Exception .nf,// Name.Function .nl{color:#900;font-weight:700}// Name.Label .nn{color:#555}// Name.Namespace .nt{color:navy}// Name.Tag .nv{color:teal}// Name.Variable .ow{color:#000;font-weight:700}// Operator.Word .w{color:#bbb}// Literal.Number.Float .mh,// Literal.Number.Hex .mi,// Literal.Number.Integer .mo,// Text.Whitespace .mf{color:#099}// Literal.Number.Oct .sb,// Literal.String.Backtick .sc,// Literal.String.Char .sd,// Literal.String.Doc .s2,// Literal.String.Double .se,// Literal.String.Escape .sh,// Literal.String.Heredoc .si,// Literal.String.Interpol .sx{color:#d01040}// Literal.String.Other .sr{color:#009926}// Literal.String.Regex .s1{color:#d01040}// Literal.String.Single .ss{color:#990073}// Literal.String.Symbol .bp{color:#999}// Name.Builtin.Pseudo .vc,// Name.Variable.Class .vg,// Name.Variable.Global .vi{color:teal}// Name.Variable.Instance .il{color:#099}// Literal.Number.Integer.Long .mCustomScrollbar{-ms-touch-action:none;touch-action:none}.mCustomScrollbar.mCS_no_scrollbar{-ms-touch-action:auto;touch-action:auto}.mCustomScrollBox{position:relative;overflow:hidden;height:100%;max-width:100%;outline:0;direction:ltr}.mCSB_container{overflow:hidden;width:auto;height:auto}.mCSB_inside>.mCSB_container{margin-right:30px}.mCSB_container.mCS_no_scrollbar_y.mCS_y_hidden{margin-right:0}.mCS-dir-rtl>.mCSB_inside>.mCSB_container{margin-right:0;margin-left:30px}.mCS-dir-rtl>.mCSB_inside>.mCSB_container.mCS_no_scrollbar_y.mCS_y_hidden{margin-left:0}.mCSB_scrollTools{position:absolute;width:16px;height:auto;left:auto;top:0;right:0;bottom:0;opacity:.75;filter:"alpha(opacity=75)";-ms-filter:"alpha(opacity=75)"}.mCSB_outside+.mCSB_scrollTools{right:-26px}.mCS-dir-rtl>.mCSB_inside>.mCSB_scrollTools,.mCS-dir-rtl>.mCSB_outside+.mCSB_scrollTools{right:auto;left:0}.mCS-dir-rtl>.mCSB_outside+.mCSB_scrollTools{left:-26px}.mCSB_scrollTools .mCSB_draggerContainer{position:absolute;top:0;left:0;bottom:0;right:0;height:auto}.mCSB_scrollTools a+.mCSB_draggerContainer{margin:20px 0}.mCSB_scrollTools .mCSB_draggerRail{width:2px;height:100%;margin:0 auto;-webkit-border-radius:16px;-moz-border-radius:16px;border-radius:16px}.mCSB_scrollTools .mCSB_dragger{cursor:pointer;width:100%;height:30px;z-index:1}.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{position:relative;width:4px;height:100%;margin:0 auto;-webkit-border-radius:16px;-moz-border-radius:16px;border-radius:16px;text-align:center}.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar,.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar{width:12px}.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded+.mCSB_draggerRail,.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{width:8px}.mCSB_scrollTools .mCSB_buttonDown,.mCSB_scrollTools .mCSB_buttonUp{display:block;position:absolute;height:20px;width:100%;overflow:hidden;margin:0 auto;cursor:pointer}.mCSB_scrollTools .mCSB_buttonDown{bottom:0}.mCSB_horizontal.mCSB_inside>.mCSB_container{margin-right:0;margin-bottom:30px}.mCSB_horizontal.mCSB_outside>.mCSB_container{min-height:100%}.mCSB_horizontal>.mCSB_container.mCS_no_scrollbar_x.mCS_x_hidden{margin-bottom:0}.mCSB_scrollTools.mCSB_scrollTools_horizontal{width:auto;height:16px;top:auto;right:0;bottom:0;left:0}.mCustomScrollBox+.mCSB_scrollTools+.mCSB_scrollTools.mCSB_scrollTools_horizontal,.mCustomScrollBox+.mCSB_scrollTools.mCSB_scrollTools_horizontal{bottom:-26px}.mCSB_scrollTools.mCSB_scrollTools_horizontal a+.mCSB_draggerContainer{margin:0 20px}.mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_draggerRail{width:100%;height:2px;margin:7px 0}.mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_dragger{width:30px;height:100%;left:0}.mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{width:100%;height:4px;margin:6px auto}.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar,.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar{height:12px;margin:2px auto}.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded+.mCSB_draggerRail,.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{height:8px;margin:4px 0}.mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_buttonLeft,.mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_buttonRight{display:block;position:absolute;width:20px;height:100%;overflow:hidden;margin:0 auto;cursor:pointer}.mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_buttonLeft{left:0}.mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_buttonRight{right:0}.mCSB_container_wrapper{position:absolute;height:auto;width:auto;overflow:hidden;top:0;left:0;right:0;bottom:0;margin-right:30px;margin-bottom:30px}.mCSB_container_wrapper>.mCSB_container{padding-right:30px;padding-bottom:30px}.mCSB_vertical_horizontal>.mCSB_scrollTools.mCSB_scrollTools_vertical{bottom:20px}.mCSB_vertical_horizontal>.mCSB_scrollTools.mCSB_scrollTools_horizontal{right:20px}.mCSB_container_wrapper.mCS_no_scrollbar_x.mCS_x_hidden+.mCSB_scrollTools.mCSB_scrollTools_vertical{bottom:0}.mCS-dir-rtl>.mCustomScrollBox.mCSB_vertical_horizontal.mCSB_inside>.mCSB_scrollTools.mCSB_scrollTools_horizontal,.mCSB_container_wrapper.mCS_no_scrollbar_y.mCS_y_hidden+.mCSB_scrollTools~.mCSB_scrollTools.mCSB_scrollTools_horizontal{right:0}.mCS-dir-rtl>.mCustomScrollBox.mCSB_vertical_horizontal.mCSB_inside>.mCSB_scrollTools.mCSB_scrollTools_horizontal{left:20px}.mCS-dir-rtl>.mCustomScrollBox.mCSB_vertical_horizontal.mCSB_inside>.mCSB_container_wrapper.mCS_no_scrollbar_y.mCS_y_hidden+.mCSB_scrollTools~.mCSB_scrollTools.mCSB_scrollTools_horizontal{left:0}.mCS-dir-rtl>.mCSB_inside>.mCSB_container_wrapper{margin-right:0;margin-left:30px}.mCSB_container_wrapper.mCS_no_scrollbar_y.mCS_y_hidden>.mCSB_container{padding-right:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.mCSB_container_wrapper.mCS_no_scrollbar_x.mCS_x_hidden>.mCSB_container{padding-bottom:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.mCustomScrollBox.mCSB_vertical_horizontal.mCSB_inside>.mCSB_container_wrapper.mCS_no_scrollbar_y.mCS_y_hidden{margin-right:0;margin-left:0}.mCustomScrollBox.mCSB_vertical_horizontal.mCSB_inside>.mCSB_container_wrapper.mCS_no_scrollbar_x.mCS_x_hidden{margin-bottom:0}.mCSB_scrollTools,.mCSB_scrollTools .mCSB_buttonDown,.mCSB_scrollTools .mCSB_buttonLeft,.mCSB_scrollTools .mCSB_buttonRight,.mCSB_scrollTools .mCSB_buttonUp,.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{-webkit-transition:opacity .2s ease-in-out,background-color .2s ease-in-out;-moz-transition:opacity .2s ease-in-out,background-color .2s ease-in-out;-o-transition:opacity .2s ease-in-out,background-color .2s ease-in-out;transition:opacity .2s ease-in-out,background-color .2s ease-in-out}.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerRail,.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger_bar,.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerRail,.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger_bar{-webkit-transition:width .2s ease-out .2s,height .2s ease-out .2s,margin-left .2s ease-out .2s,margin-right .2s ease-out .2s,margin-top .2s ease-out .2s,margin-bottom .2s ease-out .2s,opacity .2s ease-in-out,background-color .2s ease-in-out;-moz-transition:width .2s ease-out .2s,height .2s ease-out .2s,margin-left .2s ease-out .2s,margin-right .2s ease-out .2s,margin-top .2s ease-out .2s,margin-bottom .2s ease-out .2s,opacity .2s ease-in-out,background-color .2s ease-in-out;-o-transition:width .2s ease-out .2s,height .2s ease-out .2s,margin-left .2s ease-out .2s,margin-right .2s ease-out .2s,margin-top .2s ease-out .2s,margin-bottom .2s ease-out .2s,opacity .2s ease-in-out,background-color .2s ease-in-out;transition:width .2s ease-out .2s,height .2s ease-out .2s,margin-left .2s ease-out .2s,margin-right .2s ease-out .2s,margin-top .2s ease-out .2s,margin-bottom .2s ease-out .2s,opacity .2s ease-in-out,background-color .2s ease-in-out}.mCS-autoHide>.mCustomScrollBox>.mCSB_scrollTools,.mCS-autoHide>.mCustomScrollBox~.mCSB_scrollTools{opacity:0;filter:"alpha(opacity=0)";-ms-filter:"alpha(opacity=0)"}.mCS-autoHide:hover>.mCustomScrollBox>.mCSB_scrollTools,.mCS-autoHide:hover>.mCustomScrollBox~.mCSB_scrollTools,.mCustomScrollBox:hover>.mCSB_scrollTools,.mCustomScrollBox:hover~.mCSB_scrollTools,.mCustomScrollbar>.mCustomScrollBox>.mCSB_scrollTools.mCSB_scrollTools_onDrag,.mCustomScrollbar>.mCustomScrollBox~.mCSB_scrollTools.mCSB_scrollTools_onDrag{opacity:1;filter:"alpha(opacity=100)";-ms-filter:"alpha(opacity=100)"}.mCSB_scrollTools .mCSB_draggerRail{background-color:#000;background-color:rgba(0,0,0,.4);filter:"alpha(opacity=40)";-ms-filter:"alpha(opacity=40)"}.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.75);filter:"alpha(opacity=75)";-ms-filter:"alpha(opacity=75)"}.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.85);filter:"alpha(opacity=85)";-ms-filter:"alpha(opacity=85)"}.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.9);filter:"alpha(opacity=90)";-ms-filter:"alpha(opacity=90)"}.mCSB_scrollTools .mCSB_buttonDown,.mCSB_scrollTools .mCSB_buttonLeft,.mCSB_scrollTools .mCSB_buttonRight,.mCSB_scrollTools .mCSB_buttonUp{background-image:url(mCSB_buttons.png);background-repeat:no-repeat;opacity:.4;filter:"alpha(opacity=40)";-ms-filter:"alpha(opacity=40)"}.mCSB_scrollTools .mCSB_buttonUp{background-position:0 0}.mCSB_scrollTools .mCSB_buttonDown{background-position:0 -20px}.mCSB_scrollTools .mCSB_buttonLeft{background-position:0 -40px}.mCSB_scrollTools .mCSB_buttonRight{background-position:0 -56px}.mCSB_scrollTools .mCSB_buttonDown:hover,.mCSB_scrollTools .mCSB_buttonLeft:hover,.mCSB_scrollTools .mCSB_buttonRight:hover,.mCSB_scrollTools .mCSB_buttonUp:hover{opacity:.75;filter:"alpha(opacity=75)";-ms-filter:"alpha(opacity=75)"}.mCSB_scrollTools .mCSB_buttonDown:active,.mCSB_scrollTools .mCSB_buttonLeft:active,.mCSB_scrollTools .mCSB_buttonRight:active,.mCSB_scrollTools .mCSB_buttonUp:active{opacity:.9;filter:"alpha(opacity=90)";-ms-filter:"alpha(opacity=90)"}.mCS-3d-dark.mCSB_scrollTools,.mCS-3d-thick-dark.mCSB_scrollTools,.mCS-3d-thick.mCSB_scrollTools,.mCS-3d.mCSB_scrollTools{opacity:1;filter:"alpha(opacity=30)";-ms-filter:"alpha(opacity=30)"}.mCS-dark.mCSB_scrollTools .mCSB_draggerRail{background-color:#000;background-color:rgba(0,0,0,.15)}.mCS-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.75)}.mCS-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:rgba(0,0,0,.85)}.mCS-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:rgba(0,0,0,.9)}.mCS-dark.mCSB_scrollTools .mCSB_buttonUp{background-position:-80px 0}.mCS-dark.mCSB_scrollTools .mCSB_buttonDown{background-position:-80px -20px}.mCS-dark.mCSB_scrollTools .mCSB_buttonLeft{background-position:-80px -40px}.mCS-dark.mCSB_scrollTools .mCSB_buttonRight{background-position:-80px -56px}.mCS-dark-2.mCSB_scrollTools .mCSB_draggerRail,.mCS-light-2.mCSB_scrollTools .mCSB_draggerRail{width:4px;background-color:#fff;background-color:rgba(255,255,255,.1);-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px}.mCS-dark-2.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-light-2.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{width:4px;background-color:#fff;background-color:rgba(255,255,255,.75);-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px}.mCS-dark-2.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-dark-2.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-light-2.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-light-2.mCSB_scrollTools_horizontal .mCSB_draggerRail{width:100%;height:4px;margin:6px auto}.mCS-light-2.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.85)}.mCS-light-2.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-light-2.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.9)}.mCS-light-2.mCSB_scrollTools .mCSB_buttonUp{background-position:-32px 0}.mCS-light-2.mCSB_scrollTools .mCSB_buttonDown{background-position:-32px -20px}.mCS-light-2.mCSB_scrollTools .mCSB_buttonLeft{background-position:-40px -40px}.mCS-light-2.mCSB_scrollTools .mCSB_buttonRight{background-position:-40px -56px}.mCS-dark-2.mCSB_scrollTools .mCSB_draggerRail{background-color:#000;background-color:rgba(0,0,0,.1);-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px}.mCS-dark-2.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.75);-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px}.mCS-dark-2.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.85)}.mCS-dark-2.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-dark-2.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.9)}.mCS-dark-2.mCSB_scrollTools .mCSB_buttonUp{background-position:-112px 0}.mCS-dark-2.mCSB_scrollTools .mCSB_buttonDown{background-position:-112px -20px}.mCS-dark-2.mCSB_scrollTools .mCSB_buttonLeft{background-position:-120px -40px}.mCS-dark-2.mCSB_scrollTools .mCSB_buttonRight{background-position:-120px -56px}.mCS-dark-thick.mCSB_scrollTools .mCSB_draggerRail,.mCS-light-thick.mCSB_scrollTools .mCSB_draggerRail{width:4px;background-color:#fff;background-color:rgba(255,255,255,.1);-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px}.mCS-dark-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-light-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{width:6px;background-color:#fff;background-color:rgba(255,255,255,.75);-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px}.mCS-dark-thick.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-light-thick.mCSB_scrollTools_horizontal .mCSB_draggerRail{width:100%;height:4px;margin:6px 0}.mCS-dark-thick.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-light-thick.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{width:100%;height:6px;margin:5px auto}.mCS-light-thick.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.85)}.mCS-light-thick.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-light-thick.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.9)}.mCS-light-thick.mCSB_scrollTools .mCSB_buttonUp{background-position:-16px 0}.mCS-light-thick.mCSB_scrollTools .mCSB_buttonDown{background-position:-16px -20px}.mCS-light-thick.mCSB_scrollTools .mCSB_buttonLeft{background-position:-20px -40px}.mCS-light-thick.mCSB_scrollTools .mCSB_buttonRight{background-position:-20px -56px}.mCS-dark-thick.mCSB_scrollTools .mCSB_draggerRail{background-color:#000;background-color:rgba(0,0,0,.1);-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px}.mCS-dark-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.75);-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px}.mCS-dark-thick.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.85)}.mCS-dark-thick.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-dark-thick.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.9)}.mCS-dark-thick.mCSB_scrollTools .mCSB_buttonUp{background-position:-96px 0}.mCS-dark-thick.mCSB_scrollTools .mCSB_buttonDown{background-position:-96px -20px}.mCS-dark-thick.mCSB_scrollTools .mCSB_buttonLeft{background-position:-100px -40px}.mCS-dark-thick.mCSB_scrollTools .mCSB_buttonRight{background-position:-100px -56px}.mCS-light-thin.mCSB_scrollTools .mCSB_draggerRail{background-color:#fff;background-color:rgba(255,255,255,.1)}.mCS-dark-thin.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-light-thin.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{width:2px}.mCS-dark-thin.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-light-thin.mCSB_scrollTools_horizontal .mCSB_draggerRail{width:100%}.mCS-dark-thin.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-light-thin.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{width:100%;height:2px;margin:7px auto}.mCS-dark-thin.mCSB_scrollTools .mCSB_draggerRail{background-color:#000;background-color:rgba(0,0,0,.15)}.mCS-dark-thin.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.75)}.mCS-dark-thin.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.85)}.mCS-dark-thin.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-dark-thin.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.9)}.mCS-dark-thin.mCSB_scrollTools .mCSB_buttonUp{background-position:-80px 0}.mCS-dark-thin.mCSB_scrollTools .mCSB_buttonDown{background-position:-80px -20px}.mCS-dark-thin.mCSB_scrollTools .mCSB_buttonLeft{background-position:-80px -40px}.mCS-dark-thin.mCSB_scrollTools .mCSB_buttonRight{background-position:-80px -56px}.mCS-rounded.mCSB_scrollTools .mCSB_draggerRail{background-color:#fff;background-color:rgba(255,255,255,.15)}.mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger,.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger,.mCS-rounded-dots.mCSB_scrollTools .mCSB_dragger,.mCS-rounded.mCSB_scrollTools .mCSB_dragger{height:14px}.mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-rounded-dots.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-rounded.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{width:14px;margin:0 1px}.mCS-rounded-dark.mCSB_scrollTools_horizontal .mCSB_dragger,.mCS-rounded-dots-dark.mCSB_scrollTools_horizontal .mCSB_dragger,.mCS-rounded-dots.mCSB_scrollTools_horizontal .mCSB_dragger,.mCS-rounded.mCSB_scrollTools_horizontal .mCSB_dragger{width:14px}.mCS-rounded-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-rounded-dots-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-rounded-dots.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-rounded.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{height:14px;margin:1px 0}.mCS-rounded-dark.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar,.mCS-rounded-dark.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar,.mCS-rounded.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar,.mCS-rounded.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar{width:16px;height:16px;margin:-1px 0}.mCS-rounded-dark.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded+.mCSB_draggerRail,.mCS-rounded-dark.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail,.mCS-rounded.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded+.mCSB_draggerRail,.mCS-rounded.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{width:4px}.mCS-rounded-dark.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar,.mCS-rounded-dark.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar,.mCS-rounded.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar,.mCS-rounded.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar{height:16px;width:16px;margin:0 -1px}.mCS-rounded-dark.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded+.mCSB_draggerRail,.mCS-rounded-dark.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail,.mCS-rounded.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded+.mCSB_draggerRail,.mCS-rounded.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{height:4px;margin:6px 0}.mCS-rounded.mCSB_scrollTools .mCSB_buttonUp{background-position:0 -72px}.mCS-rounded.mCSB_scrollTools .mCSB_buttonDown{background-position:0 -92px}.mCS-rounded.mCSB_scrollTools .mCSB_buttonLeft{background-position:0 -112px}.mCS-rounded.mCSB_scrollTools .mCSB_buttonRight{background-position:0 -128px}.mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.75)}.mCS-rounded-dark.mCSB_scrollTools .mCSB_draggerRail{background-color:#000;background-color:rgba(0,0,0,.15)}.mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar,.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.85)}.mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.9)}.mCS-rounded-dark.mCSB_scrollTools .mCSB_buttonUp{background-position:-80px -72px}.mCS-rounded-dark.mCSB_scrollTools .mCSB_buttonDown{background-position:-80px -92px}.mCS-rounded-dark.mCSB_scrollTools .mCSB_buttonLeft{background-position:-80px -112px}.mCS-rounded-dark.mCSB_scrollTools .mCSB_buttonRight{background-position:-80px -128px}.mCS-rounded-dots-dark.mCSB_scrollTools_vertical .mCSB_draggerRail,.mCS-rounded-dots.mCSB_scrollTools_vertical .mCSB_draggerRail{width:4px}.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_draggerRail,.mCS-rounded-dots-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-rounded-dots.mCSB_scrollTools .mCSB_draggerRail,.mCS-rounded-dots.mCSB_scrollTools_horizontal .mCSB_draggerRail{background-color:transparent;background-position:center}.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_draggerRail,.mCS-rounded-dots.mCSB_scrollTools .mCSB_draggerRail{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAANElEQVQYV2NkIAAYiVbw//9/Y6DiM1ANJoyMjGdBbLgJQAX/kU0DKgDLkaQAvxW4HEvQFwCRcxIJK1XznAAAAABJRU5ErkJggg==);background-repeat:repeat-y;opacity:.3;filter:"alpha(opacity=30)";-ms-filter:"alpha(opacity=30)"}.mCS-rounded-dots-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-rounded-dots.mCSB_scrollTools_horizontal .mCSB_draggerRail{height:4px;margin:6px 0;background-repeat:repeat-x}.mCS-rounded-dots.mCSB_scrollTools .mCSB_buttonUp{background-position:-16px -72px}.mCS-rounded-dots.mCSB_scrollTools .mCSB_buttonDown{background-position:-16px -92px}.mCS-rounded-dots.mCSB_scrollTools .mCSB_buttonLeft{background-position:-20px -112px}.mCS-rounded-dots.mCSB_scrollTools .mCSB_buttonRight{background-position:-20px -128px}.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_draggerRail{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAALElEQVQYV2NkIAAYSVFgDFR8BqrBBEifBbGRTfiPZhpYjiQFBK3A6l6CvgAAE9kGCd1mvgEAAAAASUVORK5CYII=)}.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_buttonUp{background-position:-96px -72px}.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_buttonDown{background-position:-96px -92px}.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_buttonLeft{background-position:-100px -112px}.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_buttonRight{background-position:-100px -128px}.mCS-3d-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-3d-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-3d.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-repeat:repeat-y;background-image:-moz-linear-gradient(left,rgba(255,255,255,.5)0,rgba(255,255,255,0)100%);background-image:-webkit-gradient(linear,left top,right top,color-stop(0,rgba(255,255,255,.5)),color-stop(100%,rgba(255,255,255,0)));background-image:-webkit-linear-gradient(left,rgba(255,255,255,.5)0,rgba(255,255,255,0)100%);background-image:-o-linear-gradient(left,rgba(255,255,255,.5)0,rgba(255,255,255,0)100%);background-image:-ms-linear-gradient(left,rgba(255,255,255,.5)0,rgba(255,255,255,0)100%);background-image:linear-gradient(to right,rgba(255,255,255,.5)0,rgba(255,255,255,0)100%)}.mCS-3d-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-3d-thick-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-3d-thick.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-3d.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{background-repeat:repeat-x;background-image:-moz-linear-gradient(top,rgba(255,255,255,.5)0,rgba(255,255,255,0)100%);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,rgba(255,255,255,.5)),color-stop(100%,rgba(255,255,255,0)));background-image:-webkit-linear-gradient(top,rgba(255,255,255,.5)0,rgba(255,255,255,0)100%);background-image:-o-linear-gradient(top,rgba(255,255,255,.5)0,rgba(255,255,255,0)100%);background-image:-ms-linear-gradient(top,rgba(255,255,255,.5)0,rgba(255,255,255,0)100%);background-image:linear-gradient(to bottom,rgba(255,255,255,.5)0,rgba(255,255,255,0)100%)}.mCS-3d-dark.mCSB_scrollTools_vertical .mCSB_dragger,.mCS-3d.mCSB_scrollTools_vertical .mCSB_dragger{height:70px}.mCS-3d-dark.mCSB_scrollTools_horizontal .mCSB_dragger,.mCS-3d.mCSB_scrollTools_horizontal .mCSB_dragger{width:70px}.mCS-3d-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-3d-dark.mCSB_scrollTools .mCSB_draggerRail,.mCS-3d.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-3d.mCSB_scrollTools .mCSB_draggerRail{-webkit-border-radius:16px;-moz-border-radius:16px;border-radius:16px}.mCS-3d-dark.mCSB_scrollTools .mCSB_draggerRail,.mCS-3d.mCSB_scrollTools .mCSB_draggerRail{width:8px;background-color:#000;background-color:rgba(0,0,0,.2);box-shadow:inset 1px 0 1px rgba(0,0,0,.5),inset -1px 0 1px rgba(255,255,255,.2)}.mCS-3d-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-3d-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-3d-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,.mCS-3d-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar,.mCS-3d.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-3d.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-3d.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,.mCS-3d.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#555}.mCS-3d-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-3d.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{width:8px}.mCS-3d-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-3d.mCSB_scrollTools_horizontal .mCSB_draggerRail{width:100%;height:8px;margin:4px 0;box-shadow:inset 0 1px 1px rgba(0,0,0,.5),inset 0 -1px 1px rgba(255,255,255,.2)}.mCS-3d-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-3d.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{width:100%;height:8px;margin:4px auto}.mCS-3d.mCSB_scrollTools .mCSB_buttonUp{background-position:-32px -72px}.mCS-3d.mCSB_scrollTools .mCSB_buttonDown{background-position:-32px -92px}.mCS-3d.mCSB_scrollTools .mCSB_buttonLeft{background-position:-40px -112px}.mCS-3d.mCSB_scrollTools .mCSB_buttonRight{background-position:-40px -128px}.mCS-3d-dark.mCSB_scrollTools .mCSB_draggerRail{background-color:#000;background-color:rgba(0,0,0,.1);box-shadow:inset 1px 0 1px rgba(0,0,0,.1)}.mCS-3d-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail{box-shadow:inset 0 1px 1px rgba(0,0,0,.1)}.mCS-3d-dark.mCSB_scrollTools .mCSB_buttonUp{background-position:-112px -72px}.mCS-3d-dark.mCSB_scrollTools .mCSB_buttonDown{background-position:-112px -92px}.mCS-3d-dark.mCSB_scrollTools .mCSB_buttonLeft{background-position:-120px -112px}.mCS-3d-dark.mCSB_scrollTools .mCSB_buttonRight{background-position:-120px -128px}.mCS-3d-thick-dark.mCSB_scrollTools,.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_draggerContainer,.mCS-3d-thick.mCSB_scrollTools,.mCS-3d-thick.mCSB_scrollTools .mCSB_draggerContainer{-webkit-border-radius:7px;-moz-border-radius:7px;border-radius:7px}.mCSB_inside+.mCS-3d-thick-dark.mCSB_scrollTools_vertical,.mCSB_inside+.mCS-3d-thick.mCSB_scrollTools_vertical{right:1px}.mCS-3d-thick-dark.mCSB_scrollTools_vertical,.mCS-3d-thick.mCSB_scrollTools_vertical{box-shadow:inset 1px 0 1px rgba(0,0,0,.1),inset 0 0 14px rgba(0,0,0,.5)}.mCS-3d-thick-dark.mCSB_scrollTools_horizontal,.mCS-3d-thick.mCSB_scrollTools_horizontal{bottom:1px;box-shadow:inset 0 1px 1px rgba(0,0,0,.1),inset 0 0 14px rgba(0,0,0,.5)}.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-3d-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;box-shadow:inset 1px 0 0 rgba(255,255,255,.4);width:12px;margin:2px;position:absolute;height:auto;top:0;bottom:0;left:0;right:0}.mCS-3d-thick-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-3d-thick.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{box-shadow:inset 0 1px 0 rgba(255,255,255,.4);height:12px;width:auto}.mCS-3d-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-3d-thick.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-3d-thick.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,.mCS-3d-thick.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#555}.mCS-3d-thick.mCSB_scrollTools .mCSB_draggerContainer{background-color:#000;background-color:rgba(0,0,0,.05);box-shadow:inset 1px 1px 16px rgba(0,0,0,.1)}.mCS-3d-thick.mCSB_scrollTools .mCSB_draggerRail{background-color:transparent}.mCS-3d-thick.mCSB_scrollTools .mCSB_buttonUp{background-position:-32px -72px}.mCS-3d-thick.mCSB_scrollTools .mCSB_buttonDown{background-position:-32px -92px}.mCS-3d-thick.mCSB_scrollTools .mCSB_buttonLeft{background-position:-40px -112px}.mCS-3d-thick.mCSB_scrollTools .mCSB_buttonRight{background-position:-40px -128px}.mCS-3d-thick-dark.mCSB_scrollTools{box-shadow:inset 0 0 14px rgba(0,0,0,.2)}.mCS-3d-thick-dark.mCSB_scrollTools_horizontal{box-shadow:inset 0 1px 1px rgba(0,0,0,.1),inset 0 0 14px rgba(0,0,0,.2)}.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{box-shadow:inset 1px 0 0 rgba(255,255,255,.4),inset -1px 0 0 rgba(0,0,0,.2)}.mCS-3d-thick-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{box-shadow:inset 0 1px 0 rgba(255,255,255,.4),inset 0 -1px 0 rgba(0,0,0,.2)}.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#777}.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_draggerContainer{background-color:#fff;background-color:rgba(0,0,0,.05);box-shadow:inset 1px 1px 16px rgba(0,0,0,.1)}.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_draggerRail,.mCS-minimal-dark.mCSB_scrollTools .mCSB_draggerRail,.mCS-minimal.mCSB_scrollTools .mCSB_draggerRail{background-color:transparent}.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_buttonUp{background-position:-112px -72px}.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_buttonDown{background-position:-112px -92px}.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_buttonLeft{background-position:-120px -112px}.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_buttonRight{background-position:-120px -128px}.mCSB_outside+.mCS-minimal-dark.mCSB_scrollTools_vertical,.mCSB_outside+.mCS-minimal.mCSB_scrollTools_vertical{right:0;margin:12px 0}.mCustomScrollBox.mCS-minimal+.mCSB_scrollTools+.mCSB_scrollTools.mCSB_scrollTools_horizontal,.mCustomScrollBox.mCS-minimal+.mCSB_scrollTools.mCSB_scrollTools_horizontal,.mCustomScrollBox.mCS-minimal-dark+.mCSB_scrollTools+.mCSB_scrollTools.mCSB_scrollTools_horizontal,.mCustomScrollBox.mCS-minimal-dark+.mCSB_scrollTools.mCSB_scrollTools_horizontal{bottom:0;margin:0 12px}.mCS-dir-rtl>.mCSB_outside+.mCS-minimal-dark.mCSB_scrollTools_vertical,.mCS-dir-rtl>.mCSB_outside+.mCS-minimal.mCSB_scrollTools_vertical{left:0;right:auto}.mCS-minimal-dark.mCSB_scrollTools_vertical .mCSB_dragger,.mCS-minimal.mCSB_scrollTools_vertical .mCSB_dragger{height:50px}.mCS-minimal-dark.mCSB_scrollTools_horizontal .mCSB_dragger,.mCS-minimal.mCSB_scrollTools_horizontal .mCSB_dragger{width:50px}.mCS-minimal.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.2);filter:"alpha(opacity=20)";-ms-filter:"alpha(opacity=20)"}.mCS-minimal.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-minimal.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.5);filter:"alpha(opacity=50)";-ms-filter:"alpha(opacity=50)"}.mCS-minimal-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.2);filter:"alpha(opacity=20)";-ms-filter:"alpha(opacity=20)"}.mCS-minimal-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-minimal-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.5);filter:"alpha(opacity=50)";-ms-filter:"alpha(opacity=50)"}.mCS-dark-3.mCSB_scrollTools .mCSB_draggerRail,.mCS-light-3.mCSB_scrollTools .mCSB_draggerRail{width:6px;background-color:#000;background-color:rgba(0,0,0,.2)}.mCS-dark-3.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-light-3.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{width:6px}.mCS-dark-3.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-dark-3.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-light-3.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-light-3.mCSB_scrollTools_horizontal .mCSB_draggerRail{width:100%;height:6px;margin:5px 0}.mCS-dark-3.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded+.mCSB_draggerRail,.mCS-dark-3.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail,.mCS-light-3.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded+.mCSB_draggerRail,.mCS-light-3.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{width:12px}.mCS-dark-3.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded+.mCSB_draggerRail,.mCS-dark-3.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail,.mCS-light-3.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded+.mCSB_draggerRail,.mCS-light-3.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{height:12px;margin:2px 0}.mCS-light-3.mCSB_scrollTools .mCSB_buttonUp{background-position:-32px -72px}.mCS-light-3.mCSB_scrollTools .mCSB_buttonDown{background-position:-32px -92px}.mCS-light-3.mCSB_scrollTools .mCSB_buttonLeft{background-position:-40px -112px}.mCS-light-3.mCSB_scrollTools .mCSB_buttonRight{background-position:-40px -128px}.mCS-dark-3.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.75)}.mCS-dark-3.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.85)}.mCS-dark-3.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-dark-3.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.9)}.mCS-dark-3.mCSB_scrollTools .mCSB_draggerRail{background-color:#000;background-color:rgba(0,0,0,.1)}.mCS-dark-3.mCSB_scrollTools .mCSB_buttonUp{background-position:-112px -72px}.mCS-dark-3.mCSB_scrollTools .mCSB_buttonDown{background-position:-112px -92px}.mCS-dark-3.mCSB_scrollTools .mCSB_buttonLeft{background-position:-120px -112px}.mCS-dark-3.mCSB_scrollTools .mCSB_buttonRight{background-position:-120px -128px}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_draggerRail,.mCS-inset-2.mCSB_scrollTools .mCSB_draggerRail,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_draggerRail,.mCS-inset-3.mCSB_scrollTools .mCSB_draggerRail,.mCS-inset-dark.mCSB_scrollTools .mCSB_draggerRail,.mCS-inset.mCSB_scrollTools .mCSB_draggerRail{width:12px;background-color:#000;background-color:rgba(0,0,0,.2)}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-inset-2.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-inset-3.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-inset-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-inset.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{width:6px;margin:3px 5px;position:absolute;height:auto;top:0;bottom:0;left:0;right:0}.mCS-inset-2-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-inset-2.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-inset-3-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-inset-3.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-inset-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-inset.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{height:6px;margin:5px 3px;position:absolute;width:auto;top:0;bottom:0;left:0;right:0}.mCS-inset-2-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-inset-2.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-inset-3-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-inset-3.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-inset-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-inset.mCSB_scrollTools_horizontal .mCSB_draggerRail{width:100%;height:12px;margin:2px 0}.mCS-inset-2.mCSB_scrollTools .mCSB_buttonUp,.mCS-inset-3.mCSB_scrollTools .mCSB_buttonUp,.mCS-inset.mCSB_scrollTools .mCSB_buttonUp{background-position:-32px -72px}.mCS-inset-2.mCSB_scrollTools .mCSB_buttonDown,.mCS-inset-3.mCSB_scrollTools .mCSB_buttonDown,.mCS-inset.mCSB_scrollTools .mCSB_buttonDown{background-position:-32px -92px}.mCS-inset-2.mCSB_scrollTools .mCSB_buttonLeft,.mCS-inset-3.mCSB_scrollTools .mCSB_buttonLeft,.mCS-inset.mCSB_scrollTools .mCSB_buttonLeft{background-position:-40px -112px}.mCS-inset-2.mCSB_scrollTools .mCSB_buttonRight,.mCS-inset-3.mCSB_scrollTools .mCSB_buttonRight,.mCS-inset.mCSB_scrollTools .mCSB_buttonRight{background-position:-40px -128px}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-inset-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.75)}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar,.mCS-inset-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.85)}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-inset-2-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,.mCS-inset-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-inset-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.9)}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_draggerRail,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_draggerRail,.mCS-inset-dark.mCSB_scrollTools .mCSB_draggerRail{background-color:#000;background-color:rgba(0,0,0,.1)}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_buttonUp,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_buttonUp,.mCS-inset-dark.mCSB_scrollTools .mCSB_buttonUp{background-position:-112px -72px}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_buttonDown,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_buttonDown,.mCS-inset-dark.mCSB_scrollTools .mCSB_buttonDown{background-position:-112px -92px}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_buttonLeft,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_buttonLeft,.mCS-inset-dark.mCSB_scrollTools .mCSB_buttonLeft{background-position:-120px -112px}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_buttonRight,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_buttonRight,.mCS-inset-dark.mCSB_scrollTools .mCSB_buttonRight{background-position:-120px -128px}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_draggerRail,.mCS-inset-2.mCSB_scrollTools .mCSB_draggerRail{background-color:transparent;border-width:1px;border-style:solid;border-color:#fff;border-color:rgba(255,255,255,.2);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}hr,input[type=search]{-moz-box-sizing:content-box;box-sizing:content-box}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_draggerRail{border-color:#000;border-color:rgba(0,0,0,.2)}.mCS-inset-3.mCSB_scrollTools .mCSB_draggerRail{background-color:#fff;background-color:rgba(255,255,255,.6)}.mCS-inset-3-dark.mCSB_scrollTools .mCSB_draggerRail{background-color:#000;background-color:rgba(0,0,0,.6)}.mCS-inset-3.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.75)}.mCS-inset-3.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.85)}.mCS-inset-3.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-inset-3.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.9)}.mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.75)}.mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.85)}.mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.9)}.dropdown-menu{border:1px solid #ddd;background-color:#fff}.dropdown-menu li{border-top:1px solid #ddd;padding:2px 5px}.dropdown-menu li:first-child{border-top:none}.dropdown-menu .active,.dropdown-menu li:hover{background-color:#6eb7db}.textcomplete-wrapper{width:100%}.dropdown-menu{list-style:none;padding:0;margin:0}.dropdown-menu a:hover{cursor:pointer}.markItUp .markItUpButton1 a{background-image:url(../images/markitup/h1.png)}.markItUp .markItUpButton2 a{background-image:url(../images/markitup/h2.png)}.markItUp .markItUpButton3 a{background-image:url(../images/markitup/h3.png)}.markItUp .markItUpButton4 a{background-image:url(../images/markitup/bold.png)}.markItUp .markItUpButton5 a{background-image:url(../images/markitup/italic.png)}.markItUp .markItUpButton6 a{background-image:url(../images/markitup/stroke.png)}.markdown .markItUpButton7 a{background-image:url(../images/markitup/list-bullet.png)}.markdown .markItUpButton8 a{background-image:url(../images/markitup/list-numeric.png)}.markdown .markItUpButton9 a{background-image:url(../images/markitup/picture.png)}.markdown .markItUpButton10 a{background-image:url(../images/markitup/link.png)}.markdown .markItUpButton11 a{background-image:url(../images/markitup/quotes.png)}.markdown .markItUpButton12 a{background-image:url(../images/markitup/code.png)}.markdown .preview-icon a{background-image:url(../images/markitup/preview.png)}.markdown .help a{background-image:url(../images/markitup/help.png)}.markItUp *{margin:0;padding:0;outline:0}.markItUp a:link,.markItUp a:visited{color:#000;text-decoration:none}.markItUpContainer{padding:5px 5px 2px;font:11px Verdana,Arial,Helvetica,sans-serif}.markItUpEditor{font:12px 'Courier New',Courier,monospace;padding:5px;height:320px;clear:both;line-height:18px;overflow:auto}.markItUpPreviewFrame{overflow:auto;background-color:#FFF;width:99.9%;height:300px;margin:5px 0}.markItUpFooter{width:100%}.markItUpResizeHandle{overflow:hidden;width:22px;height:5px;margin-left:auto;margin-right:auto;background-image:url(../images/markitup/handle.png);cursor:n-resize}.markItUp .markItUpHeader ul{margin:0}.markItUpHeader ul li{list-style:none;float:left;position:relative;margin:3px}.markItUpHeader ul li:hover>ul{display:block}.markItUpHeader ul .markItUpDropMenu{background:url(../images/markitup/menu.png)115% 50% no-repeat;margin-right:5px}.markItUpHeader ul .markItUpDropMenu li{margin-right:0}.markItUpHeader ul ul{display:none;position:absolute;top:18px;left:0;background:#FFF;border:1px solid #000}.markItUpHeader ul ul li{float:none;border-bottom:1px solid #000}.markItUpHeader ul ul .markItUpDropMenu{background:url(../images/markitup/submenu.png)100% 50% no-repeat #FFF}.markItUpHeader ul .markItUpSeparator{margin:2px 10px 0;width:1px;height:16px;overflow:hidden;background-color:#CCC}.markItUpHeader ul ul .markItUpSeparator{width:auto;height:1px;margin:0}.markItUpHeader ul ul ul{position:absolute;top:-1px;left:150px}.markItUpHeader ul ul ul li{float:none}.markItUpHeader ul a{display:block;width:16px;height:16px;text-indent:-10000px;background-repeat:no-repeat;padding:3px;margin:0}.markItUpHeader ul ul a{display:block;text-indent:0;width:120px;padding:5px 5px 5px 25px;background-position:2px 50%}legend,td,th{padding:0}.markItUpHeader ul ul a:hover{color:#FFF;background-color:#000}/*! normalize.css v3.0.1 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background:0 0}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,optgroup,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0}pre,textarea{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;-webkit-box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0}table{border-spacing:0}/*! * Pikaday * Copyright © 2014 David Bushell | BSD & MIT license | http://dbushell.com/ - */.pika-single{display:block;position:relative;width:240px;padding:8px;color:#333;background:#fff;border:1px solid #ccc;border-bottom-color:#bbb;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}.pika-single.is-hidden{display:none}.pika-single.is-bound{position:absolute;box-shadow:0 5px 15px -5px rgba(0,0,0,.5)}.pika-title{position:relative;text-align:center}.pika-label{display:inline-block;position:relative;z-index:9999;margin:0;padding:5px 3px;font-size:14px;line-height:20px;font-weight:700;background-color:#fff}.pika-title select{cursor:pointer;position:absolute;z-index:9998;margin:0;left:0;top:5px;filter:alpha(opacity=0);opacity:0}.invitation-main,.login-main{position:fixed;z-index:999;top:0}.pika-next,.pika-prev{display:block;cursor:pointer;position:relative;outline:0;border:0;padding:0;width:20px;height:30px;text-indent:20px;white-space:nowrap;background-color:transparent;background-position:center center;background-repeat:no-repeat;background-size:75% 75%;opacity:.5}.pika-next:hover,.pika-prev:hover{opacity:1}.is-rtl .pika-next,.pika-prev{float:left;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAUklEQVR42u3VMQoAIBADQf8Pgj+OD9hG2CtONJB2ymQkKe0HbwAP0xucDiQWARITIDEBEnMgMQ8S8+AqBIl6kKgHiXqQqAeJepBo/z38J/U0uAHlaBkBl9I4GwAAAABJRU5ErkJggg==)}.is-rtl .pika-prev,.pika-next{float:right;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAU0lEQVR42u3VOwoAMAgE0dwfAnNjU26bYkBCFGwfiL9VVWoO+BJ4Gf3gtsEKKoFBNTCoCAYVwaAiGNQGMUHMkjGbgjk2mIONuXo0nC8XnCf1JXgArVIZAQh5TKYAAAAASUVORK5CYII=)}.pika-next.is-disabled,.pika-prev.is-disabled{cursor:default;opacity:.2}.pika-select{display:inline-block}.pika-button,article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}.pika-table{width:100%;border:0}.pika-table td,.pika-table th{width:14.285714285714286%;padding:0}.pika-table th{color:#999;font-size:12px;line-height:25px;font-weight:700;text-align:center}.pika-button{cursor:pointer;outline:0;border:0;margin:0;width:100%;padding:5px;color:#666;font-size:12px;line-height:15px;text-align:right;background:#f5f5f5}.is-today .pika-button{color:#3af;font-weight:700}.is-selected .pika-button{color:#fff;font-weight:700;background:#3af;box-shadow:inset 0 1px 3px #178fe5;border-radius:3px}.is-disabled .pika-button{pointer-events:none;cursor:default;color:#999;opacity:.3}.pika-button:hover{color:#fff!important;background:#ff8000!important;box-shadow:none!important;border-radius:3px!important}.master,body{background:#fff}*{box-sizing:border-box}a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{border:0;font:inherit;font-size:100%;margin:0;padding:0;vertical-align:baseline}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:''}body{font-family:opensans-regular,Arial,Helvetica,sans-serif;line-height:1.3rem;color:#444;width:100%}h1,h1 span{line-height:3.4rem}.icon{font-family:taiga}html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;width:100%}body .master.ng-animate{-webkit-transition:0;transition:0}body .menu,body.open-projects-nav .projects-nav{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);-webkit-transition:-webkit-transform 1s ease;transition:transform 1s ease}body.open-projects-nav .menu,body.open-projects-nav .projects-nav-overlay{-webkit-transform:translate3d(300px,0,0);transform:translate3d(300px,0,0)}body.open-projects-nav .master{-webkit-transform:translate3d(300px,0,0);transform:translate3d(300px,0,0);-webkit-transition:-webkit-transform 1s ease;transition:transform 1s ease}body.open-projects-nav .master.ng-animate{-webkit-transition:0;transition:0}body.open-projects-nav .menu{-webkit-transition:-webkit-transform 1s ease;transition:transform 1s ease}body.open-projects-nav .projects-nav-overlay{opacity:.9;-webkit-transition:all 1s ease;transition:all 1s ease}body.open-projects-nav.closed-projects-nav .projects-nav{-webkit-transform:translate3d(-300px,0,0);transform:translate3d(-300px,0,0);-webkit-transition:-webkit-transform 1s ease;transition:transform 1s ease}body.open-projects-nav.closed-projects-nav .master,body.open-projects-nav.closed-projects-nav .menu,body.open-projects-nav.closed-projects-nav .projects-nav-overlay{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}body.open-projects-nav.closed-projects-nav .projects-nav-overlay{opacity:0;-webkit-transition:all 1s ease;transition:all 1s ease}body.loading-project .projects-nav-overlay,body.loading-project .projects-nav-overlay div{opacity:1;-webkit-transition:opacity 1s ease;transition:opacity 1s ease}.loader-active{overflow:hidden}.master{height:100%;position:relative}.wrapper{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;min-height:100vh;padding-left:90px}.menu-secondary{background:#f5f5f5;flex:0 0 auto;min-width:0;padding:1rem;width:320px}.menu-secondary.filters-bar{-webkit-box-flex:0;flex:0 0 auto;padding:0;-webkit-transition:all .2s linear;transition:all .2s linear;width:0}.menu-secondary.filters-bar.active{padding:2em 1em;-webkit-transition:all .2s linear;transition:all .2s linear;width:260px}.menu-secondary.filters-bar.active .filters-inner{opacity:1;-webkit-transition:all .4s ease-in;transition:all .4s ease-in}.menu-secondary .search-in{margin-top:.5rem}.menu-tertiary{background-color:#879b89;flex:0 0 auto;padding:2em 1em;width:255px}.empty,textarea{min-height:10rem}.extrabar{background:#f5f5f5}.main{-webkit-box-flex:4;-webkit-flex:4;-ms-flex:4;flex:4;min-width:600px;padding:1rem 2rem}.hidden{display:none!important}.header-with-actions{-webkit-align-content:stretch;-ms-flex-line-pack:stretch;align-content:stretch;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:1rem}.error-main,.invitation-main,.login-main{justify-content:center;-webkit-justify-content:center}.error-main,.invitation-main,.loader .container,.login-main,.open.lightbox{-webkit-box-pack:center}.header-with-actions .action-buttons{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0}.header-with-actions .button{color:#fff;float:right;margin-left:10px}.header-with-actions .button:hover{color:#fff}.header-with-actions h1{margin-bottom:0}h1,h2{margin-bottom:1rem}@-webkit-keyframes loading{0%{-webkit-filter:blur(5px);filter:blur(5px);opacity:0}100%{-webkit-filter:blur(0);filter:blur(0);opacity:1}}@keyframes loading{0%{-webkit-filter:blur(5px);filter:blur(5px);opacity:0}100%{-webkit-filter:blur(0);filter:blur(0);opacity:1}}@-webkit-keyframes rotate{50%{-webkit-filter:invert(1);filter:invert(1);-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes rotate{50%{-webkit-filter:invert(1);filter:invert(1);-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes formSlide{0%{-webkit-filter:blur(5px);filter:blur(5px);opacity:0;-webkit-transform:translateY(10rem);transform:translateY(10rem)}50%{-webkit-filter:blur(0);filter:blur(0)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes formSlide{0%{-webkit-filter:blur(5px);filter:blur(5px);opacity:0;-webkit-transform:translateY(10rem);transform:translateY(10rem)}50%{-webkit-filter:blur(0);filter:blur(0)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes loadBar{0%,20%{-webkit-box-flex:1;-webkit-flex:1;flex:1}10%{-webkit-box-flex:10;-webkit-flex:10;flex:10}}@keyframes loadBar{0%,20%{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}10%{-webkit-box-flex:10;-webkit-flex:10;-ms-flex:10;flex:10}}.error-main,.invitation-main,.login-main{-ms-flex-pack:center}.error-main,.login-main{-ms-flex-direction:row;flex-direction:row;-webkit-flex-direction:row}.taskboard .graphics-container,.taskboard .summary,.taskboard h1,.us-story-main-data .us-title .us-number,h1 span.green,h1 span:last-child{-ms-flex-negative:0;flex-shrink:0;-webkit-flex-shrink:0}h2{font-size:2rem}h1,h1 span{font-size:3rem}h1,h2{font-family:OpenSans-CondLight,Arial,Helvetica,sans-serif}@font-face{font-family:OpenSans-CondLight;src:url(../fonts/OpenSans-CondLight.eot?#iefix)format('embedded-opentype'),url(../fonts/OpenSans-CondLight.woff)format('woff'),url(../fonts/OpenSans-CondLight.ttf)format('truetype'),url(../fonts/OpenSans-CondLight.svgOpenSans-CondLight)format('svg')}@font-face{font-family:opensans-regular;src:url(../fonts/opensans-regular.eot?#iefix)format('embedded-opentype'),url(../fonts/opensans-regular.woff)format('woff'),url(../fonts/opensans-regular.ttf)format('truetype'),url(../fonts/opensans-regular.svgopensans-regular)format('svg')}@font-face{font-family:opensans-semibold;src:url(../fonts/opensans-semibold.eot?#iefix)format('embedded-opentype'),url(../fonts/opensans-semibold.woff)format('woff'),url(../fonts/opensans-semibold.ttf)format('truetype'),url(../fonts/opensans-semibold.svgopensans-semibold)format('svg')}@font-face{font-family:taiga;src:url(../fonts/taiga.eot?#iefix)format('embedded-opentype'),url(../fonts/taiga.woff)format('woff'),url(../fonts/taiga.ttf)format('truetype'),url(../fonts/taiga.svgtaiga)format('svg')}h1,h2,h3,h4,h5,h6{color:#050505;font-weight:400}h1 a,h2 a,h3 a,h4 a,h5 a,h6 a{font-weight:inherit}h1{text-transform:uppercase}h1 span{margin-right:.5rem;text-overflow:ellipsis;vertical-align:bottom;white-space:nowrap}h1 .project-name{display:inline-block;max-width:60%}h1 .project-name-short{display:inline-block;max-width:40%}h1 .green{color:#72a114}h1 .date{max-width:500px;white-space:nowrap;text-overflow:ellipsis;color:#b8b8b8}p{margin:0 0 20px}p img{margin:0}em{font-style:italic}strong{font-weight:700}hr{-moz-box-sizing:content-box;box-sizing:content-box;border:solid #ddd;border-width:1px 0 0;clear:both;height:0;margin:10px 0 30px}a,a:visited{color:#444;text-decoration:none}a:hover,a:visited:hover{color:#72a114;-webkit-transition:color .3s linear;transition:color .3s linear}[data-icon]:before{content:attr(data-icon);-moz-osx-font-smoothing:grayscale;font-style:normal!important;font-variant:normal!important;speak:none;text-transform:none!important}[class*=' icon-']:before,[class^=icon-]:before{-moz-osx-font-smoothing:grayscale;font-style:normal!important;font-variant:normal!important;speak:none;text-transform:none!important}.admin-contrib .help .alt-image,.admin-third-parties .help .alt-image,.wysiwyg dl dt{font-style:italic}.blocked-warning .blocked,.empty span.title,.invitation-main .avatar .person-name,.invitation-main .invitation-text,.login-main .logo,.login-main .tagline,.points-per-role .points,.us-story-main-data .us-title .us-number{font-family:OpenSans-CondLight,Arial,Helvetica,sans-serif}.icon-bug:before{content:'a'}.icon-copy:before{content:'b'}.icon-minimize:before{content:'c'}.icon-maximize:before{content:'d'}.icon-comment:before{content:'e'}.icon-plus:before{content:'f'}.icon-attachments:before{content:'g'}.icon-edit:before{content:'h'}.icon-documents:before{content:'i'}.icon-delete:before{content:'j'}.icon-arrow-bottom:before{content:'k'}.icon-arrow-left:before{content:'l'}.icon-arrow-right:before{content:'m'}.icon-arrow-up:before{content:'n'}.icon-briefcase:before{content:'o'}.icon-caret-down:before{content:'p'}.icon-caret-up:before{content:'q'}.icon-check-square:before{content:'r'}.icon-notification-error:before{content:'s'}.icon-settings:before{content:'t'}.icon-document:before{content:'u'}.icon-warning:before{content:'v'}.icon-move:before{content:'w'}.icon-drag-h:before{content:'x'}.icon-drag-v:before{content:'y'}.icon-filter:before{content:'z'}.icon-github:before{content:'A'}.icon-help:before{content:'B'}.icon-reload:before{content:'C'}.icon-writer:before{content:'D'}.icon-stats:before{content:'E'}.icon-floppy:before{content:'F'}.icon-idea:before{content:'G'}.icon-warning-alt:before{content:'H'}.icon-video:before{content:'I'}.icon-bulk:before{content:'K'}.icon-vunfold:before{content:'M'}.icon-tasks:before{content:'O'}.icon-kanban:before{content:'P'}.icon-search:before{content:'Q'}.icon-wiki:before{content:'L'}.icon-team:before{content:'T'}.icon-spinner:before{content:'J'}.icon-vfold:before{content:'N'}.icon-issues:before{content:'U'}.icon-backlog:before{content:'R'}.icon-iocaine:before{content:'S'}.icon-closed-eye:before{content:'V'}.icon-open-eye:before{content:'W'}.icon-archive:before{content:'X'}.icon-capslock:before{content:'Y'}.icon-upload:before{content:'Z'}.login-main .tagline{font-size:2rem}.login-main{background:url(/images/bg.png)center center no-repeat;background-size:cover;-ms-flex-align:center;align-items:center;bottom:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;left:0;right:0}.login-main fieldset{margin-bottom:.5rem}.login-main .logo,.login-main form{margin-bottom:1rem}.login-main .login-container{-webkit-flex-basis:400px;-ms-flex-preferred-size:400px;flex-basis:400px}.login-main .logo-svg{padding:0 33%;text-align:center;width:100%}.login-main .logo{font-size:3rem;color:#fff;text-align:center}.login-main .tagline{color:#fff;line-height:2rem;margin-bottom:1rem;text-align:center;text-transform:uppercase}.login-main input{background:#fff}.login-main input::-webkit-input-placeholder{color:#b8b8b8}.login-main input::-moz-placeholder{color:#b8b8b8}.login-main input:-moz-placeholder{color:#b8b8b8}.login-main input:-ms-input-placeholder{color:#b8b8b8}.login-main .login-text,.login-main .register-text{text-align:center}.login-main .login-text a:hover,.login-main .register-text a:hover{color:#9dce0a}.login-main .button{color:#fff;display:block;text-align:center}.login-main a:hover{color:#fff}.login-main .checksley-error-list{right:1rem}.login-main .checksley-error-list+.forgot-pass{display:none}.invitation-main .invitation-form .forgot-pass,.invitation-main .register-text{font-size:.8rem}.invitation-main .avatar .person-name,.invitation-main .invitation-text{font-size:2rem}.invitation-main{background:url(/images/invitation_bg.jpg)center center no-repeat;background-size:cover;-webkit-align-content:center;-ms-flex-line-pack:center;align-content:center;-ms-flex-align:center;align-items:center;bottom:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;left:0;right:0}.invitation-main .invitation-container{-webkit-flex-basis:650px;-ms-flex-preferred-size:650px;flex-basis:650px;width:650px}.invitation-main .logo{margin:1rem auto;width:150px}.invitation-main .avatar{margin:0 auto 1rem;text-align:center;width:250px}.invitation-main .avatar .person-name{color:#fff;text-transform:uppercase}.invitation-main .avatar img{display:block;text-align:center;width:50px}.invitation-main .invitation-text{color:#fff;line-height:2rem;text-align:center;text-transform:uppercase}.invitation-main .invitation-text .project-name{font-size:3rem;display:block}.invitation-main .invitation-form{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.invitation-main .invitation-form fieldset{margin-bottom:.5rem}.invitation-main .invitation-form input{background:#fff;color:#555;position:relative}.invitation-main .invitation-form input::-webkit-input-placeholder{color:#b8b8b8}.invitation-main .invitation-form input::-moz-placeholder{color:#b8b8b8}.invitation-main .invitation-form input:-moz-placeholder{color:#b8b8b8}.invitation-main .invitation-form input:-ms-input-placeholder{color:#b8b8b8}.invitation-main .invitation-form input:focus+.forgot-pass{opacity:0;-webkit-transition:opacity .5s linear;transition:opacity .5s linear}.invitation-main .invitation-form .forgot-pass{color:#b8b8b8;opacity:1;position:absolute;right:1rem;top:.5rem;-webkit-transition:all .3s linear;transition:all .3s linear}.invitation-main .invitation-form .forgot-pass:hover{color:#444;-webkit-transition:color .3s linear;transition:color .3s linear}.invitation-main .invitation-form .button{color:#fff;display:block;text-align:center}.invitation-main .invitation-form .button:hover{background:#9dce0a}.invitation-main .invitation-form .button-github:hover{background:#000}.invitation-main .login-form,.invitation-main .register-form{-webkit-flex-basis:200px;-ms-flex-preferred-size:200px;flex-basis:200px;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;padding:1rem;text-align:center;width:200px}.invitation-main .login-form .form-header,.invitation-main .register-form .form-header{color:#999}.invitation-main .register-form fieldset:last-child{margin-bottom:1rem}.invitation-main .register-text{color:#fff}.invitation-main .register-text a{color:#72a114}.invitation-main .register-text a:hover{color:#9dce0a}.invitation-main .login-form{border-right:1px solid #fff}blockquote cite,sup{font-size:.8rem}.empty span.title{font-size:2rem}blockquote,blockquote p{color:#777;font-style:italic;line-height:24px}blockquote{border-left:1px solid #ddd;margin:0 0 20px;padding:9px 20px 0 19px}.external-reference a,.us-story-main-data .us-title .us-related-task a{padding:0 .2rem;border-left:1px solid #b8b8b8}blockquote cite{color:#555;display:block}blockquote cite:before{content:'\2014 \0020'}.add-comment:after,.points-per-role .popover.fix:after,.points-per-role .popover:after,.project-colors .project-colors-options:after,.related-tasks-body .pop-status:after,.select-color:after,.single-filter:after,.us-status .priority-data .pop-priority:after,.us-status .severity-data .pop-severity:after,.us-status .status-data .pop-status:after,.us-status .type-data .pop-type:after,.user .popover:after{content:''}ol,ul{margin-bottom:20px}ol{list-style:decimal}sup{vertical-align:super}.backlog-menu .trans-button span,.blocked-warning .icon,.icon,.us-detail-status{vertical-align:middle}.clickable{cursor:pointer}.not-clickable{cursor:default}.draggable{cursor:move}.pika-single{z-index:999999}.pika-single .pika-title{color:#444}.pika-single .is-selected .pika-button{background:#72a114;border-radius:0!important;box-shadow:inset 0 1px 3px #72a114}.pika-single .is-today .pika-button{color:#72a114}.pika-single .is-today.is-selected button{color:#fff}.pika-single .pika-button:hover{background:#9dce0a!important;border-radius:0!important;box-shadow:inset 0 1px 3px #9dce0a!important}.empty{border:1px dashed #b8b8b8;color:#b8b8b8;padding:5% 0;text-align:center}.empty .icon{font-size:3rem;margin-bottom:2rem}.empty span{display:block}.empty span.title{margin-bottom:1rem;text-transform:uppercase}fieldset{border:0;margin:0;padding:0;position:relative;width:100%}fieldset label~.checksley-error-list{top:31px}input[type=number],input[type=text],input[type=password],input[type=email],input[type=date],select,textarea{background:#f5f5f5;border:1px solid #b8b8b8;color:#444;margin:0;padding:8px;width:100%}input[type=number]::-webkit-input-placeholder,input[type=text]::-webkit-input-placeholder,input[type=password]::-webkit-input-placeholder,input[type=email]::-webkit-input-placeholder,input[type=date]::-webkit-input-placeholder,select::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#9f9f9f}input[type=number]::-moz-placeholder,input[type=text]::-moz-placeholder,input[type=password]::-moz-placeholder,input[type=email]::-moz-placeholder,input[type=date]::-moz-placeholder,select::-moz-placeholder,textarea::-moz-placeholder{color:#9f9f9f}input[type=number]:-moz-placeholder,input[type=text]:-moz-placeholder,input[type=password]:-moz-placeholder,input[type=email]:-moz-placeholder,input[type=date]:-moz-placeholder,select:-moz-placeholder,textarea:-moz-placeholder{color:#9f9f9f}input[type=number]:-ms-input-placeholder,input[type=text]:-ms-input-placeholder,input[type=password]:-ms-input-placeholder,input[type=email]:-ms-input-placeholder,input[type=date]:-ms-input-placeholder,select:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#9f9f9f}input[type=number].checksley-error,input[type=text].checksley-error,input[type=password].checksley-error,input[type=email].checksley-error,input[type=date].checksley-error,select.checksley-error,textarea.checksley-error{border:1px solid red;-webkit-transition:border .3s linear;transition:border .3s linear}.taskboard .graphics-container,.taskboard .graphics-container.open{-webkit-transition:max-height .5s ease-in;transition:max-height .5s ease-in}.points-per-role .popover a:last-child,.points-per-role .popover.fix a:last-child,.points-per-role>li:last-child,.us-status .priority-data .pop-priority a:last-child,.us-status .severity-data .pop-severity a:last-child,.us-status .status-data .pop-status a:last-child,.us-status .type-data .pop-type a:last-child,.us-story-main-data .us-title .us-related-task a:first-child{border:0}.checksley-error-list{font-size:.8rem;background:rgba(245,245,245,.8);margin-bottom:0;padding:0 .5rem;position:absolute;right:2rem;top:10px}.checksley-error-list li{color:red;padding:.2rem}.error-main{background:url(/images/invitation_bg.jpg)center center no-repeat;background-size:cover;-ms-flex-align:center;align-items:center;bottom:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;left:0;position:fixed;right:0;top:0;z-index:999}.backlog-menu,.project-values-title{-webkit-box-pack:justify;-ms-flex-pack:justify;-webkit-justify-content:space-between}.kanban,.taskboard-inner{-ms-flex-direction:column;-webkit-flex-direction:column}.error-main .error-container{color:#fff;-webkit-flex-basis:400px;-ms-flex-preferred-size:400px;flex-basis:400px;text-align:center}.error-main .logo-svg{padding:0 32%;text-align:center;width:100%}.error-main h1{color:#fff;margin-bottom:3rem}.error-main a{color:#72a114}.error-main a:hover{color:#9dce0a}.backlog-menu{background:#f5f5f5;color:#050505;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;justify-content:space-between;margin-bottom:1rem;padding:.5rem}.backlog-menu .trans-button{display:inline-block;margin-right:1rem;padding:.3rem 0}.backlog-menu .trans-button.move-to-current-sprint{display:none}.backlog-menu .button-bulk{margin-left:.2rem}.taskboard{height:100vh}.taskboard .graphics-container{max-height:0}.taskboard .graphics-container.open{max-height:300px}.taskboard-inner{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;height:100%}.duty-data-container,.points-per-role .popover a,.points-per-role .popover.fix a,.points-per-role .role,.us-detail-progress-bar .tasks-completed,.us-status .priority-data .pop-priority a,.us-status .severity-data .pop-severity a,.us-status .status-data .pop-status a,.us-status .type-data .pop-type a,.us-story-main-data .us-title .block-desc-container,.us-story-main-data .us-title .us-related-task{font-size:.8rem}.us-detail-status,.us-story-main-data .us-title,.us-story-main-data .us-title .icon-edit,.us-story-main-data .us-title .icon-floppy{font-size:1.2rem}.blocked-warning .blocked,.blocked-warning .icon,.issue-nav a,.points-per-role .points,.us-story-main-data .us-title .us-name,.us-story-main-data .us-title .us-number{font-size:2rem}.points-per-role .popover,.points-per-role .popover.fix,.us-status .priority-data .pop-priority,.us-status .severity-data .pop-severity,.us-status .status-data .pop-status,.us-status .type-data .pop-type,.us-story-main-data .us-title{font-family:opensans-regular,Arial,Helvetica,sans-serif;line-height:1.3rem}.us-story-main-data .us-title .block-description-title,.us-story-main-data .us-title.blocked .unblock{font-family:opensans-semibold,Arial,Helvetica,sans-serif}.duty-content .save-container .loading-spinner,.loading-spinner,.us-detail-settings .loading-spinner,.us-story-main-data .loading-spinner{-webkit-animation:rotate 1.5s cubic-bezier(0,.05,.87,1.04)infinite alternate;animation:rotate 1.5s cubic-bezier(0,.05,.87,1.04)infinite alternate;margin:0 auto;max-height:1rem;max-width:1rem;-webkit-transform-origin:32 32;-ms-transform-origin:32 32;transform-origin:32 32}.duty-content .save-container .loading-spinner,.us-story-main-data .loading-spinner{max-width:1.5rem;max-height:1.5rem}.us-story-main-data{margin-bottom:2rem}.us-story-main-data .us-title{background:#f5f5f5;margin-bottom:.5rem;padding:1rem;position:relative;-webkit-transition:all .2s linear;transition:all .2s linear}.us-story-main-data .us-title.blocked{background:red;-webkit-transition:all .2s linear;transition:all .2s linear;vertical-align:middle}.us-story-main-data .us-title.blocked .us-title-text,.us-story-main-data .us-title.blocked input{margin-bottom:.5rem}.us-story-main-data .us-title.blocked .us-name,.us-story-main-data .us-title.blocked .us-number,.us-story-main-data .us-title.blocked .us-related-task{color:#fff}.us-story-main-data .us-title.blocked a{color:#fff;-webkit-transition:color .3s linear;transition:color .3s linear}.us-story-main-data .us-title.blocked a:hover{color:#ff8282}.us-story-main-data .us-title.blocked .unblock{color:#fff;float:right}.us-story-main-data .us-title.blocked .unblock:hover{color:#ff8282;-webkit-transition:color .3s linear;transition:color .3s linear}.us-story-main-data .us-title p{margin-bottom:0}.us-story-main-data .us-title .us-edit-name-inner{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.us-story-main-data .us-title .edit-subject{-webkit-align-content:center;-ms-flex-line-pack:center;align-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.us-story-main-data .us-title input{background:#fff;-webkit-box-flex:9;-webkit-flex-grow:9;-ms-flex-positive:9;flex-grow:9}.points-per-role>li,.us-story-main-data .us-title .save-container{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.us-story-main-data .us-title .us-title-text{-webkit-align-content:center;-ms-flex-line-pack:center;align-content:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin-bottom:0;max-width:94%}.us-story-main-data .us-title .us-title-text:hover .icon-edit{opacity:1;-webkit-transition:opacity .3s linear;transition:opacity .3s linear}.us-story-main-data .us-title .us-number{color:#b8b8b8;line-height:2.2rem;margin-right:.5rem}.us-story-main-data .us-title .us-name{color:#444;display:inline-block;line-height:2.2rem;padding-right:1rem;width:100%}.us-story-main-data .us-title .icon-edit,.us-story-main-data .us-title .icon-floppy{color:#b8b8b8;margin-left:.5rem}.us-story-main-data .us-title .icon-edit{opacity:0}.us-story-main-data .us-title .us-related-task{color:#b8b8b8;margin-top:.5rem}.us-story-main-data .us-title .us-related-task a:hover{color:#72a114}.us-story-main-data .us-title .block-description-title{color:#fff;margin-right:.5rem}.us-story-main-data .us-title .block-description{color:#fff;display:inline-block;margin-right:5rem}.blocked-warning{margin-bottom:1rem}.blocked-warning .blocked{color:red;line-height:2.5rem;margin-bottom:.5rem}.blocked-warning .block-description{color:#444;margin:0}.issue-nav{position:absolute;right:1rem;top:1rem}.duty-content{position:relative}.duty-content .edit-description .edit,.duty-content .view-description .edit{-webkit-transition:all .2s linear;transition:all .2s linear;position:absolute}.duty-content:hover .view-description .edit{opacity:1;top:-1.5rem;-webkit-transition:all .2s linear;transition:all .2s linear}.duty-content:hover .view-description .editable{background:#f5f5f5;cursor:pointer}.duty-content:hover .view-description .no-description{color:#444}.duty-content.wysiwyg{overflow:visible}.duty-content .no-description{color:#b8b8b8}.duty-content textarea{background:#fff;height:10rem}.duty-content .save-container{position:absolute;right:1rem;top:.2rem}.duty-content .save-container:hover{opacity:.3;-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.duty-content .edit{color:#444}.duty-content .view-description .edit{background:#f5f5f5;left:0;opacity:0;padding:.2rem .5rem;top:0}.duty-content .edit-description{margin-bottom:2rem}.duty-content .edit-description .save{top:.4rem}.duty-content .edit-description .edit{right:2.5rem;top:.4rem}.points-per-role .popover a:hover,.points-per-role .popover.fix a:hover{-webkit-transition:color .3s linear;transition:color .3s linear}.duty-content .edit-description .preview{padding-top:1.5rem}.comment-list{padding:1rem}.us-detail-status{color:#72a114}.us-detail-progress-bar{background:#444;height:26px;margin-bottom:1rem;position:relative}.us-detail-progress-bar .current-progress{background:#9dce0a;height:26px;left:0;position:absolute;top:0;width:60%}.us-detail-progress-bar .tasks-completed{color:#fff;left:10px;position:absolute;top:2px}.points-per-role{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;position:relative}.points-per-role>li{background:rgba(184,184,184,.1);border-radius:2px;color:rgba(68,68,68,.3);-webkit-flex-basis:80px;-ms-flex-preferred-size:80px;flex-basis:80px;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;margin:.1rem;max-width:50%;padding:.5rem 0 .1rem;position:relative;text-align:center;-webkit-transition:color .3s linear;transition:color .3s linear}.points-per-role>li.active{background:rgba(157,206,10,.9);color:#f5f5f5}.points-per-role>li:first-child{background:rgba(68,68,68,.5);color:#f5f5f5}.points-per-role .points{display:block;margin-bottom:.3rem;text-align:center}.points-per-role .role{max-width:90%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:inline-block;line-height:1rem;text-align:center}.points-per-role .popover{background:#050505;color:#fff;display:none;left:35%;list-style-type:none;margin:0;padding:10px;position:absolute;top:105%;width:200px;z-index:99}.points-per-role .popover a:hover.point{color:#fff}.points-per-role .popover:after{background:#050505;height:10px;left:10px;position:absolute;top:-5px;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg);width:10px}.points-per-role .popover li{display:inline-block;width:23%}.points-per-role .popover a{border-bottom:1px solid #444;color:#fff;padding:10px 2px;display:block;text-align:center}.points-per-role .popover a.active,.points-per-role .popover a:hover{background:#9dce0a;color:#fff}.points-per-role .popover.fix{background:#050505;color:#fff;display:none;left:-160px;list-style-type:none;margin:0;padding:10px;position:absolute;top:105%;width:200px;z-index:99}.points-per-role .popover.fix a{border-bottom:1px solid #444;color:#fff;display:block;padding:10px 2px}.points-per-role .popover.fix a:hover{color:#9dce0a}.points-per-role .popover.fix a:hover.point{color:#fff}.points-per-role .popover.fix:after{background:#050505;height:10px;left:90%;position:absolute;top:-5px;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg);width:10px}.duty-data-container{margin-bottom:1rem}.duty-data-container .duty-data{margin-bottom:.5rem}.duty-data-container .duty-data:last-child{margin:0}.duty-data-container .duty-data div{background:#e8e8e8;padding:.5rem 1rem .5rem .5rem;-webkit-transition:background .2s ease-in;transition:background .2s ease-in}.duty-data-container .duty-data .clickable:hover{background:#dcdcdc;-webkit-transition:background .2s ease-in;transition:background .2s ease-in}.us-status .priority-data .pop-priority a:hover,.us-status .severity-data .pop-severity a:hover,.us-status .status-data .pop-status a:hover,.us-status .type-data .pop-type a:hover{-webkit-transition:color .3s linear;transition:color .3s linear}.duty-data-container .level{display:inline-block;margin-right:.5rem;vertical-align:top}.duty-data-container .level-name{color:#c2c2c2;float:right}.us-detail-settings{margin-top:2rem}.us-detail-settings .button{color:#fff;display:block;margin-bottom:.5rem;text-align:center;width:100%}.us-detail-settings .button-gray,.us-detail-settings .button-gray:hover{background:#b8b8b8}.us-detail-settings .button-gray.editable:hover{background:#444;cursor:pointer}.us-detail-settings .button-gray.active{background:#72a114}.us-detail-settings .item-block.editable:hover{background:red;cursor:pointer}.us-detail-settings .button-red.active,.us-detail-settings .button-red:hover{background:red}.us-detail-settings label.editable{cursor:pointer}.us-detail-settings label+input{display:none}.us-detail-settings span.button-gray,.us-detail-settings span.button-gray:hover{background:#b8b8b8}.us-detail-settings span.button-gray.active,.us-detail-settings span.button-gray:hover.active{background:#555}.us-detail-settings span.button-red,.us-detail-settings span.button-red:hover{background:#ff8282}.us-detail-settings span.button-red.active,.us-detail-settings span.button-red:hover.active{background:red}.us-status .type-data{position:relative}.us-status .type-data .pop-type{background:#050505;color:#fff;display:none;left:30px;list-style-type:none;margin:0;padding:10px;position:absolute;width:150px;z-index:99}.us-status .type-data .pop-type a{border-bottom:1px solid #444;color:#fff;display:block;padding:10px 2px}.us-status .type-data .pop-type a:hover{color:#9dce0a}.us-status .type-data .pop-type a:hover.point{color:#fff}.us-status .type-data .pop-type:after{background:#050505;height:15px;position:absolute;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg);width:0}.us-status .severity-data{position:relative}.us-status .severity-data .pop-severity{background:#050505;color:#fff;display:none;left:30px;list-style-type:none;margin:0;padding:10px;position:absolute;width:150px;z-index:99}.us-status .severity-data .pop-severity a{border-bottom:1px solid #444;color:#fff;display:block;padding:10px 2px}.us-status .severity-data .pop-severity a:hover{color:#9dce0a}.us-status .severity-data .pop-severity a:hover.point{color:#fff}.us-status .severity-data .pop-severity:after{background:#050505;height:15px;position:absolute;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg);width:0}.us-status .priority-data{position:relative}.us-status .priority-data .pop-priority{background:#050505;color:#fff;display:none;left:30px;list-style-type:none;margin:0;padding:10px;position:absolute;width:150px;z-index:99}.us-status .priority-data .pop-priority a{border-bottom:1px solid #444;color:#fff;display:block;padding:10px 2px}.us-status .priority-data .pop-priority a:hover{color:#9dce0a}.us-status .priority-data .pop-priority a:hover.point{color:#fff}.us-status .priority-data .pop-priority:after{background:#050505;height:15px;position:absolute;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg);width:0}.us-status .status-data{position:relative}.us-status .status-data .pop-status{background:#050505;color:#fff;display:none;left:30px;list-style-type:none;margin:0;padding:10px;position:absolute;width:150px;z-index:99}.us-status .status-data .pop-status a{border-bottom:1px solid #444;color:#fff;display:block;padding:10px 2px}.us-status .status-data .pop-status a:hover{color:#9dce0a}.wiki .remove:hover .icon,.wiki .remove:hover span{-webkit-transition:color .2s linear;transition:color .2s linear}.us-status .status-data .pop-status a:hover.point{color:#fff}.us-status .status-data .pop-status:after{background:#050505;height:15px;position:absolute;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg);width:0}.admin-roles header,.wiki-content{position:relative}.admin-membership header:after{clear:both;content:'';display:table}.admin-membership header a{float:right}.admin-roles p{font-size:1.2rem;font-family:OpenSans-CondLight,Arial,Helvetica,sans-serif;color:#b8b8b8}.admin-attributes .admin-attributes-section{margin-bottom:2rem}.admin-roles h1{margin-bottom:0}.project-values-title{-webkit-align-content:center;-ms-flex-line-pack:center;align-content:center;-ms-flex-align:center;align-items:center;background:#f5f5f5;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;justify-content:space-between;padding:.8em 1rem;text-transform:uppercase}.project-values-title h2{margin:0}.project-values-title h2 span{margin-left:.5rem;text-transform:none}.menu,.watchers .watchers-header .title,.wysiwyg h1,.wysiwyg h2,.wysiwyg h3{text-transform:uppercase}.project-values-title a{display:inline-block}.project-colors .new-color{float:right}.project-colors .colors-table{margin-top:1rem}.project-colors .project-colors-options:after{clear:both;display:table}.kanban{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;height:100vh;max-height:100vh}.kanban header{min-height:70px}.kanban .kanban-settings{float:right}.kanban .burndown-container{display:none}.kanban .list-filters{margin-bottom:1rem}.wiki-content,.wysiwyg{margin-bottom:2rem}.issues .filters-bar{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:260px}.large-summary .large-summary-wrapper,.summary{-ms-flex-line-pack:center;-webkit-flex-wrap:wrap}.taskboard-task .taskboard-tag,.taskboard-task .taskboard-user-avatar{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.issues .filters-inner{opacity:1;padding:1rem}.wiki .remove{font-size:.8rem;color:#b8b8b8}.wiki .remove:hover span{color:#444}.wiki .remove:hover .icon{color:red}.wiki .remove .icon{color:#b8b8b8;margin-right:.2rem}.wiki-content.editable:hover .wysiwyg{background:#f5f5f5;cursor:pointer}.wiki-content .view-wiki-content:hover .edit{opacity:1;top:-1.5rem;-webkit-transition:all .2s linear;transition:all .2s linear}.wiki-content .view-wiki-content .edit{background:#f5f5f5;left:0;opacity:0;padding:.2rem .5rem;position:absolute;top:0;-webkit-transition:all .2s linear;transition:all .2s linear}.wiki-content .edit-wiki-content .icon:hover{color:#444;opacity:.3;-webkit-transition:all .2s linear;transition:all .2s linear}.wiki-content .edit-wiki-content .preview-icon{position:absolute;right:3.5rem}.wiki-content .edit-wiki-content .action-container{position:absolute;right:1rem;top:.3rem}.wiki-content .edit-wiki-content .edit{position:absolute;right:3.5rem;top:.4rem}.wiki-content .preview{padding-top:1.8rem}.wysiwyg textarea{background:#fff;max-height:none}.save-wiki{float:right}.team h2{margin:1rem 0}.team h2 span:last-child{color:#72a114}.button,.button-auth,.button-blackish,.button-bulk,.button-gray,.button-green,.button-red,.trans-button,a.button-gray{font-size:1rem;font-family:OpenSans-CondLight,Arial,Helvetica,sans-serif;background:0 0;border:0;color:#fff;display:inline-block;padding:.4rem 2.5rem;text-transform:uppercase;-webkit-transition:all .3s linear;transition:all .3s linear;vertical-align:middle}.button-auth:hover,.button-blackish:hover,.button-bulk:hover,.button-gray:hover,.button-green:hover,.button-red:hover,.button:hover,.trans-button:hover{color:#fff;-webkit-transition:all .3s linear;transition:all .3s linear}.button.loading span,.loading.button-auth span,.loading.button-blackish span,.loading.button-bulk span,.loading.button-gray span,.loading.button-green span,.loading.button-red span,.loading.trans-button span{-webkit-animation:loading .5s linear;animation:loading .5s linear}.admin-project-export-result .spin img,.duty-assigned-to .loading-spinner,.filters-inner .loading .loading-spinner,.lightbox-generic-loading .spin img,.loading-spinner,.user-profile form .avatar-container .loading-spinner{-webkit-animation:rotate 1.5s cubic-bezier(0,.05,.87,1.04)infinite alternate}.button span,.button-auth span,.button-blackish span,.button-bulk span,.button-gray span,.button-green span,.button-red span,.trans-button span{color:#fff}.button .icon,.button-auth .icon,.button-blackish .icon,.button-bulk .icon,.button-gray .icon,.button-green .icon,.button-red .icon,.trans-button .icon{color:#fff;margin-right:.3rem}.trans-button .icon,.trans-button span{color:#050505;-webkit-transition:color .2s linear;transition:color .2s linear}.large-summary .icon.icon-stats,.large-summary .icon.icon-stats.active:hover,.large-summary .icon.icon-stats:hover{-webkit-transition:color .3s linear;transition:color .3s linear}.trans-button.active .icon,.trans-button.active span,.trans-button:hover .icon,.trans-button:hover span{color:#72a114}.submit-button{width:100%}.button-green{background:#72a114}.button-green.active,.button-green:hover{background:#9dce0a}.button-gray,a.button-gray{background:#555}.button-gray.active,.button-gray:hover,a.button-gray.active,a.button-gray:hover{background:#9dce0a;color:#fff}.button-blackish{background:#050505;color:#f5f5f5}.button-blackish:hover{background:#050505;color:#fff}.button-red{background:#ff8282}.button-red:hover{background:red;color:#fff}.button-red .icon{color:#fff}.button-block{background:#fff;color:red}.button-block:hover{background:#ff8282;color:#fff}.button-bulk{background:#72a114;padding:.35rem .5rem}.button-bulk .icon{margin-right:0}.button-bulk:hover{background:#9dce0a}.button-auth{background:#444}.button-auth .icon,.button-auth img{font-size:1.2rem;color:#fff;margin-right:.5rem}.button-auth:hover{background:#000}.avatar img{border:2px solid #fff;border-radius:8%;width:100%}.summary .description{font-size:.8rem;font-family:opensans-regular,Arial,Helvetica,sans-serif;line-height:.9rem}.summary .icon{font-size:1.2rem}.large-summary .icon,.summary .number{font-size:2rem}.tags-block .add-tag-text,.tags-block .tag,.taskboard-task .task-assigned,.taskboard-task .taskboard-text,.taskboard-task .taskboard-user-avatar a{font-size:.8rem}.summary{-webkit-align-content:center;align-content:center;background:#444;color:#fff;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start;margin-bottom:2rem;padding:1em}.attachments-header,.category-config .category-item,.large-summary,.related-tasks-header{-webkit-justify-content:space-between}.summary .summary-stats{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin:0 .5rem}.summary .data{margin-top:4px}.summary .data .number{color:#9dce0a;top:0}.summary .number{font-family:opensans-semibold,Arial,Helvetica,sans-serif;margin-right:.3rem;position:relative;top:5px}.summary-progress-bar{background:#fff;height:30px;margin-bottom:0;margin-right:10px;padding:3px;position:relative;width:15%}.summary-progress-bar .current-progress{background:#9dce0a;height:24px}.summary-progress-bar .defined-points{background:#ff8282;height:24px;position:absolute;width:calc(100% - 6px)}.summary-progress-bar .project-points-progress{background:#fff;height:24px;position:absolute}.summary-progress-bar .closed-points-progress{background:#9dce0a;height:24px;position:absolute}.large-summary{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.large-summary .large-summary-wrapper{-webkit-align-content:center;align-content:center;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.loader .container,.open.lightbox,.watchers .watcher-single{-ms-flex-align:center;justify-content:center;-webkit-justify-content:center}.large-summary .summary-progress-wrapper{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.large-summary .summary-progress-bar{-webkit-flex-basis:200px;-ms-flex-preferred-size:200px;flex-basis:200px;min-width:200px}.large-summary .summary-stats{margin-right:1rem}.large-summary .summary-stats:last-child{border:0;margin:0}.large-summary .summary-stats-divider{margin-right:2rem}.large-summary .icon{margin-right:.4rem}.large-summary .icon.icon-stats{color:#555;float:right}.large-summary .icon.icon-stats.active,.large-summary .icon.icon-stats:hover{color:#9dce0a}.large-summary .icon.icon-stats.active:hover{color:#555}.single-filter,.tags-block .icon-plus{font-size:1.2rem}.tag{background:#f5f5f5;color:#444;display:inline-block;margin-right:.5rem;padding:.2rem .5rem;text-align:center}.tag .icon-delete{color:#b8b8b8;margin-left:1rem}.tag .icon-delete:hover{color:red}.ui-autocomplete{background:#fff;border:1px solid #b8b8b8;z-index:99910}.ui-autocomplete .ui-state-focus{background:#9dce0a}.ui-autocomplete li{cursor:pointer}.ui-helper-hidden-accessible{display:none}.tags-block .tags-container{display:inline-block}.tags-block input{padding:.4rem;width:14rem}.tags-block .tag{margin:0 .5rem .5rem 0;padding:.5rem}.tags-block .add-tag{color:#b8b8b8}.tags-block .add-tag:hover{color:#9dce0a}.single-filter{font-family:OpenSans-CondLight,Arial,Helvetica,sans-serif;cursor:pointer;display:block;height:32px;margin-bottom:1rem;opacity:.5;position:relative}.kanban-task .task-name,.notification-light .warning,.notification-message .warning,.taskboard-task .task-name{font-family:opensans-semibold,Arial,Helvetica,sans-serif}.single-filter:after{clear:both;display:table}.single-filter.active,.single-filter.selected,.single-filter:hover{color:#444;opacity:1;-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.single-filter .icon-delete,.single-filter .icon-delete:hover{-webkit-transition:color .3s linear;transition:color .3s linear}.single-filter .name,.single-filter .number{padding:8px 10px}.single-filter .name{background:#dcdcdc;display:block;width:100%}.single-filter .number{background:#c2c2c2;position:absolute;right:0;top:0}.single-filter .icon-delete{color:#444;position:absolute;right:.5rem;top:.5rem}.single-filter .icon-delete:hover{color:red}.taskboard-task .icon-drag-h,.taskboard-task .icon-edit,.taskboard-task .icon-iocaine{font-size:1.2rem}.taskboard-task{background:#fff8e4;border:1px solid #f1e8cd;box-shadow:none;cursor:move;margin:.2rem;min-height:7rem;position:relative}.taskboard-task:hover .icon-drag-h,.taskboard-task:hover .icon-edit{color:#cfc29b;display:block;opacity:1;-webkit-transition:color .3s linear,opacity .3s linear;transition:color .3s linear,opacity .3s linear}.taskboard-task.ui-sortable-helper{box-shadow:1px 1px 15px rgba(0,0,0,.4);-webkit-transition:box-shadow .3s linear;transition:box-shadow .3s linear}.taskboard-task.ui-sortable-placeholder{background:#444}.taskboard-task.blocked{background:red;border:1px solid #c00;color:#fff}.taskboard-task.blocked a,.taskboard-task.blocked span,.taskboard-task.blocked:hover .icon-drag-h,.taskboard-task.blocked:hover .icon-edit{color:#fff}.taskboard-task .taskboard-tagline{border-color:#f1e8cd;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;height:.6rem}.taskboard-task .taskboard-tag{border-top:.3rem solid #f1e8cd;-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;height:.6rem;z-index:100}.taskboard-task .taskboard-task-inner{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding:.5rem}.taskboard-task .taskboard-user-avatar{-webkit-flex-basis:50px;-ms-flex-preferred-size:50px;flex-basis:50px;max-width:55px}.taskboard-task .taskboard-user-avatar a{display:block;text-align:center}.taskboard-task .taskboard-user-avatar img{margin:0 auto}.taskboard-task .taskboard-user-avatar img:hover{border:2px solid #72a114;-webkit-transition:border .3s linear;transition:border .3s linear}.kanban-task:hover .icon-drag-h,.kanban-task:hover .icon-edit,.taskboard-task .icon{-webkit-transition:color .3s linear,opacity .3s linear;transition:color .3s linear,opacity .3s linear}.taskboard-task .iocaine img{-webkit-filter:hue-rotate(150deg)saturate(200%);filter:hue-rotate(150deg) saturate(200%)}.taskboard-task .icon-iocaine{background:#000;border-radius:5px;color:#fff;left:.2rem;padding:.1rem;position:absolute;top:1rem}.taskboard-task .task-assigned{color:#cfc29b;display:block}.taskboard-task .task-num{color:#444;margin-right:.5em}.taskboard-task .taskboard-text{-webkit-flex-basis:50px;-ms-flex-preferred-size:50px;flex-basis:50px;-webkit-box-flex:10;-webkit-flex-grow:10;-ms-flex-positive:10;flex-grow:10;padding:0 .5rem 0 1rem;word-wrap:break-word}.taskboard-task .icon-drag-h,.taskboard-task .icon-edit{bottom:.5rem;color:#f1e8cd;opacity:0;position:absolute}.taskboard-task .icon-drag-h:hover,.taskboard-task .icon-edit:hover{color:#cfc29b}.taskboard-task .icon-edit{right:1rem}.taskboard-task .icon-drag-h{font-size:2rem;cursor:move;right:45%}.task-drag{box-shadow:1px 1px 15px 6px rgba(0,0,0,.1)}.kanban-task .avatar a,.kanban-task .task-text,.kanban-task-maximized .task-archived p,.kanban-task-maximized .task-points,.kanban-task-minimized .task-archived{font-size:.8rem}.kanban-task-minimized .icon-drag-h{font-size:1rem}.kanban-task .icon-drag-h,.kanban-task .icon-edit{font-size:1.2rem}.kanban-task{background:#fff8e4;border:1px solid #f1e8cd;box-shadow:none;cursor:move;margin:.2rem;position:relative}.kanban-task:last-child{margin-bottom:0}.kanban-task:hover .icon-drag-h,.kanban-task:hover .icon-edit{color:#cfc29b;display:block;opacity:1}.kanban-task.ui-sortable-helper{box-shadow:1px 1px 15px rgba(0,0,0,.4);-webkit-transition:box-shadow .3s linear;transition:box-shadow .3s linear}.backlog-table-body .row.ui-sortable-helper,.single-attachment.ui-sortable-helper{box-shadow:1px 1px 10px rgba(0,0,0,.1)}.kanban-task.ui-sortable-placeholder{background:#444}.kanban-task.blocked{background:red;border:1px solid #c00;color:#fff}.kanban-task.blocked a,.kanban-task.blocked span{color:#fff}.kanban-task .kanban-tagline{border-color:#f1e8cd;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;height:.6rem}.kanban-task .kanban-tag{border-top:.3rem solid #f1e8cd;-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;height:.6rem;z-index:100}.kanban-task .kanban-task-inner{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding:.5rem}.kanban-task .avatar-wrapper{-webkit-flex-basis:55px;-ms-flex-preferred-size:55px;flex-basis:55px;-webkit-box-flex:0;-webkit-flex-grow:0;-ms-flex-positive:0;flex-grow:0;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;width:55px}.basic-table .row .width-1,.kanban-task .task-text{-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.kanban-task .avatar-wrapper img{width:100%}.kanban-task .avatar a{text-align:center}.kanban-task .avatar img{margin:0 auto}.kanban-task .avatar img:hover{border:2px solid #72a114;-webkit-transition:border .3s linear;transition:border .3s linear}.kanban-task .task-text{-webkit-box-flex:1;padding:0 .5rem 0 .8rem}.kanban-task .task-assigned{color:#cfc29b;display:block}.kanban-task .task-num{color:#444;margin-right:.3rem}.kanban-task .icon-drag-h,.kanban-task .icon-edit{color:#f1e8cd;opacity:0;position:absolute;-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.kanban-task .icon-drag-h:hover,.kanban-task .icon-edit:hover{color:#e0cd91;-webkit-transition:color .3s linear;transition:color .3s linear}.kanban-task-maximized .task-archived{background:#e8e8e8;padding:.5rem;text-align:left;-webkit-transition:background .3s linear;transition:background .3s linear}.kanban-task-maximized .task-archived:hover{background:#e1e1e1;-webkit-transition:background .3s linear;transition:background .3s linear}.notification-light.active,.notification-light.inactive,.notification-message.active,.notification-message.inactive{transition:all .6s ease-in-out;-webkit-transition:all .6s ease-in-out}.kanban-task-maximized .task-archived .task-archived-text{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.kanban-task-maximized .task-archived span{color:#b8b8b8}.kanban-task-maximized .task-archived p{color:#b8b8b8;margin:0}.kanban-task-maximized .task-archived p:last-child{color:#555;margin:.5rem 0;text-align:center}.kanban-task-maximized .task-name{word-wrap:break-word}.kanban-task-maximized .icon-edit{bottom:.2rem;right:.5rem}.kanban-task-maximized .icon-drag-h{font-size:2rem;bottom:.2rem;cursor:move;right:45%}.kanban-task-maximized .task-points{color:#e0cd91;margin:0}.kanban-task-maximized .task-points span{display:inline-block}.kanban-task-maximized .task-points span:first-child{padding-right:.2rem}.kanban-task-maximized .kanban-tag{border-top:.3rem solid}.kanban-task-minimized .kanban-task-inner{padding:0 .3rem}.kanban-task-minimized .task-archived{background:#e8e8e8;padding:.3rem;text-align:left}.kanban-task-minimized .task-archived .task-archived-text{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.basic-table .row .width-1,.basic-table .row .width-2,.basic-table .row .width-3,.basic-table .row .width-4,.basic-table .row .width-5,.basic-table .row .width-6,.basic-table .row .width-7{-webkit-flex-basis:50px;-ms-flex-preferred-size:50px}.kanban-task-minimized .task-archived span{color:#b8b8b8}.kanban-task-minimized .task-archived .task-name{display:inline-block;max-width:70%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.kanban-task-minimized .task-archived p{color:#b8b8b8;margin:0}.kanban-task-minimized .task-archived p:last-child{display:none}.kanban-task-minimized .task-num{vertical-align:top}.notification-message-error .icon-notification-error,.notification-message-success .icon-notification-success{display:inline;vertical-align:sub}.kanban-task-minimized .task-name{display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:135px}.kanban-task-minimized .task-points{display:none}.kanban-task-minimized .icon-drag-h,.kanban-task-minimized .icon-edit{top:1.4rem}.kanban-task-minimized .icon-edit{bottom:.2rem;right:1rem}.kanban-task-minimized .icon-drag-h{cursor:move;right:.1rem;-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.kanban-task-minimized .kanban-tag{border-top:.2rem solid}.category-config:first-child,.show-more-comments{border-top:1px solid #b8b8b8}.notification-light .warning{font-size:1.2rem;color:#fff;line-height:2.4rem}.notification-message .warning{font-size:2rem;color:#fff;line-height:2.4rem}.notification-message-error .icon-notification-error,.notification-message-success .icon-notification-success{font-size:3rem}.lightbox-ask-choice .subtitle,.lightbox-delete-account .subtitle,.lightbox-delete-project .subtitle,.lightbox-generic-ask .subtitle,.lightbox-generic-loading .progress-bar-wrapper .progress,.lightbox-select-user .more-watchers,.menu,.projects-list a,.watchers .watchers-header .title{font-family:OpenSans-CondLight,Arial,Helvetica,sans-serif}.notification-message{background:rgba(184,184,184,.95);color:#fff;opacity:0;padding:1rem;position:fixed;top:0;-webkit-transform:translateY(-100%);-ms-transform:translateY(-100%);transform:translateY(-100%);width:100%;z-index:99920}.notification-message.active{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}.notification-message .text{display:inline-block;margin-left:.5rem;width:80%}.notification-message .text p{margin:0}.notification-message .icon-delete{color:#fff;position:absolute;right:1rem;top:1rem}.notification-message-success{background:rgba(157,206,10,.9)}.notification-message-error{background:rgba(255,0,0,.9)}.notification-light{background:rgba(184,184,184,.95);color:#fff;left:calc(50% - 200px);padding:1rem 1rem .2rem;position:absolute;top:0;-webkit-transform:translateY(-100%);-ms-transform:translateY(-100%);transform:translateY(-100%);width:400px;z-index:99999}.notification-light.active{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}.select-color:after,.user .popover:after{-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg)}.notification-light .text{display:inline-block;margin-left:.5rem;width:80%}.notification-light .icon-delete{color:#fff;position:absolute;right:1rem}.notification-message-light-error{background:rgba(255,0,0,.95)}.basic-table{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;width:100%}.basic-table .row,.loading-bar{-ms-flex-direction:row;flex-direction:row;-webkit-box-orient:horizontal;-webkit-flex-direction:row}.basic-table .row{-ms-flex-align:center;align-items:center;border-bottom:1px solid #ebebeb;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-direction:normal;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;padding:.3rem 0;text-align:left;width:100%}.loader p,.logo-container span,.main-nav,.main-nav a{text-align:center}.basic-table .row .width-1{flex-basis:50px;-webkit-box-flex:1}.basic-table .row .width-2{flex-basis:50px;-webkit-box-flex:2;-webkit-flex-grow:2;-ms-flex-positive:2;flex-grow:2}.basic-table .row .width-3{flex-basis:50px;-webkit-box-flex:3;-webkit-flex-grow:3;-ms-flex-positive:3;flex-grow:3}.basic-table .row .width-4{flex-basis:50px;-webkit-box-flex:4;-webkit-flex-grow:4;-ms-flex-positive:4;flex-grow:4}.basic-table .row .width-5{flex-basis:50px;-webkit-box-flex:5;-webkit-flex-grow:5;-ms-flex-positive:5;flex-grow:5}.basic-table .row .width-6{flex-basis:50px;-webkit-box-flex:6;-webkit-flex-grow:6;-ms-flex-positive:6;flex-grow:6}.basic-table .row .width-7{flex-basis:50px;-webkit-box-flex:7;-webkit-flex-grow:7;-ms-flex-positive:7;flex-grow:7}.basic-table .row .width-8,.watchers .watcher-name{-webkit-box-flex:8;-webkit-flex-grow:8;-ms-flex-positive:8}.basic-table .row .width-8{-webkit-flex-basis:50px;-ms-flex-preferred-size:50px;flex-basis:50px;flex-grow:8}.basic-table .row:last-child{border-bottom:0}.paginator{margin:2rem 0}.paginator ul{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin-left:1rem}.paginator li{margin-right:.4rem}.paginator .active span,.paginator .dots,.paginator a{background:#b8b8b8;color:#fff;padding:.5rem 1rem;-webkit-transition:all .3s linear;transition:all .3s linear}.paginator a:hover{background:#050505;color:#fff;-webkit-transition:all .3s linear;transition:all .3s linear}.paginator .active span{background:#9dce0a}.paginator .dots{background:0 0;color:#b8b8b8}.v-pagination-list{overflow:hidden}.wysiwyg,.wysiwyg .codehilite{overflow:auto}.v-pagination-next,.v-pagination-previous{background-color:#555;color:#f5f5f5;display:block;padding:.1rem 0;text-align:center;visibility:hidden;width:100%}.v-pagination-next:hover,.v-pagination-previous:hover{background-color:#050505;-webkit-transition:background .3s linear;transition:background .3s linear}.watchers .watcher-name{font-size:.8rem}.watchers .watchers-header .icon,.watchers .watchers-header .title{font-size:1.2rem}.watchers{margin-top:1rem}.watchers .watchers-header{border-bottom:2px solid #b8b8b8;padding:.5rem;position:relative}.watchers .watchers-header .icon{position:absolute;right:1rem}.watchers .watchers-header.no-watchers{border-bottom:0}.watchers .watcher-single{-webkit-align-content:center;-ms-flex-line-pack:center;align-content:center;align-items:center;background:0 0;border-bottom:1px solid #b8b8b8;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;padding:.5rem 0 .3rem;vertical-align:middle}.watchers .watcher-single:last-child{border:0}.watchers .watcher-single:hover .icon-delete{opacity:1;-webkit-transition:opacity .2s ease-in;transition:opacity .2s ease-in}.watchers .watcher-avatar{-webkit-flex-basis:3rem;-ms-flex-preferred-size:3rem;flex-basis:3rem;max-width:3rem;padding-left:.3rem}.watchers .watcher-avatar img{width:100%}.watchers .watcher-name{color:#444;flex-grow:8;margin-left:1rem;position:relative}.watchers .icon-delete{opacity:0;position:absolute;right:.5rem;top:0;-webkit-transition:all .2s ease-in;transition:all .2s ease-in}.watchers .icon-delete:hover{color:red;-webkit-transition:color .3s ease-in;transition:color .3s ease-in}.level{background-color:#b8b8b8;border-radius:9px;height:18px;margin:0 auto;width:18px}.us-created-by .created-by .created-date,.us-created-by .created-by .created-title{font-size:.8rem}.us-created-by{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin-bottom:1rem;margin-top:.5rem;position:relative}.select-color,.select-color:after{background:#050505;position:absolute}.us-created-by .user-avatar{-webkit-flex-basis:40px;-ms-flex-preferred-size:40px;flex-basis:40px;-webkit-box-flex:0;-webkit-flex-grow:0;-ms-flex-positive:0;flex-grow:0}.us-created-by .user-avatar img{border-radius:8%;width:100%}.us-created-by .created-by{-webkit-flex-basis:70px;-ms-flex-preferred-size:70px;flex-basis:70px;-webkit-box-flex:3;-webkit-flex-grow:3;-ms-flex-positive:3;flex-grow:3;margin-left:.5rem}.us-created-by .created-by .created-date,.us-created-by .created-by .created-title{color:#b8b8b8;display:block}.us-created-by .created-by .created-user{font-size:1.2rem;color:#72a114;cursor:default}.us-created-by .created-by .created-user.editable{cursor:pointer}.wysiwyg code,.wysiwyg pre{font-size:.8rem}.wysiwyg h2{font-size:1.2rem;margin-bottom:.5rem}.wysiwyg h1{font-size:2rem;font-family:opensans-regular,Arial,Helvetica,sans-serif}.wysiwyg h2,.wysiwyg h3{font-family:opensans-semibold,Arial,Helvetica,sans-serif}.wysiwyg{line-height:1.4rem}.wysiwyg h1{line-height:2.5rem}.wysiwyg ol,.wysiwyg ul{list-style-position:inside;margin-left:1rem}.wysiwyg ul{list-style-type:disc}.wysiwyg dl dt{font-size:1em;font-weight:700;margin-top:16px;padding:0}.wysiwyg dl dd{margin-bottom:16px;padding:0 16px}.wysiwyg a{color:#72a114}.wysiwyg a:hover{color:#9dce0a}.wysiwyg p{line-height:1.4rem;margin-bottom:1rem}.wysiwyg code,.wysiwyg pre{background:#5e5e5e;color:#f5f5f5;direction:ltr;font-family:'courier new',monospace;margin-bottom:1rem;overflow:auto;unicode-bidi:embed;white-space:pre}.wysiwyg pre{line-height:1.4rem;padding:.5rem}.wysiwyg table{border:1px solid #b8b8b8;margin-bottom:1rem}.select-color a:last-child,.user .popover a:last-child{border:0}.wysiwyg table tbody tr:last-child{border-bottom:0}.wysiwyg tr{border-bottom:#b8b8b8 1px solid}.wysiwyg th{border-right:#b8b8b8 1px solid;padding:1rem 1rem 1rem .5rem}.wysiwyg th:last-child{border-right:0}.wysiwyg td{border-right:#b8b8b8 1px solid;padding:.5rem}.wysiwyg td:last-child{border-right:0}.wysiwyg img{max-width:100%}.select-color a{font-size:.8rem}.select-color,.select-color input{font-family:opensans-regular,Arial,Helvetica,sans-serif;line-height:1.3rem}.select-color{color:#fff;display:none;left:50px;list-style-type:none;margin:0;top:0;width:323px;z-index:99;border-radius:0 10px 10px 0;padding:15px}.select-color a{border-bottom:1px solid #444;color:#fff;display:block;padding:10px 2px}.select-color a:hover{color:#9dce0a;-webkit-transition:color .3s linear;transition:color .3s linear}.select-color a:hover.point{color:#fff}.select-color:after{height:15px;left:-7px;top:13px;transform:rotate(45deg);width:15px}.select-color li{float:left;margin:0 .5rem .5rem 0}.select-color li:nth-child(7n){margin-right:0}.select-color li:nth-last-child(-n+7){margin-bottom:0}.select-color .color{background-color:#b8b8b8;border-radius:2px;cursor:pointer;height:35px;width:35px}.select-color ul{float:left;margin-bottom:1rem}.select-color input{font-size:1rem;background-color:#f5f5f5;width:243px}.select-color input::-webkit-input-placeholder{color:#555}.select-color input::-moz-placeholder{color:#555}.select-color input:-moz-placeholder{color:#555}.select-color input:-ms-input-placeholder{color:#555}.select-color .selected-color{background:#b8b8b8;border-radius:2px;cursor:pointer;float:right;height:40px;width:40px}.loader p{font-size:1.2rem;color:#555}.loader{background-color:#fff;bottom:0;display:none;height:100%;left:0;opacity:0;position:fixed;right:0;top:0;width:100%;z-index:-100}.loader .container{align-items:center;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;height:100%;-ms-flex-pack:center;width:100%}.loader.active{background-color:rgba(255,255,255,.95);display:block;opacity:1;z-index:99900}.loading-bar{-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-direction:normal;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.loading-bar .item{-webkit-animation-duration:5s;animation-duration:5s;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-name:loadBar;animation-name:loadBar;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;background:#555;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;height:5px}.projects-nav,.projects-nav .projects-pagination{-webkit-flex-direction:column;-ms-flex-direction:column}.projects-nav .create-project-button-wrapper,.projects-nav form,.projects-nav h1{-webkit-flex-shrink:0;-ms-flex-negative:0}.loading-bar .item-0{-webkit-animation-delay:0s;animation-delay:0s;background:#bbe831}.loading-bar .item-1{-webkit-animation-delay:1s;animation-delay:1s;background:#237400}.loading-bar .item-2{-webkit-animation-delay:2s;animation-delay:2s;background:#e43050}.loading-bar .item-3{-webkit-animation-delay:3s;animation-delay:3s;background:#810061}.loading-bar .item-4{-webkit-animation-delay:4s;animation-delay:4s;background:#618000}.beta{left:0;position:absolute;top:0;z-index:9999}.markItUpHeader ul{background:#f5f5f5;padding:.3rem}.markItUpHeader ul li{display:inline-block;float:none}.markItUpHeader ul li a{opacity:.8}.markItUpHeader ul li a:hover{opacity:.3;-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.markItUpHeader ul .preview-icon{position:absolute;right:2.5rem}.duty-assigned-to,.markdown{position:relative}.markItUpContainer{padding:0}.preview .actions{background:#f5f5f5;margin-top:.5rem;min-height:2rem;padding:.3rem}a.help-button,a.help-markdown{font-size:.8rem;color:#b8b8b8}a.help-button:hover span,a.help-markdown:hover span{color:#444;-webkit-transition:color .2s linear;transition:color .2s linear}a.help-button:hover .icon,a.help-markdown:hover .icon{color:#9dce0a;-webkit-transition:color .2s linear;transition:color .2s linear}a.help-button .icon,a.help-markdown .icon{color:#b8b8b8;margin-right:.2rem}.popover.pop-points-open.horizontal li{white-space:nowrap;width:100%}.duty-assigned-to .assigned-to .assigned-title{font-size:.8rem}.duty-assigned-to .loading-spinner,.loading-spinner{animation:rotate 1.5s cubic-bezier(0,.05,.87,1.04)infinite alternate;margin:0 auto;max-height:1rem;max-width:1rem;-webkit-transform-origin:32 32;-ms-transform-origin:32 32;transform-origin:32 32}.duty-assigned-to{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin-top:1rem}.duty-assigned-to:hover .assigned-to .icon-delete{opacity:1;-webkit-transition:opacity .3s linear;transition:opacity .3s linear}.main-nav .active,.main-nav a:hover{color:#9dce0a;transition:color .3s linear;-webkit-transition:color .3s linear}.duty-assigned-to .loading-spinner{margin:1rem auto;max-height:2rem;max-width:2rem}.duty-assigned-to .user-avatar{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.duty-assigned-to .user-avatar img{border-radius:8%;width:100%}.duty-assigned-to .assigned-to{-webkit-box-flex:3;-webkit-flex-grow:3;-ms-flex-positive:3;flex-grow:3;margin-left:1rem}.duty-assigned-to .assigned-to .assigned-title{color:#b8b8b8;display:block}.duty-assigned-to .assigned-to .user-assigned{font-size:1.2rem;color:#72a114;cursor:default;line-height:1.5rem}.duty-assigned-to .assigned-to .user-assigned.editable{cursor:pointer}.duty-assigned-to .assigned-to .user-assigned .icon{vertical-align:top}.duty-assigned-to .assigned-to .assigned-name{max-width:80%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:inline-block}.duty-assigned-to .assigned-to .icon-delete{color:#b8b8b8;opacity:0;position:absolute;right:0;top:0}.duty-assigned-to .assigned-to .icon-delete:hover{color:red}.user .popover a{font-size:.8rem}.logo-container span,.main-nav a .item,.projects-list a{font-size:1.2rem}.menu{background-image:url(../images/menu.png);background-position:left bottom;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;height:100%;padding:0 .3rem;position:fixed;width:90px;z-index:999}.user .popover,.user .popover:after{position:absolute;background:#050505}.user .popover{font-family:opensans-regular,Arial,Helvetica,sans-serif;line-height:1.3rem}.logo-container{cursor:pointer;padding:15px 15px 10px}.logo-container img,.logo-container object,.logo-container svg{height:50px;width:50px}.logo-container span{color:#fff;display:block;margin-top:-5px}.logo-container sup{display:block;line-height:1rem}.main-nav{padding:0;position:relative}.main-nav li{margin-bottom:1rem}.main-nav a{color:#fff;display:block}.main-nav a span{display:block}.main-nav a .icon{font-size:2rem;line-height:2.2rem}.user{bottom:1rem;padding:0 10px;position:absolute;width:80px}.user .popover{bottom:0;color:#fff;display:none;left:60px;list-style-type:none;margin:0;padding:10px;width:150px;z-index:99}.user .popover a{border-bottom:1px solid #444;display:block;padding:10px 2px;color:#fff;text-align:left;text-transform:none}.user .popover a:hover.point{color:#fff}.user .popover:after{bottom:25px;height:15px;left:-6px;transform:rotate(45deg);width:15px}.lightbox-add-member select,.user img{width:80%}.lightbox,.projects-nav-overlay{right:0;top:0;display:none;bottom:0}.user .popover a:hover{color:#9dce0a;-webkit-transition:color .2s linear;transition:color .2s linear}.user img{margin:0 5px 10px}.user img:hover{border-color:#9dce0a;-webkit-transition:border-color .3s linear;transition:border-color .3s linear}.user .user-settings{position:relative}.user .settings{text-align:center}.user .settings a{color:#f5f5f5;margin-right:.5rem}.user .settings a:hover{color:#9dce0a;-webkit-transition:color .3s linear;transition:color .3s linear}.projects-list a.active,.projects-list a:hover,.recent-projects li,.recent-projects li:hover{-webkit-transition:background-color .3s linear}.projects-nav-overlay p{font-size:1rem}.projects-nav-overlay{background:url(/images/invitation_bg.jpg)center center no-repeat;background-size:cover}.projects-nav{background-color:#232323;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;height:100%;left:0;overflow:hidden;padding:2rem 1rem;position:fixed;top:0;-webkit-transform:translate3d(-300px,0,0);transform:translate3d(-300px,0,0);width:300px;z-index:99}.projects-nav form{flex-shrink:0}.projects-nav h1{color:#fff;flex-shrink:0;margin-bottom:2rem;text-align:center}.projects-nav input{background-color:#555;color:#f5f5f5}.projects-nav .icon-search{position:absolute;right:.7rem;top:.7rem}.projects-nav ul{left:0;margin-bottom:0;margin-top:1rem;position:relative;top:0;width:100%}.projects-nav .projects-pagination{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;margin-top:1rem;min-height:1px}.projects-nav .create-project-button-wrapper{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;flex-shrink:0;margin-top:1rem}.projects-nav .create-project-button-wrapper .create-project-button{-webkit-box-flex:8;-webkit-flex-grow:8;-ms-flex-positive:8;flex-grow:8;margin-right:.2rem;text-align:center}.projects-nav .create-project-button-wrapper .import-project-button{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;padding-left:.5rem;padding-right:.5rem;text-align:center}.projects-nav .create-project-button-wrapper .import-project-button .icon{color:#444;margin:0}.projects-nav .v-pagination-next,.projects-nav .v-pagination-previous{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0}.projects-list a{color:#f5f5f5;display:block;padding:1rem;position:relative;text-transform:uppercase;width:100%}.projects-list a.active,.projects-list a:hover{background-color:#555;color:#72a114;transition:background-color .3s linear}.projects-list a.active .icon,.projects-list a:hover .icon{opacity:1;-webkit-transition:opacity .3s linear;transition:opacity .3s linear}.close.lightbox,.open.lightbox{-webkit-transition:opacity .3s ease}.projects-list a .project-name{display:block;max-width:90%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.projects-list .icon{color:#f5f5f5;opacity:0;position:absolute;right:1rem;top:1rem}.projects-list li{border-bottom:2px solid #555}.projects-nav-overlay{left:0;opacity:0;position:fixed;width:100%;z-index:99900}.projects-nav-overlay .container{left:-200px;margin:15% auto 0;opacity:0;position:relative;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);width:150px}.projects-nav-overlay p{color:#9dce0a;padding-top:20px;text-align:center}.lightbox-add-member .help-text,.lightbox-delete-account .newsletter input+label,.lightbox-sprint-add-edit .delete-sprint,.lightbox-sprint-add-edit .last-sprint-name{font-size:.8rem}.lightbox-select-user .more-watchers{font-size:1rem}.lightbox .close,.lightbox-add-member .icon,.lightbox-ask-choice .subtitle,.lightbox-delete-account .subtitle,.lightbox-delete-project .subtitle,.lightbox-generic-ask .subtitle,.lightbox-generic-loading .progress-bar-wrapper .progress{font-size:1.2rem}.lightbox-delete-account .newsletter input+label{font-family:opensans-regular,Arial,Helvetica,sans-serif;line-height:1.3rem}.attachments-header .attachments-title,.colors-table .table-header,.lightbox-generic-loading .progress-bar-wrapper .progress,.single-attachment .attachment-name{font-family:opensans-semibold,Arial,Helvetica,sans-serif}.lightbox{background:rgba(255,255,255,.95);left:0;opacity:0;position:fixed;z-index:99910}.lightbox .close{position:absolute;right:2rem;top:2rem}.lightbox-add-member .add-member-wrapper fieldset,.lightbox-generic-form fieldset{position:relative}.open.lightbox{-webkit-align-content:center;-ms-flex-line-pack:center;align-content:center;-webkit-box-align:center;align-items:center;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-ms-flex-pack:center;opacity:1;transition:opacity .3s ease}.close.lightbox{opacity:0;transition:opacity .3s ease}.lightbox .title{text-align:center}.lightbox input,.lightbox select,.lightbox textarea{margin-bottom:1rem}.lightbox .button-gray,.lightbox .button-green{display:block;padding:12px;text-align:center}.lightbox-generic-loading .spin img,.loading-spinner{animation:rotate 1.5s cubic-bezier(0,.05,.87,1.04)infinite alternate;margin:0 auto;max-height:1rem;max-width:1rem;-webkit-transform-origin:32 32;-ms-transform-origin:32 32;transform-origin:32 32}.lightbox-generic-form form{-webkit-flex-basis:600px;-ms-flex-preferred-size:600px;flex-basis:600px;-webkit-box-flex:0;-webkit-flex-grow:0;-ms-flex-positive:0;flex-grow:0;max-width:600px}.lightbox-generic-form textarea{margin-bottom:1rem;max-height:9rem;min-height:7rem}.lightbox-generic-form label{border:1px solid #b8b8b8;color:#444;cursor:pointer;display:block;padding:7px 30px;-webkit-transition:all .2s ease-in;transition:all .2s ease-in}.lightbox-generic-form label:hover span{color:#fff}.lightbox-generic-form label span{color:#444;vertical-align:middle}.lightbox-generic-form .settings{-webkit-align-content:flex-start;-ms-flex-line-pack:start;align-content:flex-start;-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start;margin-bottom:1rem}.lightbox-generic-form .settings fieldset{-webkit-flex-basis:30%;-ms-flex-preferred-size:30%;flex-basis:30%;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;margin-right:.5rem;text-align:center}.lightbox-generic-bulk form,.lightbox-search form{flex-basis:600px;-webkit-box-flex:0;-webkit-flex-grow:0;-webkit-flex-basis:600px;-ms-flex-preferred-size:600px}.lightbox-generic-form .settings fieldset:last-child{margin:0}.lightbox-add-member .button,.lightbox-add-member .extra-text{margin-top:1rem}.lightbox-generic-form .settings .iocaine:hover,.lightbox-generic-form .settings .requirement:hover{background:#9dce0a;border:1px solid #9dce0a;color:#fff;-webkit-transition:all .2s ease-in;transition:all .2s ease-in}.lightbox-generic-form .settings .blocked{padding:8px 30px}.lightbox-generic-form .settings .blocked:hover{background:#ff8282;border:1px solid #ff8282;color:#fff;-webkit-transition:all .2s ease-in;transition:all .2s ease-in}.lightbox-generic-form .settings .client-requirement input:checked+label,.lightbox-generic-form .settings .iocaine-flag input:checked+label,.lightbox-generic-form .settings .team-requirement input:checked+label{background:#9dce0a;color:#fff}.lightbox-generic-form .settings .blocking-flag input:checked+label{background:red;color:#fff}.lightbox-generic-form .settings input{display:none}.lightbox-generic-bulk form{-ms-flex-positive:0;flex-grow:0;max-width:600px}.lightbox-generic-bulk textarea{margin-bottom:1rem;max-height:12rem;min-height:15rem}.lightbox-block textarea,.lightbox-create-issue textarea{margin-bottom:1rem;max-height:12rem;min-height:8rem}.lightbox-search form{-ms-flex-positive:0;flex-grow:0;max-width:600px}.lightbox-search input{margin-bottom:1rem}.lightbox-add-member .add-member-wrapper{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin-bottom:.5rem}.lightbox-add-member .add-member-wrapper:last-child,.lightbox-add-member input,.lightbox-add-member select{margin-bottom:0}.lightbox-add-member .add-member-wrapper fieldset:first-child{-webkit-flex-basis:400px;-ms-flex-preferred-size:400px;flex-basis:400px;-webkit-box-flex:3;-webkit-flex-grow:3;-ms-flex-positive:3;flex-grow:3}.lightbox-add-member .add-member-wrapper fieldset:last-child{-webkit-flex-basis:200px;-ms-flex-preferred-size:200px;flex-basis:200px;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;margin-left:.5rem}.lightbox-add-member .icon{margin-left:.5rem}.lightbox-add-member .icon-delete:hover{color:red}.lightbox-add-member .help-text{padding:.5rem 1rem}.lightbox-add-member .checksley-error-list{right:.5rem}.lightbox-add-member .checksley-error-list li{display:none}.lightbox-add-member .checksley-error-list li:first-child{display:block}.lightbox-sprint-add-edit form{-webkit-flex-basis:600px;-ms-flex-preferred-size:600px;flex-basis:600px;-webkit-flex-flow:0;-ms-flex-flow:0;flex-flow:0;max-width:600px}.lightbox-delete-account form,.lightbox-delete-project form,.lightbox-generic-ask form{-webkit-flex-basis:420px;-ms-flex-preferred-size:420px}.lightbox-sprint-add-edit .last-sprint-name{color:#555;opacity:1;position:absolute;right:1rem;top:.7rem;-webkit-transition:opacity .3s linear;transition:opacity .3s linear}.lightbox-sprint-add-edit .last-sprint-name.disappear{opacity:0;-webkit-transition:opacity .3s linear;transition:opacity .3s linear}.lightbox-sprint-add-edit .dates{margin-bottom:1rem}.lightbox-sprint-add-edit .dates div{float:left;margin-right:1%;position:relative;width:49%}.lightbox-sprint-add-edit .dates div:last-child{margin:0;width:50%}.lightbox-ask-choice .options a:first-child,.lightbox-delete-account .newsletter input,.lightbox-delete-account .options a:first-child,.lightbox-delete-project .options a:first-child,.lightbox-generic-ask .options a:first-child{margin-right:.5rem}.lightbox-sprint-add-edit .delete-sprint{color:#444;display:block;margin-top:1rem;text-align:right}.lightbox-sprint-add-edit .delete-sprint a{color:#b8b8b8;margin-left:.5rem;-webkit-transition:color .3s linear;transition:color .3s linear}.lightbox-sprint-add-edit .delete-sprint a:hover{color:red;-webkit-transition:color .3s linear;transition:color .3s linear}.lightbox-generic-ask form{flex-basis:420px;-webkit-flex-flow:0;-ms-flex-flow:0;flex-flow:0;max-width:420px}.lightbox-generic-ask .message,.lightbox-generic-ask .subtitle{display:block;line-height:2rem;text-align:center}.lightbox-generic-ask .options{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.lightbox-generic-ask .options a{padding:8px 0;text-align:center;width:100%}.lightbox-ask-choice{text-align:center}.lightbox-ask-choice form{-webkit-flex-basis:420px;-ms-flex-preferred-size:420px;flex-basis:420px;-webkit-box-flex:0;-webkit-flex-grow:0;-ms-flex-positive:0;flex-grow:0}.lightbox-ask-choice .question,.lightbox-ask-choice .subtitle{display:block;line-height:1.5rem;text-align:center}.lightbox-ask-choice .replacement,.lightbox-ask-choice .replacement span{display:block}.lightbox-ask-choice .options{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.lightbox-ask-choice .options a{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;padding:8px 0;text-align:center}.lightbox-delete-account form{flex-basis:420px;-webkit-box-flex:0;-webkit-flex-grow:0;-ms-flex-positive:0;flex-grow:0;width:420px}.lightbox-delete-account .question,.lightbox-delete-account .subtitle{display:block;line-height:2rem;text-align:center}.lightbox-delete-account .newsletter{margin-top:1rem;text-align:center}.lightbox-delete-account .options{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.lightbox-delete-account .options a{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;padding:8px 0;text-align:center}.lightbox-delete-project form{flex-basis:420px;-webkit-box-flex:0;-webkit-flex-grow:0;-ms-flex-positive:0;flex-grow:0;width:420px}.lightbox-delete-project .question,.lightbox-delete-project .subtitle{display:block;line-height:2rem;text-align:center}.lightbox-delete-project .options{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.lightbox-delete-project .options a{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;padding:8px 0;text-align:center}.lightbox-generic-error section,.lightbox-generic-loading section,.lightbox-generic-success section{-webkit-flex-basis:500px;-ms-flex-preferred-size:500px;flex-basis:500px;-webkit-box-flex:0;-webkit-flex-grow:0;-ms-flex-positive:0;flex-grow:0;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;width:500px}.lightbox-generic-error h2,.lightbox-generic-loading h2,.lightbox-generic-success h2{line-height:2rem}.lightbox-generic-error p,.lightbox-generic-loading p,.lightbox-generic-success p{text-align:center}.lightbox-generic-loading .spin{margin:1rem auto;width:5rem}.lightbox-generic-loading .spin img{max-height:100%;max-width:100%;width:100%}.lightbox-generic-loading .progress-bar-wrapper{background:#e8e8e8;height:30px;margin-bottom:1rem;padding:3px;position:relative}.lightbox-generic-loading .progress-bar-wrapper .bar{background:#9dce0a;height:24px;position:absolute;-webkit-transition:width .1s linear;transition:width .1s linear}.lightbox-generic-loading .progress-bar-wrapper .progress{background:#e8e8e8;bottom:35px;color:#555;padding:.3rem;position:absolute;-webkit-transition:left .1s linear;transition:left .1s linear}.lightbox-create-issue form{-webkit-flex-basis:600px;-ms-flex-preferred-size:600px;flex-basis:600px;-webkit-box-flex:0;-webkit-flex-grow:0;-ms-flex-positive:0;flex-grow:0;width:600px}.lightbox-create-issue .fieldset-row{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.lightbox-create-issue .fieldset-row fieldset{-webkit-flex-basis:100px;-ms-flex-preferred-size:100px;flex-basis:100px;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;margin-right:.5rem;width:30%}.lightbox-block .form,.lightbox-select-user .form{-webkit-box-flex:0;-webkit-flex-grow:0;-ms-flex-positive:0}.lightbox-create-issue .fieldset-row fieldset:last-child{margin:0}.lightbox-block .form{-webkit-flex-basis:420px;-ms-flex-preferred-size:420px;flex-basis:420px;flex-grow:0;width:420px}.lightbox-select-user .form{-webkit-flex-basis:600px;-ms-flex-preferred-size:600px;flex-basis:600px;flex-grow:0;width:600px}.lightbox-select-user .watchers{margin-top:1rem;min-height:440px}.lightbox-select-user .watchers .watcher-name{-webkit-box-flex:12;-webkit-flex-grow:12;-ms-flex-positive:12;flex-grow:12}.lightbox-select-user .watcher-single{position:relative}.lightbox-select-user .watcher-single.active,.lightbox-select-user .watcher-single:hover{background:#edfad4;cursor:pointer}.lightbox-select-user .watcher-single:hover{-webkit-transition:background .3s linear;transition:background .3s linear}.lightbox-select-user .watcher-single.active .icon{opacity:1;right:1rem;top:1.3rem}.lightbox-select-user .more-watchers{padding:.5rem;text-align:center}.lb-create-edit-userstory .points-per-role{margin-bottom:1rem}.lb-create-edit-userstory .points-per-role li{margin:.5rem .1rem}.attachments,.related-tasks{margin-bottom:2rem}.colors-table .table-header{font-size:1rem;border-bottom:3px solid #f5f5f5}.colors-table .icon,.colors-table .icon-check-square{font-size:1.2rem}.colors-table .table-header:hover{background:0 0}.colors-table .table-header .row{padding-left:50px}.colors-table form:last-child .row{border:0}.colors-table .row{-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;border-bottom:1px solid #f5f5f5;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;padding:1rem}.attachments-header,.category-config .category-item,.related-tasks-header{-webkit-box-pack:justify;justify-content:space-between}.colors-table .row:hover{background:#f6fceb;cursor:move;-webkit-transition:background .2s ease-in;transition:background .2s ease-in}.colors-table .row:hover .icon{opacity:1;-webkit-transition:opacity .2s ease-in;transition:opacity .2s ease-in}.colors-table .row:hover .options-column{opacity:1;-webkit-transition:opacity .3s linear;transition:opacity .3s linear}.colors-table .row:last-child{border:0}.colors-table .row.edition .current-color{cursor:pointer}.colors-table .row.edition,.colors-table .row.new-value{padding-left:50px}.colors-table .row.hidden{display:none}.colors-table .row .color-column{-webkit-flex-basis:60px;-ms-flex-preferred-size:60px;flex-basis:60px;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;max-width:100px;position:relative}.colors-table .row .is-archived-column,.colors-table .row .is-closed-column,.colors-table .row .options-column,.colors-table .row .status-wip-limit{-webkit-flex-basis:100px;-ms-flex-preferred-size:100px;flex-basis:100px;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.colors-table .row .status-name,.colors-table .row .status-slug{-webkit-box-flex:6;-webkit-flex-grow:6;-ms-flex-positive:6;flex-grow:6;-webkit-flex-basis:150px;-ms-flex-preferred-size:150px;flex-basis:150px}.colors-table .row .status-name{padding:0 10px;position:relative}.colors-table .row .status-name span{max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}.colors-table .row .status-slug{padding:0 10px}.colors-table .row .is-archived-column,.colors-table .row .status-wip-limit{max-width:130px;text-align:center;padding:0 0 0 10px}.single-attachment .attachment-name,.single-attachment .attachment-settings,.single-attachment .attachment-size,.wizard-create-project .create-step1 fieldset,.wizard-create-project .wizard-action a{-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.colors-table .row .options-column{max-width:100px;opacity:0;text-align:right}.colors-table .row .is-closed-column{max-width:130px;text-align:center}.colors-table .row-edit .options-column{opacity:1}.colors-table .current-color{background-color:#b8b8b8;border-radius:2px;height:40px;width:40px}.colors-table .icon{color:#b8b8b8;margin-right:1rem;opacity:0}.colors-table .icon:hover{color:#72a114;-webkit-transition:all .2s ease-in;transition:all .2s ease-in}.category-config .category-items,.category-config .category-items.open{-webkit-transition:max-height .5s ease-in;transition:max-height .5s ease-in}.colors-table .icon-delete:hover{color:red}.colors-table .icon-check-square{color:#72a114}.category-config{border-bottom:1px solid #b8b8b8}.category-config .resume{-webkit-box-align:space-between;-webkit-align-items:space-between;-ms-flex-align:space-between;align-items:space-between;cursor:pointer;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding:1rem;position:relative}.attachments-header,.category-config .category-item,.duty-custom-fields .custom-fields-header,.home-project,.home-projects-list,.open.wizard-create-project,.related-tasks-body .avatar,.related-tasks-body .row,.related-tasks-header{-webkit-box-align:center;-webkit-align-items:center}.category-config .resume-title{width:280px}.category-config .count{color:#b8b8b8;float:left;padding-right:5px}.category-config .summary-role{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;width:280px}.category-config .summary-role .role-summary-single{background:#b8b8b8;display:inline-block;height:20px;margin-right:.1rem;width:15px}.category-config .summary-role .role-summary-single.active{background:#72a114}.category-config .summary-role .role-summary-single.inactive{background:#555}.category-config .icon{font-size:2rem;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;text-align:right}.attachments-header,.related-tasks-header{-ms-flex-line-pack:justify;-ms-flex-pack:justify}.add-attach span,.more-attachments,.related-tasks-body .pop-status a,.related-tasks-body .row,.single-attachment,.single-attachment .editable-attachment-comment{font-size:.8rem}.category-config .category-items{max-height:0;overflow:hidden;background-color:#f5f5f5;width:100%}.category-config .category-items.open{max-height:400px}.category-config .category-items .items-container{padding:1rem}.category-config .category-item{-ms-flex-align:center;align-items:center;border-bottom:1px solid #f5f5f5;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-ms-flex-pack:justify;padding:.5rem .5rem .5rem 2rem}.category-config .category-item:last-child{border-bottom:0}.attachments-header .attachments-title{font-size:1rem;color:#444}.attachments-header .icon,.single-attachment .attachment-settings .editable-settings,.single-attachment .attachment-settings .settings,.single-attachment .icon-delete{font-size:1.2rem}.attachments-header{-webkit-align-content:space-between;align-content:space-between;-ms-flex-align:center;align-items:center;background:#f5f5f5;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding:.5rem 1rem}.attachments-header .attachments-num,.attachments-header .attachments-text{margin-right:.1rem}.attachments-header .icon{color:#444;cursor:pointer}.attachments-header .icon:hover{color:#72a114;-webkit-transition:color .2s ease-in;transition:color .2s ease-in}.single-attachment{-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;border-bottom:1px solid #f5f5f5;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding:.5rem 0 .5rem 1rem;position:relative}.single-attachment:hover .attachment-settings .settings{opacity:1;-webkit-transition:opacity .2s ease-in;transition:opacity .2s ease-in}.more-attachments:hover,.single-attachment.ui-sortable-helper{-webkit-transition:background .2s ease-in;transition:background .2s ease-in}.single-attachment.ui-sortable-helper{background:#f6fceb}.single-attachment.deprecated,.single-attachment.deprecated .attachment-name a{color:#b8b8b8}.single-attachment.sortable-placeholder{background:#f5f5f5;height:40px}.single-attachment .attachment-name{max-width:200px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-webkit-flex-basis:35%;-ms-flex-preferred-size:35%;flex-basis:35%;-webkit-box-flex:1;padding-right:1rem}.single-attachment .attachment-name .icon{margin-right:.5rem}.single-attachment .attachment-size{color:#b8b8b8;-webkit-flex-basis:15%;-ms-flex-preferred-size:15%;flex-basis:15%;-webkit-box-flex:1;margin-right:.5rem}.single-attachment .attachment-comments,.single-attachment .editable-attachment-comment{-webkit-flex-basis:35%;-ms-flex-preferred-size:35%;flex-basis:35%;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.single-attachment .attachment-comments span,.single-attachment .editable-attachment-comment span{color:#555}.single-attachment .attachment-settings{-webkit-flex-basis:15%;-ms-flex-preferred-size:15%;flex-basis:15%;-webkit-box-flex:1}.single-attachment .attachment-settings .editable-settings,.single-attachment .attachment-settings .settings{color:#b8b8b8;display:block;position:absolute}.single-attachment .attachment-settings .editable-settings:hover,.single-attachment .attachment-settings .settings:hover{color:#72a114}.single-attachment .attachment-settings .settings{opacity:0;top:.5rem}.single-attachment .attachment-settings .editable-settings{opacity:1;top:1rem}.single-attachment .attachment-settings .icon-edit,.single-attachment .attachment-settings .icon-floppy{right:3.5rem}.single-attachment .attachment-settings .icon-delete{right:2rem}.single-attachment .attachment-settings .icon-delete:hover{color:red}.single-attachment .attachment-settings .icon-drag-v{cursor:move;right:0}.single-attachment .icon-delete{color:#b8b8b8}.single-attachment .icon-delete:hover{color:red}.single-attachment .editable-attachment-deprecated{padding-left:1rem}.single-attachment .editable-attachment-deprecated span{color:#b8b8b8}.single-attachment .editable-attachment-deprecated input{margin-right:.2rem;vertical-align:middle}.single-attachment .editable-attachment-deprecated input:checked+span{color:#444}.single-attachment .percentage{background:rgba(114,161,20,.1);bottom:0;height:40px;left:0;position:absolute;top:0;width:45%}.more-attachments{border-bottom:1px solid #b8b8b8;display:block;padding:1rem 0 1rem 1rem}.more-attachments span{color:#b8b8b8}.more-attachments .more-attachments-num{color:#72a114;margin-left:.5rem}.more-attachments:hover{background:#f6fceb}.add-attach{cursor:pointer;overflow:hidden;position:relative}.add-attach input{display:none}.add-attach span{color:#b8b8b8}.related-tasks-body .task-name input,.related-tasks-header .related-tasks-title{font-size:1rem}.related-tasks-body .iocaine .icon-iocaine,.related-tasks-body .iocaine:hover .icon-iocaine,.related-tasks-body .task-settings a,.related-tasks-header .icon{font-size:1.2rem}.related-tasks-body .pop-status{font-family:opensans-regular,Arial,Helvetica,sans-serif;line-height:1.3rem}.related-tasks-header .related-tasks-title{font-family:opensans-semibold,Arial,Helvetica,sans-serif}.related-tasks{position:relative}.related-tasks-header{-webkit-align-content:space-between;align-content:space-between;-ms-flex-align:center;align-items:center;background:#f5f5f5;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding:.5rem 1rem}.open.wizard-create-project,.related-tasks-body .row{align-content:center;-webkit-box-pack:center;-webkit-justify-content:center;-webkit-align-content:center;-ms-flex-line-pack:center}.related-tasks-header .icon{color:#444;cursor:pointer}.related-tasks-header .icon:hover{color:#72a114;-webkit-transition:color .2s ease-in;transition:color .2s ease-in}.related-tasks-body{width:100%}.related-tasks-body .row{-ms-flex-align:center;align-items:center;border-bottom:1px solid #f5f5f5;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;padding:.5rem 0 .5rem .5rem;position:relative;text-align:left;width:100%}.related-tasks-body .row:hover{background:0 0}.related-tasks-body .row:hover .task-settings{opacity:1;-webkit-transition:all .2s ease-in;transition:all .2s ease-in}.related-tasks-body .row:last-child{border:0}.related-tasks-body .row .tasks{overflow:hidden;width:100%}.related-tasks-body .row .status{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;width:100px}.related-tasks-body .row .assigned-to{cursor:pointer;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;width:150px}.related-tasks-body .related-task-create-form{padding:0}.related-tasks-body .related-task-create-form.active{padding:.5rem 0 .5rem .5rem}.related-tasks-body .status{position:relative;text-align:left}.related-tasks-body .status:hover .icon{opacity:1;-webkit-transition:opacity .2s ease-in;transition:opacity .2s ease-in}.related-tasks-body .status .not-clickable:hover{color:#444}.related-tasks-body .status .popover a{text-align:left;width:100%}.related-tasks-body .status .popover .point{text-align:center}.related-tasks-body .status .icon{color:#b8b8b8;margin-left:.2rem;opacity:0}.related-tasks-body .pop-status{background:#050505;color:#fff;display:none;left:40%;list-style-type:none;margin:0;padding:10px 1rem 10px 10px;position:absolute;top:0;width:200px;z-index:99}.related-tasks-body .pop-status a{border-bottom:1px solid #444;color:#fff;display:block;padding:10px 2px}.related-tasks-body .pop-status a:last-child{border:0}.related-tasks-body .pop-status a:hover{color:#9dce0a;-webkit-transition:color .3s linear;transition:color .3s linear}.related-tasks-body .pop-status a:hover.point{color:#fff}.related-tasks-body .pop-status:after{background:#050505;height:15px;position:absolute;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg);width:0}.related-tasks-body .pop-status.fix{bottom:0;top:auto}.related-tasks-body .task-name{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;position:relative}.related-tasks-body .task-name a{display:inline-block;max-width:90%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.related-tasks-body .task-name input{margin-right:1rem;padding:3px;width:85%}.related-tasks-body .task-name.loading{margin:0;padding:8px;text-align:center;width:100%}.related-tasks-body .task-name.loading span{-webkit-animation:loading .5s linear,spin 1s linear infinite;animation:loading .5s linear,spin 1s linear infinite}.wizard-create-project .wizard-step,.wizard-create-project .wizard-step.active{animation:formSlide .4s ease-in-out;-webkit-animation:formSlide .4s ease-in-out}.related-tasks-body .blocked,.related-tasks-body .blocked:hover{background:#ff8282;color:#fff}.related-tasks-body .blocked a,.related-tasks-body .blocked:hover a{color:#fff!important}.related-tasks-body .blocked .icon,.related-tasks-body .blocked .icon:hover,.related-tasks-body .blocked a:hover,.related-tasks-body .blocked:hover .icon,.related-tasks-body .blocked:hover .icon:hover,.related-tasks-body .blocked:hover a:hover{color:#fff}.related-tasks-body .icon-iocaine{display:none}.related-tasks-body .iocaine,.related-tasks-body .iocaine:hover{background:rgba(157,206,10,.3)}.related-tasks-body .iocaine .icon-iocaine,.related-tasks-body .iocaine:hover .icon-iocaine{display:inline-block;margin-right:.5rem;vertical-align:top}.related-tasks-body .task-settings{margin:0 0 0 2rem;opacity:0;position:absolute;right:0;top:.1rem;width:10%}.related-tasks-body .task-settings a{color:#b8b8b8;-webkit-transition:all .2s ease-in;transition:all .2s ease-in}.related-tasks-body .task-settings a:hover{color:#444;-webkit-transition:all .2s ease-in;transition:all .2s ease-in}.related-tasks-body .assigned-to{position:relative;text-align:left}.related-tasks-body .task-assignedto{position:relative}.related-tasks-body .task-assignedto.editable{cursor:pointer}.related-tasks-body .task-assignedto:hover .icon{opacity:1;-webkit-transition:opacity .3s linear;transition:opacity .3s linear}.related-tasks-body .task-assignedto figcaption{max-width:50%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.related-tasks-body .task-assignedto .icon{opacity:0;position:absolute;right:.5rem;top:.5rem;-webkit-transition:opacity .3s linear;transition:opacity .3s linear}.changes-title .icon,.changes-title:hover .icon{-webkit-transition:all .2s linear;transition:all .2s linear}.related-tasks-body .avatar{-ms-flex-align:center;align-items:center;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.related-tasks-body .avatar img{-webkit-flex-basis:35px;-ms-flex-preferred-size:35px;flex-basis:35px;height:35px;width:35px}.related-tasks-body .avatar figcaption{margin-left:.5rem}.activity-single .comment-restore,.activity-single .date,.activity-single .deleted-comment,.activity-single.deleted-comment,.change-entry .activity-fromto,.more-activity,.more-comments,.show-more-comments{font-size:.8rem}.activity-single .deleted-comment .comment-body p,.activity-single.deleted-comment .comment-body p{font-size:1rem}.history-tabs{font-family:OpenSans-CondLight,Arial,Helvetica,sans-serif}.change-entry .activity-changed,.duty-custom-fields .custom-field-data .custom-field-name,.duty-custom-fields .custom-fields-header{font-family:opensans-semibold,Arial,Helvetica,sans-serif}.history{margin-bottom:1rem}.changes-title{display:block;padding:.5rem}.changes-title:hover .icon{color:#72a114;-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.changes-title .icon{color:#444;float:right;-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0)}.history-tabs a,.history-tabs a:hover{-webkit-transition:color .2s ease-in;transition:color .2s ease-in}.change-entry{border-bottom:1px solid #b8b8b8;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding:.5rem}.change-entry:last-child{border-bottom:0}.change-entry .activity-changed,.change-entry .activity-fromto{-webkit-flex-basis:50px;-ms-flex-preferred-size:50px;flex-basis:50px;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.change-entry .activity-fromto{word-wrap:break-word}.history-tabs{border-bottom:3px solid #b8b8b8;margin-bottom:0;padding:.5rem 0}.activity-single,.more-comments,.show-more-comments{border-bottom:1px solid #b8b8b8}.history-tabs li{font-size:1.2rem;display:inline-block}.history-tabs li:first-child{border-right:1px solid #b8b8b8}.history-tabs a{color:#b8b8b8;padding:0 2rem}.history-tabs a.active{color:#444}.history-tabs a:hover{color:#72a114}.history-tabs .icon{margin-right:.5rem}.add-comment:after{clear:both;display:table}.add-comment.active .button-green{display:block}.add-comment.active textarea{height:6rem;-webkit-transition:height .3s ease-in;transition:height .3s ease-in}.add-comment.active .help-markdown{opacity:1;-webkit-transition:opacity .3s linear;transition:opacity .3s linear}.add-comment.active .preview-icon{opacity:1;position:absolute;right:1rem}.add-comment .help-markdown,.add-comment .preview-icon,.comment-list.activeanimation .comment-single.ng-enter:last-child,.comment-list.activeanimation .comment-single.ng-leave.ng-leave-active:last-child{opacity:0}.add-comment textarea{background:#fff;height:5rem;margin-bottom:.5rem;min-height:41px}.add-comment .save-comment{color:#fff;float:right}.add-comment .button-green{display:none}.add-comment .edit,.add-comment .preview-icon{position:absolute;right:1rem}.show-more-comments{color:#b8b8b8;display:block;padding:1rem 0 1rem 1rem}.show-more-comments:hover{background:#f6fceb;-webkit-transition:background .2s ease-in;transition:background .2s ease-in}.more-comments{color:#b8b8b8;display:block;padding:1rem}.more-comments .prev-comments-num{color:#72a114;margin-left:.5rem}.comment-list.activeanimation .comment-single.ng-enter:last-child,.comment-list.activeanimation .comment-single.ng-leave:last-child{-webkit-transition:all .3s ease-in;transition:all .3s ease-in}.comment-list.activeanimation .comment-single.ng-enter.ng-enter-active:last-child,.comment-list.activeanimation .comment-single.ng-leave:last-child{opacity:1}.activity-single{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding:2rem 0;position:relative}.activity-single:hover .comment-delete,.activity-single:hover .comment-restore{opacity:1;-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.activity-single:first-child{margin-top:0}.activity-single:last-child{border-bottom:0}.activity-single .deleted-comment,.activity-single.deleted-comment{color:#b8b8b8;padding:.5rem}.activity-single .deleted-comment a,.activity-single.deleted-comment a{color:#b8b8b8;margin-left:.3rem}.activity-single .deleted-comment a:hover,.activity-single.deleted-comment a:hover{color:#72a114;-webkit-transition:color .2s linear;transition:color .2s linear}.activity-single .deleted-comment img,.activity-single.deleted-comment img{-webkit-filter:grayscale(100%);filter:grayscale(100%);opacity:.5}.activity-single .deleted-comment .comment-body,.activity-single.deleted-comment .comment-body{display:none;margin:.2rem 0 .5rem}.activity-single .activity-username,.activity-single .username{color:#72a114;margin-bottom:.5rem}.activity-single .comment-restore{color:#b8b8b8;position:absolute;right:0;top:.4rem}.activity-single .comment-restore .icon{vertical-align:baseline}.activity-single .comment-restore:hover{color:#72a114;-webkit-transition:color .2s linear;transition:color .2s linear}.activity-single .activity-user{-webkit-flex-basis:60px;-ms-flex-preferred-size:60px;flex-basis:60px;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;margin-right:1rem}.wizard-create-project .create-step1 fieldset:first-child,.wizard-create-project .wizard-action a:first-child{margin-right:.5rem}.activity-single .activity-user img{width:100%}.activity-single .activity-content{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;width:calc(100% - 80px)}.activity-single .changes{background:#f5f5f5}.activity-single .changes .change-entry{display:none}.activity-single .changes .change-entry.active{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.activity-single .date{color:#b8b8b8;margin-left:1rem}.activity-single .wysiwyg{margin-bottom:0}.activity-single .comment-delete{color:red;opacity:0;position:absolute;right:0;top:2rem;-webkit-transition:all .2s linear;transition:all .2s linear}.activity-single .comment-delete:hover{color:#ff8282;-webkit-transition:color .2s linear;transition:color .2s linear}.close.wizard-create-project,.open.wizard-create-project{-webkit-transition:opacity .3s ease;transition:opacity .3s ease}.activity-single.activity .change-entry{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.more-activity{border-bottom:1px solid #b8b8b8;color:#b8b8b8;display:block;padding:1rem}.more-activity .prev-activity-num{color:#72a114;margin-left:.5rem}.wizard-create-project p{font-size:.8rem}.wizard-create-project .close{font-size:1.2rem}.wizard-create-project{bottom:0;display:none;left:0;opacity:0;position:fixed;right:0;top:0;z-index:99910;background:url(/images/invitation_bg.jpg)center center no-repeat;background-size:cover;color:#fff;text-align:center}.open.wizard-create-project{-ms-flex-align:center;align-items:center;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;opacity:1}.close.wizard-create-project{opacity:0}.wizard-create-project input,.wizard-create-project select,.wizard-create-project textarea{margin-bottom:1rem;background:rgba(255,255,255,.7)}.wizard-create-project .button-gray,.wizard-create-project .button-green{display:block;padding:12px;text-align:center}.wizard-create-project form{width:500px}.wizard-create-project .title{text-align:center;width:100%}.wizard-create-project h1,.wizard-create-project p{color:#fff}.wizard-create-project h1{line-height:1.5rem}.wizard-create-project p{opacity:.8}.wizard-create-project input::-webkit-input-placeholder,.wizard-create-project select::-webkit-input-placeholder,.wizard-create-project textarea::-webkit-input-placeholder{color:#444}.wizard-create-project input::-moz-placeholder,.wizard-create-project select::-moz-placeholder,.wizard-create-project textarea::-moz-placeholder{color:#444}.wizard-create-project input:-moz-placeholder,.wizard-create-project select:-moz-placeholder,.wizard-create-project textarea:-moz-placeholder{color:#444}.wizard-create-project input:-ms-input-placeholder,.wizard-create-project select:-ms-input-placeholder,.wizard-create-project textarea:-ms-input-placeholder{color:#444}.wizard-create-project .close{position:absolute;right:2rem;top:2rem;color:#fff}.wizard-create-project .close:hover{color:#ff8282}.wizard-create-project .wizard-step{-webkit-animation-direction:alternate-reverse;animation-direction:alternate-reverse;display:none}.admin-project-export-result .spin img,.filters-inner .loading .loading-spinner,.loading-spinner{animation:rotate 1.5s cubic-bezier(0,.05,.87,1.04)infinite alternate}.wizard-create-project .wizard-step.active.create-step1,.wizard-create-project .wizard-step.active.create-step2,.wizard-create-project .wizard-step.active.create-step3{display:block}.wizard-create-project .wizard-action div{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.wizard-create-project .wizard-action a{color:#fff;display:inline-block;-webkit-flex-basis:40%;-ms-flex-preferred-size:40%;flex-basis:40%;-webkit-box-flex:1}.wizard-create-project .create-step1 .template-inner{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.wizard-create-project .create-step1 fieldset{-webkit-box-flex:1}.wizard-create-project .create-step1 input{display:none}.wizard-create-project .create-step1 input:checked+label{background:rgba(157,206,10,.7);-webkit-transition:background .3s ease-in;transition:background .3s ease-in}.wizard-create-project .create-step1 input+label{background:rgba(245,245,245,.7);cursor:pointer;display:block;margin-bottom:1rem;padding:1rem;text-align:center;-webkit-transition:background .3s ease-in;transition:background .3s ease-in}.wizard-create-project .create-step1 input+label:hover{background:rgba(114,161,20,.7);-webkit-transition:background .3s ease-in;transition:background .3s ease-in}.wizard-create-project .create-step1 input+label .icon{font-size:3rem;color:#fff}.wizard-create-project .create-step1 h2{color:#fff;margin:.5rem 0 0;text-transform:uppercase}.wizard-create-project .create-step1 p{text-align:center}.wizard-create-project .progress-bar{bottom:0;height:.5rem;left:0;position:absolute;width:100%}.wizard-create-project .step1 .bar{-webkit-transition:width .6s ease-in-out;transition:width .6s ease-in-out;width:25%}.wizard-create-project .step1 .progress-state span:nth-child(1){color:#fff;-webkit-transition:color .3s ease-in-out;transition:color .3s ease-in-out;-webkit-transition-delay:.6s;transition-delay:.6s}.wizard-create-project .step2 .bar{-webkit-transition:width .6s ease-in-out;transition:width .6s ease-in-out;width:75%}.wizard-create-project .step2 .progress-state span:nth-child(1),.wizard-create-project .step2 .progress-state span:nth-child(2){color:#fff;-webkit-transition:color .3s ease-in-out;transition:color .3s ease-in-out;-webkit-transition-delay:.6s;transition-delay:.6s}.wizard-create-project .progress-state{position:absolute;width:100%}.wizard-create-project .progress-state span{color:rgba(255,255,255,.5);display:inline-block;margin-left:-100px;position:absolute;text-align:center;top:-2rem;-webkit-transition:all 1s ease-in;transition:all 1s ease-in;width:200px}.blocked .external-reference a,.external-reference a{-webkit-transition:color .3s linear;transition:color .3s linear}.wizard-create-project .progress-state span:nth-child(1){left:25%}.wizard-create-project .progress-state span:nth-child(2){left:75%}.wizard-create-project .progress-bar-wrapper{background:rgba(255,255,255,.3);height:.5rem}.wizard-create-project .bar{background:rgba(157,206,10,.9);height:.5rem;left:0;position:absolute;top:0;width:0}.blocked .external-reference,.blocked .external-reference a{color:#fff}.blocked .external-reference a:hover{color:#ff8282}.external-reference{font-size:.8rem;color:#b8b8b8;margin-top:.5rem}.external-reference a:hover{color:#72a114}.external-reference a:first-child{border:0}.duty-custom-fields .custom-field-data .custom-field-description{font-size:.8rem}.duty-custom-fields .custom-fields-header .icon-arrow-bottom{font-size:1.2rem;cursor:pointer;-webkit-transform:rotate(-90deg);-ms-transform:rotate(-90deg);transform:rotate(-90deg);-webkit-transition:-webkit-transform .2s linear;transition:transform .2s linear}.duty-custom-fields{margin-bottom:2rem}.duty-custom-fields .custom-fields-header{-webkit-align-content:space-between;-ms-flex-line-pack:justify;align-content:space-between;-ms-flex-align:center;align-items:center;background:#f5f5f5;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;padding:.5rem 1rem}.home-project,.home-projects-list,.search-result-table .row,.sprints .filter-closed-sprints{-webkit-align-content:center;align-content:center}.duty-custom-fields .custom-fields-header .icon-arrow-bottom.open{-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);-webkit-transition:-webkit-transform .2s linear;transition:transform .2s linear}.duty-custom-fields .custom-fields-body{max-height:0;-webkit-transition:max-height .5s ease-in;transition:max-height .5s ease-in;overflow:hidden}.duty-custom-fields .custom-fields-body.open{-webkit-transition:max-height .5s ease-in;transition:max-height .5s ease-in;max-height:1000px}.duty-custom-fields .custom-field-single{border-bottom:1px solid #f5f5f5;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding:1rem}.duty-custom-fields .custom-field-single:hover .custom-field-options{opacity:1}.duty-custom-fields .custom-field-single.editable .custom-field-options{margin-top:.5rem}.duty-custom-fields .custom-field-single .custom-field-options{opacity:0;-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.duty-custom-fields .custom-field-single .custom-field-options a{color:#b8b8b8}.duty-custom-fields .custom-field-single .custom-field-options a:hover{color:#72a114}.duty-custom-fields .custom-field-data{-webkit-box-flex:0;-webkit-flex:0;-ms-flex:0;flex:0;-webkit-flex-basis:200px;-ms-flex-preferred-size:200px;flex-basis:200px}.duty-custom-fields .custom-field-data .custom-field-name{display:block}.duty-custom-fields .custom-field-data .custom-field-description{color:#b8b8b8;display:block;line-height:.9rem}.duty-custom-fields .custom-field-options{margin:0}.duty-custom-fields .custom-field-value{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;padding:0 1rem 0 2rem}.all-projects .create-project-button-wrapper,.all-projects h1,.issues-table .level-field,.recent-projects li{-webkit-flex-shrink:0;-ms-flex-negative:0}.duty-custom-fields form label{cursor:pointer}.duty-custom-fields form input{width:100%}.home-project .welcome-user .logout,.home-projects-list .welcome-user .logout,.project-content p{font-size:.8rem}.home-project,.home-projects-list{background:url(/images/invitation_bg.jpg)center center no-repeat #000;-ms-flex-line-pack:center;-ms-flex-align:center;align-items:center;background-size:cover;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;height:100%;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;left:0;padding:0;position:fixed;top:0;width:100%}.home-project .welcome-user,.home-projects-list .welcome-user{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;position:absolute;right:1rem;top:1rem}.home-project .welcome-user p,.home-projects-list .welcome-user p{color:#f5f5f5;margin-bottom:0}.home-project .welcome-user p span:before,.home-projects-list .welcome-user p span:before{content:' '}.home-project .welcome-user .logout,.home-projects-list .welcome-user .logout{float:right}.home-project .welcome-user .logout:hover,.home-projects-list .welcome-user .logout:hover{color:#ff8282}.home-project .welcome-user .info,.home-projects-list .welcome-user .info{padding-right:1rem}.home-project .welcome-user img,.home-projects-list .welcome-user img{width:40px}.home-projects-wrapper{width:1200px}.home-projects-list-inner{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.recent-projects{-webkit-box-flex:8;-webkit-flex-grow:8;-ms-flex-positive:8;flex-grow:8;max-width:800px}.all-projects,.recent-projects li{-webkit-box-flex:1;-webkit-flex-grow:1}.recent-projects ul{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;margin:0;padding:0}.recent-projects a{height:100%;left:0;padding:1rem;position:absolute;top:0;width:100%}.recent-projects li{background-color:rgba(255,255,255,.5);color:#f5f5f5;-webkit-flex-basis:230px;-ms-flex-preferred-size:230px;flex-basis:230px;-ms-flex-positive:1;flex-grow:1;flex-shrink:0;height:130px;margin-bottom:1rem;margin-right:1rem;overflow:hidden;position:relative;transition:background-color .3s linear;width:23.5%}.recent-projects li:hover{background-color:rgba(157,206,10,.5);cursor:pointer;transition:background-color .3s linear}.recent-projects li:hover p,.recent-projects p{-webkit-transition:color .3s linear;transition:color .3s linear}.recent-projects li:hover p{color:#b8b8b8}.recent-projects h2{color:#f5f5f5;line-height:2rem}.recent-projects p{color:#444}.project-content h2{margin-bottom:.5rem}.project-content p{line-height:1rem}.all-projects{background-color:rgba(0,0,0,.5);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-ms-flex-positive:1;flex-grow:1;margin-left:1rem;max-height:422px;padding:1rem;width:285px}.all-projects h1{color:#f5f5f5;flex-shrink:0;text-align:center}.all-projects .v-pagination-list{max-height:221px}.all-projects ul{left:0;margin-bottom:0;position:relative;top:0;width:100%}.all-projects li{border-bottom:2px solid #555}.all-projects li a{font-size:1.2rem;font-family:OpenSans-CondLight,Arial,Helvetica,sans-serif;color:#f5f5f5;display:block;padding:1rem;text-transform:uppercase;width:100%}.all-projects li .active,.all-projects li a:hover{background-color:#555;-webkit-transition:background-color .3s linear;transition:background-color .3s linear}.issues-table .row-selected,.issues-table .row:hover{-webkit-transition:background .2s ease-in;transition:background .2s ease-in}.all-projects .projects-pagination{width:100%}.all-projects .create-project-button-wrapper{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;flex-shrink:0}.all-projects .create-project-button-wrapper .create-project-button{-webkit-box-flex:8;-webkit-flex-grow:8;-ms-flex-positive:8;flex-grow:8;margin-right:.2rem;text-align:center}.all-projects .create-project-button-wrapper .import-project-button{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;padding-left:.5rem;padding-right:.5rem;text-align:center}.create-project .create-project-container,.project-data-container ul{-webkit-box-flex:0;-webkit-flex-grow:0;-ms-flex-positive:0;flex-grow:0}.all-projects .create-project-button-wrapper .import-project-button .icon{color:#444;margin:0}.all-projects .v-pagination-next,.create-project fieldset{margin-bottom:1rem}.all-projects .button-green{color:#f5f5f5;text-align:center;width:100%}.all-projects .button-green:hover{color:#f5f5f5}.summary-stats .info-text{font-size:.8rem;float:left;line-height:.9rem}.summary-stats .info-num{font-size:2rem;font-family:opensans-semibold,Arial,Helvetica,sans-serif;float:left;margin-right:.3rem;position:relative;top:5px}.summary-stats{-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.create-project,.issues-table .avatar,.list-filters,.search-result-table .avatar,.search-result-table .row{-webkit-align-items:center}.project-data-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between}.create-project,.kanban-table .vfold.task-colum-name{-webkit-box-pack:center;-webkit-justify-content:center}.project-data-container ul{max-width:33%}.project-data-container li{display:inline-block;margin-right:.1rem;width:10%}.project-data-container li figure{width:100%}.create-project .tagline{font-size:2rem;font-family:OpenSans-CondLight,Arial,Helvetica,sans-serif;color:#fff;line-height:2rem;text-transform:uppercase}.create-project{background:url(/images/bg.png)center center no-repeat;background-size:cover;-webkit-align-content:center;-ms-flex-line-pack:center;align-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;bottom:0;-ms-flex-pack:center;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:999}.create-project .create-project-container{-webkit-flex-basis:400px;-ms-flex-preferred-size:400px;flex-basis:400px}.create-project h1{color:#fff;text-align:center}.create-project .logo,.create-project .tagline{margin-bottom:1rem;text-align:center}.create-project form{margin-bottom:2rem}.create-project input{background:#fff}.create-project input::-webkit-input-placeholder{color:#b8b8b8}.create-project input::-moz-placeholder{color:#b8b8b8}.create-project input:-moz-placeholder{color:#b8b8b8}.create-project input:-ms-input-placeholder{color:#b8b8b8}.create-project .button{color:#fff;display:block;margin-bottom:.5rem;text-align:center}.create-project .button:hover{background:#9dce0a}.issues-table .row:hover,.search-result-table .row-selected,.search-result-table .row:hover{background:#f6fceb}.create-project a:hover{color:#fff}.issues-table .pop-status a,.issues-table .table-main{font-size:.8rem}.issues-table .pop-status{font-family:opensans-regular,Arial,Helvetica,sans-serif;line-height:1.3rem}.issues-table .title{font-size:1rem;font-family:opensans-semibold,Arial,Helvetica,sans-serif;border-bottom:1px solid #b8b8b8}.issues-table{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin-bottom:2rem}.issues-table.empty{display:none}.issues-table .row .icon{display:inline}.issues-table .row-selected{background:#f6fceb}.issues-table .title:hover{background:0 0}.issues-table .title div{cursor:pointer}.issues-table .table-main{border-bottom:1px solid #ebebeb}.issues-table .avatar{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.issues-table .avatar img{width:35px}.issues-table .avatar figcaption{-webkit-flex-basis:60%;-ms-flex-preferred-size:60%;flex-basis:60%;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;margin-left:.5rem}.issues-table .level-field{-webkit-flex-basis:75px;-ms-flex-preferred-size:75px;flex-basis:75px;-webkit-box-flex:0;-webkit-flex-grow:0;-ms-flex-positive:0;flex-grow:0;flex-shrink:0;text-align:center;width:75px}.issues-table .subject{overflow:hidden;padding-right:1rem;width:100%}.issues-table .subject a{max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}.issues-table .subject span{vertical-align:middle}.issues-table .subject span:first-child{margin-right:.5rem}.issues-table .assigned-field,.issues-table .created-field,.issues-table .issue-field{-webkit-flex-basis:140px;-ms-flex-preferred-size:140px;flex-basis:140px;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;padding:0 1rem;position:relative;text-align:left}.issues-table .assigned-field{-webkit-box-flex:0;-webkit-flex:0 0 160px;-ms-flex:0 0 160px;flex:0 0 160px;max-width:160px}.kanban-table-body .task-column,.kanban-table-header .task-colum-name{-webkit-flex-grow:0;-ms-flex-positive:0;flex-grow:0;-webkit-flex-shrink:0;max-width:300px;-webkit-flex-basis:300px;-ms-flex-preferred-size:300px}.backlog-table-body .row,.backlog-table-body .user-story-name,.backlog-table-header .backlog-table-title,.kanban-table-inner{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap}.admin-functionalities .functionality,.backlog-table-body,.backlog-table-header,.taskboard-table,.wiki-summary .wiki-user-modification{-webkit-flex-direction:column;-ms-flex-direction:column}.issues-table .issue-assignedto{cursor:pointer;position:relative}.issues-table .issue-assignedto:hover .icon{opacity:1;-webkit-transition:opacity .3s linear;transition:opacity .3s linear}.issues-table .issue-assignedto figcaption{max-width:60%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.issues-table .issue-assignedto .icon{opacity:0;position:absolute;right:0;top:.5rem;-webkit-transition:opacity .3s linear;transition:opacity .3s linear}.issues-table .pop-status{background:#050505;color:#fff;display:none;left:0;list-style-type:none;margin:0;padding:10px;position:absolute;top:20px;width:200px;z-index:99}.issues-table .pop-status a{border-bottom:1px solid #444;color:#fff;display:block;padding:10px 2px}.issues-table .pop-status a:last-child{border:0}.issues-table .pop-status a:hover{color:#9dce0a;-webkit-transition:color .3s linear;transition:color .3s linear}.issues-table .pop-status a:hover.point{color:#fff}.issues-table .pop-status:after{background:#050505;content:'';height:15px;position:absolute;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg);width:0}.issues-table .pop-status.fix{bottom:0;top:auto}.kanban-table-body .task-column .kanban-column-intro{font-size:.8rem}.kanban-table-body,.kanban-table-header .task-colum-name .icon{font-size:1rem}.kanban-table{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;height:100%;overflow:hidden;width:100%}.kanban-table .vfold.task-colum-name{-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;cursor:pointer;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;opacity:.8;padding:.5rem 0;-webkit-transition:opacity .3s linear;transition:opacity .3s linear}.kanban-table .vfold .kanban-column-intro,.kanban-table .vfold .kanban-task,.kanban-table .vfold.task-colum-name .icon-bulk,.kanban-table .vfold.task-colum-name .icon-closed-eye,.kanban-table .vfold.task-colum-name .icon-open-eye,.kanban-table .vfold.task-colum-name .icon-plus,.kanban-table .vfold.task-colum-name .icon-vfold,.kanban-table .vfold.task-colum-name .icon-vunfold,.kanban-table .vfold.task-colum-name span{display:none}.kanban-table .vfold.task-colum-name .hunfold{margin:0}.kanban-table .vfold.task-colum-name,.kanban-table .vfold.task-column{-webkit-flex-flow:1;-ms-flex-flow:1;flex-flow:1;max-width:30px;min-height:2.5rem;min-width:30px;width:30px}.kanban-table-header{margin-bottom:.5rem;min-height:40px;position:relative;width:100%}.kanban-table-header .kanban-table-inner{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;overflow:hidden;position:absolute}.kanban-table-header .task-colum-name{font-size:1.2rem;background:#f5f5f5;border-top:3px solid #b8b8b8;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;flex-basis:300px;-webkit-box-flex:0;-ms-flex-negative:0;flex-shrink:0;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;margin:0 10px 0 0;padding:.5rem .5rem .5rem 1rem;position:relative;text-transform:uppercase}.kanban-table-header .task-colum-name:last-child{margin-right:0}.kanban-table-header .task-colum-name .icon{color:#b8b8b8;margin-right:.3rem;-webkit-transition:color .2s linear;transition:color .2s linear}.kanban-table-header .task-colum-name .icon:hover{color:#72a114}.kanban-table-header .task-colum-name .icon.hfold,.kanban-table-header .task-colum-name .icon.hunfold{display:inline-block;-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.kanban-table-body{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;height:100%;overflow:hidden;overflow-x:auto;width:100%}.kanban-table-body .task-column{flex-basis:300px;-webkit-box-flex:0;-ms-flex-negative:0;flex-shrink:0;margin:0 10px 0 0;overflow-y:auto;widows:300px}.kanban-table-body .task-column:last-child{margin-right:0}.kanban-table-body .task-column .kanban-column-intro{font-family:opensans-semibold,Arial,Helvetica,sans-serif;color:#b8b8b8;margin:1rem 2rem}.kanban-table-body .task-column .kanban-column-intro.active{color:#050505}.kanban-table-body .task-column .kanban-wip-limit{background:red;border-radius:2px;height:4px;margin:.5rem 0;padding:0}.kanban-table-body .kanban-uses-box{background:#f5f5f5}.kanban-table-inner{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;flex-wrap:nowrap}.search-filter a{font-size:1.2rem;font-family:OpenSans-CondLight,Arial,Helvetica,sans-serif;opacity:.2}.search-filter ul{border-bottom:3px solid #b8b8b8;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding-bottom:.5rem}.search-filter li{margin-right:1rem}.search-filter .active,.search-filter a:hover{color:#555;opacity:1;-webkit-transition:opacity .3s linear;transition:opacity .3s linear}.search-result-table .row-selected,.search-result-table .row:hover{-webkit-transition:background .2s ease-in;transition:background .2s ease-in}.search-filter .icon{margin-right:.4rem}.search-filter .name{padding-left:5px}.search-result-table .table-main{font-size:.8rem}.filters h2 .icon-arrow-right,.search-result-table .title,.search-result-table .user-story-name .icon{font-size:1rem}.search-result-table .title{font-family:opensans-semibold,Arial,Helvetica,sans-serif;border-bottom:1px solid #b8b8b8}.backlog-table-body .doom-line span,.sprints .sprint .sprint-date,.sprints .sprint-name a{font-family:OpenSans-CondLight,Arial,Helvetica,sans-serif}.search-result-table .empty .title{border:0}.search-result-table .row{-ms-flex-line-pack:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding:.5rem}.search-result-table .row .user-stories{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:5;-webkit-flex-grow:5;-ms-flex-positive:5;flex-grow:5;-webkit-flex-shrink:1;-ms-flex-negative:1;flex-shrink:1}.search-result-table .row .points,.search-result-table .row .status{-webkit-flex-basis:100px;-ms-flex-preferred-size:100px;flex-basis:100px;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;padding:0 1rem;text-align:center}.search-result-table .row .assigned-to{-webkit-flex-basis:250px;-ms-flex-preferred-size:250px;flex-basis:250px;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;padding:0 1rem}.search-result-table .user-story-name input{vertical-align:top}.filters h1,.filters h1 a{vertical-align:baseline}.search-result-table .user-story-name span{display:inline-block;max-width:70%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.search-result-table .user-story-name .icon{color:#b8b8b8}.search-result-table .user-story-name .icon:hover{color:#444;-webkit-transition:color .3s linear;transition:color .3s linear}.search-result-table .title:hover{background:0 0}.search-result-table .table-main{border-bottom:1px solid #f5f5f5}.search-result-table .points,.search-result-table .status{position:relative}.search-result-table .avatar{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.search-result-table .avatar img{-webkit-flex-basis:35px;-ms-flex-preferred-size:35px;flex-basis:35px}.search-result-table .avatar figcaption{display:inline-block;margin-left:.5rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.search-in input{background:#444;color:#fff}.search-in input::-webkit-input-placeholder{color:#b8b8b8}.search-in input::-moz-placeholder{color:#b8b8b8}.search-in input:-moz-placeholder{color:#b8b8b8}.search-in input:-ms-input-placeholder{color:#b8b8b8}.search-in .icon-search{color:#b8b8b8;position:absolute;right:.7rem;top:.7rem}.filters-inner .loading .loading-spinner,.loading-spinner{margin:0 auto;max-height:1rem;max-width:1rem;-webkit-transform-origin:32 32;-ms-transform-origin:32 32;transform-origin:32 32}.filters h1 .icon{margin:0}.filters h2{font-size:1.2rem;margin-top:1rem}.filters h2 .icon-arrow-right{vertical-align:middle}.filters input{background:#444;color:#fff}.filters input::-webkit-input-placeholder{color:#b8b8b8}.filters input::-moz-placeholder{color:#b8b8b8}.filters input:-moz-placeholder{color:#b8b8b8}.filters input:-ms-input-placeholder{color:#b8b8b8}.filters .icon-search{color:#b8b8b8;position:absolute;right:.7rem;top:.7rem}.filters-inner{opacity:0;-webkit-transition:all .1s ease-in;transition:all .1s ease-in}.filters-cats a,.filters-cats a:hover{-webkit-transition:color .2s ease-in;transition:color .2s ease-in}.filters-inner .loading{margin:0;padding:8px;text-align:center;width:100%}.filters-inner .loading .loading-spinner{max-height:1rem;max-width:1rem}.filters-applied{margin-top:.5rem}.filter-tags,.filters-cats{margin-top:2rem}.filters-applied .single-filter{margin-bottom:.5rem}.filters-step-cat .save-filters{color:#fff;display:block;text-align:center}.filters-step-cat .my-filter-name{background:#444;color:#f5f5f5;width:100%}.filters-step-cat .my-filter-name::-webkit-input-placeholder{color:#b8b8b8}.filters-step-cat .my-filter-name::-moz-placeholder{color:#b8b8b8}.filters-step-cat .my-filter-name:-moz-placeholder{color:#b8b8b8}.filters-step-cat .my-filter-name:-ms-input-placeholder{color:#b8b8b8}.filters-cats li{border-bottom:1px solid #b8b8b8;text-transform:uppercase}.filters-cats .custom-filters .title{color:#72a114}.filters-cats a{color:#444;display:block;padding:.5rem 0 .5rem .5rem}.filters-cats a:hover{color:#72a114}.filters-cats a:hover .icon,.sprints .sprint:hover .icon-edit{-webkit-transition:opacity .2s ease-in;transition:opacity .2s ease-in}.filters-cats a:hover .icon{opacity:1}.filters-cats .icon{color:#444;float:right;opacity:0;-webkit-transition:opacity .2s ease-in;transition:opacity .2s ease-in}.list-filters{-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:#f5f5f5;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;margin-bottom:2rem;padding:.5rem 1rem}.list-filters .button-bulk{margin-left:.2rem}.filter-tags .filter-tag{color:#fff;cursor:pointer;margin-bottom:1rem;opacity:.5;padding:.5rem 1rem;position:relative}.filter-tags .filter-tag.active{opacity:1}.filter-tags .tag-count{background:rgba(0,0,0,.3);padding:.5rem 1rem;position:absolute;right:0;top:0}.sprints .sprint .description{font-size:.5rem}.backlog-table-body .doom-line span,.backlog-table-body .pop-points a,.backlog-table-body .pop-points-open a,.backlog-table-body .pop-role a,.backlog-table-body .pop-status a,.backlog-table-body .row,.backlog-table-body .tags-block .tag,.backlog-table-header .pop-points a,.backlog-table-header .pop-points-open a,.backlog-table-header .pop-role a,.backlog-table-header .pop-status a,.backlog-table-header .row,.sprints .filter-closed-sprints,.sprints .sprint-table .column-us,.sprints .us-item-row .user-story-name{font-size:.8rem}.sprints .sprint .number,.sprints .sprint .sprint-date,.sprints .sprint-name a{font-size:1.2rem}.sprints .summary{background:#dcdcdc;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between}.sprints .total-sprints{-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;color:#444;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.taskboard-table-header .task-colum-name.column-fold,.wiki-summary{-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center}.sprints .add-sprint{margin:0;padding:.3rem 1.5rem}.sprints .filter-closed-sprints{-ms-flex-line-pack:center;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;padding-bottom:1rem;vertical-align:middle}.sprints .sprint .sprint-summary,.taskboard-table-header .task-colum-name{-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify}.sprints .filter-closed-sprints .icon-archive{margin-right:.3rem}.sprints .loading{text-align:center}.sprints .loading-spinner{border:0;-webkit-box-flex:0;-webkit-flex-grow:0;-ms-flex-positive:0;flex-grow:0;margin-bottom:1rem;max-height:2rem;max-width:2rem;-webkit-transform-origin:center center;-ms-transform-origin:center center;transform-origin:center center}.sprints .sprint .sprint-points,.sprints .sprint-table .column-points{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.sprints .sprint-name a{max-width:90%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:inline-block;margin-right:3px}.sprints .sprint{margin-bottom:2rem;overflow:hidden}.sprints .sprint header{position:relative}.sprints .sprint:hover .icon-edit{opacity:1}.sprints .sprint .icon{display:inline-block}.sprints .sprint .icon-arrow-up{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);-webkit-transition:all .2s linear;transition:all .2s linear;vertical-align:baseline}.sprints .sprint .icon-arrow-up.active{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg);-webkit-transition:all .2s linear;transition:all .2s linear}.sprints .sprint .icon-arrow-up:hover{color:#9dce0a;-webkit-transition:color .2s linear;transition:color .2s linear}.sprints .sprint .icon-edit{color:#b8b8b8;opacity:0;position:absolute;right:0;top:0;-webkit-transition:opacity .2s ease-in;transition:opacity .2s ease-in;vertical-align:baseline}.sprints .sprint .icon-edit:hover{color:#72a114;-webkit-transition:color .2s ease-in;transition:color .2s ease-in}.sprints .sprint .description{line-height:.6rem;margin-top:5px}.sprints .sprint .sprint-summary{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;justify-content:space-between}.sprints .sprint .sprint-date{color:#b8b8b8;-webkit-flex-flow:1;-ms-flex-flow:1;flex-flow:1}.sprints .sprint ul{margin:0}.sprints .sprint li{display:inline-block}.sprints .sprint li:first-child{margin-right:3px}.sprints .sprint-progress-bar{background:#b8b8b8;border-radius:2px;height:8px;margin-bottom:1rem;margin-top:.5rem;position:relative;width:100%}.sprints .sprint-progress-bar .current-progress{background:#72a114;border-radius:2px;height:8px;left:0;position:absolute;top:0;width:calc(30% - 4px)}.sprints .sprint-table .row{border-bottom:1px solid #b8b8b8;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding:.5em 0;text-align:left;width:100%}.sprints .sprint-table .row:hover{background:#d7d7d7;cursor:move;-webkit-transition:background .2s ease-in;transition:background .2s ease-in}.sprints .sprint-table .row:last-child{border-bottom:0}.sprints .sprint-table .row.sortable-placeholder{background:#d7d7d7;height:40px}.sprints .sprint-table .row.ui-sortable-helper{background:#f6fceb;box-shadow:1px 1px 10px rgba(0,0,0,.1);-webkit-transition:background .2s ease-in;transition:background .2s ease-in}.sprints .sprint-table .column-us{-webkit-flex-flow:3;-ms-flex-flow:3;flex-flow:3;padding:0 4px}.sprints .sprint-table .us-name{max-width:250px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}.sprints .sprint-table .us-name.closed{color:#c5c5c5}.sprints .sprint-table .us-name.blocked{color:red}.sprints .sprint-table .column-points{padding:0 4px;text-align:right}.sprints .sprint-table .column-points.closed{color:#c5c5c5}.sprints .sprint-table .column-points.blocked{color:red}.sprints .button-gray{display:block;margin-top:1rem;text-align:center}.sprint-closed .sprint-table,.sprints .us-item-row .icon-drag-v,.sprints .us-item-row .popover,.sprints .us-item-row .status,.sprints .us-item-row .tags-block,.sprints .us-item-row .us-settings,.sprints .us-item-row input{display:none}.sprints .us-item-row .user-story-name{line-height:1rem;margin-top:5px}.sprint-closed .description,.sprint-closed .number{color:#b8b8b8}.sprint-closed .sprint-progress-bar .current-progress{background:#9f9f9f}.sprint-closed .button-gray{background:#b8b8b8}.burndown{margin-bottom:2rem;width:100%}.backlog-table-header .backlog-table-title{font-size:1rem}.backlog-table-body .pop-points,.backlog-table-body .pop-points-open,.backlog-table-body .pop-role,.backlog-table-body .pop-status,.backlog-table-header .pop-points,.backlog-table-header .pop-points-open,.backlog-table-header .pop-role,.backlog-table-header .pop-status{font-family:opensans-regular,Arial,Helvetica,sans-serif;line-height:1.3rem}.backlog-table-body,.backlog-table-header{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;width:100%}.backlog-table-body.show-tags .tags-block,.backlog-table-header.show-tags .tags-block{display:block}.backlog-table-body .row,.backlog-table-header .row{border-bottom:1px solid #b8b8b8;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding:.5rem 0 .5rem .5rem;text-align:left;width:100%}.backlog-table-body .backlog-table-subtitle:hover,.backlog-table-body .backlog-table-title:hover,.backlog-table-body .row:hover,.backlog-table-header .backlog-table-subtitle:hover,.backlog-table-header .backlog-table-title:hover,.backlog-table-header .row:hover{background:0 0}.backlog-table-body .backlog-table-subtitle .user-stories,.backlog-table-body .backlog-table-title .user-stories,.backlog-table-body .row .user-stories,.backlog-table-header .backlog-table-subtitle .user-stories,.backlog-table-header .backlog-table-title .user-stories,.backlog-table-header .row .user-stories{overflow:hidden;width:100%}.backlog-table-body .backlog-table-subtitle .status,.backlog-table-body .backlog-table-title .status,.backlog-table-body .row .status,.backlog-table-header .backlog-table-subtitle .status,.backlog-table-header .backlog-table-title .status,.backlog-table-header .row .status{-webkit-flex-basis:150px;-ms-flex-preferred-size:150px;flex-basis:150px;-webkit-box-flex:0;-webkit-flex-grow:0;-ms-flex-positive:0;flex-grow:0;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0}.backlog-table-body .backlog-table-subtitle .points,.backlog-table-body .backlog-table-title .points,.backlog-table-body .row .points,.backlog-table-header .backlog-table-subtitle .points,.backlog-table-header .backlog-table-title .points,.backlog-table-header .row .points{-webkit-flex-basis:125px;-ms-flex-preferred-size:125px;flex-basis:125px;-webkit-box-flex:0;-webkit-flex-grow:0;-ms-flex-positive:0;flex-grow:0}.taskboard-table-body .task-column,.taskboard-table-header .task-colum-name{flex-grow:1;max-width:300px;-webkit-flex-basis:300px;-ms-flex-preferred-size:300px}.backlog-table-body .points,.backlog-table-body .status,.backlog-table-header .points,.backlog-table-header .status{position:relative;text-align:right}.backlog-table-body .points .popover a,.backlog-table-body .status .popover a,.backlog-table-header .points .popover a,.backlog-table-header .status .popover a{text-align:left;width:100%}.backlog-table-body .points .popover .point,.backlog-table-body .status .popover .point,.backlog-table-header .points .popover .point,.backlog-table-header .status .popover .point{text-align:center}.backlog-table-body .points .icon,.backlog-table-body .status .icon,.backlog-table-header .points .icon,.backlog-table-header .status .icon{color:#b8b8b8;margin-left:.2rem}.backlog-table-body .pop-status,.backlog-table-header .pop-status{background:#050505;color:#fff;display:none;left:65%;list-style-type:none;margin:0;padding:10px 1rem 10px 10px;position:absolute;top:0;width:200px;z-index:99}.backlog-table-body .pop-status a,.backlog-table-header .pop-status a{border-bottom:1px solid #444;color:#fff;display:block;padding:10px 2px}.backlog-table-body .pop-status a:last-child,.backlog-table-header .pop-status a:last-child{border:0}.backlog-table-body .pop-status a:hover,.backlog-table-header .pop-status a:hover{color:#9dce0a;-webkit-transition:color .3s linear;transition:color .3s linear}.backlog-table-body .pop-status a:hover.point,.backlog-table-header .pop-status a:hover.point{color:#fff}.backlog-table-body .pop-status:after,.backlog-table-header .pop-status:after{background:#050505;content:'';height:15px;position:absolute;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg);width:0}.backlog-table-body .pop-status.fix,.backlog-table-header .pop-status.fix{bottom:0;top:auto}.backlog-table-body .pop-role,.backlog-table-header .pop-role{background:#050505;color:#fff;display:none;left:65%;list-style-type:none;margin:0;padding:10px;position:absolute;top:0;width:200px;z-index:99}.backlog-table-body .pop-role a,.backlog-table-header .pop-role a{border-bottom:1px solid #444;color:#fff;display:block;padding:10px 2px}.backlog-table-body .pop-role a:last-child,.backlog-table-header .pop-role a:last-child{border:0}.backlog-table-body .pop-role a:hover,.backlog-table-header .pop-role a:hover{color:#9dce0a;-webkit-transition:color .3s linear;transition:color .3s linear}.backlog-table-body .pop-role a:hover.point,.backlog-table-header .pop-role a:hover.point{color:#fff}.backlog-table-body .pop-role:after,.backlog-table-header .pop-role:after{background:#050505;content:'';height:15px;position:absolute;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg);width:0}.backlog-table-body .pop-role a.active,.backlog-table-header .pop-role a.active{background:#9dce0a;color:#fff}.backlog-table-body .pop-points,.backlog-table-header .pop-points{background:#050505;bottom:10px;color:#fff;display:none;left:30px;list-style-type:none;margin:0;padding:10px 3rem 10px 10px;position:absolute;width:150px;z-index:99}.backlog-table-body .pop-points a,.backlog-table-header .pop-points a{border-bottom:1px solid #444;color:#fff;display:block;padding:10px 2px}.backlog-table-body .pop-points a:last-child,.backlog-table-header .pop-points a:last-child{border:0}.backlog-table-body .pop-points a:hover,.backlog-table-header .pop-points a:hover{color:#9dce0a;-webkit-transition:color .3s linear;transition:color .3s linear}.backlog-table-body .pop-points a:hover.point,.backlog-table-header .pop-points a:hover.point{color:#fff}.backlog-table-body .pop-points:after,.backlog-table-header .pop-points:after{background:#050505;content:'';height:15px;position:absolute;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg);width:0}.backlog-table-body .pop-points-open,.backlog-table-header .pop-points-open{background:#050505;color:#fff;display:none;left:30px;list-style-type:none;margin:0;padding:10px;position:absolute;top:0;width:200px;z-index:99}.backlog-table-body .pop-points-open a,.backlog-table-header .pop-points-open a{border-bottom:1px solid #444;color:#fff;padding:10px 2px}.backlog-table-body .pop-points-open a:last-child,.backlog-table-header .pop-points-open a:last-child{border:0}.backlog-table-body .pop-points-open a:hover,.backlog-table-header .pop-points-open a:hover{-webkit-transition:color .3s linear;transition:color .3s linear}.backlog-table-body .pop-points-open a:hover.point,.backlog-table-header .pop-points-open a:hover.point{color:#fff}.backlog-table-body .pop-points-open:after,.backlog-table-header .pop-points-open:after{background:#050505;content:'';height:15px;position:absolute;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg);width:0}.backlog-table-body .pop-points-open li,.backlog-table-header .pop-points-open li{display:inline-block;width:23%}.backlog-table-body .pop-points-open a,.backlog-table-header .pop-points-open a{display:block;text-align:center}.backlog-table-body .pop-points-open a.active,.backlog-table-body .pop-points-open a:hover,.backlog-table-header .pop-points-open a.active,.backlog-table-header .pop-points-open a:hover{background:#9dce0a;color:#fff}.backlog-table-header .backlog-table-title{font-family:opensans-semibold,Arial,Helvetica,sans-serif;border-bottom:2px solid #b8b8b8;flex-wrap:nowrap;padding-right:30px}.taskboard-userstory-box .us-title,.wiki-nav li{font-family:OpenSans-CondLight,Arial,Helvetica,sans-serif}.backlog-table-header .points{cursor:pointer}.backlog-table-header .header-points span{color:#b8b8b8}.backlog-table-body .row{border-bottom:1px solid #ebebeb;cursor:move;flex-wrap:nowrap;position:relative}.backlog-table-body .row:hover{background:#f6fceb;-webkit-transition:background .2s ease-in;transition:background .2s ease-in}.backlog-table-body .row:hover .icon-drag-v,.backlog-table-body .row:hover .us-settings{opacity:1;-webkit-transition:all .2s ease-in;transition:all .2s ease-in}.backlog-table-body .row-selected,.backlog-table-body .row.ui-sortable-helper{background:#f6fceb;-webkit-transition:background .2s ease-in;transition:background .2s ease-in}.backlog-table-body .row:last-child{border-bottom:0}.backlog-table-body .row.sortable-placeholder{background:#f5f5f5;height:40px}.backlog-table-body .row .points .not-clickable:hover{color:#000;cursor:text}.backlog-table-body .user-story-name{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;flex-wrap:nowrap}.admin-functionalities form,.wiki-summary{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap}.backlog-table-body .user-story-name input{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;margin-right:1rem;vertical-align:super}.backlog-table-body .user-story-name input:checked+a{color:#9dce0a;-webkit-transition:color .2s ease-in;transition:color .2s ease-in}.backlog-table-body .user-story-name a{display:inline-block;-webkit-box-flex:20;-webkit-flex-grow:20;-ms-flex-positive:20;flex-grow:20;max-width:90%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.admin-membership-table .avatar img,.taskboard-table-body .task-column,.taskboard-table-header .task-colum-name{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1}.taskboard-table-body .column-fold .taskboard-task .icon,.taskboard-table-body .column-fold .taskboard-task .taskboard-tagline,.taskboard-table-body .column-fold .taskboard-task .taskboard-text,.taskboard-table-body .row-fold .taskboard-task .icon,.taskboard-table-body .row-fold .taskboard-task .taskboard-tagline,.taskboard-table-body .row-fold .taskboard-task .taskboard-text{display:none}.backlog-table-body .tags-block{display:none;margin-bottom:.3rem}.backlog-table-body .tags-block .tag{margin-right:.5rem;padding:.2rem .5rem}.backlog-table-body .blocked{background:#ff8282;border-bottom:1px solid #fff;color:#fff}.backlog-table-body .blocked:hover{background:red;-webkit-transition:background .2s ease-in;transition:background .2s ease-in}.backlog-table-body .blocked a{color:#fff!important}.backlog-table-body .blocked .icon,.backlog-table-body .blocked .icon:hover,.backlog-table-body .blocked a:hover{color:#fff}.backlog-table-body .doom-line{background:red;margin:.2rem 0;padding:.6rem 0;position:relative;width:100%}.backlog-table-body .doom-line span{color:#fff;position:absolute;right:.5rem;top:-3px}.backlog-table-body .icon-drag-v,.backlog-table-body .us-settings a{font-size:1.2rem;color:#b8b8b8;-webkit-transition:all .2s ease-in;transition:all .2s ease-in;width:30px}.backlog-table-body .icon-drag-v:hover,.backlog-table-body .us-settings a:hover{color:#444;-webkit-transition:all .2s ease-in;transition:all .2s ease-in}.backlog-table-body .us-settings{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;margin:0 0 0 2rem;opacity:0}.backlog-table-body .icon-drag-v{cursor:move;opacity:0;padding:.1rem .5rem 0 0}.backlog-table-body .readonly{cursor:auto;padding-right:45px}.admin-roles .check,.admin-roles .edit-value,.login-form-container .remember-me+label,.wiki-nav li a span{cursor:pointer}.taskboard-userstory-box .points-value{font-size:.8rem}.taskboard-table-header .task-colum-name .icon{font-size:1rem}.taskboard-table-header .task-colum-name,.taskboard-userstory-box .us-title{font-size:1.2rem}.taskboard-table-body .column-fold .taskboard-task,.taskboard-table-body .row-fold .taskboard-task{background:0 0;border:0;margin:0;min-height:0}.taskboard-table-body .column-fold .taskboard-task .taskboard-task-inner,.taskboard-table-body .row-fold .taskboard-task .taskboard-task-inner{padding:.2rem}.taskboard-table-body .column-fold .taskboard-task .avatar,.taskboard-table-body .row-fold .taskboard-task .avatar{height:35px;width:35px}.taskboard-table-body .column-fold .taskboard-task.ui-sortable-helper,.taskboard-table-body .row-fold .taskboard-task.ui-sortable-helper{box-shadow:none}.taskboard-table-body .column-fold .task-column,.taskboard-table-body .row-fold .task-column,.taskboard-table-body .task-column.column-fold,.taskboard-table-body .task-column.row-fold{-webkit-align-content:flex-start;-ms-flex-line-pack:start;align-content:flex-start;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-flex-flow:row wrap;-ms-flex-flow:row wrap;flex-flow:row wrap}.admin-functionalities .functionality,.project-csv .csv-regenerate-field,.table-team .member-stats,.user-profile form .avatar-container .overlay{-webkit-align-content:center;align-content:center}.taskboard-table-body .column-fold .avatar-task-link,.taskboard-table-body .row-fold .avatar-task-link{display:block}.taskboard-table-body .column-fold .avatar-assigned-to,.taskboard-table-body .row-fold .avatar-assigned-to{display:none}.taskboard-table{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;height:100%;overflow:hidden;width:100%}.taskboard-table-header{margin-bottom:.5rem;min-height:40px;position:relative;width:100%}.taskboard-table-header .taskboard-table-inner{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;overflow:hidden;position:absolute}.taskboard-table-header .task-colum-name{background:#f5f5f5;border-top:3px solid #b8b8b8;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;flex-basis:300px;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;justify-content:space-between;margin:0 10px 0 0;padding:.5rem 1rem;position:relative;text-transform:uppercase;width:300px}.taskboard-table-header .task-colum-name:last-child{margin-right:0}.taskboard-table-header .task-colum-name .icon{color:#b8b8b8;margin-right:.3rem;-webkit-transition:color .2s linear;transition:color .2s linear}.taskboard-table-header .task-colum-name .icon:hover{color:#72a114}.taskboard-table-header .task-colum-name .icon.hfold,.taskboard-table-header .task-colum-name .icon.hunfold{display:inline-block;-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.taskboard-table-header .task-colum-name.column-fold{align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;padding:.3rem 0}.taskboard-table-header .task-colum-name.column-fold span{display:none}.taskboard-table-header .task-colum-name.column-fold .hfold,.taskboard-table-header .task-colum-name.column-fold .hunfold{margin:0}.taskboard-table-body{height:100%;overflow:auto;width:100%}.taskboard-table-body .task-column{flex-basis:300px;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;margin:0 10px 0 0;width:300px}.taskboard-table-body .task-column:last-child{margin-right:0}.taskboard-table-body .column-fold .taskboard-task{max-width:40px;width:40px}.taskboard-table-body .task-row{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin-bottom:.5rem;min-height:10rem;width:100%}.taskboard-table-body .avatar-task-link,.taskboard-table-body .task-row.row-fold .icon-bulk,.taskboard-table-body .task-row.row-fold .icon-plus,.taskboard-table-body .task-row.row-fold .points-value{display:none}.taskboard-table-body .task-row:hover .new-task{opacity:1;-webkit-transition:opacity .3s linear;transition:opacity .3s linear}.taskboard-table-body .task-row.blocked .taskboard-userstory-box{background:rgba(255,0,0,.6)}.taskboard-table-body .task-row.blocked .points-value,.taskboard-table-body .task-row.blocked .points-value:hover,.taskboard-table-body .task-row.blocked .taskboard-userstory-box a,.taskboard-table-body .task-row.blocked .taskboard-userstory-box a:hover{color:#fff;-webkit-transition:color .3s linear;transition:color .3s linear}.taskboard-table-body .task-row.blocked .taskboard-tasks-box{background:rgba(255,0,0,.1)}.taskboard-table-body .task-row.row-fold{min-height:0}.taskboard-table-body .task-row.row-fold .us-title{max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.taskboard-table-body .taskboard-tasks-box{background:#f5f5f5}.taskboard-table-body .taskboard-userstory-box{padding:.5rem .5rem .5rem 1.5rem}.taskboard-table-body .taskboard-userstory-box .icon{color:#b8b8b8;position:absolute;right:.5rem;top:.7rem;-webkit-transition:color .2s linear;transition:color .2s linear}.points-list a:hover span,.points-list span{-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.login-form-container .login-password,.taskboard-userstory-box{position:relative}.taskboard-table-body .taskboard-userstory-box .icon:hover{color:#72a114}.taskboard-table-body .taskboard-userstory-box .icon.icon-plus{right:2rem}.taskboard-table-body .taskboard-userstory-box .icon.icon-vfold,.taskboard-table-body .taskboard-userstory-box .icon.icon-vunfold{left:0;right:inherit}.taskboard-table-body .avatar-assigned-to{display:block}.taskboard-userstory-box .tag-list{display:none;margin-bottom:1rem}.taskboard-userstory-box .us-title{margin-bottom:0;margin-right:3rem}.taskboard-userstory-box .points-value{color:#b8b8b8}.taskboard-userstory-box .points-value span{margin-right:.1rem}.points-list a{color:#72a114;margin-left:.5rem}.points-list a:hover span{opacity:1}.points-list span{opacity:0}.login-form-container input:focus+.forgot-pass{opacity:0;-webkit-transition:opacity .5s linear;transition:opacity .5s linear}.login-form-container .forgot-pass{font-size:.8rem;color:#b8b8b8;opacity:1;position:absolute;right:1rem;top:.5rem;-webkit-transition:all .3s linear;transition:all .3s linear}.login-form-container .forgot-pass:hover{color:#444;-webkit-transition:color .3s linear;transition:color .3s linear}.login-form-container .remember-me{vertical-align:top}.register-form-container .register-text{font-size:.8rem}.register-form-container{display:block}.register-form-container .register-text-top{display:block;margin-bottom:1rem;text-align:center}.forgot-form-container{text-align:center}.change-password-text{color:#444;text-align:center}.change-password-form-container .token-change-password{position:relative}.change-password-form-container input:focus+.get-token{opacity:0;-webkit-transition:opacity .5s linear;transition:opacity .5s linear}.change-password-form-container .get-token{font-size:.8rem;color:#b8b8b8;opacity:1;position:absolute;right:1rem;top:.5rem;-webkit-transition:all .3s linear;transition:all .3s linear}.change-password-form-container .get-token:hover{color:#444;-webkit-transition:color .3s linear;transition:color .3s linear}.wiki-nav li .icon,.wiki-nav li:hover .icon{-webkit-transition:opacity 1s linear;transition:opacity 1s linear}.cancel-account fieldset{text-align:center}.wiki-nav li input{font-size:1rem}.wiki-nav li{font-size:1.2rem;border-bottom:1px solid #cdcdcd;text-transform:uppercase}.wiki-nav li:hover .icon{opacity:1}.wiki-nav li a{display:block;padding:1rem 0 1rem 1rem}.wiki-nav li .icon{color:#050505;float:right;opacity:0}.admin-common .total:hover .edit-value,.admin-menu .active .icon,.admin-menu a:hover .icon,.admin-roles .edit-value,.admin-submenu a.active .icon,.admin-submenu a:hover .icon{-webkit-transition:opacity .3s linear;transition:opacity .3s linear}.wiki-nav li input{font-family:opensans-regular,Arial,Helvetica,sans-serif;line-height:1.3rem;background:#444;color:#f5f5f5}.admin-common .total,.admin-menu li,.admin-roles .role-name,.admin-submenu li,.admin-submenu-roles li{font-family:OpenSans-CondLight,Arial,Helvetica,sans-serif}.wiki-nav li input::-webkit-input-placeholder{color:#b8b8b8}.wiki-nav li input::-moz-placeholder{color:#b8b8b8}.wiki-nav li input:-moz-placeholder{color:#b8b8b8}.wiki-nav li input:-ms-input-placeholder{color:#b8b8b8}.wiki-nav li .loading{margin:0;padding:8px;text-align:center;width:100%}.wiki-nav .add-button{color:#fff;display:block;margin-bottom:.5rem;text-align:center}.wiki-summary .username{font-size:1.2rem;color:#9dce0a;white-space:nowrap}.wiki-summary{align-items:center;flex-wrap:wrap;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.wiki-summary div{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;margin-right:1rem}.wiki-summary .number{line-height:2rem;top:0}.wiki-summary .wiki-user-modification{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.wiki-summary figure{margin-right:.3rem;width:32px}.admin-menu li{font-size:1.6rem;border-bottom:1px solid #b8b8b8;text-transform:uppercase}.admin-menu li:last-child{border-bottom:0}.admin-menu a{display:block;padding:1rem 0 1rem 1rem}.admin-menu .active .icon,.admin-menu a:hover .icon{opacity:1}.admin-menu .icon{color:#050505;float:right;opacity:0}.admin-common header h1{margin-bottom:0}.admin-common .admin-subtitle{color:#b8b8b8;margin-bottom:2rem}.admin-common .total{font-size:1.2rem;background-color:#f5f5f5;color:#444;padding:1rem}.admin-submenu .button-gray:hover,.admin-submenu-roles .button-gray:hover{background-color:#050505}.admin-common .total:hover .edit-value{opacity:1}.admin-submenu li{font-size:1.6rem;border-bottom:1px solid #a6b2a7;text-transform:uppercase}.admin-submenu h1{font-size:2rem;color:#fff}.admin-submenu li:last-child{border-bottom:0}.admin-submenu a{color:#fff;display:block;padding:1rem 0 1rem 1rem}.admin-submenu a.active,.admin-submenu a:hover{color:#050505}.admin-submenu a.active .icon,.admin-submenu a:hover .icon{color:#050505;opacity:1}.admin-submenu .icon{color:#fff;float:right;opacity:0}.admin-submenu .button-gray{padding:.5rem 0;text-align:center}.admin-submenu-roles li{font-size:1.6rem;border-bottom:1px solid #a6b2a7;text-transform:uppercase}.admin-submenu-roles h1{font-size:2rem;color:#fff}.admin-submenu-roles li:last-child{border-bottom:0}.admin-submenu-roles a{color:#fff;display:block;padding:1rem 0 1rem 1rem}.admin-submenu-roles a.active,.admin-submenu-roles a:hover{color:#050505}.admin-submenu-roles a.active .icon,.admin-submenu-roles a:hover .icon{opacity:1;-webkit-transition:opacity .3s linear;transition:opacity .3s linear}.admin-submenu-roles .single-role{max-width:175px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:inline-block}.admin-submenu-roles .icon{color:#fff;float:right;opacity:0}.admin-submenu-roles .button-gray{padding:.5rem 0;text-align:center}.admin-roles .check input~.check-text{font-size:.8rem}.admin-roles .edit-value{font-size:1rem}.admin-roles .role-name{font-size:2rem;color:#444}.admin-functionalities .functionality span,.admin-membership-table .avatar .name,.admin-membership-table .title,.admin-project-export-result h3{font-family:opensans-semibold,Arial,Helvetica,sans-serif}.admin-roles .edit-value{color:#b8b8b8;margin-left:.5rem;opacity:0}.admin-roles .edit-role{-webkit-box-align:left;-webkit-align-items:left;-ms-flex-align:left;align-items:left;background-color:#f5f5f5;display:none;margin-bottom:1rem;padding:.5rem}.admin-functionalities .functionality,.admin-membership-table .avatar,.admin-membership-table .row-status,.admin-roles .general-category,.admin-third-parties .select-input-text .option-wrapper,.admin-webhooks .history-single,.project-values-row{-ms-flex-align:center;align-items:center}.admin-functionalities .functionality,.admin-membership-table .avatar,.admin-membership-table .row-status,.admin-roles .general-category,.admin-third-parties .select-input-text .option-wrapper,.admin-webhooks .history-single{-webkit-box-align:center;-webkit-align-items:center}.admin-roles .edit-role input{background-color:#fff;width:50%}.admin-roles .edit-role .icon-floppy{color:#b8b8b8;margin-left:.5rem;-webkit-transition:color .3s linear;transition:color .3s linear}.admin-roles .edit-role .icon-floppy:hover{color:#72a114;-webkit-transition:color .3s linear;transition:color .3s linear}.admin-functionalities .functionality,.admin-roles .check input+div,.admin-roles .check input:checked+div{-webkit-transition:all .2s linear;transition:all .2s linear}.admin-roles .any-computable-role{background:red;color:#fff;margin-bottom:.5rem;padding:.5rem}.admin-roles .general-category{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;padding-bottom:2rem}.admin-roles .general-category .check{margin-left:.5rem}.admin-roles .check{background-color:#dcdcdc;border-radius:2px;height:1.5rem;overflow:hidden;position:relative;width:65px}.admin-roles .check input{cursor:pointer;height:500px;left:-10px;opacity:0;position:absolute;top:-10px;width:500px;z-index:999}.admin-roles .check input+div{background-color:#555;height:25px;width:50%}.admin-roles .check input~.check-text{color:#fff;position:absolute;top:.1rem}.admin-roles .check input~.check-yes{opacity:0;right:.5rem}.admin-roles .check input~.check-no{left:.5rem;opacity:.6}.admin-roles .check input:checked+div{background-color:#74a218;margin-left:50%}.admin-roles .check input:checked~.check-yes{opacity:.6;right:.4rem}.admin-roles .check input:checked~.check-no{left:.4rem;opacity:0}.admin-roles .check input:disabled{cursor:auto}.admin-roles .check input:disabled+div{background-color:#ccc}.admin-functionalities form{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;flex-wrap:wrap}.admin-functionalities .functionality{-ms-flex-line-pack:center;background-color:#f5f5f5;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;margin-bottom:.3rem;margin-right:.3rem;opacity:.5;padding:1rem;position:relative;vertical-align:top;width:32%}.admin-functionalities .functionality.active{background-color:#e9f0da;opacity:1}.admin-functionalities .functionality .icon{font-size:3rem;-webkit-flex-basis:60px;-ms-flex-preferred-size:60px;flex-basis:60px;margin:0 auto;min-width:60px}.admin-functionalities .functionality .desc{text-align:center;width:100%}.admin-functionalities .functionality .activate-input{display:none}.admin-functionalities .functionality .activate-input+label{color:#fff;cursor:pointer;display:block;text-align:center}.admin-functionalities .functionality span{display:block}.admin-functionalities .functionality select{margin-top:1rem}.admin-functionalities .videoconference-attributes select{margin-bottom:.5rem}.admin-functionalities .button-green{color:#fff;display:block;text-align:center}.admin-project-export-result .spin img,.loading-spinner{margin:0 auto;max-height:1rem;max-width:1rem;-webkit-transform-origin:32 32;-ms-transform-origin:32 32;transform-origin:32 32}.admin-project-export-buttons{margin:2rem 0 1rem}.admin-project-export-result{margin-top:1rem}.admin-project-export-result .spin{margin:0 auto;width:2.5rem}.admin-project-export-result .spin img{width:100%}.admin-project-export-result h3{font-size:1.2rem;background:#f5f5f5;color:#555;margin:.5rem;padding:.5rem;text-align:center}.admin-project-export-result p{color:#b8b8b8;margin:.5rem 0;text-align:center}.admin-membership-table .check input~.check-text,.admin-membership-table .row-admin label{font-size:.8rem}.admin-membership-table .avatar{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.admin-membership-table .avatar figcaption{margin-left:1rem;width:75%}.admin-membership-table .avatar figcaption span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}.admin-membership-table .avatar img{-webkit-flex-basis:35px;-ms-flex-preferred-size:35px;flex-basis:35px;flex-grow:1;max-width:35px}.admin-membership-table .avatar .email,.admin-membership-table .avatar .name{display:block;width:100%}.admin-membership-table .avatar .email{color:#b8b8b8}.admin-membership-table .header-role,.admin-membership-table .header-status{padding-left:.5rem}.admin-membership-table .row-role{padding-right:1rem}.admin-membership-table .row-status{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between}.admin-webhooks .webhook-url-inputs,.project-values-row{-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center}.admin-membership-table .active,.admin-membership-table .pending{padding:8px}.admin-membership-table .active{background-color:#f5f5f5}.admin-membership-table .pending{background-color:#ff8282;color:#fff}.admin-membership-table .pending .icon{float:rsdsdfdvsdvight}.admin-membership-table .pending:hover{background-color:red;color:#fff;-webkit-transition:background-color .3s linear;transition:background-color .3s linear}.admin-membership-table .delete{font-size:1.2rem;color:#b8b8b8}.admin-membership-table .delete:hover{color:red}.admin-membership-table .row-admin input{vertical-align:middle}.admin-membership-table .header-member,.admin-membership-table .header-role,.admin-membership-table .row-member,.admin-membership-table .row-role{-webkit-flex-basis:210px;-ms-flex-preferred-size:210px;flex-basis:210px;-webkit-box-flex:3;-webkit-flex-grow:3;-ms-flex-positive:3;flex-grow:3;min-width:210px}.admin-membership-table .header-admin,.admin-membership-table .row-admin{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;min-width:70px}.admin-membership-table .header-status,.admin-membership-table .row-status{-webkit-flex-basis:50px;-ms-flex-preferred-size:50px;flex-basis:50px;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.admin-membership-table .check{background-color:#dcdcdc;border-radius:2px;cursor:pointer;height:1.5rem;overflow:hidden;position:relative;width:65px}.admin-membership-table .check input{cursor:pointer;height:500px;left:-10px;opacity:0;position:absolute;top:-10px;width:500px;z-index:999}.admin-membership-table .check input+div{background-color:#555;height:25px;-webkit-transition:all .2s linear;transition:all .2s linear;width:50%}.admin-membership-table .check input~.check-text{color:#fff;position:absolute;top:.1rem}.admin-membership-table .check input~.check-yes{opacity:0;right:.5rem}.admin-membership-table .check input~.check-no{left:.5rem;opacity:.6}.admin-membership-table .check input:checked+div{background-color:#74a218;margin-left:50%;-webkit-transition:all .2s linear;transition:all .2s linear}.admin-membership-table .check input:checked~.check-yes{opacity:.6;right:.4rem}.admin-membership-table .check input:checked~.check-no{left:.4rem;opacity:0}.project-details .privacy-settings label,.project-details input,.project-details label,.project-details textarea{font-family:OpenSans-CondLight,Arial,Helvetica,sans-serif}.custom-fields-table .table-header,.project-values-header{font-family:opensans-semibold,Arial,Helvetica,sans-serif}.project-details form{max-width:700px;width:100%}.project-details fieldset{margin-bottom:1rem}.project-details label{display:block;margin-bottom:.2rem}.project-details textarea{height:10rem}.project-details .privacy-settings{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin-bottom:2rem}.project-details .privacy-settings>div{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;overflow:hidden;position:relative}.project-details .privacy-settings>div:first-child{margin-right:.5rem}.project-details .privacy-settings label{border:1px solid #b8b8b8;cursor:not-allowed;display:block;text-align:center;-webkit-transition:all .2s linear;transition:all .2s linear}.project-details .privacy-settings label span{color:#b8b8b8}.project-details .privacy-project{cursor:pointer;height:500px;left:-10px;opacity:0;position:absolute;top:-10px;width:500px;z-index:999}.project-details .privacy-project:checked+label{background:#9dce0a;border:1px solid #9dce0a}.custom-fields-table .table-body form:last-child .row,.project-values-body form:last-child .project-values-row{border:0}.project-details .privacy-project:checked+label span{color:#fff}.project-details .button-green{color:#fff;display:block;text-align:center}.project-details .delete-project{font-size:.8rem;display:block;margin-top:1rem}.default-values fieldset{margin-bottom:1rem}.default-values fieldset:last-child{margin-top:1.5rem}.default-values label,.default-values select{display:inline-block;width:49.7%}.default-values a{color:#fff;display:block;text-align:center}.custom-field-options{margin-bottom:1rem;text-align:right}.custom-fields-table{margin-bottom:2em}.custom-fields-table .row{border-bottom:0;padding:.5rem 0}.custom-fields-table .table-header{border-bottom:3px solid #f5f5f5}.custom-fields-table .table-header .custom-description span,.custom-fields-table .table-header .custom-name span{padding-left:1.1rem}.custom-fields-table .table-body .row:hover{background:rgba(157,206,10,.05);cursor:move;-webkit-transition:background .2s linear;transition:background .2s linear}.custom-fields-table .table-body .row:hover .custom-options,.custom-fields-table .table-body .row:hover .icon-drag-v{opacity:1;-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.custom-fields-table .custom-options a,.custom-fields-table .custom-options a:hover,.custom-fields-table .icon-drag-v,.custom-fields-table .icon-drag-v:hover{-webkit-transition:color .2s linear;transition:color .2s linear}.custom-fields-table .table-body form.row:hover{background:0 0;cursor:default}.custom-fields-table .table-body .custom-description{color:#b8b8b8}.custom-fields-table .single-custom-field{border-bottom:1px solid #f5f5f5;color:#555}.custom-fields-table .icon-drag-v{color:#b8b8b8;opacity:0;padding:0 .1rem;vertical-align:middle}.custom-fields-table .icon-drag-v:hover{color:#555;cursor:move}.custom-fields-table .custom-description,.custom-fields-table .custom-name{color:#555;margin-right:.5rem}.custom-fields-table .custom-name{-webkit-flex-basis:25%;-ms-flex-preferred-size:25%;flex-basis:25%;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0}.custom-fields-table .custom-description{max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-webkit-flex-basis:90%;-ms-flex-preferred-size:90%;flex-basis:90%;-webkit-box-flex:8;-webkit-flex-grow:8;-ms-flex-positive:8;flex-grow:8}.custom-fields-table .custom-options{-webkit-flex-basis:100px;-ms-flex-preferred-size:100px;flex-basis:100px;-webkit-box-flex:0;-webkit-flex-grow:0;-ms-flex-positive:0;flex-grow:0;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;opacity:0;text-align:center}.project-values-name,.project-values-value{-ms-flex-preferred-size:0;flex-basis:0}.project-values-isclosed,.project-values-settings,.project-values-value{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;-webkit-flex-basis:0}.custom-fields-table .custom-options a{color:#b8b8b8;margin-right:.5rem;vertical-align:middle}.custom-fields-table .custom-options a:hover{color:#72a114}.custom-fields-table .custom-options-wrapper{opacity:0;-webkit-transition:opacity .3s linear;transition:opacity .3s linear}.custom-fields-table form .custom-options-wrapper{opacity:1}.project-values-row .icon,.project-values-settings a{font-size:1.2rem}.admin-contrib .help .alt-image,.admin-contrib .help code,.admin-contrib .select-input-text .help-copy,.admin-third-parties .help .alt-image,.admin-third-parties .help code,.admin-third-parties .select-input-text .help-copy,.admin-webhooks .history-single-request-body span,.admin-webhooks .history-single-request-header a,.admin-webhooks .history-single-response-body span,.admin-webhooks .history-single-response-header a{font-size:.8rem}.project-values-row{-webkit-box-align:center;-webkit-align-items:center;border-bottom:1px solid #f5f5f5;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;justify-content:center;padding:1rem}.project-values-row div{margin-left:1rem;position:relative}.project-values-row .icon{color:#b8b8b8;opacity:0}.project-values-row .icon:hover{color:#444;-webkit-transition:all .2s ease-in;transition:all .2s ease-in}.project-values-header{border-bottom:3px solid #f5f5f5}.project-values-body .project-values-row:hover{background:#f6fceb;cursor:move;-webkit-transition:background .2s ease-in;transition:background .2s ease-in}.project-values-body .project-values-row:hover .icon{opacity:1;-webkit-transition:opacity .2s ease-in;transition:opacity .2s ease-in}.project-values-name{-webkit-flex-basis:0;-webkit-box-flex:3;-webkit-flex-grow:3;-ms-flex-positive:3;flex-grow:3}.project-values-value .checksley-error-list{left:0;right:auto;top:35px;white-space:nowrap}.project-values-isclosed,.project-values-settings{-ms-flex-preferred-size:0;flex-basis:0;text-align:right}.project-values-settings a{color:#555;margin-right:.5rem}.project-values-settings a:hover{color:#72a114;-webkit-transition:color .3s linear;transition:color .3s linear}.admin-third-parties .select-input-text .help-copy.visible,.admin-webhooks .webhooks-table .row:hover .webhook-options-wrapper{opacity:1;-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.project-values-settings a:hover .icon-delete{color:red}.admin-third-parties input,.admin-third-parties label,.admin-third-parties textarea{font-family:OpenSans-CondLight,Arial,Helvetica,sans-serif}.admin-third-parties .help h3,.admin-third-parties .help ol span{font-family:opensans-semibold}.admin-third-parties form{margin:1rem 0;max-width:700px;width:100%}.admin-third-parties fieldset{margin-bottom:1rem}.admin-third-parties label{display:block;margin-bottom:.2rem}.admin-third-parties textarea{height:10rem}.admin-third-parties .submit-button{color:#fff;display:block;text-align:center}.admin-third-parties .select-input-text .field-with-option{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.admin-third-parties .select-input-text .option-wrapper{border:1px solid #b8b8b8;border-left:0;border-radius:0 5px 5px 0;cursor:pointer;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding:0 1rem}.admin-third-parties .select-input-text .help-copy{opacity:0}.admin-third-parties .help{margin-top:2rem}.admin-third-parties .help h3{margin-bottom:1rem}.admin-third-parties .help ol{padding:0 0 0 2rem}.admin-third-parties .help .img{margin-bottom:1rem}.admin-third-parties .help code{background:#f5f5f5;direction:ltr;display:block;font-family:'courier new',monospace;line-height:1.4rem;margin-bottom:1rem;padding:.5rem;unicode-bidi:embed;white-space:pre;width:100%}.admin-third-parties .help .code-info{padding-left:1rem}.admin-third-parties .help .code-info li{margin-bottom:.5rem}.admin-third-parties .help .code-info span{font-family:opensans-semibold}.admin-webhooks .history-single-request-header span:first-child,.admin-webhooks .history-single-response-header span:first-child,.admin-webhooks .table-header{font-family:opensans-semibold,Arial,Helvetica,sans-serif}.admin-webhooks .history-single-request-body .response-container,.admin-webhooks .history-single-request-body textarea,.admin-webhooks .history-single-response-body .response-container,.admin-webhooks .history-single-response-body textarea{font-family:'courier new',monospace}.admin-webhooks .webhooks-table .row{border-bottom:0;padding:.5rem 0}.admin-webhooks .table-header{border-bottom:1px solid #b8b8b8}.admin-webhooks .single-webhook-wrapper,.policy-table .policy-table-row{border-bottom:1px solid #f5f5f5}.admin-webhooks .table-body .webhook-service{color:#555}.admin-webhooks .webhooks-options{margin-bottom:1rem;text-align:right}.admin-webhooks .webhook-service,.admin-webhooks .webhook-url{margin-right:.5rem}.admin-webhooks .webhook-service{-webkit-flex-basis:20%;-ms-flex-preferred-size:20%;flex-basis:20%;-webkit-box-flex:0;-webkit-flex-grow:0;-ms-flex-positive:0;flex-grow:0}.admin-webhooks .webhook-url{-webkit-flex-basis:400px;-ms-flex-preferred-size:400px;flex-basis:400px;-webkit-box-flex:8;-webkit-flex-grow:8;-ms-flex-positive:8;flex-grow:8}.admin-webhooks .webhook-url span{max-width:65%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#b8b8b8;display:inline-block;vertical-align:middle}.admin-webhooks .webhook-url a{color:#72a114;margin-left:.5rem}.admin-webhooks .webhook-url a:hover{color:#9dce0a}.admin-webhooks .webhook-options{-webkit-flex-basis:100px;-ms-flex-preferred-size:100px;flex-basis:100px;-webkit-box-flex:0;-webkit-flex-grow:0;-ms-flex-positive:0;flex-grow:0;min-width:100px;text-align:center}.admin-webhooks .webhook-options a{color:#b8b8b8;margin-right:.5rem;-webkit-transition:color .2s linear;transition:color .2s linear;vertical-align:middle}.admin-webhooks .webhook-options a:hover{color:#72a114;-webkit-transition:color .2s linear;transition:color .2s linear}.admin-webhooks .webhook-options-wrapper{opacity:0;-webkit-transition:opacity .3s linear;transition:opacity .3s linear}.admin-webhooks .webhooks-history,.admin-webhooks .webhooks-history.open{-webkit-transition:max-height .5s ease-in;transition:max-height .5s ease-in}.admin-webhooks .webhook-url-inputs{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;justify-content:center}.admin-webhooks .webhook-url-inputs fieldset{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;margin-right:.3rem}.admin-webhooks .webhooks-history{max-height:0;overflow:hidden}.admin-webhooks .webhooks-history.open{max-height:1000px}.admin-webhooks .history-single,.admin-webhooks .history-single:hover{-webkit-transition:background .2s linear;transition:background .2s linear}.admin-webhooks .history-single-wrapper{border-bottom:1px solid #f5f5f5;margin-left:22%}.admin-webhooks .history-single{cursor:pointer;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;padding:.5rem}.admin-webhooks .history-single:hover{background:rgba(157,206,10,.1)}.admin-webhooks .history-single.history-single-open:hover{background:0 0}.admin-webhooks .history-single.history-single-open .icon-arrow-bottom{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg);-webkit-transition:-webkit-transform .3s linear;transition:transform .3s linear}.admin-webhooks .history-single .icon-arrow-bottom{-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);-webkit-transition:-webkit-transform .3s linear;transition:transform .3s linear}.admin-webhooks .history-response-icon{background:#555;border-radius:25%;display:inline-block;height:.8rem;margin-right:.5rem;width:.8rem}.admin-webhooks .history-response-icon.history-success{background:#9dce0a}.admin-webhooks .history-response-icon.history-error{background:red}.admin-webhooks .history-single-response{max-height:0;-webkit-transition:max-height .5s ease-in;transition:max-height .5s ease-in;overflow:hidden}.admin-webhooks .history-single-response.open{-webkit-transition:max-height .5s ease-in;transition:max-height .5s ease-in;max-height:1000px}.admin-webhooks .history-single-request-header,.admin-webhooks .history-single-response-header{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;padding:1.5rem 0 .5rem}.admin-webhooks .history-single-request-header a,.admin-webhooks .history-single-request-header span:first-child,.admin-webhooks .history-single-response-header a,.admin-webhooks .history-single-response-header span:first-child{color:#b8b8b8}.admin-webhooks .history-single-request-header a:hover,.admin-webhooks .history-single-response-header a:hover{color:#9dce0a;-webkit-transition:color .2s linear;transition:color .2s linear}.admin-webhooks .history-single-request-header .icon,.admin-webhooks .history-single-response-header .icon{margin-right:.3rem;vertical-align:middle}.admin-webhooks .history-single-request-body .response-container,.admin-webhooks .history-single-response-body .response-container{-webkit-align-content:center;-ms-flex-line-pack:center;align-content:center;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;background:#f5f5f5;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-justify-content:space-around;-ms-flex-pack:distribute;justify-content:space-around;margin-bottom:.5rem}.admin-webhooks .history-single-request-body span,.admin-webhooks .history-single-response-body span{color:#b8b8b8;-webkit-flex-basis:20%;-ms-flex-preferred-size:20%;flex-basis:20%;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;text-align:center}.admin-webhooks .history-single-request-body textarea,.admin-webhooks .history-single-response-body textarea{border:0;-webkit-box-flex:2;-webkit-flex-grow:2;-ms-flex-positive:2;flex-grow:2;min-height:7.5rem}.project-csv .field-with-options input,.user-profile form .avatar-container{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.admin-webhooks .history-single-response-body textarea{min-height:10rem}.admin-contrib form{margin:1rem 0;max-width:700px;width:100%}.admin-contrib fieldset{margin-bottom:1rem}.admin-contrib .contrib-input{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.admin-contrib .contrib-test{-webkit-box-align:end;-webkit-align-items:flex-end;-ms-flex-align:end;align-items:flex-end;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-basis:7.5rem;-ms-flex-preferred-size:7.5rem;flex-basis:7.5rem;margin-left:.5rem;text-align:center}.policy-table .policy-table-project,.user-profile form .avatar-container,.user-profile form .data{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0}.admin-contrib .select-input-text .option-wrapper,.policy-table .policy-table-row,.project-csv .csv-regenerate-field,.project-csv .option-wrapper,.table-team .member-stats,.user-profile form .avatar-container .overlay{-webkit-box-align:center;-webkit-align-items:center}.admin-contrib .contrib-test a{padding:.6rem 2.5rem}.admin-contrib label{font-family:OpenSans-CondLight,Arial,Helvetica,sans-serif;display:block;margin-bottom:.2rem}.admin-contrib .help .img,.admin-contrib .help h3{margin-bottom:1rem}.admin-contrib .help h3,.admin-contrib .help ol span{font-family:opensans-semibold}.admin-contrib .contrib-form-wrapper{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.admin-contrib .submit-button{display:block;text-align:center}.admin-contrib .select-input-text .field-with-option{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.admin-contrib .select-input-text .option-wrapper{-ms-flex-align:center;align-items:center;border:1px solid #b8b8b8;border-left:0;border-radius:0 5px 5px 0;cursor:pointer;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding:0 1rem}.admin-contrib .select-input-text .help-copy{opacity:0}.admin-contrib .select-input-text .help-copy.visible{opacity:1;-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.policy-table input:checked+label,.policy-table label:hover{-webkit-transition:background .3s linear;transition:background .3s linear}.admin-contrib .help{margin-top:2rem}.admin-contrib .help ol{padding:0 0 0 2rem}.admin-contrib .help code{background:#f5f5f5;direction:ltr;display:block;font-family:'courier new',monospace;line-height:1.4rem;margin-bottom:1rem;padding:.5rem;unicode-bidi:embed;white-space:pre;width:100%}.admin-contrib .help .code-info{padding-left:1rem}.admin-contrib .help .code-info li{margin-bottom:.5rem}.admin-contrib .help .code-info span{font-family:opensans-semibold}.project-csv .csv-regenerate-field a{font-size:.8rem;min-width:110px}.project-csv{margin-bottom:2.5rem}.project-csv .project-values-title{margin-bottom:1rem}.project-csv .csv-regenerate-field{-ms-flex-line-pack:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:1rem}.policy-table .policy-table-row,.user-profile form .avatar-container .overlay{-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.project-csv .csv-regenerate-field .icon{margin-right:.3rem}.project-csv .field-with-options{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin-right:1rem;width:100%}.project-csv .option-wrapper{-ms-flex-align:center;align-items:center;border:1px solid #b8b8b8;border-left:0;border-radius:0 5px 5px 0;cursor:pointer;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding:0 1rem}.project-csv .button{padding:.5rem 1rem}.project-csv .button span{margin:0}.user-profile form .avatar-container p{font-size:.5rem}.user-profile .delete-account,.user-profile form .avatar-container .use-gravatar{font-size:.8rem}.user-profile label{font-family:OpenSans-CondLight,Arial,Helvetica,sans-serif}.user-profile form .avatar-container span{font-family:opensans-semibold,Arial,Helvetica,sans-serif}.loading-spinner,.user-profile form .avatar-container .loading-spinner{animation:rotate 1.5s cubic-bezier(0,.05,.87,1.04)infinite alternate;margin:0 auto;max-height:1rem;max-width:1rem;-webkit-transform-origin:32 32;-ms-transform-origin:32 32;transform-origin:32 32}.user-profile form{max-width:700px;width:100%}.user-profile form .container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.user-profile form .avatar-container{margin-right:1rem}.user-profile form .avatar-container .image-container{position:relative}.user-profile form .avatar-container .avatar{border-radius:8%;width:100%}.user-profile form .avatar-container .overlay{-ms-flex-line-pack:center;-ms-flex-align:center;align-items:center;background:rgba(5,5,5,.8);bottom:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;left:0;position:absolute;right:0;top:0;width:100%}.user-profile form .avatar-container .loading-spinner{border:0;-webkit-box-flex:0;-webkit-flex-grow:0;-ms-flex-positive:0;flex-grow:0;max-height:3rem;max-width:3rem;-webkit-transform-origin:center center;-ms-transform-origin:center center;transform-origin:center center}.policy-table .policy-table-project,.user-profile form .data{-webkit-box-flex:3;-webkit-flex-grow:3;-ms-flex-positive:3;flex-grow:3}.user-profile form .avatar-container p{line-height:.8rem;margin-bottom:.3rem;text-align:center}.user-profile form .avatar-container .use-gravatar{cursor:pointer;display:inline-block;text-align:center;width:100%}.user-profile fieldset{margin-bottom:1rem}.user-profile .submit{margin-top:2rem}.user-profile label{display:block;margin-bottom:.5rem}.user-profile .button-green{color:#fff;cursor:pointer;display:block;padding:12px;text-align:center}.user-profile .delete-account{display:block;margin-top:1rem}.user-change-password fieldset{margin-bottom:1rem;width:50%}.user-change-password fieldset:last-child{margin-top:2rem}.user-change-password label{font-family:OpenSans-CondLight,Arial,Helvetica,sans-serif;display:block;margin-bottom:.5rem}.user-change-password .button-green{color:#fff;display:block;padding:12px;text-align:center}.policy-table .policy-table-row{-ms-flex-align:center;align-items:center;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.policy-table .policy-table-header{font-family:opensans-semibold,Arial,Helvetica,sans-serif;border-bottom:2px solid #b8b8b8}.policy-table .policy-table-all,.policy-table .policy-table-involved,.policy-table .policy-table-none,.policy-table .policy-table-project{padding:1rem}.policy-table .policy-table-all,.policy-table .policy-table-involved,.policy-table .policy-table-none{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.policy-table input{display:none}.policy-table input:checked+label{background:#72a114}.policy-table label{background:#b8b8b8;border-radius:5px;color:#fff;display:block;padding:.5rem}.policy-table label:hover{background:#9dce0a;cursor:pointer}.team-filters nav li{font-size:1.6rem;font-family:OpenSans-CondLight,Arial,Helvetica,sans-serif;border-bottom:1px solid #b8b8b8;text-transform:uppercase}.table-team .team-header,.team-filters nav li:last-child{border-bottom:0}.team-filters .search-in{margin-bottom:1rem;position:relative}.team-filters nav a{display:block;padding:1rem 0 1rem 1rem}.team-filters nav a.active,.team-filters nav a:hover{color:#72a114;-webkit-transition:color .3s linear;transition:color .3s linear}.team-filters nav .active,.team-filters nav a.active.icon{opacity:1;-webkit-transition:opacity .3s linear;transition:opacity .3s linear}.team-filters nav .icon{color:#050505;float:right;opacity:0}.table-team .leave-project,.table-team .popover,.table-team .popover a{font-size:.8rem}.table-team .attribute .icon,.table-team .attribute .points{font-size:2rem;color:#444}.table-team .popover{font-family:opensans-regular,Arial,Helvetica,sans-serif;line-height:1.3rem}.table-team .attribute .points,.table-team .avatar .name,.table-team .team-header{font-family:opensans-semibold,Arial,Helvetica,sans-serif}.table-team .row{padding:.5rem}.table-team .username{-webkit-box-flex:3;-webkit-flex:3;-ms-flex:3;flex:3;min-width:300px}.table-team .member-stats{-ms-flex-line-pack:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:6;-webkit-flex:6;-ms-flex:6;flex:6;-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end}.table-team .attribute{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;position:relative;text-align:center}.table-team .attribute .icon.top,.table-team .attribute .points.top{color:#9dce0a}.table-team .attribute .top{color:#9dce0a;opacity:1}.table-team .attribute:hover .popover{display:block}.table-team .leave-project{color:#b8b8b8;display:block}.table-team .leave-project .icon{margin-right:.2rem}.table-team .leave-project:hover .icon{color:red;-webkit-transition:color .3s linear;transition:color .3s linear}.table-team .hero{width:100%}.table-team .hero .row{background:#f5f5f5;border-bottom:0;margin:1rem 0}.table-team .avatar{-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.table-team .avatar img{-webkit-flex-basis:66px;-ms-flex-preferred-size:66px;flex-basis:66px;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;max-width:66px}.table-team .avatar figcaption{margin-left:1rem;width:65%}.table-team .avatar figcaption span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}.table-team .avatar .name,.table-team .avatar .position{display:block;width:100%}.table-team .avatar .position{color:#b8b8b8}.table-team .popover{background:#050505;bottom:30px;color:#fff;display:none;left:0;list-style-type:none;margin:0;padding:10px;position:absolute;width:100%;z-index:99}.table-team .popover a{border-bottom:1px solid #444;color:#fff;display:block;padding:10px 2px}.table-team .popover a:last-child{border:0}.table-team .popover a:hover{color:#9dce0a;-webkit-transition:color .3s linear;transition:color .3s linear}.table-team .popover a:hover.point{color:#fff}.table-team .popover:after{background:#050505;bottom:-5px;content:'';height:15px;left:50%;position:absolute;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg);width:15px}.lightbox-generic-notion section{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-basis:600px;-ms-flex-preferred-size:600px;flex-basis:600px}.loading-spinner{margin:0 auto;max-height:1rem;max-width:1rem;-webkit-transform-origin:32 32;-ms-transform-origin:32 32;transform-origin:32 32}:root .taskboard-table-body .task-row,_:-ms-fullscreen .task-row{min-height:auto} \ No newline at end of file + */.pika-single{z-index:9999;display:block;position:relative;width:240px;padding:8px;color:#333;background:#fff;border:1px solid #ccc;border-bottom-color:#bbb;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}.backlog-table-body .pop-points a:last-child,.backlog-table-body .pop-points-open a:last-child,.backlog-table-body .pop-role a:last-child,.backlog-table-body .pop-status a:last-child,.backlog-table-header .pop-points a:last-child,.backlog-table-header .pop-points-open a:last-child,.backlog-table-header .pop-role a:last-child,.backlog-table-header .pop-status a:last-child,.pika-button,.pika-next,.pika-prev,.pika-table,.project-values-body form:last-child .project-values-row{border:0}.pika-single.is-hidden{display:none}.pika-single.is-bound{position:absolute;box-shadow:0 5px 15px -5px rgba(0,0,0,.5)}.pika-title{position:relative;text-align:center}.pika-label{display:inline-block;position:relative;z-index:9999;overflow:hidden;margin:0;padding:5px 3px;font-size:14px;line-height:20px;font-weight:700;background-color:#fff}.pika-title select{cursor:pointer;position:absolute;z-index:9998;margin:0;left:0;top:5px;filter:alpha(opacity=0);opacity:0}.pika-next,.pika-prev{display:block;cursor:pointer;position:relative;outline:0;padding:0;width:20px;height:30px;text-indent:20px;white-space:nowrap;overflow:hidden;background-color:transparent;background-position:center center;background-repeat:no-repeat;background-size:75% 75%;opacity:.5}.pika-next:hover,.pika-prev:hover{opacity:1}.is-rtl .pika-next,.pika-prev{float:left;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAUklEQVR42u3VMQoAIBADQf8Pgj+OD9hG2CtONJB2ymQkKe0HbwAP0xucDiQWARITIDEBEnMgMQ8S8+AqBIl6kKgHiXqQqAeJepBo/z38J/U0uAHlaBkBl9I4GwAAAABJRU5ErkJggg==)}.is-rtl .pika-prev,.pika-next{float:right;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAU0lEQVR42u3VOwoAMAgE0dwfAnNjU26bYkBCFGwfiL9VVWoO+BJ4Gf3gtsEKKoFBNTCoCAYVwaAiGNQGMUHMkjGbgjk2mIONuXo0nC8XnCf1JXgArVIZAQh5TKYAAAAASUVORK5CYII=)}.pika-next.is-disabled,.pika-prev.is-disabled{cursor:default;opacity:.2}.pika-select{display:inline-block}.pika-table{width:100%;border-spacing:0}.pika-table td,.pika-table th{width:14.285714285714286%;padding:0}.pika-table th{color:#999;font-size:12px;line-height:25px;font-weight:700;text-align:center}.pika-button{cursor:pointer;display:block;outline:0;margin:0;width:100%;padding:5px;color:#666;font-size:12px;line-height:15px;text-align:right;background:#f5f5f5}.is-today .pika-button{color:#3af;font-weight:700}.is-selected .pika-button{color:#fff;font-weight:700;background:#3af;box-shadow:inset 0 1px 3px #178fe5;border-radius:3px}.is-disabled .pika-button{pointer-events:none;cursor:default;color:#999;opacity:.3}.pika-button:hover{color:#fff!important;background:#ff8000!important;box-shadow:none!important;border-radius:3px!important}.backlog-table-body .doom-line span,.backlog-table-body .pop-points a,.backlog-table-body .pop-points-open a,.backlog-table-body .pop-role a,.backlog-table-body .pop-status a,.backlog-table-body .row,.backlog-table-body .tags-block .tag,.backlog-table-header .pop-points a,.backlog-table-header .pop-points-open a,.backlog-table-header .pop-role a,.backlog-table-header .pop-status a,.backlog-table-header .row{font-size:.8rem}.backlog-table-header .backlog-table-title{font-size:1rem}.backlog-table-body .doom-line span{font-family:OpenSans-CondLight,Arial,Helvetica,sans-serif}.backlog-table-body .pop-points,.backlog-table-body .pop-points-open,.backlog-table-body .pop-role,.backlog-table-body .pop-status,.backlog-table-header .pop-points,.backlog-table-header .pop-points-open,.backlog-table-header .pop-role,.backlog-table-header .pop-status{font-family:opensans-regular,Arial,Helvetica,sans-serif;line-height:1.3rem}.backlog-table-body,.backlog-table-header{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;width:100%}.backlog-table-body.show-tags .tags-block,.backlog-table-header.show-tags .tags-block{display:block}.backlog-table-body .row,.backlog-table-header .row{border-bottom:1px solid #b8b8b8;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding:.5rem 0 .5rem .5rem;text-align:left;width:100%}.backlog-table-body .backlog-table-subtitle:hover,.backlog-table-body .backlog-table-title:hover,.backlog-table-body .row:hover,.backlog-table-header .backlog-table-subtitle:hover,.backlog-table-header .backlog-table-title:hover,.backlog-table-header .row:hover{background:0 0}.backlog-table-body .backlog-table-subtitle .user-stories,.backlog-table-body .backlog-table-title .user-stories,.backlog-table-body .row .user-stories,.backlog-table-header .backlog-table-subtitle .user-stories,.backlog-table-header .backlog-table-title .user-stories,.backlog-table-header .row .user-stories{overflow:hidden;width:100%}.backlog-table-body .backlog-table-subtitle .status,.backlog-table-body .backlog-table-title .status,.backlog-table-body .row .status,.backlog-table-header .backlog-table-subtitle .status,.backlog-table-header .backlog-table-title .status,.backlog-table-header .row .status{-webkit-flex-basis:150px;-ms-flex-preferred-size:150px;flex-basis:150px;-webkit-box-flex:0;-webkit-flex-grow:0;-ms-flex-positive:0;flex-grow:0;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0}.backlog-table-body .backlog-table-subtitle .points,.backlog-table-body .backlog-table-title .points,.backlog-table-body .row .points,.backlog-table-header .backlog-table-subtitle .points,.backlog-table-header .backlog-table-title .points,.backlog-table-header .row .points{-webkit-flex-basis:125px;-ms-flex-preferred-size:125px;flex-basis:125px;-webkit-box-flex:0;-webkit-flex-grow:0;-ms-flex-positive:0;flex-grow:0}.project-values-name,.project-values-value{-ms-flex-preferred-size:0;flex-basis:0}.project-values-isclosed,.project-values-settings,.project-values-value{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;-webkit-flex-basis:0}.backlog-table-body .points,.backlog-table-body .status,.backlog-table-header .points,.backlog-table-header .status{position:relative;text-align:right}.backlog-table-body .points .popover a,.backlog-table-body .status .popover a,.backlog-table-header .points .popover a,.backlog-table-header .status .popover a{text-align:left;width:100%}.backlog-table-body .points .popover .point,.backlog-table-body .status .popover .point,.backlog-table-header .points .popover .point,.backlog-table-header .status .popover .point{text-align:center}.backlog-table-body .points .icon,.backlog-table-body .status .icon,.backlog-table-header .points .icon,.backlog-table-header .status .icon{color:#b8b8b8;margin-left:.2rem}.backlog-table-body .pop-status,.backlog-table-header .pop-status{background:#050505;color:#fff;display:none;left:65%;list-style-type:none;margin:0;padding:10px 1rem 10px 10px;position:absolute;top:0;width:200px;z-index:99}.backlog-table-body .pop-status a,.backlog-table-header .pop-status a{border-bottom:1px solid #444;color:#fff;display:block;padding:10px 2px}.backlog-table-body .pop-status a:hover,.backlog-table-header .pop-status a:hover{color:#9dce0a;-webkit-transition:color .3s linear;transition:color .3s linear}.backlog-table-body .pop-status a:hover.point,.backlog-table-header .pop-status a:hover.point{color:#fff}.backlog-table-body .pop-status:after,.backlog-table-header .pop-status:after{background:#050505;position:absolute;transform:rotate(45deg);width:0}.backlog-table-body .pop-status.fix,.backlog-table-header .pop-status.fix{bottom:0;top:auto}.backlog-table-body .pop-role,.backlog-table-header .pop-role{background:#050505;color:#fff;display:none;left:65%;list-style-type:none;margin:0;padding:10px;position:absolute;top:0;width:200px;z-index:99}.backlog-table-body .pop-role a,.backlog-table-header .pop-role a{border-bottom:1px solid #444;color:#fff;display:block;padding:10px 2px}.backlog-table-body .pop-role a:hover,.backlog-table-header .pop-role a:hover{color:#9dce0a;-webkit-transition:color .3s linear;transition:color .3s linear}.backlog-table-body .pop-role a:hover.point,.backlog-table-header .pop-role a:hover.point{color:#fff}.backlog-table-body .pop-role:after,.backlog-table-header .pop-role:after{background:#050505;position:absolute;transform:rotate(45deg);width:0}.backlog-table-body .pop-role a.active,.backlog-table-header .pop-role a.active{background:#9dce0a;color:#fff}.backlog-table-body .pop-points,.backlog-table-header .pop-points{background:#050505;bottom:10px;color:#fff;display:none;left:30px;list-style-type:none;margin:0;padding:10px 3rem 10px 10px;position:absolute;width:150px;z-index:99}.backlog-table-body .pop-points a,.backlog-table-header .pop-points a{border-bottom:1px solid #444;color:#fff;display:block;padding:10px 2px}.backlog-table-body .pop-points a:hover,.backlog-table-header .pop-points a:hover{color:#9dce0a;-webkit-transition:color .3s linear;transition:color .3s linear}.backlog-table-body .pop-points a:hover.point,.backlog-table-header .pop-points a:hover.point{color:#fff}.backlog-table-body .pop-points:after,.backlog-table-header .pop-points:after{background:#050505;position:absolute;transform:rotate(45deg);width:0}.backlog-table-body .pop-points-open,.backlog-table-header .pop-points-open{background:#050505;color:#fff;display:none;left:30px;list-style-type:none;margin:0;padding:10px;position:absolute;top:0;width:200px;z-index:99}.backlog-table-body .pop-points-open a,.backlog-table-header .pop-points-open a{border-bottom:1px solid #444;color:#fff;padding:10px 2px}.backlog-table-body .pop-points-open a:hover,.backlog-table-header .pop-points-open a:hover{-webkit-transition:color .3s linear;transition:color .3s linear}.backlog-table-body .pop-points-open a:hover.point,.backlog-table-header .pop-points-open a:hover.point{color:#fff}.backlog-table-body .pop-points-open:after,.backlog-table-header .pop-points-open:after{background:#050505;position:absolute;transform:rotate(45deg);width:0}.backlog-table-body .pop-points-open li,.backlog-table-header .pop-points-open li{display:inline-block;width:23%}.backlog-table-body .pop-points-open a,.backlog-table-header .pop-points-open a{display:block;text-align:center}.backlog-table-body .pop-points-open a.active,.backlog-table-body .pop-points-open a:hover,.backlog-table-header .pop-points-open a.active,.backlog-table-header .pop-points-open a:hover{background:#9dce0a;color:#fff}.backlog-table-header .backlog-table-title{font-family:opensans-semibold,Arial,Helvetica,sans-serif;border-bottom:2px solid #b8b8b8;padding-right:30px}.backlog-table-header .points{cursor:pointer}.backlog-table-header .header-points span{color:#b8b8b8}.backlog-table-body .row{border-bottom:1px solid #ebebeb;cursor:move;position:relative}.backlog-table-body .row:hover{background:#f6fceb;-webkit-transition:background .2s ease-in;transition:background .2s ease-in}.backlog-table-body .row:hover .icon-drag-v,.backlog-table-body .row:hover .us-settings{opacity:1;-webkit-transition:all .2s ease-in;transition:all .2s ease-in}.backlog-table-body .row-selected,.backlog-table-body .row.ui-sortable-helper{background:#f6fceb;-webkit-transition:background .2s ease-in;transition:background .2s ease-in}.backlog-table-body .row:last-child{border-bottom:0}.backlog-table-body .row.sortable-placeholder{background:#f5f5f5;height:40px}.backlog-table-body .row.ui-sortable-helper{box-shadow:1px 1px 10px rgba(0,0,0,.1)}.backlog-table-body .row .points .not-clickable:hover{color:#000;cursor:text}.backlog-table-body .user-story-name{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.backlog-table-body .user-story-name input{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;margin-right:1rem;vertical-align:super}.backlog-table-body .user-story-name input:checked+a{color:#9dce0a;-webkit-transition:color .2s ease-in;transition:color .2s ease-in}.backlog-table-body .user-story-name a{display:inline-block;-webkit-box-flex:20;-webkit-flex-grow:20;-ms-flex-positive:20;flex-grow:20;max-width:90%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.backlog-table-body .tags-block{display:none;margin-bottom:.3rem}.backlog-table-body .tags-block .tag{margin-right:.5rem;padding:.2rem .5rem}.backlog-table-body .blocked{background:#ff8282;border-bottom:1px solid #fff;color:#fff}.backlog-table-body .blocked:hover{background:red;-webkit-transition:background .2s ease-in;transition:background .2s ease-in}.backlog-table-body .blocked a{color:#fff!important}.backlog-table-body .blocked .icon,.backlog-table-body .blocked .icon:hover,.backlog-table-body .blocked a:hover{color:#fff}.backlog-table-body .doom-line{background:red;margin:.2rem 0;padding:.6rem 0;position:relative;width:100%}.backlog-table-body .doom-line span{color:#fff;position:absolute;right:.5rem;top:-3px}.backlog-table-body .icon-drag-v,.backlog-table-body .us-settings a{font-size:1.2rem;color:#b8b8b8;-webkit-transition:all .2s ease-in;transition:all .2s ease-in;width:30px}.backlog-table-body .icon-drag-v:hover,.backlog-table-body .us-settings a:hover{color:#444;-webkit-transition:all .2s ease-in;transition:all .2s ease-in}.backlog-table-body .us-settings{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;margin:0 0 0 2rem;opacity:0}.backlog-table-body .icon-drag-v{cursor:move;opacity:0;padding:.1rem .5rem 0 0}.backlog-table-body .readonly{cursor:auto;padding-right:45px}.admin-submenu-roles li{font-size:1.6rem;font-family:OpenSans-CondLight,Arial,Helvetica,sans-serif;border-bottom:1px solid #a6b2a7;text-transform:uppercase}.admin-webhooks .history-single-request-header span:first-child,.admin-webhooks .history-single-response-header span:first-child,.admin-webhooks .table-header,.project-values-header{font-family:opensans-semibold,Arial,Helvetica,sans-serif}.admin-submenu-roles h1{font-size:2rem;color:#fff}.admin-submenu-roles li:last-child{border-bottom:0}.admin-submenu-roles a{color:#fff;display:block;padding:1rem 0 1rem 1rem}.admin-submenu-roles a.active,.admin-submenu-roles a:hover{color:#050505}.admin-submenu-roles a.active .icon,.admin-submenu-roles a:hover .icon{opacity:1;-webkit-transition:opacity .3s linear;transition:opacity .3s linear}.admin-submenu-roles .single-role{max-width:175px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:inline-block}.admin-submenu-roles .icon{color:#fff;float:right;opacity:0}.admin-submenu-roles .button-gray{padding:.5rem 0;text-align:center}.admin-submenu-roles .button-gray:hover{background-color:#050505}.project-values-row .icon,.project-values-settings a{font-size:1.2rem}.project-values-row{-ms-flex-align:center;align-items:center;border-bottom:1px solid #f5f5f5;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;justify-content:center;padding:1rem}.project-values-row div{margin-left:1rem;position:relative}.project-values-row .icon{color:#b8b8b8;opacity:0}.project-values-row .icon:hover{color:#444;-webkit-transition:all .2s ease-in;transition:all .2s ease-in}.project-values-header{border-bottom:3px solid #f5f5f5}.project-values-body .project-values-row:hover{background:#f6fceb;cursor:move;-webkit-transition:background .2s ease-in;transition:background .2s ease-in}.project-values-body .project-values-row:hover .icon{opacity:1;-webkit-transition:opacity .2s ease-in;transition:opacity .2s ease-in}.project-values-name{-webkit-flex-basis:0;-webkit-box-flex:3;-webkit-flex-grow:3;-ms-flex-positive:3;flex-grow:3}.project-values-value .checksley-error-list{left:0;right:auto;top:35px;white-space:nowrap}.project-values-isclosed,.project-values-settings{-ms-flex-preferred-size:0;flex-basis:0;text-align:right}.project-values-settings a{color:#555;margin-right:.5rem}.project-values-settings a:hover{color:#72a114;-webkit-transition:color .3s linear;transition:color .3s linear}.project-values-settings a:hover .icon-delete{color:red}.admin-webhooks .history-single-request-body span,.admin-webhooks .history-single-request-header a,.admin-webhooks .history-single-response-body span,.admin-webhooks .history-single-response-header a{font-size:.8rem}.admin-webhooks .history-single-request-body .response-container,.admin-webhooks .history-single-request-body textarea,.admin-webhooks .history-single-response-body .response-container,.admin-webhooks .history-single-response-body textarea{font-family:'courier new',monospace}.loading-spinner{-webkit-animation:rotate 1.5s cubic-bezier(0,.05,.87,1.04)infinite alternate;animation:rotate 1.5s cubic-bezier(0,.05,.87,1.04)infinite alternate;margin:0 auto;max-height:1rem;max-width:1rem;-webkit-transform-origin:32 32;-ms-transform-origin:32 32;transform-origin:32 32}.admin-webhooks .webhooks-table .row{border-bottom:0;padding:.5rem 0}.admin-webhooks .webhooks-table .row:hover .webhook-options-wrapper{opacity:1;-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.admin-webhooks .table-header{border-bottom:1px solid #b8b8b8}.admin-webhooks .table-body .webhook-service{color:#555}.admin-webhooks .single-webhook-wrapper{border-bottom:1px solid #f5f5f5}.admin-webhooks .webhooks-options{margin-bottom:1rem;text-align:right}.admin-webhooks .webhook-service,.admin-webhooks .webhook-url{margin-right:.5rem}.admin-webhooks .webhook-service{-webkit-flex-basis:20%;-ms-flex-preferred-size:20%;flex-basis:20%;-webkit-box-flex:0;-webkit-flex-grow:0;-ms-flex-positive:0;flex-grow:0}.admin-webhooks .webhook-url{-webkit-flex-basis:400px;-ms-flex-preferred-size:400px;flex-basis:400px;-webkit-box-flex:8;-webkit-flex-grow:8;-ms-flex-positive:8;flex-grow:8}.admin-webhooks .webhook-url span{max-width:65%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#b8b8b8;display:inline-block;vertical-align:middle}.admin-webhooks .webhook-url a{color:#72a114;margin-left:.5rem}.admin-webhooks .webhook-url a:hover{color:#9dce0a}.admin-webhooks .webhook-options{-webkit-flex-basis:100px;-ms-flex-preferred-size:100px;flex-basis:100px;-webkit-box-flex:0;-webkit-flex-grow:0;-ms-flex-positive:0;flex-grow:0;min-width:100px;text-align:center}.admin-webhooks .webhook-options a{color:#b8b8b8;margin-right:.5rem;-webkit-transition:color .2s linear;transition:color .2s linear;vertical-align:middle}.admin-webhooks .webhook-options a:hover{color:#72a114;-webkit-transition:color .2s linear;transition:color .2s linear}.admin-webhooks .webhook-options-wrapper{opacity:0;-webkit-transition:opacity .3s linear;transition:opacity .3s linear}.admin-webhooks .webhooks-history,.admin-webhooks .webhooks-history.open{-webkit-transition:max-height .5s ease-in;transition:max-height .5s ease-in}.admin-webhooks .webhook-url-inputs{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;justify-content:center}.admin-webhooks .webhook-url-inputs fieldset{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;margin-right:.3rem}.admin-webhooks .webhooks-history{max-height:0;overflow:hidden}.admin-webhooks .webhooks-history.open{max-height:1000px}.admin-webhooks .history-single,.admin-webhooks .history-single:hover{-webkit-transition:background .2s linear;transition:background .2s linear}.admin-webhooks .history-single-wrapper{border-bottom:1px solid #f5f5f5;margin-left:22%}.admin-webhooks .history-single{-ms-flex-align:center;align-items:center;cursor:pointer;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;padding:.5rem}.admin-webhooks .history-single:hover{background:rgba(157,206,10,.1)}.admin-webhooks .history-single.history-single-open:hover{background:0 0}.admin-webhooks .history-single.history-single-open .icon-arrow-bottom{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg);-webkit-transition:-webkit-transform .3s linear;transition:transform .3s linear}.admin-webhooks .history-single .icon-arrow-bottom{-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);-webkit-transition:-webkit-transform .3s linear;transition:transform .3s linear}.admin-webhooks .history-response-icon{background:#555;border-radius:25%;display:inline-block;height:.8rem;margin-right:.5rem;width:.8rem}.admin-webhooks .history-response-icon.history-success{background:#9dce0a}.admin-webhooks .history-response-icon.history-error{background:red}.admin-webhooks .history-single-response{max-height:0;-webkit-transition:max-height .5s ease-in;transition:max-height .5s ease-in;overflow:hidden}.admin-webhooks .history-single-response.open{-webkit-transition:max-height .5s ease-in;transition:max-height .5s ease-in;max-height:1000px}.admin-webhooks .history-single-request-header,.admin-webhooks .history-single-response-header{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;padding:1.5rem 0 .5rem}.admin-webhooks .history-single-request-header a,.admin-webhooks .history-single-request-header span:first-child,.admin-webhooks .history-single-response-header a,.admin-webhooks .history-single-response-header span:first-child{color:#b8b8b8}.admin-webhooks .history-single-request-header a:hover,.admin-webhooks .history-single-response-header a:hover{color:#9dce0a;-webkit-transition:color .2s linear;transition:color .2s linear}.admin-webhooks .history-single-request-header .icon,.admin-webhooks .history-single-response-header .icon{margin-right:.3rem;vertical-align:middle}.admin-webhooks .history-single-request-body .response-container,.admin-webhooks .history-single-response-body .response-container{-webkit-align-content:center;-ms-flex-line-pack:center;align-content:center;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;background:#f5f5f5;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-justify-content:space-around;-ms-flex-pack:distribute;justify-content:space-around;margin-bottom:.5rem}.admin-webhooks .history-single-request-body span,.admin-webhooks .history-single-response-body span{color:#b8b8b8;-webkit-flex-basis:20%;-ms-flex-preferred-size:20%;flex-basis:20%;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;text-align:center}.admin-webhooks .history-single-request-body textarea,.admin-webhooks .history-single-response-body textarea{border:0;-webkit-box-flex:2;-webkit-flex-grow:2;-ms-flex-positive:2;flex-grow:2;min-height:7.5rem}.admin-webhooks .history-single-response-body textarea{min-height:10rem} \ No newline at end of file