{"version":3,"file":"main.1fa811a671f32b28f601.bundle.js","mappings":"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EX,UAFW,qaCEX,UAFW,2hFCEX,UAFW,sdCEX,UAFW,0yECEX,UAFW,weCEX,UAFW,6vECEX,UAFW,wpTCEX,UAFW,20FCEX,UAFW,kjCCEX,UAFW,sgTCEX,UAFW,80ECEX,UAFW,8wDCEX,UAFW,2zJCEX,UAFW,y5NCEX,UAFW,+1HCEX,UAFW,osICEX,UAFW,uoNCEX,UAFW,knCCEX,UAFW,47DCEX,UAFW,0tECEX,UAFW,2tGCEX,UAFW,6+GCEX,UAFW,47DCEX,UAFW,8jGCEX,UAFW,w2gBCEX,UAFW,gwKCEX,UAFW,gnGCEX,UAFW,u5ECEX,UAFW,utICEX,UAFW,q/FCEX,UAFW,ozDCEX,UAFW,srICEX,UAFW,w6DCEX,UAFW,8zOCEX,UAFW,gYCEX,UAFW,o0FCEX,UAFW,4qKCEX,UAFW,snJCEX,UAFW,81BCEX,UAFW,+yDCEX,UAFW,03GCEX,UAFW,g+CCEX,UAFW,ghECEX,UAFW,8gECEX,UAFW,moECEX,UAFW,4rCCEX,UAFW,0hHCEX,UAFW,+mICEX,UAFW,8sKCEX,UAFW,sqGCEX,UAFW,2yHCEX,UAFW,0iDCEX,UAFW,ypJCEX,UAFW,6lDCEX,UAFW,m8BCEX,UAFW,wxBCEX,UAFW,mpGCEX,UAFW,86CCEX,UAFW,y+HCEX,UAFW,4+GCEX,UAFW,kkFCEX,UAFW,43DCEX,UAFW,06ECEX,UAFW,+tICEX,UAFW,goDCEX,UAFW,6hECEX,UAFW,ivICEX,UAFW,q2BCEX,UAFW,qgOCEX,UAFW,g3FCEX,UAFW,qsGCEX,UAFW,qVCEX,UAFW,60ICEX,UAFW,+tHCEX,UAFW,uzCCEX,UAFW,62BCEX,UAFW,upCCEX,UAFW,uUCEX,UAFW,sSCEX,UAFW,29BCEX,UAFW,kgKCEX,UAFW,2qDCEX,UAFW,2vHCEX,UAFW,ggECEX,UAFW,00OCEX,UAFW,2tCCEX,UAFW,2lSCEX,UAFW,69SCEX,UAFW,gqCCEX,UAFW,0yGCEX,UAFW,2rJCEX,UAFW,6iDCEX,UAFW,s6ECEX,UAFW,oyFCEX,UAFW,+rCCEX,UAFW,kuGCEX,UAFW,+nDCEX,UAFW,0wDCEX,UAFW,24JCEX,UAFW,u+cCEX,UAFW,+zECEX,UAFW,u2eCEX,UAFW,miFCEX,UAFW,g0RCEX,UAFW,8lMCEX,UAFW,o9GCEX,UAFW,446BCEX,UAFW,iiBCEX,UAFW,gVCEX,UAFW,maCEX,UAFW,mdCEX,UAFW,ofCEX,UAFW,oYCEX,UAFW,sYCEX,UAFW,0fCEX,UAFW,2dCEX,UAFW,4XCEX,UAFW,ggBCEX,UAFW,kbCEX,UAFW,qVCEX,UAFW,6cCEX,UAFW,wXCEX,UAFW,0hBCEX,UAFW,gaCEX,UAFW,wxBCEX,UAFW,qlBCEX,UAFW,ubCEX,UAFW,+jgBCEX,UAFW,6NCEX,UAFW,m9YCEX,UAFW,oUCEX,UAFW,ufCEX,UAFW,g9ECEX,UAFW,gpFCEX,UAFW,k2BCEX,UAFW,q4ECEX,UAFW,qtGCEX,UAFW,m8BCEX,UAFW,2jFCEX,UAFW,oqBCEX,UAFW,4FCEX,UAFW,ksHCEX,UAFW,2jDCEX,UAFW,qeCEX,UAFW,isKCEX,UAFW,w7DCEX,UAFW,mpFCEX,UAFW,q5JCEX,UAFW,64CCEX,UAFW,8iBCEX,UAFW,6sFCEX,UAFW,+fCEX,UAFW,mFCEX,UAFW,k+SCEX,UAFW,mwECEX,UAFW,gxJCEX,UAFW,04RCEX,UAFW,iiCCEX,UAFW,+zBCEX,UAFW,qqDCEX,UAFW,wuDCEX,UAFW,qkCCEX,UAFW,g6DCEX,UAFW,y2BCEX,UAFW,+yBCEX,UAFW,+OCEX,UAFW,ohGCEX,UAFW,k5ECEX,UAFW,yuECEX,UAFW,2iXCEX,UAFW,27NCEX,UAFW,mmcCEX,UAFW,07GCEX,UAFW,6YCEX,UAFW,0sBCEX,UAFW,iuHCEX,UAFW,07DCEX,UAFW,utBCEX,UAFW,05BCEX,UAFW,01ECEX,UAFW,isCCEX,UAFW,y9GCEX,UAFW,usECEX,UAFW,61CCEX,UAFW,yrDCEX,UAFW,ykMCEX,UAFW,knMCEX,UAFW,6nBCEX,UAFW,2fCEX,UAFW,2cCEX,UAFW,wkBCEX,UAFW,ikBCEX,UAFW,+fCEX,UAFW,gjBCEX,UAFW,6hBCEX,UAFW,0kBCEX,UAFW,gmBCEX,UAFW,wmBCEX,UAFW,gnBCEX,UAFW,krBCEX,UAFW,qfCEX,UAFW,+hBCEX,UAFW,8oBCEX,UAFW,koBCEX,UAFW,4+BCEX,UAFW,k/BCEX,UAFW,oiBCEX,UAFW,gjBCEX,UAFW,6pBCEX,UAFW,snBCEX,UAFW,moBCEX,UAFW,+oBCEX,UAFW,qrBCEX,UAFW,ifCEX,UAFW,kqBCEX,UAFW,iuBCEX,UAFW,41BCEX,UAFW,0rCCEX,UAFW,upBCEX,UAFW,qpCCEX,UAFW,6iBCEX,UAFW,6jBCEX,UAFW,glBCEX,UAFW,mpBCEX,UAFW,ypBCEX,UAFW,kqBCEX,UAFW,glBCEX,UAFW,22BCEX,UAFW,gkBCEX,UAFW,2lBCEX,UAFW,4kBCEX,UAFW,qkBCEX,UAFW,wlBCEX,UAFW,6kBCEX,UAFW,skBCEX,UAFW,gnHCEX,UAFW,q5BCEX,UAFW,+ZCEX,UAFW,swDCEX,UAFW,i0BCEX,UAFW,gTCEX,UAFW,gkHCEX,UAFW,wQCEX,UAFW,qKCEX,UAFW,k9BCEX,UAFW,okBCEX,UAFW,s7FCEX,UAFW,22ECEX,UAFW,mvHCEX,UAFW,0hFCEX,UAFW,saCEX,UAFW,imBCEX,UAFW,+oDCEX,UAFW,wuFCEX,UAFW,slgBCEX,UAFW,myhBCEX,UAFW,uoiBCEX,UAFW,ysiBCEX,UAFW,6scCEX,UAFW,6riBCEX,UAFW,8/eCEX,UAFW,s5eCEX,UAFW,6mgBCEX,UAFW,2khBCEX,UAFW,qtJCEX,UAFW,4+ICEX,UAFW,20BCEX,UAFW,0xCCEX,UAFW,48ECEX,UAFW,0wDCEX,UAFW,w/CCEX,UAFW,s5hBCEX,UAFW,myFCEX,UAFW,orCCEX,UAFW,yrCCEX,UAFW,stDCEX,UAFW,w0DCEX,UAFW,iqECEX,UAFW,4jFCEX,UAFW,0zKCEX,UAFW,0vDCEX,UAFW,mrKCEX,UAFW,2qBCEX,UAFW,gwECEX,UAFW,knDCEX,UAFW,y5CCEX,UAFW,qyCCEX,UAFW,g5DCEX,UAFW,msJCEX,UAFW,sFCEX,UAFW,soECEX,UAFW,8GCEX,UAFW,4nBCEX,UAFW,+5CCEX,UAFW,8sQCEX,UAFW,kujBCEX,UAFW,+qDCEX,UAFW,65OCEX,UAFW,upBCEX,UAFW,m2FCEX,UAFW,41LCEX,UAFW,o3GCEX,UAFW,i18CCEX,UAFW,k9CCEX,UAFW,81DCEX,UAFW,+tFCEX,UAFW,yOCEX,UAFW,iyFCEX,UAFW,+4ECEX,UAFW,+lBCEX,UAFW,gzFCEX,UAFW,khECEX,UAFW,+sCCEX,UAFW,ggBCEX,UAFW,kpECEX,UAFW,qKCEX,UAFW,03ECEX,UAFW,8uCCEX,UAFW,+tCCEX,UAFW,wrECEX,UAFW,i9BCEX,UAFW,g9ECEX,UAFW,o3LCEX,UAFW,uNCEX,UAFW,8nCCEX,UAFW,ywDCEX,UAFW,whaCEX,UAFW,qzCCEX,UAFW,iyFCEX,UAFW,42ECEX,UAFW,upBCEX,UAFW,qoFCEX,UAFW,upFCEX,UAFW,ssCCEX,UAFW,20BCEX,UAFW,g5DCEX,UAFW,sKCEX,UAFW,8tCCEX,UAFW,69ECEX,UAFW,k0yBCEX,UAFW,0jFCEX,UAFW,0vDCEX,UAFW,oxICEX,UAFW,+yFCEX,UAFW,84ECEX,UAFW,2mBCEX,UAFW,kzFCEX,UAFW,iqFCEX,UAFW,mqFCEX,UAFW,oaCEX,UAFW,6yCCEX,UAFW,izICEX,UAFW,03HCEX,UAFW,g/FCEX,UAFW,64DCEX,UAFW,u9DCEX,UAFW,u6ECEX,UAFW,y5ECEX,UAFW,8vCCEX,UAFW,6glBCEX,UAFW,qtECEX,UAFW,+wDCEX,UAFW,y8FCEX,UAFW,0rCCEX,UAFW,+1CCEX,UAFW,yjBCEX,UAFW,uuDCEX,UAFW,ifCEX,UAFW,8kNCEX,UAFW,mwlBCEX,UAFW,4p9BCEX,UAFW,4qFCEX,UAFW,uyDCEX,UAFW,85CCEX,UAFW,ojMCEX,UAFW,qsJCEX,UAFW,08DCEX,UAFW,8sCCEX,UAFW,qZCEX,UAFW,s3BCEX,UAFW,8hBCEX,UAFW,kJCEX,UAFW,suCCEX,UAFW,4XCEX,UAFW,4XCEX,UAFW,4XCEX,UAFW,0vBCEX,UAFW,6XCEX,UAFW,mYCEX,UAFW,mjBCEX,UAFW,4XCEX,UAFW,gaCEX,UAFW,0+JCEX,UAFW,gYCEX,UAFW,s2RCEX,UAFW,8tKCEX,UAFW,kYCEX,UAFW,4XCEX,UAFW,6XCEX,UAFW,4XCEX,UAFW,4XCEX,UAFW,kYCEX,UAFW,koCCEX,UAFW,0YCEX,UAFW,2XCEX,UAFW,i1BCEX,UAFW,+TCEX,UAFW,4XCEX,UAFW,gYCEX,UAFW,86GCEX,UAFW,02UCEX,UAFW,g3ZCEX,UAFW,0lLCEX,UAFW,qnaCEX,UAFW,64ECEX,UAFW,0+BCEX,UAFW,iRCEX,UAFW,8nFCEX,UAFW,ugECEX,UAFW,6RCEX,UAFW,mYCEX,UAFW,6ZCEX,UAFW,mZCEX,UAFW,0aCEX,UAFW,wXCEX,UAFW,4XCEX,UAFW,gfCEX,UAFW,6YCEX,UAFW,6fCEX,UAFW,ujBCEX,UAFW,ybCEX,UAFW,itBCEX,UAFW,4jBCEX,UAFW,suBCEX,UAFW,gfCEX,UAFW,2gBCEX,UAFW,+gBCEX,UAFW,2kBCEX,UAFW,0sBCEX,UAFW,+gBCEX,UAFW,4fCEX,UAFW,2YCEX,UAFW,snKCEX,UAFW,u3BCEX,UAFW,m3HCEX,UAFW,u7MCEX,UAFW,6KCEX,UAFW,iyMCEX,UAFW,8yICEX,UAFW,iiBCEX,UAFW,6iBCEX,UAFW,2vECEX,UAFW,47CCEX,UAFW,insCCEX,UAFW,k5DCEX,UAFW,8kFCEX,UAFW,s/qBCEX,UAFW,g2DCEX,UAFW,olICEX,UAFW,+HCEX,UAFW,+mhBCEX,UAFW,iwHCEX,UAFW,0oCCEX,UAFW,yuGCEX,UAFW,snCCEX,UAFW,yGCEX,UAFW,wWCEX,UAFW,ywBCEX,UAFW,qZCEX,UAFW,0XCEX,UAFW,6YCEX,UAFW,uXCEX,UAFW,s9BCEX,UAFW,uwDCEX,UAFW,gtDCEX,UAFW,0hCCEX,UAFW,wXCEX,UAFW,6SCEX,UAFW,yqfCEX,UAFW,ycCEX,UAFW,+3BCEX,UAFW,uyBCEX,UAFW,6aCEX,UAFW,kuBCEX,UAFW,mcCEX,UAFW,wtBCEX,UAFW,wbCEX,UAFW,obCEX,UAFW,8tCCEX,UAFW,q4BCEX,UAFW,wzDCEX,UAFW,g2NCEX,UAFW,4FCEX,UAFW,q5PCEX,UAFW,s/KCEX,UAFW,2yDCEX,UAFW,ynQCEX,UAFW,kiDCEX,UAFW,s6ECEX,UAFW,+XCEX,UAFW,iaCEX,UAFW,69CCEX,UAFW,ivpCCEX,UAFW,m5DCEX,UAFW,2YCEX,UAFW,qgBCEX,UAFW,gaCEX,UAFW,snBCEX,UAFW,4XCEX,UAFW,4bCEX,UAFW,itBCEX,UAFW,uUCEX,UAFW,8kBCEX,UAFW,wXCEX,UAFW,whCCEX,UAFW,2gBCEX,UAFW,+gBCEX,UAFW,2zCCEX,UAFW,koDCEX,UAFW,+gBCEX,UAFW,q1CCEX,UAFW,4fCEX,UAFW,ujBCEX,UAFW,iHCEX,UAFW,iwJCEX,UAFW,62GCEX,UAFW,qLCEX,UAFW,orJCEX,UAFW,4gLCEX,UAFW,u9ECEX,UAFW,0tECEX,UAFW,kWCEX,UAFW,+fCEX,UAFW,kXCEX,UAFW,sXCEX,UAFW,2YCEX,UAFW,48CCEX,UAFW,2WCEX,UAFW,mnCCEX,UAFW,qtFCEX,UAFW,4qbCEX,UAFW,+6ECEX,UAFW,ujICEX,UAFW,gpCCEX,UAFW,oICEX,UAFW,o0RCEX,UAFW,qMCEX,UAFW,4zBCEX,UAFW,4dCEX,UAFW,01BCEX,UAFW,w4GCEX,UAFW,2kBCEX,UAFW,olBCEX,UAFW,mqBCEX,UAFW,kiDCEX,UAFW,24BCEX,UAFW,u5BCEX,UAFW,w9BCEX,UAFW,s2BCEX,UAFW,+XCEX,UAFW,oiGCEX,UAFW,+ZCEX,UAFW,sMCEX,UAFW,klCCEX,UAFW,yuDCEX,UAFW,gqCCEX,UAFW,iiCCEX,UAFW,+2DCEX,UAFW,g+BCEX,UAFW,oHCEX,UAFW,qmDCEX,UAFW,yiKCEX,UAFW,+0FCEX,UAFW,6yECEX,UAFW,kjECEX,UAFW,6xCCEX,UAFW,07ECEX,UAFW,42BCEX,UAFW,sZCEX,UAFW,uzDCEX,UAFW,moDCEX,UAFW,wvECEX,UAFW,m0DCEX,UAFW,soBCEX,UAFW,03RCEX,UAFW,q/BCEX,UAFW,02OCEX,UAFW,gyKCEX,UAFW,06FCEX,UAFW,8XCEX,UAFW,gWCEX,UAFW,6bCEX,UAFW,+gQCEX,UAFW,y0ECEX,UAFW,quICEX,UAFW,qGCEX,UAFW,+7CCEX,UAFW,61ECEX,UAFW,uqCCEX,UAFW,48ECEX,UAFW,sjFCEX,UAFW,qqDCEX,UAFW,4uRCEX,UAFW,soNCEX,UAFW,6pCCEX,UAFW,+9HCEX,UAFW,8hSCEX,UAFW,2qJCEX,UAFW,mmPCEX,UAFW,qGCEX,UAFW,0/BCEX,UAFW,q9BCEX,UAFW,gpDCEX,UAFW,ulFCEX,UAFW,msCCEX,UAFW,0vKCEX,UAFW,skDCEX,UAFW,wlLCEX,UAFW,gw3CCEX,UAFW,0hGCEX,UAFW,qqHCEX,UAFW,4pHCEX,UAFW,mmDCEX,UAFW,msECEX,UAFW,kkFCEX,UAFW,0wDCEX,UAFW,64JCEX,UAFW,0vFCEX,UAFW,yrKCEX,UAFW,8+FCEX,UAFW,42ECEX,UAFW,6qBCEX,UAFW,uoFCEX,UAFW,upFCEX,UAFW,0pFCEX,UAFW,4aCEX,UAFW,+pCCEX,UAFW,miBCEX,UAFW,u+BCEX,UAFW,iQCEX,UAFW,wbCEX,UAFW,0dCEX,UAFW,okCCEX,UAFW,+6BCEX,UAFW,+mDCEX,UAFW,+sCCEX,UAFW,0gCCEX,UAFW,i7JCEX,UAFW,unBCEX,UAFW,ymHCEX,UAFW,69ECEX,UAFW,o/FCEX,UAFW,6/JCEX,UAFW,4mECEX,UAFW,+sZCEX,UAFW,oiWCEX,UAFW,2VCEX,UAFW,iiCCEX,UAFW,6TCEX,UAFW,2jGCEX,UAFW,m0FCEX,UAFW,0hGCEX,UAFW,qdCEX,UAFW,q7CCEX,UAFW,6rECEX,UAFW,+gCCEX,UAFW,2jJCEX,UAFW,29ECEX,UAFW,6/BCEX,UAFW,m+CCEX,UAFW,o/CCEX,UAFW,8pCCEX,UAFW,6vECEX,UAFW,wgBCEX,UAFW,shBCEX,UAFW,yaCEX,UAFW,2fCEX,UAFW,khBCEX,UAFW,4ZCEX,UAFW,qnBCEX,UAFW,shBCEX,UAFW,ylDCEX,UAFW,2nFCEX,UAFW,isICEX,UAFW,24DCEX,UAFW,smCCEX,UAFW,upDCEX,UAFW,+GCEX,UAFW,gzaCEX,UAFW,q7LCEX,UAFW,k1BCEX,UAFW,grDCEX,UAFW,2GCEX,UAFW,gHCEX,UAFW,+JCEX,UAFW,6zDCEX,UAFW,wFCEX,UAFW,+yCCEX,UAFW,m7FCEX,UAFW,qynCCEX,UAFW,y5BCEX,UAFW,03BCEX,UAFW,oyCCEX,UAFW,43BCEX,UAFW,6MCEX,UAFW,qvCCEX,UAFW,ssBCEX,UAFW,gGCEX,UAFW,2+ICEX,UAFW,gqBCEX,UA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","sources":["webpack://digilean/../common/components/A3/a3StepDescription/a3StepDescriptionModalController.js","webpack://digilean/../common/components/A3/a3Table/a3selector/a3SelectorController.js","webpack://digilean/../common/components/A3/a3Table/templates/a3GoalCell/a3GoalCell.js","webpack://digilean/../common/components/A3/a3Table/templates/a3LinkToPreviewCell/a3LinkToPreviewCell.js","webpack://digilean/../common/components/A3/a3Table/templates/a3OwnerCell/a3OwnerCell.js","webpack://digilean/../common/components/A3/a3Table/templates/a3ParticipantsCell/a3ParticipantsCell.js","webpack://digilean/../common/components/A3/a3Table/templates/a3ProgressTasksCell/a3ProgressTasksCell.js","webpack://digilean/../common/components/A3/a3Table/templates/a3StatusCell/a3StatusCell.js","webpack://digilean/../common/components/A3/a3Table/templates/a3TasksCell/a3TasksCell.js","webpack://digilean/../common/components/A3/a3Table/templates/a3TitleCell/a3TitleCell.js","webpack://digilean/../common/components/A3/a3milestones/a3milestones.js","webpack://digilean/../common/components/A3/cards/a3Card.js","webpack://digilean/../common/components/A3/links/a3Links.js","webpack://digilean/../common/components/A3/preview/a3step/a3stepController.js","webpack://digilean/../common/components/A3/reports/a3reportsController.js","webpack://digilean/../common/components/A3/reports/aggregatedrealized/initiativesaggregatedtimerealized.js","webpack://digilean/../common/components/A3/reports/monthlyrealized/timeinitiativesmonthlyrealized.js","webpack://digilean/../common/components/A3/slideshow/a3slideshowController.js","webpack://digilean/../common/components/A3/templates/preview/a3TemplatePreview.js","webpack://digilean/../common/components/actionlist/a3/actionlistA3.js","webpack://digilean/../common/components/actionlist/deviation/actionlistDeviation.js","webpack://digilean/../common/components/actionlist/improvement/actionlistImprovement.js","webpack://digilean/../common/components/admin/boards/flexiboardContainerAdminController.js","webpack://digilean/../common/components/admin/contactlist/newContactPersonModalController.js","webpack://digilean/../common/components/admin/customers/trialsController.js","webpack://digilean/../common/components/admin/data/datasourceTrend/datasourceTrendReport.js","webpack://digilean/../common/components/admin/data/excel/multipleDataSourcesImportController.js","webpack://digilean/../common/components/admin/data/excel/singleDataSourceImportController.js","webpack://digilean/../common/components/admin/data/excelImportController.js","webpack://digilean/../common/components/admin/data/lists/editDataListController.js","webpack://digilean/../common/components/admin/data/lists/newDataListController.js","webpack://digilean/../common/components/admin/data/newdatasource/newDataSourceController.js","webpack://digilean/../common/components/admin/data/registrationtarget/registrationtarget.js","webpack://digilean/../common/components/admin/deviations/deviationCustomFieldAdmin/deviationCustomFieldAdminController.js","webpack://digilean/../common/components/admin/deviations/deviationTypeCategories/deviationTypeCategories.js","webpack://digilean/../common/components/admin/deviations/deviationTypeCauses/deviationTypeCauses.js","webpack://digilean/../common/components/admin/deviations/deviationTypeDetails/deviationTypeDetailsController.js","webpack://digilean/../common/components/admin/deviations/deviationTypeSetting/deviationTypeSetting.js","webpack://digilean/../common/components/admin/deviations/editDeviationType/editDeviationTypeController.js","webpack://digilean/../common/components/admin/deviations/newDeviationType/newDeviationTypeController.js","webpack://digilean/../common/components/admin/learning/designer/learningDesignerController.js","webpack://digilean/../common/components/admin/learning/designer/learningFrontPage.js","webpack://digilean/../common/components/admin/learning/designer/learningPage.js","webpack://digilean/../common/components/admin/learning/designer/learningSummary.js","webpack://digilean/../common/components/admin/learning/designer/sections/fileSection.js","webpack://digilean/../common/components/admin/learning/designer/sections/summarySection.js","webpack://digilean/../common/components/admin/learning/designer/sections/textSection.js","webpack://digilean/../common/components/admin/learning/designer/sections/videoSection.js","webpack://digilean/../common/components/admin/learning/learningAdminController.js","webpack://digilean/../common/components/admin/learning/newLearningMaterial/newLearningMaterialController.js","webpack://digilean/../common/components/admin/learning/stats/learningMaterialStatsController.js","webpack://digilean/../common/components/admin/projects/projectAdminController.js","webpack://digilean/../common/components/admin/projects/projectListAdminController.js","webpack://digilean/../common/components/board/boardDrawService.js","webpack://digilean/../common/components/board/boardLayout.js","webpack://digilean/../common/components/board/boardTask/subtask/subtaskStatus.js","webpack://digilean/../common/components/board/cloneInfo/cloneInfoController.js","webpack://digilean/../common/components/board/clonetask/clonedeleteController.js","webpack://digilean/../common/components/board/moveOrCloneSelector/moveOrCloneSelector.js","webpack://digilean/../common/components/board/parenttaskInfo/parenttaskInfoController.js","webpack://digilean/../common/components/board/personal/personalTaskCard.js","webpack://digilean/../common/components/board/postits/postitHub.js","webpack://digilean/../common/components/board/postits/postitPredefinedTags.js","webpack://digilean/../common/components/board/postits/timeboardPostits.js","webpack://digilean/../common/components/board/productionboard/productionBoardRowConfigurationController.js","webpack://digilean/../common/components/board/repeatInfo/repeatInfoController.js","webpack://digilean/../common/components/board/repeattask/repeatdeleteController.js","webpack://digilean/../common/components/board/smartKanban/columnProviders/predefinedLabelColumnProvider.js","webpack://digilean/../common/components/board/smartKanban/columnProviders/responsibleColumnProvider.js","webpack://digilean/../common/components/board/smartKanban/columnProviders/statusColumnProvider.js","webpack://digilean/../common/components/board/smartKanban/smartKanbanCard.js","webpack://digilean/../common/components/board/yearlyboard/actionListRowProvider.js","webpack://digilean/../common/components/board/yearlyboard/boardRowProvider.js","webpack://digilean/../common/components/board/yearlyboard/monthlyRenderService.js","webpack://digilean/../common/components/board/yearlyboard/tasks/newYearlyTaskController.js","webpack://digilean/../common/components/board/yearlyboard/weeklyRenderService.js","webpack://digilean/../common/components/board/yearlyboard/yearlyboardRenderService.js","webpack://digilean/../common/components/common/confirmationDialog/confirmationDialogController.js","webpack://digilean/../common/components/common/numericInput/numericInput.js","webpack://digilean/../common/components/dashboard/customerfeedback/changestatusController.js","webpack://digilean/../common/components/dashboard/customerfeedback/customerfeedbackController.js","webpack://digilean/../common/components/dashboard/delete/widgetDeleteConfirmation.js","webpack://digilean/../common/components/dashboard/designer/appstore/a3table/a3tableApp.js","webpack://digilean/../common/components/dashboard/designer/appstore/a3viewer/a3ViewerApp.js","webpack://digilean/../common/components/dashboard/designer/appstore/appstoreController.js","webpack://digilean/../common/components/dashboard/designer/appstore/dailyKPI/fiveSController.js","webpack://digilean/../common/components/dashboard/designer/appstore/dailyKPIA/aLetter.js","webpack://digilean/../common/components/dashboard/designer/appstore/dailyKPIC/cLetter.js","webpack://digilean/../common/components/dashboard/designer/appstore/dailyKPID/dLetter.js","webpack://digilean/../common/components/dashboard/designer/appstore/dailyKPIDynamic/dailyKpiDynamic.js","webpack://digilean/../common/components/dashboard/designer/appstore/dailyKPII/iLetter.js","webpack://digilean/../common/components/dashboard/designer/appstore/dailyKPIK/kLetter.js","webpack://digilean/../common/components/dashboard/designer/appstore/dailyKPIL/lLetter.js","webpack://digilean/../common/components/dashboard/designer/appstore/dailyKPIP/pLetter.js","webpack://digilean/../common/components/dashboard/designer/appstore/dailyKPIQ/qLetter.js","webpack://digilean/../common/components/dashboard/designer/appstore/debug/debugApp.js","webpack://digilean/../common/components/dashboard/designer/appstore/deviationCategorySummary/deviationCategorySummary.js","webpack://digilean/../common/components/dashboard/designer/appstore/greencross/greencross-date.js","webpack://digilean/../common/components/dashboard/designer/appstore/greencross/greencrossController.js","webpack://digilean/../common/components/dashboard/designer/appstore/multichart/graphConfigurationController.js","webpack://digilean/../common/components/dashboard/designer/appstore/myCompetenceBalls/myCompetenceBalls.js","webpack://digilean/../common/components/dashboard/designer/appstore/myprojects/myprojectsController.js","webpack://digilean/../common/components/dashboard/designer/appstore/performanceboard/configuration/performanceboardConfigController.js","webpack://digilean/../common/components/dashboard/designer/appstore/projectnextmilestone/projectNextMilestone.js","webpack://digilean/../common/components/dashboard/designer/appstore/registration/registrationDialogController.js","webpack://digilean/../common/components/dashboard/designer/appstore/smartActionList/taskActions/taskActions.js","webpack://digilean/../common/components/dashboard/designer/appstore/smartActionList/templates/dateCell/smartactionlistDateCell.js","webpack://digilean/../common/components/dashboard/designer/appstore/smartActionList/templates/dueDateCell/smartActionListDueDateCell.js","webpack://digilean/../common/components/dashboard/designer/appstore/smartActionList/templates/lastModifiedDatecell/smartactionlistLastModifiedDateCell.js","webpack://digilean/../common/components/dashboard/designer/appstore/smartActionList/templates/linkCell/smartactionlistLinkCell.js","webpack://digilean/../common/components/dashboard/designer/appstore/smartActionList/templates/numberCell/smartactionlistNumberCell.js","webpack://digilean/../common/components/dashboard/designer/appstore/smartActionList/templates/numberCellAggregate/smartactionlistNumberCellAggregate.js","webpack://digilean/../common/components/dashboard/designer/appstore/smartActionList/templates/personCell/smartactionlistPersonCell.js","webpack://digilean/../common/components/dashboard/designer/appstore/smartActionList/templates/progressCell/smartactionlistProgressCell.js","webpack://digilean/../common/components/dashboard/designer/appstore/smartActionList/templates/progressCellSubTasks/smartactionlistProgressCellSubTasks.js","webpack://digilean/../common/components/dashboard/designer/appstore/smartActionList/templates/responsibleCell/smartactionlistResponsibleCell.js","webpack://digilean/../common/components/dashboard/designer/appstore/smartActionList/templates/smartActionListTaskdescriptionCell/smartActionListTaskdescriptionCell.js","webpack://digilean/../common/components/dashboard/designer/appstore/smartActionList/templates/smartActionListTitleCell/smartActionListTitleCell.js","webpack://digilean/../common/components/dashboard/designer/appstore/smartActionList/templates/smartactionlistStatusCell/smartactionlistStatusCell.js","webpack://digilean/../common/components/dashboard/designer/appstore/smartActionList/templates/smartactionlistTargetCell/smartactionlistTargetCell.js","webpack://digilean/../common/components/dashboard/designer/appstore/smartActionList/templates/startDateCell/smartactionlistStartDateCell.js","webpack://digilean/../common/components/dashboard/designer/appstore/smartActionList/templates/subTasksCell/subTasksCell.js","webpack://digilean/../common/components/dashboard/designer/appstore/smartActionList/templates/textCell/smartactionlistTextCell.js","webpack://digilean/../common/components/dashboard/designer/appstore/smartCommon/commonCellSelectionController.js","webpack://digilean/../common/components/dashboard/designer/appstore/smartCommon/smartCheckCell/smartCheckCell.js","webpack://digilean/../common/components/dashboard/designer/appstore/smartCommon/smartColumnWidthConfig/smartColumnWidthConfig.js","webpack://digilean/../common/components/dashboard/designer/appstore/smartCommon/smartDateCell/smartDateCell.js","webpack://digilean/../common/components/dashboard/designer/appstore/smartCommon/smartIconCell/predefinedIcons.js","webpack://digilean/../common/components/dashboard/designer/appstore/smartCommon/smartIconCell/smartIconCell.js","webpack://digilean/../common/components/dashboard/designer/appstore/smartCommon/smartLinkCell/smartLinkCell.js","webpack://digilean/../common/components/dashboard/designer/appstore/smartCommon/smartNumberCell/smartCommonNumberCell.js","webpack://digilean/../common/components/dashboard/designer/appstore/smartCommon/smartNumberCellAggregate/smartCommonNumberCellAggregate.js","webpack://digilean/../common/components/dashboard/designer/appstore/smartCommon/smartPersonCell/smartPersonCell.js","webpack://digilean/../common/components/dashboard/designer/appstore/smartCommon/smartProgressCell/smartProgressCell.js","webpack://digilean/../common/components/dashboard/designer/appstore/smartCommon/smartRatingCell/smartRatingCell.js","webpack://digilean/../common/components/dashboard/designer/appstore/smartCommon/smartRiskCell/smartRiskCell.js","webpack://digilean/../common/components/dashboard/designer/appstore/smartCommon/smartRowNoCell/smartRowNoCell.js","webpack://digilean/../common/components/dashboard/designer/appstore/smartCommon/smartTargetCell/smartTargetCell.js","webpack://digilean/../common/components/dashboard/designer/appstore/smartCommon/smartTextCell/smartCommonTextCell.js","webpack://digilean/../common/components/dashboard/designer/appstore/smarttable/templates/dateCell/smarttableDateCell.js","webpack://digilean/../common/components/dashboard/designer/appstore/smarttable/templates/linkCell/smarttableLinkCell.js","webpack://digilean/../common/components/dashboard/designer/appstore/smarttable/templates/numberCell/smarttableNumberCell.js","webpack://digilean/../common/components/dashboard/designer/appstore/smarttable/templates/numberCellAggregate/smarttableNumberCellAggregate.js","webpack://digilean/../common/components/dashboard/designer/appstore/smarttable/templates/ownerCell/smarttableOwnerCell.js","webpack://digilean/../common/components/dashboard/designer/appstore/smarttable/templates/personCell/smarttablePersonCell.js","webpack://digilean/../common/components/dashboard/designer/appstore/smarttable/templates/smarttableNameCell/smarttableNameCell.js","webpack://digilean/../common/components/dashboard/designer/appstore/teamtasks/teamTaskConfiguration.js","webpack://digilean/../common/components/dashboard/greencross/datasourceDailyKPITarget.js","webpack://digilean/../common/components/dashboard/radarchart/radarchartRegistrationController.js","webpack://digilean/../common/components/dashboard/smartlogic/cellCloneConfigController.js","webpack://digilean/../common/components/dashboard/smarttable/templates/progressCell/smarttableProgressbar.js","webpack://digilean/../common/components/data/dataFilterService.js","webpack://digilean/../common/components/data/dataSourceSearchFilter.js","webpack://digilean/../common/components/data/dataseriesselector/a3selectors/a3categoryselector/a3categoryselector.js","webpack://digilean/../common/components/data/dataseriesselector/a3selectors/a3templateselector/a3templateselector.js","webpack://digilean/../common/components/data/dataseriesselector/areaselector/areaselector.js","webpack://digilean/../common/components/data/dataseriesselector/boolselector/boolselectorcontroller.js","webpack://digilean/../common/components/data/dataseriesselector/consequenceSelector/consequenceSelector.js","webpack://digilean/../common/components/data/dataseriesselector/dataSourceFilter.js","webpack://digilean/../common/components/data/dataseriesselector/datalistselector/datalistselector.js","webpack://digilean/../common/components/data/dataseriesselector/dataseriesselectorModalController.js","webpack://digilean/../common/components/data/dataseriesselector/deviationselectors/deviationseverityselector/deviationseverityselector.js","webpack://digilean/../common/components/data/dataseriesselector/deviationselectors/deviationtypeselector/deviationtypeselector.js","webpack://digilean/../common/components/data/dataseriesselector/deviationselectors/problemcategoryselector/problemcategoryselector.js","webpack://digilean/../common/components/data/dataseriesselector/deviationselectors/problemreasonselector/problemreasonselector.js","webpack://digilean/../common/components/data/dataseriesselector/improvementselectors/improvementcategoryselector/improvementcategoryselector.js","webpack://digilean/../common/components/data/dataseriesselector/improvementselectors/prioritystatusselector/prioritystatusselector.js","webpack://digilean/../common/components/data/dataseriesselector/numberselector/numberselectorcontroller.js","webpack://digilean/../common/components/data/dataseriesselector/projectSelector/projectSelector.js","webpack://digilean/../common/components/data/dataseriesselector/strategygoalSelector/strategygoalSelector.js","webpack://digilean/../common/components/data/dataseriesselector/stringselector/stringselectorcontroller.js","webpack://digilean/../common/components/data/dataseriesselector/tasktagselector/tasktagselector.js","webpack://digilean/../common/components/data/dataseriesselector/unitSelector/unitSelector.js","webpack://digilean/../common/components/data/excelImport/excelImportValues.js","webpack://digilean/../common/components/data/latestValue/latestDataValue.js","webpack://digilean/../common/components/data/timeframeSelector/timeframeSelectorModal.js","webpack://digilean/../common/components/data/unitLabel/unitLabel.js","webpack://digilean/../common/components/deviation/deviationCategories/deviationCategoriesSelector.js","webpack://digilean/../common/components/deviation/deviationSearchList/deviationList.js","webpack://digilean/../common/components/deviation/evaluation/deviationCauseSummary/deviationCauseSummary.js","webpack://digilean/../common/components/deviation/evaluation/deviationConsequenceSummary/deviationConsequenceSummary.js","webpack://digilean/../common/components/deviation/evaluation/deviationEvaluationController.js","webpack://digilean/../common/components/deviation/evaluation/deviationEvaluationList/deviationEvaluationList.js","webpack://digilean/../common/components/deviation/mydeviations/mydeviationsController.js","webpack://digilean/../common/components/deviation/newDeviation/newDeviationButton.js","webpack://digilean/../common/components/deviation/ongoing/deviationColumn.js","webpack://digilean/../common/components/deviation/ongoing/deviationCommonService.js","webpack://digilean/../common/components/deviation/projectStatus/deviationProjectStatusController.js","webpack://digilean/../common/components/deviation/status/deviationStatusController.js","webpack://digilean/../common/components/deviation/status/leadtimeDeviationController.js","webpack://digilean/../common/components/deviation/status/monthlyStatusDeviationArea.js","webpack://digilean/../common/components/deviation/status/monthlyStatusDeviationSeverity.js","webpack://digilean/../common/components/deviation/status/monthlystatusDeviationController.js","webpack://digilean/../common/components/flexiboard/flexiboardCards/defaultBoardCard.js","webpack://digilean/../common/components/hours/hub/hoursHubController.js","webpack://digilean/../common/components/improvement/improvementController.js","webpack://digilean/../common/components/improvement/improvementList/improvementList.js","webpack://digilean/../common/components/improvement/improvementreports/teammemberimprovement.js","webpack://digilean/../common/components/improvement/improvementstatusController.js","webpack://digilean/../common/components/improvement/initiativeRealizationPerGroup/initiativeTimeRealizationPerGroupController.js","webpack://digilean/../common/components/improvement/leadtimeImprovement/leadtimeImprovementController.js","webpack://digilean/../common/components/improvement/likes/likesController.js","webpack://digilean/../common/components/improvement/monthlystatusImprovement/monthlystatusImprovementController.js","webpack://digilean/../common/components/improvement/mysuggestions/mysuggestionsController.js","webpack://digilean/../common/components/improvement/newFeedbackModalController.js","webpack://digilean/../common/components/improvement/ongoingimprovement/improvementColumn.js","webpack://digilean/../common/components/improvement/ongoingimprovement/improvementCommonService.js","webpack://digilean/../common/components/improvement/priorityMatrix/priorityMatrixApp.js","webpack://digilean/../common/components/improvement/rangeImprovement/rangeImprovementController.js","webpack://digilean/../common/components/improvement/status/feedbackstatus.js","webpack://digilean/../common/components/improvement/topImprovementInitiatives/topTimeImprovementInitiativesController.js","webpack://digilean/../common/components/improvement/widgetImprovementStatus/widgetImprovementStatus.js","webpack://digilean/../common/components/learning/comments/learningPageCommentController.js","webpack://digilean/../common/components/learning/evaluation/learningPageEvaluation.js","webpack://digilean/../common/components/learning/evaluation/learningPageEvaluationStatus.js","webpack://digilean/../common/components/learning/favorites/myFavoritePages.js","webpack://digilean/../common/components/learning/viewer/learningSummaryViewer.js","webpack://digilean/../common/components/learning/viewer/learningViewerController.js","webpack://digilean/../common/components/profile/inbox/notificationMessages/improvementChangedStatus/improvementChangedStatusMessage.js","webpack://digilean/../common/components/profile/inbox/notificationMessages/newDeviation/newDeviationMessage.js","webpack://digilean/../common/components/profile/inbox/notificationMessages/projectMessageAdded/projectMessageAdded.js","webpack://digilean/../common/components/profile/inbox/notificationMessages/taskAssigned/taskAssignedMessage.js","webpack://digilean/../common/components/profile/inbox/notificationMessages/updatedResponsibleDeviation/updatedResponsibleDeviationMessage.js","webpack://digilean/../common/components/profile/inbox/notificationMessages/updatedResponsibleSuggestion/updatedResponsibleSuggestionMessage.js","webpack://digilean/../common/components/profile/myRegisteredIncidents/myRegisteredIncidentsController.js","webpack://digilean/../common/components/profile/myRegisteredSuggestions/myRegisteredSuggestionsController.js","webpack://digilean/../common/components/profile/profileSettings/notificationSettings.js","webpack://digilean/../common/components/profile/taskThisWeek/taskThisWeek.js","webpack://digilean/../common/components/project/attachments/projectAttachments.js","webpack://digilean/../common/components/project/customerstatusController.js","webpack://digilean/../common/components/project/links/projectLinks.js","webpack://digilean/../common/components/project/milestones/milestones.js","webpack://digilean/../common/components/project/newProject/newProjectController.js","webpack://digilean/../common/components/project/projectController.js","webpack://digilean/../common/components/project/projectDelete/projectDeleteController.js","webpack://digilean/../common/components/project/projectGrid/projectMilestone/projectMilestoneListModalController.js","webpack://digilean/../common/components/project/projectGrid/projectMilestoneSummary/projectMilestoneSummary.js","webpack://digilean/../common/components/project/projectGrid/projectOnTime/projectOnTime.js","webpack://digilean/../common/components/project/projectImprovementSummary/projectImprovementSummary.js","webpack://digilean/../common/components/project/projectIncidentSummary/projectIncidentSummary.js","webpack://digilean/../common/components/project/projectResourceLinks/projectResourceLinks.js","webpack://digilean/../common/components/project/projectTarget/projectTarget.js","webpack://digilean/../common/components/project/projectboard/cellcloneselector/cellCloneSelectorController.js","webpack://digilean/../common/components/project/projectboard/projectBoardService.js","webpack://digilean/../common/components/project/projectboard/projectCellSelectionController.js","webpack://digilean/../common/components/project/projectboard/projectselector/projectNewController.js","webpack://digilean/../common/components/project/projectboard/projectselector/projectSelectorController.js","webpack://digilean/../common/components/project/projectboard/targetVisualizationSelector/targetProjectVisualizationController.js","webpack://digilean/../common/components/project/projectboard/targetVisualizationSelector/targetVisualizationSelectorController.js","webpack://digilean/../common/components/project/projectboard/templates/contactPersonCell/projectContactPersonCell.js","webpack://digilean/../common/components/project/projectboard/templates/dateCell/projectDateCell.js","webpack://digilean/../common/components/project/projectboard/templates/linkCell/projectLinkCell.js","webpack://digilean/../common/components/project/projectboard/templates/milestoneCell/projectNextMilestoneCell.js","webpack://digilean/../common/components/project/projectboard/templates/numberCell/numberCell.js","webpack://digilean/../common/components/project/projectboard/templates/numberCellAggregate/numberCellAggregate.js","webpack://digilean/../common/components/project/projectboard/templates/ownerCell/ownerCell.js","webpack://digilean/../common/components/project/projectboard/templates/personCell/projectPersonCell.js","webpack://digilean/../common/components/project/projectboard/templates/progressCell/progressbar.js","webpack://digilean/../common/components/project/projectboard/templates/progressCell/projectProgressCell.js","webpack://digilean/../common/components/project/projectboard/templates/progressTasksCell/projectProgressTasksCell.js","webpack://digilean/../common/components/project/projectboard/templates/projectDescriptionCell/projectDescriptionCell.js","webpack://digilean/../common/components/project/projectboard/templates/projectLinkToHubCell/projectLinkToHubCell.js","webpack://digilean/../common/components/project/projectboard/templates/projectNameCell/projectNameCell.js","webpack://digilean/../common/components/project/projectboard/templates/projectNumberCell/projectNumberCell.js","webpack://digilean/../common/components/project/projectboard/templates/projectParticipantsCell/projectParticipantModalController.js","webpack://digilean/../common/components/project/projectboard/templates/projectParticipantsCell/projectParticipantsCell.js","webpack://digilean/../common/components/project/projectboard/templates/projectStatusCell/projectStatusCell.js","webpack://digilean/../common/components/project/projectboard/templates/projectTargetCell/projectTargetCell.js","webpack://digilean/../common/components/project/projectboard/templates/projectTasksCell/projectTasksCell.js","webpack://digilean/../common/components/project/projectboard/templates/targetFromAppCell/targetFromAppCell.js","webpack://digilean/../common/components/project/projectboard/templates/textCell/predefinedLabels.js","webpack://digilean/../common/components/project/projectboard/templates/textCell/projectTextCell.js","webpack://digilean/../common/components/project/projectboard/templates/textFromAppCell/textFromAppCell.js","webpack://digilean/../common/components/project/status/projectPercentPlanComplete.js","webpack://digilean/../common/components/strategy/attachments/strategyAttachments.js","webpack://digilean/../common/components/strategy/goalCreate/goalCreatePopup.js","webpack://digilean/../common/components/strategy/goalEdit/goalEditPopup.js","webpack://digilean/../common/components/strategy/goalKanban/goalKanbanCard.js","webpack://digilean/../common/components/strategy/goalSelector/goalSelectorController.js","webpack://digilean/../common/components/strategy/links/strategyLinks.js","webpack://digilean/../common/components/strategy/strategyController.js","webpack://digilean/../common/components/strategy/strategyGoalResources/strategyGoalResourceLinks.js","webpack://digilean/../common/components/strategy/strategyKPI/strategyBowlerMonthlyActual.js","webpack://digilean/../common/components/strategy/strategyKPI/strategyBowlerMonthlyPlan.js","webpack://digilean/../common/components/strategy/strategyKPI/strategyBowlerTitle.js","webpack://digilean/../common/components/strategy/strategyKPI/strategyKPIConfigurationController.js","webpack://digilean/../common/components/strategy/strategyMap/cards/strategyGoalCard.js","webpack://digilean/../common/components/strategy/strategyTaskList/strategyTaskList.js","webpack://digilean/../common/components/strategy/strategyboard/assetCell/assetCell.js","webpack://digilean/../common/components/strategy/strategyboard/breakthroughNewController.js","webpack://digilean/../common/components/strategy/strategyboard/strategyDescriptionCell/strategyDescriptionCell.js","webpack://digilean/../common/components/strategy/strategyboard/strategyEndDateCell/strategyEndDateCell.js","webpack://digilean/../common/components/strategy/strategyboard/strategyNameCell/strategyNameCell.js","webpack://digilean/../common/components/strategy/strategyboard/strategyStartDateCell/strategyStartDateCell.js","webpack://digilean/../common/components/strategy/strategyboard/strategySubGoalCell/strategySubGoalCell.js","webpack://digilean/../common/components/strategy/teamGoalsTable/teamGoalsTable.js","webpack://digilean/../common/components/tasks/info/taskInfo.js","webpack://digilean/../common/components/tasks/personal/3Ctask.js","webpack://digilean/../common/components/tasks/taskSearch/taskList.js","webpack://digilean/../common/components/tasks/team/teamKanban.js","webpack://digilean/../common/components/tasks/team/teamKanbanCard.js","webpack://digilean/../common/components/tasks/team/teammember.js","webpack://digilean/../common/shared/activityCenter.js","webpack://digilean/../common/shared/contenteditable/contentEditable.js","webpack://digilean/../common/shared/dataValueCenter.js","webpack://digilean/../common/shared/debounce.js","webpack://digilean/../common/shared/domainService.js","webpack://digilean/../common/shared/editors/froalaCustom.js","webpack://digilean/../common/shared/editors/froalaView.js","webpack://digilean/../common/shared/errorHandling/onErrorSrc.js","webpack://digilean/../common/shared/filters/colorFilter.js","webpack://digilean/../common/shared/filters/deviationSeverityTranslationFilter.js","webpack://digilean/../common/shared/filters/improvementPriorityTranslationFilter.js","webpack://digilean/../common/shared/filters/unsafe.js","webpack://digilean/../common/shared/hmsService.js","webpack://digilean/../common/shared/htmlTextArea/htmlTextArea.js","webpack://digilean/../common/shared/layout/assetSelector/assetSelectorModalController.js","webpack://digilean/../common/shared/layout/fullscreen/fullscreen.js","webpack://digilean/../common/shared/layout/ibox/iboxExpandButtonController.js","webpack://digilean/../common/shared/layout/inTrialInfo/inTrialInfo.js","webpack://digilean/../common/shared/layout/navnewa3/navnewa3.js","webpack://digilean/../common/shared/layout/navnewsuggestion/navnewsuggestion.js","webpack://digilean/../common/shared/layout/projectSelector/projectSelectorDropdown.js","webpack://digilean/../common/shared/layoutService.js","webpack://digilean/../common/shared/mathService.js","webpack://digilean/../common/shared/messages/message.js","webpack://digilean/../common/shared/messages/simpleReply.js","webpack://digilean/../common/shared/modal/draggable-modal.js","webpack://digilean/../common/shared/modal/fullscreen/fullscreenWidgetController.js","webpack://digilean/../common/shared/modal/modalService.js","webpack://digilean/../common/shared/ngEnter/ngEnter.js","webpack://digilean/../common/shared/paging/pager.js","webpack://digilean/../common/shared/paging/pagerService.js","webpack://digilean/../common/shared/pubSubService.js","webpack://digilean/../common/shared/settingsService.js","webpack://digilean/../common/shared/targetService.js","webpack://digilean/../common/shared/themeService.js","webpack://digilean/../common/shared/zoom/zoomSelector.js","webpack://digilean/../common/thirdparty/angular-gridster/angular-gridster.js","webpack://digilean/../common/thirdparty/bootstrap-colorpicker/bootstrap-colorpicker-module.min.js","webpack://digilean/../common/thirdparty/bootstrap/js/bootstrap.min.js","webpack://digilean/../common/thirdparty/countUp/countUp.min.js","webpack://digilean/../common/thirdparty/draganddrop/draganddrop.min.js","webpack://digilean/../common/thirdparty/fullcalendar/fullcalendar.min.js","webpack://digilean/../common/thirdparty/fullcalendar/locale-all.js","webpack://digilean/../common/thirdparty/highcharts/grouped-categories.js","webpack://digilean/../common/thirdparty/highcharts/highcharts-more.js","webpack://digilean/../common/thirdparty/highcharts/parallel-coordinates.js","webpack://digilean/../common/thirdparty/inspinia/inspinia.js","webpack://digilean/../common/thirdparty/ng-table/ng-table-digilean.min.js","webpack://digilean/../common/thirdparty/ng-table/ng-table.js","webpack://digilean/../common/thirdparty/ngImgCrop/ng-img-crop.js","webpack://digilean/../common/thirdparty/orgchart/orgchart.js","webpack://digilean/../common/thirdparty/peity/angular-peity.js","webpack://digilean/../common/thirdparty/peity/jquery.peity.min.js","webpack://digilean/../common/thirdparty/tagit/tag-it.min.js","webpack://digilean/../common/ sync \\.html$","webpack://digilean/../common/animations/heart/heartAnimation.html","webpack://digilean/../common/components/A3/a3-display-views/a3_attachment_added.html","webpack://digilean/../common/components/A3/a3-display-views/a3_attachment_deleted.html","webpack://digilean/../common/components/A3/a3-display-views/a3_category_changed.html","webpack://digilean/../common/components/A3/a3-display-views/a3_goal_changed.html","webpack://digilean/../common/components/A3/a3-display-views/a3_new.html","webpack://digilean/../common/components/A3/a3-display-views/a3_owner_changed.html","webpack://digilean/../common/components/A3/a3-display-views/a3_participant_group_updated.html","webpack://digilean/../common/components/A3/a3-display-views/a3_project_info_updated.html","webpack://digilean/../common/components/A3/a3-display-views/a3_project_milestone_created.html","webpack://digilean/../common/components/A3/a3-display-views/a3_project_milestone_deleted.html","webpack://digilean/../common/components/A3/a3-display-views/a3_project_milestone_updated.html","webpack://digilean/../common/components/A3/a3-display-views/a3_status_updated.html","webpack://digilean/../common/components/A3/a3-display-views/a3_step_approved.html","webpack://digilean/../common/components/A3/a3-display-views/a3_step_commented_on.html","webpack://digilean/../common/components/A3/a3-display-views/a3_step_updated.html","webpack://digilean/../common/components/A3/a3-display-views/a3_title_changed.html","webpack://digilean/../common/components/A3/a3-display-views/a3_updated.html","webpack://digilean/../common/components/A3/a3-display-views/a3_version.html","webpack://digilean/../common/components/A3/a3.html","webpack://digilean/../common/components/A3/a3ActionList/a3ActionList.html","webpack://digilean/../common/components/A3/a3ActionList/a3SmartActionList.html","webpack://digilean/../common/components/A3/a3Participants/a3Participants.html","webpack://digilean/../common/components/A3/a3StepDescription/a3StepDescriptionForm.html","webpack://digilean/../common/components/A3/a3Table/a3Table.html","webpack://digilean/../common/components/A3/a3Table/a3selector/a3SelectorModal.html","webpack://digilean/../common/components/A3/a3Table/taskList/a3TaskListForm.html","webpack://digilean/../common/components/A3/a3Table/templates/a3EndDateCell/a3EndDateCell.html","webpack://digilean/../common/components/A3/a3Table/templates/a3GoalCell/a3GoalCell.html","webpack://digilean/../common/components/A3/a3Table/templates/a3LinkToPreviewCell/a3LinkToPreviewCell.html","webpack://digilean/../common/components/A3/a3Table/templates/a3OwnerCell/a3OwnerCell.html","webpack://digilean/../common/components/A3/a3Table/templates/a3ParticipantsCell/a3ParticipantModal.html","webpack://digilean/../common/components/A3/a3Table/templates/a3ParticipantsCell/a3ParticipantsCell.html","webpack://digilean/../common/components/A3/a3Table/templates/a3ProgressTasksCell/a3ProgressTasksCell.html","webpack://digilean/../common/components/A3/a3Table/templates/a3StatusCell/a3StatusCell.html","webpack://digilean/../common/components/A3/a3Table/templates/a3TasksCell/a3TasksCell.html","webpack://digilean/../common/components/A3/a3Table/templates/a3TitleCell/a3TitleCell.html","webpack://digilean/../common/components/A3/a3milestones/a3milestones.html","webpack://digilean/../common/components/A3/a3wizard.html","webpack://digilean/../common/components/A3/cards/a3Card.html","webpack://digilean/../common/components/A3/comments/a3Comments.html","webpack://digilean/../common/components/A3/designer/a3designer.html","webpack://digilean/../common/components/A3/links/a3Links.html","webpack://digilean/../common/components/A3/newA3/newA3Form.html","webpack://digilean/../common/components/A3/preview/a3info/a3info.html","webpack://digilean/../common/components/A3/preview/a3preview.html","webpack://digilean/../common/components/A3/preview/a3step/a3step.html","webpack://digilean/../common/components/A3/preview/a3stepActionPlan/a3stepActionPlan.html","webpack://digilean/../common/components/A3/preview/cost/cost.html","webpack://digilean/../common/components/A3/reports/a3reports.html","webpack://digilean/../common/components/A3/reports/aggregatedrealized/initiativesaggregatedrealized.html","webpack://digilean/../common/components/A3/reports/aggregatedrealized/initiativesaggregatedtimerealized.html","webpack://digilean/../common/components/A3/reports/benefitsRealization.html","webpack://digilean/../common/components/A3/reports/monthlyrealized/initiativesmonthlyrealized.html","webpack://digilean/../common/components/A3/reports/monthlyrealized/timeinitiativesmonthlyrealized.html","webpack://digilean/../common/components/A3/reports/timeBenefitsRealization.html","webpack://digilean/../common/components/A3/slideshow/a3slideshow.html","webpack://digilean/../common/components/A3/templates/a3templates.html","webpack://digilean/../common/components/A3/templates/layout/a3info/a3infoTemplate.html","webpack://digilean/../common/components/A3/templates/layout/a3step/a3stepTemplate.html","webpack://digilean/../common/components/A3/templates/layout/a3stepActionPlan/a3stepActionPlanTemplate.html","webpack://digilean/../common/components/A3/templates/layout/a3templateLayout.html","webpack://digilean/../common/components/A3/templates/layout/cost/costTemplate.html","webpack://digilean/../common/components/A3/templates/preview/a3TemplatePreview.html","webpack://digilean/../common/components/A3/templates/store/a3templateStore.html","webpack://digilean/../common/components/actionlist/a3/actionlistA3.html","webpack://digilean/../common/components/actionlist/a3tasks/actionlistA3tasks.html","webpack://digilean/../common/components/actionlist/actionlist.html","webpack://digilean/../common/components/actionlist/boards/actionlistBoards.html","webpack://digilean/../common/components/actionlist/boardtasks/actionlistBoardtasks.html","webpack://digilean/../common/components/actionlist/deviation/actionlistDeviation.html","webpack://digilean/../common/components/actionlist/deviationtasks/actionlistDeviationtasks.html","webpack://digilean/../common/components/actionlist/improvement/actionlistImprovement.html","webpack://digilean/../common/components/actionlist/improvementtasks/actionlistImprovementtasks.html","webpack://digilean/../common/components/actionlist/newtasktoactionlist.html","webpack://digilean/../common/components/admin/a3/a3Admin.html","webpack://digilean/../common/components/admin/apiclients/apiClients.html","webpack://digilean/../common/components/admin/apiclients/editApiClientForm.html","webpack://digilean/../common/components/admin/apiclients/newApiClientForm.html","webpack://digilean/../common/components/admin/area/area.html","webpack://digilean/../common/components/admin/assets/assetEdit.html","webpack://digilean/../common/components/admin/assets/assetParticipantsForm.html","webpack://digilean/../common/components/admin/assets/assets.html","webpack://digilean/../common/components/admin/boards/boardSettings.html","webpack://digilean/../common/components/admin/boards/flexiboardAdmin.html","webpack://digilean/../common/components/admin/boards/flexiboardContainerAdmin.html","webpack://digilean/../common/components/admin/boards/flexiboardTemplateAdmin.html","webpack://digilean/../common/components/admin/changepassword/changePassword.html","webpack://digilean/../common/components/admin/contactlist/contactlist.html","webpack://digilean/../common/components/admin/contactlist/newContactPersonForm.html","webpack://digilean/../common/components/admin/customers/allowedModulesDialog.html","webpack://digilean/../common/components/admin/customers/customerOrderDialog.html","webpack://digilean/../common/components/admin/customers/customers.html","webpack://digilean/../common/components/admin/customers/deployCustomerDialog.html","webpack://digilean/../common/components/admin/customers/disableCustomerDialog.html","webpack://digilean/../common/components/admin/customers/invoices.html","webpack://digilean/../common/components/admin/customers/invoicing.html","webpack://digilean/../common/components/admin/customers/payingCustomers.html","webpack://digilean/../common/components/admin/customers/supportUserDialog.html","webpack://digilean/../common/components/admin/customers/trials.html","webpack://digilean/../common/components/admin/data/dataAdmin.html","webpack://digilean/../common/components/admin/data/dataSource.html","webpack://digilean/../common/components/admin/data/datasourceTrend/datasourceTrendReport.html","webpack://digilean/../common/components/admin/data/datasourceValues.html","webpack://digilean/../common/components/admin/data/excel/multipleDataSourcesImport.html","webpack://digilean/../common/components/admin/data/excel/singleDataSourceImport.html","webpack://digilean/../common/components/admin/data/excelImport.html","webpack://digilean/../common/components/admin/data/lists/customerAdmin.html","webpack://digilean/../common/components/admin/data/lists/datalist.html","webpack://digilean/../common/components/admin/data/lists/datalists.html","webpack://digilean/../common/components/admin/data/lists/editDataList.html","webpack://digilean/../common/components/admin/data/lists/newDataList.html","webpack://digilean/../common/components/admin/data/manualKpiIdentifier/dataVisualizationType.html","webpack://digilean/../common/components/admin/data/manualKpiIdentifier/manualKpiIdentifierAdmin.html","webpack://digilean/../common/components/admin/data/newdatasource/newDataSource.html","webpack://digilean/../common/components/admin/data/registrationtarget/registrationtarget.html","webpack://digilean/../common/components/admin/deviations/categoryAdmin.html","webpack://digilean/../common/components/admin/deviations/causeAdmin.html","webpack://digilean/../common/components/admin/deviations/consequenceAdmin.html","webpack://digilean/../common/components/admin/deviations/deviationAdmin.html","webpack://digilean/../common/components/admin/deviations/deviationCustomFieldAdmin/deviationCustomFieldAdmin.html","webpack://digilean/../common/components/admin/deviations/deviationTypeAdmin.html","webpack://digilean/../common/components/admin/deviations/deviationTypeCategories/deviationTypeCategories.html","webpack://digilean/../common/components/admin/deviations/deviationTypeCauses/deviationTypeCauses.html","webpack://digilean/../common/components/admin/deviations/deviationTypeConsequences/deviationTypeConsequences.html","webpack://digilean/../common/components/admin/deviations/deviationTypeDetails/deviationTypeDetails.html","webpack://digilean/../common/components/admin/deviations/deviationTypeSetting/deviationTypeSetting.html","webpack://digilean/../common/components/admin/deviations/editDeviationType/editDeviationType.html","webpack://digilean/../common/components/admin/deviations/editDeviationTypePermission/editDeviationTypePermission.html","webpack://digilean/../common/components/admin/deviations/newDeviationType/newDeviationType.html","webpack://digilean/../common/components/admin/improvement/improvementAdmin.html","webpack://digilean/../common/components/admin/integrations/connectors/connectorAdmin.html","webpack://digilean/../common/components/admin/integrations/connectors/newConnector.html","webpack://digilean/../common/components/admin/integrations/integrationsAdmin.html","webpack://digilean/../common/components/admin/integrations/jobs/jobAdmin.html","webpack://digilean/../common/components/admin/integrations/jobs/jobScheduleDialog.html","webpack://digilean/../common/components/admin/integrations/jobs/newJob.html","webpack://digilean/../common/components/admin/language/languageLabelAdmin.html","webpack://digilean/../common/components/admin/learning/designer/learningDesigner.html","webpack://digilean/../common/components/admin/learning/designer/learningFrontPage.html","webpack://digilean/../common/components/admin/learning/designer/learningPage.html","webpack://digilean/../common/components/admin/learning/designer/learningSummary.html","webpack://digilean/../common/components/admin/learning/designer/sections/diagramSection.html","webpack://digilean/../common/components/admin/learning/designer/sections/fileSection.html","webpack://digilean/../common/components/admin/learning/designer/sections/imageSection.html","webpack://digilean/../common/components/admin/learning/designer/sections/summarySection.html","webpack://digilean/../common/components/admin/learning/designer/sections/textSection.html","webpack://digilean/../common/components/admin/learning/designer/sections/videoSection.html","webpack://digilean/../common/components/admin/learning/editLearningMaterial/editLearningMaterial.html","webpack://digilean/../common/components/admin/learning/learningAdmin.html","webpack://digilean/../common/components/admin/learning/newLearningMaterial/newLearningMaterial.html","webpack://digilean/../common/components/admin/learning/stats/learningMaterialStats.html","webpack://digilean/../common/components/admin/organization/accountSetup/accountSetup.html","webpack://digilean/../common/components/admin/organization/billing/businessunitAccount.html","webpack://digilean/../common/components/admin/organization/billing/customerAccountForm.html","webpack://digilean/../common/components/admin/organization/billing/organizationBillingAdmin.html","webpack://digilean/../common/components/admin/organization/messagecenter/mailsender.html","webpack://digilean/../common/components/admin/organization/messagecenter/messageSender.html","webpack://digilean/../common/components/admin/organization/messagecenter/newmessage/newMessageModal.html","webpack://digilean/../common/components/admin/organization/messagecenter/pushNotificationSender.html","webpack://digilean/../common/components/admin/organization/organizationAdmin.html","webpack://digilean/../common/components/admin/organization/organizationSettings.html","webpack://digilean/../common/components/admin/projects/projectAdmin.html","webpack://digilean/../common/components/admin/projects/projectListAdmin.html","webpack://digilean/../common/components/admin/projects/projectPortfolioAdmin.html","webpack://digilean/../common/components/admin/projects/projectRoleAdmin.html","webpack://digilean/../common/components/admin/users/userAccessForm.html","webpack://digilean/../common/components/admin/users/userEdit.html","webpack://digilean/../common/components/admin/users/userListResult.html","webpack://digilean/../common/components/admin/users/users.html","webpack://digilean/../common/components/board/assetMessage/assetMessage.html","webpack://digilean/../common/components/board/board.html","webpack://digilean/../common/components/board/boardDesigner/boardCategoryDetails.html","webpack://digilean/../common/components/board/boardDesigner/boardDesigner.html","webpack://digilean/../common/components/board/boardTask/boardTask.html","webpack://digilean/../common/components/board/boardTask/boardtask-display-views/task-duration-updated.html","webpack://digilean/../common/components/board/boardTask/boardtask-display-views/task-history-archived.html","webpack://digilean/../common/components/board/boardTask/boardtask-display-views/task-history-assigned.html","webpack://digilean/../common/components/board/boardTask/boardtask-display-views/task-history-cell-updated.html","webpack://digilean/../common/components/board/boardTask/boardtask-display-views/task-history-cloned.html","webpack://digilean/../common/components/board/boardTask/boardtask-display-views/task-history-comment-deleted.html","webpack://digilean/../common/components/board/boardTask/boardtask-display-views/task-history-comments.html","webpack://digilean/../common/components/board/boardTask/boardtask-display-views/task-history-create-repeated.html","webpack://digilean/../common/components/board/boardTask/boardtask-display-views/task-history-created-to-action-list.html","webpack://digilean/../common/components/board/boardTask/boardtask-display-views/task-history-delete-attachment.html","webpack://digilean/../common/components/board/boardTask/boardtask-display-views/task-history-deviation-created.html","webpack://digilean/../common/components/board/boardTask/boardtask-display-views/task-history-moved-from-action-list-to-board.html","webpack://digilean/../common/components/board/boardTask/boardtask-display-views/task-history-moved-from-archive.html","webpack://digilean/../common/components/board/boardTask/boardtask-display-views/task-history-moved.html","webpack://digilean/../common/components/board/boardTask/boardtask-display-views/task-history-new-attachment.html","webpack://digilean/../common/components/board/boardTask/boardtask-display-views/task-history-new.html","webpack://digilean/../common/components/board/boardTask/boardtask-display-views/task-history-repeated.html","webpack://digilean/../common/components/board/boardTask/boardtask-display-views/task-history-status-updated.html","webpack://digilean/../common/components/board/boardTask/boardtask-display-views/task-history-updated.html","webpack://digilean/../common/components/board/boardTask/boardtask-display-views/task-start-date-updated.html","webpack://digilean/../common/components/board/boardTask/newBoardTask.html","webpack://digilean/../common/components/board/boardTask/subtask/subtaskStatus.html","webpack://digilean/../common/components/board/boardactionform.html","webpack://digilean/../common/components/board/boardcontent.html","webpack://digilean/../common/components/board/boardresolver/boardDesignerResolver.html","webpack://digilean/../common/components/board/boardresolver/boardresolver.html","webpack://digilean/../common/components/board/cloneInfo/cloneInfo.html","webpack://digilean/../common/components/board/clonetask/clonedelete.html","webpack://digilean/../common/components/board/clonetask/clonetask.html","webpack://digilean/../common/components/board/connectedusers/connectedUsers.html","webpack://digilean/../common/components/board/moveOrCloneSelector/moveOrCloneSelector.html","webpack://digilean/../common/components/board/movetask/movetask.html","webpack://digilean/../common/components/board/newBoard/boardtypes/dashboard/dashboardPreview.html","webpack://digilean/../common/components/board/newBoard/boardtypes/projectBoard/projectBoardPreview.html","webpack://digilean/../common/components/board/newBoard/boardtypes/smartactionlist/smartActionListPreview.html","webpack://digilean/../common/components/board/newBoard/boardtypes/weeklyBoard/weeklyBoardPreview.html","webpack://digilean/../common/components/board/newBoard/boardtypes/yearlyBoard/yearlyBoardPreview.html","webpack://digilean/../common/components/board/newBoard/newBoardFromTemplate.html","webpack://digilean/../common/components/board/parenttaskInfo/parenttaskInfo.html","webpack://digilean/../common/components/board/personal/personalTaskCard.html","webpack://digilean/../common/components/board/personal/personalboard.html","webpack://digilean/../common/components/board/personal/personalboardFilter.html","webpack://digilean/../common/components/board/postits/postitHub.html","webpack://digilean/../common/components/board/postits/postitPredefinedTags.html","webpack://digilean/../common/components/board/postits/timeboardPostits.html","webpack://digilean/../common/components/board/productionboard/production.html","webpack://digilean/../common/components/board/productionboard/productionBoard.html","webpack://digilean/../common/components/board/productionboard/productionBoardApp.html","webpack://digilean/../common/components/board/productionboard/productionBoardMandatoryFields.html","webpack://digilean/../common/components/board/productionboard/productionBoardRowConfiguration.html","webpack://digilean/../common/components/board/repeatInfo/repeatInfo.html","webpack://digilean/../common/components/board/repeattask/repeatdelete.html","webpack://digilean/../common/components/board/repeattask/repeattask.html","webpack://digilean/../common/components/board/selector/memberBoardSelector.html","webpack://digilean/../common/components/board/selector/threeCBoardSelector.html","webpack://digilean/../common/components/board/smartKanban/smartKanban.html","webpack://digilean/../common/components/board/smartKanban/smartKanbanCard.html","webpack://digilean/../common/components/board/taskattachments/taskattachment.html","webpack://digilean/../common/components/board/taskattachments/taskattachments.html","webpack://digilean/../common/components/board/tasktoactionlist/tasktoactionlist.html","webpack://digilean/../common/components/board/template/newFlexiboardTemplate.html","webpack://digilean/../common/components/board/template/newboardtemplate.html","webpack://digilean/../common/components/board/yearlyboard/tasks/newYearlyTask.html","webpack://digilean/../common/components/board/yearlyboard/tasks/yearlyTask.html","webpack://digilean/../common/components/board/yearlyboard/yearlyboard.html","webpack://digilean/../common/components/board/yearlyboard/yearlyboardDesigner.html","webpack://digilean/../common/components/common/access/boardAccessChecker.html","webpack://digilean/../common/components/common/confirmationDialog/confirmationDialogForm.html","webpack://digilean/../common/components/common/members/membersSelector.html","webpack://digilean/../common/components/common/numericInput/numericInput.html","webpack://digilean/../common/components/customer/customerLookup.html","webpack://digilean/../common/components/dashboard/activitycount/activitycount.html","webpack://digilean/../common/components/dashboard/barchart/barchart.html","webpack://digilean/../common/components/dashboard/customerfeedback/changestatus.html","webpack://digilean/../common/components/dashboard/customerfeedback/customerfeedback.html","webpack://digilean/../common/components/dashboard/customermonitoring/customermonitoring.html","webpack://digilean/../common/components/dashboard/customermonitoring/licenses/licensesChanges.html","webpack://digilean/../common/components/dashboard/customermonitoring/notifications/notificationsOverview.html","webpack://digilean/../common/components/dashboard/dailyfeed/dailyfeed.html","webpack://digilean/../common/components/dashboard/dailyfeed/dailyfeedActivitySelector.html","webpack://digilean/../common/components/dashboard/dailyfeed/feed-display-views/a3-commented-on.html","webpack://digilean/../common/components/dashboard/dailyfeed/feed-display-views/a3-created.html","webpack://digilean/../common/components/dashboard/dailyfeed/feed-display-views/a3-deleted.html","webpack://digilean/../common/components/dashboard/dailyfeed/feed-display-views/a3-project-info-updated.html","webpack://digilean/../common/components/dashboard/dailyfeed/feed-display-views/a3-step-updated.html","webpack://digilean/../common/components/dashboard/dailyfeed/feed-display-views/a3-updated.html","webpack://digilean/../common/components/dashboard/dailyfeed/feed-display-views/a3-version-created.html","webpack://digilean/../common/components/dashboard/dailyfeed/feed-display-views/board-deleted.html","webpack://digilean/../common/components/dashboard/dailyfeed/feed-display-views/boardcreation.html","webpack://digilean/../common/components/dashboard/dailyfeed/feed-display-views/deletedtask.html","webpack://digilean/../common/components/dashboard/dailyfeed/feed-display-views/deviation-attachment-added.html","webpack://digilean/../common/components/dashboard/dailyfeed/feed-display-views/deviation-attachment-deleted.html","webpack://digilean/../common/components/dashboard/dailyfeed/feed-display-views/deviation-comment.html","webpack://digilean/../common/components/dashboard/dailyfeed/feed-display-views/deviation-deleted.html","webpack://digilean/../common/components/dashboard/dailyfeed/feed-display-views/deviation-new.html","webpack://digilean/../common/components/dashboard/dailyfeed/feed-display-views/deviation-problem-reason-changed.html","webpack://digilean/../common/components/dashboard/dailyfeed/feed-display-views/deviation-responsible-changed.html","webpack://digilean/../common/components/dashboard/dailyfeed/feed-display-views/deviation-severity-changed.html","webpack://digilean/../common/components/dashboard/dailyfeed/feed-display-views/deviation-status-updated.html","webpack://digilean/../common/components/dashboard/dailyfeed/feed-display-views/deviation-to-a3.html","webpack://digilean/../common/components/dashboard/dailyfeed/feed-display-views/deviation-update.html","webpack://digilean/../common/components/dashboard/dailyfeed/feed-display-views/deviation_due_date-changed.html","webpack://digilean/../common/components/dashboard/dailyfeed/feed-display-views/improvement-attachment-added.html","webpack://digilean/../common/components/dashboard/dailyfeed/feed-display-views/improvement-attachment-deleted.html","webpack://digilean/../common/components/dashboard/dailyfeed/feed-display-views/improvement-category-updated.html","webpack://digilean/../common/components/dashboard/dailyfeed/feed-display-views/improvement-comment.html","webpack://digilean/../common/components/dashboard/dailyfeed/feed-display-views/improvement-deleted.html","webpack://digilean/../common/components/dashboard/dailyfeed/feed-display-views/improvement-due-date-changed.html","webpack://digilean/../common/components/dashboard/dailyfeed/feed-display-views/improvement-like.html","webpack://digilean/../common/components/dashboard/dailyfeed/feed-display-views/improvement-new.html","webpack://digilean/../common/components/dashboard/dailyfeed/feed-display-views/improvement-priority-changed.html","webpack://digilean/../common/components/dashboard/dailyfeed/feed-display-views/improvement-responsible-changed.html","webpack://digilean/../common/components/dashboard/dailyfeed/feed-display-views/improvement-status-updated.html","webpack://digilean/../common/components/dashboard/dailyfeed/feed-display-views/improvement-to-a3.html","webpack://digilean/../common/components/dashboard/dailyfeed/feed-display-views/improvement-update-suggestion.html","webpack://digilean/../common/components/dashboard/dailyfeed/feed-display-views/newtask.html","webpack://digilean/../common/components/dashboard/dailyfeed/feed-display-views/task-attachment-added.html","webpack://digilean/../common/components/dashboard/dailyfeed/feed-display-views/task-attachment-deleted.html","webpack://digilean/../common/components/dashboard/dailyfeed/feed-display-views/task-comment.html","webpack://digilean/../common/components/dashboard/dailyfeed/feed-display-views/task-updated.html","webpack://digilean/../common/components/dashboard/dailyfeed/feed-display-views/taskassigned.html","webpack://digilean/../common/components/dashboard/dailyfeed/feed-display-views/taskcloned.html","webpack://digilean/../common/components/dashboard/dailyfeed/feed-display-views/taskcreatedtoactionlist.html","webpack://digilean/../common/components/dashboard/dailyfeed/feed-display-views/taskdeviationcreated.html","webpack://digilean/../common/components/dashboard/dailyfeed/feed-display-views/taskmoved.html","webpack://digilean/../common/components/dashboard/dailyfeed/feed-display-views/taskmovedfromactionlisttoboard.html","webpack://digilean/../common/components/dashboard/dailyfeed/feed-display-views/taskmovedtoactionlist.html","webpack://digilean/../common/components/dashboard/dailyfeed/feed-display-views/taskrepeated.html","webpack://digilean/../common/components/dashboard/dailyfeed/feed-display-views/taskstatusupdated.html","webpack://digilean/../common/components/dashboard/delete/widgetDeleteConfirmation.html","webpack://digilean/../common/components/dashboard/designer/appstore/3cTable/cells/threeCDateCell.html","webpack://digilean/../common/components/dashboard/designer/appstore/3cTable/cells/threeCOwnerCell.html","webpack://digilean/../common/components/dashboard/designer/appstore/3cTable/cells/threeCStatusCell.html","webpack://digilean/../common/components/dashboard/designer/appstore/3cTable/cells/threeCTextCell.html","webpack://digilean/../common/components/dashboard/designer/appstore/3cTable/threeCTable.html","webpack://digilean/../common/components/dashboard/designer/appstore/3cTable/threeCTableApp.html","webpack://digilean/../common/components/dashboard/designer/appstore/a3table/a3tableApp.html","webpack://digilean/../common/components/dashboard/designer/appstore/a3viewer/a3Viewer.html","webpack://digilean/../common/components/dashboard/designer/appstore/a3viewer/a3ViewerApp.html","webpack://digilean/../common/components/dashboard/designer/appstore/actionList/actionListApp.html","webpack://digilean/../common/components/dashboard/designer/appstore/actionList/actionListEditTask.html","webpack://digilean/../common/components/dashboard/designer/appstore/actionList/actionListNewTask.html","webpack://digilean/../common/components/dashboard/designer/appstore/appstore.html","webpack://digilean/../common/components/dashboard/designer/appstore/calendar/personalcalendar.html","webpack://digilean/../common/components/dashboard/designer/appstore/calendar/teamcalendar.html","webpack://digilean/../common/components/dashboard/designer/appstore/comparechart/comparechart.html","webpack://digilean/../common/components/dashboard/designer/appstore/dailyKPI/daily-kpi-date.html","webpack://digilean/../common/components/dashboard/designer/appstore/dailyKPI/fiveS.html","webpack://digilean/../common/components/dashboard/designer/appstore/dailyKPIA/aLetter.html","webpack://digilean/../common/components/dashboard/designer/appstore/dailyKPIC/cLetter.html","webpack://digilean/../common/components/dashboard/designer/appstore/dailyKPID/dLetter.html","webpack://digilean/../common/components/dashboard/designer/appstore/dailyKPIDynamic/dailyKpiDynamic.html","webpack://digilean/../common/components/dashboard/designer/appstore/dailyKPII/iLetter.html","webpack://digilean/../common/components/dashboard/designer/appstore/dailyKPIK/kLetter.html","webpack://digilean/../common/components/dashboard/designer/appstore/dailyKPIL/lLetter.html","webpack://digilean/../common/components/dashboard/designer/appstore/dailyKPIP/pLetter.html","webpack://digilean/../common/components/dashboard/designer/appstore/dailyKPIQ/qLetter.html","webpack://digilean/../common/components/dashboard/designer/appstore/datasourceValuesList/datasourceValuesList.html","webpack://digilean/../common/components/dashboard/designer/appstore/daycounter/daycounter.html","webpack://digilean/../common/components/dashboard/designer/appstore/debug/debugApp.html","webpack://digilean/../common/components/dashboard/designer/appstore/deviationCategorySummary/deviationCategorySummary.html","webpack://digilean/../common/components/dashboard/designer/appstore/deviationactions/deviationActionListResult.html","webpack://digilean/../common/components/dashboard/designer/appstore/gantt/gantt.html","webpack://digilean/../common/components/dashboard/designer/appstore/greencross/greencross-date.html","webpack://digilean/../common/components/dashboard/designer/appstore/greencross/greencross.html","webpack://digilean/../common/components/dashboard/designer/appstore/greencross/greencrossStatusForm.html","webpack://digilean/../common/components/dashboard/designer/appstore/greencross/kpiMonthSelector.html","webpack://digilean/../common/components/dashboard/designer/appstore/imagedisplayer/imagedisplayer.html","webpack://digilean/../common/components/dashboard/designer/appstore/kanbanboard/kanbanBoard.html","webpack://digilean/../common/components/dashboard/designer/appstore/livetrend/livetrend.html","webpack://digilean/../common/components/dashboard/designer/appstore/messagedisplayer/messagedisplayer.html","webpack://digilean/../common/components/dashboard/designer/appstore/minmaxchart/minmaxchart.html","webpack://digilean/../common/components/dashboard/designer/appstore/multichart/graphConfiguration.html","webpack://digilean/../common/components/dashboard/designer/appstore/multichart/multichart.html","webpack://digilean/../common/components/dashboard/designer/appstore/myA3s/myA3s.html","webpack://digilean/../common/components/dashboard/designer/appstore/myCompetenceBalls/myCompetenceBalls.html","webpack://digilean/../common/components/dashboard/designer/appstore/myprojects/myprojects.html","webpack://digilean/../common/components/dashboard/designer/appstore/pareto/paretochart.html","webpack://digilean/../common/components/dashboard/designer/appstore/pdfDisplayer/pdfDisplayerAppNg.html","webpack://digilean/../common/components/dashboard/designer/appstore/performanceboard/configuration/performanceboardConfig.html","webpack://digilean/../common/components/dashboard/designer/appstore/performanceboard/configuration/performanceboardConfigController.html","webpack://digilean/../common/components/dashboard/designer/appstore/performanceboard/performanceboard.html","webpack://digilean/../common/components/dashboard/designer/appstore/performanceboard/performanceboardContainer.html","webpack://digilean/../common/components/dashboard/designer/appstore/piechart/piechart.html","webpack://digilean/../common/components/dashboard/designer/appstore/powerBI/powerBIDashboard.html","webpack://digilean/../common/components/dashboard/designer/appstore/projectboard/projectboardApp.html","webpack://digilean/../common/components/dashboard/designer/appstore/projectnextmilestone/projectNextMilestone.html","webpack://digilean/../common/components/dashboard/designer/appstore/quickIncidentRegistration/quickIncidentRegistrationApp.html","webpack://digilean/../common/components/dashboard/designer/appstore/quickIncidentRegistration/quickIncidentRegistrationConfiguration.html","webpack://digilean/../common/components/dashboard/designer/appstore/register/register.html","webpack://digilean/../common/components/dashboard/designer/appstore/registration/registration.html","webpack://digilean/../common/components/dashboard/designer/appstore/registration/registrationDialog.html","webpack://digilean/../common/components/dashboard/designer/appstore/singlevalue/singlevalue.html","webpack://digilean/../common/components/dashboard/designer/appstore/singlevalueregistration/singlevalueregistration.html","webpack://digilean/../common/components/dashboard/designer/appstore/singlevaluetarget/singlevaluetarget.html","webpack://digilean/../common/components/dashboard/designer/appstore/smartActionList/smartActionListApp.html","webpack://digilean/../common/components/dashboard/designer/appstore/smartActionList/taskActions/taskActions.html","webpack://digilean/../common/components/dashboard/designer/appstore/smartActionList/templates/dateCell/smartactionlistDateCell.html","webpack://digilean/../common/components/dashboard/designer/appstore/smartActionList/templates/dueDateCell/smartActionListDueDateCell.html","webpack://digilean/../common/components/dashboard/designer/appstore/smartActionList/templates/lastModifiedDatecell/smartactionlistLastModifiedDateCell.html","webpack://digilean/../common/components/dashboard/designer/appstore/smartActionList/templates/linkCell/smartactionlistLinkCell.html","webpack://digilean/../common/components/dashboard/designer/appstore/smartActionList/templates/numberCell/smartactionlistNumberCell.html","webpack://digilean/../common/components/dashboard/designer/appstore/smartActionList/templates/numberCellAggregate/smartactionlistNumberCellAggregate.html","webpack://digilean/../common/components/dashboard/designer/appstore/smartActionList/templates/numberCellAutomatic/smartactionlistNumberCellAutomatic.html","webpack://digilean/../common/components/dashboard/designer/appstore/smartActionList/templates/personCell/smartactionlistPersonCell.html","webpack://digilean/../common/components/dashboard/designer/appstore/smartActionList/templates/progressCell/smartactionlistProgressCell.html","webpack://digilean/../common/components/dashboard/designer/appstore/smartActionList/templates/progressCellSubTasks/smartactionlistProgressCellSubTasks.html","webpack://digilean/../common/components/dashboard/designer/appstore/smartActionList/templates/responsibleCell/smartactionlistResponsibleCell.html","webpack://digilean/../common/components/dashboard/designer/appstore/smartActionList/templates/smartActionListTaskdescriptionCell/smartActionListTaskdescriptionCell.html","webpack://digilean/../common/components/dashboard/designer/appstore/smartActionList/templates/smartActionListTitleCell/smartActionListTitleCell.html","webpack://digilean/../common/components/dashboard/designer/appstore/smartActionList/templates/smartactionlistStatusCell/smartactionlistStatusCell.html","webpack://digilean/../common/components/dashboard/designer/appstore/smartActionList/templates/smartactionlistTargetCell/smartactionlistTargetCell.html","webpack://digilean/../common/components/dashboard/designer/appstore/smartActionList/templates/startDateCell/smartactionlistStartDateCell.html","webpack://digilean/../common/components/dashboard/designer/appstore/smartActionList/templates/subTasksCell/subTasksCell.html","webpack://digilean/../common/components/dashboard/designer/appstore/smartActionList/templates/textCell/smartactionlistTextCell.html","webpack://digilean/../common/components/dashboard/designer/appstore/smartCommon/commonCellSelection.html","webpack://digilean/../common/components/dashboard/designer/appstore/smartCommon/smartCheckCell/smartCheckCell.html","webpack://digilean/../common/components/dashboard/designer/appstore/smartCommon/smartColumnWidthConfig/smartColumnWidthConfig.html","webpack://digilean/../common/components/dashboard/designer/appstore/smartCommon/smartDateCell/smartDateCell.html","webpack://digilean/../common/components/dashboard/designer/appstore/smartCommon/smartIconCell/predefinedIcons.html","webpack://digilean/../common/components/dashboard/designer/appstore/smartCommon/smartIconCell/smartIconCell.html","webpack://digilean/../common/components/dashboard/designer/appstore/smartCommon/smartLinkCell/smartLinkCell.html","webpack://digilean/../common/components/dashboard/designer/appstore/smartCommon/smartNumberCell/smartCommonNumberCell.html","webpack://digilean/../common/components/dashboard/designer/appstore/smartCommon/smartNumberCellAggregate/smartCommonNumberCellAggregate.html","webpack://digilean/../common/components/dashboard/designer/appstore/smartCommon/smartNumberCellAutomatic/smartCommonNumberCellAutomatic.html","webpack://digilean/../common/components/dashboard/designer/appstore/smartCommon/smartPersonCell/smartPersonCell.html","webpack://digilean/../common/components/dashboard/designer/appstore/smartCommon/smartProgressCell/smartProgressCell.html","webpack://digilean/../common/components/dashboard/designer/appstore/smartCommon/smartRatingCell/smartRatingCell.html","webpack://digilean/../common/components/dashboard/designer/appstore/smartCommon/smartRiskCell/smartRiskCell.html","webpack://digilean/../common/components/dashboard/designer/appstore/smartCommon/smartRowNoCell/smartRowNoCell.html","webpack://digilean/../common/components/dashboard/designer/appstore/smartCommon/smartTargetCell/smartTargetCell.html","webpack://digilean/../common/components/dashboard/designer/appstore/smartCommon/smartTextCell/smartCommonTextCell.html","webpack://digilean/../common/components/dashboard/designer/appstore/smarttable/smarttableApp.html","webpack://digilean/../common/components/dashboard/designer/appstore/smarttable/templates/customerCell/smarttableCustomerCell.html","webpack://digilean/../common/components/dashboard/designer/appstore/smarttable/templates/dateCell/smarttableDateCell.html","webpack://digilean/../common/components/dashboard/designer/appstore/smarttable/templates/endDateCell/smarttableEndDateCell.html","webpack://digilean/../common/components/dashboard/designer/appstore/smarttable/templates/linkCell/smarttableLinkCell.html","webpack://digilean/../common/components/dashboard/designer/appstore/smarttable/templates/numberCell/smarttableNumberCell.html","webpack://digilean/../common/components/dashboard/designer/appstore/smarttable/templates/numberCellAggregate/smarttableNumberCellAggregate.html","webpack://digilean/../common/components/dashboard/designer/appstore/smarttable/templates/numberCellAutomatic/smarttableNumberCellAutomatic.html","webpack://digilean/../common/components/dashboard/designer/appstore/smarttable/templates/ownerCell/smarttableOwnerCell.html","webpack://digilean/../common/components/dashboard/designer/appstore/smarttable/templates/personCell/smarttablePersonCell.html","webpack://digilean/../common/components/dashboard/designer/appstore/smarttable/templates/smarttableNameCell/smarttableNameCell.html","webpack://digilean/../common/components/dashboard/designer/appstore/smarttable/templates/smarttableTargetCell/smarttableTargetCell.html","webpack://digilean/../common/components/dashboard/designer/appstore/smarttable/templates/startDateCell/smarttableStartDateCell.html","webpack://digilean/../common/components/dashboard/designer/appstore/smarttable/templates/textCell/smarttableTextCell.html","webpack://digilean/../common/components/dashboard/designer/appstore/smileyApp/smileyApp.html","webpack://digilean/../common/components/dashboard/designer/appstore/splitPackedBubbleChart/splitPackedBubbleChart.html","webpack://digilean/../common/components/dashboard/designer/appstore/stackedHorizontalBarChart/stackedHorizontalBarChart.html","webpack://digilean/../common/components/dashboard/designer/appstore/strategyMapChartApp/strategyMapChartApp.html","webpack://digilean/../common/components/dashboard/designer/appstore/targetgraph/targetgraph.html","webpack://digilean/../common/components/dashboard/designer/appstore/teamtasks/teamTaskConfiguration.html","webpack://digilean/../common/components/dashboard/designer/appstore/teamtasks/teamtasks.html","webpack://digilean/../common/components/dashboard/designer/appstore/texteditor/texteditor.html","webpack://digilean/../common/components/dashboard/designer/appstore/timeboard/timeboard.html","webpack://digilean/../common/components/dashboard/designer/appstore/trendbarchart/trendbarchart.html","webpack://digilean/../common/components/dashboard/designer/appstore/usersonline/usersonline.html","webpack://digilean/../common/components/dashboard/designer/appstore/webviewer/webviewer.html","webpack://digilean/../common/components/dashboard/designer/appstore/weeklyboard/weekSelector.html","webpack://digilean/../common/components/dashboard/designer/appstore/weeklyboard/weeklyboard.html","webpack://digilean/../common/components/dashboard/designer/common/appHeaderTitle/appHeaderTitle.html","webpack://digilean/../common/components/dashboard/designer/dashboardDesigner.html","webpack://digilean/../common/components/dashboard/designer/widget/widget.html","webpack://digilean/../common/components/dashboard/greencross/colorlabelConfiguration.html","webpack://digilean/../common/components/dashboard/greencross/datasourceDailyKPITarget.html","webpack://digilean/../common/components/dashboard/mydigiLeanfeedback/mydigileanfeedback.html","webpack://digilean/../common/components/dashboard/radarchart/radarchart.html","webpack://digilean/../common/components/dashboard/radarchart/radarchartRegistrationDialog.html","webpack://digilean/../common/components/dashboard/smartlogic/cellCloneConfigForm.html","webpack://digilean/../common/components/dashboard/smartlogic/cellCloneInfo/cellCloneInfo.html","webpack://digilean/../common/components/dashboard/smarttable/templates/progressCell/smarttableProgressCell.html","webpack://digilean/../common/components/dashboard/smarttable/templates/progressCell/smarttableProgressbar.html","webpack://digilean/../common/components/dashboard/systemactivity/systemactivityfeed.html","webpack://digilean/../common/components/dashboard/systemdashboard.html","webpack://digilean/../common/components/dashboard/teamdashboard/teamdashboard.html","webpack://digilean/../common/components/data/dataSourceSearchFilter.html","webpack://digilean/../common/components/data/dataseriesselector/a3selectors/a3categoryselector/a3categoryselector.html","webpack://digilean/../common/components/data/dataseriesselector/a3selectors/a3templateselector/a3templateselector.html","webpack://digilean/../common/components/data/dataseriesselector/areaselector/areaselector.html","webpack://digilean/../common/components/data/dataseriesselector/assetselector/assetselector.html","webpack://digilean/../common/components/data/dataseriesselector/boardselector/boardselector.html","webpack://digilean/../common/components/data/dataseriesselector/boardselectors/boardstatusselector/boardstatusselector.html","webpack://digilean/../common/components/data/dataseriesselector/boolselector/boolselector.html","webpack://digilean/../common/components/data/dataseriesselector/businessunitSelector/businessunitSelector.html","webpack://digilean/../common/components/data/dataseriesselector/consequenceSelector/consequenceSelector.html","webpack://digilean/../common/components/data/dataseriesselector/dataSourceFilter.html","webpack://digilean/../common/components/data/dataseriesselector/datalistselector/datalistselector.html","webpack://digilean/../common/components/data/dataseriesselector/dataseriesselectorForm.html","webpack://digilean/../common/components/data/dataseriesselector/dataseriesselectorSteps.html","webpack://digilean/../common/components/data/dataseriesselector/deviationselectors/deviationseverityselector/deviationseverityselector.html","webpack://digilean/../common/components/data/dataseriesselector/deviationselectors/deviationtypeselector/deviationtypeselector.html","webpack://digilean/../common/components/data/dataseriesselector/deviationselectors/problemcategoryselector/problemcategoryselector.html","webpack://digilean/../common/components/data/dataseriesselector/deviationselectors/problemreasonselector/problemreasonselector.html","webpack://digilean/../common/components/data/dataseriesselector/improvementselectors/improvementcategoryselector/improvementcategoryselector.html","webpack://digilean/../common/components/data/dataseriesselector/improvementselectors/prioritystatusselector/prioritystatusselector.html","webpack://digilean/../common/components/data/dataseriesselector/numberselector/numberselector.html","webpack://digilean/../common/components/data/dataseriesselector/projectSelector/projectSelector.html","webpack://digilean/../common/components/data/dataseriesselector/strategygoalSelector/strategygoalSelector.html","webpack://digilean/../common/components/data/dataseriesselector/stringselector/stringselector.html","webpack://digilean/../common/components/data/dataseriesselector/tasktagselector/tasktagselector.html","webpack://digilean/../common/components/data/dataseriesselector/unitSelector/unitSelector.html","webpack://digilean/../common/components/data/dataseriesselector/userselector/userselector.html","webpack://digilean/../common/components/data/datavaluesList/datavaluesListForm.html","webpack://digilean/../common/components/data/definitions/datasourceTarget/datasourceTarget.html","webpack://digilean/../common/components/data/definitions/datasourcegroup/dataSourceGroupSelector.html","webpack://digilean/../common/components/data/definitions/datasourcesingle/dataSourceSingleSelector.html","webpack://digilean/../common/components/data/definitions/datasourcestackedgroup/dataSourceStackedGroupSelector.html","webpack://digilean/../common/components/data/excelImport/excelImportValues.html","webpack://digilean/../common/components/data/excelImport/excelImporter.html","webpack://digilean/../common/components/data/latestValue/latestDataValue.html","webpack://digilean/../common/components/data/timeframeSelector/timeframeSelector.html","webpack://digilean/../common/components/data/timeframeSelector/timeframeSelectorModal.html","webpack://digilean/../common/components/data/unitLabel/unitLabel.html","webpack://digilean/../common/components/deviation/deviation-display-views/deviation_a3.html","webpack://digilean/../common/components/deviation/deviation-display-views/deviation_action_item_added.html","webpack://digilean/../common/components/deviation/deviation-display-views/deviation_action_item_deleted.html","webpack://digilean/../common/components/deviation/deviation-display-views/deviation_area_changed.html","webpack://digilean/../common/components/deviation/deviation-display-views/deviation_attachment_added.html","webpack://digilean/../common/components/deviation/deviation-display-views/deviation_attachment_deleted.html","webpack://digilean/../common/components/deviation/deviation-display-views/deviation_category_changed.html","webpack://digilean/../common/components/deviation/deviation-display-views/deviation_comments.html","webpack://digilean/../common/components/deviation/deviation-display-views/deviation_consequences_changed.html","webpack://digilean/../common/components/deviation/deviation-display-views/deviation_custom_field_updated.html","webpack://digilean/../common/components/deviation/deviation-display-views/deviation_due_date_changed.html","webpack://digilean/../common/components/deviation/deviation-display-views/deviation_evaluation_changed.html","webpack://digilean/../common/components/deviation/deviation-display-views/deviation_incident_date_changed.html","webpack://digilean/../common/components/deviation/deviation-display-views/deviation_new.html","webpack://digilean/../common/components/deviation/deviation-display-views/deviation_problem_reason_changed.html","webpack://digilean/../common/components/deviation/deviation-display-views/deviation_project_changed.html","webpack://digilean/../common/components/deviation/deviation-display-views/deviation_responsible_changed.html","webpack://digilean/../common/components/deviation/deviation-display-views/deviation_severity_changed.html","webpack://digilean/../common/components/deviation/deviation-display-views/deviation_status_updated.html","webpack://digilean/../common/components/deviation/deviation-display-views/deviation_text_changed.html","webpack://digilean/../common/components/deviation/deviation-display-views/deviation_title_changed.html","webpack://digilean/../common/components/deviation/deviation-display-views/deviation_updated.html","webpack://digilean/../common/components/deviation/deviationActionList/deviationActionList.html","webpack://digilean/../common/components/deviation/deviationCategories/deviationCategoriesSelector.html","webpack://digilean/../common/components/deviation/deviationFilter/deviationFilter.html","webpack://digilean/../common/components/deviation/deviationList/deviationListForm.html","webpack://digilean/../common/components/deviation/deviationSearchList/deviationList.html","webpack://digilean/../common/components/deviation/deviationSearchList/deviationListFilter.html","webpack://digilean/../common/components/deviation/deviationSearchList/deviationListResult.html","webpack://digilean/../common/components/deviation/evaluation/deviationCauseSummary/deviationCauseSummary.html","webpack://digilean/../common/components/deviation/evaluation/deviationConsequenceSummary/deviationConsequenceSummary.html","webpack://digilean/../common/components/deviation/evaluation/deviationEvaluation.html","webpack://digilean/../common/components/deviation/evaluation/deviationEvaluationList/deviationEvaluationList.html","webpack://digilean/../common/components/deviation/fullDeviation/fullDeviation.html","webpack://digilean/../common/components/deviation/hub/deviationHub.html","webpack://digilean/../common/components/deviation/mydeviations/mydeviations.html","webpack://digilean/../common/components/deviation/newDeviation.html","webpack://digilean/../common/components/deviation/newDeviation/newDeviationButton.html","webpack://digilean/../common/components/deviation/ongoing/deviationColumn.html","webpack://digilean/../common/components/deviation/ongoing/deviationsOngoing.html","webpack://digilean/../common/components/deviation/ongoing/ongoingDeviation-delete.html","webpack://digilean/../common/components/deviation/ongoing/ongoingDeviation.html","webpack://digilean/../common/components/deviation/ongoing/ongoingDeviationApp.html","webpack://digilean/../common/components/deviation/projectStatus/deviationProjectStatus.html","webpack://digilean/../common/components/deviation/projectStatus/deviationProjectStatusPdfButton/deviationProjectStatusPdfButton.html","webpack://digilean/../common/components/deviation/projectStatus/stackedDeviationHorizontalBarChart/stackedDeviationHorizontalBarChart.html","webpack://digilean/../common/components/deviation/search/deviationSearch.html","webpack://digilean/../common/components/deviation/status/deviationStatus.html","webpack://digilean/../common/components/deviation/status/leadtimeDeviation.html","webpack://digilean/../common/components/deviation/status/monthlyStatusDeviationArea.html","webpack://digilean/../common/components/deviation/status/monthlyStatusDeviationSeverity.html","webpack://digilean/../common/components/deviation/status/monthlystatusDeviation.html","webpack://digilean/../common/components/diagram/DiagramEditorFullscreen.html","webpack://digilean/../common/components/diagram/DiagramTemplateSelector.html","webpack://digilean/../common/components/diagram/DigileanDiagramApp.html","webpack://digilean/../common/components/document/fileinfo/fileinfo.html","webpack://digilean/../common/components/document/imagefileinfo/imagefileinfo.html","webpack://digilean/../common/components/document/videofileinfo/videofileinfo.html","webpack://digilean/../common/components/flexiboard/flexiboard.html","webpack://digilean/../common/components/flexiboard/flexiboardCards/customerKSCard.html","webpack://digilean/../common/components/flexiboard/flexiboardCards/dashboardCard.html","webpack://digilean/../common/components/flexiboard/flexiboardCards/defaultBoardCard.html","webpack://digilean/../common/components/flexiboard/flexiboardCards/mySpaceCard.html","webpack://digilean/../common/components/flexiboard/flexiboardCards/performanceBoardCard.html","webpack://digilean/../common/components/flexiboard/flexiboardCards/personalKanbanCard.html","webpack://digilean/../common/components/flexiboard/flexiboardCards/smartActionlistCard.html","webpack://digilean/../common/components/flexiboard/flexiboardCards/taskSearchCard.html","webpack://digilean/../common/components/flexiboard/flexiboardCards/teamSpaceCard.html","webpack://digilean/../common/components/flexiboard/flexiboardCards/weeklyBoardCard.html","webpack://digilean/../common/components/flexiboard/flexiboardCards/yearlyBoardCard.html","webpack://digilean/../common/components/flexiboard/flexiboardPage/pageWidget.html","webpack://digilean/../common/components/flexiboard/flexiboards.html","webpack://digilean/../common/components/flexiboard/flexiboardtemplates/emptyFlexiboardPreview/emptyFlexiboardPreview.html","webpack://digilean/../common/components/flexiboard/newFlexiboard/newFlexiboard.html","webpack://digilean/../common/components/flexiboard/newFlexiboard/newFlexiboardConfiguration.html","webpack://digilean/../common/components/helpSearch/helpSearch.html","webpack://digilean/../common/components/hours/hoursRegistration.html","webpack://digilean/../common/components/hours/hub/hoursHub.html","webpack://digilean/../common/components/hours/invoiceReport/invoiceReport.html","webpack://digilean/../common/components/hours/invoiceReport/invoiceReportPage.html","webpack://digilean/../common/components/hours/myhours.html","webpack://digilean/../common/components/improvement/feed/improvementFeed.html","webpack://digilean/../common/components/improvement/fullImprovementInfoForm.html","webpack://digilean/../common/components/improvement/hub/improvementHub.html","webpack://digilean/../common/components/improvement/improvement-display-views/improvement_a3.html","webpack://digilean/../common/components/improvement/improvement-display-views/improvement_asset_changed.html","webpack://digilean/../common/components/improvement/improvement-display-views/improvement_category_updated.html","webpack://digilean/../common/components/improvement/improvement-display-views/improvement_comments.html","webpack://digilean/../common/components/improvement/improvement-display-views/improvement_delete_attachment.html","webpack://digilean/../common/components/improvement/improvement-display-views/improvement_due_date_changed.html","webpack://digilean/../common/components/improvement/improvement-display-views/improvement_evaluation_changed.html","webpack://digilean/../common/components/improvement/improvement-display-views/improvement_likes.html","webpack://digilean/../common/components/improvement/improvement-display-views/improvement_new.html","webpack://digilean/../common/components/improvement/improvement-display-views/improvement_new_attachment.html","webpack://digilean/../common/components/improvement/improvement-display-views/improvement_priority_changed.html","webpack://digilean/../common/components/improvement/improvement-display-views/improvement_project_changed.html","webpack://digilean/../common/components/improvement/improvement-display-views/improvement_responsible_changed.html","webpack://digilean/../common/components/improvement/improvement-display-views/improvement_roi_changed.html","webpack://digilean/../common/components/improvement/improvement-display-views/improvement_status_updated.html","webpack://digilean/../common/components/improvement/improvement-display-views/improvement_text_changed.html","webpack://digilean/../common/components/improvement/improvement-display-views/improvement_time_changed.html","webpack://digilean/../common/components/improvement/improvement-display-views/improvement_title_changed.html","webpack://digilean/../common/components/improvement/improvement-display-views/new_suggestion.html","webpack://digilean/../common/components/improvement/improvement.html","webpack://digilean/../common/components/improvement/improvementActionList/improvementActionList.html","webpack://digilean/../common/components/improvement/improvementFilter/improvementFilter.html","webpack://digilean/../common/components/improvement/improvementList/improvementList.html","webpack://digilean/../common/components/improvement/improvementList/improvementListFilter.html","webpack://digilean/../common/components/improvement/improvementList/improvementListResult.html","webpack://digilean/../common/components/improvement/improvementPriorityFilter/improvementPriorityFilter.html","webpack://digilean/../common/components/improvement/improvementreports/teammemberimprovement.html","webpack://digilean/../common/components/improvement/improvementsearch.html","webpack://digilean/../common/components/improvement/improvementstatus.html","webpack://digilean/../common/components/improvement/initiativeRealizationPerGroup/initiativeRealizationPerGroup.html","webpack://digilean/../common/components/improvement/initiativeRealizationPerGroup/initiativeTimeRealizationPerGroup.html","webpack://digilean/../common/components/improvement/leadtimeImprovement/leadtimeImprovement.html","webpack://digilean/../common/components/improvement/likes/likes.html","webpack://digilean/../common/components/improvement/monthlystatusImprovement/monthlystatusImprovement.html","webpack://digilean/../common/components/improvement/mymessages/myMessages.html","webpack://digilean/../common/components/improvement/newFeedbackForm.html","webpack://digilean/../common/components/improvement/newSuggestionForm.html","webpack://digilean/../common/components/improvement/ongoingimprovement/improvementColumn.html","webpack://digilean/../common/components/improvement/ongoingimprovement/ongoingImprovement.html","webpack://digilean/../common/components/improvement/ongoingimprovement/ongoingImprovementApp.html","webpack://digilean/../common/components/improvement/ongoingimprovements.html","webpack://digilean/../common/components/improvement/priorityMatrix/priorityMatrix.html","webpack://digilean/../common/components/improvement/priorityMatrix/priorityMatrixApp.html","webpack://digilean/../common/components/improvement/rangeImprovement/rangeImprovement.html","webpack://digilean/../common/components/improvement/roiperassetImprovement/roiperassetImprovement.html","webpack://digilean/../common/components/improvement/status/feedbackstatus.html","webpack://digilean/../common/components/improvement/suggestionList/suggestionListForm.html","webpack://digilean/../common/components/improvement/topImprovementInitiatives/topImprovementInitiatives.html","webpack://digilean/../common/components/improvement/topImprovementInitiatives/topTimeImprovementInitiatives.html","webpack://digilean/../common/components/improvement/wheelImprovement/wheelImprovement.html","webpack://digilean/../common/components/improvement/widgetImprovementStatus/widgetImprovementStatus.html","webpack://digilean/../common/components/learning/comments/learningPageCommentModal.html","webpack://digilean/../common/components/learning/comments/learningPageComments.html","webpack://digilean/../common/components/learning/evaluation/learningPageEvaluation.html","webpack://digilean/../common/components/learning/evaluation/learningPageEvaluationStatus.html","webpack://digilean/../common/components/learning/favorites/myFavoritePages.html","webpack://digilean/../common/components/learning/learning.html","webpack://digilean/../common/components/learning/pdf/PrintDialog.html","webpack://digilean/../common/components/learning/pdf/learningPagePdfExport.html","webpack://digilean/../common/components/learning/viewer/learningSummaryViewer.html","webpack://digilean/../common/components/learning/viewer/learningViewer.html","webpack://digilean/../common/components/login/forgotPassword/forgotPasswordForm.html","webpack://digilean/../common/components/monitoring/integrations/connectorMonitor.html","webpack://digilean/../common/components/monitoring/integrations/integrationsMonitor.html","webpack://digilean/../common/components/monitoring/integrations/jobLogs.html","webpack://digilean/../common/components/monitoring/monitoringAll.html","webpack://digilean/../common/components/profile/inbox/inbox.html","webpack://digilean/../common/components/profile/inbox/inboxNotifications.html","webpack://digilean/../common/components/profile/inbox/notificationMessages/deviationComment/deviationCommentMessage.html","webpack://digilean/../common/components/profile/inbox/notificationMessages/improvementChangedStatus/improvementChangedStatusMessage.html","webpack://digilean/../common/components/profile/inbox/notificationMessages/improvementComment/improvementCommentMessage.html","webpack://digilean/../common/components/profile/inbox/notificationMessages/licensesChanged/licensesChangedMessage.html","webpack://digilean/../common/components/profile/inbox/notificationMessages/newDeviation/newDeviationMessage.html","webpack://digilean/../common/components/profile/inbox/notificationMessages/pageCommentAdded/pageCommentAddedMessage.html","webpack://digilean/../common/components/profile/inbox/notificationMessages/projectMessageAdded/projectMessageAdded.html","webpack://digilean/../common/components/profile/inbox/notificationMessages/taskAssigned/taskAssignedMessage.html","webpack://digilean/../common/components/profile/inbox/notificationMessages/taskComment/taskCommentMessage.html","webpack://digilean/../common/components/profile/inbox/notificationMessages/updatedResponsibleDeviation/updatedResponsibleDeviationMessage.html","webpack://digilean/../common/components/profile/inbox/notificationMessages/updatedResponsibleSuggestion/updatedResponsibleSuggestionMessage.html","webpack://digilean/../common/components/profile/myRegisteredIncidents/myRegisteredIncidents.html","webpack://digilean/../common/components/profile/myRegisteredIncidents/myRegisteredIncidentsForm.html","webpack://digilean/../common/components/profile/myRegisteredSuggestions/myRegisteredSuggestions.html","webpack://digilean/../common/components/profile/myRegisteredSuggestions/myRegisteredSuggestionsForm.html","webpack://digilean/../common/components/profile/myprofile.html","webpack://digilean/../common/components/profile/myprofilephoto.html","webpack://digilean/../common/components/profile/notifications/myMessageNotifications.html","webpack://digilean/../common/components/profile/notifications/myNotifications.html","webpack://digilean/../common/components/profile/profileImage.html","webpack://digilean/../common/components/profile/profileSettings/notificationSettings.html","webpack://digilean/../common/components/profile/profileSettings/profileInfoSettings.html","webpack://digilean/../common/components/profile/profileSettings/profileSettings.html","webpack://digilean/../common/components/profile/taskThisWeek/taskThisWeek.html","webpack://digilean/../common/components/project/attachments/projectAttachments.html","webpack://digilean/../common/components/project/customerstatus.html","webpack://digilean/../common/components/project/hub/projectHub.html","webpack://digilean/../common/components/project/links/projectLinks.html","webpack://digilean/../common/components/project/messages/projectMessages.html","webpack://digilean/../common/components/project/milestones/milestones.html","webpack://digilean/../common/components/project/newProject/newProject.html","webpack://digilean/../common/components/project/project.html","webpack://digilean/../common/components/project/projectDelete/projectDeleteModal.html","webpack://digilean/../common/components/project/projectGrid/projectDetails.html","webpack://digilean/../common/components/project/projectGrid/projectGrid.html","webpack://digilean/../common/components/project/projectGrid/projectMilestone/projectMilestoneListForm.html","webpack://digilean/../common/components/project/projectGrid/projectMilestoneSummary/projectMilestoneSummary.html","webpack://digilean/../common/components/project/projectGrid/projectOnTime/projectOnTime.html","webpack://digilean/../common/components/project/projectImprovementSummary/projectImprovementSummary.html","webpack://digilean/../common/components/project/projectIncidentSummary/projectIncidentSummary.html","webpack://digilean/../common/components/project/projectParticipants/projectParticipants.html","webpack://digilean/../common/components/project/projectResourceLinks/projectResourceLinks.html","webpack://digilean/../common/components/project/projectTarget/projectTarget.html","webpack://digilean/../common/components/project/projectTask/newtasktoprojecttasklist.html","webpack://digilean/../common/components/project/projectboard/cellcloneselector/cellCloneSelectorForm.html","webpack://digilean/../common/components/project/projectboard/projectCellSelection.html","webpack://digilean/../common/components/project/projectboard/projectboard.html","webpack://digilean/../common/components/project/projectboard/projectselector/projectNewModal.html","webpack://digilean/../common/components/project/projectboard/projectselector/projectSelectorModal.html","webpack://digilean/../common/components/project/projectboard/targetVisualizationSelector/targetProjectVisualizationForm.html","webpack://digilean/../common/components/project/projectboard/targetVisualizationSelector/targetVisualizationSelectorForm.html","webpack://digilean/../common/components/project/projectboard/templates/contactPersonCell/projectContactPersonCell.html","webpack://digilean/../common/components/project/projectboard/templates/customerCell/projectCustomerCell.html","webpack://digilean/../common/components/project/projectboard/templates/dateCell/projectDateCell.html","webpack://digilean/../common/components/project/projectboard/templates/endDateCell/projectEndDateCell.html","webpack://digilean/../common/components/project/projectboard/templates/linkCell/projectLinkCell.html","webpack://digilean/../common/components/project/projectboard/templates/milestoneCell/projectMilestoneCell.html","webpack://digilean/../common/components/project/projectboard/templates/milestoneCell/projectNextMilestoneCell.html","webpack://digilean/../common/components/project/projectboard/templates/numberCell/numberCell.html","webpack://digilean/../common/components/project/projectboard/templates/numberCellAggregate/numberCellAggregate.html","webpack://digilean/../common/components/project/projectboard/templates/numberCellAutomatic/numberCellAutomatic.html","webpack://digilean/../common/components/project/projectboard/templates/ownerCell/ownerCell.html","webpack://digilean/../common/components/project/projectboard/templates/personCell/projectPersonCell.html","webpack://digilean/../common/components/project/projectboard/templates/progressCell/progressbar.html","webpack://digilean/../common/components/project/projectboard/templates/progressCell/projectProgressCell.html","webpack://digilean/../common/components/project/projectboard/templates/progressTasksCell/projectProgressTasksCell.html","webpack://digilean/../common/components/project/projectboard/templates/projectDescriptionCell/projectDescriptionCell.html","webpack://digilean/../common/components/project/projectboard/templates/projectLinkToHubCell/projectLinkToHubCell.html","webpack://digilean/../common/components/project/projectboard/templates/projectNameCell/projectNameCell.html","webpack://digilean/../common/components/project/projectboard/templates/projectNumberCell/projectNumberCell.html","webpack://digilean/../common/components/project/projectboard/templates/projectParticipantsCell/projectParticipantModal.html","webpack://digilean/../common/components/project/projectboard/templates/projectParticipantsCell/projectParticipantsCell.html","webpack://digilean/../common/components/project/projectboard/templates/projectStatusCell/projectStatusCell.html","webpack://digilean/../common/components/project/projectboard/templates/projectTargetCell/projectTargetCell.html","webpack://digilean/../common/components/project/projectboard/templates/projectTasksCell/projectTasksCell.html","webpack://digilean/../common/components/project/projectboard/templates/startDateCell/projectStartDateCell.html","webpack://digilean/../common/components/project/projectboard/templates/targetFromAppCell/targetFromAppCell.html","webpack://digilean/../common/components/project/projectboard/templates/textCell/predefinedLabels.html","webpack://digilean/../common/components/project/projectboard/templates/textCell/projectTextCell.html","webpack://digilean/../common/components/project/projectboard/templates/textFromAppCell/textFromAppCell.html","webpack://digilean/../common/components/project/projectportfolio/newProjectPortfolioConfiguration.html","webpack://digilean/../common/components/project/projectportfolio/projectPortfolio.html","webpack://digilean/../common/components/project/projectportfolio/projectportfolioTimeview.html","webpack://digilean/../common/components/project/selectedProject.html","webpack://digilean/../common/components/project/status/projectPercentPlanComplete.html","webpack://digilean/../common/components/selectors/groupselector/groupSelector.html","webpack://digilean/../common/components/start/inbox/inboxButton.html","webpack://digilean/../common/components/start/myFavorites/myFavorites.html","webpack://digilean/../common/components/start/newButtons/newButtons.html","webpack://digilean/../common/components/start/newButtons/newCompetence.html","webpack://digilean/../common/components/start/start.html","webpack://digilean/../common/components/strategy/attachments/strategyAttachments.html","webpack://digilean/../common/components/strategy/goalCreate/goalCreate.html","webpack://digilean/../common/components/strategy/goalCreate/goalCreatePopup.html","webpack://digilean/../common/components/strategy/goalDetails.html","webpack://digilean/../common/components/strategy/goalEdit/goalEdit.html","webpack://digilean/../common/components/strategy/goalEdit/goalEditPopup.html","webpack://digilean/../common/components/strategy/goalKanban/goalKanban.html","webpack://digilean/../common/components/strategy/goalKanban/goalKanbanCard.html","webpack://digilean/../common/components/strategy/goalSelector/goalSelector.html","webpack://digilean/../common/components/strategy/links/strategyLinks.html","webpack://digilean/../common/components/strategy/strategy-display-views/strategy_goal_asset_changed.html","webpack://digilean/../common/components/strategy/strategy-display-views/strategy_goal_color_changed.html","webpack://digilean/../common/components/strategy/strategy-display-views/strategy_goal_deleted.html","webpack://digilean/../common/components/strategy/strategy-display-views/strategy_goal_description_changed.html","webpack://digilean/../common/components/strategy/strategy-display-views/strategy_goal_end_date_changed.html","webpack://digilean/../common/components/strategy/strategy-display-views/strategy_goal_name_changed.html.html","webpack://digilean/../common/components/strategy/strategy-display-views/strategy_goal_new.html","webpack://digilean/../common/components/strategy/strategy-display-views/strategy_goal_start_date_changed.html","webpack://digilean/../common/components/strategy/strategy.html","webpack://digilean/../common/components/strategy/strategyGoalResources/strategyGoalResourceLinks.html","webpack://digilean/../common/components/strategy/strategyKPI/strategyBowlerChart.html","webpack://digilean/../common/components/strategy/strategyKPI/strategyBowlerMonthlyActual.html","webpack://digilean/../common/components/strategy/strategyKPI/strategyBowlerMonthlyPlan.html","webpack://digilean/../common/components/strategy/strategyKPI/strategyBowlerTitle.html","webpack://digilean/../common/components/strategy/strategyKPI/strategyFlexibleBowlerChart.html","webpack://digilean/../common/components/strategy/strategyKPI/strategyKPIConfiguration.html","webpack://digilean/../common/components/strategy/strategyMap/cards/strategyCardPopup.html","webpack://digilean/../common/components/strategy/strategyMap/cards/strategyGoalCard.html","webpack://digilean/../common/components/strategy/strategyMap/strategyMap.html","webpack://digilean/../common/components/strategy/strategyMap/strategyMapChart/strategyMapChart.html","webpack://digilean/../common/components/strategy/strategyMap/strategyviewer.html","webpack://digilean/../common/components/strategy/strategyTaskList/strategyTaskList.html","webpack://digilean/../common/components/strategy/strategyTaskList/strategyTaskListResult.html","webpack://digilean/../common/components/strategy/strategyTaskList/strategyTaskUrl.html","webpack://digilean/../common/components/strategy/strategyboard/assetCell/assetCell.html","webpack://digilean/../common/components/strategy/strategyboard/breakthroughNewModal.html","webpack://digilean/../common/components/strategy/strategyboard/strategyBoard.html","webpack://digilean/../common/components/strategy/strategyboard/strategyDescriptionCell/strategyDescriptionCell.html","webpack://digilean/../common/components/strategy/strategyboard/strategyEndDateCell/strategyEndDateCell.html","webpack://digilean/../common/components/strategy/strategyboard/strategyNameCell/strategyNameCell.html","webpack://digilean/../common/components/strategy/strategyboard/strategyStartDateCell/strategyStartDateCell.html","webpack://digilean/../common/components/strategy/strategyboard/strategySubGoalCell/strategySubGoalCell.html","webpack://digilean/../common/components/strategy/teamGoalsTable/goalKpiTable/goalKpiTable.html","webpack://digilean/../common/components/strategy/teamGoalsTable/teamGoalsTable.html","webpack://digilean/../common/components/tasks/info/taskInfo.html","webpack://digilean/../common/components/tasks/myTasks.html","webpack://digilean/../common/components/tasks/personal/3Ctask.html","webpack://digilean/../common/components/tasks/personal/a3task.html","webpack://digilean/../common/components/tasks/personal/deviationtask.html","webpack://digilean/../common/components/tasks/personal/improvementtask.html","webpack://digilean/../common/components/tasks/personal/personaltask.html","webpack://digilean/../common/components/tasks/personal/strategytask.html","webpack://digilean/../common/components/tasks/personal/subtask.html","webpack://digilean/../common/components/tasks/personal/task.html","webpack://digilean/../common/components/tasks/personaltasklist.html","webpack://digilean/../common/components/tasks/subtasks/moveSubTask.html","webpack://digilean/../common/components/tasks/subtasks/newSubTaskList.html","webpack://digilean/../common/components/tasks/subtasks/subTaskList.html","webpack://digilean/../common/components/tasks/subtasks/taskBoardSelector.html","webpack://digilean/../common/components/tasks/subtasks/taskUserSelector.html","webpack://digilean/../common/components/tasks/taskList/projectTaskList.html","webpack://digilean/../common/components/tasks/taskList/taskListForm.html","webpack://digilean/../common/components/tasks/taskSearch/taskList.html","webpack://digilean/../common/components/tasks/taskSearch/taskListFilter.html","webpack://digilean/../common/components/tasks/taskSearch/taskListResult.html","webpack://digilean/../common/components/tasks/taskSearch/taskSearch.html","webpack://digilean/../common/components/tasks/tasks.html","webpack://digilean/../common/components/tasks/taskstatus/animationTaskStatus.html","webpack://digilean/../common/components/tasks/taskstatus/personalTaskStatus.html","webpack://digilean/../common/components/tasks/team/teamKanban.html","webpack://digilean/../common/components/tasks/team/teamKanbanCard.html","webpack://digilean/../common/components/tasks/team/teammember.html","webpack://digilean/../common/components/tasks/team/teamspace.html","webpack://digilean/../common/components/teams/config.html","webpack://digilean/../common/components/teams/configTab.html","webpack://digilean/../common/components/teams/settings.html","webpack://digilean/../common/components/testTemplate.html","webpack://digilean/../common/components/users/userBadge.html","webpack://digilean/../common/shared/comments/replyableComment.html","webpack://digilean/../common/shared/comments/topLevelComment.html","webpack://digilean/../common/shared/htmlTextArea/htmlTextArea.html","webpack://digilean/../common/shared/layout/assetMultiSelector/assetMultiSelectorForm.html","webpack://digilean/../common/shared/layout/assetSelector/assetSelectorDropdown.html","webpack://digilean/../common/shared/layout/assetSelector/assetSelectorModal.html","webpack://digilean/../common/shared/layout/boardTaskSelector/boardTaskSelectorDropdown.html","webpack://digilean/../common/shared/layout/clock/clock.html","webpack://digilean/../common/shared/layout/clock/countdown.html","webpack://digilean/../common/shared/layout/content.html","webpack://digilean/../common/shared/layout/favorites/favorites.html","webpack://digilean/../common/shared/layout/footer.html","webpack://digilean/../common/shared/layout/fullscreen/fullscreen.html","webpack://digilean/../common/shared/layout/ibox/iboxExpandButton.html","webpack://digilean/../common/shared/layout/ibox_tools.html","webpack://digilean/../common/shared/layout/inTrialInfo/inTrialInfo.html","webpack://digilean/../common/shared/layout/navigation.html","webpack://digilean/../common/shared/layout/navnewa3/navnewa3.html","webpack://digilean/../common/shared/layout/navnewbubble/navnewbubble.html","webpack://digilean/../common/shared/layout/navnewsuggestion/navnewsuggestion.html","webpack://digilean/../common/shared/layout/navnewtask/navnewtask.html","webpack://digilean/../common/shared/layout/projectSelector/projectSelectorDropdown.html","webpack://digilean/../common/shared/layout/topnavbar.html","webpack://digilean/../common/shared/layout/userSelector/userSelectorDropdown.html","webpack://digilean/../common/shared/logs/logMessageViewer.html","webpack://digilean/../common/shared/messages/message.html","webpack://digilean/../common/shared/messages/messageAttachment.html","webpack://digilean/../common/shared/messages/messageRepliesDialog.html","webpack://digilean/../common/shared/messages/replyableMessage.html","webpack://digilean/../common/shared/messages/simpleReply.html","webpack://digilean/../common/shared/modal/fullscreen/fullscreenWidget.html","webpack://digilean/../common/shared/modal/modal.html","webpack://digilean/../common/shared/paging/pager.html","webpack://digilean/../common/shared/tasks/taskStatus.html","webpack://digilean/../common/shared/zoom/zoomSelector.html","webpack://digilean/./src/app/users/userComponent.html","webpack://digilean/../node_modules/moment/locale/ sync ^\\.\\/.*$","webpack://digilean/../common/components/digilean/DigiLeanLogo.ts","webpack://digilean/../common/envConfig.ts","webpack://digilean/../common/services/pageStateService.ts","webpack://digilean/./src/app/directives.js","webpack://digilean/./src/app/filters.js","webpack://digilean/./src/app/ sync \\.html$","webpack://digilean/../common/thirdparty.js","webpack://digilean/../common/services/webclientErrorLogging.ts","webpack://digilean/../common/stores/reactive.ts","webpack://digilean/../common/model/types.ts","webpack://digilean/../common/stores/userStore.ts","webpack://digilean/../common/services/error/aspNetErrorHandling.ts","webpack://digilean/../common/services/systemHubService.ts","webpack://digilean/../common/services/systemHub.ts","webpack://digilean/../common/services/backendHttp.ts","webpack://digilean/../common/services/user/userService.ts","webpack://digilean/../common/services/auth/digileanOidc.ts","webpack://digilean/../common/services/language/DigiLeanLang.ts","webpack://digilean/./src/app/app.js","webpack://digilean/./src/app/config.js","webpack://digilean/../common/services/language/DigiLeanAngularLang.ts","webpack://digilean/../common/shared/activityService.js","webpack://digilean/../common/services/cacheService.ts","webpack://digilean/../common/services/customers/customerService.ts","webpack://digilean/../common/services/timeService.js","webpack://digilean/../common/services/filesService.ts","webpack://digilean/../common/shared/excelService.js","webpack://digilean/../common/shared/navigationService.js","webpack://digilean/../common/shared/modulesService.js","webpack://digilean/../common/shared/smartcellService.js","webpack://digilean/../common/components/A3/a3Service.js","webpack://digilean/../common/components/admin/area/areaService.js","webpack://digilean/../common/components/admin/contactlist/contactlistService.js","webpack://digilean/../common/shared/folderService.js","webpack://digilean/../common/shared/notificationService.js","webpack://digilean/../common/shared/favoriteService.js","webpack://digilean/../common/components/dashboard/designer/appstore/smarttable/smarttableService.js","webpack://digilean/../common/components/board/boardTaskService.js","webpack://digilean/../common/components/data/dataService.js","webpack://digilean/../common/components/data/dataListService.js","webpack://digilean/../common/components/data/dataSourceService.js","webpack://digilean/../common/stores/companySettingsStore.ts","webpack://digilean/../common/components/data/timeframeSelector/timeframeSelector.js","webpack://digilean/../common/components/data/dataseriesselector/dataseriesselectorStepsController.js","webpack://digilean/../common/components/data/definitions/datasourcesingle/dataSourceSingleSelector.js","webpack://digilean/../common/components/data/definitions/datasourcegroup/dataSourceGroupSelector.js","webpack://digilean/../common/components/data/definitions/datasourcestackedgroup/dataSourceStackedGroupSelector.js","webpack://digilean/../common/components/toast/toastService.ts","webpack://digilean/../common/components/toast/index.ts","webpack://digilean/../common/components/data/definitions/datasourceTarget/datasourceTarget.js","webpack://digilean/../common/components/data/importExportService.js","webpack://digilean/../common/services/user/profileService.ts","webpack://digilean/../common/components/data/excelImport/excelImporterController.js","webpack://digilean/../common/services/assetService.ts","webpack://digilean/../common/components/data/dataseriesselector/assetselector/assetselectorcontroller.js","webpack://digilean/../common/services/businessUnitService.ts","webpack://digilean/../common/components/data/dataseriesselector/businessunitSelector/businessunitSelector.js","webpack://digilean/../common/components/data/dataseriesselector/userselector/userselector.js","webpack://digilean/../common/services/displayService.js","webpack://digilean/../common/services/boardService.ts","webpack://digilean/../common/components/data/dataseriesselector/boardselector/boardselector.js","webpack://digilean/../common/components/data/dataseriesselector/boardselectors/boardstatusselector/boardstatusselector.js","webpack://digilean/../common/components/data/datavaluesList/datavaluesListModalController.js","webpack://digilean/../common/shared/layout/clock/countdown.js","webpack://digilean/../common/shared/layout/assetSelector/assetSelectorDropdown.js","webpack://digilean/../common/shared/layout/assetMultiSelector/assetMultiSelectorController.ts","webpack://digilean/../common/services/user/profileImageService.ts","webpack://digilean/../common/shared/layout/userSelector/userSelectorDropdown.js","webpack://digilean/../common/shared/layout/boardTaskSelector/boardTaskSelectorDropdown.js","webpack://digilean/../common/services/template/templateLiteral.ts","webpack://digilean/../common/services/datetime/dateTimeService.ts","webpack://digilean/../common/shared/dates/datePicker.ts","webpack://digilean/../common/shared/dates/datePickerSlot.ts","webpack://digilean/../common/components/customer/customerLookup.ts","webpack://digilean/../common/components/document/dropzone/dropzone.js","webpack://digilean/../common/services/documentService.ts","webpack://digilean/../common/services/helperLib.js","webpack://digilean/../common/components/document/fileinfo/fileinfo.js","webpack://digilean/../common/components/document/imagefileinfo/imagefileinfo.js","webpack://digilean/../common/components/document/videofileinfo/videofileinfo.js","webpack://digilean/../common/components/board/boardresolver/boardResolverController.js","webpack://digilean/../common/shared/errorHandling/errorHandling.js","webpack://digilean/../common/shared/auth/modulesDirective.ts","webpack://digilean/../common/shared/auth/subscriptionDirective.ts","webpack://digilean/../common/shared/auth/rolesDirective.ts","webpack://digilean/../common/components/digilean/DigiLeanButton.ts","webpack://digilean/../common/components/digilean/DigiLeanInput.ts","webpack://digilean/../common/components/digilean/DigileanJsonEditor.ts","webpack://digilean/../common/components/digilean/DigileanDialog.ts","webpack://digilean/../common/components/icons/DigileanChecked.ts","webpack://digilean/../common/components/icons/DigileanFailed.ts","webpack://digilean/../common/components/icons/DigileanWorking.ts","webpack://digilean/../common/components/icons/DigiLeanOkWithErrors.ts","webpack://digilean/../common/components/icons/spinnerIcon.ts","webpack://digilean/../common/services/datetime/dateTimeFormattingLocale.ts","webpack://digilean/../common/shared/dates/dateViewer.ts","webpack://digilean/../common/shared/dates/dateTimeViewer.ts","webpack://digilean/../common/components/translation/translateLabel.ts","webpack://digilean/../common/components/users/userDebug.ts","webpack://digilean/../common/services/tokenService.ts","webpack://digilean/../common/components/users/userTokenViewer.ts","webpack://digilean/../common/components/appConfigDebug.ts","webpack://digilean/../common/components/admin/apiclients/apiClientsService.ts","webpack://digilean/../common/components/admin/apiclients/apiScopesDialog.ts","webpack://digilean/../common/components/icons/fontawesome.ts","webpack://digilean/../common/components/viewers/pdfRenderer.ts","webpack://digilean/../common/components/viewers/pdfViewer.ts","webpack://digilean/../common/components/admin/assets/businessUnitMembers.vue?b9bb","webpack://digilean/../common/components/admin/assets/businessUnitMembers.vue","webpack://digilean/../common/components/admin/assets/businessUnitMembers.vue?c4f3","webpack://digilean/../common/components/dashboard/designer/common/appStyleService.ts","webpack://digilean/../common/components/dashboard/designer/appstore/pdfDisplayer/pdfDisplayerAppNg.ts","webpack://digilean/../common/directives/vueCustomEventsEmitter.ts","webpack://digilean/../common/components/document/fileUploader.vue?157e","webpack://digilean/../common/components/document/fileUploader.vue","webpack://digilean/../common/components/document/fileUploader.vue?867d","webpack://digilean/../common/components/document/fileUploader.vue?9038","webpack://digilean/../common/components/translation/businessUnit.vue?5c2f","webpack://digilean/../common/components/translation/businessUnit.vue?9b05","webpack://digilean/../common/components/translation/businessUnit.vue","webpack://digilean/../common/components/digilean/digiLeanPopup.ts","webpack://digilean/../common/components/toast/toastComponent.ts","webpack://digilean/../common/components/toast/toastMaster.ts","webpack://digilean/../common/components/strategy/strategyService.js","webpack://digilean/../common/services/dashboardService.ts","webpack://digilean/../common/components/dashboard/designer/common/userAccessService.ts","webpack://digilean/../common/components/dashboard/designer/appstore/3cTable/threeCTableApp.js","webpack://digilean/../common/components/dashboard/designer/appstore/3cTable/threeCTable.js","webpack://digilean/../common/components/dashboard/designer/appstore/3cTable/threeCService.js","webpack://digilean/../common/components/dashboard/designer/appstore/3cTable/cells/threeCDateCell.js","webpack://digilean/../common/components/dashboard/designer/appstore/3cTable/cells/threeCOwnerCell.js","webpack://digilean/../common/components/dashboard/designer/appstore/3cTable/cells/threeCStatusCell.js","webpack://digilean/../common/components/dashboard/designer/appstore/3cTable/cells/threeCTextCell.js","webpack://digilean/../common/components/dashboard/designer/appstore/smartCommon/smartNumberCellAutomatic/smartCommonNumberCellAutomatic.js","webpack://digilean/../common/components/dashboard/designer/appstore/smarttable/templates/customerCell/smarttableCustomerCell.js","webpack://digilean/../common/components/dashboard/designer/appstore/smarttable/templates/textCell/smarttableTextCell.js","webpack://digilean/../common/components/dashboard/designer/appstore/smarttable/templates/numberCellAutomatic/smarttableNumberCellAutomatic.js","webpack://digilean/../common/components/dashboard/designer/appstore/smarttable/templates/smarttableTargetCell/smarttableTargetCell.js","webpack://digilean/../common/components/dashboard/designer/appstore/smarttable/templates/startDateCell/smarttableStartDateCell.js","webpack://digilean/../common/components/dashboard/designer/appstore/smarttable/templates/endDateCell/smarttableEndDateCell.js","webpack://digilean/../common/components/dashboard/smarttable/templates/progressCell/smarttableProgressCell.js","webpack://digilean/../common/services/translationService.ts","webpack://digilean/../common/services/employeeService.ts","webpack://digilean/../common/services/pdfService.ts","webpack://digilean/../common/services/settingsService.ts","webpack://digilean/../common/components/dashboard/designer/appstore/smartActionList/smartActionListApp.js","webpack://digilean/../common/components/dashboard/designer/appstore/smartActionList/smartActionListService.js","webpack://digilean/../common/components/dashboard/designer/appstore/smartActionList/templates/numberCellAutomatic/smartactionlistNumberCellAutomatic.js","webpack://digilean/../common/components/dashboard/designer/appstore/actionList/actionListApp.js","webpack://digilean/../common/shared/staticFileService.ts","webpack://digilean/../common/components/dashboard/barchart/barchartcontroller.js","webpack://digilean/../common/components/dashboard/designer/appstore/comparechart/comparechart.js","webpack://digilean/../common/components/dashboard/designer/appstore/a3viewer/a3Viewer.js","webpack://digilean/../common/components/dashboard/designer/appstore/calendar/personalcalendar.js","webpack://digilean/../common/components/dashboard/designer/appstore/calendar/teamcalendar.js","webpack://digilean/../common/components/dashboard/designer/appstore/daycounter/daycounter.js","webpack://digilean/../common/components/dashboard/designer/appstore/greencross/kpiLetterBase.js","webpack://digilean/../common/components/dashboard/designer/appstore/imagedisplayer/imagedisplayer.js","webpack://digilean/../common/components/dashboard/designer/appstore/messagedisplayer/messagedisplayer.js","webpack://digilean/../common/components/dashboard/designer/appstore/quickIncidentRegistration/quickIncidentRegistrationApp.js","webpack://digilean/../common/components/dashboard/designer/appstore/quickIncidentRegistration/quickIncidentRegistrationConfigurationController.js","webpack://digilean/../common/shared/messages/messageAttachment.js","webpack://digilean/../common/components/board/template/newboardtemplateController.js","webpack://digilean/../common/components/board/assetMessage/assetMessage.js","webpack://digilean/../common/components/board/newBoard/newBoardFromTemplateController.js","webpack://digilean/../common/components/board/boardDesigner/boardDesignerController.js","webpack://digilean/../common/components/board/boardresolver/boardDesignerResolverController.js","webpack://digilean/../common/components/board/boardDesigner/boardCategoryDetailsController.js","webpack://digilean/../common/components/board/boardTask/boardTaskController.js","webpack://digilean/../common/components/board/boardTask/newBoardTaskController.js","webpack://digilean/../common/components/board/taskattachments/taskattachments.js","webpack://digilean/../common/components/board/taskattachments/taskattachment.js","webpack://digilean/../common/components/board/productionboard/productionBoard.js","webpack://digilean/../common/components/board/productionboard/productionBoardApp.js","webpack://digilean/../common/components/board/productionboard/productionBoardMandatoryFieldsController.js","webpack://digilean/../common/components/board/yearlyboard/yearlyboard.js","webpack://digilean/../common/components/board/yearlyboard/yearlyboardDesigner.js","webpack://digilean/../common/components/board/yearlyboard/tasks/yearlyTask.js","webpack://digilean/../common/components/board/selector/threeCBoardSelector.js","webpack://digilean/../common/components/board/selector/memberBoardSelector.js","webpack://digilean/../common/components/board/dynamicBoard.js","webpack://digilean/../common/components/board/smartKanban/smartKanban.js","webpack://digilean/../common/components/board/clonetask/clonetaskController.js","webpack://digilean/../common/components/board/movetask/movetaskController.js","webpack://digilean/../common/components/board/newBoard/boardtypes/weeklyBoard/weeklyBoardPreview.js","webpack://digilean/../common/components/board/newBoard/boardtypes/projectBoard/projectBoardPreview.js","webpack://digilean/../common/components/board/newBoard/boardtypes/smartactionlist/smartActionListPreview.js","webpack://digilean/../common/components/board/newBoard/boardtypes/yearlyBoard/yearlyBoardPreview.js","webpack://digilean/../common/components/board/repeattask/repeattaskController.js","webpack://digilean/../common/components/board/tasktoactionlist/tasktoactionlistController.js","webpack://digilean/../common/components/board/boardController.js","webpack://digilean/../common/components/board/taskDrawingService.js","webpack://digilean/../common/components/board/connectedusers/connectedUsers.js","webpack://digilean/../common/components/board/personal/personalboardController.js","webpack://digilean/../common/components/board/personal/personalboardFilter.js","webpack://digilean/../common/components/tasks/subtasks/moveSubTaskController.js","webpack://digilean/../common/components/tasks/personaltaskListController.js","webpack://digilean/../common/components/tasks/taskList/taskListModalController.js","webpack://digilean/../common/components/tasks/taskList/projectTaskList.js","webpack://digilean/../common/components/tasks/taskstatus/personalTaskStatus.js","webpack://digilean/../common/components/tasks/subtasks/subTaskList.js","webpack://digilean/../common/components/tasks/subtasks/taskUserSelector.ts","webpack://digilean/../common/components/tasks/subtasks/taskBoardSelector.ts","webpack://digilean/../common/components/tasks/subtasks/newSubTaskList.js","webpack://digilean/../common/components/tasks/taskstatus/animationTaskStatus.js","webpack://digilean/../common/components/tasks/taskSearch/taskListFilter.js","webpack://digilean/../common/components/tasks/taskSearch/taskListResult.js","webpack://digilean/../common/components/tasks/team/teamspaceController.js","webpack://digilean/../common/shared/tasks/taskStatus.js","webpack://digilean/../common/components/admin/boards/boardSettingsController.js","webpack://digilean/../common/components/admin/language/languageLabelAdmin.js","webpack://digilean/../common/components/admin/language/languageAdminService.js","webpack://digilean/../common/components/admin/data/datasourceValues.js","webpack://digilean/../api/models/AssetRoleType.ts","webpack://digilean/../api/models/AuthenticationMode.ts","webpack://digilean/../api/models/CustomerSettingKeys.ts","webpack://digilean/../api/models/CustomerSubscriptionType.ts","webpack://digilean/../api/models/DatabaseType.ts","webpack://digilean/../api/models/DataSourceElementType.ts","webpack://digilean/../api/models/DeviceType.ts","webpack://digilean/../api/models/EvaluationStatus.ts","webpack://digilean/../api/models/GroupType.ts","webpack://digilean/../api/models/ImprovementStatus.ts","webpack://digilean/../api/models/IncidentSeverity.ts","webpack://digilean/../api/models/IncidentStatus.ts","webpack://digilean/../api/models/JobRunResult.ts","webpack://digilean/../api/models/JobRunState.ts","webpack://digilean/../api/models/LearningItemType.ts","webpack://digilean/../api/models/LogMessageType.ts","webpack://digilean/../api/models/MonitorState.ts","webpack://digilean/../api/models/PublishState.ts","webpack://digilean/../api/models/TeamsAccess.ts","webpack://digilean/../api/models/UserCheckupStatus.ts","webpack://digilean/../common/components/admin/organization/billing/organizationBillingAdmin.js","webpack://digilean/../common/components/admin/organization/billing/businessunitAccount.ts","webpack://digilean/../common/components/admin/organization/billing/customerAccountModalController.js","webpack://digilean/../common/components/admin/assets/assetParticipantsController.ts","webpack://digilean/../common/components/admin/organization/customerAccountService.js","webpack://digilean/../common/components/admin/organization/messagecenter/newmessage/newMessageModalController.js","webpack://digilean/../common/components/flexiboard/flexiboardsController.js","webpack://digilean/../common/components/flexiboard/resolutionDisplayer.ts","webpack://digilean/../common/components/flexiboard/flexiboardLayoutService.ts","webpack://digilean/../common/components/flexiboard/flexiboardController.js","webpack://digilean/../common/components/flexiboard/flexiboardCards/weeklyBoardCard.js","webpack://digilean/../common/components/flexiboard/flexiboardCards/yearlyBoardCard.js","webpack://digilean/../common/components/flexiboard/flexiboardCards/dashboardCard.js","webpack://digilean/../common/components/flexiboard/flexiboardCards/smartActionlistCard.js","webpack://digilean/../common/components/flexiboard/flexiboardCards/personalKanbanCard.js","webpack://digilean/../common/components/flexiboard/flexiboardCards/performanceBoardCard.js","webpack://digilean/../common/components/flexiboard/flexiboardCards/taskSearchCard.js","webpack://digilean/../common/components/flexiboard/flexiboardCards/mySpaceCard.js","webpack://digilean/../common/components/flexiboard/flexiboardCards/teamSpaceCard.js","webpack://digilean/../common/components/flexiboard/flexiboardCards/customerKSCard.js","webpack://digilean/../common/components/flexiboard/newFlexiboard/newFlexiboardController.js","webpack://digilean/../common/components/flexiboard/newFlexiboard/newFlexiboardConfigurationController.js","webpack://digilean/../common/components/flexiboard/flexiboardtemplates/emptyFlexiboardPreview/emptyFlexiboardPreview.js","webpack://digilean/../common/services/helperFunctions.ts","webpack://digilean/../common/components/flexiboard/flexiboardPage/pageService.ts","webpack://digilean/../common/components/flexiboard/flexiboardPage/flexiboardPageContainer.ts","webpack://digilean/../common/components/dashboard/designer/widget/widgetController.js","webpack://digilean/../common/components/dashboard/designer/appstore/webviewer/webviewer.js","webpack://digilean/../common/components/dashboard/designer/appstore/appstoreService.js","webpack://digilean/../common/components/project/projectService.js","webpack://digilean/../common/components/project/projectboard/projectboard.js","webpack://digilean/../common/components/project/projectportfolio/projectportfolioTimeview.js","webpack://digilean/../common/components/project/projectParticipants/projectParticipants.js","webpack://digilean/../common/components/project/projectboard/templates/customerCell/projectCustomerCell.js","webpack://digilean/../common/components/project/projectboard/templates/numberCellAutomatic/numberCellAutomatic.js","webpack://digilean/../common/components/project/projectboard/templates/startDateCell/projectStartDateCell.js","webpack://digilean/../common/components/project/projectboard/templates/endDateCell/projectEndDateCell.js","webpack://digilean/../common/components/project/projectboard/templates/milestoneCell/projectMilestoneCell.js","webpack://digilean/../common/components/project/projectGrid/projectGridController.js","webpack://digilean/../common/components/project/projectGrid/projectDetailsController.js","webpack://digilean/../common/components/project/projectportfolio/projectPortfolioController.js","webpack://digilean/../common/components/project/projectportfolio/newProjectPortfolioConfigurationController.js","webpack://digilean/../common/components/project/messages/projectMessages.js","webpack://digilean/../common/components/project/messages/projectMessageService.js","webpack://digilean/../common/components/project/selectedProjectController.js","webpack://digilean/../common/components/project/projectTask/newtasktoprojecttasklistController.js","webpack://digilean/../common/components/improvement/suggestionService.js","webpack://digilean/../common/components/improvement/mymessages/myMessagesController.js","webpack://digilean/../common/components/improvement/priorityMatrix/priorityMatrix.js","webpack://digilean/../common/components/improvement/suggestionList/suggestionListModalController.js","webpack://digilean/../common/components/improvement/improvementActionList/improvementActionList.js","webpack://digilean/../common/components/improvement/improvementFilter/improvementFilter.js","webpack://digilean/../common/components/improvement/improvementPriorityFilter/improvementPriorityFilter.js","webpack://digilean/../common/components/improvement/initiativeRealizationPerGroup/initiativeRealizationPerGroupController.js","webpack://digilean/../common/components/improvement/topImprovementInitiatives/topImprovementInitiativesController.js","webpack://digilean/../common/components/improvement/roiperassetImprovement/roiperassetImprovementController.js","webpack://digilean/../common/shared/filterTranslator.js","webpack://digilean/../common/components/improvement/newSuggestionModalController.js","webpack://digilean/../common/components/improvement/ongoingimprovement/ongoingImprovementApp.js","webpack://digilean/../common/components/improvement/fullImprovementModalController.js","webpack://digilean/../common/components/improvement/improvementList/improvementListFilter.js","webpack://digilean/../common/components/improvement/improvementList/improvementListResult.js","webpack://digilean/../common/shared/settingsTranslatorImprovement.js","webpack://digilean/../common/components/improvement/ongoingimprovement/ongoingImprovement.js","webpack://digilean/../common/components/users/userProvider.js","webpack://digilean/../common/components/deviation/deviationList/deviationListModalController.js","webpack://digilean/../common/components/deviation/deviationFilter/deviationFilter.js","webpack://digilean/../common/components/dashboard/designer/appstore/deviationactions/deviationActionListResult.js","webpack://digilean/../common/components/deviation/deviationActionList/deviationActionList.js","webpack://digilean/../common/shared/fileService.js","webpack://digilean/../common/shared/paging/pagerElement.js","webpack://digilean/../common/components/dashboard/designer/common/appHeaderTitle/appHeaderTitle.ts","webpack://digilean/../common/components/theme/themeSelector.ts","webpack://digilean/../common/components/monitoring/heartbeatIndicator.ts","webpack://digilean/../common/components/helpSearch/helpSearch.ts","webpack://digilean/../common/components/helpSearch/helpSearchService.js","webpack://digilean/../common/digileanSharedFiles.js","webpack://digilean/../common/shared/auth/authService.ts","webpack://digilean/../common/shared/auth/authInterceptorService.js","webpack://digilean/../common/shared/layout/clock/clock.js","webpack://digilean/../common/shared/layout/version/versionChecker.js","webpack://digilean/../common/shared/evaluationService.js","webpack://digilean/../common/components/admin/data/dropzoneLocal.js","webpack://digilean/../common/components/hours/hoursService.js","webpack://digilean/../common/components/hours/invoiceReport/invoiceReport.js","webpack://digilean/../common/components/hours/hoursRegistration.js","webpack://digilean/../common/components/strategy/strategyGoalService.js","webpack://digilean/../common/components/strategy/strategyMap/strategyMap.js","webpack://digilean/../common/components/strategy/strategyMap/strategyMapChart/strategyMapChart.js","webpack://digilean/../common/components/strategy/strategyMap/cards/strategyCardPopup.js","webpack://digilean/../common/components/strategy/strategyKPI/strategyBowlerChartController.js","webpack://digilean/../common/components/strategy/goalDetailsController.js","webpack://digilean/../common/components/strategy/goalCreate/goalCreate.js","webpack://digilean/../common/components/strategy/goalEdit/goalEdit.js","webpack://digilean/../common/components/strategy/goalKanban/goalKanban.js","webpack://digilean/../common/components/strategy/teamGoalsTable/goalKpiTable/goalKpiTable.js","webpack://digilean/../common/components/strategy/strategyboard/strategyBoard.js","webpack://digilean/../common/components/strategy/strategyTaskList/strategyTaskListResult.js","webpack://digilean/../common/components/A3/a3ActionList/a3ActionList.js","webpack://digilean/../common/components/A3/a3ActionList/a3SmartActionList.js","webpack://digilean/../common/components/A3/comments/a3Comments.js","webpack://digilean/../common/components/A3/a3Table/a3TableService.js","webpack://digilean/../common/components/A3/a3Table/a3Table.js","webpack://digilean/../common/components/A3/a3Table/taskList/a3TaskListModalController.js","webpack://digilean/../common/components/A3/a3Table/templates/a3EndDateCell/a3EndDateCell.js","webpack://digilean/../common/components/A3/a3Table/templates/a3ParticipantsCell/a3ParticipantModalController.js","webpack://digilean/../common/components/A3/preview/a3info/a3infoController.js","webpack://digilean/../common/components/A3/preview/cost/costInfoController.js","webpack://digilean/../common/components/A3/preview/a3stepActionPlan/a3stepActionPlanController.js","webpack://digilean/../common/components/A3/templates/layout/a3info/a3infoTemplateController.js","webpack://digilean/../common/components/A3/templates/layout/cost/costInfoTemplateController.js","webpack://digilean/../common/components/A3/templates/layout/a3step/a3stepTemplateController.js","webpack://digilean/../common/components/A3/templates/layout/a3stepActionPlan/a3stepActionPlanTemplateController.js","webpack://digilean/../common/components/A3/templates/store/a3templateStore.js","webpack://digilean/../common/components/A3/reports/monthlyrealized/initiativesmonthlyrealized.js","webpack://digilean/../common/components/A3/reports/aggregatedrealized/initiativesaggregatedrealized.js","webpack://digilean/../common/components/actionlist/a3tasks/actionlistA3tasks.js","webpack://digilean/../common/components/actionlist/actionlist.js","webpack://digilean/../common/components/actionlist/boards/actionlistBoards.js","webpack://digilean/../common/components/actionlist/boardtasks/actionlistBoardtasks.js","webpack://digilean/../common/components/actionlist/deviationtasks/actionlistDeviationtasks.js","webpack://digilean/../common/components/actionlist/improvementtasks/actionlistImprovementtasks.js","webpack://digilean/../common/components/board/template/newFlexiboardTemplateController.js","webpack://digilean/../common/components/dashboard/greencross/colorlabelConfigurationController.js","webpack://digilean/../common/components/dashboard/designer/appstore/greencross/greencrossStatusModalController.js","webpack://digilean/../common/components/dashboard/designer/appstore/dailyKPI/daily-kpi-date.js","webpack://digilean/../common/components/dashboard/designer/appstore/livetrend/livetrendController.js","webpack://digilean/../common/components/dashboard/designer/appstore/multichart/multichartcontroller.js","webpack://digilean/../common/components/dashboard/designer/appstore/targetgraph/targetgraph.js","webpack://digilean/../common/components/dashboard/designer/appstore/trendbarchart/trendbarchart.js","webpack://digilean/../common/components/dashboard/designer/appstore/minmaxchart/minmaxchart.js","webpack://digilean/../common/components/dashboard/designer/appstore/stackedHorizontalBarChart/stackedHorizontalBarChart.js","webpack://digilean/../common/components/dashboard/designer/appstore/splitPackedBubbleChart/splitPackedBubbleChart.js","webpack://digilean/../common/components/dashboard/designer/appstore/pareto/paretochart.js","webpack://digilean/../common/components/dashboard/designer/appstore/piechart/piechartcontroller.js","webpack://digilean/../common/components/dashboard/designer/appstore/strategyMapChartApp/strategyMapChartAppController.js","webpack://digilean/../common/components/dashboard/radarchart/radarchart.js","webpack://digilean/../common/components/dashboard/designer/appstore/registration/registration.js","webpack://digilean/../common/components/dashboard/designer/appstore/register/registerController.js","webpack://digilean/../common/components/dashboard/designer/appstore/singlevalue/singlevalueController.js","webpack://digilean/../common/components/dashboard/designer/appstore/singlevalueregistration/singlevalueregistrationController.js","webpack://digilean/../common/components/dashboard/designer/appstore/singlevaluetarget/singlevaluetarget.js","webpack://digilean/../common/components/dashboard/designer/appstore/teamtasks/teamtasks.js","webpack://digilean/../common/components/dashboard/designer/appstore/timeboard/timeboard.js","webpack://digilean/../common/components/dashboard/designer/appstore/projectboard/projectboardApp.js","webpack://digilean/../common/components/dashboard/designer/appstore/performanceboard/performanceboard.js","webpack://digilean/../common/components/dashboard/designer/appstore/performanceboard/configuration/performanceboardConfig.js","webpack://digilean/../common/components/dashboard/designer/appstore/smarttable/smarttableApp.js","webpack://digilean/../common/components/dashboard/designer/appstore/kanbanboard/kanbanBoard.js","webpack://digilean/../common/components/dashboard/designer/appstore/weeklyboard/weeklyboard.js","webpack://digilean/../common/components/dashboard/designer/appstore/weeklyboard/weekSelector.js","webpack://digilean/../common/components/dashboard/designer/appstore/texteditor/texteditorController.js","webpack://digilean/../common/components/dashboard/designer/appstore/usersonline/usersonlineController.js","webpack://digilean/../common/components/dashboard/designer/appstore/datasourceValuesList/datasourceValuesList.js","webpack://digilean/../common/components/dashboard/designer/appstore/smileyApp/smileyApp.js","webpack://digilean/../common/components/improvement/wheelImprovement/wheelImprovementController.js","webpack://digilean/../common/components/improvement/improvementstatus.js","webpack://digilean/../common/components/learning/learningController.js","webpack://digilean/../common/components/learning/learningService.js","webpack://digilean/../common/components/learning/learningPublicService.js","webpack://digilean/../common/components/learning/pdf/learningPagePdfExport.js","webpack://digilean/../common/components/learning/comments/learningPageComments.js","webpack://digilean/../common/shared/layout/navnewtask/navnewtask.js","webpack://digilean/../common/shared/layout/navnewbubble/navnewbubble.js","webpack://digilean/../common/shared/layout/favorites/favoritesController.js","webpack://digilean/../common/shared/comments/topLevelComment.js","webpack://digilean/../common/shared/comments/replyableComment.js","webpack://digilean/../common/shared/comments/commentEditor.ts","webpack://digilean/../common/shared/messages/replyableMessage.js","webpack://digilean/../common/shared/messages/messageRepliesDialog.js","webpack://digilean/../common/shared/editors/froalaDiagram.js","webpack://digilean/../common/shared/editors/froalaEditor.ts","webpack://digilean/../common/animations/heart/heartAnimation.ts","webpack://digilean/../common/services/admin/connectorAdminService.ts","webpack://digilean/../common/shared/logs/logMessageViewer.js","webpack://digilean/../common/services/eventService.ts","webpack://digilean/./src/app/mainController.js","webpack://digilean/../common/services/systemHubEvents.ts","webpack://digilean/./src/app/navigationController.js","webpack://digilean/../common/components/A3/templates/a3templateService.js","webpack://digilean/../common/services/user/userPreferenceService.ts","webpack://digilean/../common/components/A3/a3Controller.js","webpack://digilean/../common/components/A3/designer/a3designerController.js","webpack://digilean/../common/components/A3/newA3/newA3ModalController.ts","webpack://digilean/../common/components/A3/a3wizardController.js","webpack://digilean/../common/components/A3/preview/a3previewController.js","webpack://digilean/../common/components/A3/templates/a3templatesController.js","webpack://digilean/../common/components/A3/templates/layout/a3templateLayoutController.js","webpack://digilean/../common/components/A3/reports/benefitsRealizationController.js","webpack://digilean/../common/components/A3/reports/timeBenefitsRealizationController.js","webpack://digilean/../common/components/actionlist/actionlistService.js","webpack://digilean/../common/components/admin/area/area.js","webpack://digilean/../common/components/admin/apiclients/apiClients.ts","webpack://digilean/../common/components/admin/apiclients/newApiClientController.js","webpack://digilean/../common/components/admin/apiclients/editApiClientController.ts","webpack://digilean/../common/components/admin/assets/assetsHelper.ts","webpack://digilean/../common/components/admin/contactlist/contactlist.js","webpack://digilean/../common/components/admin/assets/assetscontroller.ts","webpack://digilean/../common/components/admin/assets/assetEdit.ts","webpack://digilean/../common/components/admin/organization/organizationAdminController.js","webpack://digilean/../common/components/admin/organization/organizationSettings.js","webpack://digilean/../common/components/admin/organization/accountSetup/accountSetupController.js","webpack://digilean/../common/components/admin/organization/messagecenter/mailsender.js","webpack://digilean/../common/components/admin/organization/messagecenter/messageSender.js","webpack://digilean/../common/components/admin/organization/messagecenter/pushNotificationSender.js","webpack://digilean/../common/components/admin/improvement/improvementAdminController.js","webpack://digilean/../common/components/admin/a3/a3AdminController.js","webpack://digilean/../common/components/admin/changepassword/changePasswordModalController.js","webpack://digilean/../common/components/admin/customers/deployCustomerDialogController.ts","webpack://digilean/../common/services/customers/infrastructureService.ts","webpack://digilean/../common/services/customers/customerAdminService.ts","webpack://digilean/../common/components/admin/customers/disableCustomerDialogController.ts","webpack://digilean/../common/components/admin/customers/supportUserDialogController.js","webpack://digilean/../common/components/admin/customers/customerOrderDialogController.js","webpack://digilean/../common/components/admin/customers/allowedModulesDialogController.js","webpack://digilean/../common/components/admin/customers/customersController.js","webpack://digilean/../common/components/admin/customers/payingCustomersController.js","webpack://digilean/../common/components/admin/customers/invoicing.js","webpack://digilean/../common/components/admin/customers/invoices.js","webpack://digilean/../common/components/admin/integrations/connectors/newConnectorController.js","webpack://digilean/../common/components/admin/data/lists/datalistController.js","webpack://digilean/../common/components/admin/data/lists/datalistsController.js","webpack://digilean/../common/components/admin/data/dataAdminController.js","webpack://digilean/../common/components/admin/data/dataSourceController.js","webpack://digilean/../common/components/admin/data/manualKpiIdentifier/manualKpiIdentifierAdminController.js","webpack://digilean/../common/components/admin/data/manualKpiIdentifier/dataVisualizationTypeController.js","webpack://digilean/../common/components/admin/deviations/editDeviationTypePermission/editDeviationTypePermissionController.js","webpack://digilean/../common/components/admin/deviations/deviationTypeAdminController.js","webpack://digilean/../common/components/admin/deviations/deviationTypeConsequences/deviationTypeConsequences.js","webpack://digilean/../common/components/admin/deviations/categoryAdminController.js","webpack://digilean/../common/components/admin/deviations/causeAdminController.js","webpack://digilean/../common/components/admin/deviations/consequenceAdminController.js","webpack://digilean/../common/components/admin/learning/editLearningMaterial/editLearningMaterialController.js","webpack://digilean/../common/components/admin/learning/designer/sections/imageSection.js","webpack://digilean/../common/components/admin/learning/designer/sections/diagramSection.ts","webpack://digilean/../common/components/admin/data/lists/customerAdminController.js","webpack://digilean/../common/components/admin/projects/projectRoleAdminController.js","webpack://digilean/../common/components/admin/projects/projectPortfolioAdminController.js","webpack://digilean/../common/components/admin/organization/signupService.js","webpack://digilean/../common/components/admin/users/userAccessController.js","webpack://digilean/../common/components/admin/users/userscontroller.ts","webpack://digilean/../common/services/user/userAdminService.ts","webpack://digilean/../common/components/admin/users/userEdit.ts","webpack://digilean/../common/components/admin/users/userListResult.ts","webpack://digilean/../common/components/dashboard/designer/appstore/actionList/actionListNewTaskController.js","webpack://digilean/../common/components/dashboard/designer/appstore/actionList/actionListEditTaskController.js","webpack://digilean/../common/components/board/newBoard/boardtypes/dashboard/dashboardPreview.js","webpack://digilean/../common/components/board/boardActionController.js","webpack://digilean/../common/components/admin/boards/flexiboardAdminController.js","webpack://digilean/../common/components/admin/boards/flexiboardTemplateAdmin.js","webpack://digilean/../common/components/common/members/membersSelector.js","webpack://digilean/../common/components/common/access/boardAccessChecker.js","webpack://digilean/../common/components/dashboard/activitycount/activitycountController.js","webpack://digilean/../common/components/dashboard/customermonitoring/customerMonitoringController.js","webpack://digilean/../common/components/dashboard/customermonitoring/notifications/notificationsOverview.js","webpack://digilean/../common/components/dashboard/customermonitoring/licenses/licensesChanges.js","webpack://digilean/../common/components/dashboard/dailyfeed/dailyfeedController.js","webpack://digilean/../common/components/dashboard/dailyfeed/dailyfeedActivitySelector.js","webpack://digilean/../common/components/dashboard/designer/dashboardDesignerController.js","webpack://digilean/../common/components/dashboard/designer/appstore/myA3s/myA3sController.js","webpack://digilean/../common/components/dashboard/systemactivity/systemactivityfeedController.js","webpack://digilean/../common/components/deviation/deviationSearchList/deviationListFilter.js","webpack://digilean/../common/components/deviation/deviationSearchList/deviationListResult.js","webpack://digilean/../common/components/deviation/fullDeviation/fullDeviationController.js","webpack://digilean/../common/shared/settingsTranslatorDeviation.js","webpack://digilean/../common/components/deviation/ongoing/ongoingDeviation.js","webpack://digilean/../common/components/deviation/ongoing/ongoingDeviationApp.js","webpack://digilean/../common/components/deviation/newDeviationController.js","webpack://digilean/../common/components/deviation/deviationService.js","webpack://digilean/../common/components/deviation/qualityService.js","webpack://digilean/../common/components/deviation/projectStatus/deviationProjectStatusPdfButton/deviationProjectStatusPdfButton.js","webpack://digilean/../common/components/deviation/projectStatus/stackedDeviationHorizontalBarChart/stackedDeviationHorizontalBarChart.js","webpack://digilean/../common/components/login/forgotPassword/forgotPasswordModalController.js","webpack://digilean/../common/components/profile/myprofileController.js","webpack://digilean/../common/components/profile/notifications/myNotifications.js","webpack://digilean/../common/components/profile/notifications/myMessageNotifications.js","webpack://digilean/../common/components/profile/profileSettings/profileSettingsController.js","webpack://digilean/../common/components/profile/profileSettings/profileInfoSettings.js","webpack://digilean/../common/components/profile/myprofilephotoController.js","webpack://digilean/../common/components/profile/profileImage.js","webpack://digilean/../common/components/profile/inbox/inboxController.js","webpack://digilean/../common/components/profile/inbox/inboxNotifications.js","webpack://digilean/../common/components/profile/inbox/notificationMessages/taskComment/taskCommentMessage.js","webpack://digilean/../common/components/profile/inbox/notificationMessages/deviationComment/deviationCommentMessage.js","webpack://digilean/../common/components/profile/inbox/notificationMessages/improvementComment/improvementCommentMessage.js","webpack://digilean/../common/components/profile/inbox/notificationMessages/pageCommentAdded/pageCommentAddedMessage.js","webpack://digilean/../common/components/profile/inbox/notificationMessages/licensesChanged/licensesChangedMessage.js","webpack://digilean/../common/components/dashboard/mydigiLeanfeedback/mydigileanfeedback.js","webpack://digilean/../common/components/formatters/quartzCronDisplayer.ts","webpack://digilean/../common/components/diagram/DigileanDiagramEditor.ts","webpack://digilean/../common/components/diagram/DigileanDiagram.ts","webpack://digilean/../common/components/diagram/DigileanDiagramApp.ts","webpack://digilean/../common/components/diagram/DiagramEditorFullscreen.ts","webpack://digilean/../common/components/diagram/DiagramTemplateSelector.ts","webpack://digilean/../common/components/admin/integrations/integrationsAdmin.ts","webpack://digilean/../common/components/admin/integrations/connectors/connectorAdmin.ts","webpack://digilean/../common/components/admin/integrations/jobs/newJobController.js","webpack://digilean/../common/components/admin/integrations/jobs/jobScheduleDialog.ts","webpack://digilean/../common/components/admin/integrations/jobs/jobAdmin.ts","webpack://digilean/../common/components/admin/integrations/jobs/editJobpartDialog.ts","webpack://digilean/../common/components/monitoring/JobRunStateViewer.ts","webpack://digilean/../common/components/monitoring/JobRunTimeViewer.ts","webpack://digilean/../common/components/monitoring/ConnectorStateViewer.ts","webpack://digilean/../common/services/data/monitoringService.ts","webpack://digilean/../common/components/monitoring/integrations/integrationsMonitor.ts","webpack://digilean/../common/components/monitoring/integrations/connectorMonitor.ts","webpack://digilean/../common/components/monitoring/integrations/jobLogs.ts","webpack://digilean/../common/components/monitoring/integrations/LoggMessageViewer.ts","webpack://digilean/../common/components/monitoring/monitoringAll.ts","webpack://digilean/../common/components/users/userBadge.ts","webpack://digilean/../common/components/formatters/scalableText.ts","webpack://digilean/../common/components/dashboard/designer/appstore/greencross/kpiMonthSelector.ts","webpack://digilean/./src/app/users/userComponent.ts","webpack://digilean/../common/components/admin/integrations/jobs/jobPartsAdmin.ts","webpack://digilean/../common/components/monitoring/integrations/loggMonitor.ts","webpack://digilean/../common/components/monitoring/integrations/jobMonitor.ts","webpack://digilean/../common/components/monitoring/integrations/connectorMonitorTable.ts","webpack://digilean/../common/components/monitoring/integrations/monitorJobLog.ts","webpack://digilean/../common/services/user/userAzureAdService.ts","webpack://digilean/../common/components/users/UserAzureLookup.vue?8008","webpack://digilean/../common/components/users/UserAzureLookup.vue","webpack://digilean/../common/components/users/UserAzureLookup.vue?4ac5","webpack://digilean/../common/components/users/UserAzureLookup.vue?39b1","webpack://digilean/../common/components/users/GroupAzureLookup.vue?fc17","webpack://digilean/../common/components/users/GroupAzureLookup.vue","webpack://digilean/../common/components/users/GroupAzureLookup.vue?22ba","webpack://digilean/../common/components/users/GroupAzureLookup.vue?8f42","webpack://digilean/../common/services/strategy/strategyService.ts","webpack://digilean/../common/components/strategy/strategyKPI/strategyFlexibleBowlerChart.vue?b16c","webpack://digilean/../common/components/strategy/strategyKPI/strategyFlexibleBowlerChart.vue","webpack://digilean/../common/components/strategy/strategyKPI/strategyFlexibleBowlerChart.vue?6dba","webpack://digilean/../common/components/strategy/strategyKPI/strategyFlexibleBowlerChart.vue?15b5","webpack://digilean/./src/main.js"],"sourcesContent":["angular\n .module('DigiLean')\n .controller(\"a3StepDescriptionModalController\", ['$scope', '$uibModalInstance', 'translationId', function ($scope, $uibModalInstance, translationId) {\n\n $scope.translationId = translationId;\n\n $scope.close = function () {\n $uibModalInstance.dismiss('cancel');\n }\n }]);","angular\n .module('DigiLean')\n .controller(\"a3SelectorController\", ['$scope', '$state', '$uibModalInstance', '$filter', '$translate', '$rootScope', 'a3Service', 'NgTableParams', 'existing',\n function ($scope, $state, $uibModalInstance, $filter, $translate, $rootScope, a3Service, NgTableParams, existing) {\n\n $scope.existingA3s = existing;\n $scope.a3s = [];\n $scope.selectedA3 = {};\n a3Service().getA3s().then(function (a3s) {\n $scope.allA3s = a3s;\n $scope.a3s = a3s;\n if ($scope.existingA3s && $scope.existingA3s.length > 0) {\n for (var e = 0; e < $scope.existingA3s.length; e++) {\n var filtered = $scope.a3s.filter(function (value, index, arr) {\n return value.id !== $scope.existingA3s[e].id;\n });\n $scope.a3s = filtered;\n }\n }\n\n $scope.tableParams = new NgTableParams({\n }, \n {\n dataset: $scope.a3s\n });\n });\n\n\n\n $scope.ok = function (selected) {\n $uibModalInstance.close(selected);\n };\n\n $scope.close = function () {\n $uibModalInstance.dismiss('cancel');\n };\n $scope.newPieChart = {\n data: [0, 0, 0, 0],\n options: {\n radius: 18,\n fill: [\"#f3f3f4\"],\n }\n };\n $scope.planPieChart = {\n data: [1, 1, 1, 1],\n options: {\n radius: 18,\n fill: [\"#5cb85c\", \"#f3f3f4\", \"#f3f3f4\", \"#f3f3f4\"],\n }\n };\n $scope.doPieChart = {\n data: [1, 1, 1, 1],\n options: {\n radius: 18,\n fill: [\"#5cb85c\", \"#5cb85c\", \"#f3f3f4\", \"#f3f3f4\"],\n }\n };\n $scope.checkPieChart = {\n data: [1, 1, 1, 1],\n options: {\n radius: 18,\n fill: [\"#5cb85c\", \"#5cb85c\", \"#5cb85c\", \"#f3f3f4\"],\n }\n };\n $scope.actPieChart = {\n data: [1, 1, 1, 1],\n options: {\n radius: 18,\n fill: [\"#5cb85c\", \"#5cb85c\", \"#5cb85c\", \"#5cb85c\"]\n }\n };\n\n $scope.statusOptions = [\n {\n statusDB: \"New\",\n translated: $translate.instant('COMMON_NEW'),\n cssClass: \"new\",\n filteredAndInResultList: false,\n pie: $scope.newPieChart\n }, {\n statusDB: \"Plan\",\n translated: $translate.instant('A3_PLAN'),\n cssClass: \"plan\",\n filteredAndInResultList: false,\n pie: $scope.planPieChart\n }, {\n statusDB: \"Do\",\n translated: $translate.instant('COMMON_DO'),\n cssClass: \"do\",\n filteredAndInResultList: false,\n pie: $scope.doPieChart\n }, {\n statusDB: \"Check\",\n translated: $translate.instant('COMMON_CHECK'),\n cssClass: \"check\",\n filteredAndInResultList: false,\n pie: $scope.checkPieChart\n }, {\n statusDB: \"Act\",\n translated: $translate.instant('COMMON_ACT'),\n cssClass: \"act\",\n filteredAndInResultList: false,\n pie: $scope.actPieChart\n }, {\n statusDB: \"Closed\",\n translated: $translate.instant('DEVIATION_CLOSED'),\n filteredAndInResultList: false\n }\n ];\n }]);\n","angular\n .module('DigiLean')\n .directive(\"a3GoalCell\", ['$filter', '$translate','a3Service',\n function ($filter, $translate, a3Service) {\n return {\n templateUrl: 'a3GoalCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'editable': '=',\n 'id': '=',\n },\n link: function (scope, elem, attrs) {\n scope.goal = \"\";\n scope.active = false;\n scope.color = \"#676a6c\"; //\"#ffffff\";\n scope.background = \"inherit\";\n\n scope.$watch('model', function (model) {\n scope.goal = model.a3.goal;\n model.getSortValue = function() {\n return scope.goal;\n }\n });\n\n \n scope.subscribe(\"A3GoalChanged\", function (a3) {\n if (a3.a3Id == scope.model.a3.id) {\n if (a3.goal) {\n scope.goal = a3.goal;\n } else {\n scope.goal = \"\";\n }\n }\n });\n\n scope.setActive = function() {\n scope.active = true; \n setTimeout(function() {\n $(\".a3-goal\").focus();\n }, 50 ); \n }\n scope.goalChanged = function(goal) {\n scope.active = false; \n if(goal !== scope.goal){ \n var data = \n {\n a3Id : scope.model.a3.id,\n goal: goal\n };\n a3Service().updateA3Goal(data).then(function (result) { \n });\n \n }\n }\n }\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"a3LinkToPreviewCell\", ['$state',\n function ($state,) {\n return {\n templateUrl: 'a3LinkToPreviewCell.html',\n restrict: 'E',\n scope: {\n 'model': '='\n },\n link: function (scope, elem, attrs) {\n scope.a3Title = null;\n\n scope.$watch(\"model\", function (model) {\n if (scope.model && scope.model.a3) {\n if (scope.model.a3.title) {\n scope.a3Title = scope.model.a3.title;\n }\n }\n model.getSortValue = function () {\n return scope.a3Title;\n }\n });\n\n\n scope.goToA3 = function () {\n //TODO must get latest version when a3 version is supported. Currently there are just one versjon of an A3\n $state.go('a3PreviewDesigner', { id: scope.model.a3.id, version: 1}, { reload: false });\n \n }\n }\n }\n }]);","angular\n .module('DigiLean')\n .directive(\"a3OwnerCell\", ['$filter', '$translate', 'a3Service', 'taskDrawingService', 'projectService',\n function ($filter, $translate, a3Service, taskDrawingService, projectService) {\n return {\n templateUrl: 'a3OwnerCell.html',\n restrict: 'E',\n scope: { \n 'model': '=',\n 'editable': '=',\n 'users': '<'\n },\n link: function (scope, elem, attrs) {\n scope.displayName = \"\";\n scope.user = null;\n\n scope.subscribe(\"A3OwnerChanged\", function (a3) {\n if (a3.a3Id == scope.model.a3.id) {\n var matchingUser = $filter('filter')(scope.users, { userId: a3.ownerUserId }, true);\n if (matchingUser.length > 0) {\n scope.displayName = matchingUser[0].ownerDisplayName;\n scope.user = matchingUser[0];\n } else {\n scope.displayName = \"\";\n scope.user = null;\n }\n }\n });\n scope.$watch(\"users\", function (users) {\n if (!users) return;\n mapUser();\n });\n\n var mapUser = function() {\n if (scope.user === null && scope.model.a3.ownerUserId && scope.users) {\n var matchingUser = $filter('filter')(scope.users, { userId: scope.model.a3.ownerUserId }, true);\n if (matchingUser.length > 0) {\n scope.displayName = matchingUser[0].ownerDisplayName;\n scope.user = matchingUser[0];\n }\n }\n }\n\n scope.$watch(\"model\", function (model) {\n if (scope.model && scope.model.a3) {\n if (scope.model.a3.ownerUserId) {\n mapUser();\n }\n }\n model.getSortValue = function () {\n if (scope.user) {\n return scope.user.fullName;\n }\n return \"\";\n }\n });\n\n \n scope.clearSelectedUser = function () {\n var emptyUser = {\n userId : null,\n fullName: \"\",\n displayName: \"\"\n }\n scope.user = null;\n scope.selectUser(emptyUser);\n \n };\n scope.selectUser = function (user) {\n scope.user = user;\n scope.displayname = user.displayName;\n \n var a3Owner = \n {\n a3Id : scope.model.a3.id,\n ownerUserId : user.userId,\n fullName : user.fullName\n };\n a3Service().updateOwner(a3Owner).then(function (registeredowner) {\n });\n };\n }\n }\n }]);","angular\n .module('DigiLean')\n .directive(\"a3ParticipantsCell\", ['$filter', '$translate', '$uibModal', 'projectService',\n function ($filter, $translate, $uibModal, projectService) {\n return {\n templateUrl: 'a3ParticipantsCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'editable': '=',\n 'projectAttributeChangeHandler': '&',\n },\n link: function (scope, elem, attrs) {\n scope.participants = [];\n\n scope.$watch(\"model\", function (model) {\n if (scope.model && scope.model.project) {\n if (scope.model.project.id) {\n projectService().getUsers(scope.model.project.id).then(function (projectUsers) {\n if (projectUsers) {\n scope.participants = projectUsers;\n }\n });\n }\n }\n model.getSortValue = function () {\n\n return scope.participants.length;\n\n }\n });\n\n scope.subscribe(\"ProjectParticipantAdded\", function (projectuserinfo) {\n if (projectuserinfo.projectId == scope.model.project.id) {\n scope.participants.unshift(projectuserinfo);\n }\n });\n\n scope.subscribe(\"ProjectParticipantRemoved\", function (projectuserinfo) {\n if (projectuserinfo.projectId == scope.model.project.id) {\n var matchingUser = $filter('filter')(scope.participants, { userId: projectuserinfo.userId }, true);\n if (matchingUser.length > 0) {\n var index = scope.participants.indexOf(matchingUser[0]);\n if (index > -1) {\n scope.participants.splice(index, 1);\n }\n }\n }\n });\n\n scope.openParticipants = function () {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'projectParticipantModal.html',\n controller: 'projectParticipantModalController',\n resolve: {\n projectId: function () {\n return scope.model.project.id;\n }\n }\n });\n };\n }\n }\n }]);","angular\n .module('DigiLean')\n .directive(\"a3ProgressTasksCell\", ['$filter', '$translate','$uibModal','boardTaskService',\n function ($filter, $translate, $uibModal, boardTaskService) {\n return {\n templateUrl: 'a3ProgressTasksCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'editable': '=',\n 'cellChangeHandler': '&',\n },\n link: function (scope, elem, attrs) {\n \n\n scope.options = [\n { progress: 25, label: \"25 %\", color: \"#0099DE\"},\n { progress: 50, label: \"50 %\", color: \"#0099DE\"},\n { progress: 75, label: \"75 %\", color: \"#0099DE\"},\n { progress: 100, label: \"100 %\", color: \"#8CC152\"},\n ]\n\n scope.customOption = {\n progress: 0,\n label: \"0 %\",\n color: \"0099DE\"\n };\n\n\n var a3Id = null;\n\n scope.$watch(\"model\", function (model) {\n if (scope.model && scope.model.a3) {\n if (scope.model.a3.id) {\n a3Id = scope.model.a3.id;\n calculateProgress();\n }\n }\n model.getSortValue = function() {\n return scope.progress;\n }\n });\n\n \n scope.subscribe('TaskStatusUpdated', function (updatedstatus) {\n calculateProgress(); \n });\n\n scope.subscribe('TaskDeleted', function (id) {\n calculateProgress();\n });\n scope.subscribe('NewTask', function (task) {\n calculateProgress();\n }); \n\n function calculateProgress(){\n boardTaskService().getNoA3TaskPerStatus(a3Id).then(function (statusdata) {\n //scope.openTasks = statusdata.blank;\n scope.taskCompletedCount = statusdata.ok;\n //scope.noBlockedTasks = statusdata.unacceptable;\n scope.taskCount = statusdata.blank + statusdata.ok + statusdata.unacceptable;\n var progress = 0;\n if(scope.taskCount > 0){\n progress = Math.round(100 * statusdata.ok/scope.taskCount);\n }\n var progressOptions = {\n progress: progress,\n label: progress + \" %\",\n color: \"0099DE\"\n };\n scope.setProgress(progressOptions);\n });\n\n }\n \n scope.openTasks = function () {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n templateUrl: 'a3TaskListForm.html',\n controller: 'a3TaskListModalController',\n windowClass: 'fullDeviation-modal-window',\n resolve: {\n a3Id: function () {\n return a3Id;\n }\n }\n });\n };\n \n scope.setProgress = function(option) {\n scope.progress = option.progress;\n scope.customOption.progress = option.progress;\n scope.color = option.color;\n if (scope.progress == 100) { // Green color if 100\n scope.color = \"#8CC152\";\n }\n }\n }\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"a3StatusCell\", ['$filter', '$translate', 'a3Service',\n function ($filter, $translate, a3Service) {\n return {\n templateUrl: 'a3StatusCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'editable': '=',\n },\n link: function (scope, elem, attrs) {\n \n \n scope.statusOptions = a3Service().getStatus();\n\n scope.$watch('model', function (model) {\n scope.selectedStatusOption = $filter('filter')(scope.statusOptions, { statusDB: model.a3.status }, true)[0];\n \n model.getSortValue = function() {\n return scope.selectedStatusOption.sortorder;\n }\n \n });\n\n scope.subscribe(\"A3StatusChanged\", function (status) {\n if (status.a3Id == scope.model.a3.id) {\n if (status.status) {\n scope.selectedStatusOption = $filter('filter')(scope.statusOptions, { statusDB: status.status }, true)[0]; \n \n }\n }\n });\n\n scope.autofocus = function(){\n setTimeout(function() {\n //document.querySelector( \"input\" ).focus();\n $(\".project-status-cell\").focus();\n }, 50 );\n }\n\n scope.statusChanged = function(status) { \n if(scope.selectedStatusOption && status === scope.selectedStatusOption.statusDB){\n return; \n }\n a3Service().updateA3Status(scope.model.a3.id, status).then(function (result) { \n });\n }\n\n }\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"a3TasksCell\", ['$filter', '$translate', '$uibModal', 'boardTaskService',\n function ($filter, $translate, $uibModal, boardTaskService) {\n return {\n templateUrl: 'a3TasksCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'editable': '=',\n 'changeHandler': '&',\n },\n link: function (scope, elem, attrs) {\n scope.taskCount = 0;\n scope.taskCompletedCount = 0;\n var a3Id = null;\n\n scope.$watch(\"model\", function (model) {\n if (scope.model && scope.model.a3) {\n if (scope.model.a3.id) {\n a3Id = scope.model.a3.id;\n refresh();\n }\n }\n model.getSortValue = function() {\n return scope.taskCount;\n }\n });\n\n function refresh(){\n boardTaskService().getNoA3TaskPerStatus(a3Id).then(function (statusdata) {\n scope.taskCompletedCount = statusdata.ok;\n scope.taskCount = statusdata.blank + statusdata.ok + statusdata.unacceptable;\n });\n }\n\n scope.subscribe('TaskStatusUpdated', function (statustask) {\n refresh();\n \n });\n\n scope.subscribe('TaskDeleted', function (id) {\n refresh();\n });\n scope.subscribe('NewTask', function (task) {\n refresh();\n });\n \n \n scope.openTasks = function () {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n templateUrl: 'a3TaskListForm.html',\n controller: 'a3TaskListModalController',\n windowClass: 'fullDeviation-modal-window',\n resolve: {\n a3Id: function () {\n return a3Id;\n }\n }\n });\n };\n } \n }\n }]);\n\n\n ","angular\n .module('DigiLean')\n .directive(\"a3TitleCell\", ['$filter', '$translate','a3Service',\n function ($filter, $translate, a3Service) {\n return {\n templateUrl: 'a3TitleCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'editable': '=',\n 'id': '=',\n },\n link: function (scope, elem, attrs) {\n scope.title = \"\";\n scope.active = false;\n\n scope.$watch('model', function (model) {\n scope.title = model.a3.title;\n model.getSortValue = function() {\n return scope.title;\n }\n });\n\n scope.subscribe(\"A3TitleChanged\", function (a3) {\n if (a3.a3Id == scope.model.a3.id) {\n if (a3.title) {\n scope.title = a3.title;\n } else {\n scope.title = \"\";\n }\n }\n });\n\n scope.setActive = function() {\n scope.active = true; \n setTimeout(function() {\n $(\".project-name\").focus();\n }, 50 ); \n }\n scope.titleChanged = function(title) {\n scope.active = false; \n if (!title) return;\n if(title !== scope.title){\n var data = \n {\n a3Id : scope.model.a3.id,\n title: title\n };\n a3Service().updateA3Title(data).then(function (result) { \n });\n }\n\n }\n }\n }\n }]);\n","var DigiLean = angular.module('DigiLean');\nDigiLean.directive(\"a3milestones\", ['$filter', '$translate', 'a3Service',\n function ($filter, $translate, a3Service) {\n return {\n templateUrl: 'a3milestones.html',\n restrict: 'E',\n scope: {\n 'a3ProjectId': '=',\n 'canEdit': '=',\n 'readonly': '@'\n },\n link: function (scope, element, attrs) {\n\n scope.milestones = [];\n \n\n scope.$watch(\"a3ProjectId\", function () {\n if (!scope.a3ProjectId) return;\n // get milestones\n a3Service().getMilestonesForA3Project(scope.a3ProjectId).then(function (milestones) {\n angular.forEach(milestones, function(milestone){\n milestone.plannedDate = moment(milestone.plannedDate).toDate();\n milestone.actualDate = moment(milestone.actualDate).toDate();\n milestone.datePicker = {\n opened: false\n },\n milestone.endDatePicker = {\n opened: false\n }\n })\n scope.milestones = milestones;\n });\n });\n \n\n scope.add = function () {\n var milestone = {\n name: $translate.instant('PROJECT_MILESTONE'),\n a3ProjectId: scope.a3ProjectId,\n plannedDate: moment().toDate(),\n completedDate: null,\n datePicker : {\n opened: false\n },\n endDatePicker : {\n opened: false\n }\n };\n a3Service().createA3Milestone(milestone).then(function (milestone) {\n milestone.datePicker = {\n opened: false\n },\n milestone.endDatePicker = {\n opened: false\n }\n scope.milestones.push(milestone);\n });\n }\n\n scope.delete = function (milestone) {\n a3Service().deleteA3Milestone(milestone.id).then(function () {\n var index = scope.milestones.indexOf(milestone);\n scope.milestones.splice(index, 1); \n });\n \n }\n\n scope.milestoneChanged = function (milestone) {\n a3Service().updateA3Milestone(milestone)\n }\n\n scope.milestonePlannedDateChanged = function(milestone, $event) {\n const date = $event.originalEvent.detail\n milestone.plannedDate = date\n scope.milestoneChanged(milestone)\n }\n scope.milestoneActualDateChanged = function(milestone, event) {\n const date = event.originalEvent.detail\n milestone.actualDate = date\n scope.milestoneChanged(milestone)\n }\n }\n }\n }])\n","\nangular\n .module('DigiLean')\n .directive(\"a3Card\", ['a3Service',\n function ( a3Service) {\n return {\n templateUrl: 'a3Card.html',\n restrict: 'E',\n scope: {\n \"a3\" : \"<\",\n },\n link: function (scope) {\n scope.title = \"\"\n scope.goal = \"\"\n scope.isLoading = true\n \n scope.$watch('a3', function (a3) {\n if (!a3) return\n a3Service().getPreviewImageUrl(a3.id).then(function(url){\n scope.previewUrl = url\n })\n \n if (a3.title)\n scope.title = a3.title\n a3Service().get(a3.id).then(function(model){\n scope.title = model.title\n scope.goal = model.goal\n scope.isLoading = false\n })\n })\n }\n }\n }])\n ","angular\n .module('DigiLean').directive(\"a3Links\", ['a3Service','$filter',\n function (a3Service, $filter) {\n return {\n templateUrl: 'a3Links.html',\n restrict: 'E',\n scope: {\n 'a3Id': '<',\n 'isEditMode': '<',\n 'linkCountChangeHandler': '&',\n },\n link: function (scope, elem, attrs) {\n //scope.uploadedFiles = [];\n //scope.files = [];\n scope.isLoading = true;\n scope.toogleEditModeOn = true;\n if(scope.isEditMode){\n scope.toogleEditModeOn = false;\n }\n\n scope.title = \"\";\n scope.url = \"\";\n\n scope.$watch(\"a3Id\", function (a3Id) {\n if (!a3Id) return;\n a3Service().getLinks(a3Id).then(function(links) {\n scope.links = links;\n scope.isLoading = false;\n scope.linkCountChangeHandler({ linkCount: scope.links.length })\n });\n });\n\n scope.subscribe('A3LinkAdded', function (link) {\n if (link.a3Id === scope.a3Id) {\n link.cssState = \"slideInDown\";\n scope.links.push(link);\n scope.linkCountChangeHandler({ linkCount: scope.links.length })\n }\n });\n\n scope.subscribe('A3LinkDeleted', function (link) {\n if (link.a3Id === scope.a3Id) {\n var isPartOf = $filter('filter')(scope.links, { id: link.id }, true);\n if (isPartOf.length > 0) {\n link.cssState = \"slideOutDown\";\n var i = scope.links.indexOf(isPartOf[0]);\n scope.links.splice(i, 1);\n scope.linkCountChangeHandler({ linkCount: scope.links.length })\n }\n }\n });\n\n scope.deleteLink = function (link) {\n //var i = scope.links.indexOf(link);\n //scope.links.splice(i, 1);\n a3Service().deleteLink(scope.a3Id, link.id).then(function() {\n\n });\n }\n\n function isValid(){\n scope.notValidTitle = false;\n scope.notValidUrl = false;\n if(scope.title == \"\"){\n scope.notValidTitle = true;\n }\n if(scope.url == \"\"){\n scope.notValidUrl = true;\n }\n\n if(scope.notValidTitle || scope.notValidUrl){\n return false;\n } else return true;\n }\n\n scope.addLink = function () {\n if(isValid()){\n var link = {\n title:scope.title,\n url : scope.url\n }\n a3Service().addLink(scope.a3Id, link).then(function(stored) {\n scope.isEditMode = false;\n scope.title = \"\";\n scope.url = \"\";\n //scope.links.push(stored);\n });\n }\n };\n scope.toggleEditMode = function () {\n scope.isEditMode = !scope.isEditMode ;\n };\n\n }\n\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"a3step\", ['a3Service', 'debounce',\n function ( a3Service, debounce) {\n return {\n templateUrl: 'a3step.html',\n restrict: 'E',\n scope: {\n 'header': '@',\n 'component': '@',\n 'model': '=',\n 'isAdminMode': '=',\n },\n link: function (scope) {\n \n scope.$watch('model', function () {\n var model = scope.model;\n scope.stepContent = scope.model.content;\n if (model.style && typeof (model.style) === \"string\") {\n model.style = JSON.parse(model.style);\n }\n\n });\n\n scope.froalaInit = false;\n\n \n\n scope.commitChanges = function (id, content) {\n var stepContent = {\n id: id,\n content: content\n };\n a3Service().saveStep(stepContent).then(function (step) {\n // Synk version step\n });\n };\n\n // Debounce function so that save is called to often.\n scope.commitChangesDebounced = debounce(scope.commitChanges, 2000, false);\n scope.contentChanged = function(val) {\n if (!scope.froalaInit) {\n scope.froalaInit = true;\n return;\n }\n scope.model.content = val;\n scope.commitChangesDebounced(scope.model.id, val);\n };\n scope.froalaOptions = {\n toolbarButtons: ['bold', 'italic', 'underline', '|', 'fontFamily', 'fontSize', 'color',\n 'inlineStyle', 'paragraphStyle', '|', 'paragraphFormat', 'align', 'formatOL', 'formatUL', 'outdent', 'indent', 'insertLink',\n 'insertImage', 'insertVideo', 'insertTable', 'insertDiagram', '|', 'insertHR', 'clearFormatting',\n '|', 'help', '|', 'undo', 'redo'],\n imageEditButtons: ['editDiagram', 'imageReplace', 'imageAlign', 'imageCaption', 'imageRemove']\n };\n }\n };\n }]);\n","var DigiLean = angular.module('DigiLean');\nDigiLean.controller('a3reportsController', ['$scope', '$filter', '$translate', 'NgTableParams', 'a3Service',\n function ($scope, $filter, $translate, NgTableParams, a3Service) {\n $scope.name = 'World';\n $scope.newPieChart = {\n data: [0, 0, 0, 0],\n options: {\n radius: 18,\n fill: [\"#f3f3f4\"],\n }\n };\n $scope.planPieChart = {\n data: [1, 1, 1, 1],\n options: {\n radius: 18,\n fill: [\"#23c6c8\", \"#f3f3f4\", \"#f3f3f4\", \"#f3f3f4\"],\n }\n };\n $scope.doPieChart = {\n data: [1, 1, 1, 1],\n options: {\n radius: 18,\n fill: [\"#23c6c8\", \"#23c6c8\", \"#f3f3f4\", \"#f3f3f4\"],\n }\n };\n $scope.checkPieChart = {\n data: [1, 1, 1, 1],\n options: {\n radius: 18,\n fill: [\"#23c6c8\", \"#23c6c8\", \"#23c6c8\", \"#f3f3f4\"]\n }\n };\n $scope.actPieChart = {\n data: [1, 1, 1, 1],\n options: {\n radius: 18,\n fill: [\"#23c6c8\", \"#23c6c8\", \"#23c6c8\", \"#23c6c8\"]\n }\n };\n\n a3Service().getProjectInfoForA3s().then(function (a3s) {\n angular.forEach(a3s, function (a3) {\n a3.statusorder = getStatusOrder(a3.status);\n checkMilestones(a3);\n calculateRealization(a3);\n })\n $scope.tableParams = new NgTableParams({}, { dataset: a3s });\n });\n\n function calculateRealization(a3) {\n if (a3.estimatedSavings && a3.estimatedTotalCost) {\n a3.estimated = a3.estimatedSavings - a3.estimatedTotalCost;\n }\n if (a3.actualSavings && a3.actualTotalCost) {\n a3.realized = a3.actualSavings - a3.actualTotalCost;\n }\n }\n\n function checkMilestones(a3) {\n if (a3.milestones && a3.milestones.length > 0) {\n a3.milestoneMissed = false;\n for (var i = 0; i < a3.milestones.length; i++) {\n if (a3.milestones[i].actualDate) {\n a3.milestones[i].status = \"completed\";\n } else if (a3.milestones[i].plannedDate) {\n //check if overdue/missed\n var duration = moment.duration(moment().diff(moment(a3.milestones[i].plannedDate)));\n var days = duration.asDays();\n if (days > 1) {\n a3.milestones[i].status = \"missed\";\n a3.milestoneMissed = true;\n } else {\n a3.milestones[i].status = \"future\";\n }\n }\n }\n }\n }\n\n $translate(['COMMON_TITLE', 'COMMON_STATUS']).then(function (translations) {\n $scope.translatedTitle = translations.COMMON_TITLE;\n $scope.translatedStatus = translations.COMMON_STATUS;\n });\n $scope.$on('$translateChangeSuccess', function () {\n $scope.translatedTitle = $translate.instant('COMMON_TITLE');\n $scope.translatedStatus = $translate.instant('COMMON_STATUS');\n });\n $scope.translatedTitel = [\n { id: \"text\", label: \"Small text\", languageCode: \"ADMIN_DATA_DATASOURCE_SMALLTEXT\" },\n { id: \"description\", label: \"Larger text\", languageCode: \"ADMIN_DATA_DATASOURCE_LARGERTEXT\", sourceColumn: \"description\" },\n { id: \"number\", label: \"Number\", languageCode: \"ADMIN_DATA_DATASOURCE_NUMBER\" },\n { id: \"bool\", label: \"Boolean\", languageCode: \"ADMIN_DATA_DATASOURCE_BOOLEAN\" },\n { id: \"asset\", label: \"Asset\", languageCode: \"COMMON_ASSET\", sourceColumn: \"assetId\" },\n { id: \"area\", label: \"Area\", languageCode: \"COMMON_AREA\", sourceColumn: \"areaId\" },\n { id: \"project\", label: \"Project\", languageCode: \"COMMON_PROJECT\", sourceColumn: \"projectId\" },\n ];\n\n $scope.toggleShowMilestone = function (a3) {\n a3.showMilestone = !a3.showMilestone;\n };\n\n function getStatusOrder(dbstatus) {\n switch (dbstatus) {\n case \"New\":\n return 1;\n case \"Plan\":\n return 2;\n case \"Do\":\n return 3;\n case \"Check\":\n return 4;\n case \"Act\":\n return 5;\n case \"Closed\":\n return 6;\n default:\n return 0;\n }\n }\n\n //$scope.tableParams = new NgTableParams({}, { dataset: a3}); \n\n }]);\n\n","angular\n .module('DigiLean')\n .directive(\"initiativesaggregatedtimerealized\", ['$filter', '$translate', 'suggestionService', 'authService', 'layoutService',\n function ($filter, $translate, suggestionService, authService, layoutService) {\n return {\n templateUrl: 'initiativesaggregatedtimerealized.html',\n restrict: 'E',\n scope: {\n 'header': '@',\n 'component': '@'\n },\n link: function (scope, elem, attrs) {\n\n var statusAggregated = \"\";\n var realized = \"\";\n var estimated = \"\";\n var axisLabel = \"\"; \n \n $translate(['COMMON_HOURS','PROJECT_STATUS_AGGREGATED', 'A3_REALIZED', 'COMMON_ESTIMATED', 'IMPROVEMENT_FROM_PLANNED_TO_IN_PROGRESS', 'IMPROVEMENT_FROM_NEW_TO_PLANNED']).then(function (translations) {\n statusAggregated = translations.PROJECT_STATUS_AGGREGATED;\n realized = translations.A3_REALIZED;\n estimated = translations.COMMON_ESTIMATED;\n axisLabel = translations.COMMON_HOURS;\n getStatusData();\n });\n\n function aggregateResult(array){\n var result = [];\n var aggregated = 0;\n for(var i=0; i !s.isProjectInfo);\n var layout = scope.defaultLayout[withoutProjectInfo.length - 1];\n\n scope.a3info = getStepWidget(\"a3info-template\", template, [0, 0, 24, 0]);\n var info = {\n component: 'a3info-template',\n name: 'A3 Info',\n model: template.id,\n sizeY: 0\n };\n\n var widgets = [];\n widgets.push(info);\n var stepIndex = 0;\n scope.template.steps.forEach(step => {\n var widget = {\n component: \"a3step-template\",\n model: {\n id: step.id,\n style: step.style,\n name: step.name,\n content: step.defaultContent\n },\n row: step.row != null ? step.row : layout[stepIndex][0],\n col: step.col != null ? step.col : layout[stepIndex][1],\n sizeX: step.sizeX != null ? step.sizeX : layout[stepIndex][2],\n sizeY: step.sizeY != null ? step.sizeY : layout[stepIndex][3]\n };\n\n if (step.isProjectInfo) {\n widget.component = \"cost-widget\";\n }\n else {\n stepIndex++\n }\n\n widgets.push(widget);\n\n\n\n });\n scope.widgets = widgets;\n });\n }\n\n scope.$watch(\"zoom\", function(zoom) {\n if (!scope.zoom) return; \n });\n a3Service().getDefaultLayout().then(function (result) {\n scope.defaultLayout = result;\n loadTemplate();\n });\n\n\n var w = angular.element($window);\n adjustZoom(w[0].innerWidth);\n w.bind('resize', function (event) {\n adjustZoom(event.currentTarget.window.innerWidth)\n });\n\n function adjustZoom(windowWidth) {\n\n // scope.zoom = windowWidth / (scope.width + 2000);\n }\n\n\n\n scope.gridsterOptions = {\n margins: [25, 25],\n columns: 24,\n sparse: true,\n resizable: {\n enabled: false,\n },\n draggable: {\n enabled: false\n }\n };\n\n\n function getStepWidget(component, model, position) {\n model.versionNumber = scope.versionNumber;\n var widget = {\n model: model,\n header: model.name,\n component: component,\n row: position[0],\n col: position[1],\n sizeX: position[2],\n sizeY: position[3],\n a3StepId: model.id\n }\n if (component === \"a3info-template\" || component === \"cost-widget\") { // a3info and cost is not linked to step so we need to set it to null\n widget.a3StepId = null;\n }\n return widget;\n }\n\n\n\n\n\n\n }\n }\n }]);\n\n","angular\n.module('DigiLean')\n.directive(\"actionlistA3\", ['$filter','a3Service',\n function ($filter, a3Service) {\n return {\n templateUrl: 'actionlistA3.html',\n restrict: 'E',\n scope: {\n 'assetid': '=',\n 'a3Count': '=',\n 'a3OverdueCount': '=',\n 'readonly': '@'\n },\n link: function (scope, element, attrs) {\n //scope.tasks = [];\n scope.a3s = [];\n\n scope.$watch(\"assetid\", function () {\n if (!scope.assetid) return;\n loadA3s(scope.assetid);\n });\n \n \n scope.subscribe(\"A3ActionListStatusChanged\", function(status) {\n // current board\n var target = $filter('filter')(scope.a3s, { \"id\" : status.a3Id });\n if (target.length == 1) {\n target[0].a3taskCount = status.total;\n target[0].a3taskOverdueCount = status.overdue;\n \n }\n calculateTaskCounts(scope.a3s);\n });\n\n function calculateTaskCounts(a3s) {\n var total = 0;\n var overdue = 0;\n if(a3s){\n for (var t=0; t {\n if (element.value == selectedRef)\n element.inUse = false;\n });\n return $scope.options;\n }\n\n $scope.findExisting = function () {\n $scope.existingDataSources = [];\n $scope.sources.forEach(s => {\n var datasource = getDataSource(s);\n\n dataSourceService().match(datasource.title).then(function (result) {\n $scope.existingDataSources.push(result);\n readValues();\n });\n });\n\n }\n\n function getDataSource(dataSource) {\n\n return {\n title: dataSource.name,\n description: dataSource.description,\n objectSource: \"external\",\n unitOfTime: \"MONTH\",\n assetId: getRefId(\"assetId\"),\n areaId: getRefId(\"areaId\"),\n projectId: getRefId(\"projectId\"),\n dateElement: getDate(),\n valueElement: getValue(dataSource),\n elements: getElements()\n };\n }\n\n $scope.drop = function (el) {\n console.log(el);\n };\n\n var loadProjects = function () {\n projectService().getList().then(function (result) {\n $scope.allProjects = result;\n });\n }\n\n var loadDataSources = function () {\n dataSourceService().getList().then(function (result) {\n $scope.allDataSources = result;\n });\n }\n\n $scope.checkIfAlreadyExists = function (title) {\n\n if (!$scope.allDataSources)\n return false;\n let found = $scope.allDataSources.filter(x => x.title == title);\n return found.length > 0;\n\n };\n\n $scope.canCreateNewDataSource = function () {\n\n let allExists = true;\n\n $scope.sources.forEach(d => {\n if (!$scope.checkIfAlreadyExists(d.name))\n allExists = false;\n });\n return allExists;\n }\n\n $scope.createDataSources = function () {\n\n $scope.existingDataSources = [];\n findMissingProjects();\n projectService().addProjects($scope.missingProjects).then(function (result) { // first add any missing projects\n let newProjects = result;\n newProjects.forEach(p => {\n $scope.allProjects.push(p);\n });\n\n\n\n $scope.sources.forEach(s => {\n\n if (s && !$scope.checkIfAlreadyExists(s.name)) {\n var datasource = getDataSource(s);\n dataSourceService().add(datasource).then(function (result) {\n $scope.existingDataSources.push(result);\n $scope.writeValuesToDataSource(s);\n loadDataSources();\n });\n }\n });\n });\n };\n\n\n $scope.writeValuesToDataSource = function (dataSource) {\n\n var values = [];\n\n $scope.data.series[0].rows.forEach(row => {\n var value = {}\n $scope.data.series[0].ref.forEach((ref, index) => {\n if (ref != null && $scope.data.series[0].include[index]) { //has value and is selected\n var readValue = row.values[index];\n value[ref] = ref == \"valueDate\" ? convertTimestamp(readValue) :\n ref == \"projectId\" ? getProjectId(readValue) : readValue;\n }\n });\n $scope.data.series[0].sources.forEach((s, index) => { //actual value of datasource\n if (s && s.name == dataSource.name) {\n value.value = row.values[index];\n }\n });\n values.push(value);\n });\n let existingDataSource = $scope.existingDataSources.filter(e => e.title === dataSource.name)[0];\n if (existingDataSource) {\n dataService().addList(existingDataSource.id, values).then(function (result) {\n // $scope.findExisting();\n readValues();\n });\n }\n }\n\n function getProjectId(projectNumber) {\n let projects = $scope.allProjects.filter(p => p.projectNumber && p.projectNumber.toLowerCase() == projectNumber.toString().toLowerCase());\n if (projects && projects.length > 0)\n return projects[0].id;\n return null;\n }\n\n function findMissingProjects() {\n var indexData = $scope.data.series[0].index;\n var projectIndex = indexData.ref.indexOf(\"projectId\");\n $scope.missingProjects = [];\n\n if (projectIndex > -1) {\n $scope.data.series[0].rows.forEach(r => {\n var projectNumber = r.values[projectIndex].toString().toLowerCase();\n if ($scope.allProjects.filter(p => p.projectNumber && p.projectNumber.toLowerCase() == projectNumber).length == 0) {\n if ($scope.missingProjects.filter(m => m.projectNumber == projectNumber).length == 0) { //check if already added \n $scope.missingProjects.push({ name: projectNumber, projectNumber: projectNumber });\n }\n }\n });\n\n console.log(\"missing:\")\n console.log($scope.missingProjects);\n }\n }\n\n\n function convertTimestamp(value) {\n\n var timeStamp = moment(value, $scope.dataSource.timeStampFormat);\n return timeStamp.format();\n }\n\n function determineTimeFormat(nameIndex) {\n let dates = $scope.data.series[0].rows.map(r => r.values[nameIndex]).filter(d => d);\n $scope.dataSource.timeStampFormat = 'YYYY.MM.DD HH.mm.ss';\n\n let dateSeparator = '.';\n let timeSeparator = '.';\n\n let firstPart = [];\n let secondPart = [];\n let thirdPart = [];\n\n dates.forEach(d => {\n if (d.includes('/'))\n dateSeparator = '/';\n if (d.includes('-'))\n dateSeparator = '-';\n\n let dateStrings = d.substring(0, 10).split(dateSeparator);\n firstPart.push(dateStrings[0].trim());\n secondPart.push(dateStrings[1].trim());\n thirdPart.push(dateStrings[2].trim());\n\n if (d.includes(':'))\n timeSeparator = ':';\n\n });\n\n let firstVals = firstPart.map(f => +f);\n let firstMax = Math.max(...firstVals);\n\n let secondVals = secondPart.map(s => +s);\n let secondMax = Math.max(...secondVals);\n\n let thirdVals = thirdPart.map(t => +t);\n let thirdMax = Math.max(...thirdVals);\n\n let maxValues = [{ part: \"first\", value: firstMax }, { part: \"second\", value: secondMax }, { part: \"third\", value: thirdMax }];\n let maxValuesSorted = maxValues.sort((a, b) => {\n return a.value - b.value;\n });\n\n let format = {};\n let components = [\"MM\", \"DD\", \"YYYY\"];\n maxValuesSorted.forEach((v, index) => {\n format[v.part] = components[index];\n });\n\n $scope.dataSource.timeStampFormat = format.first + dateSeparator + format.second + dateSeparator + format.third + \" HH\" + timeSeparator + \"mm\" + timeSeparator + \"ss\";\n\n }\n\n $scope.convertToLocal = function (utcDateString) {\n return moment(utcDateString).format($scope.dataSource.timeStampFormat);\n }\n\n $scope.init = function (nameIndex) {\n let fullName = $scope.data.series[0].name[nameIndex];\n let nameWithUnit = fullName.split('[')\n let unit = nameWithUnit.length == 2 ? nameWithUnit[1].replace(']', '').trim() : null;\n let sourceName = nameWithUnit[0].trim();\n let name = sourceName.toLowerCase();\n let key = null;\n if (name.includes(\"date\")\n || name.includes(\"dato\")\n || name.includes(\"timestamp\")\n || name.includes(\"tid\")\n ) {\n key = \"valueDate\";\n determineTimeFormat(nameIndex);\n }\n else if (name.includes(\"name\")\n || name.includes(\"navn\")\n || name.includes(\"person\")\n || name.includes(\"who\")) {\n key = \"dimension\";\n dimensionCount++;\n }\n else if (name.includes(\"area\")\n || name.includes(\"område\")\n || name.includes(\"avdeling\")\n || name.includes(\"department\"))\n key = \"areaId\";\n else if (name.length <= \"prosjektnummer\".length && (name.includes(\"project\")\n || name.includes(\"prosjekt\")\n || name.includes(\"product\")\n || name.includes(\"produkt\")))\n key = \"projectId\";\n\n else if (unit) {\n $scope.data.series[0].sources[nameIndex] = { name: sourceName, description: \"\", unit: unit }\n }\n else if (dimensionCount <= 4) {\n key = \"dimension\";\n key += dimensionCount > 1 ? dimensionCount : \"\";\n dimensionCount++;\n }\n\n var option = $scope.options.filter(x => x.value == key)[0];\n if (option)\n $scope.data.series[0].ref[nameIndex] = option.value;\n }\n\n function readValues() {\n $scope.usedColumns = {};\n var options = {\n numberOfValues: 500,\n sortOrder: \"ASC\"\n };\n $scope.existingDataSources.forEach(e => {\n dataService().getLatestValues(e.id, options).then(function (result) {\n\n result.forEach(record => {\n if (record.assetId)\n $scope.usedColumns['assetId'] = true;\n if (record.areaId)\n $scope.usedColumns['areaId'] = true;\n if (record.projectId)\n $scope.usedColumns['projectId'] = true;\n if (record.dimension)\n $scope.usedColumns['dimension'] = true;\n if (record.dimension2)\n $scope.usedColumns['dimension2'] = true;\n if (record.dimension3)\n $scope.usedColumns['dimension3'] = true;\n if (record.dimension4)\n $scope.usedColumns['dimension4'] = true;\n }\n );\n\n e.existingValues = result;\n setProjectNumbers();\n\n });\n });\n }\n\n function setProjectNumbers() {\n $scope.existingDataSources.forEach(s => {\n if (s.existingValues)\n s.existingValues.forEach(v => {\n let project = $scope.allProjects.filter(p => p.id == v.projectId)[0];\n if (project) {\n v.projectNumber = project.projectNumber;\n }\n });\n });\n }\n\n $scope.selectedHeader = function (header) {\n if ($scope.excelData)\n localStorage[\"exceldata\"] = $scope.excelData;\n\n }\n\n $scope.selectedRef = function (index) {\n if ($scope.excelData)\n localStorage[\"exceldata\"] = $scope.excelData;\n var ref = $scope.data.series[0].ref[index];\n var refObject = $scope.options.filter(x => x.value == ref)[0];\n if (refObject)\n refObject.inUse = refObject.inUse != true ? true : false;\n\n // if (refObject.value == \"newDataSource\"){\n // $scope.data.series[0].sources[index] = $scope.data.series[0].name[index];\n // $scope.data.series[0].ref[index] = refObject.value;\n // setDefaults();\n\n // }\n }\n\n function getRefId(ref) {\n var indexData = $scope.data.series[0].index;\n var refIndex = indexData.ref.indexOf(ref);\n if (refIndex > -1 && indexData.include[refIndex])\n return indexData.name[refIndex];\n return null;\n }\n\n function getDate() {\n return {\n label: \"date\",\n type: \"DAY\",\n isMandatory: true\n }\n }\n\n function getValue(dataSource) {\n return {\n label: \"value\",\n type: \"number\",\n unit: dataSource.unit,\n isMandatory: true\n }\n }\n\n function setDefaults() {\n dimensionCount = 1;\n $scope.dataSource.name = $scope.data.series[0].name.toString();\n $scope.dataSource.description = \"\";\n\n $scope.data.series[0].name.forEach((element, index) => {\n $scope.init(index);\n });\n\n $scope.sources = $scope.data.series[0].sources.filter(x => x);\n let sourceNames = $scope.sources.map(s => { return s.name; });\n $scope.sources.forEach(s => s.exists = $scope.checkIfAlreadyExists(s.name));\n $scope.commonProperties = $scope.data.series[0].name.filter(n => {\n if (n.includes('['))\n n = n.split('[')[0].trim();\n return !sourceNames.includes(n)\n });\n\n }\n\n function getElements() {\n var indexData = $scope.data.series[0].index;\n var elements = []\n for (var i = 0; i < indexData.ref.length; i++) {\n if (indexData.ref[i]) {\n if (indexData.ref[i].toLowerCase().includes(\"dimension\") && indexData.include[i])\n elements.push({\n label: indexData.name[i],\n sourceColumn: indexData.ref[i],\n type: \"text\",\n isMandatory: true\n });\n if (indexData.ref[i].toLowerCase().includes(\"area\") && indexData.include[i])\n elements.push({\n label: indexData.name[i],\n sourceColumn: indexData.ref[i],\n type: \"area\",\n isMandatory: true\n });\n\n if (indexData.ref[i].toLowerCase().includes(\"asset\") && indexData.include[i])\n elements.push({\n label: indexData.name[i],\n sourceColumn: indexData.ref[i],\n type: \"asset\",\n isMandatory: true\n });\n if (indexData.ref[i].toLowerCase().includes(\"project\") && indexData.include[i])\n elements.push({\n label: indexData.name[i],\n sourceColumn: indexData.ref[i],\n type: \"project\",\n isMandatory: true\n });\n }\n }\n\n return elements;\n }\n\n $scope.addExcelJob = function () {\n $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'newJob.html',\n controller: 'newJobController',\n resolve: {\n job: function () {\n var config = {};\n Object.assign(config, $scope.data.series[0].index);\n config.sources.forEach(s => {\n if (s) {\n delete s.$$hashKey;\n delete s.exists;\n }\n });\n\n return {\n jobType: 'Excel Multi',\n dataSource: null,\n mapping: JSON.stringify(config),\n fileName: $scope.data.fileName\n };\n }\n }\n });\n }\n\n loadDataSources();\n\n\n }]);","var DigiLean = angular.module('DigiLean');\nDigiLean.controller('singleDataSourceImportController', ['$scope', '$uibModal', 'dataSourceService', 'dataService', 'projectService',\n function ($scope, $uibModal, dataSourceService, dataService, projectService) {\n\n $scope.existingDataSource = null;\n $scope.dataSource = {};\n $scope.dataSourceDescription = null;\n $scope.allDataSources = null;\n var dimensionCount = 1;\n $scope.usedColumns = null;\n $scope.uploadedFile = null;\n $scope.allProjects = null;\n $scope.missingProjects = [];\n\n\n $scope.fileParsed = function (data) {\n $scope.data = null;\n $scope.existingValues = null;\n $scope.existingDataSource = null;\n $scope.data = data;\n setDefaults();\n loadDataSources();\n loadProjects();\n\n // localStorage[\"exceldata\"] = JSON.stringify($scope.data);\n };\n\n\n $scope.options = [\n { value: \"valueDate\", display: \"COMMON_DATE\" },\n { value: \"value\", display: \"COMMON_VALUE\" },\n { value: \"assetId\", display: \"COMMON_ASSET\" },\n { value: \"areaId\", display: \"COMMON_AREA\" },\n { value: \"projectId\", display: \"COMMON_PROJECT\" },\n { value: \"dimension\", display: \"COMMON_DIMENSION\" },\n { value: \"dimension2\", display: \"COMMON_DIMENSION2\" },\n { value: \"dimension3\", display: \"COMMON_DIMENSION3\" },\n { value: \"dimension4\", display: \"COMMON_DIMENSION4\" },\n ];\n\n $scope.getOptions = function (selectedRef) {\n $scope.options.forEach(element => {\n if (element.value == selectedRef)\n element.inUse = false;\n });\n return $scope.options;\n }\n\n $scope.findExisting = function () {\n var datasource = getDataSource();\n\n dataSourceService().match(datasource.title).then(function (result) {\n $scope.existingDataSource = result;\n readValues();\n });\n }\n\n function getDataSource() {\n\n return {\n title: $scope.dataSource.name,\n description: $scope.dataSource.description,\n objectSource: \"external\",\n unitOfTime: \"MONTH\",\n assetId: getRefId(\"assetId\"),\n areaId: getRefId(\"areaId\"),\n projectId: getRefId(\"projectId\"),\n dateElement: getDate(),\n valueElement: getValue(),\n elements: getElements()\n };\n }\n\n $scope.drop = function (el) {\n console.log(el);\n };\n\n var loadProjects = function () {\n projectService().getList().then(function (result) {\n $scope.allProjects = result;\n });\n }\n\n var loadDataSources = function () {\n dataSourceService().getList().then(function (result) {\n $scope.allDataSources = result;\n });\n }\n\n $scope.checkIfAlreadyExists = function (title) {\n\n if (!$scope.allDataSources)\n return false;\n return $scope.allDataSources.filter(x => x.title == title).length > 0;\n };\n\n $scope.createDataSource = function () {\n\n var datasource = getDataSource();\n dataSourceService().add(datasource).then(function (result) {\n $scope.existingDataSource = result;\n $scope.writeValuesToDataSource();\n loadDataSources();\n });\n };\n\n $scope.eraseAllExistingValues = function () {\n dataService().deleteAllValues($scope.existingDataSource.id).then(function (result) {\n $scope.findExisting();\n });\n };\n\n $scope.writeValuesToDataSource = function () {\n\n\n var values = [];\n projectService().addProjects($scope.missingProjects).then(function (result) { // first add any missing projects\n let newProjects = result;\n newProjects.forEach(p => {\n $scope.allProjects.push(p);\n });\n\n $scope.data.series[0].rows.forEach(row => {\n var value = {}\n $scope.data.series[0].ref.forEach((ref, index) => {\n if (ref != null && $scope.data.series[0].include[index]) { //has value and is selected\n var readValue = row.values[index];\n value[ref] = ref == \"valueDate\" ? convertTimestamp(readValue) :\n ref == \"projectId\" ? getProjectId(readValue) : readValue;\n }\n });\n values.push(value);\n });\n dataService().addList($scope.existingDataSource.id, values).then(function (result) {\n $scope.findExisting();\n });\n });\n }\n\n function getProjectId(projectNumber) {\n let project = $scope.allProjects.filter(p => p.projectNumber && p.projectNumber.toLowerCase() == projectNumber.toString().toLowerCase())[0];\n return project.id;\n }\n\n function findMissingProjects() {\n var indexData = $scope.data.series[0].index;\n var projectIndex = indexData.ref.indexOf(\"projectId\");\n\n $scope.data.series[0].rows.forEach(r => {\n var projectNumber = r.values[projectIndex].toString().toLowerCase();\n if ($scope.allProjects.filter(p => p.projectNumber && p.projectNumber.toLowerCase() == projectNumber).length == 0) {\n if ($scope.missingProjects.filter(m => m.projectNumber == projectNumber).length == 0) { //check if already added \n $scope.missingProjects.push({ name: projectNumber, projectNumber: projectNumber });\n }\n }\n });\n\n console.log(\"missing:\")\n console.log($scope.missingProjects);\n }\n\n\n function convertTimestamp(value) {\n\n var timeStamp = moment(value, $scope.dataSource.timeStampFormat);\n return timeStamp.format();\n }\n\n function determineTimeFormat(nameIndex) {\n let dates = $scope.data.series[0].rows.map(r => r.values[nameIndex]);\n $scope.dataSource.timeStampFormat = 'YYYY.MM.DD HH.mm.ss';\n\n let dateSeparator = '.';\n let timeSeparator = '.';\n\n let firstPart = [];\n let secondPart = [];\n let thirdPart = [];\n\n dates.forEach(d => {\n if (d.includes('/'))\n dateSeparator = '/';\n if (d.includes('-'))\n dateSeparator = '-';\n\n let dateStrings = d.substring(0, 10).split(dateSeparator);\n firstPart.push(dateStrings[0].trim());\n secondPart.push(dateStrings[1].trim());\n thirdPart.push(dateStrings[2].trim());\n\n if (d.includes(':'))\n timeSeparator = ':';\n\n });\n\n let firstVals = firstPart.map(f => +f);\n let firstMax = Math.max(...firstVals);\n // let firstLength = firstPart.map(f => f.length);\n // let firstLengthMax = Math.max(...firstLength);\n\n let secondVals = secondPart.map(s => +s);\n let secondMax = Math.max(...secondVals);\n // let secondLength = secondPart.map(s => s.length);\n // let secondLengthMax = Math.max(...secondLength);\n\n let thirdVals = thirdPart.map(t => +t);\n let thirdMax = Math.max(...thirdVals);\n // let thirdLength = thirdPart.map(t => t.length);\n // let thirdLengthMax = Math.max(...thirdLength);\n\n let maxValues = [{ part: \"first\", value: firstMax }, { part: \"second\", value: secondMax }, { part: \"third\", value: thirdMax }];\n let maxValuesSorted = maxValues.sort((a, b) => {\n return a.value - b.value;\n });\n\n let format = {};\n let components = [\"MM\", \"DD\", \"YYYY\"];\n maxValuesSorted.forEach((v, index) => {\n format[v.part] = components[index];\n });\n\n $scope.dataSource.timeStampFormat = format.first + dateSeparator + format.second + dateSeparator + format.third + \" HH\" + timeSeparator + \"mm\" + timeSeparator + \"ss\";\n\n }\n\n $scope.convertToLocal = function (utcDateString) {\n return moment(utcDateString).format($scope.dataSource.timeStampFormat);\n }\n\n $scope.init = function (nameIndex) {\n let name = $scope.data.series[0].name[nameIndex].toLowerCase();\n let key = null;\n if (name.includes(\"date\")\n || name.includes(\"dato\")\n || name.includes(\"timestamp\")\n || name.includes(\"tid\")\n ) {\n key = \"valueDate\";\n determineTimeFormat(nameIndex);\n }\n else if (name.includes(\"asset\")\n || name.includes(\"enhet\")\n || name.includes(\"group\")\n || name.includes(\"gruppe\"))\n key = \"assetId\";\n else if (name.includes(\"area\")\n || name.includes(\"område\")\n || name.includes(\"avdeling\")\n || name.includes(\"department\"))\n key = \"areaId\";\n else if (name.length <= \"prosjektnummer\".length && (name.includes(\"project\")\n || name.includes(\"prosjekt\")\n || name.includes(\"product\")\n || name.includes(\"produkt\")))\n key = \"projectId\";\n else if (name.includes(\"value\")\n || name.includes(\"verdi\")\n || name.includes(\"timer\")\n || name.includes(\"hours\")\n || name.includes(\"count\")\n || name.includes(\"antall\")\n || name.includes(\"point\")\n || name.includes(\"poeng\")\n )\n key = \"value\";\n else {\n key = \"dimension\";\n if (dimensionCount > 1)\n key = key + dimensionCount;\n\n dimensionCount++;\n }\n\n var option = $scope.options.filter(x => x.value == key)[0];\n if (option)\n $scope.data.series[0].ref[nameIndex] = option.value;\n }\n\n function readValues() {\n $scope.usedColumns = {};\n var options = {\n numberOfValues: 500,\n sortOrder: \"ASC\"\n };\n dataService().getLatestValues($scope.existingDataSource.id, options).then(function (result) {\n\n result.forEach(record => {\n if (record.assetId)\n $scope.usedColumns['assetId'] = true;\n if (record.areaId)\n $scope.usedColumns['areaId'] = true;\n if (record.projectId)\n $scope.usedColumns['projectId'] = true;\n if (record.dimension)\n $scope.usedColumns['dimension'] = true;\n if (record.dimension2)\n $scope.usedColumns['dimension2'] = true;\n if (record.dimension3)\n $scope.usedColumns['dimension3'] = true;\n if (record.dimension4)\n $scope.usedColumns['dimension4'] = true;\n }\n );\n\n\n $scope.existingValues = result;\n setProjectNumbers();\n\n });\n }\n\n function setProjectNumbers() {\n $scope.existingValues.forEach(v => {\n let project = $scope.allProjects.filter(p => p.id == v.projectId)[0];\n if (project) {\n v.projectNumber = project.projectNumber;\n }\n });\n }\n\n $scope.selectedHeader = function (header) {\n if ($scope.excelData)\n localStorage[\"exceldata\"] = $scope.excelData;\n\n }\n\n $scope.selectedRef = function (index) {\n if ($scope.excelData)\n localStorage[\"exceldata\"] = $scope.excelData;\n var ref = $scope.data.series[0].ref[index];\n var refObject = $scope.options.filter(x => x.value == ref)[0];\n if (refObject)\n refObject.inUse = refObject.inUse != true ? true : false;\n }\n\n function getRefId(ref) {\n var indexData = $scope.data.series[0].index;\n var refIndex = indexData.ref.indexOf(ref);\n if (refIndex > -1 && indexData.include[refIndex])\n return indexData.name[refIndex];\n return null;\n }\n\n function getDate() {\n return {\n label: \"date\",\n type: \"DAY\",\n isMandatory: true\n }\n }\n\n function getValue() {\n return {\n label: \"value\",\n type: \"number\",\n unit: $scope.dataSource.unit,\n isMandatory: true\n }\n }\n\n function setDefaults() {\n \n dimensionCount = 1;\n $scope.data.series[0].name.forEach((element, index) => {\n $scope.init(index);\n });\n\n let valueIndex = $scope.data.series[0].ref.indexOf(\"value\");\n let sourceName = $scope.data.series[0].name[valueIndex];\n let unit = null;\n if (sourceName.includes('[')) {\n let nameAndUnit = sourceName.split('[');\n sourceName = nameAndUnit[0].trim();\n unit = nameAndUnit[1].replace(']','').trim();\n }\n\n $scope.dataSource.name = $scope.data.series[0].name.toString();\n $scope.dataSource.description = \"\";\n $scope.dataSource.unit = unit;\n }\n\n function getElements() {\n var indexData = $scope.data.series[0].index;\n var elements = []\n for (var i = 0; i < indexData.ref.length; i++) {\n if (indexData.ref[i]) {\n if (indexData.ref[i].toLowerCase().includes(\"dimension\") && indexData.include[i])\n elements.push({\n label: indexData.name[i],\n sourceColumn: indexData.ref[i],\n type: \"text\",\n isMandatory: true\n });\n if (indexData.ref[i].toLowerCase().includes(\"area\") && indexData.include[i])\n elements.push({\n label: indexData.name[i],\n sourceColumn: indexData.ref[i],\n type: \"area\",\n isMandatory: true\n });\n\n if (indexData.ref[i].toLowerCase().includes(\"asset\") && indexData.include[i])\n elements.push({\n label: indexData.name[i],\n sourceColumn: indexData.ref[i],\n type: \"asset\",\n isMandatory: true\n });\n if (indexData.ref[i].toLowerCase().includes(\"project\") && indexData.include[i])\n elements.push({\n label: indexData.name[i],\n sourceColumn: indexData.ref[i],\n type: \"project\",\n isMandatory: true\n });\n }\n }\n\n return elements;\n }\n\n $scope.addExcelJob = function () {\n $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'newJob.html',\n controller: 'newJobController',\n resolve: {\n job: function () {\n return {\n jobType: 'Excel',\n dataSource: $scope.dataSource,\n mapping: JSON.stringify($scope.data.series[0].index),\n fileName: $scope.data.fileName\n };\n }\n }\n });\n }\n\n loadDataSources();\n\n // if (localStorage[\"exceldata\"]) {\n // $scope.data = JSON.parse(localStorage[\"exceldata\"]);\n // setDefaults();\n // }\n\n // if ($scope.data) {\n // $scope.findExisting();\n // }\n\n }]);","var DigiLean = angular.module('DigiLean');\nDigiLean.controller('excelImportController', ['$scope', '$uibModal', '$translate', 'modalService', 'authService', 'importExportService', 'dataSourceService', 'dataService', 'projectService',\n function ($scope, $uibModal, $translate, modalService, authService, importExportService, dataSourceService, dataService, projectService) {\n\n // $scope.existingDataSource = null;\n // $scope.dataSource = {};\n // $scope.dataSourceDescription = null;\n // $scope.allDataSources = null;\n // var dimensionCount = 1;\n // $scope.usedColumns = null;\n // $scope.uploadedFile = null;\n // $scope.allProjects = null;\n // $scope.missingProjects = [];\n\n\n // $scope.fileParsed = function (data) {\n // $scope.data = null;\n // $scope.existingValues = null;\n // $scope.existingDataSource = null;\n // $scope.data = data;\n // setDefaults();\n // loadDataSources();\n // loadProjects();\n\n // // localStorage[\"exceldata\"] = JSON.stringify($scope.data);\n // };\n\n\n // $scope.options = [\n // { value: \"valueDate\", display: \"COMMON_DATE\" },\n // { value: \"value\", display: \"COMMON_VALUE\" },\n // { value: \"assetId\", display: \"COMMON_ASSET\" },\n // { value: \"areaId\", display: \"COMMON_AREA\" },\n // { value: \"projectId\", display: \"COMMON_PROJECT\" },\n // { value: \"dimension\", display: \"COMMON_DIMENSION\" },\n // { value: \"dimension2\", display: \"COMMON_DIMENSION2\" },\n // { value: \"dimension3\", display: \"COMMON_DIMENSION3\" },\n // { value: \"dimension4\", display: \"COMMON_DIMENSION4\" },\n // ];\n\n // $scope.getOptions = function (selectedRef) {\n // $scope.options.forEach(element => {\n // if (element.value == selectedRef)\n // element.inUse = false;\n // });\n // return $scope.options;\n // }\n\n // $scope.findExisting = function () {\n // var datasource = getDataSource();\n\n // dataSourceService().match(datasource).then(function (result) {\n // $scope.existingDataSource = result;\n // readValues();\n // });\n // }\n\n // function getDataSource() {\n\n // return {\n // title: $scope.dataSource.name,\n // description: $scope.dataSource.description,\n // objectSource: \"external\",\n // unitOfTime: \"\",\n // assetId: getRefId(\"assetId\"),\n // areaId: getRefId(\"areaId\"),\n // projectId: getRefId(\"projectId\"),\n // dateElement: getDate(),\n // valueElement: getValue(),\n // elements: getElements()\n // };\n // }\n\n // $scope.drop = function (el) {\n // console.log(el);\n // };\n\n // var loadProjects = function () {\n // projectService().getList().then(function (result) {\n // $scope.allProjects = result;\n // });\n // }\n\n // var loadDataSources = function () {\n // dataSourceService().getList().then(function (result) {\n // $scope.allDataSources = result;\n // });\n // }\n\n // $scope.checkIfAlreadyExists = function (title) {\n\n // if (!$scope.allDataSources)\n // return false;\n // return $scope.allDataSources.filter(x => x.title == title).length > 0;\n // };\n\n // $scope.createDataSource = function () {\n\n // var datasource = getDataSource();\n // dataSourceService().add(datasource).then(function (result) {\n // $scope.existingDataSource = result;\n // $scope.writeValuesToDataSource();\n // loadDataSources();\n // });\n // };\n\n // $scope.eraseAllExistingValues = function () {\n // dataService().deleteAllValues($scope.existingDataSource.id).then(function (result) {\n // $scope.findExisting();\n // });\n // };\n\n // $scope.writeValuesToDataSource = function () {\n\n\n // var values = [];\n // findMissingProjects();\n // projectService().addProjects($scope.missingProjects).then(function (result) { // first add any missing projects\n // let newProjects = result;\n // newProjects.forEach(p => {\n // $scope.allProjects.push(p);\n // });\n\n // $scope.data.series[0].rows.forEach(row => {\n // var value = {}\n // $scope.data.series[0].ref.forEach((ref, index) => {\n // if (ref != null && $scope.data.series[0].include[index]) { //has value and is selected\n // var readValue = row.values[index];\n // value[ref] = ref == \"valueDate\" ? convertTimestamp(readValue) :\n // ref == \"projectId\" ? getProjectId(readValue) : readValue;\n // }\n // });\n // values.push(value);\n // });\n // dataService().addList($scope.existingDataSource.id, values).then(function (result) {\n // $scope.findExisting();\n // });\n // });\n // }\n\n // function getProjectId(projectNumber) {\n // let project = $scope.allProjects.filter(p => p.projectNumber && p.projectNumber.toLowerCase() == projectNumber.toString().toLowerCase())[0];\n // return project.id;\n // }\n\n // function findMissingProjects() {\n // var indexData = $scope.data.series[0].index;\n // var projectIndex = indexData.ref.indexOf(\"projectId\");\n\n // $scope.data.series[0].rows.forEach(r => {\n // var projectNumber = r.values[projectIndex].toString().toLowerCase();\n // if ($scope.allProjects.filter(p => p.projectNumber && p.projectNumber.toLowerCase() == projectNumber).length == 0) {\n // if ($scope.missingProjects.filter(m => m.projectNumber == projectNumber).length == 0) { //check if already added \n // $scope.missingProjects.push({ name: projectNumber, projectNumber: projectNumber });\n // }\n // }\n // });\n\n // console.log(\"missing:\")\n // console.log($scope.missingProjects);\n // }\n\n\n // function convertTimestamp(value) {\n\n // var timeStamp = moment(value, $scope.dataSource.timeStampFormat);\n // return timeStamp.format();\n // }\n\n // function determineTimeFormat(nameIndex) {\n // let dates = $scope.data.series[0].rows.map(r => r.values[nameIndex]);\n // $scope.dataSource.timeStampFormat = 'YYYY.MM.DD HH.mm.ss';\n\n // let dateSeparator = '.';\n // let timeSeparator = '.';\n\n // let firstPart = [];\n // let secondPart = [];\n // let thirdPart = [];\n\n // dates.forEach(d => {\n // if (d.includes('/'))\n // dateSeparator = '/';\n // if (d.includes('-'))\n // dateSeparator = '-';\n\n // let dateStrings = d.substring(0, 10).split(dateSeparator);\n // firstPart.push(dateStrings[0].trim());\n // secondPart.push(dateStrings[1].trim());\n // thirdPart.push(dateStrings[2].trim());\n\n // if (d.includes(':'))\n // timeSeparator = ':';\n\n // });\n\n // let firstVals = firstPart.map(f => +f);\n // let firstMax = Math.max(...firstVals);\n // // let firstLength = firstPart.map(f => f.length);\n // // let firstLengthMax = Math.max(...firstLength);\n\n // let secondVals = secondPart.map(s => +s);\n // let secondMax = Math.max(...secondVals);\n // // let secondLength = secondPart.map(s => s.length);\n // // let secondLengthMax = Math.max(...secondLength);\n\n // let thirdVals = thirdPart.map(t => +t);\n // let thirdMax = Math.max(...thirdVals);\n // // let thirdLength = thirdPart.map(t => t.length);\n // // let thirdLengthMax = Math.max(...thirdLength);\n\n // let maxValues = [{ part: \"first\", value: firstMax }, { part: \"second\", value: secondMax }, { part: \"third\", value: thirdMax }];\n // let maxValuesSorted = maxValues.sort((a, b) => {\n // return a.value - b.value;\n // });\n\n // let format = {};\n // let components = [\"MM\", \"DD\", \"YYYY\"];\n // maxValuesSorted.forEach((v, index) => {\n // format[v.part] = components[index];\n // });\n\n // $scope.dataSource.timeStampFormat = format.first + dateSeparator + format.second + dateSeparator + format.third + \" HH\" + timeSeparator + \"mm\" + timeSeparator + \"ss\";\n\n // }\n\n // $scope.convertToLocal = function (utcDateString) {\n // return moment(utcDateString).format($scope.dataSource.timeStampFormat);\n // }\n\n // $scope.init = function (nameIndex) {\n // let name = $scope.data.series[0].name[nameIndex].toLowerCase();\n \n // let key = null;\n // if (name.includes(\"date\")\n // || name.includes(\"dato\")\n // || name.includes(\"timestamp\")\n // || name.includes(\"tid\")\n // ) {\n // key = \"valueDate\";\n // determineTimeFormat(nameIndex);\n // }\n // else if (name.includes(\"asset\")\n // || name.includes(\"enhet\")\n // || name.includes(\"group\")\n // || name.includes(\"gruppe\"))\n // key = \"assetId\";\n // else if (name.includes(\"area\")\n // || name.includes(\"område\")\n // || name.includes(\"avdeling\")\n // || name.includes(\"department\"))\n // key = \"areaId\";\n // else if (name.includes(\"project\")\n // || name.includes(\"prosjekt\")\n // || name.includes(\"product\")\n // || name.includes(\"produkt\"))\n // key = \"projectId\";\n // else if (name.includes(\"value\")\n // || name.includes(\"verdi\")\n // || name.includes(\"timer\")\n // || name.includes(\"hours\")\n // || name.includes(\"count\")\n // || name.includes(\"antall\")\n // || name.includes(\"point\")\n // || name.includes(\"poeng\")\n // )\n // key = \"value\";\n // else {\n // key = \"dimension\";\n // if (dimensionCount > 1)\n // key = key + dimensionCount;\n\n // dimensionCount++;\n // }\n\n // var option = $scope.options.filter(x => x.value == key)[0];\n // $scope.data.series[0].ref[nameIndex] = option.value;\n // }\n\n // function readValues() {\n // $scope.usedColumns = {};\n // var options = {\n // numberOfValues: 500,\n // sortOrder: \"ASC\"\n // };\n // dataService().getLatestValues($scope.existingDataSource.id, options).then(function (result) {\n\n // result.forEach(record => {\n // if (record.assetId)\n // $scope.usedColumns['assetId'] = true;\n // if (record.areaId)\n // $scope.usedColumns['areaId'] = true;\n // if (record.projectId)\n // $scope.usedColumns['projectId'] = true;\n // if (record.dimension)\n // $scope.usedColumns['dimension'] = true;\n // if (record.dimension2)\n // $scope.usedColumns['dimension2'] = true;\n // if (record.dimension3)\n // $scope.usedColumns['dimension3'] = true;\n // if (record.dimension4)\n // $scope.usedColumns['dimension4'] = true;\n // }\n // );\n\n\n // $scope.existingValues = result;\n // setProjectNumbers();\n\n // });\n // }\n\n // function setProjectNumbers() {\n // $scope.existingValues.forEach(v => {\n // let project = $scope.allProjects.filter(p => p.id == v.projectId)[0];\n // if (project) {\n // v.projectNumber = project.projectNumber;\n // }\n // });\n // }\n\n // $scope.selectedHeader = function (header) {\n // if ($scope.excelData)\n // localStorage[\"exceldata\"] = $scope.excelData;\n\n // }\n\n // $scope.selectedRef = function (index) {\n // if ($scope.excelData)\n // localStorage[\"exceldata\"] = $scope.excelData;\n // var ref = $scope.data.series[0].ref[index];\n // var refObject = $scope.options.filter(x => x.value == ref)[0];\n // if (refObject)\n // refObject.inUse = refObject.inUse != true ? true : false;\n // }\n\n // function getRefId(ref) {\n // var indexData = $scope.data.series[0].index;\n // var refIndex = indexData.ref.indexOf(ref);\n // if (refIndex > -1 && indexData.include[refIndex])\n // return indexData.name[refIndex];\n // return null;\n // }\n\n // function getDate() {\n // return {\n // label: \"date\",\n // type: \"DAY\",\n // isMandatory: true\n // }\n // }\n\n // function getValue() {\n // return {\n // label: \"value\",\n // type: \"number\",\n // unit: $scope.dataSource.unit,\n // isMandatory: true\n // }\n // }\n\n // function setDefaults() {\n // let sourceName = $scope.data.series[0].name.toString();\n // let unit = null;\n // if (sourceName.includes('[')){\n // let nameAndUnit = sourceName.split('[');\n // sourceName = nameAndUnit[0].trim();\n // unit = nameAndUnit[1].trim();\n // }\n\n // $scope.dataSource.name = sourceName;\n // $scope.dataSource.description = \"\";\n // $scope.dataSource.unit = unit;\n\n // dimensionCount = 1;\n // $scope.data.series[0].name.forEach((element, index) => {\n // $scope.init(index);\n // });\n\n\n // }\n\n // function getElements() {\n // var indexData = $scope.data.series[0].index;\n // var elements = []\n // for (var i = 0; i < indexData.ref.length; i++) {\n // if (indexData.ref[i]) {\n // if (indexData.ref[i].toLowerCase().includes(\"dimension\") && indexData.include[i])\n // elements.push({\n // label: indexData.name[i],\n // sourceColumn: indexData.ref[i],\n // type: \"text\",\n // isMandatory: true\n // });\n // if (indexData.ref[i].toLowerCase().includes(\"area\") && indexData.include[i])\n // elements.push({\n // label: indexData.name[i],\n // sourceColumn: indexData.ref[i],\n // type: \"area\",\n // isMandatory: true\n // });\n\n // if (indexData.ref[i].toLowerCase().includes(\"asset\") && indexData.include[i])\n // elements.push({\n // label: indexData.name[i],\n // sourceColumn: indexData.ref[i],\n // type: \"asset\",\n // isMandatory: true\n // });\n // if (indexData.ref[i].toLowerCase().includes(\"project\") && indexData.include[i])\n // elements.push({\n // label: indexData.name[i],\n // sourceColumn: indexData.ref[i],\n // type: \"project\",\n // isMandatory: true\n // });\n // }\n // }\n\n // return elements;\n // }\n\n // $scope.addExcelJob = function () {\n // $uibModal.open({ backdrop: 'static',\n // animation: true,\n // templateUrl: 'newJob.html',\n // controller: 'newJobController',\n // resolve: {\n // job: function () {\n // return {\n // jobType: 'Excel',\n // dataSource: $scope.dataSource,\n // mapping: JSON.stringify($scope.data.series[0].index),\n // fileName: $scope.data.fileName\n // };\n // }\n // }\n // });\n // }\n\n // loadDataSources();\n\n // if (localStorage[\"exceldata\"]) {\n // $scope.data = JSON.parse(localStorage[\"exceldata\"]);\n // setDefaults();\n // }\n\n // if ($scope.data) {\n // $scope.findExisting();\n // }\n\n }]);","// Controller for the actual modal\nvar DigiLean = angular.module('DigiLean');\nDigiLean.controller('editDataListController', ['$scope', '$uibModalInstance', 'dataListService', 'dataList',\n function ($scope, $uibModalInstance, dataListService, dataList) {\n $scope.dataList = {\n id: dataList.id,\n name: dataList.name,\n description: dataList.description\n };\n $scope.ok = function () { \n dataListService().updateList($scope.dataList.id, $scope.dataList).then(function (dataList) {\n $uibModalInstance.close(dataList);\n });\n\n }\n $scope.close = function () {\n $uibModalInstance.dismiss('cancel');\n };\n }]);","// Controller for the actual modal\nvar DigiLean = angular.module('DigiLean');\nDigiLean.controller('newDataListController', ['$scope', '$uibModalInstance', 'dataListService',\n function ($scope, $uibModalInstance, dataListService) {\n\n $scope.dataList = {\n name: \"\",\n description: \"\",\n isSystemList: false\n }\n\n $scope.ok = function () { \n dataListService().createList($scope.dataList).then(function (dataList) {\n $uibModalInstance.close(dataList);\n });\n\n }\n $scope.close = function () {\n $uibModalInstance.dismiss('cancel');\n };\n }]);","// Controller for the actual modal\nvar DigiLean = angular.module('DigiLean');\nDigiLean.controller('newDataSourceController', ['$scope', '$filter', '$state', '$uibModalInstance', '$translate', 'dataSourceService',\n function ($scope, $filter, $state, $uibModalInstance, $translate, dataSourceService) {\n $scope.unitsOfTime = [\n {\n db: \"DAY\",\n translated: $translate.instant('DASHBOARD_DAILY')\n }, {\n db: \"WEEK\",\n translated: $translate.instant('BOARD_WEEKLY')\n },{\n db: \"MONTH\",\n translated: $translate.instant('BOARD_MONTHLY')\n }, {\n db: \"YEAR\",\n translated: $translate.instant('COMMON_YEARLY')\n }\n ];\n $scope.selectedUnitOfTime = null;\n\n $scope.dataSource = {\n title: \"\",\n description: \"\",\n objectSource: \"external\",\n unitOfTime: \"\",\n valueElement: {\n label: \"value\",\n type: \"number\",\n unit: \"\",\n isMandatory: true\n },\n dateElement: {\n label: \"date\",\n type: \"DAY\",\n isMandatory: true\n }\n }\n\n $scope.setUnitOfTime = function (unitoftime) {\n if (unitoftime) {\n $scope.dataSource.unitOfTime = unitoftime.db;\n }\n }\n\n $scope.ok = function () {\n // Create dataSource\n dataSourceService().add($scope.dataSource).then(function (dataSource) {\n $scope.publish(\"SendDataSourceCreated\", dataSource);\n $uibModalInstance.close();\n $state.go('admindatasource', { id: dataSource.id }, { reload: false });\n });\n\n }\n $scope.close = function () {\n $uibModalInstance.dismiss('cancel');\n };\n }]);","angular\n .module('DigiLean')\n .directive(\"registrationtarget\", ['dataSourceService',\n function (dataSourceService) {\n return {\n templateUrl: 'registrationtarget.html',\n restrict: 'E',\n scope: {\n 'settings': '=',\n 'settingsChangeHandler': '&',\n 'isAdminMode': '='\n },\n link: function (scope, elem, attrs) {\n\n scope.operators = [\n {dbCode:\">=\", html:\">=\"},\n {dbCode:\">\", html:\">\"},\n {dbCode:\"<=\", html:\"<=\"},\n {dbCode:\"<\", html:\"<\"},\n ];\n\n scope.redoperators = [\n {dbCode:\">=\", html:\">=\"},\n {dbCode:\">\", html:\">\"},\n {dbCode:\"<=\", html:\"<=\"},\n {dbCode:\"<\", html:\"<\"},\n ];\n\n scope.selectedGreenOperator = null;\n scope.selectedRedOperator = null;\n\n scope.greenvalue = null;\n scope.redvalue = null;\n scope.yellowDescription = \"\";\n\n scope.notValidExpression = false;\n scope.notValidDate = false;\n\n scope.targets = [];\n \n scope.selectedDate = moment().startOf('day').toDate(); \n scope.value = null;\n scope.selectedItemForUpdate = null;\n scope.isProcessing = false;\n\n scope.$watch('settings', function (settings) {\n // apply\n if (settings) {\n scope.setDataSource(settings.dataSource.id);\n setTargets(settings.dataSource.id);\n } \n });\n\n scope.setDataSource = function (id) {\n dataSourceService().get(id).then(function(dataSource) {\n scope.dataSource = dataSource;\n var componentSettings = {\n dataSource: dataSource\n };\n scope.settingsChangeHandler({ settings: componentSettings });\n // Add value property for element\n angular.forEach(scope.dataSource.elements, function(element) {\n element.value = null;\n });\n });\n }\n\n function setTargets(dataSourceId){\n dataSourceService().getTargets(dataSourceId).then(function(targets) {\n angular.forEach(targets, function (registration) {\n if(registration.greenOperator && registration.greenValue){\n registration.yellowDescription = getYellowOperator(registration.greenOperator) + \" \" + registration.greenValue;\n if(registration.redOperator && registration.redvalue) {\n registration.yellowDescription += \" and \";\n }\n }\n if(registration.redOperator && registration.redValue){\n registration.yellowDescription += getYellowOperator(registration.redOperator) + \" \" + registration.redValue;\n }\n var validFromDate = moment(registration.validFrom);\n if(validFromDate.isSame(scope.selectedDate)){\n scope.notValidDate = true;\n }\n });\n scope.targets = targets;\n });\n }\n\n scope.toDate = moment().toDate();\n\n scope.selectedDateChangedEvent = function ($event) {\n if ($event.originalEvent.detail) {\n let date = $event.originalEvent.detail\n selectedDateChanged(date)\n }\n }\n\n const selectedDateChanged = function (date) {\n scope.selectedDate = date\n scope.notValidDate = false\n angular.forEach(scope.targets, function (target) {\n var validFromDate = moment(target.validFrom)\n if(validFromDate.isSame(scope.selectedDate)){\n scope.notValidDate = true\n }\n })\n }\n\n scope.greenChanged = function(){\n if(scope.selectedGreenOperator && scope.greenvalue){\n setAvailableRedOperator(scope.selectedGreenOperator.dbCode);\n }\n setYellowText();\n validateExpression();\n }\n\n function validateExpression(){\n if(scope.selectedGreenOperator && scope.greenvalue &&\n scope.selectedRedOperator && scope.redvalue){\n scope.greenvalue = scope.greenvalue.toString().replace(',', '.');\n scope.redvalue = scope.redvalue.toString().replace(',', '.'); \n if(scope.selectedGreenOperator.dbCode === \">=\" || scope.selectedGreenOperator.dbCode === \">\"){\n if(Number(scope.greenvalue) < Number(scope.redvalue)){\n scope.notValidExpression = true;\n return;\n }\n } else {\n if(Number(scope.greenvalue) > Number(scope.redvalue)){\n scope.notValidExpression = true;\n return;\n }\n }\n }\n scope.notValidExpression = false; \n }\n\n function setYellowText() {\n if(scope.selectedGreenOperator && scope.greenvalue){\n scope.yellowDescription = getYellowOperator(scope.selectedGreenOperator.dbCode) + \" \" + scope.greenvalue;\n if(scope.selectedRedOperator && scope.redvalue) {\n scope.yellowDescription += \" and \";\n }\n }\n if(scope.selectedRedOperator && scope.redvalue){\n scope.yellowDescription += getYellowOperator(scope.selectedRedOperator.dbCode) + \" \" + scope.redvalue;\n }\n }\n\n scope.redChanged = function(){\n setYellowText();\n validateExpression();\n }\n\n function setAvailableRedOperator(greenoperator){\n var newRedOperators;\n switch (greenoperator) {\n case \">=\":\n newRedOperators = [\n {dbCode:\"<=\", html:\"<=\"},\n {dbCode:\"<\", html:\"<\"}\n ];\n break;\n case \">\":\n newRedOperators = [\n {dbCode:\"<=\", html:\"<=\"},\n {dbCode:\"<\", html:\"<\"}\n ];\n break;\n case \"<=\":\n newRedOperators = [\n {dbCode:\">=\", html:\">=\"},\n {dbCode:\">\", html:\">\"}\n ];\n break;\n case \"<\":\n newRedOperators = [\n {dbCode:\">=\", html:\">=\"},\n {dbCode:\">\", html:\">\"}\n ];\n break; \n } \n if(!(scope.redoperators && scope.redoperators[0].dbCode === newRedOperators[0].dbCode && scope.redoperators.length === newRedOperators.length)){\n scope.redoperators = newRedOperators;\n } \n }\n\n function getYellowOperator(operator){\n switch (operator) {\n case \">=\":\n return \"<\";\n case \">\":\n return \"<=\";\n case \"<=\":\n return \">\";\n case \"<\":\n return \">=\";\n }\n }\n scope.save = function () {\n scope.isProcessing = true;\n var utcDate = moment.utc(scope.selectedDate).format();\n var redOperator = null;\n if(scope.selectedRedOperator){\n redOperator = scope.selectedRedOperator.dbCode;\n }\n var registration = {\n datasourceid: scope.dataSource.id,\n validFrom: utcDate, \n greenvalue: scope.greenvalue,\n greenoperator: scope.selectedGreenOperator.dbCode,\n redvalue: scope.redvalue,\n redoperator: redOperator,\n }\n\n dataSourceService().addTarget(scope.dataSource.id,registration).then(function (savedRegistration) {\n clearRegistration();\n setTargets(scope.dataSource.id);\n });\n }\n\n scope.delete = function (target) {\n dataSourceService().deleteTarget(target.id).then(function (result) {\n //Remove target from targets\n var index = scope.targets.indexOf(target);\n if (index > -1) {\n scope.targets.splice(index, 1);\n }\n });\n }\n\n\n function clearRegistration() {\n scope.isProcessing = false;\n selectedDateChanged(moment().startOf('day').toDate());\n \n scope.selectedGreenOperator = null;\n scope.selectedRedOperator = null;\n\n scope.greenvalue = null;\n scope.redvalue = null;\n scope.yellowDescription = \"\";\n\n scope.notValidExpression = false;\n }\n\n }\n\n }\n }]);\n","var DigiLean = angular.module('DigiLean'); \nDigiLean.controller('deviationCustomFieldAdminController', ['$scope', '$filter', '$stateParams', '$location', '$timeout', '$translate', 'deviationService','modalService','dataListService','languageAdminService',\nfunction ($scope, $filter, $stateParams, $location, $timeout, $translate, deviationService, modalService, dataListService, languageAdminService) {\n $scope.savedSuccessfully = false;\n $scope.message = \"\";\n $scope.isElementRegistrationNew = false;\n $scope.selectedAttributeType = null;\n $scope.selectedDataList = null;\n var alreadyUpdated = false;\n\n $scope.customfields = [];\n var load = function () {\n deviationService().getAllCustomFields().then(function (fields) {\n for(var i=0; i {\n item.customLanguageLabel = item.customLanguageLabels.find(q => q.languageCode == $scope.selectedLanguage.languageCode)\n });\n }\n\n $scope.updateTranslationLabel = function (item) {\n if(item.customLanguageLabel){\n if(!item.customLanguageLabel.languageCode){ // new translation label\n item.customLanguageLabel.languageCode = $scope.selectedLanguage.languageCode;\n }\n deviationService().updateCustomFieldTranslationLabel(item.id, item.customLanguageLabel).then(function (result) {\n if(result){\n var existing = item.customLanguageLabels.find(q => q.languageCode == $scope.selectedLanguage.languageCode)\n if(existing){\n existing = result;\n } else {\n item.customLanguageLabels.push(result);\n }\n }\n })\n } \n }\n $scope.setItemViewMode = function (item) {\n item.isEditMode = false;\n $scope.message = \"\";\n $scope.updateTranslationLabel(item);\n if(!alreadyUpdated)\n {\n deviationService().updateDeviationCustomField(item.id, item).then(function (item) {\n })\n }\n alreadyUpdated = false;\n\n }\n $scope.setItemEditMode = function (item) {\n item.isEditMode = true;\n if(item.dataListId && $scope.datalists){\n var existing = $scope.datalists.find(q => q.id == item.dataListId)\n if(existing){\n item.dataListName = existing.name;\n }\n }\n $scope.message = \"\";\n }\n\n $scope.updateItem = function (item) {\n deviationService().updateDeviationCustomField(item.id, item).then(function (item) {\n })\n alreadyUpdated = true;\n }\n\n \n $scope.customTypes = [\n { id: \"text\", label: $translate.instant('ADMIN_DATA_DATASOURCE_SMALLTEXT'), languageCode: \"ADMIN_DATA_DATASOURCE_SMALLTEXT\" },\n { id: \"description\", label:$translate.instant('ADMIN_DATA_DATASOURCE_LARGERTEXT'), languageCode: \"ADMIN_DATA_DATASOURCE_LARGERTEXT\", sourceColumn: \"description\" },\n { id: \"number\", label: $translate.instant('ADMIN_DATA_DATASOURCE_NUMBER'), languageCode: \"ADMIN_DATA_DATASOURCE_NUMBER\" },\n { id: \"bool\", label: $translate.instant('ADMIN_DATA_DATASOURCE_BOOLEAN'), languageCode: \"ADMIN_DATA_DATASOURCE_BOOLEAN\" },\n { id: \"list\", label: $translate.instant('ADMIN_DATA_LISTS'), languageCode: \"ADMIN_DATA_LISTS\" }\n ];\n\n $scope.addCustomField = function () {\n $scope.message = \"\";\n $scope.isElementRegistrationNew = true; \n $scope.newField =\n {label: \"\",\n type: null,\n sortOrder:0} \n };\n\n\n $scope.selectedAttributeTypeChanged = function(item){\n $scope.newField.type = item.type;\n $scope.selectedAttributeType = item\n }\n\n $scope.deleteCustomField = function (field) {\n $scope.isElementRegistrationNew = true; \n if(field.id){\n $translate(['COMMON_CANCEL', 'COMMON_DELETE', 'ADMIN_MESSAGE_DELETE_DEVIATION_CUSTOMFIELD_CONFIRMATION']).then(function (translations) {\n var modalOptions = {\n closeButtonText: translations.COMMON_CANCEL,\n actionButtonText: translations.COMMON_DELETE,\n headerText: translations.COMMON_DELETE + ' ' + field.label + '?',\n bodyText: translations.ADMIN_MESSAGE_DELETE_DEVIATION_CUSTOMFIELD_CONFIRMATION\n };\n modalService.showModal({}, modalOptions).then(function (result) {\n var index = $scope.customfields.indexOf(field);\n $scope.customfields.splice(index, 1);\n $scope.isElementRegistrationNew = false;\n deviationService().deleteDeviationCustomField(field.id).then(function() { \n });\n });\n });\n } \n };\n\n $scope.saveElement = function (field) {\n $scope.message = \"\";\n if(!field.label){\n $scope.message = $translate.instant('ADMIN_DATA_FIELD_MISSING') + \": \" + $translate.instant('COMMON_LABEL');\n return;\n }\n if(!$scope.selectedAttributeType){\n $scope.message = $translate.instant('ADMIN_DATA_FIELD_MISSING') + \": \" + $translate.instant('COMMON_TYPE');\n return;\n }\n if($scope.selectedAttributeType.id === 'list' && $scope.selectedDataList === null){\n $scope.message = $translate.instant('ADMIN_DATA_FIELD_MISSING') + \": \" + $translate.instant('COMMON_SOURCE');\n return;\n }\n $scope.isElementRegistrationNew = false; \n field.type = $scope.selectedAttributeType.id;\n if($scope.selectedDataList){\n field.dataListId = $scope.selectedDataList.id\n }\n deviationService().addDeviationCustomField(field).then(function(result) { \n $scope.selectedAttributeType = null;\n $scope.selectedDataList = null;\n\n var typeinfo = $filter('filter')($scope.customTypes, { id: result.type })[0];\n if(typeinfo){\n result.typelabel = typeinfo.label;\n } \n if(!result.customLanguageLabels) {\n result.customLanguageLabels = [];\n }\n $scope.customfields.push(result); \n }); \n };\n\n}]);","var DigiLean = angular.module('DigiLean');\nDigiLean.directive(\"deviationTypeCategories\", ['$filter', 'deviationService',\n function ($filter, deviationService) {\n return {\n templateUrl: 'deviationTypeCategories.html',\n restrict: 'E',\n scope: {\n 'deviationTypeId': '=',\n 'deviationTypeTitle': '=',\n },\n link: function (scope, elem, attrs) {\n\n scope.categories = [];\n\n scope.$watch(\"deviationTypeId\", function () {\n if (!scope.deviationTypeId) return;\n loadSettings();\n });\n \n function loadSettings(){\n scope.deviationType = {title: \"RUH\"};\n deviationService().getProblemCategories().then(function (categories) {\n scope.categories = categories;\n deviationService().getCategoriesForType(scope.deviationTypeId).then(function(validcategories) { \n var validCategoriesForType = validcategories;\n for(var i=0; i 0) {\n return true;\n } else {\n return false;\n }\n } \n\n scope.toggleShow = function (item) {\n item.problemCategoryId = item.id;\n if(item.show){\n item.deviationTypeId = scope.deviationTypeId;\n deviationService().addDeviationTypeCategory(item).then(function() { \n });\n } else {\n if(item.id){\n deviationService().deleteDeviationTypeCategory(item.id).then(function() { \n });\n }\n }\n };\n\n }\n\n }\n }]);\n","var DigiLean = angular.module('DigiLean');\nDigiLean.directive(\"deviationTypeCauses\", ['$filter', 'deviationService',\n function ($filter, deviationService) {\n return {\n templateUrl: 'deviationTypeCauses.html',\n restrict: 'E',\n scope: {\n 'deviationTypeId': '=',\n 'deviationTypeTitle': '=',\n },\n link: function (scope, elem, attrs) {\n\n scope.causes = [];\n\n scope.$watch(\"deviationTypeId\", function () {\n if (!scope.deviationTypeId) return;\n loadSettings();\n });\n \n function loadSettings(){\n scope.deviationType = {title: \"RUH\"};\n deviationService().getCauses().then(function (causes) {\n scope.causes = causes;\n deviationService().getCausesForType(scope.deviationTypeId).then(function(validcauses) { \n var validCausesForType = validcauses;\n for(var i=0; i 0) {\n return true;\n } else {\n return false;\n }\n } \n\n scope.toggleShow = function (item) {\n item.problemReasonId = item.id;\n if(item.show){\n item.deviationTypeId = scope.deviationTypeId;\n deviationService().addDeviationTypeCause(item).then(function() { \n });\n } else {\n if(item.id){\n deviationService().deleteDeviationTypeCause(item.id).then(function() { \n });\n }\n }\n };\n\n }\n\n }\n }]);\n","var DigiLean = angular.module('DigiLean');\nDigiLean.controller('deviationTypeDetailsController', ['$scope', '$stateParams', '$filter', '$translate', 'deviationService',\n function ($scope, $stateParams, $filter, $translate, deviationService) {\n $scope.id = parseInt($stateParams.id);\n $scope.title = \"\";\n deviationService().getDeviationType($scope.id).then(function(deviationType) {\n $scope.title = deviationType.title;\n });\n $scope.steps = [];\n $scope.steps.push({ id: 'LAYOUT', title: $translate.instant(\"COMMON_LAYOUT\") });\n $scope.steps.push({ id: 'CATEGORIES', title: $translate.instant(\"COMMON_CATEGORIES\") });\n $scope.steps.push({ id: 'CONSEQUENCES', title: $translate.instant(\"DEVIATION_CONSEQUENCE\") });\n $scope.steps.push({ id: 'CAUSES', title: $translate.instant(\"DEVIATION_CAUSES\") });\n $scope.currentStep = $scope.steps[0];\n $scope.selectStep = function (step) {\n $scope.currentStep = step;\n }\n }]);","var DigiLean = angular.module('DigiLean');\nDigiLean.directive(\"deviationTypeSetting\", ['$filter', '$translate', 'deviationService', 'modalService', 'dataListService',\n function ($filter, $translate, deviationService, modalService, dataListService) {\n return {\n templateUrl: 'deviationTypeSetting.html',\n restrict: 'E',\n scope: {\n 'deviationTypeId': '<',\n 'deviationTypeTitle': '=',\n },\n link: function (scope, elem, attrs) {\n\n scope.deviationType = { title: \"\" };//{};\n\n scope.isElementRegistrationNew = false;\n scope.selectedAttributeType = null;\n scope.selectedDataList = null;\n scope.customfields = [];\n\n scope.typeSettings = [\n {\n label: $translate.instant('DEVIATION_INCIDENT_DATE'),\n requiredByDigilean: true,\n type: \"DEVIATION_INCIDENT_DATE\"\n },\n {\n label: $translate.instant('DEVIATION_INCIDENT_TIME'),\n requiredByDigilean: false,\n show: false,\n type: \"DEVIATION_INCIDENT_TIME\"\n },\n {\n label: $translate.instant('COMMON_TITLE'),\n requiredByDigilean: true,\n type: \"TITLE\"\n },\n {\n label: $translate.instant('COMMON_DESCRIPTION'),\n requiredByDigilean: true,\n type: \"DESCRIPTION\"\n },\n {\n label: $translate.instant('COMMON_CATEGORY'),\n requiredByDigilean: true,\n type: \"CATEGORY\"\n },\n {\n label: $translate.instant('COMMON_AREA'),\n requiredByDigilean: false,\n show: false,\n type: \"AREA\"\n },\n {\n label: $translate.instant('COMMON_PROJECT'),\n requiredByDigilean: false,\n show: false,\n type: \"PROJECT\"\n },\n {\n label: $translate.instant('COMMON_ASSET'),\n requiredByDigilean: true,\n type: \"ASSET\"\n },\n {\n label: $translate.instant('COMMON_REPORTED_BY'),\n requiredByDigilean: true,\n type: \"REPORTED_BY\"\n },\n {\n label: $translate.instant('DEVIATION_TYPE_OF_LOSS'),\n requiredByDigilean: true,\n type: \"DEVIATION_TYPE_OF_LOSS\"\n },\n {\n label: $translate.instant('DEVIATION_CAUSES'),\n requiredByDigilean: true,\n type: \"DEVIATION_CAUSES\"\n },\n {\n label: $translate.instant('DEVIATION_SEVERITY'),\n requiredByDigilean: true,\n type: \"DEVIATION_SEVERITY\"\n }\n ];\n\n scope.customTypes = [\n { id: \"text\", label: $translate.instant('ADMIN_DATA_DATASOURCE_SMALLTEXT'), languageCode: \"ADMIN_DATA_DATASOURCE_SMALLTEXT\" },\n { id: \"description\", label: $translate.instant('ADMIN_DATA_DATASOURCE_LARGERTEXT'), languageCode: \"ADMIN_DATA_DATASOURCE_LARGERTEXT\", sourceColumn: \"description\" },\n { id: \"number\", label: $translate.instant('ADMIN_DATA_DATASOURCE_NUMBER'), languageCode: \"ADMIN_DATA_DATASOURCE_NUMBER\" },\n { id: \"bool\", label: $translate.instant('ADMIN_DATA_DATASOURCE_BOOLEAN'), languageCode: \"ADMIN_DATA_DATASOURCE_BOOLEAN\" },\n { id: \"list\", label: $translate.instant('ADMIN_DATA_LISTS'), languageCode: \"ADMIN_DATA_LISTS\" }\n ];\n\n\n scope.$watch(\"deviationTypeId\", function () {\n if (!scope.deviationTypeId) return;\n loadSettings();\n });\n\n function loadSettings() {\n deviationService().getFieldsForType(scope.deviationTypeId).then(function (fields) {\n for (var i = 0; i < fields.length; i++) {\n var field = $filter('filter')(scope.typeSettings, { type: fields[i].type })[0];\n if (field && fields[i].type != 'description') {\n field.id = fields[i].id;\n field.show = true;\n } else { //custom field\n fields[i].isEditMode = false;\n var typeinfo = $filter('filter')(scope.customTypes, { id: fields[i].type })[0];\n if (typeinfo) {\n fields[i].typelabel = typeinfo.label;\n }\n fields[i].show = true;\n scope.customfields.push(fields[i]);\n }\n\n }\n deviationService().getAllCustomFields().then(function (allfields) {\n for (var i = 0; i < allfields.length; i++) {\n var field = allfields[i];\n var exists = $filter('filter')(scope.customfields, { deviationCustomFieldId: allfields[i].id })[0];\n if (!exists && allfields[i].type != 'DEVIATION_INCIDENT_TIME') {\n var typeinfo = $filter('filter')(scope.customTypes, { id: allfields[i].type })[0];\n if (typeinfo) {\n field.typelabel = typeinfo.label;\n }\n field.show = false;\n field.deviationCustomFieldId = field.id;\n scope.customfields.push(field);\n }\n }\n });\n\n \n });\n }\n\n dataListService().getLists().then(function (list) {\n if (list) {\n scope.datalists = list;\n }\n });\n\n scope.addCustomField = function () {\n scope.isElementRegistrationNew = true;\n scope.newField =\n {\n deviationTypeId: scope.deviationTypeId,\n label: \"\",\n requiredByDigilean: false,\n show: true,\n type: null,\n isMandatory: false\n }\n\n };\n\n /*\n scope.deleteCustomField = function (field) {\n scope.isElementRegistrationNew = true; \n if(field.id){\n $translate(['COMMON_CANCEL', 'COMMON_DELETE', 'ADMIN_MESSAGE_DELETE_DATA_CONFIRMATION']).then(function (translations) {\n var modalOptions = {\n closeButtonText: translations.COMMON_CANCEL,\n actionButtonText: translations.COMMON_DELETE,\n headerText: translations.COMMON_DELETE + ' ' + field.label + '?',\n bodyText: translations.ADMIN_MESSAGE_DELETE_DATA_CONFIRMATION\n };\n modalService.showModal({}, modalOptions).then(function (result) {\n var index = scope.customfields.indexOf(field);\n scope.customfields.splice(index, 1);\n scope.isElementRegistrationNew = false;\n deviationService().deleteDeviationTypeField(field.id).then(function() { \n });\n });\n });\n } \n };*/\n\n\n scope.setItemViewMode = function (item) {\n item.isEditMode = false;\n }\n scope.setItemEditMode = function (item) {\n item.isEditMode = true;\n }\n\n scope.toggleMandatoryField = function (item) {\n item.isMandatory = !item.isMandatory;\n scope.updateItem(item);\n }\n\n scope.saveElement = function (field) {\n scope.isElementRegistrationNew = false;\n field.type = scope.selectedAttributeType.id;\n if (scope.selectedDataList) {\n field.dataListId = scope.selectedDataList.id\n }\n deviationService().addDeviationTypeField(field).then(function (result) {\n scope.selectedAttributeType = null;\n scope.selectedDataList = null;\n\n var typeinfo = $filter('filter')(scope.customTypes, { id: result.type })[0];\n if (typeinfo) {\n result.typelabel = typeinfo.label;\n result.show = true;\n }\n scope.customfields.push(result);\n });\n };\n\n scope.updateItem = function (item) {\n deviationService().updateDeviationTypeField(item.id, item).then(function (item) {\n })\n }\n\n scope.selectedAttributeTypeChanged = function (item) {\n scope.newField.type = item.type;\n scope.selectedAttributeType = item\n }\n\n scope.toggleShow = function (field) {\n\n if (field.show) {\n field.deviationTypeId = scope.deviationTypeId;\n field.id = 0;\n deviationService().addDeviationTypeField(field).then(function (savedField) {\n field.id = savedField.id;\n });\n } else {\n if (field.id) {\n deviationService().deleteDeviationTypeField(field.id).then(function () {\n });\n }\n }\n }\n\n\n\n function updateItemsOrder(e, ui) {\n var items = ui.item.sortable.droptargetModel;\n var itemsSortOrder = {\n deviationTypeId: scope.deviationTypeId,\n sortOrders: []\n }\n\n var index = 0;\n items.forEach(item => {\n if (item.show) {\n itemsSortOrder.sortOrders.push({\n id: item.id,\n sortOrder: index,\n });\n }\n index += 1;\n });\n deviationService().updateItemsSortOrder(scope.deviationTypeId, itemsSortOrder);\n }\n\n scope.itemsSortableOptions = {\n connectWith: \".summaryList\",\n handle: \".drag-handle\",\n placeholder: \"summary-item-sortable-placeholder\",\n stop: updateItemsOrder\n };\n\n\n\n }\n\n }\n }]);\n","angular\n .module('DigiLean')\n .controller(\"editDeviationTypeController\", ['$scope','$translate', 'deviationService', 'languageAdminService','$uibModalInstance', 'deviationTypeId', \n function ($scope, $translate,deviationService, languageAdminService, $uibModalInstance, deviationTypeId) {\n\n\n $scope.deviationTypeId = deviationTypeId;\n $scope.deviationType = {};\n\n var defaultConfig = {languageCode: '',\n languageLabel: $translate.instant('ADMIN_DEFAULT_CONFIG'),\n nativeLabel: $translate.instant('ADMIN_DEFAULT_CONFIG')\n };\n $scope.selectedLanguage = defaultConfig;\n $scope.languages = languageAdminService().getSupportedLanguages()\n $scope.languages.unshift($scope.selectedLanguage);\n $scope.selectedCustomLanguageLabel;\n\n $scope.changeLanguage = function (language) {\n if(!language) return;\n $scope.selectedLanguage = language;\n $scope.selectedCustomLanguageLabel = $scope.deviationType.customLanguageLabels.find(q => q.languageCode == $scope.selectedLanguage.languageCode)\n if(!$scope.selectedCustomLanguageLabel) $scope.selectedCustomLanguageLabel = {};\n }\n\n $scope.updateTranslationLabel = function (translabel) {\n var existing = $scope.deviationType.customLanguageLabels.find(q => q.languageCode == $scope.selectedLanguage.languageCode)\n \n if(!existing){\n var customLanguageLabel = {\n id:0,\n languageCode: $scope.selectedLanguage.languageCode,\n label: translabel.label,\n description: translabel.description\n }\n $scope.deviationType.customLanguageLabels.push(customLanguageLabel);\n } else {\n existing.label = translabel.label;\n existing.description = translabel.description;\n }\n }\n\n deviationService().getTranslationsWithDeviationType($scope.deviationTypeId).then(function(type){\n $scope.deviationType = type;\n });\n \n\n $scope.ok = function () {\n deviationService().updateDeviationType($scope.deviationType).then(function(type){\n $uibModalInstance.close(type)\n }); \n };\n\n $scope.close = function () {\n $uibModalInstance.dismiss('cancel');\n };\n }]);\n","angular\n .module('DigiLean')\n .controller(\"newDeviationTypeController\", ['$scope', 'deviationService', '$uibModalInstance',\n function ($scope, deviationService, $uibModalInstance) {\n\n $scope.title = \"\";\n $scope.description = \"\";\n\n $scope.ok = function () {\n var deviationType = {\n title: $scope.title,\n description: $scope.description\n }\n deviationService().createDeviationType(deviationType).then(function(type){\n $uibModalInstance.close(type)\n }); \n };\n $scope.currentStep = {};\n $scope.selectStep = function (step) {\n $scope.currentStep = step;\n }\n \n $scope.close = function () {\n $uibModalInstance.dismiss('cancel');\n };\n }]);\n","angular\n.module('DigiLean')\n.controller('learningDesignerController', ['$scope', '$stateParams', '$filter', 'learningService', 'authService', '$state',\n function ($scope, $stateParams, $filter, learningService, authService, $state) {\n $scope.id = parseInt($stateParams.id);\n $scope.selectedPageId = null;\n $scope.canRepublish = false\n $scope.isKaizen = authService.hasRole('KaizenAdmin')\n\n if ($stateParams.pageid) {\n $scope.selectedPageId = parseInt($stateParams.pageid);\n }\n $scope.isEditMode = true;\n \n $scope.setEditMode = function (mode) {\n $scope.isEditMode = mode;\n }\n\n async function setPublishStatus(status) {\n $scope.material.publishStatus = status;\n let respone = await learningService().updatePublishStatus($scope.id, status)\n if(respone.errorVectorizingPageIds && respone.errorVectorizingPageIds.length > 0)\n {\n let errorPageIds = respone.errorVectorizingPageIds.join(\", \");\n alert(`Pages with Id(s) ${errorPageIds} could not be vectorized.`)\n }\n }\n $scope.setPublishStatus = setPublishStatus\n $scope.republish = function() {\n setPublishStatus($scope.material.publishStatus).then(res => {\n checkReplishState()\n })\n }\n $scope.pages = [];\n function checkReplishState() {\n learningService().checkRepublish($scope.id).then(function (publishStatus) {\n if (publishStatus)\n $scope.canRepublish = publishStatus.canRepublish\n })\n }\n function getItems() {\n learningService().getItems($scope.id).then(function (summary) {\n $scope.material = summary.material;\n summary.items.forEach(element => {\n $scope.pages = $scope.pages.concat(element.pages) ; \n });\n // Set currentpage\n setCurrentPage($scope.selectedPageId)\n })\n }\n getItems()\n checkReplishState()\n\n $scope.$on('$locationChangeSuccess', function(e, newUrl) {\n // Use $state.params to update as needed\n // Needed to handle browser back/forward\n if (!newUrl.includes(\"learningdesigner\") )return; \n\n if ($stateParams.pageid) {\n $scope.selectedPageId = parseInt($stateParams.pageid);\n setCurrentPage($scope.selectedPageId);\n } else {\n $scope.selectFrontPage();\n }\n });\n\n $scope.frontPage = null;\n $scope.selectedPage = null;\n $scope.selectedPageType = \"frontPage\";\n $scope.selectFrontPage = function (page) {\n $scope.selectedPageType = \"frontPage\";\n $scope.selectedPage = null;\n $scope.selectedPageId = null;\n $state.go('.', {pageid: \"\"});\n }\n\n $scope.selectPage = function (page) {\n $scope.selectedPage = page;\n $scope.selectedPageType = \"normalPage\";\n $scope.selectedPageId = page.id;\n $state.go('.', {pageid: page.id});\n }\n\n $scope.pageSelectHandler = function (page) {\n $scope.selectPage(page);\n }\n\n var setCurrentPage = function(pageId) {\n\n if (!pageId) return;\n var currentPage = $filter('filter')($scope.pages, { id: pageId });\n if (currentPage.length > 0) {\n $scope.selectPage(currentPage[0]);\n }\n \n }\n $scope.subscribe('LearningItemTitleChanged', checkReplishState)\n $scope.subscribe('LearningMaterialDeleted', checkReplishState)\n $scope.subscribe('LearningItemDeleted', checkReplishState)\n $scope.subscribe('LearningItemSectionUpdated', checkReplishState)\n \n }])","angular\n .module('DigiLean').directive(\"learningFrontPage\", ['$filter', '$translate', 'learningService', 'debounce',\n function ($filter, $translate, learningService, debounce) {\n return {\n templateUrl: 'learningFrontPage.html',\n restrict: 'E',\n scope: {\n 'material': '<',\n 'isEditMode': '<',\n },\n link: function (scope, elem, attrs) {\n \n scope.pageTitle = {\n isEditMode : false\n }\n\n scope.$watch(\"material\", function (pageId) {\n if (!scope.material) return;\n \n });\n\n scope.$watch(\"isEditMode\", function (isEditMode) {\n // if (!scope.isEditMode) {\n // setAllSectionsEditMode(false);\n // scope.pageTitle.isEditMode = false;\n // };\n });\n\n\n scope.pageTitleChanged = function (page) {\n learningService().updateItemTitle(page.id, page.title).then(function (itemTitle) {\n\n });\n }\n\n\n\n function loadPage(pageId) {\n learningService().getLearningMaterial(pageId).then(function (page) {\n scope.material = page;\n });\n }\n\n \n }\n\n }\n }]);\n","angular\n .module('DigiLean').directive(\"learningPage\", ['$filter', '$translate', 'learningService', 'learningPublicService', 'debounce',\n function ($filter, $translate, learningService, learningPublicService, debounce) {\n return {\n templateUrl: 'learningPage.html',\n restrict: 'E',\n scope: {\n 'pageId': '<',\n 'isEditMode': '<',\n 'isExternal': '<',\n 'hideFooter': '<'\n },\n link: function (scope, elem, attrs) {\n \n scope.pageTitle = {\n isEditMode : false\n }\n\n\n scope.sectionsSortableOption = {\n handle: \".drag-handle\",\n placeholder: \"section-sortable-placeholder\",\n stop: sortOrderChanged\n };\n\n\n scope.subscribe('LearningItemTitleChanged', function (titleChanged) {\n if (!scope.page) return;\n if (scope.page.id == titleChanged.itemId) {\n scope.page.title = titleChanged.title;\n }\n });\n\n\n scope.$watch(\"pageId\", function (pageId) {\n if (!scope.pageId) return;\n loadPage(pageId);\n });\n scope.title = \"\";\n\n scope.$watch(\"isEditMode\", function (isEditMode) {\n if (!scope.isEditMode) {\n setAllSectionsEditMode(false);\n scope.pageTitle.isEditMode = false;\n };\n });\n\n \n scope.pageTitleChanged = function (page) {\n scope.title = page.title;\n learningService().updateItemTitle(page.id, page.title).then(function (itemTitle) {\n\n });\n }\n\n scope.setSectionViewMode = function (section) {\n section.isEditMode = false;\n }\n scope.setSectionEditMode = function (section) {\n if(section.sectionType == \"image\"){\n for (var index = 0; index < scope.page.sections.length; index++) {\n var tempsection = scope.page.sections[index];\n if(tempsection.sectionType == \"image\"){\n tempsection.isEditMode = false;\n }\n }\n }\n section.isEditMode = true;\n }\n\n\n scope.removeSection = function (section) {\n\n var index = scope.page.sections.indexOf(section);\n scope.page.sections.splice(index, 1);\n learningService().deleteSection(section.id).then(function () {\n\n });\n }\n scope.addSection = function (sectionType) {\n var section = {\n learningItemId: scope.pageId,\n sectionType: sectionType,\n };\n learningService().createSection(section).then(function (savedSection) {\n savedSection.isEditMode = true;\n scope.page.sections.push(savedSection);\n updatePageSectionSortOrder(scope.page.sections);\n })\n }\n\n function loadPage(pageId) {\n learningPublicService.getPage(scope.isExternal, pageId).then(function (page) {\n scope.page = page;\n scope.title = page.title;\n setAllSectionsEditMode(false);\n // If only one section which is text than set it to edit mode directly\n if (scope.isEditMode) {\n if (scope.page.sections.length == 1 && scope.page.sections[0].sectionType == \"text\") {\n scope.page.sections[0].isEditMode = true;\n }\n } \n \n window.scrollTo(0, 0);\n });\n }\n\n function setAllSectionsEditMode(isEditMode) {\n if (!scope.page) return;\n for (let index = 0; index < scope.page.sections.length; index++) {\n const section = scope.page.sections[index];\n section.isEditMode = isEditMode;\n }\n }\n\n function sortOrderChanged(e, ui) {\n\n var sections = ui.item.sortable.droptargetModel;\n updatePageSectionSortOrder(sections);\n }\n\n function updatePageSectionSortOrder(sections) {\n var pageSectionSortOrder = {\n pageId: scope.pageId,\n sortOrders: []\n }\n var index = 0;\n sections.forEach(section => {\n pageSectionSortOrder.sortOrders.push({\n id: section.id,\n sortOrder: index\n });\n index += 1;\n });\n learningService().updatePageSectionSortOrder(pageSectionSortOrder);\n }\n }\n\n }\n }]);\n","angular\n .module('DigiLean').directive(\"learningSummary\", ['$filter', '$translate', 'learningService', 'debounce',\n function ($filter, $translate, learningService, debounce) {\n return {\n templateUrl: 'learningSummary.html',\n restrict: 'E',\n scope: {\n 'materialId': '<',\n 'isEditMode': '<',\n 'selectedPageId': '<',\n 'pageSelectHandler': '&',\n },\n link: function ($scope, elem, attrs) {\n \n $scope.$watch(\"materialId\", function (materialId) {\n if (!$scope.materialId) return;\n loadSummary(materialId);\n });\n\n $scope.$watch(\"isEditMode\", function (isEditMode) {\n if (!$scope.isEditMode) {\n setAllItemsEditMode(false);\n };\n });\n $scope.$watch(\"selectedPageId\", function (selectedPageId) {\n setSelectPageId(selectedPageId);\n });\n var currentPageId = null;\n var setSelectPageId = function(selectedPageId) {\n if (!selectedPageId) {\n $scope.selectedPage = null;\n return;\n } \n if (currentPageId == selectedPageId) return;\n if (!$scope.summary) return;\n $scope.summary.forEach(element => {\n element.pages.forEach(page => {\n if(page.id == selectedPageId) {\n $scope.selectedPage = page;\n }\n });\n \n });\n }\n \n function setAllItemsEditMode(isEditMode) {\n for (let index = 0; index < $scope.summary.length; index++) {\n const item = $scope.summary[index];\n item.isEditMode = isEditMode;\n if (item.pages) {\n for (let i = 0; i < item.pages.length; i++) {\n const page = item.pages[i];\n page.isEditMode = isEditMode;\n }\n }\n }\n }\n $scope.selectedPage = null;\n $scope.selectPage = function (page) {\n var payLoad = {\n page: page\n }\n $scope.selectedPage = page;\n currentPageId = page.id;\n $scope.pageSelectHandler(payLoad);\n }\n $scope.setItemViewMode = function (item) {\n item.isEditMode = false;\n }\n $scope.setItemEditMode = function (item) {\n item.isEditMode = true;\n $scope.selectPage(item);\n }\n \n $scope.removeItem = function (item) {\n learningService().deleteItem(item.id).then(function () {\n loadSummary($scope.materialId);\n });\n }\n \n \n $scope.itemTitleChanged = function (item) {\n learningService().updateItemTitle(item.id, item.title).then(function (itemTitle) {\n \n });\n }\n \n function updateSummarySortOrder(e, ui) {\n // if (materialId !== sourceChapterId && !ui.item.sortable.received) return;\n var chapters = ui.item.sortable.droptargetModel;\n var summarySortOrder = {\n materialId: $scope.materialId,\n sortOrders: []\n }\n \n var index = 0;\n chapters.forEach(page => {\n summarySortOrder.sortOrders.push({\n id: page.id,\n sortOrder: index\n });\n index += 1;\n });\n learningService().updateSummarySortOrder(summarySortOrder);\n }\n \n function updatePageListSortOrder(e, ui) {\n var target = ui.item.sortable.droptarget[0];\n var source = ui.item.sortable.source[0];\n var chapterId = $(target).attr(\"data-id\");\n var sourceChapterId = $(source).attr(\"data-id\");\n // if the sort event is part of move, we will wait for recieved flag to complete, otherwise items will not be correct.\n if (chapterId !== sourceChapterId && !ui.item.sortable.received) return;\n var pages = ui.item.sortable.droptargetModel;\n var chapterSortOrder = {\n chapterId: chapterId,\n sortOrders: []\n }\n \n var index = 0;\n pages.forEach(page => {\n chapterSortOrder.sortOrders.push({\n id: page.id,\n sortOrder: index\n });\n index += 1;\n });\n learningService().updateChapterSortOrder(chapterSortOrder);\n }\n \n $scope.summarySortableOptions = {\n connectWith: \".summaryList\",\n handle: \".drag-handle\",\n placeholder: \"summary-item-sortable-placeholder\",\n stop: updateSummarySortOrder\n };\n $scope.pageListSortableOptions = {\n connectWith: \".chapter-page-list\",\n handle: \".drag-handle\",\n placeholder: \"summary-item-sortable-placeholder\",\n stop: updatePageListSortOrder\n };\n \n $scope.summary = [];\n function loadSummary(materialId) {\n learningService().getItems(materialId).then(function (summary) {\n $scope.material = summary.material;\n $scope.frontPage = summary.material;\n $scope.summary = summary.items;\n setSelectPageId($scope.selectedPageId);\n });\n }\n \n \n $scope.addChapter = function () {\n var chapter = {\n learningMaterialId: $scope.materialId,\n title: $translate.instant(\"COMMON_TITLE\"),\n itemType: \"chapter\",\n pages: [],\n parentSortOrder: 0,\n sortOrder: $scope.summary.length + 1\n }\n learningService().createItem(chapter).then(function (item) {\n $scope.summary.push(item);\n $scope.setItemEditMode(item);\n })\n \n }\n \n $scope.addPage = function (addToChapter) {\n // add to chapter\n var page = {\n learningMaterialId: $scope.materialId,\n title: $translate.instant(\"COMMON_TITLE\"),\n itemType: \"page\",\n sortOrder: $scope.summary.length + 1,\n parentSortOrder: 0,\n }\n if (addToChapter) {\n page.parentId = addToChapter.id;\n page.sortOrder = addToChapter.sortOrder;\n page.parentSortOrder = addToChapter.pages.length + 1;\n learningService().createItem(page).then(function (item) {\n addToChapter.pages.push(item);\n $scope.setItemEditMode(item);\n $scope.selectPage(item);\n })\n \n } else {\n learningService().createItem(page).then(function (item) {\n $scope.summary.push(item);\n $scope.setItemEditMode(item);\n })\n }\n \n }\n \n $scope.subscribe('LearningItemTitleChanged', function (titleChanged) {\n for (let index = 0; index < $scope.summary.length; index++) {\n const element = $scope.summary[index];\n if (element.id == titleChanged.itemId) {\n element.title = titleChanged.title;\n break;\n }\n for (let index = 0; index < element.pages.length; index++) {\n const page = element.pages[index];\n if (page.id == titleChanged.itemId) {\n page.title = titleChanged.title;\n break;\n }\n } \n }\n });\n \n }\n\n }\n }]);\n","angular\n .module('DigiLean').directive(\"fileSection\", ['learningService','debounce',\n function (learningService, debounce) {\n return {\n templateUrl: 'fileSection.html',\n restrict: 'E',\n scope: {\n 'section': '<',\n 'isEditMode': '<',\n },\n link: function (scope, elem, attrs) {\n scope.update = function () {\n if (scope.settings && typeof scope.settings !== \"string\") {\n scope.settings.files = scope.files;\n scope.section.settings = JSON.stringify(scope.settings);\n }\n learningService().updateSection(scope.section);\n // Parse back so we are sure\n //scope.section.settings = JSON.parse(scope.section.settings);\n }\n scope.commitChangesDebounced = debounce(scope.update, 2000, false);\n scope.settings = {\n\n }\n scope.$watch(\"section\", function (section) {\n if (section) {\n // Load settings with file links\n if (section.settings) {\n scope.settings = JSON.parse(section.settings);\n scope.files = scope.settings.files;\n } \n }\n if (!scope.files) {\n scope.files = [];\n }\n });\n\n scope.deleteFile = function (file) {\n var i = scope.files.indexOf(file);\n scope.files.splice(i, 1);\n scope.update();\n }\n\n \n scope.fileUploaded = function (file) {\n scope.update();\n };\n\n }\n\n }\n }]);\n","angular\n .module('DigiLean').directive(\"summarySection\", ['$filter', '$translate', 'learningService', 'debounce',\n function ($filter, $translate, learningService, debounce) {\n return {\n templateUrl: 'summarySection.html',\n restrict: 'E',\n scope: {\n 'section': '<',\n 'isEditMode': '<',\n },\n link: function (scope) {\n scope.update = function (content) {\n scope.section.content = content;\n learningService().updateSection(scope.section);\n };\n scope.commitChangesDebounced = debounce(scope.update, 2000, false);\n scope.contentChanged = function(val) {\n scope.commitChangesDebounced(val);\n };\n scope.froalaOptions = {\n toolbarButtons: [\"bold\", \"italic\", \"underline\", \n \"|\", \"fontSize\", \n \"|\", \"align\", \"formatOL\", \"formatUL\"]\n };\n scope.$watch(\"section\", function (section) {\n if (section) {\n scope.text = scope.section.content;\n }\n });\n scope.$watch(\"isEditMode\", function (isEditMode) {\n scope.text = scope.section.content;\n });\n }\n };\n }]);\n","angular\n .module('DigiLean').directive(\"textSection\", ['$filter', '$translate', 'learningService','debounce','authService',\n function ($filter, $translate, learningService, debounce, authService) {\n return {\n templateUrl: 'textSection.html',\n restrict: 'E',\n scope: {\n 'section': '<',\n 'isEditMode': '<',\n },\n link: function (scope) {\n scope.update = function (content) {\n scope.section.content = content;\n learningService().updateSection(scope.section);\n };\n\n scope.commitChangesDebounced = debounce(scope.update, 2000, false);\n scope.froalaOptions = {\n \n toolbarButtons: ['paragraphFormat','bold', 'italic', 'underline', 'strikeThrough', \n '|', 'fontSize', 'color', 'inlineClass', 'inlineStyle', 'paragraphStyle', 'lineHeight', \n '|', 'align', 'formatOL', 'formatUL', 'outdent', 'indent', 'quote', 'insertLink', 'insertTable', \n '|', 'specialCharacters', 'insertHR', '|', 'undo', 'redo'],\n }\n\n if (authService.hasRole(\"KaizenAdmin\"))\n scope.froalaOptions.toolbarButtons.push(\"html\")\n\n // hook up to froala-editor\n scope.contentChanged = function(val) {\n scope.commitChangesDebounced(val);\n };\n\n scope.$watch(\"section\", function (section) {\n if (section) {\n scope.text = scope.section.content;\n }\n });\n scope.$watch(\"isEditMode\", function (isEditMode) {\n scope.text = scope.section.content;\n });\n \n }\n\n }\n }]);\n","angular\n .module('DigiLean').directive(\"videoSection\", ['$sce', '$translate', 'learningService','debounce',\n function ($sce, $translate, learningService, debounce) {\n return {\n templateUrl: 'videoSection.html',\n restrict: 'E',\n scope: {\n 'section': '<',\n 'isEditMode': '<',\n },\n link: function (scope, elem, attrs) {\n scope.update = function () {\n learningService().updateSection(scope.section);\n }\n scope.trustSrc = function(src) {\n return $sce.trustAsResourceUrl(src);\n }\n scope.videoUrlChanged = function() {\n // format to embed\n scope.videoUrl = scope.videoUrl.replace(\"watch?v=\", \"embed/\")\n scope.section.url = scope.videoUrl;\n scope.update(); \n }\n scope.videoUrl = null;\n scope.$watch(\"section\", function (section) {\n if (section) {\n if (section.url) {\n scope.videoUrl = section.url;\n }\n }\n });\n \n\n \n }\n\n }\n }]);\n","var DigiLean = angular.module('DigiLean');\nDigiLean.controller('learningAdminController', ['$scope', '$filter', 'learningService','$uibModal','$state','$translate','modalService',\n function ($scope, $filter, learningService, $uibModal, $state, $translate, modalService) {\n var load = function() {\n learningService().getLearningMaterials().then(function(materials) {\n $scope.materials = materials;\n });\n }\n\n load();\n\n $scope.editSettings = function(material) {\n $state.go('learningdesigner', { id: material.id }, { reload: false });\n }\n\n $scope.edit = function (material) {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'editLearningMaterial.html',\n controller: 'editLearningMaterialController',\n resolve: {\n materialId: function () {\n return material.id;\n }\n }\n });\n modalInstance.result.then(function (material) {\n var found = $filter('filter')($scope.materials, { id: material.id });\n if (found.length == 1) {\n var index = $scope.materials.indexOf(found[0]);\n $scope.materials[index] = material;\n }\n }, function () {\n });\n }\n\n $scope.addLearningMaterial = function () {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'newLearningMaterial.html',\n controller: 'newLearningMaterialController'\n });\n modalInstance.result.then(function (material) {\n $scope.materials.push(material);\n }, function () {\n });\n }\n\n $scope.deleteMaterial = function (material) {\n var modalOptions = {\n closeButtonText: $translate.instant(\"COMMON_CANCEL\"),\n actionButtonText: $translate.instant(\"COMMON_DELETE\"),\n headerText: $translate.instant(\"COMMON_DELETE\") + ' ' + material.title + '?',\n bodyText: $translate.instant(\"ADMIN_MESSAGE_DELETE_LEARNINGMATERIAL_CONFIRMATION\") \n };\n \n modalService.showModal({}, modalOptions).then(function (result) {\n learningService().deleteLearningMaterial(material.id).then(function (material) { \n load();\n },function (err) {\n });\n });\n }\n }]);","angular\n .module('DigiLean')\n .controller(\"newLearningMaterialController\", ['$scope', 'languageAdminService','learningService', '$uibModalInstance',\n function ($scope, languageAdminService,learningService, $uibModalInstance) {\n\n $scope.title = \"\";\n $scope.description = \"\";\n $scope.imageId = null;\n $scope.languages = languageAdminService().getSupportedLanguages();\n $scope.selectedLanguage = $scope.languages[0];\n\n $scope.setLanguage = function (language) {\n $scope.selectedLanguage = language;\n };\n $scope.ok = function () {\n var material = {\n title: $scope.title,\n description: $scope.description,\n imageId: $scope.imageId,\n language: $scope.selectedLanguage.languageCode\n }\n learningService().createLearningMaterial(material).then(function(created){\n $uibModalInstance.close(created)\n }); \n };\n\n $scope.uploadedFiles = []; // For uploading new attachments, will be connected to dropzone.\n $scope.fileUploaded = function (file) {\n $scope.imageId = file.id;\n };\n \n $scope.close = function () {\n $uibModalInstance.dismiss('cancel');\n };\n }]);\n","angular\n.module('DigiLean')\n.controller('learningMaterialStatsController', ['$scope', '$stateParams', 'learningService', '$uibModal',\n function ($scope, $stateParams, learningService, $uibModal) {\n $scope.id = parseInt($stateParams.id)\n $scope.pages = []\n $scope.items = []\n learningService().getLearningMaterialStats($scope.id).then(function (summary) {\n $scope.material = summary.material\n $scope.items = summary.items \n var totalVisitsLevels = calculateLevels(summary.totalVisitsRange, 4)\n var uniqueUsersLevels = calculateLevels(summary.uniqueUsersRange, 4)\n var likesLevel = calculateLevels(summary.likesRange, 4)\n var dislikeLevel = calculateLevels(summary.dislikesRange, 4)\n var numberOfCommentsLevels = calculateLevels(summary.numberOfCommentsRange, 4)\n\n $scope.items.forEach(item => {\n item.totalVisitsLevel = getLevel(item.totalVisits, totalVisitsLevels)\n item.uniqueUsersLevel = getLevel(item.uniqueUsers, uniqueUsersLevels)\n item.likesLevel = getLevel(item.likes, likesLevel)\n item.dislikesLevel = getLevel(item.dislikes, dislikeLevel)\n item.numberOfCommentsLevel = getLevel(item.numberOfComments, numberOfCommentsLevels)\n })\n })\n\n function calculateLevels(range, numberOfLevels) {\n var rangeSize = range.max - range.min\n var levelSize = rangeSize / numberOfLevels\n var levels = []\n var levelStart = range.min\n for (let index = 1; index <= numberOfLevels; index++) {\n var level = {\n start: levelStart,\n end: levelStart + levelSize\n }\n levels.push(level)\n levelStart = level.end\n }\n return levels\n }\n function getLevel(value, levels) {\n if (value == 0 || levels.length == 0) return \"level-0\"\n \n for (let index = 0; index <= levels.length; index++) {\n var level = levels[index]\n if (value >= level.start && value <= level.end) {\n return \"level-\" + (index + 1)\n }\n }\n return \"level-0\"\n }\n\n $scope.openComments = function (item) {\n\n var modalInstance = $uibModal.open({ backdrop: 'static',\n templateUrl: 'learningPageCommentModal.html',\n controller: 'learningPageCommentController',\n windowClass: 'fullDeviation-modal-window',\n resolve: {\n selectedPage: item,\n material: $scope.material\n }\n })\n modalInstance.result.then(() => {}, () => {})\n }\n \n }])","angular\n .module('DigiLean')\n .controller(\"projectAdminController\", ['$scope','$uibModal', 'projectService', '$state',\n function ($scope, $uibModal, projectService, $state) {\n\n\n $scope.addProject = function () {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'projectNewModal.html',\n controller: 'projectNewController',\n resolve: {\n existing: function () {\n return $scope.projects;\n }\n }\n });\n\n modalInstance.result.then(function (newproject) {\n if (newproject) {\n projectService().addProject(newproject).then(function (createdProject) {\n $state.go('selectedProject', { id: createdProject.id }, { reload: false });\n });\n }\n }, function () {\n });\n }\n }]);\n\n\n\n","angular\n .module('DigiLean')\n .controller(\"projectListAdminController\", ['$scope', '$translate','$filter', 'NgTableParams', 'projectService', 'modalService',\n function ($scope, $translate, $filter, NgTableParams, projectService, modalService) {\n\n $scope.yearlyTimespan = true;\n $scope.totalProjects = 0;\n\n var translateFilter = $translate.instant('COMMON_FILTER') + \"...\";\n \n $scope.nameFilter = {\n name: {\n id: \"text\",\n placeholder: translateFilter,\n }\n };\n\n $scope.numberFilter = {\n projectNumber: {\n id: \"text\",\n placeholder: translateFilter,\n }\n };\n\n $scope.customerFilter = {\n projectCustomerName: {\n id: \"text\",\n placeholder: translateFilter,\n }\n };\n\n $scope.ownerFilter = {\n owner: {\n id: \"text\",\n placeholder: translateFilter,\n }\n };\n\n projectService().getList().then(function (projects) {\n $scope.totalProjects = projects.length;\n\n angular.forEach(projects, function (project) {\n if (project.projectCustomer) {\n project.projectCustomerName = project.projectCustomer.name;\n }\n project.statusorder = getStatusOrder(project.status);\n\n })\n $scope.projects = projects;\n $scope.tableParams = new NgTableParams({}, { dataset: $scope.projects });\n });\n\n\n $scope.delete = function () {\n $scope.showTeamBoards = false;\n }\n\n $scope.delete = function (project) {\n $translate(['COMMON_CANCEL', 'COMMON_DELETE', 'ADMIN_MESSAGE_DELETE_PROJECT_CONFIRMATION']).then(function (translations) {\n var modalOptions = {\n closeButtonText: translations.COMMON_CANCEL,\n actionButtonText: translations.COMMON_DELETE,\n headerText: translations.COMMON_DELETE + ' ' + project.name + '?',\n bodyText: translations.ADMIN_MESSAGE_DELETE_PROJECT_CONFIRMATION\n };\n\n modalService.showModal({}, modalOptions).then(function (result) {\n projectService().deleteProject(project.id).then(function (deletedProject) {\n });\n });\n\n });\n }\n\n function getStatusOrder(dbstatus) {\n switch (dbstatus) {\n case \"ONHOLD\":\n return 1;\n case \"New\":\n return 2;\n case \"PROSPECT\":\n return 3;\n case \"NOTSTARTED\":\n return 4;\n case \"INPROGRESS\":\n return 5;\n\n case \"CLOSED\":\n return 6;\n default:\n return 0;\n }\n }\n $scope.subscribe(\"ProjectDeleted\", function (payLoad) {\n var foundProject = null;\n var foundProject = $filter('filter')($scope.projects, { id: payLoad.id });\n if (foundProject && foundProject.length === 1) {\n var projectItem = foundProject[0];\n projectItem.cssState = \"animated slideOutRight\"; // Add animation\n var index = $scope.projects.indexOf(projectItem);\n if (index > -1) {\n $scope.projects.splice(index, 1);\n $scope.totalProjects = $scope.projects.length;\n $scope.tableParams = new NgTableParams({}, { dataset: $scope.projects });\n }\n\n }\n });\n\n }]);\n\n\n\n","var DigiLean = angular.module('DigiLean');\nDigiLean.factory('boardDrawService', ['$http', '$translate', '$compile', 'taskDrawingService',\n function ($http, $translate, $compile, taskDrawingService) {\n\n var service = {};\n service.drawBoard = function (boardElement, options) {\n var table = boardElement;\n // Make sure table is clean.\n $(table).empty();\n var headerMinWidth = 100;\n // For weeklyBoards\n var isWeeklyBoard = false;\n var isKamishibai = false;\n var settings = JSON.parse(options.board.board.settings);\n if (settings && settings.isKamishibai) {\n isKamishibai = settings.isKamishibai;\n }\n if (options.board.board.boardType == \"Weekly\") {\n isWeeklyBoard = true;\n }\n // Should row text show horizontal?\n var showHorizontalRowHeaders = \"vertical\";\n if (settings && settings.ShowHorizontalRowHeaders) {\n showHorizontalRowHeaders = \"horizontal\";\n }\n var categoryDirection = \"vertical-text\";\n if (settings && settings.ShowHorizontalRowHeaders) {\n categoryDirection = \"horizontal-text\";\n }\n //\n // header with empty column to be above rows\n // TODO: translate tooltip text\n var header = $('');\n var row = $('');\n row.append(\"
\");\n // row.append(\"\");\n // draw columns\n $.each(options.board.columns, function (key, val) {\n // Add data column\n var columnStyle = \"style='min-width: \" + headerMinWidth + \"px;'\";\n if (val.categoryStyle.backgroundColor !== null && val.categoryStyle.foregroundColor !== null) {\n columnStyle = \"style='min-width: \" + headerMinWidth + \"px;background-color: \" + val.categoryStyle.backgroundColor + \";color:\" + val.categoryStyle.foregroundColor + \"'\";\n }\n if (val.categoryStyle.backgroundColor !== null && val.categoryStyle.foregroundColor === null) {\n columnStyle = \"style='min-width: \" + headerMinWidth + \"px;background-color: \" + val.categoryStyle.backgroundColor + \";'\";\n }\n if (val.categoryStyle.backgroundColor === null && val.categoryStyle.foregroundColor !== null) {\n columnStyle = \"style='min-width: \" + headerMinWidth + \"px;color: \" + val.categoryStyle.foregroundColor + \";'\";\n }\n\n var dateText = \"\";\n var dayContainer = \"\";\n if (val.weekdayName) {\n dateText = \"\";\n dayContainer = \"
\";\n }\n\n var responsible = {\n categoryId: val.id,\n userName: val.responsibleUser,\n userId: val.responsibleUserId,\n userDisplayName: val.responsibleDisplayName\n }\n var responsibleForCategory = taskDrawingService().drawResponsibleForCategory(responsible);\n\n row.append(\"\" + dayContainer + \"
\"\n //+ \"\"\n + \"
\" + val.name + \"
\" + dateText + \"
\" + responsibleForCategory + \"
\");\n });\n\n header.append(row);\n table.append(header);\n\n\n // Create rows\n var body = $('');\n $.each(options.board.rows, function (key, val) {\n // Add data column\n\n var rowStyle = \"style='\";\n if (val.categoryStyle.backgroundColor !== null && val.categoryStyle.foregroundColor !== null) {\n rowStyle = rowStyle + \"background-color:\" + val.categoryStyle.backgroundColor + \";color:\" + val.categoryStyle.foregroundColor + \";'\";\n }\n if (val.categoryStyle.backgroundColor !== null && val.categoryStyle.foregroundColor === null) {\n rowStyle = rowStyle + \"background-color:\" + val.categoryStyle.backgroundColor + \";'\";\n }\n if (val.categoryStyle.backgroundColor === null && val.categoryStyle.foregroundColor !== null) {\n rowStyle = rowStyle + \"color: \" + val.categoryStyle.foregroundColor + \";'\";\n }\n\n var row = $('');\n var rowData = val;\n\n var rowResponsible = {\n categoryId: val.id,\n userName: val.responsibleUser,\n userId: val.responsibleUserId,\n userDisplayName: val.responsibleDisplayName\n }\n var rowResponsibleCategory = taskDrawingService().drawResponsibleForCategory(rowResponsible);\n // weeklyboard handling rows\n var dateText = \"\";\n var dayContainer = \"\";\n if (val.weekdayName) {\n dateText = \"
\";\n }\n row.append(\"
\" + dayContainer + '
' + rowData.name + dateText + \"
\" + rowResponsibleCategory + \"
\");\n // Create cells\n $.each(options.board.columns, function (key, val) {\n var td = $(\"');\n\n // find matching task that belong in category and row\n var tasksmatchingCell = options.board.tasks.filter(function (task) {\n // Allow for category be either row or column\n return (task.rowCategoryId === rowData.id || task.rowCategoryId === val.id) && ((task.columnCategoryId === rowData.id || task.columnCategoryId === val.id));\n });\n // cell ready, inserted into td\n td.append(boardCell);\n row.append(td);\n });\n body.append(row);\n\n });\n table.append(body);\n\n // adjust \"equal row height\n // var tableHeight = $(\"#boardTable\").height();\n // var rowCount = options.board.rows.length;\n // var rowHeight = (tableHeight - 40) / rowCount;\n // $(\".rowcategory\").css(\"min-height\", rowHeight);\n\n $('[data-toggle=\"tooltip\"]').tooltip();\n var tableWidth = $(\"#boardContainer .ibox\").width();\n var cellMaxWidth = Math.round((tableWidth - 60) / options.board.columns.length);\n $(window).off();\n $(window).resize(function () {\n tableWidth = $(\"#boardContainer .ibox\").width();\n cellMaxWidth = Math.round((tableWidth - 60) / options.board.columns.length);\n $(\".boardcell\").css(\"max-width\", cellMaxWidth + \"px\");\n $(\".boardcell\").css(\"min-width\", (cellMaxWidth - 60) + \"px\");\n });\n // Adjust cells so the table scales according to table.\n\n $(\".boardcell\").css(\"max-width\", cellMaxWidth + \"px\");\n $(\".boardcell\").css(\"min-width\", (cellMaxWidth - 60) + \"px\");\n return this;\n };\n\n service.addWeekSelector = function(scope, boardid) {\n \n var portletHeader = $(\".boardtable-navigation-header\").first();\n // var el = $compile( \"\" )( $scope );\n var internalScope = scope.$new(true);\n internalScope.boardid = boardid;\n // var el = $compile(\"\")(internalScope);\n var el = $compile(\"\")(internalScope);\n portletHeader.append(el);\n }\n\n service.refreshTableLayout = function () {\n var tableWidth = $(\"#boardContainer .ibox\").width();\n var board = $(\"#boardTable\");\n var columns = $(\"#boardTable th\").length - 1; // Subtract the container column\n var cellMaxWidth = Math.round((tableWidth - 60) / columns);\n $(\".boardcell\").css(\"max-width\", cellMaxWidth + \"px\");\n $(\".boardcell\").css(\"min-width\", (cellMaxWidth - 60) + \"px\");\n setTimeout(function () {\n var $table = $(\"table.board\");\n $table.trigger('reflow');\n }, 20);\n }\n\n service.drawTask = function (task, access, animation, isWeeklyBoard, isKamishibai) {\n var iconclass = taskDrawingService().getIconClass(task.status, isKamishibai);\n var actionContainer = taskDrawingService().getActionContainer(isWeeklyBoard);\n var responsibleContainer = taskDrawingService().drawResponsibleContainer(task);\n var commentsContainer = taskDrawingService().drawCommentsContainer(task.commentCount);\n var attachmentContainer = taskDrawingService().drawAttachmentContainer(task.attachmentCount);\n var subtaskContainer = \"
\";\n if (task.hasOwnProperty('type') === false) {\n // if task object doesn't have a type we will create it\n if (isWeeklyBoard) {\n task.type = \"WeeklyBoardTask\"\n } else {\n task.type = \"KanbanTask\"\n }\n }\n // Format tags to semicolon string\n var tags = [];\n if (task.tags) {\n for (var i = 0; i < task.tags.length; i++) {\n tags.push(task.tags[i].tag);\n }\n tags = tags.join(\",\");\n }\n if (tags.length === 0) tags = \"\";\n\n var animationClass = \"\";\n if (animation) {\n animationClass = \"animated \" + animation;\n }\n\n\n // conditional task theme.\n var style = \"\";\n var statusClass = \"\"; // Default status\n\n var theme = taskDrawingService().getTaskCardTheme(task, isKamishibai);\n\n style = theme.portletStyle;\n statusClass = theme.statusClass;\n\n var wrapperClass = \"
\";\n var kamishibaiIconStyle = \"\";\n if(isKamishibai){\n wrapperClass = \"
\";\n kamishibaiIconStyle = \"color:white;\";\n }\n\n var html = \"
\" +\n \"
\" +\n\n \"
\" +\n \"
\" +\n service.getBoardDate(task, isWeeklyBoard) + \"
\" + task.title + \"
\" + taskDrawingService().getTextDescription(task)\n + \"
\"\n + \"
\" \n + \"
\"\n + \"
\" + taskDrawingService().drawTags(task.tags, service.getTaskInfoIndicators(task))\n + wrapperClass\n + \"
\" + actionContainer + subtaskContainer + commentsContainer + attachmentContainer + responsibleContainer + \"
\"\n + \"
\";\n\n\n return html;\n },\n\n service.getBoardDate = function (task, isWeeklyBoard) {\n if (isWeeklyBoard && isWeeklyBoard === true) return \"\";\n if (!task.boardDate) return \"\";\n // Overdue check\n\n var overdue = \"\";\n var duration = moment.duration(moment().diff(moment(task.boardDate)));\n var days = duration.asDays();\n if (days > 1 && task.status === \"blank\") {\n overdue = \"overdue\";\n }\n var container = $(\"
\");\n container.append(' ')\n return container.wrap('

').parent().html();\n }\n\n service.getTaskInfoIndicators = function (task) {\n if (!task.repeatParentId && !task.siblingId \n && !task.improvementSuggestionId && !task.a3StepId \n && !task.deviationId && !task.parentId && task.taskType !== 'SubTask') return \"\";\n\n var container = $(\"

\");\n if (task.repeatParentId) {\n container.append(\"\");\n }\n if (task.siblingId) {\n container.append(\"\");\n }\n if (task.taskType == 'SubTask' || task.parentId) {\n container.append(\"\");\n }\n if (task.improvementSuggestionId) {\n container.append(\"\");\n }\n if (task.deviationId) {\n container.append(\"\");\n }\n if (task.a3StepId) {\n container.append(\"\");\n } /**/\n return container.wrap('

').parent().html();;\n }\n\n service.redrawTasks = function (board, tasks, isWeeklyBoard, isKamishibai) {\n // remove tasks in board\n $(board).find(\"div .portlet\").remove();\n $(board).css(\"overflow-x\", \"hidden\");\n $(board).find(\".boardcell\").css(\"min-height\", 80);\n var animation = \"bounceInLeft\";\n var rowsInDom = angular.element(\"td.rowcategory\");\n var rows = [];\n angular.forEach(rowsInDom, function (row, key) {\n rows.push(row.attributes['data-rowid'].value);\n });\n\n angular.forEach(tasks, function (task, key) {\n if (animation === \"bounceInLeft\") {\n animation = \"bounceInRight\";\n } else {\n animation = \"bounceInLeft\";\n }\n animation = \"animated \" + animation;\n var cell = angular.element(\"td[data-rowid='\" + task.rowCategoryId + \"'][data-categoryid=\" + task.columnCategoryId + \"]\").find(\".boardcell\");\n // row and categoryId might be reversed\n if (cell.length === 0) {\n cell = angular.element(\"td[data-rowid='\" + task.columnCategoryId + \"'][data-categoryid=\" + task.rowCategoryId + \"]\").find(\".boardcell\");\n }\n var taskHtml = service.drawTask(task, null, animation, isWeeklyBoard, isKamishibai);\n cell.append(taskHtml);\n });\n \n service.recalculateZindex();\n // remove animation afterwards\n service.removeAnimations(board);\n // Adjust fixed header\n setTimeout(function () {\n var $table = $(\"table.board\");\n $table.trigger('reflow');\n }, 20);\n }\n\n service.removeAnimations = function (board) {\n // remove animation afterwards\n setTimeout(function () {\n $(board).find(\"div .portlet\").removeClass(\"animated\");\n $(board).css(\"overflow-x\", \"auto\");\n }, 1000);\n };\n\n service.compareForZindex = function (portletA, portletB) {\n var comparison = 0;\n if (portletA.offsetLeft === portletB.offsetLeft) {\n if (portletA.offsetTop > portletB.offsetTop) {\n comparison = 1;\n } else {\n comparison = -1;\n }\n } else if (portletA.offsetLeft > portletB.offsetLeft) {\n comparison = -1;\n } else {\n comparison = 1;\n }\n return comparison;\n }\n\n service.recalculateZindex = function () {\n // // TODO: Should we check if IE and not perform recalc?\n var portlets = $(\"#boardContainer .portlet\");\n var sortedPortlets = portlets.sort(service.compareForZindex);\n var i = 0;\n var startIndex = 800;\n angular.forEach(sortedPortlets, function (portlet, key) {\n var zindex = startIndex - i;\n if (zindex < 1) {\n zindex = 1;\n }\n $(portlet).css(\"z-index\", zindex);\n i += 1;\n });\n // parentHeight\n var cells = $(\".boardcell\");\n var cellHeights = [];\n for (var i = 0; i < cells.length; i++) {\n var cell = cells[i];\n var targetHeight = $(cell).parent().height() - 11; // subtract padding so it's not growing all the time\n cellHeights.push({\n cell: cell,\n height: targetHeight\n });\n $(cell).css(\"min-width\", $(cell).parent().width() + \"px\");\n }\n\n\n\n }\n\n return service;\n }]);","angular.module(\"DigiLean\").factory('boardLayoutService', [\n function () {\n function boardLayoutService() {\n return {\n getResponsibleForCategory: function (task) {\n var category = $(\"th[data-categoryid='\" + task.columnCategoryId + \"'] .responsible-for-category\").first();\n var rowCategory = $(\"td[data-rowid='\" + task.rowCategoryId + \"'] .responsible-for-category\").first();\n var categoryResponsibleUserId = $(category).attr(\"data-responsibleuserid\");\n var rowCategoryResponsibleUserId = $(rowCategory).attr(\"data-responsibleuserid\");\n\n if (categoryResponsibleUserId && categoryResponsibleUserId !== \"null\") {\n return this.getResponsibleData(category);\n }\n if (rowCategoryResponsibleUserId && rowCategoryResponsibleUserId !== \"null\") {\n return this.getResponsibleData(rowCategory);\n }\n return {\n responsibleUserId: \"\",\n responsibleDisplayName: \"\",\n responsibleUser: \"\"\n };\n },\n\n getResponsibleData: function (selectorWithDataAttributes) {\n var username = $(selectorWithDataAttributes).attr(\"data-responsibleuser\");\n var userId = $(selectorWithDataAttributes).attr(\"data-responsibleuserid\");\n var displayName = $(selectorWithDataAttributes).attr(\"data-responsibledisplayname\");\n\n return {\n responsibleUserId: userId,\n responsibleDisplayName: displayName,\n responsibleUser: username\n };\n },\n\n getIEVersion: function() {\n var sAgent = window.navigator.userAgent;\n var Idx = sAgent.indexOf(\"MSIE\");\n \n // If IE, return version number.\n if (Idx > 0) \n return parseInt(sAgent.substring(Idx+ 5, sAgent.indexOf(\".\", Idx)));\n \n // If IE 11 then look for Updated user agent string.\n else if (!!navigator.userAgent.match(/Trident\\/7\\./)) \n return 11;\n \n else\n return 0; //It is not IE\n }\n }\n }\n return boardLayoutService;\n }]);\n\n","angular\n .module('DigiLean')\n .directive(\"subtaskStatus\", ['boardTaskService','$uibModal',\n function (boardTaskService, $uibModal) {\n return {\n templateUrl: 'subtaskStatus.html',\n scope: {\n 'task': '<',\n 'isReadOnly': '<'\n },\n restrict: 'E',\n link: function (scope, elem, attrs) {\n scope.completeCss = \"badge-warning\";\n scope.$watch('task', function (task) {\n // apply\n if (task) {\n updateCompletedStatus();\n }\n });\n \n var updateCompletedStatus = function() {\n if (scope.task && scope.task.subTaskCount > 0) {\n if (scope.task.subTaskCount == scope.task.subTaskCompletedCount) {\n scope.completeCss = \"digilean-badge-completed\";\n } else {\n scope.completeCss = \"badge-warning\";\n }\n }\n }\n\n scope.subscribe(\"SubTaskCountChanged\", function(count) {\n if (!scope.task) return;\n if (count.taskId == scope.task.id || count.taskId == scope.task.siblingId) {\n scope.task.subTaskCount = count.subTaskCount;\n scope.task.subTaskCompletedCount = count.subTaskCompletedCount;\n updateCompletedStatus();\n }\n });\n scope.editTask = function () {\n if (scope.isReadOnly) return;\n boardTaskService().get(scope.task.id).then(function (task) {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'boardTask.html',\n controller: 'boardTaskController',\n resolve: {\n task: function () {\n return task;\n },\n activeTab: function () {\n return \"SubTasks\";\n },\n options: function () {\n var options = {\n archiveAvailable: false\n }\n return options;\n }\n }\n });\n });\n }\n }\n }\n }]);\n","// Controller for the actual modal\nvar DigiLean = angular.module('DigiLean'); \nDigiLean.controller('cloneInfoController', ['$scope', '$filter', '$uibModalInstance', 'boardTaskService', 'task',\n function ($scope, $filter, $uibModalInstance, boardTaskService, task) {\n $scope.task = task;\n\n boardTaskService().getSiblings(task.siblingId).then(function (data) {\n $scope.siblings = data;\n });\n\n $scope.ok = function () {\n $uibModalInstance.close();\n };\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n }]);","// Controller for the actual modal\nvar DigiLean = angular.module('DigiLean'); \nDigiLean.controller('clonedeleteController', ['$scope', 'boardTaskService', '$uibModalInstance', 'taskId', 'siblingId',\n function ($scope, boardTaskService, $uibModalInstance, taskId, siblingId) {\n $scope.deleteJustThis = function () {\n \n boardTaskService().deleteAClonedTask(taskId).then(function (result) {\n $uibModalInstance.close();\n });\n /*boardTaskService().deleteTask(taskId).then(function (result) {\n $uibModalInstance.close();\n });*/\n };\n $scope.deleteAll = function () {\n boardTaskService().deleteClonedTask(siblingId).then(function (result) {\n $scope.publish(\"SendTasksDeleted\", result);\n $uibModalInstance.close();\n });\n };\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n }]);","// Controller for the actual modal\nvar DigiLean = angular.module('DigiLean');\nDigiLean.controller('moveOrCloneSelector', ['$scope', '$uibModalInstance', \n function ($scope, $uibModalInstance) {\n $scope.move = function () {\n\n $uibModalInstance.close(\"move\");\n\n };\n $scope.clone = function () {\n\n $uibModalInstance.close(\"clone\");\n };\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n }]);","var DigiLean = angular.module('DigiLean'); \nDigiLean.controller('parenttaskInfoController', ['$scope', '$uibModalInstance','boardTaskService', 'task',\n function ($scope, $uibModalInstance,boardTaskService, task) {\n $scope.task = task;\n\n boardTaskService().getTaskInfoBoardName(task.parentId).then(function (data) {\n $scope.parenttask = data;\n });\n/*\n boardTaskService().getBoardInfo($scope.task.parentId).then(function (boarddata) {\n $scope.parentboard = boarddata;\n });*/\n\n $scope.ok = function () {\n $uibModalInstance.close();\n };\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n }]);","angular\n .module('DigiLean')\n .directive(\"personalTaskCard\", ['$filter', '$uibModal', 'taskDrawingService', 'boardTaskService',\n function ($filter, $uibModal, taskDrawingService, boardTaskService) {\n return {\n templateUrl: 'personalTaskCard.html',\n restrict: 'E',\n scope: {\n 'task': '<',\n },\n link: function (scope, elem, attrs) {\n scope.postIts = taskDrawingService().getPostIts();\n scope.$watch(\"task\", function (task) {\n if (!task) return;\n setColor(task.color);\n // task.displayColor = \"silver\";\n });\n var setColor = function (taskColor) {\n // Try to match fillColor\n var predefinedPostIt = $filter('filter')(scope.postIts, { fillColor: taskColor });\n if (predefinedPostIt.length > 0) {\n scope.selectedPostIt = predefinedPostIt[0];\n setStyle(scope.selectedPostIt.fillColor, scope.selectedPostIt.background)\n } else {\n // Try to match background color\n var backgroundPostIt = $filter('filter')(scope.postIts, { background: taskColor });\n if (backgroundPostIt.length > 0) {\n scope.selectedPostIt = backgroundPostIt[0];\n setStyle(scope.selectedPostIt.fillColor, scope.selectedPostIt.background)\n } else {\n setStyle(scope.fillColor, scope.borderColor);\n }\n }\n }\n\n scope.hasDueDate = function (item) {\n if (!item) return;\n if (item.boardDate) {\n return true;\n } else return false;\n };\n\n var setStyle = function (fillColor, borderColor) {\n\n if (fillColor == \"#ffffff\") {\n borderColor = scope.borderColor;\n }\n\n scope.task.displayColor = borderColor;\n }\n\n //$scope.changePriorityStatusDebounced = debounce(changePriorityStatus, 2000, false);\n scope.changePriorityStatus = function () {\n var item = scope.task;\n var statusClasses = [-10, 0, 10];\n var index = $.inArray(item.priorityStatus, statusClasses);\n var nextIndex = index + 1;\n if (nextIndex === statusClasses.length) {\n nextIndex = 0;\n }\n item.priorityStatus = statusClasses[nextIndex];\n var statusOptions = {\n taskid: item.id,\n prioritystatus: item.priorityStatus\n };\n boardTaskService().updatePriorityStatus(item.id, statusOptions).then(function (result) {\n });\n };\n\n scope.openTask = function(taskId, activeTab) {\n boardTaskService().get(taskId).then(function (task) {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'boardTask.html',\n controller: 'boardTaskController',\n resolve: {\n task: function () {\n return task;\n },\n activeTab: function () {\n return activeTab;\n },\n options: function () {\n var options = {\n archiveAvailable: false,\n canChangeBoard: true\n }\n return options;\n }\n }\n });\n });\n }\n }\n }\n }]);","angular\n .module('DigiLean')\n .directive(\"postitHub\", ['$filter', '$translate','taskDrawingService',\n function ($filter, $translate, taskDrawingService) {\n return {\n templateUrl: 'postitHub.html',\n restrict: 'E',\n scope: {\n 'settings': '=', \n \"clearSelection\" : \"<\",\n \"selectColorHandler\" : \"&\",\n },\n link: function (scope, elem, attrs) {\n var dragDescription = \"\";\n\n scope.$watch('settings', function (settings) {\n \n $translate(['BOARD_POSIT_DRAG_DESCRIPTION']).then(function (translations) {\n dragDescription = translations.BOARD_POSIT_DRAG_DESCRIPTION;\n if (settings) {\n scope.postIts = settings; \n } else {\n scope.postIts = taskDrawingService().getPostIts();\n }\n scope.postIts.forEach(color => {\n color.isSelected = false;\n if(color.tags && color.tags.length >0){\n color.tooltip = getTagsDescription(color);\n } else {\n color.tooltip = dragDescription;\n }\n });\n setTimeout(function () {\n $(\"#postItContainer .post-it\").draggable({\n cursor: 'move',\n helper: postitPlaceholder\n });\n }, 50);\n });\n });\n\n function getTagsDescription(postIt){\n var tooltip = \"\";\n if(postIt.tags){\n for (var i = 0; i < postIt.tags.length; i++) {\n if(i>0){\n tooltip = tooltip.concat(', ');\n }\n tooltip = tooltip.concat(postIt.tags[i]);\n }\n }\n return tooltip;\n }\n\n scope.$watch('clearSelection', function () {\n if (!scope.clearSelection) return;\n if (!scope.selectedColor) return;\n scope.selectedColor.isSelected = false;\n });\n \n scope.selectedColor = null;\n scope.selectColor = function(color) {\n // If user already selected, we need to clear selection.\n if (scope.selectedColor && scope.selectedColor !== color) { // Clear previous selectedUser\n scope.selectedColor.isSelected = false;\n }\n if (color.isSelected) {\n scope.selectedColor = null;\n } else {\n scope.selectedColor = color;\n }\n color.isSelected = !color.isSelected;\n scope.selectColorHandler({ color: scope.selectedColor });\n }\n\n // DragAndDrop of user\n function postitPlaceholder(event) {\n var dragTarget = event.currentTarget;\n var fillcolor = $(dragTarget).data(\"fillcolor\");\n var color = $(dragTarget).data(\"color\");\n\n return \"

\" + dragDescription + \"
\";\n }\n }\n }\n }]);\n","var DigiLean = angular.module('DigiLean');\nDigiLean.controller('postitPredefinedTags', ['$scope', '$rootScope', '$filter', '$uibModalInstance', '$translate', 'labels','projectService',\n function ($scope, $rootScope, $filter, $uibModalInstance, $translate, labels, projectService) {\n $scope.defaultLabels = projectService().getPostIts();\n $scope.labels = labels;\n if(!$scope.labels){\n $scope.labels = $scope.defaultLabels; \n }\n\n $rootScope.$on('$translateChangeSuccess', function () {\n $scope.steps[0].title = $translate.instant('DASHBOARD_DATA_SOURCE');\n $scope.steps[1].title = $translate.instant('COMMON_FILTER');\n $scope.currentStep = $scope.steps[0];\n });\n\n \n setTimeout(function () {\n for (var l = 0; l < $scope.labels.length; l++) {\n // Init tags and focus (without this the textfield is 2px)\n var tasktagID = \"#taskTags-\"+$scope.labels[l].id.toString();\n var taskselectedID = '#tagsSelected-'+$scope.labels[l].id.toString();\n $(tasktagID).tagit({\n // This will make Tag-it submit a single form value, as a comma-delimited field.\n singleField: true,\n singleFieldNode: $(taskselectedID)\n });\n if($scope.labels[l].tags){\n var tagArray = $scope.labels[l].tags;\n for (var i = 0; i < tagArray.length; i++) {\n $(tasktagID).tagit('createTag', tagArray[i]);\n }\n }\n }\n }, 50);\n \n $scope.createNew = function () {\n var highestId = _.max($scope.labels, function(label){ return label.id; });\n //var lastid = $scope.labels[$scope.labels.length-1].id;\n var newLabel = {\n id: highestId.id+1,\n title: \"\",\n fillColor: \"#ffffff\",\n background: \"#E6E9ED\",\n color: \"#ffffff\"\n }\n $scope.labels.push(newLabel);\n setTimeout(function () {\n var tasktagID = \"#taskTags-\"+newLabel.id.toString();\n var taskselectedID = '#tagsSelected-'+newLabel.id.toString();\n $(tasktagID).tagit({\n // This will make Tag-it submit a single form value, as a comma-delimited field.\n singleField: true,\n singleFieldNode: $(taskselectedID)\n });\n }, 50); \n };\n\n $scope.delete = function (label) {\n var index = $scope.labels.indexOf(label);\n $scope.labels.splice(index, 1); \n }\n\n $scope.templateColorChanged = function (label) {\n //Need this for timeboard tags\n var index = $scope.labels.indexOf(label);\n $scope.labels[index].fillColor = \"#ffffff\";\n }\n \n $scope.reset = function () {\n $scope.labels = $scope.defaultLabels; \n setTimeout(function () {\n for (var l = 0; l < $scope.labels.length; l++) {\n // Init tags and focus (without this the textfield is 2px)\n var tasktagID = \"#taskTags-\"+$scope.labels[l].id.toString();\n var taskselectedID = '#tagsSelected-'+$scope.labels[l].id.toString();\n $(tasktagID).tagit({\n // This will make Tag-it submit a single form value, as a comma-delimited field.\n singleField: true,\n singleFieldNode: $(taskselectedID)\n });\n if($scope.labels[l].tags){\n $scope.labels[l].tags = [];\n }\n }\n }, 50); \n } \n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n\n $scope.ok = function () {\n for (var l = 0; l < $scope.labels.length; l++) {\n var tagSingleString = $('#tagsSelected-'+$scope.labels[l].id.toString()).val(); \n if(tagSingleString == \"\"){\n $scope.labels[l].tags = [];\n } else {\n var tagsArray = tagSingleString.split(\",\");\n $scope.labels[l].tags = tagsArray;\n }\n }\n \n \n $uibModalInstance.close($scope.labels);\n };\n\n }]);","angular\n .module('DigiLean')\n .directive(\"timeboardPostits\", ['$filter', '$translate', 'taskDrawingService', 'dragulaService',\n function ($filter, $translate, taskDrawingService, dragulaService) {\n return {\n templateUrl: 'timeboardPostits.html',\n restrict: 'E',\n // DO NOT USE SCOPE!! This gets scope from yearlyboard and must not be touched!!\n // scope: {\n\n // },\n link: function (scope, elem, attrs) {\n\n // Note!! This share scioe wi\n scope.$watch('settings', function (settings) {\n if (settings && settings.PostIts) {\n settings.PostIts.forEach(postit => {\n // compensate for custom post-it missing fill color\n if (postit.fillColor == \"#ffffff\" && postit.background != \"#f1f1f1\") {\n postit.fillColor = postit.background;\n }\n });\n scope.postIts = settings.PostIts;\n scope.postIts.forEach(color => {\n color.isSelected = false;\n if(color.tags && color.tags.length >0){\n color.tooltip = getTagsDescription(color);\n } else {\n color.tooltip = \"\";\n }\n });\n } else {\n scope.postIts = taskDrawingService().getPostIts();\n }\n });\n\n function getTagsDescription(postIt){\n var tooltip = \"\";\n if(postIt.tags){\n for (var i = 0; i < postIt.tags.length; i++) {\n if(i>0){\n tooltip = tooltip.concat(', ');\n }\n tooltip = tooltip.concat(postIt.tags[i]);\n }\n }\n return tooltip;\n }\n\n }\n }\n }]);\n","var DigiLean = angular.module('DigiLean');\nDigiLean.controller('productionBoardRowConfigurationController', ['$scope', '$uibModalInstance', '$uibModal','$filter', 'configuration',\n function ($scope, $uibModalInstance, $uibModal, $filter,configuration) {\n $scope.settings = configuration;\n\n //Relevant for dataserie configuration\n $scope.formula = 'sum';\n\n $scope.thirddecision = null;\n\n $scope.operators = [\n { dbCode: \">=\", html: \">=\" },\n { dbCode: \">\", html: \">\" },\n { dbCode: \"<=\", html: \"<=\" },\n { dbCode: \"<\", html: \"<\" },\n ];\n $scope.operator = $scope.operators[1];\n\n function init() {\n if ($scope.settings) {\n $scope.name = $scope.settings.name;\n $scope.dataSourceId = $scope.settings.dataSourceId;\n $scope.dataSource = $scope.settings.dataSource;\n $scope.filters = $scope.settings.filters;\n $scope.targetDataSourceId = $scope.settings.targetDataSourceId;\n $scope.targetDataSource = $scope.settings.targetDataSource;\n $scope.targetFilters = $scope.settings.targetFilters;\n $scope.targetValue = $scope.settings.targetValue;\n if($scope.settings.formula){\n $scope.formula = $scope.settings.formula;\n }\n if($scope.settings.operator){\n var operator = $filter('filter')($scope.operators, { dbCode: $scope.settings.operator.dbCode }, true);\n if (operator.length > 0) {\n $scope.operator = operator[0];\n }\n }\n\n if($scope.targetDataSourceId){\n $scope.thirddecision = \"datasourceTarget\";\n } else if($scope.targetValue !== null && $scope.targetValue !== undefined) { //$scope.targetValue = 0 is a valid value\n $scope.thirddecision = \"manualTarget\";\n }\n }\n }\n init();\n\n $scope.updateName = function (name){\n $scope.name = name;\n };\n\n $scope.updateTargetValue = function (targetValue){\n $scope.targetValue = targetValue;\n $scope.targetDataSource = null;\n };\n\n $scope.operatorChanged = function (operator){\n $scope.operator = operator;\n };\n\n \n $scope.selectDataSource = function () {\n var hasDataSerie = false;\n if ($scope.dataSource) {\n hasDataSerie = true;\n }\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'dataSourceSingleSelector.html',\n controller: 'dataSourceSingleSelector',\n windowClass: 'newdeviation-modal-window',\n resolve: {\n hasDataSerie: function () {\n return hasDataSerie;\n },\n dataSource: function () {\n return $scope.dataSource;\n },\n filters: function () {\n return $scope.filters;\n },\n withTarget: function () {\n return false;\n },\n type: function () {\n return null;\n },\n externalOnly: function () {\n return true;\n }\n }\n });\n\n modalInstance.result.then(function (result) {\n $scope.dataSource = result.dataSource;\n $scope.filters = result.filters;\n if (!$scope.name) {\n $scope.name = $scope.dataSource.title;\n }\n });\n };\n\n $scope.selectTargetDataSource = function () {\n var hasDataSerie = false;\n if ($scope.targetDataSource) {\n hasDataSerie = true;\n }\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'dataSourceSingleSelector.html',\n controller: 'dataSourceSingleSelector',\n windowClass: 'newdeviation-modal-window',\n resolve: {\n hasDataSerie: function () {\n return hasDataSerie;\n },\n dataSource: function () {\n return $scope.targetDataSource;\n },\n filters: function () {\n return $scope.targetFilters;\n },\n withTarget: function () {\n return false;\n },\n type: function () {\n return null;\n },\n externalOnly: function () {\n return true;\n }\n }\n });\n\n modalInstance.result.then(function (result) {\n $scope.targetDataSource = result.dataSource;\n $scope.targetFilters = result.filters;\n });\n };\n\n $scope.changeFormula = function (newFormula) {\n $scope.formula = newFormula;\n }\n\n function isInputOk() {\n $scope.nameMissing = false;\n $scope.dataSourceMissing = false;\n $scope.targetMissing = false;\n if (!$scope.name || $scope.name == '') {\n $scope.nameMissing = true;\n }\n\n if (!$scope.dataSource) {\n $scope.dataSourceMissing = true;\n }\n if (!$scope.targetDataSource && ($scope.targetValue === null || $scope.targetValue === undefined)) {\n $scope.targetMissing = true;\n }\n if ($scope.nameMissing || $scope.dataSourceMissing || $scope.targetMissing) {\n return false;\n } else {\n return true;\n }\n }\n\n $scope.ok = function () {\n if (isInputOk()) {\n $scope.settings.name = $scope.name;\n $scope.settings.dataSourceId = $scope.dataSource.id;\n $scope.settings.dataSource = $scope.dataSource;\n $scope.settings.filters = $scope.filters;\n if ($scope.targetDataSource) {\n $scope.settings.targetDataSourceId = $scope.targetDataSource.id;\n } else {\n $scope.settings.targetDataSourceId = null;\n }\n\n $scope.settings.targetDataSource = $scope.targetDataSource;\n $scope.settings.targetFilters = $scope.targetFilters;\n if ($scope.settings.targetDataSourceId) {\n $scope.settings.targetValue = null;\n } else {\n $scope.settings.targetValue = $scope.targetValue;\n }\n $scope.settings.formula = $scope.formula;\n $scope.settings.operator = $scope.operator;\n\n $uibModalInstance.close($scope.settings);\n }\n };\n\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n\n }]);","// Controller for the actual modal\nvar DigiLean = angular.module('DigiLean'); \nDigiLean.controller('repeatInfoController', ['$scope', '$uibModalInstance', 'boardTaskService', 'task',\n function ($scope, $uibModalInstance, boardTaskService, task) {\n $scope.task = task;\n\n boardTaskService().getRepeatInfo(task.repeatParentId).then(function (data) {\n $scope.repeatInfo = data;\n });\n\n $scope.ok = function () {\n $uibModalInstance.close();\n };\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n }]);","// Controller for the actual modal\nvar DigiLean = angular.module('DigiLean'); \nDigiLean.controller('repeatdeleteController', ['$scope', 'boardTaskService', '$uibModalInstance', 'taskId', 'repeatParentId',\n function ($scope, boardTaskService, $uibModalInstance, taskId, repeatParentId) {\n $scope.deleteJustThis = function () {\n \n boardTaskService().deleteTask(taskId).then(function (result) {\n $uibModalInstance.close();\n });\n };\n $scope.deleteFuture = function () {\n boardTaskService().deleteFutureRepeatingTask(taskId).then(function (result) {\n $scope.publish(\"SendTasksDeleted\", result);\n $uibModalInstance.close();\n });\n };\n $scope.deleteAll = function () {\n boardTaskService().deleteRepeatingTask(repeatParentId).then(function (result) {\n $scope.publish(\"SendTasksDeleted\", result);\n $uibModalInstance.close();\n });\n };\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n }]);","angular.module(\"DigiLean\").factory(\"predefinedLabelColumnProvider\", ['$rootScope', '$filter', '$translate', 'smartActionListService',\n function ($rootScope, $filter, $translate, smartActionListService) {\n var columns = [];\n var tasks = [];\n function predefinedLabelColumnProvider() {\n function createColumn(label, listColumn, tasks) {\n\n var column = {\n showAddButton: label.isEmptyOrNull,\n title: label.title,\n background: label.background,\n color: label.color,\n displayUser: false,\n tasks: [],\n model: listColumn,\n property: \"text\",\n propertyValue: label,\n isPartOfColumn: function (task, comparer) {\n var value = $filter('filter')(task.cells, { smartTableColumnId: listColumn.id }, true);\n if (value.length > 0 && value[0].value) {\n // \n if (value[0].value.text == this.title) {\n return true;\n }\n } else {\n if (this.propertyValue.isEmptyOrNull) {\n return true;\n }\n }\n return false;\n },\n hasTask: function (taskId) {\n var task = $filter('filter')(this.tasks, { id: taskId }, true);\n return task.length > 0;\n },\n addTask: function (task) {\n if (this.isPartOfColumn(task, this.property)) {\n this.tasks.unshift(task)\n return true;\n }\n return false;\n },\n removeTask: function (task) {\n if (this.isPartOfColumn(task, this.property)) {\n var index = this.tasks.indexOf(task);\n this.tasks.splice(index, 1);\n return true;\n }\n return false;\n },\n saveChanges: function (changeSettings) {\n // Set property to comparer\n var cellValue = $filter('filter')(changeSettings.task.cells, { smartTableColumnId: changeSettings.dropColumn.model.id }, true);\n var cellId = 0;\n if (cellValue.length > 0) {\n cellId = cellValue[0].id;\n }\n var value = {\n background: changeSettings.propertyValue.background,\n color: changeSettings.propertyValue.color,\n text: changeSettings.propertyValue.title\n }\n value = JSON.stringify(value);\n var cell = {\n id: cellId,\n boardTaskId: changeSettings.task.id,\n smartTableColumnId: changeSettings.dropColumn.model.id,\n value: value\n }\n smartActionListService().updateCell(cell).then(function (savedCell) {\n if (savedCell.value) {\n savedCell.value = JSON.parse(savedCell.value);\n }\n });\n },\n sortTasks: function() {\n this.tasks = $filter('orderBy')(this.tasks, 'status');\n },\n };\n // Add tasks to column\n tasks.forEach(function (task) {\n if (column.isPartOfColumn(task, column.property)) {\n column.tasks.push(task)\n }\n });\n // Sort by status\n column.sortTasks();\n return column;\n }\n\n $rootScope.subscribe('SmartActionListCellUpdated', function (cell) {\n // Is task part of board?\n var task = $filter('filter')(tasks, { id: cell.boardTaskId }, true);\n if (task.length > 0) {\n task[0].animate(\"bounce\");\n columns.forEach(function (column) {\n // Remove from previous column\n if (column.propertyValue.title != cell.value.text && column.hasTask(task[0].id)) {\n var index = column.tasks.indexOf(task[0]);\n column.tasks.splice(index, 1);\n }\n // Add task to column\n if (column.propertyValue.title == cell.value.text && !column.hasTask(task[0].id)) {\n column.tasks.push(task[0]);\n }\n });\n }\n });\n\n return {\n getColumns: function (boardTasks, users, listColumn) {\n var labels = listColumn.settings.predefinedLabels;\n columns = [];\n tasks = boardTasks;\n var emptyLabel = {\n isEmptyOrNull: true,\n title: $translate.instant(\"COMMON_NOT_ASSIGNED\"),\n }\n columns.push(createColumn(emptyLabel, listColumn, tasks));\n labels.forEach(function (label) {\n label.isEmptyOrNull = false;\n columns.push(createColumn(label, listColumn, tasks));\n })\n return columns;\n }\n\n\n }\n\n\n\n }\n\n return predefinedLabelColumnProvider;\n }]);\n","\nangular.module(\"DigiLean\").factory(\"responsibleColumnProvider\", ['$rootScope', '$filter', '$translate', 'boardTaskService','orderByFilter',\n function ($rootScope, $filter, $translate, boardTaskService, orderByFilter) {\n var columns = [];\n var tasks = [];\n var users = [];\n\n function responsibleColumnProvider() {\n function createResponsibleColumn(responsible, tasks) {\n var column = {\n showAddButton: true,\n title: responsible.name,\n displayUser: true,\n user: responsible.user,\n tasks: [],\n property: \"responsible\",\n propertyValue: responsible.userId,\n isPartOfColumn: function (task) {\n if (!task.responsibleUserId && !this.propertyValue) {\n return true;\n }\n return task.responsibleUserId == this.propertyValue;\n },\n hasTask: function(taskId) {\n var task = $filter('filter')(this.tasks, { id: taskId }, true);\n return task.length > 0;\n },\n addTask: function(task) {\n if (this.isPartOfColumn(task)) {\n this.tasks.unshift(task)\n return true;\n }\n return false;\n },\n removeTask: function(task) {\n if (this.isPartOfColumn(task, this.property)) {\n var index = this.tasks.indexOf(task);\n this.tasks.splice(index, 1);\n return true;\n }\n return false;\n },\n \n saveChanges: function (changeSettings) {\n // Set property to comparer\n var user = changeSettings.dropColumn.user;\n var userDetails = {\n userId: user.userId,\n userName: user.fullName,\n userDisplayName: user.displayName\n };\n var options = {\n taskId: changeSettings.taskId,\n user: userDetails\n }\n boardTaskService().assignUser(options);\n },\n sortTasks: function() {\n this.tasks = $filter('orderBy')(this.tasks, 'status');\n },\n };\n // Add tasks to column\n tasks.forEach(function (task) {\n if (column.isPartOfColumn(task)) {\n column.tasks.push(task)\n }\n });\n column.sortTasks();\n return column;\n }\n\n $rootScope.subscribe('TaskAssigned', function (taskAssigned) {\n // Is task part of board?\n var task = $filter('filter')(tasks, { id: taskAssigned.taskId }, true);\n if (task.length > 0) {\n var hasColumnForResponsible = false;\n task[0].responsibleUserId = taskAssigned.userId;\n task[0].responsibleUser = taskAssigned.user;\n task[0].responsibleUserDisplayName = taskAssigned.userDisplayName;\n task[0].animate(\"bounce\");\n columns.forEach(function(column){\n // Remove if wrong responsible\n if (column.propertyValue != taskAssigned.userId && column.hasTask(taskAssigned.taskId)) {\n // Add task to column\n var index = column.tasks.indexOf(task[0]);\n column.tasks.splice(index, 1);\n }\n // Add task to column\n if (column.propertyValue == taskAssigned.userId) {\n if (!column.hasTask(taskAssigned.taskId)) {\n \n column.tasks.push(task[0]);\n }\n hasColumnForResponsible = true;\n }\n // Match not assigned task\n if (!column.propertyValue && !taskAssigned.userId) {\n if (!column.hasTask(taskAssigned.taskId)) {\n column.tasks.push(task[0]);\n }\n hasColumnForResponsible = true;\n }\n });\n \n // Add if not exists\n if (!hasColumnForResponsible) {\n // Create new column\n\n var responsible = {\n userId : taskAssigned.userId\n }\n var userProfile = $filter('filter')(users, { userId: taskAssigned.userId }, true);\n if (userProfile.length > 0) {\n responsible.name = userProfile[0].fullName;\n responsible.user = userProfile[0];\n }\n columns.push(createResponsibleColumn(responsible, tasks));\n }\n }\n });\n\n\n\n return {\n getColumns: function (boardTasks, allUsers, options) {\n \n if (!options) {\n options = {\n showNotAssignedColum: true\n };\n }\n var responsibles = [\n \n ];\n columns = [];\n tasks = boardTasks;\n users = allUsers;\n // Find distinct users\n for (let index = 0; index < tasks.length; index++) {\n const task = tasks[index];\n var isResponsibleInList = $filter('filter')(responsibles, { userId: task.responsibleUserId }, true);\n if (isResponsibleInList.length == 0 && task.responsibleUserId) {\n var responsible = {\n userId: task.responsibleUserId,\n name: task.responsibleUser,\n user: null,\n };\n var userProfile = $filter('filter')(users, { userId: task.responsibleUserId }, true);\n if (userProfile.length > 0) {\n responsible.user = userProfile[0];\n }\n responsibles.push(responsible);\n }\n }\n // Sort responsibles.\n responsibles = orderByFilter(responsibles, 'name');\n if (options.showNotAssignedColum) {\n responsibles.unshift({\n userId: null,\n name: $translate.instant(\"COMMON_NOT_ASSIGNED\"),\n user: {\n userId: null,\n userName: \"\",\n userDisplayName: \"\"\n }\n })\n }\n responsibles.forEach(function (responsible) {\n columns.push(createResponsibleColumn(responsible, tasks));\n })\n return columns;\n }\n\n\n }\n\n\n\n }\n\n return responsibleColumnProvider;\n }]);\n","angular.module(\"DigiLean\").factory(\"statusColumnProvider\", ['$rootScope','$filter', '$translate', 'boardTaskService',\n function ($rootScope,$filter, $translate, boardTaskService) {\n var columns = [];\n var tasks = [];\n function statusColumnProvider() {\n function createStatusColumn(title, property, propertyValue, tasks) {\n var column = {\n showAddButton: true,\n title: title,\n displayUser: false,\n tasks: [],\n property: property,\n propertyValue: propertyValue,\n isPartOfColumn: function (task, comparer) {\n if (comparer == \"progressStatus\") {\n return task.progressStatus == propertyValue;\n }\n if (comparer == \"status\" && task.progressStatus != \"inprogress\") {\n return task.status == propertyValue;\n }\n return false;\n },\n hasTask: function(taskId) {\n var task = $filter('filter')(this.tasks, { id: taskId }, true);\n return task.length > 0;\n },\n addTask: function(task) {\n if (this.isPartOfColumn(task, this.property)) {\n this.tasks.unshift(task)\n return true;\n }\n return false;\n },\n removeTask: function(task) {\n if (this.isPartOfColumn(task, this.property)) {\n var index = this.tasks.indexOf(task);\n this.tasks.splice(index, 1);\n return true;\n }\n return false;\n },\n saveChanges: function (changeSettings) {\n // Set property to comparer\n var statusOptions = {\n taskid: changeSettings.taskId,\n status: changeSettings.propertyValue\n };\n if (changeSettings.propertyValue == \"inprogress\") {\n boardTaskService().updateProgressStatus(changeSettings.taskId, statusOptions).then(function (result) {\n });\n } else {\n boardTaskService().updateStatus(changeSettings.taskId, statusOptions).then(function (result) {\n });\n }\n },\n sortTasks: function() {\n this.tasks = $filter('orderBy')(this.tasks, 'status');\n },\n };\n // Add tasks to column\n tasks.forEach(function (task) {\n if (column.isPartOfColumn(task, column.property)) {\n column.tasks.push(task)\n }\n });\n // Sort by status\n column.sortTasks();\n return column;\n }\n\n $rootScope.subscribe('TaskStatusUpdated', function (updatedstatus) {\n // Is task part of board?\n var task = $filter('filter')(tasks, { id: updatedstatus.taskId }, true);\n if (task.length > 0) {\n task[0].status = updatedstatus.status;\n task[0].progressStatus = updatedstatus.progressStatus;\n task[0].animate(\"bounce\");\n columns.forEach(function(column){ \n switch(updatedstatus.progressStatus){\n case \"inprogress\": // the updated task is in progress\n if(column.propertyValue == \"inprogress\" && !column.hasTask(updatedstatus.taskId)){\n column.tasks.push(task[0]);\n } else if (column.propertyValue != \"inprogress\" && column.hasTask(updatedstatus.taskId)) {\n var index = column.tasks.indexOf(task[0]);\n column.tasks.splice(index, 1);\n }\n break;\n default:\n // Remove if wrong status\n if (column.propertyValue != updatedstatus.status && column.hasTask(updatedstatus.taskId)) {\n // Add task to column\n var index = column.tasks.indexOf(task[0]);\n column.tasks.splice(index, 1);\n }\n // Add task to column\n if (column.propertyValue == updatedstatus.status) { \n if (!column.hasTask(updatedstatus.taskId)) { \n column.tasks.push(task[0]);\n }\n }\n break;\n }\n }); \n }\n });\n\n return {\n getColumns: function (boardTasks, users) {\n\n tasks = boardTasks;\n columns = [];\n columns.push(createStatusColumn($translate.instant(\"COMMON_NEW\"), \"status\", \"blank\", tasks));\n columns.push(createStatusColumn($translate.instant(\"COMMON_IN_PROGRESS\"), \"progressStatus\", \"inprogress\", tasks));\n columns.push(createStatusColumn($translate.instant(\"COMMON_DONE\"), \"status\", \"OK\", tasks));\n columns.push(createStatusColumn($translate.instant(\"COMMON_BLOCKED\"), \"status\", \"unacceptable\", tasks));\n return columns;\n }\n\n \n }\n\n \n\n \n }\n \n return statusColumnProvider;\n }]);\n","angular\n .module('DigiLean')\n .directive(\"smartKanbanCard\", ['$filter','$uibModal','taskDrawingService','boardTaskService',\n function ($filter,$uibModal, taskDrawingService, boardTaskService) {\n return {\n templateUrl: 'smartKanbanCard.html',\n restrict: 'E',\n scope: {\n 'task': '<',\n 'users': ' 0) {\n scope.selectedPostIt = predefinedPostIt[0];\n setStyle(scope.selectedPostIt.fillColor, scope.selectedPostIt.background)\n } else {\n // Try to match background color\n var backgroundPostIt = $filter('filter')(scope.postIts, { background: taskColor });\n if (backgroundPostIt.length > 0) {\n scope.selectedPostIt = backgroundPostIt[0];\n setStyle(scope.selectedPostIt.fillColor, scope.selectedPostIt.background)\n } else {\n setStyle(scope.fillColor, scope.borderColor);\n }\n }\n }\n\n var setStyle = function (fillColor, borderColor) {\n \n if (fillColor == \"#ffffff\") {\n borderColor = scope.borderColor;\n }\n \n scope.task.displayColor = borderColor;\n }\n\n scope.openTask = function () {\n boardTaskService().get(scope.task.id).then(function (task) {\n $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'boardTask.html',\n controller: 'boardTaskController',\n resolve: {\n task: function () {\n return task;\n },\n activeTab: function () {\n return \"Info\";\n },\n options: function () {\n var options = {\n archiveAvailable: true,\n users: scope.users\n }\n return options;\n }\n }\n });\n });\n }\n }\n }\n }]);","angular.module('DigiLean').factory('actionListRowProvider', ['$filter',\n function ( $filter) {\n function actionListRowProvider() {\n function getTargetColumn(smartActionList, category) {\n // Find target column\n var targetColumn = {\n title: \"All\",\n columnIndex: 0,\n column: null\n\n };\n if(category && category.name) {\n var column = $filter('filter')(smartActionList.columns, { name: category.name }, true);\n if (column.length > 0) {\n var columnIndex = smartActionList.columns.indexOf(column[0]);\n targetColumn.columnIndex = columnIndex;\n targetColumn.column = column[0];\n }\n }\n\n return targetColumn;\n }\n\n var createCategories = function (smartActionList) {\n // For now we will support text columns\n var textColumns = $filter('filter')(smartActionList.columns, { attributeType: \"text\" }, true);\n var categories = [];\n textColumns.forEach(function (column) {\n if (column.settings && column.settings.usePredefinedLabels && column.settings.predefinedLabels) {\n categories.push({\n id: \"\",\n name: column.name,\n model: column,\n columnIndex: smartActionList.columns.indexOf(column)\n });\n }\n });\n var responsibleColumns = $filter('filter')(smartActionList.columns, { attributeType: \"responsible\" }, true);\n\n responsibleColumns.forEach(function (column) {\n categories.push({\n id: \"\",\n name: column.name,\n model: column,\n columnIndex: smartActionList.columns.indexOf(column)\n });\n\n });\n\n\n return categories;\n\n }\n var createdRowsFromCategory = function (model, category) {\n var rows = [];\n var rowIndex = 0;\n\n if (category) {\n var targetColumn = category.model;\n // Find distinct values to build rows, eith predefined or unique values pr task\n if (targetColumn.attributeType == \"text\" && targetColumn.settings) {\n var settings = targetColumn.settings;\n if (settings.usePredefinedLabels && settings.predefinedLabels) {\n settings.predefinedLabels.forEach(element => {\n rows.push({\n id: element.title,\n name: element.title,\n smartColumnId: targetColumn.id,\n index: rowIndex,\n type :\"text\",\n isDefault: false,\n rowModel: {\n background: element.background,\n color: element.color,\n text: element.title\n },\n categoryStyle: {\n backgroundColor: element.background,\n foregroundColor: element.color\n },\n updateTask: function (category, task) {\n var model = task.attributes[category.columnIndex];\n var value = this.rowModel;\n model.setValue(value);\n },\n getAttribute: function() {\n var attribute = {\n type: \"text\",\n value: {\n smartTableColumnId: this.smartColumnId,\n value: JSON.stringify(this.rowModel)\n }\n }\n return attribute;\n }\n })\n rowIndex += 1;\n });\n }\n }\n if (targetColumn.attributeType == \"responsible\") {\n // Create responsible rows\n var tasks = model.actionList.tasks;\n var uniqueResponsibleList = [];\n tasks.forEach(task => {\n if (task.responsibleUserId) {\n var inList = $filter('filter')(uniqueResponsibleList, { userId: task.responsibleUserId }, true);\n if (inList.length == 0) {\n uniqueResponsibleList.push({\n userId: task.responsibleUserId,\n fullName: task.responsibleUser,\n displayName: task.responsibleDisplayName\n })\n }\n }\n });\n // Create rows based on users\n uniqueResponsibleList.forEach(user => {\n rows.push({\n id: user.userId,\n name: user.fullName,\n index: rowIndex,\n isDefault: false,\n rowModel: user,\n type :\"responsible\",\n categoryStyle: {\n backgroundColor: \"#fcfcfc\",\n foregroundColor: \"default\"\n },\n updateTask: function (category, task) {\n var model = task.attributes[category.columnIndex];\n var value = this.rowModel;\n model.setValue(value);\n },\n getAttribute: function() {\n var attribute = {\n type: \"responsible\",\n value: this.rowModel\n }\n return attribute;\n }\n })\n rowIndex += 1;\n });\n }\n }\n // Create default row for task not matching any other rows\n rows.push({\n id: null,\n name: \"\",\n type: \"default\",\n index: rowIndex,\n isDefault: true,\n updateTask: function (category, task) {\n return;\n },\n getAttribute: function() {\n return;\n }\n });\n\n return rows;\n }\n return {\n createCategories: function (model) {\n return createCategories(model.actionList);\n },\n createRows: function (model, selectedCategory) {\n return createdRowsFromCategory(model, selectedCategory);\n },\n getRowForTask: function (model, category, rows, task) {\n var row = $filter('filter')(rows, { isDefault: true })[0];\n var targetColumn = getTargetColumn(model.actionList, category);\n // Map to correct row\n if (targetColumn.column && targetColumn.column.attributeType == \"text\") {\n var taskRowValue = task.attributes[targetColumn.columnIndex].cell;\n if (taskRowValue.value) {\n var targetRow = $filter('filter')(rows, { name: taskRowValue.value.text });\n if (targetRow.length > 0) {\n row = targetRow[0];\n }\n }\n }\n if (targetColumn.column && targetColumn.column.attributeType == \"responsible\") {\n var targetRow = $filter('filter')(rows, { id: task.responsibleUserId });\n if (targetRow.length > 0) {\n row = targetRow[0];\n }\n }\n\n return row;\n }\n \n };\n }\n return actionListRowProvider;\n }]);\n\n","angular.module('DigiLean').factory('boardRowProvider', ['$filter',\n function ($filter) {\n function boardRowProvider() {\n var rows = [];\n return {\n createCategories: function (model) {\n return [];\n },\n createRows: function(model, selectedCategory) {\n var rowIndex = 0;\n for (let index = 0; index < model.rows.length; index++) {\n const row = model.rows[index];\n row.index = rowIndex;\n row.type =\"boardcategory\";\n row.taskRows = [];\n rowIndex += 1;\n }\n return model.rows;\n },\n };\n }\n return boardRowProvider;\n }]);\n\n","angular.module('DigiLean').factory('monthlyRenderService', ['$filter',\n function ($filter) {\n function monthlyRenderService() {\n\n return {\n addTaskToRow: function (task, row, timeOptions) {\n // Make sure task has rowIdentifcator\n task.rowCategoryId = row.id;\n task.rowIndex = row.index;\n // If no current tasks, than create\n if (row.taskRows.length == 0) {\n var newRow = this.createTaskRow(task, timeOptions);\n row.taskRows.push(newRow);\n return;\n }\n // else we will try to fit in first available row.\n for (let index = 0; index < row.taskRows.length; index++) {\n const taskRow = row.taskRows[index];\n var taskAdded = this.addTaskToRowIfSpace(task, taskRow, timeOptions)\n if (taskAdded) return;\n }\n // If not placed in existing row, we need to add a new one\n var newRow = this.createTaskRow(task, timeOptions);\n row.taskRows.push(newRow);\n return;\n },\n\n moveTask: function (task, targetOptions, timeOptions) {\n var targetWeek = targetOptions.targetWeek;\n // Special rule for week 1 when in december, to add correct week\n if (targetOptions.targetMonth == 12 && targetWeek == 1) {\n // find index of week 1.\n targetWeek = timeOptions.lastWeek.indexNumber;\n } \n var diff = task.startWeek - targetWeek;\n if (diff > 0) {\n task.startTime = moment(task.startTime).subtract(diff, \"weeks\");\n task.endTime = moment(task.endTime).subtract(diff, \"weeks\");\n } else {\n diff = diff * -1;\n task.startTime = moment(task.startTime).add(diff, \"weeks\");\n task.endTime = moment(task.endTime).add(diff, \"weeks\");\n }\n this.calculateDuration(task, timeOptions);\n },\n\n reCalculateRow: function (data, targetRowId, timeOptions) {\n var targetRow = $filter('filter')(data.rows, { id: targetRowId }, true)[0];\n targetRow.taskRows.splice(0, targetRow.taskRows.length);\n var tasks = $filter('filter')(data.tasks, { rowCategoryId: targetRowId }, true);\n for (let index = 0; index < tasks.length; index++) {\n const task = tasks[index];\n this.addTaskToRow(task, targetRow, timeOptions);\n }\n\n },\n\n reCalculateRowByIndex: function(data, targetRowIndex, timeOptions) {\n var targetRow = $filter('filter')(data.rows, { index: targetRowIndex }, true)[0];\n targetRow.taskRows.splice(0, targetRow.taskRows.length);\n var tasks = $filter('filter')(data.tasks, { rowIndex: targetRowIndex }, true);\n for (let index = 0; index < tasks.length; index++) {\n const task = tasks[index];\n this.addTaskToRow(task, targetRow, timeOptions);\n }\n \n },\n\n addTaskToRowIfSpace(task, taskRow, timeOptions) {\n // First check if all cells needed are available\n for (let index = task.startWeek; index <= task.endWeek; index++) {\n var startCell = $filter('filter')(taskRow.cells, { id: index }, true);\n // if cell doesn't exists (already part of another colspan or already have task)\n if (startCell.length == 0 || startCell[0].task) return false;\n }\n // Add task to cell and set colspan\n var startCell = $filter('filter')(taskRow.cells, { id: task.startWeek }, true)[0];\n startCell.colspan = task.durationInWeeksCurrentMonth;\n startCell.task = task;\n // Now let's removed cell affected by colspan\n if (task.durationInWeeksCurrentMonth > 1) {\n // Use start month(not -1) because 0 index array.\n var index = taskRow.cells.indexOf(startCell);\n taskRow.cells.splice(index + 1, task.durationInWeeksCurrentMonth - 1);\n }\n return true;\n },\n\n createTaskRow: function (task, timeOptions) {\n var newRow = {\n cells: []\n }\n for (let index = timeOptions.firstWeek.indexNumber; index < task.startWeek; index++) {\n var cell = {\n id: index,\n colspan: 1\n }\n newRow.cells.push(cell)\n }\n var taskCell = {\n id: task.startWeek,\n colspan: task.durationInWeeksCurrentMonth,\n task: task\n }\n newRow.cells.push(taskCell);\n for (let index = (task.startWeek + task.durationInWeeksCurrentMonth); index <= timeOptions.lastWeek.indexNumber; index++) {\n var cell = {\n id: index,\n colspan: 1\n }\n newRow.cells.push(cell)\n }\n return newRow;\n },\n calculateDuration: function (task, timeOptions) {\n var firstWeek = timeOptions.month.weeks[0];\n var lastweek = timeOptions.month.weeks[timeOptions.month.weeks.length - 1];\n task.startTime = moment(task.startTime).toDate();\n task.endTime = moment(task.endTime).toDate();\n if (task.startTime && task.endTime) {\n var startWeek = moment(task.startTime).isoWeek(); // Javascript months are 0 indexed\n \n var endWeek = moment(task.endTime).isoWeek();\n task.isStartOutsideCurrentPeriod = false;\n task.isEndOutsideCurrentPeriod = false;\n\n // If\n if (endWeek < startWeek || task.endTime > lastweek.endDate) {\n // if task duration end within a greater month, we need to set it to this year\n endWeek = lastweek.indexNumber;\n task.isEndOutsideCurrentPeriod = true;\n }\n if (startWeek > endWeek || task.startTime < firstWeek.startDate) {\n // if task duration end within a greater month, we need to set it to this year\n startWeek = firstWeek.indexNumber;\n if (firstWeek.indexNumber > firstWeek.number) {\n startWeek = firstWeek.number;\n }\n task.isStartOutsideCurrentPeriod = true;\n }\n // How many weeks within current year\n task.startWeek = startWeek;\n task.endWeek = endWeek;\n // December rule, 1 week next year\n if (timeOptions.month.id == 12 && task.startWeek == 1) {\n task.startWeek = lastweek.indexNumber;\n task.endWeek = lastweek.indexNumber;\n }\n if (timeOptions.month.id == 1 && task.startWeek > 50) {\n task.startWeek = firstWeek.indexNumber;\n }\n if (timeOptions.month.id == 1 && task.endWeek > 50) {\n task.endWeek = endWeek.indexNumber;\n }\n task.durationInWeeksCurrentMonth = (endWeek - startWeek) + 1; // we need to add one\n }\n }\n\n };\n }\n return monthlyRenderService;\n }]);\n\n","// Controller for the actual modal\nvar DigiLean = angular.module('DigiLean');\nDigiLean.controller('newYearlyTaskController', ['$scope', '$filter', '$uibModalInstance', 'boardTaskService', 'task', 'options', 'users', 'taskDrawingService',\n function ($scope, $filter, $uibModalInstance, boardTaskService, task, options, users, taskDrawingService) {\n $scope.task = task;\n $scope.users = users;\n $scope.uploadedFiles = [];\n\n $scope.isProcessing = false;\n $scope.showDueDate = false;\n $scope.postIts = taskDrawingService().getPostIts();\n\n $scope.enddateBeforeStartdate = false;\n \n\n // colors\n var borderStyle = \"6px solid\";\n $scope.taskBorderStyle = {\n \"border-bottom\": borderStyle + \"#ffffff\"\n }\n $scope.background = \"#ffffff\";\n $scope.fillColor = \"#ffffff\";\n $scope.customColorBackground = \"#a9a9a9\";\n\n $scope.selectColor = function (postIt) {\n $scope.selectedPostIt = postIt;\n $scope.background = postIt.background;\n $scope.fillColor = postIt.fillColor;\n $scope.taskBorderStyle = {\n \"border-bottom\": borderStyle + $scope.background\n }\n if (postIt.tags) {\n setTimeout(function () {\n $(\"#taskTags\").tagit({\n // This will make Tag-it submit a single form value, as a comma-delimited field.\n singleField: true,\n singleFieldNode: $('#tagsSelected')\n });\n var tagArray = postIt.tags;\n for (var i = 0; i < tagArray.length; i++) {\n $(\"#taskTags\").tagit('createTag', tagArray[i]);\n }\n }, 10);\n }\n }\n\n if (options) {\n\n // Set color\n if (options.postIts) {\n $scope.postIts = options.postIts;\n } else {\n $scope.postIts = taskDrawingService().getPostIts();\n }\n\n if (options.color) {\n task.color = options.color;\n $scope.background = task.color;\n $scope.taskBorderStyle = {\n \"border-bottom\": borderStyle + $scope.background\n }\n var predefinedPostIt = $filter('filter')($scope.postIts, { background: $scope.background });\n if (predefinedPostIt.length > 0) {\n $scope.selectColor(predefinedPostIt[0]);\n } else //Custom color \n {\n $scope.selectColor({ title: \"custom\", background: $scope.customColorBackground });\n $scope.customColorBackground = task.color;\n }\n\n }\n\n if (options.attribute) {\n // Set responsilbe\n if (options.attribute.type == \"responsible\" && options.attribute.value) {\n // Set responsible\n var user = options.attribute.value;\n $scope.task.responsibleUserId = user.userId;\n $scope.task.responsibleUser = user.userName;\n $scope.task.responsibleDisplayName = user.userDisplayName;\n\n }\n // Set textcell attribute\n if (options.attribute.type == \"text\" && options.attribute.value) {\n // Set cell / attribute\n $scope.task.cells = [];\n $scope.task.cells.push(options.attribute.value);\n }\n }\n };\n\n //$scope.postIts = taskDrawingService().getPostIts()\n\n\n /*\n if (task.color) {\n $scope.background = task.color;\n $scope.taskBorderStyle = {\n \"border-bottom\": borderStyle + $scope.background\n }\n var predefinedPostIt = $filter('filter')($scope.postIts, { background: $scope.background });\n if (predefinedPostIt.length > 0) {\n $scope.selectColor(predefinedPostIt[0]);\n } else //Custom color \n {\n $scope.selectColor({ title: \"custom\", background: $scope.customColorBackground });\n $scope.customColorBackground = task.color;\n }\n }*/\n\n \n // Init tags and focus (without this the textfield is 2px)\n setTimeout(function () {\n $(\"#taskTags\").tagit({\n // This will make Tag-it submit a single form value, as a comma-delimited field.\n singleField: true,\n singleFieldNode: $('#tagsSelected')\n });\n var tagArray = $scope.task.tags.split(\",\");\n for (var i = 0; i < tagArray.length; i++) {\n $(\"#taskTags\").tagit('createTag', tagArray[i]);\n }\n // Description as focus\n //$('#taskDescriptionId').focus();\n }, 50);\n\n /*\n var setProfileImage = function () {\n if (!$scope.task || !$scope.task.responsibleUserId || !$scope.users) return;\n \n for (var i = 0; i < $scope.users.length; i++) {\n var user = $scope.users[i];\n if (user.profileImageUrl && user.id == $scope.task.responsibleUserId) {\n scope.task.responsibleImageUrl = user.profileImageUrl;\n }\n }\n }*/\n\n $scope.emptyUser = {\n id: '',\n userName: null,\n profileImageUrl: null,\n fullName: null,\n displayName: null\n }\n $scope.selectUser = function (user) {\n\n $scope.task.responsibleImageUrl = user.profileImageUrl;\n $scope.task.responsibleUserId = user.id;\n $scope.task.responsibleUser = user.fullName;\n $scope.task.responsibleDisplayName = user.displayName;\n $scope.task.user = user;\n }\n\n $scope.startTimeUpdated = function ($event) {\n const date = $event.originalEvent.detail\n $scope.task.startTime = date\n if ($scope.task.startTime) {\n // Make sure boardDate is date object \n $scope.task.startTime = moment($scope.task.startTime).toDate();\n checkDate();\n }\n }\n $scope.endTimeUpdated = function ($event) {\n const date = $event.originalEvent.detail\n $scope.task.endTime = date\n if ($scope.task.endTime) {\n // Make sure boardDate is date object \n $scope.task.endTime = moment($scope.task.endTime).toDate();\n checkDate();\n }\n }\n\n function checkDate(){\n $scope.enddateBeforeStartdate = false;\n if(moment($scope.task.endTime).isBefore($scope.task.startTime)){\n $scope.enddateBeforeStartdate = true;\n }\n }\n $scope.ok = function () {\n $scope.isProcessing = true;\n var tagSingleString = $(\"#tagsSelected\").val();\n var tagsArray = tagSingleString.split(\",\");\n var tags = [];\n for (var i = 0; i < tagsArray.length; i++) { // Hide all \n tags.push({\n Id: 0,\n Tag: tagsArray[i],\n BoardTaskId: 0\n });\n }\n $scope.task.boardDate = $scope.task.endTime;\n $scope.task.tags = tags;\n $scope.task.color = $scope.fillColor;\n $scope.task.files = $scope.uploadedFiles;\n boardTaskService().addBoardTask($scope.task).then(function (createdTask) {\n $scope.isProcessing = false;\n $uibModalInstance.close(createdTask);\n });\n\n };\n\n\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n }]);","angular.module('DigiLean').factory('weeklyRenderService', ['$filter',\n function ($filter) {\n function weeklyRenderService() {\n\n return {\n addTaskToRow: function (task, row, timeOptions) {\n // Make sure task has rowIdentifcator\n task.rowCategoryId = row.id;\n task.rowIndex = row.index;\n // If no current tasks, than create\n if (row.taskRows.length == 0) {\n var newRow = this.createTaskRow(task, timeOptions);\n row.taskRows.push(newRow);\n return;\n }\n // else we will try to fit in first available row.\n for (let index = 0; index < row.taskRows.length; index++) {\n const taskRow = row.taskRows[index];\n var taskAdded = this.addTaskToRowIfSpace(task, taskRow, timeOptions)\n if (taskAdded) return;\n }\n // If not placed in existing row, we need to add a new one\n var newRow = this.createTaskRow(task, timeOptions);\n row.taskRows.push(newRow);\n return;\n },\n\n moveTask: function (task, targetOptions, timeOptions) {\n var targetDay = targetOptions.targetDay;\n var diff = task.startDay - targetDay;\n if (diff > 0) {\n task.startTime = moment(task.startTime).subtract(diff, \"days\");\n task.endTime = moment(task.endTime).subtract(diff, \"days\");\n } else {\n diff = diff * -1;\n task.startTime = moment(task.startTime).add(diff, \"days\");\n task.endTime = moment(task.endTime).add(diff, \"days\");\n }\n this.calculateDuration(task, timeOptions);\n },\n\n reCalculateRow: function (data, targetRowId, timeOptions) {\n var targetRow = $filter('filter')(data.rows, { id: targetRowId }, true)[0];\n targetRow.taskRows.splice(0, targetRow.taskRows.length);\n var tasks = $filter('filter')(data.tasks, { rowCategoryId: targetRowId }, true);\n for (let index = 0; index < tasks.length; index++) {\n const task = tasks[index];\n this.addTaskToRow(task, targetRow, timeOptions);\n }\n\n },\n\n reCalculateRowByIndex: function(data, targetRowIndex, timeOptions) {\n var targetRow = $filter('filter')(data.rows, { index: targetRowIndex }, true)[0];\n targetRow.taskRows.splice(0, targetRow.taskRows.length);\n var tasks = $filter('filter')(data.tasks, { rowIndex: targetRowIndex }, true);\n for (let index = 0; index < tasks.length; index++) {\n const task = tasks[index];\n this.addTaskToRow(task, targetRow, timeOptions);\n }\n \n },\n\n addTaskToRowIfSpace(task, taskRow, timeOptions) {\n // First check if all cells needed are available\n for (let index = task.startDay; index <= task.endDay; index++) {\n var startCell = $filter('filter')(taskRow.cells, { id: index }, true);\n // if cell doesn't exists (already part of another colspan or already have task)\n if (startCell.length == 0 || startCell[0].task) return false;\n }\n // Add task to cell and set colspan\n var startCell = $filter('filter')(taskRow.cells, { id: task.startDay }, true)[0];\n startCell.colspan = task.durationInDaysCurrentWeek;\n startCell.task = task;\n // Now let's removed cell affected by colspan\n if (task.durationInDaysCurrentWeek > 1) {\n // Use start month(not -1) because 0 index array.\n var index = taskRow.cells.indexOf(startCell);\n taskRow.cells.splice(index + 1, task.durationInDaysCurrentWeek - 1);\n }\n return true;\n },\n\n createTaskRow: function (task, timeOptions) {\n var newRow = {\n cells: []\n }\n for (let index = timeOptions.firstDay.number; index < task.startDay; index++) {\n var cell = {\n id: index,\n colspan: 1\n }\n newRow.cells.push(cell)\n }\n var taskCell = {\n id: task.startDay,\n colspan: task.durationInDaysCurrentWeek,\n task: task\n }\n newRow.cells.push(taskCell);\n for (let index = (task.startDay + task.durationInDaysCurrentWeek); index <= 7; index++) {\n var cell = {\n id: index,\n colspan: 1\n }\n newRow.cells.push(cell)\n }\n return newRow;\n },\n calculateDuration: function (task, timeOptions) {\n var firstDay = timeOptions.week.days[0];\n var lastday = timeOptions.week.days[timeOptions.week.days.length - 1];\n task.startTime = moment(task.startTime).toDate();\n task.endTime = moment(task.endTime).toDate();\n if (task.startTime && task.endTime) {\n var startDay = moment(task.startTime).isoWeekday(); // Javascript months are 0 indexed\n \n var endDay = moment(task.endTime).isoWeekday();\n task.isStartOutsideCurrentPeriod = false;\n task.isEndOutsideCurrentPeriod = false;\n\n // If\n if (task.endTime > lastday.date) {\n // if task duration end within a greater month, we need to set it to this year\n endDay = lastday.number;\n task.isEndOutsideCurrentPeriod = true;\n }\n if (task.startTime < firstDay.date) {\n // if task duration end within a greater month, we need to set it to this year\n startDay = firstDay.number;\n task.isStartOutsideCurrentPeriod = true;\n }\n // How many days within current year\n task.startDay = startDay;\n task.endDay = endDay;\n\n task.durationInDaysCurrentWeek = (endDay - startDay) + 1; // we need to add one\n }\n }\n\n };\n }\n return weeklyRenderService;\n }]);\n\n","angular.module('DigiLean').factory('yearlyboardRenderService', ['$filter',\n function ($filter) {\n function yearlyboardRenderService() {\n\n return {\n addTaskToRow: function (task, row, timeOptions) {\n // Make sure task has rowIdentifcator\n task.rowCategoryId = row.id;\n task.rowIndex = row.index;\n // If no current tasks, than create\n if (row.taskRows.length == 0) {\n var newRow = this.createTaskRow(task);\n row.taskRows.push(newRow);\n return;\n }\n // else we will try to fit in first available row.\n for (let index = 0; index < row.taskRows.length; index++) {\n const taskRow = row.taskRows[index];\n var taskAdded = this.addTaskToRowIfSpace(task, taskRow)\n if (taskAdded) return;\n }\n // If not placed in existing row, we need to add a new one\n var newRow = this.createTaskRow(task, timeOptions);\n row.taskRows.push(newRow);\n return;\n },\n\n moveTask: function(task, targetOptions, timeOptions) {\n var targetMonth = targetOptions.targetMonth;\n var diff = task.startMonth - targetMonth;\n if (diff > 0) {\n task.startTime = moment(task.startTime).subtract(diff, \"months\");\n task.endTime = moment(task.endTime).subtract(diff, \"months\");\n } else {\n diff = diff * -1;\n task.startTime = moment(task.startTime).add(diff, \"months\");\n task.endTime = moment(task.endTime).add(diff, \"months\");\n }\n this.calculateDuration(task, timeOptions);\n },\n\n reCalculateRow: function(data, targetRowId, timeOptions) {\n var targetRow = $filter('filter')(data.rows, { id: targetRowId }, true)[0];\n if (!targetRow) return;\n targetRow.taskRows.splice(0, targetRow.taskRows.length);\n var tasks = $filter('filter')(data.tasks, { rowCategoryId: targetRowId }, true);\n if (tasks.length == 0) return;\n for (let index = 0; index < tasks.length; index++) {\n const task = tasks[index];\n this.addTaskToRow(task, targetRow);\n }\n \n },\n\n reCalculateRowByIndex: function(data, targetRowIndex, timeOptions) {\n var targetRow = $filter('filter')(data.rows, { index: targetRowIndex }, true)[0];\n targetRow.taskRows.splice(0, targetRow.taskRows.length);\n var tasks = $filter('filter')(data.tasks, { rowIndex: targetRowIndex }, true);\n for (let index = 0; index < tasks.length; index++) {\n const task = tasks[index];\n this.addTaskToRow(task, targetRow);\n }\n \n },\n\n addTaskToRowIfSpace(task, taskRow, timeOptions) {\n // First check if all cells needed are available\n for (let index = task.startMonth; index <= task.endMonth; index++) {\n var startCell = $filter('filter')(taskRow.cells, { id: index }, true);\n // if cell doesn't exists (already part of another colspan or already have task)\n if (startCell.length == 0 || startCell[0].task) return false;\n }\n // Add task to cell and set colspan\n var startCell = $filter('filter')(taskRow.cells, { id: task.startMonth }, true)[0];\n startCell.colspan = task.durationInMonthsCurrentYear;\n startCell.task = task;\n // Now let's removed cell affected by colspan\n if (task.durationInMonthsCurrentYear > 1) {\n // Use start month(not -1) because 0 index array.\n var index = taskRow.cells.indexOf(startCell);\n taskRow.cells.splice(index+1, task.durationInMonthsCurrentYear-1);\n }\n return true;\n },\n\n createTaskRow: function (task, timeOptions) {\n var newRow = {\n cells: []\n }\n for (let index = 1; index < task.startMonth; index++) {\n var cell = {\n id: index,\n colspan: 1\n }\n newRow.cells.push(cell)\n }\n var taskCell = {\n id: task.startMonth,\n colspan: task.durationInMonthsCurrentYear,\n task: task\n }\n newRow.cells.push(taskCell);\n for (let index = (task.startMonth + task.durationInMonthsCurrentYear); index <= 12; index++) {\n var cell = {\n id: index,\n colspan: 1\n }\n newRow.cells.push(cell)\n }\n return newRow;\n },\n calculateDuration: function (task, timeOptions) {\n var currentYear = timeOptions.year;\n if (task.startTime && task.endTime) {\n var startMonth = moment(task.startTime).month() + 1; // Javascript months are 0 indexed\n var startYear = moment(task.startTime).year();\n var endMonth = moment(task.endTime).month() + 1;\n var endYear = moment(task.endTime).year();\n task.isStartOutsideCurrentPeriod = false;\n task.isEndOutsideCurrentPeriod = false;\n \n // If\n if (endYear > currentYear) {\n // if task duration end within a greater year, we need to set it to this year\n endMonth = 12;\n task.isEndOutsideCurrentPeriod = true;\n }\n if (startYear < currentYear) {\n // if task duration end within a greater year, we need to set it to this year\n startMonth = 1;\n task.isStartOutsideCurrentPeriod = true;\n }\n // How many month within current month\n task.startMonth = startMonth;\n task.endMonth = endMonth;\n \n task.durationInMonthsCurrentYear = (endMonth - startMonth) + 1; // we need to add one\n }\n }\n\n };\n }\n return yearlyboardRenderService;\n }]);\n\n","angular\n .module('DigiLean')\n .controller(\"confirmationDialogController\", ['$scope', '$state', '$uibModalInstance', 'proposition',\n function ($scope, $state, $uibModalInstance, proposition) {\n\n\n proposition.title.then(x => $scope.title = x);\n proposition.text.then(x => $scope.text = x);\n proposition.okText.then(x => $scope.okText = x);\n proposition.cancelText.then(x => $scope.cancelText = x);\n\n\n $scope.ok = function () {\n $uibModalInstance.close();\n };\n\n $scope.close = function () {\n $uibModalInstance.dismiss('cancel');\n };\n }]);\n","var DigiLean = angular.module('DigiLean');\nDigiLean.directive(\"numericInput\", ['$filter', \n function ($filter) {\n return {\n templateUrl: 'numericInput.html',\n restrict: 'E',\n scope: {\n 'value': '<',\n 'valueChanged': '&',\n },\n link: function (scope, elem, attrs) {\n\n var commaActive = false;\n var tempStringValue = \"\";\n\n var countDecimals = function(value) {\n let text = value.toString()\n // verify if number 0.000005 is represented as \"5e-6\"\n if (text.indexOf('e-') > -1) {\n let [base, trail] = text.split('e-');\n let deg = parseInt(trail, 10);\n return deg;\n }\n // count decimals for number in representation like \"0.123456\"\n if (Math.floor(value) !== value) {\n var decimals = value.toString().split(\".\")[1];\n if(decimals){\n return decimals.length;\n } else return 0;\n }\n return 0;\n }\n\n function parseString(valueString){\n if(valueString && valueString.length > 0){\n var ending = valueString.substring(valueString.length-1, valueString.length);\n if(ending == \"0\"){\n var decimalPlaces = countDecimals(valueString);\n if(decimalPlaces>0)\n return parseFloat(valueString).toFixed(decimalPlaces);\n }\n }\n return parseFloat(valueString);\n }\n\n // comments here\n scope.addNumber = function(number) {\n if (!scope.value) {\n scope.value = \"\";\n }\n // Treat value as string to add\n var sum = scope.value.toString();\n if(commaActive){\n sum = sum + \".\";\n commaActive = false;\n }\n sum = sum + number.toString();\n tempStringValue = sum;\n var value = parseString(sum);//parseFloat(sum);\n scope.valueChanged({number: value});\n }\n\n scope.backSpace = function() {\n if (!scope.value) return;\n // Treat value as string to add\n var value = scope.value.toString();\n value = value.substring(0, value.length - 1);\n if (value) {\n scope.valueChanged({number: parseString(value)});\n } else {\n scope.valueChanged({number: null});\n } \n }\n\n scope.comma = function() {\n\n if (!scope.value) {\n scope.value = \"0\";\n }\n var value = scope.value.toString();\n if(value.includes(\".\")){\n commaActive = false;\n } else {\n commaActive = true;\n }\n \n }\n }\n }\n }]);\n","// Controller for the actual modal\nvar DigiLean = angular.module('DigiLean');\nDigiLean.controller('changestatusController', ['$scope', '$filter', '$uibModalInstance', '$translate', 'suggestionService', 'suggestion',\n function ($scope, $filter, $uibModalInstance, $translate, suggestionService, suggestion) {\n $scope.title = \"Change suggestion status\";\n\n $translate('DASHBOARD_CHANGE_SUGGESTION_STATUS').then(function (title) {\n $scope.title = title;\n }, function (translationId) {\n $scope.headline = translationId;\n });\n\n\n $scope.statuses = suggestionService().getSuggestionStatuses();\n\n $scope.comment = \"\";\n $scope.suggestion = suggestion;\n $scope.selectedStatus = $filter('filter')($scope.statuses, { status: suggestion.status }, true)[0];\n $scope.ok = function () {\n $scope.suggestion.status = $scope.selectedStatus.status;\n var suggestionStatus = {\n suggestionId: $scope.suggestion.id,\n status: $scope.suggestion.status,\n priorityStatus: 0,\n comment: $scope.comment\n }\n suggestionService().updateStatusOnCustomerSuggestion(suggestionStatus).then(function () {\n $uibModalInstance.close(suggestionStatus);\n });\n };\n\n $scope.cancel = function () {\n $translate('COMMON_CANCEL').then(function (msg) {\n $uibModalInstance.dismiss(msg);\n }, function (translationId) {\n $scope.headline = translationId;\n });\n };\n }]);","var DigiLean = angular.module('DigiLean'); \nDigiLean.controller('customerfeedbackController', ['$scope', '$filter', 'suggestionService', 'authService', '$uibModal',\nfunction ($scope, $filter, suggestionService, authService, $uibModal) {\n \n // This is only for Kaizen so return if not in role.\n if (!authService.hasRole(\"KaizenAdmin\")) return;\n\n $scope.suggestions = [];\n $scope.allSuggestions = [];\n $scope.suggestionsToBeHandled = [];\n \n $scope.subscribe('ImprovementChangedStatus', function (status) { \n var improvement = $filter('filter')($scope.suggestions, { id: status.suggestionId }, true);\n if (improvement.length > 0) {\n improvement[0].changed = true;\n improvement[0].status = status.status;\n } \n });\n\n $scope.changeStatus = function (suggestion) {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'changestatus.html',\n controller: 'changestatusController',\n resolve: {\n suggestion: function () {\n return suggestion;\n }\n }\n });\n };\n\n\n $scope.subscribe(\"SuggestionCommentedOn\", function (suggestionComment) {\n // Check if comment is related to one of users\n var improvement = $filter('filter')($scope.suggestions, { id: suggestionComment.improvementSuggestionId }, true);\n if (improvement.length > 0) {\n improvement[0].changed = true;\n improvement[0].comments.push(suggestionComment);\n var index = $scope.suggestions.indexOf(improvement[0]);\n if (index > -1) {\n $scope.suggestions.splice(index, 1);\n $scope.suggestions.unshift(improvement[0]);\n }\n \n }\n });\n\n\n // Get suggestions\n var getSuggestions = function () {\n suggestionService().getCustomerSuggestions().then(function (suggestions) {\n suggestions.forEach(function (suggestion) {\n suggestion.activeComment = \"\";\n suggestion.changed = false;\n if(suggestion.status === \"Suggested\" || suggestion.status === \"Open\" || suggestion.status === \"Planned\" || suggestion.status === \"InProgress\"){\n $scope.suggestionsToBeHandled.push(suggestion);\n }\n });\n $scope.suggestions = $scope.suggestionsToBeHandled;\n $scope.allSuggestions = suggestions;\n });\n }\n getSuggestions();\n\n\n\n $scope.showSuggestionsToBeHandled = function () {\n $scope.suggestions = $scope.suggestionsToBeHandled;\n }\n\n $scope.showAllSuggestions = function () {\n $scope.suggestions = $scope.allSuggestions;\n }\n \n\n $scope.showComments = function (suggestion) {\n suggestion.showComments = !suggestion.showComments;\n }\n\n $scope.addComment = function (suggestion) {\n if (typeof suggestion.comments === 'undefined') {\n suggestion.comments = [];\n }\n\n var currentComment = {\n suggestionId: suggestion.id,\n comment: suggestion.activeComment\n };\n suggestionService().addComment(currentComment).then(function (savedComment) {\n suggestion.comments.push(savedComment);\n return false;\n });\n suggestion.activeComment = \"\";\n\n }\n\n}]);","// Controller for the actual modal\nvar DigiLean = angular.module('DigiLean'); \nDigiLean.controller('widgetDeleteConfirmation', ['$scope', '$uibModalInstance', 'widget',\n function ($scope, $uibModalInstance, widget) {\n $scope.answer = function(answer) {\n $uibModalInstance.close(answer);\n }\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n }]);","angular\n .module(\"DigiLean\")\n .directive('a3tableApp', ['$translate', 'a3TableService', 'debounce',\n function ($translate, a3TableService, debounce) {\n return {\n templateUrl: 'a3tableApp.html',\n restrict: 'E',\n scope: {\n 'isAdminMode': '<',\n 'assetId': '<',\n 'settings': '<',\n 'settingsChangeHandler': '&'\n },\n link: function (scope, elem, attrs) {\n\n scope.boardData = null;\n scope.hasBoard = false;\n scope.$watch('settings', function (settings) {\n scope.settings = settings;\n if (settings) {\n loadBoard(settings.boardId);\n } else if (scope.isAdminMode) {\n createNewA3TableDebounced();\n }\n });\n scope.boards = [];\n scope.boardChanged = function (selectedBoard) {\n loadBoard(selectedBoard.id);\n updateSettings();\n }\n\n var currentBoardId = 0;\n var loadBoard = function (boardId) {\n if (currentBoardId == boardId)\n return;\n currentBoardId = boardId;\n if (boardId == 0) {\n scope.hasBoard = false;\n return; \n }\n scope.isLoading = true;\n scope.hasBoard = true;\n a3TableService().get(boardId).then(function (board) {\n scope.boardData = board;\n })\n }\n\n function createNewA3Table(){\n var template = {\n board: {\n boardType: \"A3\",\n name: $translate.instant(\"A3_TABLE\"),\n description: \"\",\n isPublic: true,\n assetId: scope.assetId,\n settings: JSON.stringify({\n IsWeeklyBoard: false\n })\n },\n columns: a3TableService().getStandardA3Columns(),\n a3s: [],\n cells: []\n \n };\n if (scope.hasBoard) {\n console.log(\"A3 board detected, don't create new\")\n return\n }\n console.log(\"%c New A3 board will now be created!\", \"background: #F00; color: #FFF\");\n a3TableService().createA3Table(template).then(function (savedModel) {\n scope.selectedBoard = savedModel.board;\n scope.boardData = savedModel;\n updateSettings(); \n });\n \n }\n const createNewA3TableDebounced = debounce(createNewA3Table, 500, false)\n\n\n function updateSettings() {\n if (scope.isAdminMode) {\n var componentSettings = {\n boardId: scope.selectedBoard.id,\n };\n scope.settingsChangeHandler({ settings: componentSettings });\n }\n }\n\n }\n }\n }]);\n\n","angular\n .module('DigiLean').directive(\"a3ViewerApp\", ['a3Service', 'debounce',\n function a3ViewerApp(a3Service, debounce) {\n return {\n templateUrl: 'a3ViewerApp.html',\n restrict: 'E',\n scope: {\n 'isAdminMode': '<',\n 'settings': '=',\n 'settingsChangeHandler': '&'\n },\n link: function ($scope, elem) {\n $scope.a3Id = null;\n $scope.canEdit = false;\n //$scope.isAdminMode = false;\n $scope.selectedA3 = {};\n\n $scope.$watch('isAdminMode', function (value) {\n if(value){\n loadAllA3s();\n }\n });\n\n $scope.$watch('settings', function (settings) {\n $scope.settings = settings;\n if (settings && settings.a3Id) {\n $scope.a3Id = settings.a3Id;\n }\n updateContainerHeightDebounced();\n });\n\n $scope.a3Changed = function (selectedA3) {\n $scope.a3Id = selectedA3.id;\n updateSettings();\n }\n\n \n function loadAllA3s() {\n if ($scope.allA3s) return;\n a3Service().getA3s().then(function (a3s) {\n $scope.allA3s = a3s;\n if ($scope.a3Id) {\n const selected = $scope.allA3s.find(a => a.id == $scope.a3Id);\n if(selected){\n $scope.selectedA3 = selected;\n }\n }\n });\n }\n\n function updateSettings() {\n if ($scope.isAdminMode) {\n var componentSettings = {\n a3Id: $scope.a3Id\n };\n $scope.settingsChangeHandler({ settings: componentSettings });\n }\n }\n\n $scope.targetSize = {\n height: 1654,\n width: 2338\n }\n function updateContainerHeight() {\n var host = $(elem).closest(\".grid-stack-item-content\");\n if (host.length == 0)\n host = $(elem).closest(\".modal-body\")\n \n if (host.length == 0) return;\n \n var width = host.width();\n var height = host.height();\n\n // Find header to subtract from new height\n var header = $(elem).find(\".ibox-title\");\n var headerHeight = header.height() + 40;\n var container = $(elem).find(\".a3viewer\");\n if (container.length === 0) return;\n var targetHeight = height - headerHeight;\n //$(container).css(\"height\", targetHeight);\n $scope.targetSize = {\n height: height,\n width: width\n }\n }\n const updateContainerHeightDebounced = debounce(updateContainerHeight, 100, false)\n $scope.$on(\"widget-resized\", function (event, args) {\n updateContainerHeightDebounced();\n });\n }\n }\n\n }]);\n\n\n\n\n\n\n","// Controller for the actual modal\nvar DigiLean = angular.module('DigiLean');\nDigiLean.controller('appstoreController', ['$scope', '$filter', '$uibModalInstance', '$translate', 'appstoreService',\n function ($scope, $filter, $uibModalInstance, $translate,appstoreService) {\n $scope.selectedApp = {};\n\n $scope.allApps = appstoreService().getApps();\n $scope.apps = $scope.allApps;\n\n $scope.isAllSelected = true;\n $scope.types = [\n {\n title: \"KPI\",\n isSelected: false,\n apps: [\"singlevalue\",\"singlevaluetarget\", \"targetgraph\", \"minmaxchart\", \"productionboard\",\"greencross\", \"5s\",\n \"A\", \"C\", \"D\", \"I\",\"K\", \"L\", \"P\",\"Q\",\"dailykpidynamic\",\"smiley\"]\n },\n {\n title: $translate.instant(\"DASHBOARD_GRAPH\"),\n isSelected: false,\n apps: [\"targetgraph\", \"trendbarchart\",\"minmaxchart\", \"piechart\",\n \"barchart\", \"stackedhorizantalbarchart\", \"splitPackedBubbleChart\", \n \"pareto\", \"comparechart\", \"multichart\", \"livetrend\", \"radarchart\"]\n },\n {\n title: $translate.instant(\"COMMON_CONTENT\"),\n isSelected: false,\n apps: [\"texteditor\",\"imagedisplayer\", \"webviewer\", \"smarttable\", \"datasourcevalueslist\", \"diagrameditor\", \"pdfdisplayer\", \"messagedisplayer\"]\n },\n {\n title: $translate.instant(\"COMMON_REGISTRATION\"),\n isSelected: false,\n apps: [\"singlevalueregistration\", \"registration\",\"productionboard\",\"greencross\", \"5s\",\n \"A\", \"C\", \"D\", \"I\",\"K\", \"L\", \"P\",\"Q\",\"dailykpidynamic\",\"quickincidentregistration\",\"smiley\"]\n },\n {\n title: $translate.instant(\"COMMON_TASKS\"),\n isSelected: false,\n apps: [\"smartactionlist\", \"weeklyboard\", \"kanbanboard\",\"timeboard\", \"actionList\",\"personalcalendar\", \"teamboardcalendar\", \"teamtasks\", \"3ctable\" ]\n },\n {\n title: $translate.instant(\"COMMON_IMPROVEMENT\"),\n isSelected: false,\n apps: [\"prioritymatrix\", \"ongoingimprovement\", \"range\", \"pareto\", \"singlevalue\",\"singlevaluetarget\", \"targetgraph\", \"daycounter\"]\n },\n {\n title: $translate.instant(\"COMMON_A3\"),\n isSelected: false,\n apps: [\"a3viewer\", \"a3table\",\"pareto\",\"singlevalue\",\"singlevaluetarget\", \"targetgraph\", \"daycounter\" ]\n },\n {\n title: $translate.instant(\"COMMON_DEVIATION\"),\n isSelected: false,\n apps: [\"quickincidentregistration\",\"ongoingdeviation\",\"deviationcategorysummary\",\"pareto\",\"singlevalue\",\"singlevaluetarget\", \"targetgraph\",\"greencross\",\"5s\", \"A\", \"C\", \"D\", \"I\",\"K\", \"L\", \"P\",\"Q\", \"dailykpidynamic\", \"daycounter\" ]\n },\n {\n title: $translate.instant(\"COMMON_PROJECT\"),\n isSelected: false,\n apps: [\"projectboard\",\"greencross\",\"5s\", \"A\", \"C\", \"D\", \"I\",\"K\", \"L\", \"P\",\"Q\", \"dailykpidynamic\"]\n },\n {\n title: $translate.instant(\"COMMON_OTHER\"),\n isSelected: false,\n apps: [\"daycounter\", \"smiley\", \"3ctable\"]\n }\n ]\n\n function operation(list1, list2, isUnion) {\n var result = [];\n \n for (var i = 0; i < list1.length; i++) {\n var item1 = list1[i],\n found = false;\n for (var j = 0; j < list2.length && !found; j++) {\n found = item1.component === list2[j];\n }\n if (found === !!isUnion) { // isUnion is coerced to boolean\n result.push(item1);\n }\n }\n return result;\n }\n \n // Following functions are to be used:\n function inBoth(list1, list2) {\n return operation(list1, list2, true);\n }\n \n \n $scope.selectType = function (type) {\n $scope.isAllSelected = false;\n for(var i=0; i<$scope.types.length;i++ ){\n $scope.types[i].isSelected = false;\n }\n type.isSelected = true;\n $scope.apps = inBoth($scope.allApps, type.apps)\n }\n\n $scope.resetSelection = function(){\n $scope.isAllSelected = true;\n for(var i=0; i<$scope.types.length;i++ ){\n $scope.types[i].isSelected = false;\n }\n $scope.apps = $scope.allApps;\n }\n\n $scope.selectApp = function (app) {\n $uibModalInstance.close(app);\n }\n\n $scope.ok = function () {\n $uibModalInstance.close($scope.selectedApp);\n\n };\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n }]);","angular\n .module('DigiLean')\n .directive(\"fiveS\", ['kpiLetterBaseDirective',\n function (kpiLetterBaseDirective) {\n var fiveSDirective = {\n name: 'fiveS',\n templateUrl: 'fiveS.html',\n restrict: 'EA',\n scope: {\n 'isAdminMode': '=',\n 'settings': '=',\n 'boardAssetId': '<',\n 'settingsChangeHandler': '&',\n 'layoutFactor': '<',\n 'userAccess': '<'\n }\n };\n\n fiveSDirective.compile = function (element, attrs) {\n return {\n post: function (scope, element, attrs) {\n kpiLetterBaseDirective[0].link(scope, element, attrs);\n scope.visualizationType = \"5S\";\n \n }\n };\n };\n\n return fiveSDirective;\n }]);\n","angular\n .module('DigiLean')\n .directive(\"aLetter\", ['kpiLetterBaseDirective',\n function (kpiLetterBaseDirective) {\n var aLetterDirective = {\n name: 'aLetter',\n templateUrl: 'aLetter.html',\n restrict: 'EA',\n scope: {\n 'isAdminMode': '=',\n 'settings': '=',\n 'boardAssetId': '<',\n 'settingsChangeHandler': '&',\n 'layoutFactor': '<',\n 'userAccess': '<',\n }\n };\n\n aLetterDirective.compile = function (element, attrs) {\n return {\n post: function (scope, element, attrs) {\n kpiLetterBaseDirective[0].link(scope, element, attrs);\n scope.visualizationType = \"A\";\n \n }\n };\n };\n\n return aLetterDirective;\n }]);\n","angular\n .module('DigiLean')\n .directive(\"cLetter\", ['kpiLetterBaseDirective',\n function (kpiLetterBaseDirective) {\n var cLetterDirective = {\n name: 'cLetter',\n templateUrl: 'cLetter.html',\n restrict: 'EA',\n scope: {\n 'isAdminMode': '=',\n 'settings': '=',\n 'boardAssetId': '<',\n 'settingsChangeHandler': '&',\n 'layoutFactor': '<',\n 'userAccess': '<',\n }\n };\n\n cLetterDirective.compile = function (element, attrs) {\n return {\n post: function (scope, element, attrs) {\n kpiLetterBaseDirective[0].link(scope, element, attrs);\n scope.visualizationType = \"C\";\n \n }\n };\n };\n\n return cLetterDirective;\n }]);\n","angular\n .module('DigiLean')\n .directive(\"dLetter\", ['kpiLetterBaseDirective',\n function (kpiLetterBaseDirective) {\n var dLetterDirective = {\n name: 'dLetter',\n templateUrl: 'dLetter.html',\n restrict: 'EA',\n scope: {\n 'isAdminMode': '=',\n 'settings': '=',\n 'boardAssetId': '<',\n 'settingsChangeHandler': '&',\n 'layoutFactor': '<',\n 'userAccess': '<'\n }\n };\n\n dLetterDirective.compile = function (element, attrs) {\n return {\n post: function (scope, element, attrs) {\n kpiLetterBaseDirective[0].link(scope, element, attrs);\n scope.visualizationType = \"D\";\n //scope.setVisualizationType(\"D\");\n \n }\n };\n };\n\n return dLetterDirective;\n }]);\n","angular\n .module('DigiLean')\n .directive(\"dailyKpiDynamic\", ['kpiLetterBaseDirective',\n function (kpiLetterBaseDirective) {\n var dailyKpiDynamicDirective = {\n name: 'dailyKpiDynamic',\n templateUrl: 'dailyKpiDynamic.html',\n restrict: 'EA',\n scope: {\n 'isAdminMode': '=',\n 'settings': '=',\n 'boardAssetId': '<',\n 'settingsChangeHandler': '&',\n 'layoutFactor': '<',\n 'userAccess': '<',\n }\n };\n\n dailyKpiDynamicDirective.compile = function (element, attrs) {\n return {\n post: function (scope, element, attrs) {\n kpiLetterBaseDirective[0].link(scope, element, attrs);\n scope.visualizationType = \"DYNAMIC\"; \n }\n };\n };\n\n return dailyKpiDynamicDirective;\n }]);\n","angular\n .module('DigiLean')\n .directive(\"iLetter\", ['kpiLetterBaseDirective',\n function (kpiLetterBaseDirective) {\n var iLetterDirective = {\n name: 'iLetter',\n templateUrl: 'iLetter.html',\n restrict: 'EA',\n scope: {\n 'isAdminMode': '=',\n 'settings': '=',\n 'boardAssetId': '<',\n 'settingsChangeHandler': '&',\n 'layoutFactor': '<',\n 'userAccess': '<',\n }\n };\n\n iLetterDirective.compile = function (element, attrs) {\n return {\n post: function (scope, element, attrs) {\n kpiLetterBaseDirective[0].link(scope, element, attrs);\n scope.visualizationType = \"I\";\n \n }\n };\n };\n\n return iLetterDirective;\n }]);\n","angular\n .module('DigiLean')\n .directive(\"kLetter\", ['kpiLetterBaseDirective',\n function (kpiLetterBaseDirective) {\n var kLetterDirective = {\n name: 'kLetter',\n templateUrl: 'kLetter.html',\n restrict: 'EA',\n scope: {\n 'isAdminMode': '=',\n 'settings': '=',\n 'boardAssetId': '<',\n 'settingsChangeHandler': '&',\n 'layoutFactor': '<',\n 'userAccess': '<',\n }\n };\n\n kLetterDirective.compile = function (element, attrs) {\n return {\n post: function (scope, element, attrs) {\n kpiLetterBaseDirective[0].link(scope, element, attrs);\n scope.visualizationType = \"K\";\n \n }\n };\n };\n\n return kLetterDirective;\n }]);\n","angular\n .module('DigiLean')\n .directive(\"lLetter\", ['kpiLetterBaseDirective',\n function (kpiLetterBaseDirective) {\n var lLetterDirective = {\n name: 'lLetter',\n templateUrl: 'lLetter.html',\n restrict: 'EA',\n scope: {\n 'isAdminMode': '=',\n 'settings': '=',\n 'boardAssetId': '<',\n 'settingsChangeHandler': '&',\n 'layoutFactor': '<',\n 'userAccess': '<',\n }\n };\n\n lLetterDirective.compile = function (element, attrs) {\n return {\n post: function (scope, element, attrs) {\n kpiLetterBaseDirective[0].link(scope, element, attrs);\n scope.visualizationType = \"L\";\n \n }\n };\n };\n\n return lLetterDirective;\n }]);\n","angular\n .module('DigiLean')\n .directive(\"pLetter\", ['kpiLetterBaseDirective',\n function (kpiLetterBaseDirective) {\n var pLetterDirective = {\n name: 'pLetter',\n templateUrl: 'pLetter.html',\n restrict: 'EA',\n scope: {\n 'isAdminMode': '=',\n 'settings': '=',\n 'boardAssetId': '<',\n 'settingsChangeHandler': '&',\n 'layoutFactor': '<',\n 'userAccess': '<',\n \n }\n };\n\n pLetterDirective.compile = function (element, attrs) {\n return {\n post: function (scope, element, attrs) {\n kpiLetterBaseDirective[0].link(scope, element, attrs);\n scope.visualizationType = \"P\";\n \n }\n };\n };\n\n return pLetterDirective;\n }]);\n","angular\n .module('DigiLean')\n .directive(\"qLetter\", ['kpiLetterBaseDirective',\n function (kpiLetterBaseDirective) {\n var qLetterDirective = {\n name: 'qLetter',\n templateUrl: 'qLetter.html',\n restrict: 'EA',\n scope: {\n 'isAdminMode': '=',\n 'settings': '=',\n 'boardAssetId': '<',\n 'settingsChangeHandler': '&',\n 'layoutFactor': '<',\n 'userAccess': '<'\n }\n };\n\n qLetterDirective.compile = function (element, attrs) {\n return {\n post: function (scope, element, attrs) {\n kpiLetterBaseDirective[0].link(scope, element, attrs);\n scope.visualizationType = \"Q\";\n \n }\n };\n };\n\n return qLetterDirective;\n }]);\n","angular\n .module(\"DigiLean\")\n .directive('debugApp', ['$translate',\n function ($translate) {\n return {\n templateUrl: 'debugApp.html',\n restrict: 'E',\n scope: {\n 'isAdminMode': '=',\n 'settings': '=',\n 'settingsChangeHandler': '&'\n },\n link: function (scope, elem, attrs) {\n scope.title = \"DEBUGGING\"\n scope.$watch('settings', function (settings) {\n scope.settings = settings;\n });\n\n scope.updateSettings = function(){\n if (scope.isAdminMode) {\n var componentSettings = {\n title: scope.title\n };\n scope.settingsChangeHandler({ settings: componentSettings });\n }\n }\n\n scope.$on(\"widget-resized\", function (event, args) {\n // var host = $(elem).closest(\".grid-stack-item-content\");\n // if (host.length == 0)\n // host = $(elem).closest(\".modal-body\")\n \n // if (host.length == 0) return;\n // var width = host.width();\n // var height = host.height();\n // // Find header to subtract from new height\n // var header = $(elem).find(\".ibox-title\");\n // var headerHeight = header.height() + 40;\n // var container = $(elem).find(\".debug-app\");\n // if (container.length === 0) return;\n // $(container).css(\"height\", (height - headerHeight));\n });\n\n }\n }\n }]);\n\n","var DigiLean = angular.module('DigiLean');\n\nDigiLean.directive(\"deviationCategorySummary\", ['$filter', '$translate', 'deviationService', 'navigationService', 'dataService','debounce',\n function ($filter, $translate, deviationService, navigationService, dataService, debounce) {\n return {\n templateUrl: 'deviationCategorySummary.html',\n restrict: 'E',\n scope: {\n 'isAdminMode': '=',\n 'timeframe': '@',\n 'settings': '=',\n 'settingsChangeHandler': '&'\n },\n link: function (scope, elem, attrs) {\n\n scope.title = $translate.instant('DEVIATION_PARETO_CHALLENGES');\n scope.selectedFilters = [];\n var categorySummaryData = null;\n var drilledDown = false;\n var countTranslated = $translate.instant('COMMON_COUNT');\n var accumulatedTranslated = $translate.instant('DASHBOARD_ACCUMULATED');\n var recordingTranslated = $translate.instant('DEVIATION_NUMBER_OF_DEVIATIONS');\n var hasProject = navigationService().hasModule(\"PROJECT\");\n\n scope.periodChangedHandler = function (timePeriod) {\n if (!timePeriod.timeframe) return;\n if (scope.timePeriod && scope.timePeriod.period.from === timePeriod.period.from && scope.timePeriod.period.to === timePeriod.period.to) return;\n scope.timePeriod = timePeriod;\n scope.options.timePeriod = timePeriod;\n loadData();\n // if adminmode, then save settings\n if (scope.isAdminMode) {\n scope.updateSettings();\n }\n }\n\n scope.updateSettings = function () {\n var componentSettings = {\n title: scope.title,\n timePeriod: scope.options.timePeriod,\n filters: scope.selectedFilters\n };\n scope.settingsChangeHandler({ settings: componentSettings });\n }\n\n scope.$watch('timeframe', function (timeframe) {\n scope.setTimePeriodDebounced(timeframe, null);\n });\n\n // Default options\n var timeSettings = {\n timeframe: \"YTD\",\n useDefaultTimeframes: true,\n timeframes: [],\n period: null,\n getTimePeriod: function () {\n return {\n useDefaultTimeframes: timeSettings.useDefaultTimeframes,\n timeframes: timeSettings.timeframes,\n timeframe: timeSettings.timeframe,\n period: timeSettings.period\n }\n },\n setTimePeriod: function (timeframe, period) {\n timeSettings.timeframe = timeframe;\n timeSettings.period = period;\n // debounce, to make sure not starting loading several timeframes.\n scope.options = {\n timePeriod: timeSettings.getTimePeriod()\n }\n }\n }\n scope.setTimePeriodDebounced = debounce(timeSettings.setTimePeriod, 100, false);\n // Default options\n scope.setTimePeriodDebounced(timeSettings.timeframe, timeSettings.period);\n\n function loadData() {\n if (!scope.timePeriod || !scope.timePeriod.period) return;\n var options = {TimePeriod:scope.timePeriod.period,\n Filters: scope.selectedFilters}\n deviationService().getSummaryOfCategoriesWithFilter(options).then(function (data) {\n categorySummaryData = data;\n drawChart(data);\n resizeChart();\n });\n }\n\n scope.subscribe(\"DeviationCreated\", function (deviation) {\n loadData();\n });\n\n scope.filterChangedHandler = function (filters) {\n if (scope.isAdminMode) {\n scope.updateSettings();\n }\n loadData();\n };\n\n // Dashboard Settings handling\n scope.$watch('settings', function (settings) {\n scope.selectedFilters = [];\n if (settings) {\n if (settings.title) {\n scope.title = settings.title;\n }\n if (settings.timePeriod) {\n scope.setTimePeriodDebounced(settings.timePeriod.timeframe, settings.timePeriod.period);\n }\n if (settings.filters) {\n scope.selectedFilters = settings.filters;\n }\n loadData();\n } else {\n loadData();\n }\n });\n\n function dataDrill(columnOrderNo) {\n drilledDown = !drilledDown;\n if (drilledDown) {\n if (categorySummaryData[columnOrderNo] && categorySummaryData[columnOrderNo].subCategorySummary) {\n if (categorySummaryData[columnOrderNo].subCategorySummary.length > 0) {\n drawChart(categorySummaryData[columnOrderNo].subCategorySummary);\n } else {\n drilledDown = false;\n }\n }\n } else {\n drawChart(categorySummaryData);\n }\n }\n\n // Draw options\n var categoryChart\n var paddingRight = 30;\n var paddingBottom = 100;\n function resizeChart() {\n var host = $(elem).closest(\".grid-stack-item-content\");\n if (host.length == 0)\n host = $(elem).closest(\".modal-body\")\n \n if (host.length == 0) return;\n var width = host.width();\n var height = host.height();\n if (categoryChart)\n categoryChart.setSize(width - paddingRight, height - paddingBottom, true);\n }\n scope.$on(\"widget-resized\", function (event, args) {\n resizeChart();\n });\n\n function drawChart(data) {\n\n var categories = [];\n var count = [];\n var accumulated = [];\n\n for (var i = 0; i < data.length; i++) {\n var currentItem = data[i];\n categories.push(currentItem.title);\n count.push(currentItem.count);\n accumulated.push(currentItem.accumulated);\n\n }\n\n var renderElement = $(elem).find(\".summary-chart\")[0];\n categoryChart = Highcharts.chart({\n chart: {\n renderTo: renderElement,\n },\n title: {\n text: ''\n },\n credits: {\n enabled: false\n },\n legend: {\n layout: 'horizontal',\n verticalAlign: 'bottom'\n },\n exporting: { enabled: false },\n tooltip: {\n formatter: function () {\n if (this.series.name === accumulatedTranslated) {\n return this.y + '%';\n }\n //return this.x + ':
' + '# ' + this.y.toString().replace('.', ',') + ' ' + '
' + 'Percent ' + Math.round((this.y / 28) * 100) + '% ';\n return this.x + ':
' + '# ' + this.y + '';\n }\n },\n xAxis: {\n categories: categories,\n crosshair: true\n },\n yAxis: [{\n title: {\n text: recordingTranslated\n }\n }, {\n labels: {\n formatter: function () {\n return this.value + '%';\n }\n },\n max: 100,\n min: 0,\n opposite: true,\n plotLines: [{\n color: 'red',\n dashStyle: 'shortdash',\n value: 80,\n width: 3,\n zIndex: 10\n }],\n title: {\n text: ''\n }\n }],\n series: [{\n name: countTranslated,\n data: count,\n color: '#FFCE54',\n type: 'column',\n point: {\n events: {\n click: function () {\n dataDrill(this.x);\n }\n }\n }\n }, {\n data: accumulated,\n name: accumulatedTranslated,\n type: 'spline',\n yAxis: 1,\n id: 'accumulated'\n }\n ]\n });\n }\n \n\n\n var deviationGroupElements = [\n {\n label: $translate.instant('COMMON_DEVIATION_TYPES'),\n sourceColumn: \"deviationTypeId\",\n type: \"deviationtype\"\n },\n {\n label: $translate.instant('DEVIATION_SEVERITY'),\n sourceColumn: \"severity\",\n type: \"deviationseverity\"\n },\n {\n label: $translate.instant('COMMON_ASSET'),\n sourceColumn: \"assetId\",\n type: \"asset\"\n },\n {\n label: $translate.instant('COMMON_AREA'),\n sourceColumn: \"areaId\",\n type: \"area\"\n },\n {\n label: $translate.instant('COMMON_CATEGORY'),\n sourceColumn: \"problemCategoryId\",\n type: \"problemcategory\"\n },\n \n ];\n \n if(hasProject){\n var project = {\n label: $translate.instant('PROJECT_PROJECT'),\n sourceColumn: \"projectId\",\n type: \"project\"\n };\n deviationGroupElements.push(project);\n }\n\n var deviationNew = {\n id: \"DeviationNew\",\n title: $translate.instant('DEVIATION_NEW_DEVIATIONS'),\n description: $translate.instant('DASHBOARD_DEVIATION_NEW_DESC'),\n valueElement: {\n unit: $translate.instant('COMMON_NUMBER'),\n label: $translate.instant('COMMON_NUMBER')\n },\n objectSource: 'internal',\n ownerUserDisplayName: 'DigiLEAN',\n elements: deviationGroupElements\n };\n scope.filterDatasource = deviationNew;\n\n }\n }\n }]);\n","var DigiLean = angular.module('DigiLean');\nDigiLean.directive(\"greencrossDate\", ['$filter', 'qualityService', 'navigationService','$uibModal',\n function ($filter, qualityService, navigationService, $uibModal) {\n return {\n templateUrl: 'greencross-date.html',\n restrict: 'E',\n scope: {\n 'editable': '=',\n 'areaId': '=',\n 'projectId': '<',\n 'greencrossid': '=',\n 'dateOfMonth': '=',\n 'month': '=',\n 'year': '=',\n 'value': '=',\n 'assetId': '=',\n 'deviationTypeId': '=',\n },\n link: function (scope, elem, attrs) {\n\n scope.subscribe(\"UserAuthenticatedAndReady\", function(profile)\n {\n scope.hasDeviation = navigationService().hasModule(\"DEVIATION\"); \n });\n \n scope.setStatusValue = function (newValue) {\n scope.value = newValue;\n var date = new Date(Date.UTC(scope.year, scope.month, scope.dateOfMonth, 12, 0, 0, 0));\n\n var status = {\n status: scope.value,\n date: date,\n areaId: scope.areaId,\n projectId: scope.projectId,\n visualizationType: \"GREENCROSS\"\n };\n qualityService().updateDateStatus(status).then(function (savedStatus) {\n //TODO: must add popup which force the user to specify which deviation type to be used when register incidents from green cross\n /*if(scope.hasDeviation == null) {scope.hasDeviation = navigationService().hasModule(\"DEVIATION\");}\n if(scope.hasDeviation && newValue > 1) {\n addDeviation(newValue);\n }*/\n });\n\n }\n\n scope.getRegistrations = function () {\n var date = new Date(Date.UTC(scope.year, scope.month, scope.dateOfMonth));\n var startDate = moment(date).startOf('day');\n var endDate = moment(date).endOf('day');\n\n var timePeriod = {\n from: startDate.toDate().toJSON(),\n to: endDate.toDate().toJSON()\n };\n\n if(scope.dataSource){\n var datasourceoptions = {\n dataSource: scope.dataSource,\n filters: scope.filters,\n timePeriod: timePeriod\n }\n showDatasourceValues(datasourceoptions);\n } else if(scope.deviationTypeId){\n var options = {\n assetId: scope.assetId,\n deviationTypeId: scope.deviationTypeId,\n timePeriod: timePeriod\n }\n showDeviations(options);\n } else {\n \n\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'greencrossStatusForm.html', \n controller: 'greencrossStatusModalController',\n resolve: {\n timePeriod: function () {\n return timePeriod;\n }\n } \n });\n }\n\n }\n\n function showDatasourceValues(options) {\n\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n templateUrl: 'datavaluesListForm.html',\n controller: 'datavaluesListModalController',\n windowClass: 'fullDeviation-modal-window',\n resolve: {\n options: function () {\n return options;\n }\n }\n });\n }\n \n function showDeviations (deviationOptions) {\n var currentfilter = [{\n sourceColumn: \"AssetId\",\n operator: \"InList\",\n items: [deviationOptions.assetId]\n },\n {\n sourceColumn: \"DeviationTypeId\",\n operator: \"InList\",\n items: [deviationOptions.deviationTypeId]\n \n }];\n var order = [{\n sourceColumn: \"Status\",\n SortDirection: \"ASC\"\n }, {\n sourceColumn: \"Severity\",\n SortDirection: \"DESC\"\n }];\n var options = {\n filters: currentfilter,\n sortOrders: order,\n timePeriodColumn: 'IncidentDate',\n timePeriod: deviationOptions.timePeriod\n };\n \n var modalInstance = $uibModal.open({ backdrop: 'static',\n templateUrl: 'deviationListForm.html',\n controller: 'deviationListModalController',\n windowClass: 'fullDeviation-modal-window',\n resolve: {\n options: function () {\n return options;\n }\n }\n });\n };\n \n\n function addDeviation(statusValue) {\n var severity = DigiLean.hms.getDeviationSeverity(statusValue);\n // Make sure task responsbile dropdown is closed if open.\n var settings = {\n areaId: scope.areaId,\n severity: severity\n }\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'newDeviation.html',\n controller: 'newDeviationController',\n windowClass: 'newdeviation-modal-window',\n resolve: {\n settings: function () {\n return settings;\n }\n }\n });\n }\n\n }\n\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"greencross\", ['kpiLetterBaseDirective',\n function (kpiLetterBaseDirective) {\n var greencrossDirective = {\n name: 'greencross',\n templateUrl: 'greencross.html',\n restrict: 'EA',\n scope: {\n 'isAdminMode': '<',\n 'settings': '<',\n 'boardAssetId': '<',\n 'settingsChangeHandler': '&',\n 'layoutFactor': '<',\n 'userAccess': '<',\n\n }\n };\n\n greencrossDirective.compile = function (element, attrs) {\n return {\n post: function (scope, element, attrs) {\n kpiLetterBaseDirective[0].link(scope, element, attrs);\n //scope.setVisualizationType(\"GREENCROSS\");\n scope.visualizationType = \"GREENCROSS\";\n\n \n }\n };\n };\n\n return greencrossDirective;\n }]);\n","var DigiLean = angular.module('DigiLean');\nDigiLean.controller('graphConfigurationController', ['$scope', '$uibModalInstance', 'configuration',\n function ($scope, $uibModalInstance, configuration) {\n $scope.configuration = configuration;\n\n function init() {\n if (!$scope.configuration) {\n $scope.configuration.selectedGrouping = \"none\";\n $scope.configuration.showNavigation = false;\n $scope.configuration.showRangeSelector = false;\n }\n }\n init();\n\n $scope.ok = function () {\n $uibModalInstance.close($scope.configuration);\n };\n\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n\n }]);","\nvar DigiLean = angular.module('DigiLean');\nDigiLean.directive(\"myCompetenceBalls\", ['$filter', '$translate', 'authService', 'navigationService', 'dataSourceService', 'dataService', 'dataListService','debounce',\n function ($filter, $translate, authService,navigationService, dataSourceService, dataService, dataListService,debounce) {\n return {\n templateUrl: 'myCompetenceBalls.html',\n restrict: 'E',\n $scope: {\n },\n link: function ($scope, elem, attrs) {\n\n \n var maxSize = 1;\n var userid = authService.getCurrentUser().userId;\n\n var timeSettings = {\n timeframe: \"YTD\",\n useDefaultTimeframes: true,\n timeframes: [],\n period: null,\n getTimePeriod: function () {\n return {\n useDefaultTimeframes: timeSettings.useDefaultTimeframes,\n timeframes: timeSettings.timeframes,\n timeframe: timeSettings.timeframe,\n period: timeSettings.period\n }\n },\n setTimePeriod: function (timeframe, period) {\n timeSettings.timeframe = timeframe;\n timeSettings.period = period;\n // debounce, to make sure not starting loading several timeframes.\n $scope.options = {\n timePeriod: timeSettings.getTimePeriod()\n }\n }\n }\n $scope.setTimePeriodDebounced = debounce(timeSettings.setTimePeriod, 100, false);\n // Default options\n $scope.setTimePeriodDebounced(timeSettings.timeframe, timeSettings.period);\n\n\n /* This method will be called also when component is first initialized */\n $scope.periodChangedHandler = function (timePeriod) {\n\n if (!timePeriod.timeframe) return;\n if ($scope.timePeriod && $scope.timePeriod.period.from === timePeriod.period.from && $scope.timePeriod.period.to === timePeriod.period.to) return;\n $scope.timePeriod = timePeriod;\n $scope.options.timePeriod = timePeriod;\n if (timePeriod.timeframe === \"all\" && dataSourceId) {\n dataService().getFirstDate(dataSourceId, $scope.timePeriod.period, null).then(function (fromDate) {\n $scope.timePeriod.period.from = fromDate;\n load();\n });\n } else {\n load();\n }\n\n }\n var totalSerie = [];\n var categories = []; \n $scope.seriesData = [];\n\n var splitPackedBubbleChart = null;\n $scope.isLoading = true;\n\n var dataSourceId = 0;\n var listOptions = { includeDeletedItems: true };\n\n $scope.hasCompetanceBallModule = navigationService().hasModule(\"COMPETENCEBALL\");\n $scope.subscribe(\"UserAuthenticatedAndReady\", function (profile) {\n $scope.hasCompetanceBallModule = navigationService().hasModule(\"COMPETENCEBALL\");\n userid = authService.getCurrentUser().userId;\n init();\n });\n\n function init(){\n if($scope.hasCompetanceBallModule){\n dataListService().getFeatureList(\"CompetenceBall\", listOptions).then(function (list) {\n if (list) {\n categories = list.items;\n }\n });\n dataSourceService().getFeatureSource(\"CompetenceBall\").then(function (source) {\n if (source) {\n dataSourceId = source.id;\n load();\n }\n })\n }\n }\n init();\n\n $scope.subscribe(\"NewCompetenceBall\", function (competenceball) {\n if (competenceball.createdByUserId == userid) {\n load();\n }\n });\n $scope.subscribe(\"DataValueAdded\", function (value) {\n if (dataSourceId == value.dataSourceId && value.dimension2 == userid) {\n load();\n }\n });\n $scope.subscribe(\"DataValueUpdated\", function (value) {\n if (dataSourceId == value.dataSourceId && value.dimension2 == userid) {\n load();\n }\n });\n $scope.subscribe(\"DataValueDeleted\", function (value) {\n if (dataSourceId == value.dataSourceId) {\n load();\n }\n });\n\n var paddingRight = 30;\n var paddingBottom = 100;\n function resizeChart() {\n var host = $(elem).closest(\".grid-stack-item-content\");\n if (host.length == 0)\n host = $(elem).closest(\".modal-body\")\n \n if (host.length == 0) return;\n var width = host.width();\n var height = width;\n if (splitPackedBubbleChart)\n splitPackedBubbleChart.setSize(width - paddingRight, height - paddingBottom, true);\n }\n $scope.$on(\"widget-resized\", function (event, args) {\n resizeChart();\n });\n\n\n function unique(arr, prop) {\n return arr.map(function (e) { return e[prop]; }).filter(function (e, i, a) {\n return i === a.indexOf(e);\n });\n }\n\n var totalSerie = [];\n\n function getCompetenceCategoryName(catid) {\n var cat = $filter('filter')(categories, { id: parseInt(catid) }, true);\n if (cat.length > 0) {\n return cat[0].name;\n } else {\n return $translate.instant('COMMON_UNDEFINED');\n }\n }\n function load() {\n if(dataSourceId == 0) init();\n if(userid && $scope.hasCompetanceBallModule){\n $scope.isLoading = true;\n var competenceballs = [];\n\n\n $scope.seriesData = [];\n \n\n\n var filter = [{sourceColumn: \"dimension2\",\n operator: \"InList\",\n items: [userid]}];\n var options = {\n timePeriod: $scope.timePeriod.period,\n filters: filter\n };\n dataService().getValuesForPeriod(dataSourceId, options).then(function (competenceballs) {\n\n if (competenceballs) {\n totalSerie = [];\n var registeredCategories = unique(competenceballs, 'dimension');\n for (var i = 0; i < registeredCategories.length; i++) {\n var cat = registeredCategories[i];\n var dataValues = [];\n var elementsWithGivenCategory = $filter('filter')(competenceballs, { dimension: cat }, true);\n if (elementsWithGivenCategory.length > 0) {\n for (var y = 0; y < elementsWithGivenCategory.length; y++) {\n\n var label = cat;\n var miniboble = {\n name: \"\",\n value: elementsWithGivenCategory[y].value,\n description: elementsWithGivenCategory[y].description\n }\n dataValues.push(miniboble);\n if (totalSerie[i]) {\n totalSerie[i] = totalSerie[i] + elementsWithGivenCategory[y].value;\n } else {\n\n totalSerie[i] = elementsWithGivenCategory[y].value;\n }\n }\n }\n var element = {\n name: getCompetenceCategoryName(cat),\n data: dataValues\n };\n $scope.seriesData.push(element);\n }\n }\n maxSize = Math.max.apply(null, totalSerie) * 1.5;\n $scope.isLoading = false;\n setupChart();\n });\n }\n }\n \n\n function setupChart() {\n\n var renderElement = $(elem).find(\".my-split-packed-bubble-chart\")[0];\n splitPackedBubbleChart = new Highcharts.Chart({\n chart: {\n renderTo: renderElement,\n type: 'packedbubble',\n height: '100%'\n },\n title: {\n text: ''\n }, credits: {\n enabled: false\n }, exporting: {\n enabled: false //remove context menu\n },\n tooltip: {\n useHTML: true,\n pointFormat: '{point.description}: {point.value}
' \n },\n plotOptions: {\n packedbubble: {\n minSize: '20%',\n maxSize: '100%',\n zMin: 0,\n zMax: 2,\n layoutAlgorithm: {\n splitSeries: false,\n gravitationalConstant: 0.02,\n bubblePadding: 10\n },\n dataLabels: {\n enabled: true,\n format: '{point.name}',\n style: {\n color: 'black',\n textOutline: 'none',\n fontWeight: 'normal'\n }\n }\n }\n },\n series: $scope.seriesData\n });\n\n }\n }\n\n }\n }]);","var DigiLean = angular.module('DigiLean');\nDigiLean.controller('myprojectsController', ['$scope', '$state', '$element', '$filter', '$uibModal', '$translate', 'projectService', 'navigationService',\n function ($scope, $state, $element, $filter, $uibModal, $translate, projectService, navigationService) {\n\n $scope.hasProjectModule = navigationService().hasModule(\"PROJECT\");\n $scope.subscribe('UserAuthenticatedAndReady', function (profile) {\n var hasAccess = $filter('filter')(profile.modules, { name: \"PROJECT\" });\n $scope.hasProjectModule = hasAccess.length > 0;\n });\n\n $scope.projects = [];\n $scope.items = [];\n\n $scope.isLoading = true;\n projectService().getMyProjectsInfo().then(function (projects) {\n $scope.projects = projects;\n for (var i = 0; i < $scope.projects.length; i++) {\n checkMilestones($scope.projects[i]);\n }\n $scope.isLoading = false;\n });\n /*\n $scope.subscribe(\"A3sDeleted\", function (ids) {\n // remove a3 from list\n var a3ToRemove = $filter('filter')($scope.a3s, idInList('id', ids));\n if (a3ToRemove.length > 0) {\n angular.forEach(a3ToRemove, function (a3) {\n var index = $scope.a3s.indexOf(a3);\n $scope.a3s.splice(index, 1);\n });\n $scope.$apply();\n }\n });*/\n\n\n function checkMilestones(project) {\n if (project.milestones && project.milestones.length > 0) {\n project.milestoneMissed = false;\n for (var i = 0; i < project.milestones.length; i++) {\n if (project.milestones[i].actualDate) {\n project.milestones[i].status = \"completed\";\n } else if (project.milestones[i].plannedDate) {\n //check if overdue/missed\n var today = moment().startOf('day');\n var target = moment(project.milestones[i].plannedDate).startOf('day');;\n var days = today.diff(target, 'days'); \n if (days >= 1) {\n project.milestones[i].status = \"missed\";\n project.milestoneMissed = true;\n } else {\n project.milestones[i].status = \"future\";\n }\n addNextMilestone(project, project.milestones[i], days);\n }\n }\n }\n }\n\n function addNextMilestone(project, milestone, days){\n \n if(project.nextMilestone){\n if(moment(project.nextMilestone.milestone.plannedDate).isAfter(moment(milestone.plannedDate))) {\n project.nextMilestone = {\n milestone : milestone,\n days : Math.abs(days)\n }\n } \n } else {\n project.nextMilestone = {\n milestone : milestone,\n days : Math.abs(days)\n } \n } \n } \n\n\n }]);","var DigiLean = angular.module('DigiLean');\nDigiLean.controller('performanceboardConfigController', ['$scope','$uibModalInstance', 'model',\n function ($scope, $uibModalInstance,model) {\n $scope.model = model;\n\n $scope.isAdmin = true;\n\n $scope.incidentfilter = \"ASSET\";\n if($scope.model.settings && $scope.model.settings.incidentfilter){\n $scope.incidentfilter = $scope.model.settings.incidentfilter;\n }\n\n $scope.changeIncidentFilter = function (option) {\n if($scope.model.settings){\n $scope.model.settings.incidentfilter = option;\n } else {\n $scope.model.setting = {\n incidentfilter : option\n }\n }\n \n };\n\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n\n $scope.ok = function () {\n if(!validConfiguration(model)) {\n $scope.wrongConfiguration = true; \n } else {\n $uibModalInstance.close($scope.model);\n } \n };\n\n function validConfiguration(model){\n var valid = true;\n if(model && model.columns){\n for(var i=0; i= 1) {\n $scope.milestoneMissed = true;\n } \n $scope.days = Math.abs($scope.days);\n $scope.translationData = {\n days: $scope.days\n };\n }\n \n });\n }\n\n }\n }\n\n }]);\n\n\n\n\n\n\n","angular\n .module('DigiLean')\n .controller(\"registrationDialogController\", ['$scope', '$uibModalInstance', 'componentSettings',\n function ($scope, $uibModalInstance, componentSettings) {\n\n $scope.isAdminMode = false;\n $scope.componentSettings = componentSettings;\n\n \n $scope.ok = function () {\n $uibModalInstance.close();\n };\n\n $scope.close = function () {\n $uibModalInstance.dismiss('cancel');\n }\n }]);","angular\n .module('DigiLean')\n .directive(\"taskActions\", ['$uibModal', 'boardTaskService',\n function ($uibModal, boardTaskService) {\n return {\n templateUrl: 'taskActions.html',\n restrict: 'E',\n scope: {\n 'task': '<',\n 'editable': '<',\n 'options': '='\n },\n link: function (scope, elem, attrs) {\n // scope.$watch('task', function (task) {\n // console.log(task);\n // });\n\n scope.$watch('options', function (options) {\n if(options){\n if(options.disableCopy){\n scope.disableCopy = true; \n }\n }\n });\n\n scope.cloneTask = function () {\n $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'clonetask.html',\n controller: 'clonetaskController',\n resolve: {\n task: function () {\n return scope.task;\n }\n }\n });\n }\n\n scope.deleteTask = function (task) {\n if (task.siblingId) {\n $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'clonedelete.html',\n controller: 'clonedeleteController',\n windowClass: 'newdeviation-modal-window',\n resolve: {\n taskId: function () {\n return task.id;\n },\n siblingId: function () {\n return task.siblingId;\n }\n }\n });\n } else {\n boardTaskService().deleteTask(task.id).then(function () {\n });\n }\n }\n scope.copyTask = function (task) {\n boardTaskService().copyTask(task.id).then(function (result) {\n \n });\n }\n scope.archive = function (task) {\n boardTaskService().moveTaskToArchive(task.id).then(function (result) {\n \n });\n }\n\n scope.unarchive = function (task) {\n boardTaskService().moveTaskFromArchive(task.id).then(function (result) {\n \n });\n }\n\n scope.moveTask = function (task) {\n $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'movetask.html',\n controller: 'movetaskController',\n resolve: {\n task: function () {\n return task;\n }\n }\n });\n }\n }\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"smartactionlistDateCell\", ['$filter', 'projectService',\n function ($filter, projectService) {\n return {\n templateUrl: 'smartactionlistDateCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'editable': '=',\n 'cellChangeHandler': '&',\n },\n link: function (scope, elem, attrs) {\n var defaultDateColor = \"#0099DE\";\n scope.color = defaultDateColor;\n scope.customColorBackground = \"#a9a9a9\";\n scope.postIts = projectService().getPostIts();\n scope.value = \"\";\n\n scope.update = function($event){\n const date = $event.originalEvent.detail\n scope.value = date\n scope.saveChanges()\n }\n\n scope.$watch('model', function (model) {\n var value = scope.model.cell.value;\n if (value) {\n setValue(value);\n }\n model.getSortValue = function() {\n \n return scope.value;\n }\n });\n\n scope.subscribe(\"SmartActionListCellUpdated\", function (cell) {\n if (cell.boardTaskId == scope.model.cell.boardTaskId && cell.smartTableColumnId == scope.model.cell.smartTableColumnId) {\n if (cell.value) {\n setValue(cell.value);\n }\n }\n });\n\n var setValue = function(value) {\n scope.background = value.background;\n if(value.value){\n scope.value = moment(value.value).toDate();\n } else {\n scope.value = \"\";\n }\n scope.color = value.color;\n var predefinedPostIt = $filter('filter')(scope.postIts, { background: scope.background });\n if (predefinedPostIt.length > 0) {\n scope.selectedPostIt = predefinedPostIt[0];\n } else //Custom color \n {\n scope.selectedPostIt = { title: \"custom\", background: scope.background };\n scope.customColorBackground = value.background;\n }\n }\n\n\n scope.selectColor = function (postIt) {\n scope.selectedPostIt = postIt;\n if(postIt.title === 'default'){\n scope.background = \"inherit\";\n scope.color = defaultDateColor;\n } else {\n scope.background = postIt.background;\n scope.color = \"#ffffff\";\n }\n scope.saveChanges();\n }\n scope.selectCustomColor = function (color) {\n scope.selectedPostIt = {title:\"custom\", background: color};\n scope.background = color;\n scope.color = \"#ffffff\";\n scope.saveChanges();\n }\n\n scope.saveChanges = function() {\n var value = {\n background: scope.background,\n color: scope.color,\n value: scope.value\n }\n scope.model.cell.value = value;\n scope.cellChangeHandler({cell: scope.model.cell})\n }\n }\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"smartActionListDueDateCell\", ['boardTaskService',\n function (boardTaskService) {\n return {\n templateUrl: 'smartActionListDueDateCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'editable': '=',\n 'cellChangeHandler': '&',\n },\n link: function (scope, elem, attrs) {\n scope.color = \"#0099DE\";\n scope.dateMissed = false;\n scope.dateModel = {\n date: null\n };\n\n scope.changeColor = false;\n var changeColorSettings = false;\n\n scope.changeColorXDaysBefore = 1;\n\n scope.updateDate = function ($event) {\n const localDate = $event.originalEvent.detail\n var newDate = null;\n if(localDate){\n const year = localDate.getFullYear();\n const month = localDate.getMonth();\n const date = localDate.getDate();\n newDate = new Date(Date.UTC(year, month, date, 12, 0, 0, 0));\n }\n\n boardTaskService().updateDate(scope.model.task.id, newDate)\n }\n\n scope.$watch(\"model\", function (model) {\n if (scope.model) {\n if (scope.model.task && scope.model.task.boardDate) {\n scope.dateModel.date = moment(scope.model.task.boardDate).toDate();\n }\n scope.datePicker = {\n opened: false\n }\n var settings = model.column.settings;\n if (settings) {\n\n if(settings.changeColor && settings.changeColorXDaysBefore){\n\n scope.changeColor = true;\n changeColorSettings = true;\n scope.changeColorXDaysBefore = settings.changeColorXDaysBefore;\n }\n }\n checkDate();\n\n model.getSortValue = function () {\n\n return scope.dateModel.date;\n }\n }\n });\n\n scope.subscribe('TaskStatusUpdated', function (updatedstatus) {\n if (scope.model.task.id == updatedstatus.taskId) {\n scope.model.task.status = updatedstatus.status;\n if (updatedstatus.status == 'OK') {\n scope.dateMissed = false;\n scope.changeColor = false;\n scope.color = \"#0099DE\";\n scope.status = \"\";\n } else { \n checkDate();\n }\n }\n });\n scope.subscribe('TaskDurationUpdated', function (duration) {\n if (scope.model.task.id == duration.taskId) {\n scope.dateModel.date = moment(duration.endTime).toDate();\n checkDate();\n }\n });\n scope.subscribe('TaskDateMoved', function (moveSettings) {\n if (moveSettings.taskId == scope.model.task.id) {\n if (moveSettings.boardDate) {\n scope.dateModel.date = moment(moveSettings.boardDate).toDate();\n } else {\n scope.dateModel.date = null;\n }\n checkDate();\n }\n });\n\n function checkDate() {\n scope.status = \"\";\n if (scope.dateModel.date) {\n\n if(changeColorSettings){\n scope.changeColor = true;\n } else {\n scope.changeColor = false;\n }\n\n var duration = moment.duration(moment().endOf('day').diff(moment(scope.dateModel.date).endOf('day')));\n var days = duration.asDays();\n if (days >= 1) {\n scope.diffToPlannedDate = Math.trunc(days);\n scope.dateMissed = false;\n if (scope.model.task.status !== 'OK') {\n scope.dateMissed = true;\n scope.status = \"missed\";\n } else {\n scope.dateMissed = false;\n scope.changeColor = false;\n scope.color = \"#0099DE\";\n }\n } else { //FUTURE\n if (scope.model.task.status !== 'OK') {\n scope.status = \"future\";\n scope.diffToPlannedDate = Math.round(days) * -1;\n } else {\n scope.dateMissed = false;\n scope.color = \"#0099DE\";\n }\n }\n }\n }\n }\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"smartactionlistLastModifiedDateCell\", ['boardTaskService', \n function (boardTaskService) {\n return {\n templateUrl: 'smartactionlistLastModifiedDateCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'editable': '=',\n 'cellChangeHandler': '&',\n },\n link: function (scope, elem, attrs) {\n\n scope.value = \"\";\n scope.modifiedBy = \"\";\n scope.update = function ($event) {\n const date = $event.originalEvent.detail\n scope.value = date\n scope.saveChanges()\n }\n\n scope.$watch('model', function (model) {\n var value = scope.model.task.lastModified;\n var modifiedBy = scope.model.task.lastModifiedByUser;\n if (value) {\n setValue(value, modifiedBy);\n }\n model.getSortValue = function () {\n\n return scope.value;\n }\n });\n\n \n var setValue = function (value, modifiedBy) {\n if (value) {\n var date = moment(value).toDate();\n if (date.getFullYear() > 1) { // Make sure the date/year is valid\n scope.value = date;\n }\n \n } else {\n scope.value = \"\";\n }\n scope.modifiedBy = modifiedBy;\n }\n\n // Event Sync\n function updateModifiedInfo() {\n boardTaskService().getModifiedInfo(scope.model.cell.boardTaskId).then(function(info) {\n if (info) {\n setValue(info.lastModified, info.lastModifiedByUser)\n }\n });\n }\n // TODO: Subscribe to all task event\n // Check if task matches and fetch lastmodified if not present on event\n // Probably need a custom backend method to avoid loading the whole task object.\n //\n scope.subscribe(\"TaskUpdated\", function (task) {\n if (task.id == scope.model.cell.boardTaskId) {\n setValue(task.lastModified, task.lastModifiedByUser);\n }\n });\n scope.subscribe(\"TaskStatusUpdated\", function (task) {\n if (task.taskId == scope.model.cell.boardTaskId) {\n updateModifiedInfo();\n }\n });\n scope.subscribe(\"SmartActionListCellUpdated\", function (cell) {\n if (cell.boardTaskId == scope.model.cell.boardTaskId) {\n updateModifiedInfo();\n }\n });\n scope.subscribe(\"TaskDateMoved\", function (task) {\n if (task.taskId == scope.model.cell.boardTaskId) {\n updateModifiedInfo();\n }\n });\n scope.subscribe(\"TaskStartDateUpdated\", function (task) {\n if (task.taskId == scope.model.cell.boardTaskId) {\n updateModifiedInfo();\n }\n });\n scope.subscribe(\"TaskDurationUpdated\", function (task) {\n if (task.taskId == scope.model.cell.boardTaskId) {\n updateModifiedInfo();\n }\n });\n scope.subscribe(\"TaskComment\", function (cell) {\n if (cell.boardTaskId == scope.model.cell.boardTaskId) {\n updateModifiedInfo();\n }\n });\n scope.subscribe(\"TaskAttachmentCountChanged\", function (cell) {\n if (cell.taskId == scope.model.cell.boardTaskId) {\n updateModifiedInfo();\n }\n }); \n\n\n }\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"smartactionlistLinkCell\", ['$filter', 'debounce', 'projectService',\n function ($filter, debounce, projectService) {\n return {\n templateUrl: 'smartactionlistLinkCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'editable': '=',\n 'cellChangeHandler': '&',\n 'adminmode': '='\n },\n link: function (scope, elem, attrs) {\n scope.url = \"\";\n scope.openInNewTab = true;\n scope.text = \"\";\n scope.color = \"#676a6c\"; //\"#ffffff\";\n scope.background = \"inherit\";\n scope.customColorBackground = \"#a9a9a9\";\n scope.postIts = projectService().getPostIts();\n\n scope.showDropdown = false;\n\n scope.usePredefinedLabels = false;\n scope.labels = [];\n var columnId = null;\n\n scope.$watch('model', function (model) {\n var value = model.cell.value;\n columnId = model.column.id;\n var settings = model.column.settings;\n \n if (value) {\n setValue(value);\n } \n model.getSortValue = function() {\n return scope.text;\n }\n });\n\n scope.autofocus = function(){\n setTimeout(function() {\n //$(elem).closest(\".smarttable-link-cell\").focus(); fungerer ikke\n $(\".smartactionlist-link-cell\").focus();\n \n }, 50 );\n }\n \n var setValue = function(value) {\n scope.background = value.background;\n scope.url = value.url;\n scope.openInNewTab = value.openInNewTab;\n scope.text = value.text;\n scope.color = value.color;\n var predefinedPostIt = $filter('filter')(scope.postIts, { background: scope.background });\n if (predefinedPostIt.length > 0) {\n scope.selectedPostIt = predefinedPostIt[0];\n } else //Custom color \n {\n scope.selectedPostIt = { title: \"custom\", background: scope.background };\n scope.customColorBackground = value.background;\n }\n }\n \n scope.subscribe(\"SmartActionListCellUpdated\", function (cell) {\n if (cell.boardTaskId == scope.model.cell.boardTaskId && cell.smartTableColumnId == scope.model.cell.smartTableColumnId) {\n if (cell.value) {\n setValue(cell.value);\n }\n }\n });\n scope.selectColor = function (postIt) {\n scope.selectedPostIt = postIt;\n if(postIt.title === 'default'){\n scope.background = \"inherit\";\n scope.color = \"#676a6c\";\n } else {\n scope.background = postIt.background;\n scope.color = \"#ffffff\";\n }\n scope.commitChangesDebounced();\n }\n scope.selectCustomColor = function (color) {\n scope.selectedPostIt = { title: \"custom\", background: color };\n scope.background = color;\n scope.color = \"#ffffff\";\n scope.commitChangesDebounced();\n }\n scope.textChanged = function (text) {\n if(scope.text === text) return;\n scope.text = text;\n scope.commitChangesDebounced();\n }\n scope.urlChanged = function (url) {\n if(scope.url === url) return;\n scope.url = url;\n scope.commitChangesDebounced();\n }\n\n scope.openChanged = function (open) {\n if(scope.openInNewTab === open) return;\n scope.openInNewTab = open;\n scope.commitChangesDebounced();\n }\n scope.saveChanges = function() {\n var value = {\n background: scope.background,\n color: scope.color,\n text: scope.text,\n url: scope.url,\n openInNewTab: scope.openInNewTab\n }\n scope.model.cell.value = value;\n scope.cellChangeHandler({cell: scope.model.cell})\n }\n\n // Debounce function so that save is called to often.\n scope.commitChangesDebounced = debounce(scope.saveChanges, 1000, false);\n\n }\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"smartactionlistNumberCell\", ['$filter', 'debounce', 'projectService','mathService',\n function ($filter, debounce, projectService, mathService) {\n return {\n templateUrl: 'smartactionlistNumberCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'editable': '=',\n 'cellChangeHandler': '&',\n }, \n link: function (scope, elem, attrs) {\n scope.number = null;\n scope.unit = null;\n scope.unitPlacement = \"right\";\n scope.color = \"#676a6c\"; //\"#ffffff\";\n scope.background = \"inherit\";\n scope.customColorBackground = \"#a9a9a9\";\n scope.postIts = projectService().getPostIts();\n var settings = null;\n scope.$watch('model', function (model) {\n var value = model.cell.value;\n \n settings = model.column.settings;\n if (settings) {\n if(settings.unit){\n scope.unit = settings.unit;\n if(settings.unitPlacement){\n scope.unitPlacement = settings.unitPlacement;\n }\n }\n if(settings.decimals !== null || settings.decimals !== undefined){\n scope.decimals = settings.decimals;\n }\n }\n if (value) {\n setValue(value);\n }\n model.getSortValue = function() {\n return scope.number;\n }\n });\n\n scope.autofocus = function(){\n setTimeout(function() {\n //document.querySelector( \"input\" ).focus();\n $(\".project-text-cell\").focus();\n }, 50 );\n }\n \n var setValue = function(cell) {\n scope.background = cell.background;\n scope.number = cell.number;\n\n scope.updateAggregateCell();\n if(scope.decimals !== null) {\n if(scope.decimals !== undefined) {\n scope.number = mathService().roundNumber(scope.number, scope.decimals);\n }\n } \n scope.color = cell.color;\n var predefinedPostIt = $filter('filter')(scope.postIts, { background: scope.background });\n if (predefinedPostIt.length > 0) {\n scope.selectedPostIt = predefinedPostIt[0];\n } else //Custom color \n {\n scope.selectedPostIt = { title: \"custom\", background: scope.background };\n scope.customColorBackground = cell.background;\n }\n }\n scope.subscribe(\"SmartActionListCellUpdated\", function (cell) {\n if (cell.boardTaskId == scope.model.cell.boardTaskId && cell.smartTableColumnId == scope.model.cell.smartTableColumnId) {\n if (cell.value) {\n setValue(cell.value);\n }\n }\n });\n scope.subscribe(\"SmartActionListNumberCellDecimalUpdated\", function (value) {\n if(scope.model.cell.smartTableColumnId == value.smartActionListColumnId){\n scope.decimals = value.decimals;\n if(scope.decimals !== null) {\n if(scope.decimals !== undefined) {\n scope.number = mathService().roundNumber(scope.number, scope.decimals);\n }\n }\n }\n });\n scope.subscribe(\"SmartActionListNumberCellUnitUpdated\", function (value) {\n if(scope.model.cell.smartTableColumnId === value.columnId){\n scope.unit = value.unit;\n }\n });\n\n scope.selectColor = function (postIt) {\n scope.selectedPostIt = postIt;\n if(postIt.title === 'default'){\n scope.background = \"inherit\";\n scope.color = \"#676a6c\";\n } else {\n scope.background = postIt.background;\n scope.color = \"#ffffff\";\n }\n scope.commitChangesDebounced();\n }\n scope.selectCustomColor = function (color) {\n scope.selectedPostIt = { title: \"custom\", background: color };\n scope.background = color;\n scope.color = \"#ffffff\";\n scope.commitChangesDebounced();\n }\n scope.numberChanged = function (number) {\n if(scope.number === number) return;\n scope.number = number;\n scope.updateAggregateCell();\n scope.commitChangesDebounced();\n }\n\n scope.saveChanges = function() {\n var value = {\n background: scope.background,\n color: scope.color,\n number: scope.number\n }\n scope.model.cell.value = value;\n scope.cellChangeHandler({cell: scope.model.cell})\n }\n\n scope.sendEvent = function(){\n var payload = {\n smartActionListColumnId: scope.model.column.id,\n taskId: scope.model.task.id,\n value: scope.number\n } \n scope.publish(\"SmartActionListNumberCellUpdated\", payload);\n }\n\n scope.updateAggregateCell = debounce(scope.sendEvent, 1000, false);\n\n // Debounce function so that save is called to often.\n scope.commitChangesDebounced = debounce(scope.saveChanges, 1000, false);\n\n }\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"smartactionlistNumberCellAggregate\", ['$filter', 'mathService',\n function ($filter, mathService) {\n return {\n templateUrl: 'smartactionlistNumberCellAggregate.html',\n restrict: 'E',\n scope: {\n 'model': '='\n },\n link: function (scope, elem, attrs) {\n var boardId = null;\n var columnId = null;\n scope.numberCellAggregateValue = null;\n scope.aggregateType = \"SUM\";\n var valuePerRow = [];\n scope.decimals = null;\n scope.unit = null;\n scope.unitPlacement = \"right\";\n\n scope.$watch('model', function (model) {\n columnId = model.id;\n boardId = model.boardId;\n if (model && model.settings) {\n var settings = model.settings;//JSON.parse(model.settings);\n if(settings.aggregateType){\n scope.aggregateType = settings.aggregateType;\n }\n if(settings.dataSource && settings.dataSource.valueElement.unit == \"%\"){\n scope.aggregateType = \"AVERAGE\";\n }\n if(settings.unit){\n scope.unit = settings.unit;\n if(settings.unitPlacement){\n scope.unitPlacement = settings.unitPlacement;\n }\n }\n if(settings.decimals !== null || settings.decimals !== undefined){\n scope.decimals = settings.decimals;\n }\n }\n model.getSortValue = function() {\n return scope.numberCellAggregateValue;\n }\n\n });\n\n scope.subscribe(\"SmartActionListNumberCellUpdated\", function (value) {\n if(columnId === value.smartActionListColumnId){\n updateValue(value);\n }\n });\n\n \n scope.subscribe(\"SmartActionListNumberCellDecimalUpdated\", function (value) {\n if(columnId === value.smartActionListColumnId){\n scope.decimals = value.decimals;\n calculateAggregateValue();\n }\n });\n\n scope.subscribe(\"SmartActionListArchiveChanged\", function (affectedBoardId) {\n if(boardId === affectedBoardId){\n valuePerRow = [];\n calculateAggregateValue();\n }\n });\n\n scope.subscribe(\"SmartActionListNumberCellUnitUpdated\", function (value) {\n if(columnId === value.columnId){\n scope.unit = value.unit;\n }\n });\n scope.subscribe(\"SmartActionListNumberCellUnitPlacementUpdated\", function (value) {\n if(columnId === value.columnId){\n scope.unitPlacement = value.unitPlacement;\n }\n });\n\n scope.subscribe(\"SmartActionListNumberCellAggregateTypeUpdated\", function (value) {\n if(columnId === value.columnId){\n scope.aggregateType = value.aggregateType;\n calculateAggregateValue();\n }\n });\n\n scope.subscribe('TaskDeleted', function (id) { \n var existingValue = $filter('filter')(valuePerRow, { taskId: id });\n\n if (existingValue && existingValue.length > 0) {\n var index = valuePerRow.indexOf(existingValue);\n valuePerRow.splice(index, 1);\n calculateAggregateValue();\n }\n });\n\n\n function updateValue(updatedValue) {\n\n var existingValue = $filter('filter')(valuePerRow, { taskId: updatedValue.taskId });\n\n if (existingValue && existingValue.length > 0) {\n var index = valuePerRow.indexOf(existingValue[0]);\n valuePerRow[index] = updatedValue;\n } else {\n valuePerRow.push(updatedValue);\n }\n calculateAggregateValue();\n }\n\n function calculateAggregateValue() {\n scope.numberCellAggregateValue = 0;\n var noOfCellWithValue = 0;\n for (var i = 0; i < valuePerRow.length; i++) {\n if (valuePerRow[i].value) {\n scope.numberCellAggregateValue = scope.numberCellAggregateValue + valuePerRow[i].value;\n noOfCellWithValue = noOfCellWithValue + 1;\n }\n }\n if (scope.aggregateType === \"AVERAGE\" && noOfCellWithValue > 0) {\n scope.numberCellAggregateValue = scope.numberCellAggregateValue / noOfCellWithValue;\n }\n\n if(scope.decimals !== null) {\n if(scope.decimals !== undefined) {\n scope.numberCellAggregateValue = mathService().roundNumber(scope.numberCellAggregateValue, scope.decimals);\n }\n }\n }\n }\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"smartactionlistPersonCell\", ['$filter',\n function ($filter) {\n return {\n templateUrl: 'smartactionlistPersonCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'editable': '=',\n 'cellChangeHandler': '&',\n 'users': '<'\n },\n link: function (scope, elem, attrs) {\n scope.displayName = \"\";\n scope.$watch('model', function (model) {\n var value = scope.model.cell.value;\n if (value) {\n setValue(value);\n mapUser();\n }\n model.getSortValue = function() {\n return scope.displayName;\n }\n });\n\n var setValue = function (value) {\n scope.displayName = value.displayName;\n scope.user = value;\n \n }\n\n scope.$watch(\"users\", function (users) {\n if (!users) return;\n mapUser();\n });\n\n var mapUser = function() {\n if (scope.user && scope.users) {\n var matchingUser = scope.users.find(u => u.userId == scope.user.userId)\n if (matchingUser) {\n scope.displayName = matchingUser.displayName;\n scope.user = matchingUser\n }\n }\n }\n\n scope.subscribe(\"SmartActionListCellUpdated\", function (cell) {\n if (cell.boardTaskId == scope.model.cell.boardTaskId && cell.smartTableColumnId == scope.model.cell.smartTableColumnId) {\n if (cell.value) {\n setValue(cell.value);\n } else {\n scope.displayName = \"\";\n scope.user = null;\n }\n }\n });\n\n scope.clearSelectedUser = function () {\n scope.selectUser(null);\n \n };\n scope.selectUser = function (user) {\n scope.user = user;\n scope.model.user = user;\n scope.model.cell.value = user;\n scope.cellChangeHandler({cell: scope.model.cell})\n };\n }\n }\n }]);","angular\n .module('DigiLean')\n .directive(\"smartactionlistProgressCell\", ['$filter', '$translate',\n function ($filter, $translate) {\n return {\n templateUrl: 'smartactionlistProgressCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'editable': '=',\n 'cellChangeHandler': '&',\n },\n link: function (scope, elem, attrs) {\n scope.options = [\n { progress: 25, label: \"25 %\", color: \"#0099DE\"},\n { progress: 50, label: \"50 %\", color: \"#0099DE\"},\n { progress: 75, label: \"75 %\", color: \"#0099DE\"},\n { progress: 100, label: \"100 %\", color: \"#8CC152\"},\n ]\n\n scope.customOption = {\n progress: 0,\n label: \"0 %\",\n color: \"0099DE\"\n };\n scope.$watch(\"model\", function (model) {\n var value = scope.model.cell.value;\n if (value) {\n scope.progress = value.progress;\n scope.color = value.color;\n scope.customOption.progress = value.progress;\n }\n model.getSortValue = function() {\n return scope.progress;\n }\n });\n \n \n \n scope.subscribe(\"SmartActionListCellUpdated\", function (cell) {\n if (cell.boardTaskId == scope.model.cell.boardTaskId && cell.smartTableColumnId == scope.model.cell.smartTableColumnId) {\n if (cell.value && scope.progress !== cell.value.progress) {\n scope.progress = cell.value.progress;\n scope.color = cell.value.color; \n scope.label = cell.value.label;\n scope.customOption.progress = cell.value.progress;\n }\n }\n });\n \n function getProgressLabel(progress) {\n if (typeof progress !== 'undefined' && progress !== null) {\n return progress + \" %\";\n } else {\n return null;\n }\n }\n \n scope.setProgress = function(option) {\n scope.progress = option.progress;\n scope.customOption.progress = option.progress;\n scope.color = option.color;\n if (scope.progress == 100) { // Green color if 100\n scope.color = \"#8CC152\";\n }\n // Trigger change to save\n scope.model.cell.value = {\n progress: scope.progress,\n color: scope.color,\n label: getProgressLabel(scope.progress)\n }\n scope.cellChangeHandler({cell: scope.model.cell})\n }\n }\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"smartactionlistProgressCellSubTasks\", ['$filter', '$translate','$uibModal','boardTaskService',\n function ($filter, $translate, $uibModal, boardTaskService) {\n return {\n templateUrl: 'smartactionlistProgressCellSubTasks.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'editable': '=',\n 'cellChangeHandler': '&',\n },\n link: function (scope, elem, attrs) {\n var taskId = null;\n\n scope.options = [\n { progress: 25, label: \"25 %\", color: \"#0099DE\"},\n { progress: 50, label: \"50 %\", color: \"#0099DE\"},\n { progress: 75, label: \"75 %\", color: \"#0099DE\"},\n { progress: 100, label: \"100 %\", color: \"#8CC152\"},\n ]\n\n scope.customOption = {\n progress: 0,\n label: \"0 %\",\n color: \"0099DE\"\n };\n scope.$watch(\"model\", function (model) {\n \n if (scope.model) {\n taskId = scope.model.task.id;\n calculateProgress();\n scope.model.getSortValue = function() {\n return scope.progress;\n }\n }\n \n });\n\n scope.subscribe('TaskStatusUpdated', function (updatedstatus) {\n if (scope.model.task.id == updatedstatus.taskId) {\n scope.model.task.status = updatedstatus.status;\n calculateProgress();\n }\n });\n\n scope.subscribe(\"SubTaskCountChanged\", function(count) {\n if (count.taskId == taskId || count.taskId == scope.model.task.siblingId) {\n scope.model.task.subTaskCount = count.subTaskCount;\n scope.model.task.subTaskCompletedCount = count.subTaskCompletedCount;\n calculateProgress();\n }\n });\n \n function calculateProgress(){\n if(scope.model.task.subTaskCount == 0){\n if(scope.model.task.status == 'OK'){\n scope.setProgress(scope.options[3]);\n } else {\n scope.setProgress(scope.customOption);\n }\n } else {\n \n var progress = Math.round(100 * scope.model.task.subTaskCompletedCount/scope.model.task.subTaskCount);\n var progressOptions = {\n progress: progress,\n label: progress + \" %\",\n color: \"0099DE\"\n };\n scope.setProgress(progressOptions);\n } \n }\n \n \n scope.openTask = function () {\n boardTaskService().get(taskId).then(function (task) {\n $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'boardTask.html',\n controller: 'boardTaskController',\n resolve: {\n task: function () {\n return task;\n },\n activeTab: function () {\n return \"SubTasks\";\n },\n options: function () {\n var options = {\n archiveAvailable: false\n }\n return options;\n }\n }\n });\n });\n };\n \n \n \n scope.setProgress = function(option) {\n scope.progress = option.progress;\n scope.customOption.progress = option.progress;\n scope.color = option.color;\n if (scope.progress == 100) { // Green color if 100\n scope.color = \"#8CC152\";\n }\n }\n }\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"smartactionlistResponsibleCell\", ['boardTaskService',\n function (boardTaskService) {\n return {\n templateUrl: 'smartactionlistResponsibleCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'editable': '=',\n 'cellChangeHandler': '&',\n 'users': '<'\n },\n link: function (scope, elem, attrs) {\n scope.displayName = \"\";\n scope.user = null;\n \n\n scope.$watch(\"model\", function (model) {\n if (scope.model && scope.model.task) {\n setResponsible();\n scope.model.setValue = function (user) {\n scope.selectUser(user);\n }\n }\n model.getSortValue = function () {\n if (scope.user) {\n return scope.user.fullName;\n }\n return scope.displayName;\n }\n });\n\n function setResponsible(){\n if (scope.model.task.responsibleUserId) {\n if (scope.users) {\n const matchingUser = scope.users.find(u => u.userId == scope.model.task.responsibleUserId)\n if (matchingUser) {\n scope.displayName = matchingUser.displayName;\n scope.user = matchingUser;\n } else {\n var userDetails = {\n userId: scope.model.task.responsibleUserId,\n lastName: scope.model.task.responsibleUser, /* responsibleUser shows full name, use lastName such that it can be displayed as tooltip */\n displayName: scope.model.task.responsibleDisplayName\n };\n scope.displayName = scope.model.task.responsibleDisplayName;\n scope.user = userDetails;\n }\n } \n }\n }\n\n scope.$watch(\"users\", function (users) {\n if (!users) return;\n setResponsible();\n });\n\n\n scope.subscribe('TaskAssigned', function (status) {\n if (status.taskId == scope.model.task.id) {\n const matchingUser = scope.users.find(u => u.userId == status.userId)\n if (matchingUser) {\n scope.displayName = matchingUser.ownerDisplayName;\n scope.user = matchingUser;\n scope.model.task.responsibleUserId = scope.user.userId;\n scope.model.task.responsibleUser= scope.user.fullName;\n scope.model.task.responsibleDisplayName = scope.user.displayName;\n } else {\n scope.displayName = \"\";\n scope.user = null;\n }\n }\n });\n\n scope.clearSelectedUser = function () {\n var emptyUser = {\n userId: null,\n fullName: \"\",\n displayName: \"\"\n }\n scope.user = null;\n scope.selectUser(emptyUser);\n\n };\n scope.selectUser = function (user) {\n scope.user = user;\n scope.displayname = user.displayName;\n var userDetails = {\n userId: user.userId,\n userName: user.fullName,\n userDisplayName: user.displayName\n };\n var options = {\n taskId: scope.model.task.id,\n user: userDetails\n }\n boardTaskService().assignUser(options);\n\n };\n }\n }\n }]);","angular\n .module('DigiLean')\n .directive(\"smartActionListTaskdescriptionCell\", ['$filter', '$uibModal','boardTaskService',\n function ($filter, $uibModal, boardTaskService) {\n return {\n templateUrl: 'smartActionListTaskdescriptionCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'editable': '=',\n 'users': '<',\n 'id': '=',\n },\n link: function (scope, elem, attrs) {\n scope.text = \"\";\n scope.active = false;\n\n scope.$watch('model', function (model) {\n scope.text = model.task.text;\n if(model.task.text !== \"\"){\n scope.hasDescription = true; \n } \n model.getSortValue = function() {\n return scope.text;\n }\n });\n\n scope.subscribe('TaskUpdated', function (task) {\n if (task.id == scope.model.task.id) {\n if (task.text) {\n scope.text = task.text;\n } else {\n scope.text = \"\";\n }\n\n if(task.text == \"\"){\n scope.hasDescription = false; \n } else {\n scope.hasDescription = true;\n }\n }\n });\n scope.openTask = function (mode) {\n if (!mode) mode = \"Info\";\n boardTaskService().get(scope.model.task.id).then(function (task) {\n \n $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'boardTask.html',\n controller: 'boardTaskController',\n resolve: {\n task: function () {\n return task;\n },\n activeTab: function () {\n return mode;\n },\n options: function () {\n var options = {\n archiveAvailable: true,\n users: scope.users\n }\n if(scope.model.task.a3Id){\n options.canChangeBoard = false;\n }\n return options;\n }\n }\n });\n });\n }\n }\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"smartActionListTitleCell\", ['$filter', '$uibModal','boardTaskService','suggestionService', 'deviationService',\n function ($filter, $uibModal, boardTaskService, suggestionService, deviationService) {\n return {\n templateUrl: 'smartActionListTitleCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'editable': '=',\n 'users': '<',\n 'id': '=',\n },\n link: function (scope, elem, attrs) {\n scope.title = \"\";\n scope.commentCount = 0;\n scope.attachmentCount = 0;\n scope.hasDescription = false;\n scope.active = false;\n\n scope.$watch('model', function (model) {\n scope.title = model.task.title;\n scope.commentCount = model.task.commentCount;\n scope.attachmentCount = model.task.attachmentCount;\n if(model.task.text !== \"\"){\n scope.hasDescription = true; \n } \n model.getSortValue = function() {\n return scope.title;\n }\n });\n\n \n scope.subscribe(\"TaskTitleChanged\", function (data) {\n if (data.boardTaskId == scope.model.task.id) {\n if (data.title) {\n scope.title = data.title;\n } else {\n scope.title = \"\";\n }\n }\n });\n\n scope.subscribe('TaskUpdated', function (task) {\n if (task.id == scope.model.task.id) {\n if (task.title) {\n scope.title = task.title;\n } else {\n scope.title = \"\";\n }\n\n if(task.text == \"\"){\n scope.hasDescription = false; \n } else {\n scope.hasDescription = true;\n }\n }\n });\n scope.subscribe(\"TaskCommentAdded\", function (comment) {\n if (comment.boardTaskId == scope.model.cell.boardTaskId) {\n scope.commentCount = comment.taskCommentCount;\n }\n });\n scope.subscribe(\"TaskCommentDeleted\", function (comment) {\n if (comment.boardTaskId == scope.model.cell.boardTaskId) {\n scope.commentCount = comment.taskCommentCount;\n }\n });\n scope.subscribe('TaskAttachmentCountChanged', function (attachment) {\n if (attachment.taskId == scope.model.cell.boardTaskId) {\n scope.attachmentCount = attachment.attachmentCount;\n }\n });\n/*\n scope.setActive = function() {\n scope.active = true; \n setTimeout(function() {\n $(\".project-name\").focus();\n }, 50 ); \n }\n scope.titleChanged = function(title) {\n scope.active = false; \n if(title !== scope.title){\n var taskTitle = {\n id: scope.model.task.id,\n title: title \n };\n boardTaskService().updateTitle(scope.model.task.id, taskTitle).then(function (result) { \n });\n }\n\n }*/\n scope.openImprovement = function (improvementid) {\n suggestionService().get(improvementid).then(function (suggestion) {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n templateUrl: 'fullImprovementInfoForm.html',\n controller: 'fullImprovementModalController',\n windowClass: 'fullSuggestion-modal-window',\n resolve: {\n suggestion: function () {\n return suggestion;\n },\n activeTab: function () {\n return \"Info\";\n }\n }\n });\n });\n }\n scope.openDeviation = function (deviationid) {\n deviationService().get(deviationid).then(function (deviation) {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n templateUrl: 'fullDeviation.html',\n controller: 'fullDeviationController',\n windowClass: 'full-screen',\n resolve: {\n deviation: function () {\n return deviation;\n },\n activeTab: function () {\n return \"Info\";\n }\n }\n });\n });\n }\n scope.openCloneInfo = function(task) {\n \n $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'cloneInfo.html',\n controller: 'cloneInfoController',\n resolve: {\n task: function () {\n return task;\n }\n }\n });\n }\n scope.openTask = function (taskId, mode) {\n if (!mode) mode = \"Info\";\n boardTaskService().get(taskId).then(function (task) {\n \n $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'boardTask.html',\n controller: 'boardTaskController',\n resolve: {\n task: function () {\n return task;\n },\n activeTab: function () {\n return mode;\n },\n options: function () {\n var options = {\n archiveAvailable: true,\n users: scope.users\n }\n if(task.a3Id){\n options.canChangeBoard = false;\n }\n return options;\n }\n }\n });\n });\n }\n }\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"smartactionlistStatusCell\", ['boardTaskService',\n function (boardTaskService) {\n return {\n templateUrl: 'smartactionlistStatusCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'editable': '=',\n 'cellChangeHandler': '&',\n 'adminmode': '='\n },\n link: function (scope, elem, attrs) {\n scope.task = null;\n\n scope.$watch(\"model\", function (model) {\n if (scope.model && scope.model.task) {\n scope.task = scope.model.task; \n }\n model.getSortValue = function() {\n return scope.task.status;\n } \n });\n\n\n scope.subscribe('TaskStatusUpdated', function (updatedstatus) {\n if (scope.task && scope.task.id == updatedstatus.taskId) {\n scope.task.status = updatedstatus.status;\n scope.task.progressStatus = updatedstatus.progressStatus;\n }\n });\n \n \n scope.setStatusValue = function (newStatus) {\n var taskStatus = { taskId: scope.task.id, status: newStatus }\n\n boardTaskService().updateStatus(scope.task.id, taskStatus).then(function (result) { \n });\n }\n \n }\n\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"smartactionlistTargetCell\", ['$filter', '$translate','$uibModal','navigationService','qualityService',\n function ($filter, $translate, $uibModal, navigationService, qualityService) {\n return {\n templateUrl: 'smartactionlistTargetCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'editable': '=',\n 'cellChangeHandler': '&',\n 'adminmode': '='\n },\n link: function (scope, elem, attrs) {\n scope.value = 0;\n scope.isAvailableInProjectBoard = false;\n \n scope.$watch(\"model\", function (model) {\n var value = scope.model.cell.value;\n if (value) {\n scope.value = value.value;\n if (value.settings) {\n scope.isAvailableInProjectBoard = value.settings.isAvailableInProjectBoard;\n scope.projectId = value.settings.projectId;\n scope.visualizationType = value.settings.visualizationType;\n }\n }\n if(scope.model) {\n model.getSortValue = function() {\n return scope.value;\n }\n }\n \n });\n\n \n scope.subscribe(\"SmartActionListCellUpdated\", function (cell) {\n if (cell.boardTaskId == scope.model.cell.boardTaskId && cell.smartTableColumnId == scope.model.cell.smartTableColumnId) {\n if (cell.value) {\n scope.value = cell.value.value;\n }\n }\n });\n\n \n\n \n scope.openConfiguration = function () {\n\n var modalInstance = $uibModal.open({ backdrop: 'static',\n templateUrl: 'targetProjectVisualizationForm.html',\n controller: 'targetProjectVisualizationController',\n resolve: {\n projectId: function () {\n return scope.projectId;\n },\n visualizationType: function () {\n return scope.visualizationType;\n },\n }\n });\n\n modalInstance.result.then(function (result) {\n scope.visualizationType = result.type;\n scope.projectId = result.projectId;\n if(scope.projectId && scope.visualizationType){\n scope.isAvailableInProjectBoard = true;\n updateDateStatus();\n\n var newsettings = {\n isAvailableInProjectBoard: true,\n projectId:scope.projectId,\n visualizationType: scope.visualizationType\n };\n scope.model.cell.value = {\n value: scope.value,\n settings: newsettings\n };\n \n scope.cellChangeHandler({ cell: scope.model.cell });\n }\n });\n };\n scope.setStatusValue = function (newValue) {\n scope.value = newValue;\n\n if(scope.model.cell.value && scope.model.cell.value.settings){\n scope.model.cell.value = {\n value: scope.value,\n settings: scope.model.cell.value.settings \n }; \n }\n else {\n scope.model.cell.value = {\n value: scope.value\n };\n }\n \n scope.cellChangeHandler({cell: scope.model.cell})\n if(scope.isAvailableInProjectBoard){\n updateDateStatus();\n }\n\n }\n\n function updateDateStatus(){\n if(scope.projectId && scope.visualizationType){\n\n \n var date = new Date();\n\n var status = {\n status: scope.value,\n date: date,\n areaId: null,\n projectId: scope.projectId,\n visualizationType: scope.visualizationType\n };\n qualityService().updateDateStatus(status).then(function (savedStatus) {\n \n });\n }\n }\n\n function addDeviation(statusValue) {\n var severity = DigiLean.hms.getDeviationSeverity(statusValue);\n // Make sure task responsbile dropdown is closed if open.\n var settings = {\n severity: severity\n }\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'newDeviation.html',\n controller: 'newDeviationController',\n windowClass: 'newdeviation-modal-window',\n resolve: {\n settings: function () {\n return settings;\n }\n }\n });\n }\n }\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"smartactionlistStartDateCell\", ['boardTaskService',\n function (boardTaskService) {\n return {\n templateUrl: 'smartactionlistStartDateCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'editable': '=',\n 'cellChangeHandler': '&',\n },\n link: function (scope, elem, attrs) {\n scope.color = \"#0099DE\";\n scope.dateMissed = false;\n scope.date = null;\n \n\n scope.changeColor = false,\n scope.changeColorXDaysBefore = 1;\n\n\n scope.updateDate = function($event){\n\n const localDate = $event.originalEvent.detail\n var newDate = null;\n if(localDate){\n const year = localDate.getFullYear();\n const month = localDate.getMonth();\n const date = localDate.getDate();\n newDate = new Date(Date.UTC(year, month, date, 12, 0, 0, 0));\n }\n\n boardTaskService().updateStartDate(scope.model.task.id,newDate);\n\n } \n\n scope.$watch(\"model\", function (model) {\n if (scope.model) {\n if(scope.model.task && scope.model.task.startTime){\n scope.date = moment(scope.model.task.startTime).toDate();\n \n checkDate();\n }\n scope.datePicker = {\n opened: false\n }\n var settings = model.column.settings;\n if (settings) {\n if(settings.changeColor && settings.changeColorXDaysBefore){\n scope.changeColor = true;\n scope.changeColorXDaysBefore = settings.changeColorXDaysBefore;\n }\n }\n } \n model.getSortValue = function() {\n return scope.date;\n }\n });\n \n scope.subscribe('TaskStartDateUpdated', function (taskMoved) {\n if (taskMoved.taskId == scope.model.task.id) {\n if(taskMoved.startTime){\n scope.date = moment(taskMoved.startTime).toDate();\n } else {\n scope.date = null;\n }\n checkDate();\n }\n });\n\n scope.subscribe(\"SmartDateColorCellUpdated\", function (value) {\n if(scope.model.column.id === value.columnId){\n scope.changeColor = value.changeColor;\n scope.changeColorXDaysBefore = value.changeColorXDaysBefore;\n }\n });\n\n scope.subscribe('TaskDurationUpdated', function (durationUpdated) {\n if (durationUpdated.taskId == scope.model.task.id) {\n if(durationUpdated.startTime){\n scope.date = moment(durationUpdated.startTime).toDate();\n } else {\n scope.date = null;\n }\n checkDate();\n }\n });\n function checkDate() {\n scope.status = \"\";\n if (scope.date) {\n\n var duration = moment.duration(moment().endOf('day').diff(moment(scope.date).endOf('day')));\n var days = duration.asDays();\n if (days > 1) {\n scope.status = \"missed\";\n scope.diffToPlannedDate = Math.trunc(days);\n scope.dateMissed = true;\n } else {\n scope.status = \"future\";\n scope.diffToPlannedDate = Math.round(days)*-1;\n } \n }\n }\n }\n }\n }]);\n\n","angular\n .module('DigiLean')\n .directive(\"subTasksCell\", ['$filter', '$translate', '$uibModal', 'boardTaskService',\n function ($filter, $translate, $uibModal, boardTaskService) {\n return {\n templateUrl: 'subTasksCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'editable': '=',\n 'projectAttributeChangeHandler': '&',\n },\n link: function (scope, elem, attrs) {\n scope.participants = [];\n scope.subTaskCount = 0;\n scope.subTaskCompletedCount = 0;\n\n scope.$watch(\"model\", function (model) {\n if (scope.model && scope.model.task) {\n if (scope.model.task) {\n scope.subTaskCount = scope.model.task.subTaskCount;\n scope.subTaskCompletedCount = scope.model.task.subTaskCompletedCount;\n }\n }\n scope.model.getSortValue = function() {\n return scope.subTaskCount;\n }\n });\n\n scope.subscribe(\"SubTaskCountChanged\", function(count) {\n if (count.taskId == scope.model.task.id || count.taskId == scope.model.task.siblingId) {\n scope.subTaskCount = count.subTaskCount;\n scope.subTaskCompletedCount = count.subTaskCompletedCount;\n }\n });\n \n \n scope.openTask = function () {\n boardTaskService().get(scope.model.task.id).then(function (task) {\n $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'boardTask.html',\n controller: 'boardTaskController',\n resolve: {\n task: function () {\n return task;\n },\n activeTab: function () {\n return \"SubTasks\";\n },\n options: function () {\n var options = {\n archiveAvailable: false\n }\n return options;\n }\n }\n });\n });\n };\n }\n }\n }]);","angular\n .module('DigiLean')\n .directive(\"smartactionlistTextCell\", ['$filter', '$translate', 'projectService','debounce',\n function ($filter, $translate, projectService, debounce) {\n return {\n templateUrl: 'smartactionlistTextCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'editable': '=',\n 'cellChangeHandler': '&',\n },\n link: function (scope, elem, attrs) {\n scope.text = \"\";\n scope.color = \"#676a6c\"; //\"#ffffff\";\n scope.background = \"inherit\";\n scope.customColorBackground = \"#a9a9a9\";\n scope.postIts = projectService().getPostIts();\n\n scope.usePredefinedLabels = false;\n scope.labels = [];\n var columnId = null;\n\n scope.$watch('model', function (model) {\n var value = model.cell.value;\n columnId = model.column.id;\n var settings = model.column.settings;\n\n if (value) {\n setValue(value);\n }\n if (settings) {\n if (settings.usePredefinedLabels && settings.predefinedLabels) {\n scope.labels = settings.predefinedLabels;\n scope.usePredefinedLabels = true;\n }\n }\n // Extend model with SetValue method to allow timeboard to change\n model.setValue = function (value) {\n setValue(value);\n scope.saveChanges();\n };\n model.getSortValue = function () {\n if (scope.usePredefinedLabels && scope.labels) {\n var order = scope.labels.length;\n if(scope.selectedPostIt){\n var match = scope.labels.find(a => a.title == scope.text || a.text == scope.text)\n if (match) {\n order = scope.labels.indexOf(match);\n }\n }\n return order;\n }\n return scope.text;\n }\n });\n\n scope.autofocus = function () {\n setTimeout(function () {\n //document.querySelector( \"input\" ).focus();\n $(\".project-text-cell\").focus();\n }, 50);\n }\n\n var setValue = function (value) {\n scope.background = value.background;\n scope.text = value.text;\n scope.color = value.color;\n var predefinedPostIt = $filter('filter')(scope.postIts, { background: scope.background });\n if (predefinedPostIt.length > 0) {\n scope.selectedPostIt = predefinedPostIt[0];\n } else //Custom color \n {\n scope.selectedPostIt = { title: \"custom\", background: scope.background};\n scope.customColorBackground = value.background;\n }\n }\n\n scope.subscribe(\"SmartActionListTextCellLabelUpdated\", function (value) {\n if (columnId === value.columnId) {\n scope.labels = value.predefinedLabels;\n scope.usePredefinedLabels = value.usePredefinedLabels\n }\n });\n\n scope.subscribe(\"SmartActionListCellUpdated\", function (cell) {\n if (cell.boardTaskId == scope.model.cell.boardTaskId && cell.smartTableColumnId == scope.model.cell.smartTableColumnId) {\n if (cell.value) {\n setValue(cell.value);\n }\n }\n });\n scope.selectTextAndColor = function (postIt) {\n scope.selectedPostIt = postIt;\n if (postIt.title === 'default' || postIt.title == \"\") {\n scope.background = \"inherit\";\n scope.color = postIt.color;\n scope.text = \"\";\n } else {\n scope.background = postIt.background;\n scope.color = postIt.color;\n scope.text = postIt.title;\n }\n scope.commitChangesDebounced();\n }\n scope.selectColor = function (postIt) {\n scope.selectedPostIt = postIt;\n if (postIt.title === 'default') {\n scope.background = \"inherit\";\n scope.color = \"#676a6c\";\n } else {\n scope.background = postIt.background;\n scope.color = \"#ffffff\";\n }\n scope.commitChangesDebounced();\n }\n scope.selectCustomColor = function (color) {\n scope.selectedPostIt = { title: \"custom\", background: color };\n scope.background = color;\n scope.color = \"#ffffff\";\n scope.commitChangesDebounced();\n }\n scope.textChanged = function (text) {\n scope.text = text;\n scope.commitChangesDebounced();\n }\n scope.saveChanges = function () {\n var value = {\n background: scope.background,\n color: scope.color,\n text: scope.text\n }\n scope.model.cell.value = value;\n scope.cellChangeHandler({ cell: scope.model.cell })\n }\n\n // Debounce function so that save is called to often.\n scope.commitChangesDebounced = debounce(scope.saveChanges, 1000, false);\n\n }\n }\n }]);\n","\nangular\n .module('DigiLean')\n .controller(\"commonCellSelectionController\", ['$scope', '$uibModalInstance', 'type',\n function ($scope, $uibModalInstance, type) {\n\n $scope.type = type;\n \n $scope.addColumn = function (columnid) {\n $uibModalInstance.close(columnid);\n }\n\n $scope.close = function () {\n $uibModalInstance.dismiss('cancel');\n }\n\n \n }]);","angular\n .module('DigiLean')\n .directive(\"smartCheckCell\", ['debounce',\n function (debounce) {\n return {\n templateUrl: 'smartCheckCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'type': '=',\n 'editable': '=',\n 'changeHandler': '&',\n }, \n link: function (scope, elem, attrs) {\n scope.checked = 0;\n var rowId = null;\n var columnId = null;\n\n scope.subscribe(\"ProjectAttributeUpdated\", function (attribute) {\n if (scope.type == 'project' && attribute.projectId == rowId && attribute.projectBoardAttributeId == columnId) {\n if (attribute.value) {\n setValue(attribute.value);\n }\n }\n });\n scope.subscribe(\"A3TableCellUpdated\", function (tablecell) {\n if (scope.type == 'a3' && tablecell.a3Id == scope.model.a3.id && tablecell.a3TableColumnId == scope.model.columnId) {\n if (tablecell.value) {\n setValue(tablecell.value);\n }\n }\n });\n\n scope.$watch('model', function (model) {\n\n var value = null;\n if (scope.type == 'project') { \n rowId = scope.model.project.id;\n columnId = scope.model.boardAttributeId;\n value = model.projectAttribute.value;\n } else if (scope.type == 'a3') {\n rowId = scope.model.a3.id;\n columnId = scope.model.columnId;\n if(model.a3TableCell){ \n value = model.a3TableCell.value;\n } \n }\n if (value) {\n setValue(value);\n }\n model.getSortValue = function() {\n return scope.checked;\n }\n });\n\n var setValue = function (cell) {\n if(cell && cell.check == 1){\n scope.check = 1;\n } else {\n scope.check = 0;\n }\n \n }\n\n\n\n scope.cellChanged = function () {\n if(scope.check == 1){\n scope.check = 0;\n }else {\n scope.check = 1;\n }\n scope.commitChangesDebounced();\n \n }\n\n scope.saveChanges = function() {\n var value = {\n check: scope.check\n }\n if(scope.type == 'project'){\n scope.model.projectAttribute.value = value;\n scope.changeHandler({projectAttribute: scope.model.projectAttribute})\n }else if (scope.type == 'a3') {\n if(scope.model.a3TableCell){\n scope.model.a3TableCell.value = value;\n }else {\n var a3TableCell = {\n id: 0,\n a3TableColumnId: columnId,\n a3Id: rowId,\n value: value\n };\n scope.model.a3TableCell = a3TableCell; \n }\n scope.changeHandler({a3TableCell: scope.model.a3TableCell})\n }\n }\n\n // Debounce function so that save is called to often.\n scope.commitChangesDebounced = debounce(scope.saveChanges, 1000, false);\n\n\n }\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"smartColumnWidthConfig\", ['debounce',\n function (debounce) {\n return {\n templateUrl: 'smartColumnWidthConfig.html',\n restrict: 'E',\n scope: {\n 'column': '<',\n 'changeHandler': '&',\n }, \n link: function (scope, elem, attrs) {\n\n scope.minwidth = 20;\n\n scope.$watch('column', function (column) {\n scope.col = column;\n // TODO: \n const typeOfSettings = typeof column.settings\n if (column.settings && typeOfSettings == \"string\")\n console.log(`column.settings. Type=${typeOfSettings}. ${column.settings}`)\n });\n\n scope.reduceWidth = function(){\n scope.col.settings.width = scope.col.settings.width - 10;\n if(scope.col.settings.width >= scope.minwidth){\n scope.saveChanges(scope.col);\n }\n }\n\n scope.increaseWidth = function(){\n scope.col.settings.width = scope.col.settings.width + 10;\n if(scope.col.settings.width <= 1000){\n scope.saveChanges(scope.col);\n }\n }\n\n scope.updateWidthSetting = function(col){\n if(col.settings.widthSetting == 'MANUAL'){\n col.settings.width = 200;\n }\n scope.col = col;\n scope.saveChanges(col);\n }\n\n scope.updateColumnWidth = function(col){\n scope.col.settings = col.settings;\n scope.saveChanges(col);\n }\n \n scope.saveChanges = function(col) {\n if(scope.col && scope.col.settings && scope.col.settings.widthSetting){\n scope.changeHandler({column: col});\n }\n }\n }\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"smartDateCell\", ['$filter', 'projectService',\n function ($filter, projectService) {\n return {\n templateUrl: 'smartDateCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'type': '=',\n 'editable': '=',\n 'changeHandler': '&',\n },\n link: function (scope, elem, attrs) {\n var defaultDateColor = \"#0099DE\";\n scope.color = defaultDateColor;\n scope.customColorBackground = \"#a9a9a9\";\n scope.postIts = projectService().getPostIts();\n scope.value = \"\";\n \n scope.updateDate = function($event) {\n const date = $event.originalEvent.detail\n scope.value = date\n scope.saveChanges()\n }\n\n scope.$watch(\"model\", function (model) {\n var value = null;\n \n if (scope.type == 'project') {\n value = model.projectAttribute.value; \n \n } else if (scope.type == 'a3') {\n if(model.a3TableCell) {\n value = model.a3TableCell.value; \n }\n }\n if (value) {\n setValue(value);\n } \n model.getSortValue = function() {\n if (scope.value) {\n return scope.value;\n }\n return null;\n }\n });\n\n var setValue = function(value) {\n scope.background = value.background;\n if(value.value){\n scope.value = moment(value.value).toDate();\n } else {\n scope.value = \"\";\n }\n scope.color = value.color;\n var predefinedPostIt = $filter('filter')(scope.postIts, { background: scope.background });\n if (predefinedPostIt.length > 0) {\n scope.selectedPostIt = predefinedPostIt[0];\n } else //Custom color \n {\n scope.selectedPostIt = { title: \"custom\", background: scope.background };\n scope.customColorBackground = value.background;\n }\n }\n\n scope.subscribe(\"ProjectAttributeUpdated\", function (attribute) {\n if (scope.type == 'project' && attribute.projectId == scope.model.project.id && attribute.projectBoardAttributeId == scope.model.boardAttributeId) {\n if (attribute.value) {\n setValue(attribute.value);\n }\n }\n });\n scope.subscribe(\"A3TableCellUpdated\", function (tablecell) {\n if (scope.type == 'a3' && tablecell.a3Id == scope.model.a3.id && tablecell.a3TableColumnId == scope.model.columnId) {\n if (tablecell.value) {\n setValue(tablecell.value);\n }\n }\n });\n\n scope.selectColor = function (postIt) {\n scope.selectedPostIt = postIt;\n if(postIt.title === 'default'){\n scope.background = \"inherit\";\n scope.color = defaultDateColor;\n } else {\n scope.background = postIt.background;\n scope.color = \"#ffffff\";\n }\n scope.saveChanges();\n }\n scope.selectCustomColor = function (color) {\n scope.selectedPostIt = {title:\"custom\", background: color};\n scope.background = color;\n scope.color = \"#ffffff\";\n scope.saveChanges();\n }\n\n scope.saveChanges = function() {\n var newvalue = {\n background: scope.background,\n color: scope.color,\n value: scope.value\n }\n if (scope.type == 'project') {\n scope.model.projectAttribute.value = newvalue;\n scope.changeHandler({projectAttribute: scope.model.projectAttribute})\n } else if (scope.type == 'a3') {\n if(scope.model.a3TableCell){\n scope.model.a3TableCell.value = newvalue;\n }else {\n var a3TableCell = {\n id: 0,\n a3TableColumnId: scope.model.column.a3TableColumnId,\n a3Id: scope.model.a3.id,\n value: newvalue\n };\n scope.model.a3TableCell = a3TableCell; \n }\n scope.changeHandler({a3TableCell: scope.model.a3TableCell})\n }\n \n }\n }\n }\n }]);\n","var DigiLean = angular.module('DigiLean');\nDigiLean.controller('predefinedIcons', ['$scope', '$rootScope', '$filter', '$uibModalInstance', '$translate', 'labels','smarttableService',\n function ($scope, $rootScope, $filter, $uibModalInstance, $translate, labels, smarttableService) {\n $scope.defaultLabels = smarttableService().getIcons();\n $scope.labels = labels;\n if(!$scope.labels){\n $scope.labels = $scope.defaultLabels; \n }\n\n $rootScope.$on('$translateChangeSuccess', function () {\n $scope.steps[0].title = $translate.instant('DASHBOARD_DATA_SOURCE');\n $scope.steps[1].title = $translate.instant('COMMON_FILTER');\n $scope.currentStep = $scope.steps[0];\n });\n\n \n $scope.createNew = function (item) {\n var newLabel = {\n icon: item,\n title: \"\",\n color: \"#E6E9ED\"\n }\n $scope.labels.push(newLabel);\n };\n\n $scope.delete = function (label) {\n var index = $scope.labels.indexOf(label);\n $scope.labels.splice(index, 1); \n }\n\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n\n $scope.ok = function () {\n $uibModalInstance.close($scope.labels);\n };\n\n }]);","angular\n .module('DigiLean')\n .directive(\"smartIconCell\", ['$filter', 'debounce', 'smarttableService',\n function ($filter, debounce, smarttableService) {\n return {\n templateUrl: 'smartIconCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'type': '=',\n 'editable': '=',\n 'changeHandler': '&',\n },\n link: function (scope, elem, attrs) {\n scope.icon = \"\";\n scope.text = \"\";\n scope.color = \"#676a6c\";\n scope.background = \"inherit\";\n scope.customColorBackground = \"#a9a9a9\";\n scope.postIts = smarttableService().getIcons();\n scope.icons = [];\n\n var rowId = null;\n var columnId = null;\n\n scope.$watch('model', function (model) {\n var value = null;\n var settings = null;\n if (scope.type == 'smarttable') {\n settings = model.column.settings; \n value = model.cell.value; \n columnId = model.column.id; \n } else if (scope.type == 'smartactionlist') {\n settings = model.column.settings; \n value = scope.model.cell.value;\n columnId = model.column.id; \n }\n if (scope.type == 'project') {\n columnId = model.boardAttributeId;\n rowId = model.project.id;\n value = model.projectAttribute.value;\n settings = model.column.settings; \n \n } \n /*else if (scope.type == 'a3') {\n columnId = model.columnId;\n rowId = model.a3.id;\n if(model.a3TableCell){\n value = model.a3TableCell.value;\n }\n settings = model.column.settings; \n }*/\n if (value) {\n setValue(value);\n } \n if (settings && settings.predefinedIcons) {\n scope.icons = settings.predefinedIcons; \n } else {\n scope.icons = scope.postIts;\n }\n model.getSortValue = function () {\n if(scope.icons){\n var exist = $filter('filter')(scope.icons, { icon: scope.icon }, true);\n if (exist.length > 0) {\n return scope.icons.indexOf(exist[0]);\n } else {\n return scope.icons.length;\n }\n }\n return -1;\n }\n });\n\n scope.autofocus = function(){\n setTimeout(function() {\n $(\".project-text-cell\").focus();\n }, 50 );\n }\n \n var setValue = function(value) {\n scope.background = value.background;\n scope.text = value.text;\n scope.color = value.color;\n scope.icon = value.icon;\n var predefinedPostIt = $filter('filter')(scope.postIts, { background: scope.background });\n if (predefinedPostIt.length > 0) {\n scope.selectedPostIt = predefinedPostIt[0];\n } else //Custom color \n {\n scope.selectedPostIt = { title: \"custom\", background: scope.background };\n scope.customColorBackground = value.background;\n }\n }\n\n scope.subscribe(\"SmartActionListCellUpdated\", function (cell) {\n if (scope.type == 'smartactionlist' && cell.boardTaskId == scope.model.cell.boardTaskId && cell.smartTableColumnId == scope.model.cell.smartTableColumnId) {\n if (cell.value) {\n setValue(cell.value);\n }\n } \n });\n\n scope.subscribe(\"SmartTableCellUpdated\", function (cell) {\n if (scope.type == 'smarttable' && cell.smartTableRowId == scope.model.cell.smartTableRowId && cell.smartTableColumnId == scope.model.cell.smartTableColumnId) {\n if (cell.value) {\n setValue(cell.value);\n }\n } \n });\n \n scope.subscribe(\"ProjectAttributeUpdated\", function (attribute) {\n if (scope.type == 'project' && attribute.projectId == scope.model.project.id && attribute.projectBoardAttributeId == scope.model.boardAttributeId) {\n if (attribute.value) {\n setValue(attribute.value);\n }\n } \n });\n /* Per now this cell type is not available for A3\n scope.subscribe(\"A3TableCellUpdated\", function (tablecell) {\n if (scope.type == 'a3' && tablecell.a3Id == scope.model.a3.id && tablecell.a3TableColumnId == scope.model.columnId) {\n if (tablecell.value) {\n setValue(tablecell.value);\n }\n }\n });*/\n\n scope.subscribe(\"SmartIconCellSelectorUpdated\", function (value) {\n if (value.type == scope.type && columnId === value.columnId) {\n scope.icons = value.predefinedIcons;\n }\n });\n \n scope.clear = function() {\n scope.icon = \"\";\n scope.text = \"\";\n scope.color = \"#676a6c\";\n scope.background = \"inherit\";\n scope.commitChangesDebounced();\n }\n\n scope.selectIconAndColor = function (postIt) {\n scope.selectedPostIt = postIt;\n if(postIt.title === 'default'){\n scope.text = \"\";\n scope.background = \"inherit\";\n scope.color = \"#676a6c\";\n scope.icon = \"\";\n } else {\n scope.background = postIt.background;\n scope.color = postIt.color; \n scope.text = postIt.title;\n scope.icon = postIt.icon;\n }\n scope.commitChangesDebounced();\n }\n\n scope.saveChanges = function() {\n var newvalue = {\n color: scope.color,\n text: scope.text,\n icon: scope.icon\n }\n if (scope.type == 'smarttable' ||scope.type == 'smartactionlist') {\n scope.model.cell.value = newvalue;\n scope.changeHandler({ cell: scope.model.cell })\n }\n else if (scope.type == 'project' || scope.type == 'strategy') {\n scope.model.projectAttribute.value = newvalue;\n scope.changeHandler({projectAttribute: scope.model.projectAttribute})\n } else if (scope.type == 'a3') {\n if(scope.model.a3TableCell){\n scope.model.a3TableCell.value = newvalue;\n }else {\n var a3TableCell = {\n id: 0,\n a3TableColumnId: columnId,\n a3Id: rowId,\n value: newvalue\n };\n scope.model.a3TableCell = a3TableCell; \n }\n scope.changeHandler({a3TableCell: scope.model.a3TableCell})\n }\n }\n\n // Debounce function so that save is called to often.\n scope.commitChangesDebounced = debounce(scope.saveChanges, 1000, false);\n\n }\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"smartLinkCell\", ['$filter','debounce','$translate', 'projectService',\n function ($filter, debounce, $translate, projectService) {\n return {\n templateUrl: 'smartLinkCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'type': '=',\n 'editable': '=',\n 'changeHandler': '&',\n 'adminmode': '='\n },\n link: function (scope, elem, attrs) {\n scope.url = \"\";\n scope.openInNewTab = true;\n scope.text = \"\";\n scope.color = \"#676a6c\"; //\"#ffffff\";\n scope.background = \"inherit\";\n scope.customColorBackground = \"#a9a9a9\";\n scope.postIts = projectService().getPostIts();\n\n scope.showDropdown = false;\n\n scope.usePredefinedLabels = false;\n scope.labels = [];\n var columnId = null;\n var rowId = null;\n\n scope.$watch('editable', function (editable) {\n var test = editable;\n });\n\n scope.$watch('model', function (model) {\n var value = null;\n if (scope.type == 'project') {\n columnId = model.boardAttributeId;\n rowId = model.project.id;\n value = model.projectAttribute.value; \n \n } else if (scope.type == 'a3') {\n columnId = model.columnId;\n rowId = model.a3.id;\n if(model.a3TableCell){\n value = model.a3TableCell.value;\n } \n }\n //var settings = model.column.settings;\n\n if (value) {\n setValue(value);\n }\n model.getSortValue = function () {\n return scope.text;\n }\n });\n\n scope.autofocus = function () {\n setTimeout(function () {\n //$(elem).closest(\".smarttable-link-cell\").focus(); fungerer ikke\n $(\".project-link-cell\").focus();\n\n }, 50);\n }\n\n var setValue = function (value) {\n scope.background = value.background;\n scope.url = value.url;\n scope.openInNewTab = value.openInNewTab;\n scope.text = value.text;\n scope.color = value.color;\n var predefinedPostIt = $filter('filter')(scope.postIts, { background: scope.background });\n if (predefinedPostIt.length > 0) {\n scope.selectedPostIt = predefinedPostIt[0];\n } else //Custom color \n {\n scope.selectedPostIt = { title: \"custom\", background: scope.background };\n scope.customColorBackground = value.background;\n }\n }\n\n scope.subscribe(\"ProjectAttributeUpdated\", function (attribute) {\n if (scope.type == 'project' && attribute.projectId == scope.model.project.id && attribute.projectBoardAttributeId == scope.model.boardAttributeId) {\n if (attribute.value) {\n setValue(attribute.value);\n }\n }\n });\n scope.subscribe(\"A3TableCellUpdated\", function (tablecell) {\n if (scope.type == 'a3' && tablecell.a3Id == rowId && tablecell.a3TableColumnId == columnId) {\n if (tablecell.value) {\n setValue(tablecell.value);\n }\n }\n });\n scope.selectColor = function (postIt) {\n scope.selectedPostIt = postIt;\n if (postIt.title === 'default') {\n scope.background = \"inherit\";\n scope.color = \"#676a6c\";\n } else {\n scope.background = postIt.background;\n scope.color = \"#ffffff\";\n }\n scope.commitChangesDebounced();\n }\n scope.selectCustomColor = function (color) {\n scope.selectedPostIt = { title: \"custom\", background: color };\n scope.background = color;\n scope.color = \"#ffffff\";\n scope.commitChangesDebounced();\n }\n scope.textChanged = function (text) {\n if (scope.text === text) return;\n scope.text = text;\n scope.commitChangesDebounced();\n }\n scope.urlChanged = function (url) {\n if (scope.url === url) return;\n scope.url = url;\n scope.commitChangesDebounced();\n }\n\n scope.openChanged = function (open) {\n if (scope.openInNewTab === open) return;\n scope.openInNewTab = open;\n scope.commitChangesDebounced();\n }\n scope.saveChanges = function () {\n var value = {\n background: scope.background,\n color: scope.color,\n text: scope.text,\n url: scope.url,\n openInNewTab: scope.openInNewTab\n }\n if (scope.type == 'project') {\n scope.model.projectAttribute.value = value;\n scope.changeHandler({projectAttribute: scope.model.projectAttribute})\n } else if (scope.type == 'a3') {\n if(scope.model.a3TableCell){\n scope.model.a3TableCell.value = value;\n }else {\n var a3TableCell = {\n id: 0,\n a3TableColumnId: columnId,\n a3Id: rowId,\n value: value\n };\n scope.model.a3TableCell = a3TableCell; \n }\n scope.changeHandler({a3TableCell: scope.model.a3TableCell})\n }\n }\n\n // Debounce function so that save is called to often.\n scope.commitChangesDebounced = debounce(scope.saveChanges, 1000, false);\n\n }\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"smartCommonNumberCell\", ['$filter', 'debounce', 'projectService',\n function ($filter, debounce, projectService) {\n return {\n templateUrl: 'smartCommonNumberCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'type': '=',\n 'editable': '=',\n 'changeHandler': '&',\n },\n link: function (scope, elem, attrs) {\n scope.number = null;\n scope.unit = null;\n scope.unitPlacement = \"right\";\n scope.projectAttributeId = null;\n scope.projectId = null;\n scope.color = \"#676a6c\"; //\"#ffffff\";\n scope.background = \"inherit\";\n scope.customColorBackground = \"#a9a9a9\";\n scope.postIts = projectService().getPostIts();\n var settings = null;\n\n var rowId = null;\n var columnId = null;\n scope.$watch('model', function (model) {\n var value = null;\n \n if (scope.type == 'project') {\n columnId = model.boardAttributeId;\n rowId = model.project.id;\n value = model.projectAttribute.value; \n \n } else if (scope.type == 'a3') {\n columnId = model.columnId;\n rowId = model.a3.id;\n if(model.a3TableCell) {\n value = model.a3TableCell.value; \n }\n }\n if (value) {\n setValue(value);\n }\n settings = model.column.settings;\n if (settings) {\n if (settings.unit) {\n scope.unit = settings.unit;\n if (settings.unitPlacement) {\n scope.unitPlacement = settings.unitPlacement;\n }\n }\n }\n model.getSortValue = function () {\n return scope.number;\n }\n });\n\n scope.autofocus = function () {\n setTimeout(function () {\n //document.querySelector( \"input\" ).focus();\n $(\".project-text-cell\").focus();\n }, 50);\n }\n\n var setValue = function (cell) {\n scope.background = cell.background;\n scope.number = cell.number;\n\n scope.updateAggregateCell();\n\n scope.color = cell.color;\n var predefinedPostIt = $filter('filter')(scope.postIts, { background: scope.background });\n if (predefinedPostIt.length > 0) {\n scope.selectedPostIt = predefinedPostIt[0];\n } else //Custom color \n {\n scope.selectedPostIt = { title: \"custom\", background: scope.background };\n scope.customColorBackground = cell.background;\n }\n }\n\n\n scope.subscribe(\"ProjectAttributeUpdated\", function (attribute) {\n if (scope.type == 'project' && attribute.projectId == scope.model.project.id && attribute.projectBoardAttributeId == scope.model.boardAttributeId) {\n if (attribute.value) {\n setValue(attribute.value);\n }\n }\n });\n scope.subscribe(\"A3TableCellUpdated\", function (tablecell) {\n if (scope.type == 'a3' && tablecell.a3Id == scope.model.a3.id && tablecell.a3TableColumnId == scope.model.columnId) {\n if (tablecell.value) {\n setValue(tablecell.value);\n }\n }\n });\n scope.subscribe(\"SmartCommonNumberCellUnitUpdated\", function (value) {\n if (scope.type == value.type && columnId === value.columnId) {\n scope.unit = value.unit;\n }\n });\n\n scope.selectColor = function (postIt) {\n scope.selectedPostIt = postIt;\n if (postIt.title === 'default') {\n scope.background = \"inherit\";\n scope.color = \"#676a6c\";\n } else {\n scope.background = postIt.background;\n scope.color = \"#ffffff\";\n }\n scope.commitChangesDebounced();\n }\n scope.selectCustomColor = function (color) {\n scope.selectedPostIt = { title: \"custom\", background: color };\n scope.background = color;\n scope.color = \"#ffffff\";\n scope.commitChangesDebounced();\n }\n scope.numberChanged = function (number) {\n if (scope.number === number) return;\n scope.number = number;\n scope.updateAggregateCell();\n scope.commitChangesDebounced();\n }\n scope.saveChanges = function () {\n var newvalue = {\n background: scope.background,\n color: scope.color,\n number: scope.number\n }\n if (scope.type == 'project') {\n scope.model.projectAttribute.value = newvalue;\n scope.changeHandler({projectAttribute: scope.model.projectAttribute})\n } else if (scope.type == 'a3') {\n if(scope.model.a3TableCell){\n scope.model.a3TableCell.value = newvalue;\n }else {\n var a3TableCell = {\n id: 0,\n a3TableColumnId: columnId,\n a3Id: rowId,\n value: newvalue\n };\n scope.model.a3TableCell = a3TableCell; \n }\n scope.changeHandler({a3TableCell: scope.model.a3TableCell})\n }\n }\n\n scope.sendEvent = function () {\n var payload = {\n type: scope.type,\n columnId: columnId,\n rowId: rowId,\n value: scope.number\n }\n scope.publish(\"SmartCommonNumberCellUpdated\", payload);\n }\n\n scope.updateAggregateCell = debounce(scope.sendEvent, 1000, false);\n\n // Debounce function so that save is called to often.\n scope.commitChangesDebounced = debounce(scope.saveChanges, 1000, false);\n\n }\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"smartCommonNumberCellAggregate\", ['$filter', 'mathService',\n function ($filter, mathService) {\n return {\n templateUrl: 'smartCommonNumberCellAggregate.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'type': '=',\n },\n link: function (scope, elem, attrs) {\n var columnId = null;\n scope.numberCellAggregateValue = null;\n scope.aggregateType = \"SUM\";\n var valuePerRow = [];\n scope.decimals = null;\n scope.unit = null;\n scope.unitPlacement = \"right\";\n\n scope.$watch('model', function (model) {\n columnId = model.id;\n if (model && model.settings) {\n var settings = model.settings;\n if(settings.aggregateType){\n scope.aggregateType = settings.aggregateType;\n }\n if(settings.dataSource && settings.dataSource.valueElement.unit == \"%\"){ //procent has to be calculated as average value\n scope.aggregateType = \"AVERAGE\";\n }\n if(settings.unit){\n scope.unit = settings.unit;\n if(settings.unitPlacement){\n scope.unitPlacement = settings.unitPlacement;\n }\n }\n if(settings.decimals !== null || settings.decimals !== undefined){\n scope.decimals = settings.decimals;\n }\n }\n model.getSortValue = function () {\n return scope.numberCellAggregateValue;\n }\n\n });\n\n scope.subscribe(\"SmartCommonNumberCellUpdated\", function (value) {\n if(scope.type == value.type && columnId === value.columnId){\n updateValue(value);\n }\n });\n\n \n scope.subscribe(\"SmartCommonNumberCellUnitUpdated\", function (value) {\n if(scope.type == value.type && columnId === value.columnId){\n scope.unit = value.unit;\n }\n });\n scope.subscribe(\"SmartCommonCellUnitPlacementUpdated\", function (value) {\n if(scope.type == value.type && columnId === value.columnId){\n scope.unitPlacement = value.unitPlacement;\n }\n });\n scope.subscribe(\"SmartCommonNumberCellDecimalUpdated\", function (value) {\n if(scope.type == value.type && columnId === value.columnId){\n scope.decimals = value.decimals;\n calculateAggregateValue();\n }\n });\n scope.subscribe(\"SmartCommonNumberCellAggregateTypeUpdated\", function (value) {\n if(scope.type == value.type && columnId === value.columnId){\n scope.aggregateType = value.aggregateType;\n calculateAggregateValue();\n }\n });\n\n scope.subscribe(\"ProjectDeleted\", function (payLoad) {\n if(scope.type == 'project'){\n var existingValueForProject = $filter('filter')(valuePerRow, { projectId: payLoad.id });\n\n if (existingValueForProject && existingValueForProject.length > 0) {\n var index = valuePerRow.indexOf(existingSumForProject);\n valuePerRow.splice(index, 1);\n calculateAggregateValue();\n }\n }\n });\n\n scope.subscribe(\"A3Deleted\", function (payLoad) {\n if(scope.type == 'a3'){\n var existingValue = $filter('filter')(valuePerRow, { a3Id: payLoad.id });\n\n if (existingValue && existingValue.length > 0) {\n var index = valuePerRow.indexOf(existingValue[0]);\n valuePerRow.splice(index, 1);\n calculateAggregateValue();\n }\n }\n });\n\n\n function updateValue(updatedValue) {\n var existingValueForRow = $filter('filter')(valuePerRow, { rowId: updatedValue.rowId });\n if (existingValueForRow && existingValueForRow.length > 0) {\n var index = valuePerRow.indexOf(existingValueForRow[0]);\n valuePerRow[index] = updatedValue;\n } else {\n valuePerRow.push(updatedValue);\n }\n calculateAggregateValue();\n }\n\n function calculateAggregateValue() {\n scope.numberCellAggregateValue = 0;\n var noOfRowCellWithValue = 0;\n for (var i = 0; i < valuePerRow.length; i++) {\n if (valuePerRow[i].value) {\n scope.numberCellAggregateValue = scope.numberCellAggregateValue + valuePerRow[i].value;\n noOfRowCellWithValue = noOfRowCellWithValue + 1;\n }\n }\n if (scope.aggregateType === \"AVERAGE\" && noOfRowCellWithValue > 0) {\n scope.numberCellAggregateValue = scope.numberCellAggregateValue / noOfRowCellWithValue;\n }\n\n if(scope.decimals !== null) {\n if(scope.decimals !== undefined) {\n scope.numberCellAggregateValue = mathService().roundNumber(scope.numberCellAggregateValue, scope.decimals);\n }\n }\n }\n }\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"smartPersonCell\", ['$filter',\n function ($filter) {\n return {\n templateUrl: 'smartPersonCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'type': '=',\n 'editable': '=',\n 'changeHandler': '&',\n 'users': '<'\n },\n link: function (scope, elem, attrs) {\n scope.displayName = \"\";\n scope.$watch('model', function (model) {\n var value = null;\n if (scope.type == 'project') {\n value = model.projectAttribute.value;\n } else if (scope.type == 'a3') {\n if(model.a3TableCell){\n value = model.a3TableCell.value;\n } \n }\n if (value) {\n setValue(value);\n mapUser();\n }\n model.getSortValue = function () {\n if (scope.user) {\n return scope.user.fullName;\n }\n return \"\";\n }\n });\n\n var setValue = function (value) {\n scope.displayName = value.displayName;\n scope.user = value;\n }\n scope.subscribe(\"ProjectAttributeUpdated\", function (attribute) {\n if (scope.type == 'project' && attribute.projectId == scope.model.project.id && attribute.projectBoardAttributeId == scope.model.boardAttributeId) {\n if (attribute.value) {\n setValue(attribute.value);\n } else {\n scope.displayName = \"\";\n scope.user = null;\n }\n }\n });\n\n scope.subscribe(\"A3TableCellUpdated\", function (tablecell) {\n if (scope.type == 'a3' && tablecell.a3Id == scope.model.a3.id && tablecell.a3TableColumnId == scope.model.columnId) {\n if (tablecell.value) {\n setValue(tablecell.value);\n mapUser();\n } else {\n scope.displayName = \"\";\n scope.user = null;\n }\n }\n });\n\n scope.$watch(\"users\", function (users) {\n if (!users) return;\n mapUser();\n });\n\n var mapUser = function() {\n if (scope.user && scope.users) {\n var matchingUser = scope.users.find(u => u.userId == scope.user.userId)\n if (matchingUser) {\n scope.displayName = matchingUser.ownerDisplayName\n scope.user = matchingUser\n }\n }\n }\n scope.clearSelectedUser = function () {\n scope.selectUser(null);\n \n };\n scope.selectUser = function (user) {\n scope.user = user;\n scope.model.user = user;\n\n var simpelUser = {userId:user.userId,\n displayName: user.displayName,\n fullName:user.fullName\n };\n \n if (scope.type == 'project') {\n scope.model.projectAttribute.value = simpelUser;\n scope.changeHandler({projectAttribute: scope.model.projectAttribute})\n } else if (scope.type == 'a3') {\n if(scope.model.a3TableCell){\n scope.model.a3TableCell.value = simpelUser;\n }else {\n var a3TableCell = {\n id: 0,\n a3TableColumnId: scope.model.column.a3TableColumnId,\n a3Id: scope.model.a3.id,\n value: simpelUser\n };\n scope.model.a3TableCell = a3TableCell; \n }\n scope.changeHandler({a3TableCell: scope.model.a3TableCell})\n }\n };\n }\n }\n }]);","angular\n .module('DigiLean')\n .directive(\"smartProgressCell\", ['$filter', '$translate',\n function ($filter, $translate) {\n return {\n templateUrl: 'smartProgressCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'type': '=',\n 'editable': '=',\n 'changeHandler': '&',\n },\n link: function (scope, elem, attrs) {\n var columnId = null;\n var rowId = null;\n scope.options = [\n { progress: 25, label: \"25 %\", color: \"#0099DE\"},\n { progress: 50, label: \"50 %\", color: \"#0099DE\"},\n { progress: 75, label: \"75 %\", color: \"#0099DE\"},\n { progress: 100, label: \"100 %\", color: \"#8CC152\"},\n ]\n\n scope.customOption = {\n progress: 0,\n label: \"0 %\",\n color: \"0099DE\"\n };\n scope.$watch(\"model\", function (model) {\n var value = null;\n if (scope.type == 'project') {\n columnId = model.boardAttributeId;\n rowId = model.project.id;\n value = model.projectAttribute.value; \n \n } else if (scope.type == 'a3') {\n columnId = model.column.id;\n rowId = model.a3.id;\n if(model.a3TableCell){\n value = model.a3TableCell.value;\n } \n }\n if (value) {\n scope.progress = value.progress;\n scope.color = value.color;\n scope.customOption.progress = value.progress;\n }\n model.getSortValue = function () {\n if (scope.progress) {\n return scope.progress;\n }\n return 0;\n }\n });\n \n \n scope.subscribe(\"ProjectAttributeUpdated\", function (attribute) {\n if (scope.type == 'project' && attribute.projectId == rowId && attribute.projectBoardAttributeId == columnId) {\n if (attribute.value && scope.progress !== attribute.value.progress) {\n scope.progress = attribute.value.progress;\n scope.color = attribute.value.color; \n scope.label = attribute.value.label;\n scope.customOption.progress = attribute.value.progress;\n }\n }\n });\n scope.subscribe(\"A3TableCellUpdated\", function (tablecell) {\n if (scope.type == 'a3' && tablecell.a3Id == scope.model.a3.id && tablecell.a3TableColumnId == scope.model.columnId) {\n if (tablecell.value && scope.progress !== tablecell.value.progress) {\n scope.progress = tablecell.value.progress;\n scope.color = tablecell.value.color; \n scope.label = tablecell.value.label;\n scope.customOption.progress = tablecell.value.progress;\n }\n }\n });\n \n \n scope.setProgress = function(option) {\n scope.progress = option.progress;\n scope.customOption.progress = option.progress;\n scope.color = option.color;\n if (scope.progress == 100) { // Green color if 100\n scope.color = \"#8CC152\";\n }\n\n var value = {\n progress: scope.progress,\n color: scope.color,\n label: option.label\n }\n if (scope.type == 'project') {\n scope.model.projectAttribute.value = value;\n scope.changeHandler({projectAttribute: scope.model.projectAttribute})\n } else if (scope.type == 'a3') {\n if(scope.model.a3TableCell){\n scope.model.a3TableCell.value = value;\n }else {\n var a3TableCell = {\n id: 0,\n a3TableColumnId: scope.model.column.a3TableColumnId,\n a3Id: rowId,\n value: value\n };\n scope.model.a3TableCell = a3TableCell; \n }\n scope.changeHandler({a3TableCell: scope.model.a3TableCell})\n }\n }\n }\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"smartRatingCell\", ['debounce',\n function (debounce) {\n return {\n templateUrl: 'smartRatingCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'type': '=',\n 'editable': '=',\n 'changeHandler': '&',\n }, \n link: function (scope, elem, attrs) {\n scope.rating = 0;\n var rowId = null;\n var columnId = null;\n\n scope.subscribe(\"ProjectAttributeUpdated\", function (attribute) {\n if (scope.type == 'project' && attribute.projectId == rowId && attribute.projectBoardAttributeId == columnId) {\n if (attribute.value) {\n setValue(attribute.value);\n }\n }\n });\n scope.subscribe(\"A3TableCellUpdated\", function (tablecell) {\n if (scope.type == 'a3' && tablecell.a3Id == scope.model.a3.id && tablecell.a3TableColumnId == scope.model.columnId) {\n if (tablecell.value) {\n setValue(tablecell.value);\n }\n }\n });\n scope.$watch('model', function (model) {\n var value = null;\n if (scope.type == 'project') {\n columnId = model.boardAttributeId;\n rowId = model.project.id;\n value = model.projectAttribute.value; \n \n } else if (scope.type == 'a3') {\n columnId = model.columnId;\n rowId = model.a3.id;\n if(model.a3TableCell) {\n value = model.a3TableCell.value; \n }\n }\n if (value) {\n setValue(value);\n }\n model.getSortValue = function() {\n return scope.rating;\n }\n });\n\n function calculateScore(){\n scope.score = scope.probability * scope.consequence;\n\n scope.background = \"inherit\";\n if(scope.score < 4){\n scope.background = '#5cb85c';\n } else if (scope.score >= 4 && scope.score < 10){ \n scope.background = '#f8c500';\n } else if (scope.score >= 10 && scope.score < 13){\n scope.background = '#f8ac59';\n } else if (scope.score > 12){\n scope.background = '#d9534f';\n }\n }\n var setValue = function (cell) {\n \n //scope.updateAggregateCell();\n scope.rating = cell.rating;\n \n }\n\n\n\n scope.ratingChanged = function (score) {\n if(scope.editable){\n if(score== scope.rating){\n scope.rating = 0;\n } else {\n scope.rating = score;\n }\n scope.commitChangesDebounced();\n }\n }\n\n scope.saveChanges = function() {\n var newvalue = {\n rating: scope.rating\n }\n if (scope.type == 'project') {\n scope.model.projectAttribute.value = newvalue;\n scope.changeHandler({projectAttribute: scope.model.projectAttribute})\n } else if (scope.type == 'a3') {\n if(scope.model.a3TableCell){\n scope.model.a3TableCell.value = newvalue;\n }else {\n var a3TableCell = {\n id: 0,\n a3TableColumnId: columnId,\n a3Id: rowId,\n value: newvalue\n };\n scope.model.a3TableCell = a3TableCell; \n }\n scope.changeHandler({a3TableCell: scope.model.a3TableCell})\n }\n }\n\n // Debounce function so that save is called to often.\n scope.commitChangesDebounced = debounce(scope.saveChanges, 1000, false);\n\n\n }\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"smartRiskCell\", ['debounce',\n function (debounce) {\n return {\n templateUrl: 'smartRiskCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'type': '=',\n 'editable': '=',\n 'changeHandler': '&',\n }, \n link: function (scope, elem, attrs) {\n scope.score = null;\n scope.probability = null;\n scope.consequence = null;\n var rowId = null;\n var columnId = null;\n\n scope.subscribe(\"ProjectAttributeUpdated\", function (attribute) {\n if (scope.type == 'project' && attribute.projectId == rowId && attribute.projectBoardAttributeId == columnId) {\n if (attribute.value) {\n setValue(attribute.value);\n }\n }\n });\n scope.subscribe(\"A3TableCellUpdated\", function (tablecell) {\n if (scope.type == 'a3' && tablecell.a3Id == rowId && tablecell.a3TableColumnId == columnId) {\n if (tablecell.value) {\n setValue(tablecell.value);\n }\n }\n });\n\n scope.$watch('model', function (model) {\n var value = null;\n if (scope.type == 'project') { \n rowId = scope.model.project.id;\n columnId = scope.model.boardAttributeId;\n value = model.projectAttribute.value;\n } else if (scope.type == 'a3') {\n rowId = scope.model.a3.id;\n columnId = scope.model.columnId;\n if(model.a3TableCell){\n value = model.a3TableCell.value;\n } \n }\n if (value) {\n setValue(value);\n }\n model.getSortValue = function() {\n return scope.score;\n }\n });\n\n function calculateScore(){\n scope.score = scope.probability * scope.consequence;\n\n scope.background = \"inherit\";\n if(scope.score < 4){\n scope.background = '#5cb85c';\n } else if (scope.score >= 4 && scope.score < 10){ \n scope.background = '#f8c500';\n } else if (scope.score >= 10 && scope.score < 13){\n scope.background = '#f8ac59';\n } else if (scope.score > 12){\n scope.background = '#d9534f';\n }\n }\n var setValue = function (cell) {\n scope.probability = cell.probability;\n scope.consequence = cell.consequence;\n calculateScore();\n }\n\n\n\n scope.probabilityChanged = function (score) {\n scope.probability = score;\n calculateScore();\n scope.commitChangesDebounced();\n }\n\n scope.consequenceChanged = function (score) {\n scope.consequence = score;\n calculateScore();\n scope.commitChangesDebounced();\n }\n\n scope.saveChanges = function() {\n var value = {\n probability: scope.probability,\n consequence: scope.consequence\n }\n if(scope.type == 'project'){\n scope.model.projectAttribute.value = value;\n scope.changeHandler({projectAttribute: scope.model.projectAttribute})\n }else if (scope.type == 'a3') {\n if(scope.model.a3TableCell){\n scope.model.a3TableCell.value = value;\n }else {\n var a3TableCell = {\n id: 0,\n a3TableColumnId: columnId,\n a3Id: rowId,\n value: value\n };\n scope.model.a3TableCell = a3TableCell; \n }\n scope.changeHandler({a3TableCell: scope.model.a3TableCell})\n }\n }\n\n // Debounce function so that save is called to often.\n scope.commitChangesDebounced = debounce(scope.saveChanges, 1000, false);\n\n\n }\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"smartRowNoCell\", [\n function () {\n return {\n templateUrl: 'smartRowNoCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'rowindex': '<',\n },\n link: function (scope, elem, attrs) {\n scope.number = null;\n\n scope.$watch('rowindex', function (index) {\n if (index || index === 0) {\n scope.number = index + 1;\n }\n });\n\n scope.$watch('model', function (model) {\n if (model) {\n model.getSortValue = function () {\n return scope.number;\n }\n }\n });\n\n }\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"smartTargetCell\", ['$filter', '$translate','navigationService',\n function ($filter, $translate, navigationService) {\n return {\n templateUrl: 'smartTargetCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'type': '=',\n 'editable': '=',\n 'changeHandler': '&',\n },\n link: function (scope, elem, attrs) {\n scope.value = 0;\n \n scope.$watch(\"model\", function (model) {\n var value = null;\n if (scope.type == 'project') {\n value = model.projectAttribute.value; \n \n } else if (scope.type == 'a3') {\n if(model.a3TableCell) {\n value = model.a3TableCell.value; \n }\n }\n if (value) {\n scope.value = value.value;\n }\n model.getSortValue = function () {\n return scope.value;\n }\n });\n\n \n scope.subscribe(\"ProjectAttributeUpdated\", function (attribute) {\n if (scope.type == 'project' && attribute.projectId == scope.model.project.id && attribute.projectBoardAttributeId == scope.model.boardAttributeId) {\n if (attribute.value) {\n scope.value = attribute.value.value;\n }\n }\n });\n scope.subscribe(\"A3TableCellUpdated\", function (tablecell) {\n if (scope.type == 'a3' && tablecell.a3Id == scope.model.a3.id && tablecell.a3TableColumnId == scope.model.columnId) {\n if (tablecell.value) {\n scope.value = tablecell.value.value;\n }\n }\n });\n\n scope.setStatusValue = function (newValue) {\n scope.value = newValue;\n if (scope.type == 'project') {\n scope.model.projectAttribute.value = {\n value: newValue\n };\n scope.changeHandler({projectAttribute: scope.model.projectAttribute})\n } else if (scope.type == 'a3') {\n if(scope.model.a3TableCell){\n scope.model.a3TableCell.value = {\n value: newValue\n };\n }else {\n var a3TableCell = {\n id: 0,\n a3TableColumnId: scope.model.column.a3TableColumnId,\n a3Id: scope.model.a3.id,\n value: {\n value: newValue\n }\n };\n scope.model.a3TableCell = a3TableCell; \n }\n scope.changeHandler({a3TableCell: scope.model.a3TableCell})\n }\n\n }\n }\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"smartCommonTextCell\", ['$filter', 'debounce', 'projectService',\n function ($filter, debounce, projectService) {\n return {\n templateUrl: 'smartCommonTextCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'type': '=',\n 'editable': '=',\n 'changeHandler': '&',\n },\n link: function (scope, elem, attrs) {\n scope.text = \"\";\n scope.color = \"#676a6c\"; //\"#ffffff\";\n scope.background = \"inherit\";\n scope.customColorBackground = \"#a9a9a9\";\n scope.postIts = projectService().getPostIts();\n scope.usePredefinedLabels = false;\n scope.labels = [];\n\n var rowId = null;\n var columnId = null;\n\n scope.$watch('model', function (model) {\n var value = null;\n var settings = null;\n \n if (scope.type == 'project') {\n columnId = model.boardAttributeId;\n rowId = model.project.id;\n value = model.projectAttribute.value;\n settings = model.column.settings; \n \n } else if (scope.type == 'smarttable') {\n columnId = model.cell.smartTableColumnId;\n rowId = model.cell.smartTableRowId;\n value = model.cell.value;\n settings = model.column.settings; \n } else if (scope.type == 'a3') {\n columnId = model.columnId;\n rowId = model.a3.id;\n if(model.a3TableCell){\n value = model.a3TableCell.value;\n }\n settings = model.column.settings; \n }\n if (value) {\n setValue(value);\n } \n if (settings) {\n if(settings.usePredefinedLabels && settings.predefinedLabels){\n scope.labels = settings.predefinedLabels;\n scope.usePredefinedLabels = true;\n }\n }\n model.getSortValue = function () {\n if (scope.usePredefinedLabels && scope.labels) {\n var order = scope.labels.length;\n if(scope.selectedPostIt){\n var match = scope.labels.find(a => a.title == scope.text || a.text == scope.text)\n if (match) {\n order = scope.labels.indexOf(match);\n }\n }\n return order;\n }\n return scope.text;\n }\n });\n\n scope.autofocus = function(){\n setTimeout(function() {\n $(\".project-text-cell\").focus();\n }, 50 );\n }\n \n var setValue = function(value) {\n scope.background = value.background;\n scope.text = value.text;\n scope.color = value.color;\n var predefinedPostIt = $filter('filter')(scope.postIts, { background: scope.background });\n if (predefinedPostIt.length > 0) {\n scope.selectedPostIt = predefinedPostIt[0];\n } else //Custom color \n {\n scope.selectedPostIt = { title: \"custom\", background: scope.background };\n scope.customColorBackground = value.background;\n }\n }\n\n \n scope.subscribe(\"ProjectAttributeUpdated\", function (attribute) {\n if (scope.type == 'project' && attribute.projectId == scope.model.project.id && attribute.projectBoardAttributeId == scope.model.boardAttributeId) {\n if (attribute.value) {\n setValue(attribute.value);\n }\n }\n });\n scope.subscribe(\"A3TableCellUpdated\", function (tablecell) {\n if (scope.type == 'a3' && tablecell.a3Id == scope.model.a3.id && tablecell.a3TableColumnId == scope.model.columnId) {\n if (tablecell.value) {\n setValue(tablecell.value);\n }\n }\n });\n\n scope.subscribe(\"SmartTableCellUpdated\", function (cell) {\n if (cell.smartTableRowId == scope.model.cell.smartTableRowId && cell.smartTableColumnId == scope.model.cell.smartTableColumnId) {\n if (cell.value) {\n setValue(cell.value);\n }\n }\n });\n\n scope.subscribe(\"SmartCommonTextCellLabelUpdated\", function (value) {\n if (value.type == scope.type && columnId === value.columnId) {\n scope.labels = value.predefinedLabels;\n scope.usePredefinedLabels = value.usePredefinedLabels;\n if(scope.usePredefinedLabels){\n scope.labels = value.predefinedLabels;\n }\n }\n });\n \n\n scope.selectTextAndColor = function (postIt) {\n scope.selectedPostIt = postIt;\n if(postIt.title === 'default'){\n scope.text = \"\";\n scope.background = \"inherit\";\n scope.color = \"#676a6c\";\n } else {\n scope.background = postIt.background;\n scope.color = postIt.color; \n scope.text = postIt.title;\n }\n scope.commitChangesDebounced();\n }\n scope.selectColor = function (postIt) {\n scope.selectedPostIt = postIt;\n if(postIt.title === 'default'){\n scope.background = \"inherit\";\n scope.color = \"#676a6c\";\n } else {\n scope.background = postIt.background;\n scope.color = \"#ffffff\";\n }\n scope.commitChangesDebounced();\n }\n scope.selectCustomColor = function (color) {\n scope.selectedPostIt = { title: \"custom\", background: color };\n scope.background = color;\n scope.color = \"#ffffff\";\n scope.commitChangesDebounced();\n }\n scope.textChanged = function (text) {\n scope.text = text;\n scope.commitChangesDebounced();\n }\n\n scope.saveChanges = function() {\n var newvalue = {\n background: scope.background,\n color: scope.color,\n text: scope.text\n }\n if (scope.type == 'project') {\n scope.model.projectAttribute.value = newvalue;\n scope.changeHandler({projectAttribute: scope.model.projectAttribute})\n } else if (scope.type == 'smarttable') {\n scope.model.cell.value = newvalue;\n scope.changeHandler({cell: scope.model.cell})\n }else if (scope.type == 'a3') {\n if(scope.model.a3TableCell){\n scope.model.a3TableCell.value = newvalue;\n }else {\n var a3TableCell = {\n id: 0,\n a3TableColumnId: columnId,\n a3Id: rowId,\n value: newvalue\n };\n scope.model.a3TableCell = a3TableCell; \n }\n scope.changeHandler({a3TableCell: scope.model.a3TableCell})\n }\n }\n\n // Debounce function so that save is called to often.\n scope.commitChangesDebounced = debounce(scope.saveChanges, 1000, false);\n\n }\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"smarttableDateCell\", ['$filter', 'projectService',\n function ($filter, projectService) {\n return {\n templateUrl: 'smarttableDateCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'editable': '=',\n 'cellChangeHandler': '&',\n },\n link: function (scope, elem, attrs) {\n var defaultDateColor = \"#0099DE\";\n scope.color = defaultDateColor;\n scope.customColorBackground = \"#a9a9a9\";\n scope.postIts = projectService().getPostIts();\n scope.value = \"\";\n\n scope.update = function($event) {\n const date = $event.originalEvent.detail\n scope.value = date\n scope.saveChanges()\n }\n\n scope.$watch('model', function (model) {\n var value = scope.model.cell.value;\n if (value) {\n setValue(value);\n }\n model.getSortValue = function() {\n if (scope.value) {\n return scope.value;\n }\n return null;\n }\n });\n\n scope.subscribe(\"SmartTableCellUpdated\", function (cell) {\n if (cell.smartTableRowId == scope.model.cell.smartTableRowId && cell.smartTableColumnId == scope.model.cell.smartTableColumnId) {\n if (cell.value) {\n setValue(cell.value);\n }\n }\n });\n\n var setValue = function(value) {\n scope.background = value.background;\n if(value.value){\n scope.value = moment(value.value).toDate();\n } else {\n scope.value = \"\";\n }\n scope.color = value.color;\n var predefinedPostIt = $filter('filter')(scope.postIts, { background: scope.background });\n if (predefinedPostIt.length > 0) {\n scope.selectedPostIt = predefinedPostIt[0];\n } else //Custom color \n {\n scope.selectedPostIt = { title: \"custom\", background: scope.background };\n scope.customColorBackground = value.background;\n }\n }\n\n \n scope.selectColor = function (postIt) {\n scope.selectedPostIt = postIt;\n if(postIt.title === 'default'){\n scope.background = \"inherit\";\n scope.color = defaultDateColor;\n } else {\n scope.background = postIt.background;\n scope.color = \"#ffffff\";\n }\n scope.saveChanges();\n }\n scope.selectCustomColor = function (color) {\n scope.selectedPostIt = {title:\"custom\", background: color};\n scope.background = color;\n scope.color = \"#ffffff\";\n scope.saveChanges();\n }\n\n scope.saveChanges = function() {\n var value = {\n background: scope.background,\n color: scope.color,\n value: scope.value\n }\n scope.model.cell.value = value;\n scope.cellChangeHandler({cell: scope.model.cell})\n }\n }\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"smarttableLinkCell\", ['$filter', 'debounce', 'projectService',\n function ($filter, debounce, projectService) {\n return {\n templateUrl: 'smarttableLinkCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'editable': '=',\n 'cellChangeHandler': '&',\n 'adminmode': '='\n },\n link: function (scope, elem, attrs) {\n scope.url = \"\";\n scope.openInNewTab = true;\n scope.text = \"\";\n scope.color = \"#676a6c\"; //\"#ffffff\";\n scope.background = \"inherit\";\n scope.customColorBackground = \"#a9a9a9\";\n scope.postIts = projectService().getPostIts();\n\n scope.showDropdown = false;\n\n scope.usePredefinedLabels = false;\n scope.labels = [];\n var columnId = null;\n\n scope.$watch('model', function (model) {\n var value = model.cell.value;\n columnId = model.column.id;\n var settings = model.column.settings;\n \n if (value) {\n setValue(value);\n } \n model.getSortValue = function() {\n return scope.text;\n }\n });\n\n scope.autofocus = function(){\n setTimeout(function() {\n //$(elem).closest(\".smarttable-link-cell\").focus(); fungerer ikke\n $(\".smarttable-link-cell\").focus();\n \n }, 50 );\n }\n \n var setValue = function(value) {\n scope.background = value.background;\n scope.url = value.url;\n scope.openInNewTab = value.openInNewTab;\n scope.text = value.text;\n scope.color = value.color;\n var predefinedPostIt = $filter('filter')(scope.postIts, { background: scope.background });\n if (predefinedPostIt.length > 0) {\n scope.selectedPostIt = predefinedPostIt[0];\n } else //Custom color \n {\n scope.selectedPostIt = { title: \"custom\", background: scope.background };\n scope.customColorBackground = value.background;\n }\n }\n \n scope.subscribe(\"SmartTableCellUpdated\", function (cell) {\n if (cell.smartTableRowId == scope.model.cell.smartTableRowId && cell.smartTableColumnId == scope.model.cell.smartTableColumnId) {\n if (cell.value) {\n setValue(cell.value);\n }\n }\n });\n scope.selectColor = function (postIt) {\n scope.selectedPostIt = postIt;\n if(postIt.title === 'default'){\n scope.background = \"inherit\";\n scope.color = \"#676a6c\";\n } else {\n scope.background = postIt.background;\n scope.color = \"#ffffff\";\n }\n scope.commitChangesDebounced();\n }\n scope.selectCustomColor = function (color) {\n scope.selectedPostIt = { title: \"custom\", background: color };\n scope.background = color;\n scope.color = \"#ffffff\";\n scope.commitChangesDebounced();\n }\n scope.textChanged = function (text) {\n scope.text = text;\n scope.commitChangesDebounced();\n }\n scope.urlChanged = function (url) {\n if(scope.url === url) return;\n scope.url = url;\n scope.commitChangesDebounced();\n }\n\n scope.openChanged = function (open) {\n if(scope.openInNewTab === open) return;\n scope.openInNewTab = open;\n scope.commitChangesDebounced();\n }\n scope.saveChanges = function() {\n var value = {\n background: scope.background,\n color: scope.color,\n text: scope.text,\n url: scope.url,\n openInNewTab: scope.openInNewTab\n }\n scope.model.cell.value = value;\n scope.cellChangeHandler({cell: scope.model.cell})\n }\n\n // Debounce function so that save is called to often.\n scope.commitChangesDebounced = debounce(scope.saveChanges, 1000, false);\n\n }\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"smarttableNumberCell\", ['$filter', 'debounce', 'projectService','mathService',\n function ($filter, debounce, projectService, mathService) {\n return {\n templateUrl: 'smarttableNumberCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'editable': '=',\n 'cellChangeHandler': '&',\n }, \n link: function (scope, elem, attrs) {\n scope.number = null;\n scope.unit = null;\n scope.unitPlacement = \"right\";\n scope.color = \"#676a6c\"; //\"#ffffff\";\n scope.background = \"inherit\";\n scope.customColorBackground = \"#a9a9a9\";\n scope.postIts = projectService().getPostIts();\n var settings = null;\n\n scope.$watch('model', function (model) {\n var value = model.cell.value;\n \n settings = model.column.settings;\n if (settings) {\n if(settings.unit){\n scope.unit = settings.unit;\n if(settings.unitPlacement){\n scope.unitPlacement = settings.unitPlacement;\n }\n }\n if (settings.decimals !== null || settings.decimals !== undefined) {\n scope.decimals = settings.decimals;\n }\n }\n if (value) {\n setValue(value);\n } \n model.getSortValue = function() {\n return scope.number;\n }\n });\n\n scope.autofocus = function(){\n setTimeout(function() {\n //document.querySelector( \"input\" ).focus();\n $(\".project-text-cell\").focus();\n }, 50 );\n }\n \n var setValue = function(cell) {\n scope.background = cell.background;\n var number = cell.number;\n\n if (scope.decimals !== null && scope.decimals !== undefined) {\n scope.number = mathService().roundNumber(number, scope.decimals);\n }\n scope.number = number;\n\n scope.updateAggregateCell();\n \n scope.color = cell.color;\n var predefinedPostIt = $filter('filter')(scope.postIts, { background: scope.background });\n if (predefinedPostIt.length > 0) {\n scope.selectedPostIt = predefinedPostIt[0];\n } else //Custom color \n {\n scope.selectedPostIt = { title: \"custom\", background: scope.background };\n scope.customColorBackground = cell.background;\n }\n }\n scope.subscribe(\"SmartTableCellUpdated\", function (cell) {\n if (cell.smartTableRowId == scope.model.cell.smartTableRowId && cell.smartTableColumnId == scope.model.cell.smartTableColumnId) {\n if (cell.value) {\n setValue(cell.value);\n }\n }\n });\n\n scope.subscribe(\"SmartTableNumberCellUnitUpdated\", function (value) {\n if(scope.model.column.id === value.columnId){\n scope.unit = value.unit;\n }\n });\n scope.subscribe(\"SmartTableNumberCellUnitPlacementUpdated\", function (value) {\n if(scope.model.column.id === value.columnId){\n scope.unitPlacement = value.unitPlacement;\n }\n });\n\n scope.subscribe(\"SmartTableNumberCellDecimalUpdated\", function (value) {\n if(scope.model.column.id === value.columnId){\n scope.decimals = value.decimals;\n }\n });\n\n scope.selectColor = function (postIt) {\n scope.selectedPostIt = postIt;\n if(postIt.title === 'default'){\n scope.background = \"inherit\";\n scope.color = \"#676a6c\";\n } else {\n scope.background = postIt.background;\n scope.color = \"#ffffff\";\n }\n scope.commitChangesDebounced();\n }\n scope.selectCustomColor = function (color) {\n scope.selectedPostIt = { title: \"custom\", background: color };\n scope.background = color;\n scope.color = \"#ffffff\";\n scope.commitChangesDebounced();\n }\n scope.numberChanged = function (number) {\n if(scope.number === number) return;\n scope.number = number;\n scope.updateAggregateCell();\n scope.commitChangesDebounced();\n }\n\n scope.saveChanges = function() {\n var value = {\n background: scope.background,\n color: scope.color,\n number: scope.number\n }\n scope.model.cell.value = value;\n scope.cellChangeHandler({cell: scope.model.cell})\n }\n\n scope.sendEvent = function(){\n var payload = {\n smartTableColumnId: scope.model.column.id,\n smartTableRowId: scope.model.row.id,\n value: scope.number\n } \n scope.publish(\"SmartTableNumberCellUpdated\", payload);\n }\n\n scope.updateAggregateCell = debounce(scope.sendEvent, 1000, false);\n\n // Debounce function so that save is called to often.\n scope.commitChangesDebounced = debounce(scope.saveChanges, 1000, false);\n\n }\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"smarttableNumberCellAggregate\", ['$filter', 'mathService',\n function ($filter, mathService) {\n return {\n templateUrl: 'smarttableNumberCellAggregate.html',\n restrict: 'E',\n scope: {\n 'model': '='\n },\n link: function (scope, elem, attrs) {\n var smartTableColumnId = null;\n scope.numberCellAggregateValue = null;\n scope.aggregateType = \"SUM\";\n var valuePerRow = [];\n scope.decimals = null;\n scope.unit = null;\n scope.unitPlacement = \"right\";\n\n scope.$watch('model', function (model) {\n smartTableColumnId = model.id;\n if (model && model.settings) {\n var settings = model.settings;\n if(settings.aggregateType){\n scope.aggregateType = settings.aggregateType;\n }\n if(settings.dataSource && settings.dataSource.valueElement.unit == \"%\"){\n scope.aggregateType = \"AVERAGE\";\n }\n if(settings.unit){\n scope.unit = settings.unit;\n if(settings.unitPlacement){\n scope.unitPlacement = settings.unitPlacement;\n }\n }\n if(settings.decimals !== null || settings.decimals !== undefined){\n scope.decimals = settings.decimals;\n }\n }\n model.getSortValue = function() {\n return scope.numberCellAggregateValue;\n }\n });\n\n scope.subscribe(\"SmartTableNumberCellUpdated\", function (value) {\n if(smartTableColumnId === value.smartTableColumnId){\n updateValue(value);\n }\n });\n\n scope.subscribe(\"SmartTableNumberCellUnitUpdated\", function (value) {\n if(smartTableColumnId === value.columnId){\n scope.unit = value.unit;\n }\n });\n scope.subscribe(\"SmartTableNumberCellUnitPlacementUpdated\", function (value) {\n if(smartTableColumnId === value.columnId){\n scope.unitPlacement = value.unitPlacement;\n }\n });\n \n scope.subscribe(\"SmartTableNumberCellDecimalUpdated\", function (value) {\n if(smartTableColumnId === value.columnId){\n scope.decimals = value.decimals;\n calculateAggregateValue();\n }\n });\n\n scope.subscribe(\"SmartTableNumberCellAggregateTypeUpdated\", function (value) {\n if(smartTableColumnId === value.columnId){\n scope.aggregateType = value.aggregateType;\n calculateAggregateValue();\n }\n });\n\n scope.subscribe(\"SmartTableRowDeleted\", function (payLoad) {\n var existingValue = $filter('filter')(valuePerRow, { valuePerRow: payLoad.valuePerRow });\n\n if (existingValue && existingValue.length > 0) {\n var index = valuePerRow.indexOf(existingValue);\n valuePerRow.splice(index, 1);\n calculateAggregateValue();\n }\n });\n\n\n function updateValue(updatedValue) {\n\n var existingValue = $filter('filter')(valuePerRow, { smartTableRowId: updatedValue.smartTableRowId });\n\n if (existingValue && existingValue.length > 0) {\n var index = valuePerRow.indexOf(existingValue[0]);\n valuePerRow[index] = updatedValue;\n } else {\n valuePerRow.push(updatedValue);\n }\n calculateAggregateValue();\n }\n\n function calculateAggregateValue() {\n scope.numberCellAggregateValue = 0;\n var noOfCellWithValue = 0;\n for (var i = 0; i < valuePerRow.length; i++) {\n if (valuePerRow[i].value) {\n scope.numberCellAggregateValue = scope.numberCellAggregateValue + valuePerRow[i].value;\n noOfCellWithValue = noOfCellWithValue + 1;\n }\n }\n if (scope.aggregateType === \"AVERAGE\" && noOfCellWithValue > 0) {\n scope.numberCellAggregateValue = scope.numberCellAggregateValue / noOfCellWithValue;\n }\n\n if(scope.decimals !== null) {\n if(scope.decimals !== undefined) {\n scope.numberCellAggregateValue = mathService().roundNumber(scope.numberCellAggregateValue, scope.decimals);\n }\n }\n }\n }\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"smarttableOwnerCell\", ['smarttableService',\n function (smarttableService) {\n return {\n templateUrl: 'smarttableOwnerCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'editable': '=',\n 'cellChangeHandler': '&',\n 'users': '<'\n },\n link: function (scope, elem, attrs) {\n scope.displayName = \"\";\n scope.user = null;\n\n scope.$watch(\"users\", function (users) {\n if (!users) return;\n mapUser();\n });\n\n var mapUser = function() {\n if (scope.user === null && scope.model.row.ownerUserId && scope.users) {\n const matchingUser = scope.users.find(u => u.id == scope.model.row.ownerUserId)\n if (matchingUser) {\n scope.displayName = matchingUser.ownerDisplayName;\n scope.user = matchingUser;\n }\n }\n }\n\n scope.$watch(\"model\", function (model) {\n if (scope.model && scope.model.row) {\n if (scope.model.row.ownerUserId) {\n if (scope.users) {\n mapUser();\n } \n }\n }\n model.getSortValue = function() {\n if (scope.user) {\n return scope.user.fullName;\n }\n return null;\n }\n });\n\n scope.subscribe(\"SmartTableRowOwnerUpdated\", function (cell) {\n if (cell.id == scope.model.cell.smartTableRowId) {\n const matchingUser = scope.users.find(u => u.id == cell.ownerUserId);\n if (matchingUser) {\n scope.displayName = matchingUser.ownerDisplayName;\n scope.user = matchingUser;\n } else {\n scope.displayName = \"\";\n scope.user = null;\n }\n }\n });\n scope.clearSelectedUser = function () {\n var emptyUser = {\n userId : null,\n fullName: \"\",\n displayName: \"\"\n }\n scope.user = null;\n scope.selectUser(emptyUser);\n \n };\n scope.selectUser = function (user) {\n scope.user = user;\n scope.displayname = user.displayName;\n smarttableService().updateOwner(scope.model.cell.smartTableRowId, user).then(function (registeredowner) {\n });\n };\n }\n }\n }]);","angular\n .module('DigiLean')\n .directive(\"smarttablePersonCell\", ['$filter',\n function ($filter) {\n return {\n templateUrl: 'smarttablePersonCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'editable': '=',\n 'cellChangeHandler': '&',\n 'users': '<'\n },\n link: function (scope, elem, attrs) {\n scope.displayName = \"\";\n scope.$watch('model', function (model) {\n var value = scope.model.cell.value;\n if (value) {\n setValue(value);\n mapUser();\n }\n model.getSortValue = function() {\n if (scope.user) {\n return scope.user.fullName;\n }\n return null;\n }\n });\n\n var setValue = function (value) {\n scope.displayName = value.displayName;\n scope.user = value;\n }\n scope.subscribe(\"SmartTableCellUpdated\", function (cell) {\n if (cell.smartTableRowId == scope.model.cell.smartTableRowId && cell.smartTableColumnId == scope.model.cell.smartTableColumnId) {\n if (cell.value) {\n setValue(cell.value);\n }else {\n scope.displayName = \"\";\n scope.user = null;\n }\n }\n });\n scope.$watch(\"users\", function (users) {\n if (!users) return;\n mapUser();\n });\n\n var mapUser = function() {\n if (scope.user && scope.users) {\n var matchingUser = scope.users.find(u => u.userId == scope.user.userId)\n if (matchingUser) {\n scope.displayName = matchingUser.ownerDisplayName\n scope.user = matchingUser\n }\n }\n }\n\n scope.clearSelectedUser = function () {\n scope.selectUser(null);\n };\n\n scope.selectUser = function (user) {\n scope.user = user;\n scope.model.user = user;\n scope.model.cell.value = user;\n scope.cellChangeHandler({ cell: scope.model.cell })\n };\n }\n }\n }]);","angular\n .module('DigiLean')\n .directive(\"smarttableNameCell\", ['$filter', '$translate','smarttableService',\n function ($filter, $translate, smarttableService) {\n return {\n templateUrl: 'smarttableNameCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'editable': '=',\n 'id': '=',\n },\n link: function (scope, elem, attrs) {\n scope.name = \"\";\n scope.active = false;\n\n scope.$watch('model', function (model) {\n scope.name = model.row.name;\n model.getSortValue = function() {\n return scope.name;\n }\n });\n\n scope.subscribe(\"SmartTableRowNameUpdated\", function (row) {\n if (row.id == scope.model.cell.smartTableRowId) {\n if (row.name) {\n scope.name = row.name;\n } else {\n scope.name = \"\";\n }\n }\n });\n\n scope.setActive = function() {\n scope.active = true; \n setTimeout(function() {\n $(\".smarttable-name\").focus();\n }, 50 ); \n }\n scope.nameChanged = function(name) {\n scope.active = false; \n if(name !== scope.name){\n smarttableService().updateName(scope.model.cell.smartTableRowId, name).then(function (result) { \n });\n }\n\n }\n }\n }\n }]);\n","// Controller for the actual modal\nvar DigiLean = angular.module('DigiLean'); \nDigiLean.controller('teamTaskConfiguration', ['$scope', '$filter', '$uibModalInstance', '$translate', 'daysBetweenMeetings',\nfunction ($scope, $filter, $uibModalInstance, $translate, daysBetweenMeetings) {\n $scope.daysBetweenMeetings = daysBetweenMeetings;\n\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n\n $scope.ok = function () {\n $uibModalInstance.close($scope.daysBetweenMeetings);\n };\n}]);","angular\n .module('DigiLean')\n .directive(\"datasourceDailyKPITarget\", ['$filter',\n function ($filter) {\n return {\n templateUrl: 'datasourceDailyKPITarget.html',\n restrict: 'E',\n scope: {\n 'datasource': '=',\n 'settingsChangeHandler': '&'\n },\n link: function (scope, elem, attrs) {\n\n scope.operators = [\n { dbCode: \">=\", html: \">=\" },\n { dbCode: \">\", html: \">\" },\n { dbCode: \"<=\", html: \"<=\" },\n { dbCode: \"<\", html: \"<\" },\n ];\n\n scope.notValidExpression = false;\n scope.cannotDeleteTarget = false;\n\n scope.$watch('datasource', function (datasource) {\n // apply\n if (datasource) {\n if (datasource.targets) {\n scope.targets = datasource.targets;\n scope.orderedTargets = datasource.targets;\n } else {\n setDefaultTargets();\n }\n configureTargets();\n setupProgressBar();\n }\n });\n\n function configureTargets(){\n angular.forEach(scope.targets, function (target) {\n var operator = $filter('filter')(scope.operators, { dbCode: target.operator.dbCode }, true);\n if (operator.length > 0) {\n target.selectedOperator = operator[0];\n }\n });\n }\n function setDefaultTargets() {\n scope.targets = [\n {colorStyleClass: 'greencross-green',\n operator: { dbCode: \"<=\", html: \"<=\" },\n targetValue: 0},\n {colorStyleClass: 'greencross-yellow',\n operator: { dbCode: \"<=\", html: \">=\" },\n targetValue: 2},\n {colorStyleClass: 'greencross-red',\n operator: { dbCode: \">\", html: \">\" },\n targetValue: 2}\n ]\n scope.orderedTargets = scope.targets;\n }\n\n scope.targetValueChanged = function (target) {\n target.targetValue = target.targetValue.toString().replace(',', '.');\n reorderTargets();\n connectTargetToDatasource();\n setupProgressBar();\n }\n\n scope.operatorChanged = function (target, operator) {\n target.operator = operator;\n reorderTargets();\n setupProgressBar();\n }\n\n scope.colorChanged = function (target, colorStyleClass) {\n target.colorStyleClass = colorStyleClass;\n reorderTargets();\n setupProgressBar();\n }\n function connectTargetToDatasource() {\n scope.datasource.targets = scope.orderedTargets;\n }\n\n scope.addTarget = function(){\n scope.cannotDeleteTarget = false;\n var newTarget = \n {colorStyleClass: 'greencross-blue',\n operator: { dbCode: \"<=\", html: \">=\", sortOrder: 3},\n targetValue: 1};\n var operator = $filter('filter')(scope.operators, { dbCode: newTarget.operator.dbCode }, true);\n if (operator.length > 0) {\n newTarget.selectedOperator = operator[0];\n }\n scope.targets.push(newTarget);\n reorderTargets();\n setupProgressBar();\n }\n\n function getUndefinedTarget(){\n return {helpertarget:true, colorStyleClass: 'daily-kpi-gray',\n operator: { dbCode: \"\", html: \"\", sortOrder: 0},\n targetValue: ''};\n }\n function setupProgressBar(){\n scope.progressbarItems = [];\n var temp = [];\n\n // set undefined targets before and after all registered targets\n for(let i=0; i=0; z--){\n if(temp[z].colorStyleClass == 'daily-kpi-gray'){\n temp[z].colorStyleClass = temp[j].colorStyleClass;\n } \n }\n } else if(temp[j].operator.dbCode == '<='){\n if(j+2 < temp.length && parseFloat(temp[j].targetValue) == parseFloat(temp[j+2].targetValue)){\n temp[j+1].colorStyleClass = temp[j].colorStyleClass;\n }\n for(let z=j-1; z>=0; z--){\n if(temp[z].colorStyleClass == 'daily-kpi-gray'){\n temp[z].colorStyleClass = temp[j].colorStyleClass;\n } \n }\n }\n }\n\n // color undefined targets to the right if applicable\n for(let k=temp.length-1; k>0; k--){\n if(temp[k].operator.dbCode == '>'){ \n for(let x=k; x='){\n if(k-2 >= 0 && parseFloat(temp[k].targetValue) == parseFloat(temp[k-2].targetValue)){\n temp[k-1].colorStyleClass = temp[k].colorStyleClass;\n }\n for(let w=k+1; w=\") return 3;\n return 4;\n }\n\n function reorderTargets(){\n scope.notValidExpression = false;\n scope.orderedTargets = JSON.parse(JSON.stringify(scope.targets)); //Deep copy\n //scope.orderedTargets = scope.targets;\n scope.orderedTargets.sort(function (a, b) {\n if(a.targetValue == b.targetValue){\n var aOp = getOperatorSortOrder(a.operator);\n var bOp = getOperatorSortOrder(b.operator);\n if(aOp == bOp || (a.operator.dbCode == '<=' && b.operator.dbCode == '>=') || (a.operator.dbCode == '>=' && b.operator.dbCode == '<=')){\n scope.notValidExpression = true;\n }\n return aOp - bOp;\n } else {\n return a.targetValue - b.targetValue;\n }\n });\n connectTargetToDatasource(); \n }\n\n scope.delete = function (target) {\n if (scope.targets.length == 1) {\n // Must have at least one target\n scope.cannotDeleteTarget = true;\n \n } else {\n var index = scope.targets.indexOf(target);\n if (index > -1) {\n scope.targets.splice(index, 1);\n reorderTargets();\n connectTargetToDatasource();\n setupProgressBar();\n } \n }\n }\n\n }\n\n }\n }]);","angular\n .module('DigiLean')\n .controller(\"radarchartRegistrationController\", ['$scope', '$uibModalInstance', 'data',\n function ($scope, $uibModalInstance, data) {\n\n $scope.isAdminMode = false;\n $scope.data = data;\n\n $scope.setGoal = function (index, target) {\n $scope.data.goalData.data[index] = target;\n };\n \n $scope.setAssesment = function (index, target) {\n $scope.data.assesmentData.data[index] = target;\n };\n\n $scope.categoryNameChanged = function (index, name) {\n $scope.data.categories[index] = name;\n };\n\n $scope.deleteCategory = function (index) {\n $scope.data.categories.splice(index, 1);\n $scope.data.goalData.data.splice(index, 1);\n $scope.data.assesmentData.data.splice(index, 1);\n };\n\n $scope.addCategory = function () {\n $scope.data.categories.push(\"\"); //COMMON_CATEGORY\n $scope.data.goalData.push(\"10\");\n $scope.data.assesmentData.push(\"1\");\n };\n\n $scope.save = function () {\n $uibModalInstance.close($scope.data);\n };\n\n $scope.close = function () {\n $uibModalInstance.dismiss('cancel');\n }\n }]);","angular\n .module('DigiLean')\n .controller(\"cellCloneConfigController\", ['$scope', '$state', '$uibModalInstance', '$filter', 'smartcellService', 'projectService', 'settings',\n function ($scope, $state, $uibModalInstance, $filter, smartcellService, projectService, settings) {\n\n $scope.newid = null;\n $scope.projectId = settings.projectId;\n $scope.selectedProject = null;\n $scope.selectedExisting = null;\n $scope.projects = [];\n\n // TODO fjern id. Jobb kun med name!!!\n // $scope.existingid = null;\n\n $scope.choosenid = settings.smartCloneId;\n\n $scope.name = null;\n if (settings.smartCloneName) {\n $scope.name = settings.smartCloneName\n }\n\n\n\n projectService().getActiveProjects().then(function (projects) {\n $scope.projects = projects;\n if ($scope.projectId) {\n var projects = $filter('filter')($scope.projects, { id: $scope.projectId }, true);\n if (projects.length === 1) {\n $scope.selectedProject = projects[0];\n $scope.projectId = projects[0].id;\n }\n }\n });\n\n smartcellService().getClonedCellIdentificators(settings.visualizationType).then(function (result) {\n $scope.ids = result;\n if ($scope.ids && $scope.name) {\n var existing = $filter('filter')($scope.ids, $scope.name, true);\n if (existing.length === 1) {\n $scope.selectedExisting = existing[0];\n }\n }\n });\n /*\n $scope.setId = function (existing) {\n $scope.choosenid = existing.id;\n $scope.name = existing.name\n };*/\n\n $scope.setName = function (name) {\n //$scope.choosenid = 0;\n $scope.name = name;\n };\n\n $scope.useSingelValue = function () {\n $scope.projectId = null;\n };\n\n $scope.useProject = function () {\n if ($scope.selectedProject) {\n $scope.projectId = $scope.selectedProject.id;\n } else if ($scope.projects){\n $scope.selectedProject = $scope.projects[0];\n $scope.projectId = $scope.projects[0].id; \n }else {\n $scope.projectId = null;\n }\n };\n\n $scope.setProject = function (project) {\n $scope.projectId = project.id;\n };\n\n $scope.ok = function () {\n smartcellService().getProjectValueForClonedCell($scope.name, $scope.projectId).then(function (result) {\n if (result) {\n $uibModalInstance.close(result);\n } else { // No cell value exist for this combination\n var smartCloneCellValue =\n {\n id: 0,\n name: $scope.name,\n type: settings.visualizationType,\n projectId: $scope.projectId,\n value: {}\n }\n smartcellService().updateCloneValue(smartCloneCellValue).then(function (newCellValue) {\n $uibModalInstance.close(newCellValue);\n });\n }\n });\n \n };\n\n $scope.close = function () {\n $uibModalInstance.dismiss('cancel');\n };\n }]);\n","angular\n .module('DigiLean')\n .directive(\"smarttableProgressbar\", ['$filter', '$translate',\n function ($filter, $translate) {\n return {\n templateUrl: 'smarttableProgressbar.html',\n restrict: 'E',\n scope: {\n 'progress': '=',\n 'color': '=',\n },\n link: function (scope, elem, attrs) {\n scope.$watch('progress', function (value) {\n \n });\n scope.$watch('color', function (value) {\n \n });\n }\n }\n }]);\n","angular.module('DigiLean').factory('dataFilterService', ['$filter',\n function ($filter) {\n function dataFilterService() {\n\n function inList(value, list) {\n for (let index = 0; index < list.length; index++) {\n const element = list[index];\n if (value.toString() == element.toString()) {\n return true;\n }\n } \n return false;\n }\n\n function matchesFilter(value, filter) {\n var propertyValue = value[filter.sourceColumn];\n if (propertyValue === undefined) { //\n return false;\n }\n // Operator + items\n switch (filter.operator) {\n case \"InList\":\n // Validate in list\n return inList(propertyValue, filter.items);\n default:\n return true;\n }\n }\n return {\n /* value = DataValue, filters = Array[FilterElment] */\n matchesFilters: function (value, filters) {\n if (!filters) return true;\n if (filters.length == 0) return true;\n var status = true;\n filters.forEach(element => {\n if (!matchesFilter(value, element)) {\n status = false;\n } \n });\n return status;\n },\n\n\n };\n }\n return dataFilterService;\n }]);\n\n","angular\n .module('DigiLean')\n .directive(\"datasourceSearchFilter\", ['$filter', 'dataSourceService',\n function ($filter, dataSourceService) {\n return {\n templateUrl: 'dataSourceSearchFilter.html',\n restrict: 'E',\n scope: {\n 'filters': '<',\n 'datasources': '=',\n 'layoutdirection': '@',\n },\n link: function (scope, elem, attrs) {\n\n scope.tags = [];\n scope.isfiltered = false;\n\n\n scope.$watch('filters', function(){\n if(scope.filters && scope.filters.length > 0){\n scope.isfiltered = true;\n } else {\n scope.isfiltered = false;\n }\n })\n\n scope.$watch('datasources', function () {\n if (!scope.datasources) return;\n\n dataSourceService().getAllTags().then(function (tags) {\n scope.tags = tags;\n });\n });\n\n\n scope.filterTags = function (tag) {\n tag.isActive = !tag.isActive;\n filterDataSource();\n }\n\n scope.clearFilter = function(){\n scope.datasources.filteredList = scope.datasources.list;\n resetListFilter(scope.tags);\n scope.isfiltered = false;\n }\n\n function resetListFilter(list) {\n list.forEach(item => {\n item.isActive = false\n })\n }\n\n function filterDataSource() {\n scope.datasources.filteredList = scope.datasources.list;\n\n var filteredTags = $filter('filter')(scope.tags, { isActive: true }, true);\n if (filteredTags.length > 0) {\n scope.isfiltered = true;\n scope.datasources.filteredList = getFilteredListByTags(scope.datasources.filteredList, filteredTags);\n } else {\n scope.isfiltered = false; \n }\n }\n function getFilteredListByTags(list, filteredTags) {\n if (filteredTags.length === 0) return list;\n var filteredList = [];\n var filteredDataSourceIds = [];\n for (var j = 0; j < filteredTags.length; j++) {\n filteredDataSourceIds = filteredDataSourceIds.concat(filteredTags[j].dataSources);\n }\n for (var i = 0; i < list.length; i++) {\n if(valueInList(list[i].id, filteredDataSourceIds)){\n filteredList.push(list[i]);\n }\n }\n return filteredList;\n }\n function valueInList(property, list) {\n for (var i = 0; i < list.length; i++) {\n if (property === list[i]) return true;\n }\n return false;\n \n }\n }\n\n }\n }]);\n","angular\n.module('DigiLean')\n.directive(\"a3categorySelector\", ['$filter', 'a3Service', \n function ($filter, a3Service) {\n return {\n templateUrl: 'a3categoryselector.html',\n restrict: 'E',\n scope: {\n 'filters': '=',\n 'source': '=',\n 'filterChangeHandler': '&'\n },\n link: function (scope, elem, attrs) {\n scope.includeAll = true;\n\n function getCategoriesList() {\n a3Service().getCategories().then(function (categories) {\n scope.items = categories;\n applyFilter(); \n });\n }\n getCategoriesList();\n\n scope.$watch('source', function () {\n applyFilter();\n });\n\n\n function applyFilter(){\n if (scope.filters && scope.items) {\n\n var selectedFilter = scope.filters[0]; \n for (var k = 0; k < scope.items.length; k++) {\n var index = selectedFilter.items.indexOf(scope.items[k].id);\n if (index > -1){\n scope.items[k].include = true;\n } else {\n scope.items[k].include = false;\n } \n }\n\n var selected = $filter('filter')(scope.items, { include: true });\n if (selected.length === scope.items.length && selected.length === 0) {\n scope.includeAll = true;\n } else {\n scope.includeAll = false;\n }\n } else if (scope.items) {\n for (var i = 0; i < scope.items.length; i++) {\n scope.items[i].include = true; \n }\n }\n }\n\n scope.deselectAll = function (include) {\n for (var k = 0; k < scope.items.length; k++) {\n scope.items[k].include = include; \n }\n scope.modifyFilter();\n };\n\n scope.modifyFilter = function(){\n var selected = $filter('filter')(scope.items, { include: true });\n if(selected.length === scope.items.length){\n scope.includeAll = true;\n scope.filters = null;\n } else {\n scope.includeAll = false;\n var selectedItems = [];\n for(var i=0; i < selected.length; i++){\n selectedItems.push(selected[i].id);\n }\n scope.filters = [{\n sourceColumn: scope.source,\n operator: \"InList\",\n items: selectedItems\n }];\n }\n scope.filterChangeHandler({ updatedSourceColumn: scope.source, filter: scope.filters });\n };\n\n }\n }\n }]);\n","angular\n.module('DigiLean')\n.directive(\"a3templateSelector\", ['$filter', 'a3templateService', \n function ($filter, a3templateService) {\n return {\n templateUrl: 'a3templateselector.html',\n restrict: 'E',\n scope: {\n 'filters': '=',\n 'source': '=',\n 'filterChangeHandler': '&'\n },\n link: function (scope, elem, attrs) {\n scope.includeAll = true;\n\n function getList() {\n a3templateService().getList().then(function(templates) {\n scope.items = templates;\n applyFilter(); \n });\n }\n\n scope.$watch('source', function () {\n getList();\n });\n\n\n function applyFilter(){\n if (scope.filters && scope.items) {\n\n var selectedFilter = scope.filters[0]; \n for (var k = 0; k < scope.items.length; k++) {\n var index = selectedFilter.items.indexOf(scope.items[k].id);\n if (index > -1){\n scope.items[k].include = true;\n } else {\n scope.items[k].include = false;\n } \n }\n\n var selected = $filter('filter')(scope.items, { include: true });\n if (selected.length === scope.items.length && selected.length === 0) {\n scope.includeAll = true;\n } else {\n scope.includeAll = false;\n }\n } else if (scope.items) {\n for (var i = 0; i < scope.items.length; i++) {\n scope.items[i].include = true; \n }\n }\n }\n\n scope.deselectAll = function (include) {\n for (var k = 0; k < scope.items.length; k++) {\n scope.items[k].include = include; \n }\n scope.modifyFilter();\n };\n\n scope.modifyFilter = function(){\n var selected = $filter('filter')(scope.items, { include: true });\n if(selected.length === scope.items.length){\n scope.includeAll = true;\n scope.filters = null;\n } else {\n scope.includeAll = false;\n var selectedItems = [];\n for(var i=0; i < selected.length; i++){\n selectedItems.push(selected[i].id);\n }\n scope.filters = [{\n sourceColumn: scope.source,\n operator: \"InList\",\n items: selectedItems\n }];\n }\n scope.filterChangeHandler({ updatedSourceColumn: scope.source, filter: scope.filters });\n };\n\n }\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"areaSelector\", ['$filter', 'areaService', \n function ($filter, areaService) {\n return {\n templateUrl: 'areaselector.html',\n restrict: 'E',\n scope: {\n 'filters': '=',\n 'source': '=',\n 'filterChangeHandler': '&'\n },\n link: function (scope, elem, attrs) {\n scope.includeAll = true;\n\n function getAreaList() {\n areaService().getList().then(function (areas) {\n scope.areas = areas;\n applyFilter(); \n });\n }\n\n scope.$watch('source', function () {\n getAreaList();\n });\n\n\n function applyFilter(){\n if (scope.filters && scope.filters.length > 0 && scope.areas) {\n\n var identifiers = [];\n var selectedFilter = scope.filters[0];\n if (selectedFilter && selectedFilter.items.length > 0) {\n\n selectedFilter.items.forEach(item => {\n identifiers.push(parseInt(item));\n });\n selectedFilter.items = identifiers;\n }\n \n for (var k = 0; k < scope.areas.length; k++) {\n var index = -1;\n if(selectedFilter.items.length > 0 ){\n index = selectedFilter.items.indexOf(scope.areas[k].id);\n }\n if (index > -1){\n scope.areas[k].include = true;\n } else {\n scope.areas[k].include = false;\n } \n }\n\n var selected = $filter('filter')(scope.areas, { include: true });\n if (selected.length === scope.areas.length && selected.length === 0) {\n scope.includeAll = true;\n } else {\n scope.includeAll = false;\n }\n } else if (scope.areas) {\n for (var i = 0; i < scope.areas.length; i++) {\n scope.areas[i].include = true; \n }\n }\n }\n\n scope.deselectAll = function (include) {\n for (var k = 0; k < scope.areas.length; k++) {\n scope.areas[k].include = include; \n }\n scope.modifyFilter();\n };\n\n scope.modifyFilter = function(){\n var selected = $filter('filter')(scope.areas, { include: true });\n if(selected.length === scope.areas.length){\n scope.includeAll = true;\n scope.filters = null;\n } else {\n scope.includeAll = false;\n var selectedItems = [];\n for(var i=0; i < selected.length; i++){\n selectedItems.push(selected[i].id);\n }\n scope.filters = [{\n sourceColumn: scope.source,\n operator: \"InList\",\n items: selectedItems\n }];\n }\n scope.filterChangeHandler({ updatedSourceColumn: scope.source, filter: scope.filters });\n };\n\n }\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"boolSelector\", ['$filter', 'dataService',\n function ($filter, dataService) {\n return {\n templateUrl: 'boolselector.html',\n restrict: 'E',\n scope: {\n 'filters': '=',\n 'source': '=',\n 'filterChangeHandler': '&'\n },\n link: function (scope, elem, attrs) {\n scope.selected = \"all\";\n\n scope.$watch('filters', function () {\n \n applyFilter();\n });\n\n function applyFilter(){\n if(!scope.filters){\n scope.selected = \"all\";\n } else {\n if(scope.filters.length > 0 && scope.filters[0].items[0]){\n scope.selected = \"yes\"; \n } else {\n scope.selected = \"no\";\n }\n }\n }\n\n scope.modifyFilter = function(){\n if(scope.selected === \"yes\"){\n scope.filters = [{\n sourceColumn: scope.source,\n operator: \"InList\",\n items: [true]\n }]; \n } else if (scope.selected === \"no\"){\n scope.filters = [{\n sourceColumn: scope.source,\n operator: \"InList\",\n items: [false]\n }];\n } else {\n scope.filters = null;\n }\n scope.filterChangeHandler({ updatedSourceColumn: scope.source, filter: scope.filters });\n }\n }\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"consequenceSelector\", ['$filter', 'deviationService', \n function ($filter, deviationService) {\n return {\n templateUrl: 'consequenceSelector.html',\n restrict: 'E',\n scope: {\n 'filters': '=',\n 'source': '=',\n 'filterChangeHandler': '&'\n },\n link: function (scope, elem, attrs) {\n scope.includeAll = true;\n\n function getconsequenceList() {\n deviationService().getConsequences().then(function (consequences) {\n scope.consequences = consequences;\n applyFilter(); \n });\n };\n getconsequenceList();\n\n scope.$watch('source', function () {\n applyFilter();\n });\n\n\n function applyFilter(){\n if (scope.filters && scope.filters.length > 0 && scope.consequences) {\n var identifiers = [];\n var selectedFilter = scope.filters[0];\n if (selectedFilter && selectedFilter.items.length > 0) {\n\n selectedFilter.items.forEach(item => {\n identifiers.push(parseInt(item));\n });\n selectedFilter.items = identifiers;\n }\n \n for (var k = 0; k < scope.consequences.length; k++) {\n var index = -1;\n if(selectedFilter.items.length > 0 ){\n index = selectedFilter.items.indexOf(scope.consequences[k].id);\n }\n if (index > -1){\n scope.consequences[k].include = true;\n } else {\n scope.consequences[k].include = false;\n } \n }\n\n var selected = $filter('filter')(scope.consequences, { include: true });\n if (selected.length === scope.consequences.length && selected.length === 0) {\n scope.includeAll = true;\n } else {\n scope.includeAll = false;\n }\n } else if (scope.consequences) {\n for (var i = 0; i < scope.consequences.length; i++) {\n scope.consequences[i].include = true; \n }\n }\n }\n\n scope.deselectAll = function (include) {\n for (var k = 0; k < scope.consequences.length; k++) {\n scope.consequences[k].include = include; \n }\n scope.modifyFilter();\n };\n\n scope.modifyFilter = function(){\n var selected = $filter('filter')(scope.consequences, { include: true });\n if(selected.length === scope.consequences.length){\n scope.includeAll = true;\n scope.filters = null;\n } else {\n scope.includeAll = false;\n var selectedItems = [];\n for(var i=0; i < selected.length; i++){\n selectedItems.push(selected[i].id);\n }\n scope.filters = [{\n sourceColumn: \"lossTypeId\",\n operator: \"InList\",\n items: selectedItems\n }];\n }\n scope.filterChangeHandler({ updatedSourceColumn: \"lossTypeId\", filter: scope.filters });\n };\n\n }\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"datasourceFilter\", ['$filter', '$translate', 'dataService',\n function ($filter, $translate, dataService) {\n return {\n templateUrl: 'dataSourceFilter.html',\n restrict: 'E',\n scope: {\n 'filters': '=',\n 'datasource': '=',\n 'filterChanged': '&',\n },\n link: function (scope, elem, attrs) {\n\n \n scope.$watch('filters', function () {\n if (scope.datasource && scope.filters) {\n setFilter();\n }\n });\n\n scope.$watch('datasource', function () {\n if (scope.datasource && scope.filters) {\n setFilter();\n }\n });\n\n scope.updateFilter = function (updatedSourceColumn, filters) {\n var hasFilter = $filter('filter')(scope.filters, { sourceColumn: updatedSourceColumn }, true);\n // Remove existing filter connected to sourceColumn\n if (hasFilter && hasFilter.length > 0) {\n // Remove existing filter\n angular.forEach(hasFilter, function (filter, key) {\n var index = scope.filters.indexOf(hasFilter[key]);\n scope.filters.splice(index, 1);\n });\n }\n angular.forEach(filters, function (filter) {\n if (filter) {\n if(scope.filters === undefined){\n scope.filters = [];\n }\n // Custom field check\n if (isCustomField(updatedSourceColumn)) {\n var customFieldId = getCustomFieldId(updatedSourceColumn);\n filter.customFieldId = customFieldId;\n }\n scope.filters.push(filter);\n }\n });\n\n scope.filterChanged({\n filters: scope.filters\n });\n };\n \n\n function setFilter() {\n if (scope.filters && scope.datasource) {\n \n for (var i = 0; i < scope.datasource.elements.length; i++) {\n setFilterForElement(scope.datasource.elements[i], scope.filters);\n }\n setFilterForMainValueElement(scope.datasource, scope.filters);\n }\n }\n \n\n function setFilterForMainValueElement(datasource, filters) {\n var filter = $filter('filter')(filters, { sourceColumn: \"value\" });\n if (filter.length > 0) {\n datasource.valueElement.filter = filter;\n } else {\n datasource.valueElement.filter = null;\n }\n }\n \n function setFilterForElement(element, filters) {\n var elementFilters = $filter('filter')(filters, { sourceColumn: element.sourceColumn }, true);\n if (elementFilters.length === 0) {\n element.filter = null;\n }\n if (elementFilters.length > 0) {\n element.filter = [];\n angular.forEach(elementFilters, function (filterItem) {\n \n element.filter.push(filterItem);\n });\n }\n }\n\n function isCustomField(sourceColumn) {\n if (sourceColumn.length >= 12) {\n if (sourceColumn.substring(0,11) == \"customField\") return true;\n }\n }\n\n function getCustomFieldId(sourceColumn) {\n return sourceColumn.substring(12, (sourceColumn.length + 1))\n }\n }\n }\n }]);","angular\n .module('DigiLean')\n .directive(\"datalistSelector\", ['$filter', 'dataListService',\n function ($filter, dataListService) {\n return {\n templateUrl: 'datalistselector.html',\n restrict: 'E',\n scope: {\n 'filters': '=',\n 'source': '=',\n 'listid': '@',\n 'filterChangeHandler': '&'\n },\n link: function (scope, elem, attrs) {\n scope.includeAll = true;\n scope.$watch('source', function () {\n var listOptions = { includeDeletedItems: false };\n var source = source;\n \n dataListService().getItems(scope.listid, listOptions).then(function (list) {\n if (list) {\n scope.listItems = list;\n applyFilter();\n }\n });\n\n });\n\n\n function applyFilter() {\n if (scope.filters && scope.filters.length > 0) {\n\n var identifiers = [];\n var selectedFilter = scope.filters[0];\n if (selectedFilter && selectedFilter.items.length > 0) {\n\n selectedFilter.items.forEach(item => {\n identifiers.push(parseInt(item));\n });\n selectedFilter.items = identifiers;\n }\n\n for (var k = 0; k < scope.listItems.length; k++) {\n var index = -1;\n if (selectedFilter.items.length > 0) {\n index = selectedFilter.items.indexOf(scope.listItems[k].id);\n }\n if (index > -1) {\n scope.listItems[k].include = true;\n } else {\n scope.listItems[k].include = false;\n }\n }\n\n var selected = $filter('filter')(scope.listItems, { include: true });\n if (selected.length === scope.listItems.length && selected.length === 0) {\n scope.includeAll = true;\n } else {\n scope.includeAll = false;\n }\n } else if (scope.listItems) {\n for (var i = 0; i < scope.listItems.length; i++) {\n scope.listItems[i].include = true;\n }\n }\n }\n\n scope.deselectAll = function (include) {\n for (var k = 0; k < scope.listItems.length; k++) {\n scope.listItems[k].include = include;\n }\n scope.modifyFilter();\n };\n\n scope.modifyFilter = function () {\n var selected = $filter('filter')(scope.listItems, { include: true });\n if (selected.length === scope.listItems.length) {\n scope.includeAll = true;\n scope.filters = null;\n } else {\n scope.includeAll = false;\n var selectedItems = [];\n for (var i = 0; i < selected.length; i++) {\n selectedItems.push(selected[i].id);\n }\n scope.filters = [{\n sourceColumn: scope.source,\n operator: \"InList\",\n items: selectedItems\n }];\n }\n scope.filterChangeHandler({ updatedSourceColumn: scope.source, filter: scope.filters });\n };\n\n }\n }\n }]);\n","// Controller for the actual modal\nvar DigiLean = angular.module('DigiLean'); \nDigiLean.controller('dataseriesselectorModalController', ['$scope', '$uibModalInstance', 'layoutService', 'dataSeries',\n function ($scope, $uibModalInstance, layoutService, dataSeries) {\n\n $scope.grafcolor = layoutService().getColors();\n $scope.dataSeries = dataSeries;\n $scope.selectedDataSource = null;\n\n $scope.selectedSerie = null;\n $scope.edit = false;\n\n $scope.selectedIndex = -1; // Whatever the default selected index is, use -1 for no selection\n\n $scope.selectedManualValue = null;\n $scope.selectedName = \"\";\n $scope.selectedManualType = \"integer\";\n $scope.editManual = false;\n\n\n $scope.opened = [];\n\n $scope.changeDate = function(selectedSerie, $event) {\n const date = $event.originalEvent.detail\n selectedSerie.datavalue = date\n }\n\n $scope.itemClicked = function ($index) {\n $scope.selectedIndex = $index;\n };\n\n function setPreSelectedGraphColor() {\n $scope.selectedGraphColor = $scope.grafcolor[0];\n if (!$scope.dataSeries) {\n $scope.dataSeries = [];\n } else if ($scope.dataSeries.length > 0) {\n $scope.selectedGraphColor = $scope.grafcolor[$scope.dataSeries.length];\n }\n }\n setPreSelectedGraphColor();\n\n $scope.resetRegistration = function () {\n setPreSelectedGraphColor();\n $scope.selectedDataSource = null;\n\n $scope.selectedSerie = {\n datasource: null,\n name: \"\",\n graphtype: \"column\",\n width: 0,\n graphcolor: $scope.selectedGraphColor,\n accumulated: false,\n filters: [] \n } \n\n $scope.selectedIndex = -1;\n\n //Manual serie variables\n $scope.selectedManualValue = null;\n $scope.selectedName = \"\";\n $scope.selectedManualType = \"integer\";\n\n }\n $scope.resetRegistration();\n\n $scope.sortableOptions = {\n clone: false,\n itemMoved: function (event) {\n }\n };\n\n $scope.newSerie = function () {\n $scope.edit = true;\n $scope.editManual = false;\n setPreSelectedGraphColor();\n $scope.selectedDataSource = null;\n\n $scope.selectedSerie = {\n datasource: null,\n name: \"\",\n graphtype: \"column\",\n graphcolor: $scope.selectedGraphColor,\n accumulated: false,\n filters: [] \n }\n \n $scope.dataSeries.unshift($scope.selectedSerie);\n \n $scope.selectedIndex = 0; //first element in \"Chosen dataseries\"\n\n } \n\n $scope.modifyManualDatatype = function (serie){\n if (serie.datatype === \"date\") {\n serie.axis = \"x\";\n serie.graphtype = \"shortdash-x\";\n } else {\n serie.axis = \"y\";\n serie.graphtype = \"shortdash-y\";\n }\n }\n\n $scope.addManualSerie = function () {\n $scope.editManual = true;\n $scope.edit = false;\n var datavalue = $scope.selectedManualValue;\n var name = $scope.selectedName;\n var graphtype = \"shortdash-y\";\n var graphcolor = $scope.selectedGraphColor;\n var axis = \"y\";\n if ($scope.selectedManualType === \"date\") {\n axis = \"x\";\n graphtype = \"shortdash-x\";\n }\n\n $scope.selectedSerie = {\n manual: true,\n datatype: $scope.selectedManualType,\n datavalue: datavalue,\n axis: axis,\n name: name,\n graphtype: graphtype,\n graphcolor: graphcolor,\n accumulated: $scope.accumulated\n }\n $scope.dataSeries.unshift($scope.selectedSerie);\n \n $scope.selectedIndex = 0; //first element in \"Chosen dataseries\"\n };\n\n $scope.deleteSerie = function (serie) {\n var index = $scope.dataSeries.indexOf(serie);\n if (index > -1) {\n $scope.dataSeries.splice(index, 1);\n if(serie === $scope.selectedSerie){\n $scope.edit = false;\n $scope.editManual = false;\n $scope.selectedIndex = -1;\n }\n }\n }\n\n $scope.modifySelectedSerie = function (serie) {\n if(serie.manual){\n $scope.editManual = true;\n $scope.edit = false;\n } else {\n $scope.edit = true;\n $scope.editManual = false;\n } \n $scope.selectedSerie = serie;\n }\n\n $scope.ok = function () {\n $uibModalInstance.close($scope.dataSeries);\n };\n\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n\n }]);","angular\n.module('DigiLean')\n.directive(\"deviationseveritySelector\", ['$filter', 'deviationService', \n function ($filter, deviationService) {\n return {\n templateUrl: 'deviationseverityselector.html',\n restrict: 'E',\n scope: {\n 'filters': '=',\n 'source': '=',\n 'filterChangeHandler': '&'\n },\n link: function (scope, elem, attrs) {\n scope.includeAll = true;\n scope.severities = [];\n\n function getList() {\n scope.severities = [\n {\n label: deviationService().getSeverityText(\"1\"),\n severity: \"1\"\n },\n {\n label: deviationService().getSeverityText(\"2\"),\n severity: \"2\"\n },\n {\n label: deviationService().getSeverityText(\"3\"),\n severity: \"3\"\n },\n {\n label: deviationService().getSeverityText(\"\"),\n severity: \"\"\n }\n ];\n applyFilter();\n }\n\n scope.$watch('source', function () {\n getList();\n });\n\n\n function applyFilter(){\n if (scope.filters && scope.severities) {\n var selectedFilter = scope.filters[0];\n for (var k = 0; k < scope.severities.length; k++) {\n var index = selectedFilter.items.indexOf(scope.severities[k].severity);\n if (index > -1){\n scope.severities[k].include = true;\n } else {\n scope.severities[k].include = false;\n } \n }\n\n var selected = $filter('filter')(scope.severities, { include: true });\n if (selected.length === scope.severities.length && selected.length === 0) {\n scope.includeAll = true;\n } else {\n scope.includeAll = false;\n }\n } else if (scope.severities) {\n for (var i = 0; i < scope.severities.length; i++) {\n scope.severities[i].include = true; \n }\n }\n }\n\n scope.deselectAll = function (include) {\n for (var k = 0; k < scope.severities.length; k++) {\n scope.severities[k].include = include; \n }\n scope.modifyFilter();\n };\n\n scope.modifyFilter = function(){\n var selected = $filter('filter')(scope.severities, { include: true });\n if(selected.length === scope.severities.length){\n scope.includeAll = true;\n scope.filters = null;\n } else {\n scope.includeAll = false;\n var selectedItems = [];\n for(var i=0; i < selected.length; i++){\n selectedItems.push(selected[i].severity);\n }\n scope.filters = [{\n sourceColumn: scope.source,\n operator: \"InList\",\n items: selectedItems\n }];\n }\n scope.filterChangeHandler({ updatedSourceColumn: scope.source, filter: scope.filters });\n };\n\n }\n }\n }]);\n","\nangular\n .module('DigiLean')\n .directive(\"deviationtypeSelector\", ['$filter', 'deviationService', \n function ($filter, deviationService) {\n return {\n templateUrl: 'deviationtypeselector.html',\n restrict: 'E',\n scope: {\n 'filters': '=',\n 'source': '=',\n 'filterChangeHandler': '&'\n },\n link: function (scope, elem, attrs) {\n scope.includeAll = true;\n\n function getTypeList() {\n deviationService().getAllDeviationTypes().then(function (types) {\n scope.items = types;\n applyFilter(); \n });\n }\n \n\n scope.$watch('source', function () {\n getTypeList();\n });\n\n\n function applyFilter(){\n if (scope.filters && scope.items) {\n\n var identifiers = [];\n var selectedFilter = scope.filters[0];\n if (selectedFilter && selectedFilter.items.length > 0) {\n\n selectedFilter.items.forEach(item => {\n identifiers.push(parseInt(item));\n });\n selectedFilter.items = identifiers;\n } \n for (var k = 0; k < scope.items.length; k++) {\n var index = selectedFilter.items.indexOf(scope.items[k].id);\n if (index > -1){\n scope.items[k].include = true;\n } else {\n scope.items[k].include = false;\n } \n }\n\n var selected = $filter('filter')(scope.items, { include: true });\n if (selected.length === scope.items.length && selected.length === 0) {\n scope.includeAll = true;\n } else {\n scope.includeAll = false;\n }\n } else if (scope.items) {\n for (var i = 0; i < scope.items.length; i++) {\n scope.items[i].include = true; \n }\n }\n }\n\n scope.deselectAll = function (include) {\n for (var k = 0; k < scope.items.length; k++) {\n scope.items[k].include = include; \n }\n scope.modifyFilter();\n };\n\n scope.modifyFilter = function(){\n var selected = $filter('filter')(scope.items, { include: true });\n if(selected.length === scope.items.length){\n scope.includeAll = true;\n scope.filters = null;\n } else {\n scope.includeAll = false;\n var selectedItems = [];\n for(var i=0; i < selected.length; i++){\n selectedItems.push(selected[i].id);\n }\n scope.filters = [{\n sourceColumn: scope.source,\n operator: \"InList\",\n items: selectedItems\n }];\n }\n scope.filterChangeHandler({ updatedSourceColumn: scope.source, filter: scope.filters });\n };\n\n }\n }\n }]);","angular\n.module('DigiLean')\n.directive(\"problemcategorySelector\", ['$filter', 'deviationService', \n function ($filter, deviationService) {\n return {\n templateUrl: 'problemcategoryselector.html',\n restrict: 'E',\n scope: {\n 'filters': '=',\n 'source': '=',\n 'selectableElements': '=',\n 'filterChangeHandler': '&'\n },\n link: function (scope, elem, attrs) {\n scope.includeAll = true;\n\n\n function getCategoriesList() {\n if(scope.selectableElements && scope.selectableElements.length > 0){\n scope.items = scope.selectableElements;\n applyFilter();\n } else {\n deviationService().getProblemCategories().then(function (categories) {\n scope.items = categories;\n applyFilter(); \n });\n }\n }\n \n scope.$watch('source', function () {\n getCategoriesList();\n });\n\n function applyFilter(){\n if (scope.filters && scope.items) {\n var identifiers = [];\n var selectedFilter = scope.filters[0];\n if (selectedFilter && selectedFilter.items.length > 0) {\n\n selectedFilter.items.forEach(item => {\n identifiers.push(parseInt(item));\n });\n selectedFilter.items = identifiers;\n } \n for (var k = 0; k < scope.items.length; k++) {\n var index = selectedFilter.items.indexOf(scope.items[k].id);\n if (index > -1){\n scope.items[k].include = true;\n } else {\n scope.items[k].include = false;\n } \n }\n\n var selected = $filter('filter')(scope.items, { include: true });\n if (selected.length === scope.items.length && selected.length === 0) {\n scope.includeAll = true;\n } else {\n scope.includeAll = false;\n }\n } else if (scope.items) {\n for (var i = 0; i < scope.items.length; i++) {\n scope.items[i].include = true; \n }\n }\n }\n\n scope.deselectAll = function (include) {\n for (var k = 0; k < scope.items.length; k++) {\n scope.items[k].include = include; \n }\n if(include){\n scope.modifyFilter();\n } \n };\n\n scope.modifyFilter = function(){\n var selected = $filter('filter')(scope.items, { include: true });\n if(selected.length == 0){ //if no items are selected then all item should be included. It is not possible to filter zero items\n scope.includeAll = true;\n scope.filters = null;\n for (var k = 0; k < scope.items.length; k++) {\n scope.items[k].include = true; \n }\n } else if(selected.length === scope.items.length && scope.items.length != 1){ \n scope.includeAll = true;\n scope.filters = null;\n } else {\n scope.includeAll = false;\n var selectedItems = [];\n for(var i=0; i < selected.length; i++){\n selectedItems.push(selected[i].id);\n }\n scope.filters = [{\n sourceColumn: scope.source,\n operator: \"InList\",\n items: selectedItems\n }];\n }\n scope.filterChangeHandler({ updatedSourceColumn: scope.source, filter: scope.filters });\n };\n\n }\n }\n }]);\n","angular\n.module('DigiLean')\n.directive(\"problemreasonSelector\", ['$filter', 'deviationService', \n function ($filter, deviationService) {\n return {\n templateUrl: 'problemreasonselector.html',\n restrict: 'E',\n scope: {\n 'filters': '=',\n 'source': '=',\n 'items': '=',\n 'filterChangeHandler': '&'\n },\n link: function (scope, elem, attrs) {\n scope.includeAll = true;\n\n function getReasonList() {\n if(!scope.items){\n deviationService().getCauses().then(function (causes) {\n scope.items = causes;\n applyFilter(); \n });\n } else {\n applyFilter();\n }\n }\n \n scope.$watch('source', function () {\n getReasonList();\n });\n\n function applyFilter(){\n if (scope.filters && scope.items) {\n var identifiers = [];\n var selectedFilter = scope.filters[0];\n if (selectedFilter && selectedFilter.items.length > 0) {\n\n selectedFilter.items.forEach(item => {\n identifiers.push(parseInt(item));\n });\n selectedFilter.items = identifiers;\n } \n for (var k = 0; k < scope.items.length; k++) {\n var index = selectedFilter.items.indexOf(scope.items[k].id);\n if (index > -1){\n scope.items[k].include = true;\n } else {\n scope.items[k].include = false;\n } \n }\n\n var selected = $filter('filter')(scope.items, { include: true });\n if (selected.length === scope.items.length && selected.length === 0) {\n scope.includeAll = true;\n } else {\n scope.includeAll = false;\n }\n } else if (scope.items) {\n for (var i = 0; i < scope.items.length; i++) {\n scope.items[i].include = true; \n }\n }\n }\n\n scope.deselectAll = function (include) {\n for (var k = 0; k < scope.items.length; k++) {\n scope.items[k].include = include; \n }\n if(include){\n scope.modifyFilter();\n } \n };\n\n scope.modifyFilter = function(){\n var selected = $filter('filter')(scope.items, { include: true });\n if(selected.length == 0){ //if no items are selected then all item should be included. It is not possible to filter zero items\n scope.includeAll = true;\n scope.filters = null;\n for (var k = 0; k < scope.items.length; k++) {\n scope.items[k].include = true; \n }\n } else if(selected.length === scope.items.length){ \n scope.includeAll = true;\n scope.filters = null;\n } else {\n scope.includeAll = false;\n var selectedItems = [];\n for(var i=0; i < selected.length; i++){\n selectedItems.push(selected[i].id);\n }\n scope.filters = [{\n sourceColumn: scope.source,\n operator: \"InList\",\n items: selectedItems\n }];\n }\n scope.filterChangeHandler({ updatedSourceColumn: scope.source, filter: scope.filters });\n };\n\n }\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"improvementcategorySelector\", ['$filter', 'suggestionService',\n function ($filter, suggestionService) {\n return {\n templateUrl: 'improvementcategoryselector.html',\n restrict: 'E',\n scope: {\n 'filters': '=',\n 'source': '=',\n 'filterChangeHandler': '&'\n },\n link: function (scope, elem, attrs) {\n scope.includeAll = true;\n\n function getCategoriesList() {\n suggestionService().getCategories().then(function (categories) {\n scope.items = categories;\n applyFilter();\n });\n }\n getCategoriesList();\n\n scope.$watch('source', function () {\n applyFilter();\n });\n\n\n function applyFilter() {\n if (scope.filters && scope.items) {\n var identifiers = [];\n var selectedFilter = scope.filters[0];\n if (selectedFilter && selectedFilter.items.length > 0) {\n\n selectedFilter.items.forEach(item => {\n identifiers.push(parseInt(item));\n });\n selectedFilter.items = identifiers;\n }\n for (var k = 0; k < scope.items.length; k++) {\n var index = selectedFilter.items.indexOf(scope.items[k].id);\n if (index > -1) {\n scope.items[k].include = true;\n } else {\n scope.items[k].include = false;\n }\n }\n\n var selected = $filter('filter')(scope.items, { include: true });\n if (selected.length === scope.items.length && selected.length === 0) {\n scope.includeAll = true;\n } else {\n scope.includeAll = false;\n }\n } else if (scope.items) {\n for (var i = 0; i < scope.items.length; i++) {\n scope.items[i].include = true;\n }\n }\n }\n\n scope.deselectAll = function (include) {\n for (var k = 0; k < scope.items.length; k++) {\n scope.items[k].include = include;\n }\n scope.modifyFilter();\n };\n\n scope.modifyFilter = function () {\n var selected = $filter('filter')(scope.items, { include: true });\n if (selected.length === scope.items.length) {\n scope.includeAll = true;\n scope.filters = null;\n } else {\n scope.includeAll = false;\n var selectedItems = [];\n for (var i = 0; i < selected.length; i++) {\n selectedItems.push(selected[i].id);\n }\n /* Skal filter være en tabell, eller vet vi på dette tidspunktet at det er kun filter som gjelder asset?\n scope.filters = [{\n sourceColumn: \"assetId\",\n operator: \"InList\",\n items: selectedItems\n }];*/\n scope.filters = [{\n sourceColumn: \"categoryId\",\n operator: \"InList\",\n items: selectedItems\n }];\n }\n scope.filterChangeHandler({ updatedSourceColumn: \"categoryId\", filter: scope.filters });\n };\n\n }\n }\n }]);\n","angular\n.module('DigiLean')\n.directive(\"prioritystatusSelector\", ['$filter', 'suggestionService', \n function ($filter, suggestionService) {\n return {\n templateUrl: 'prioritystatusselector.html',\n restrict: 'E',\n scope: {\n 'filters': '=',\n 'source': '=',\n 'filterChangeHandler': '&'\n },\n link: function (scope, elem, attrs) {\n scope.includeAll = true;\n scope.priorities = [];\n\n function getPriorityList() {\n scope.priorities = [\n {\n label: suggestionService().getPriorityStatusText(1),\n priorityStatus: 1\n },\n {\n label: suggestionService().getPriorityStatusText(2),\n priorityStatus: 2\n },\n {\n label: suggestionService().getPriorityStatusText(3),\n priorityStatus: 3\n },\n {\n label: suggestionService().getPriorityStatusText(4),\n priorityStatus: 4\n }\n ];\n applyFilter();\n }\n\n scope.$watch('source', function () {\n getPriorityList();\n });\n\n\n function applyFilter(){\n if (scope.filters && scope.priorities) {\n\n var identifiers = [];\n var selectedFilter = scope.filters[0];\n if (selectedFilter && selectedFilter.items.length > 0) {\n\n selectedFilter.items.forEach(item => {\n identifiers.push(parseInt(item));\n });\n selectedFilter.items = identifiers;\n } \n for (var k = 0; k < scope.priorities.length; k++) {\n var index = selectedFilter.items.indexOf(scope.priorities[k].priorityStatus);\n if (index > -1){\n scope.priorities[k].include = true;\n } else {\n scope.priorities[k].include = false;\n } \n }\n\n var selected = $filter('filter')(scope.priorities, { include: true });\n if (selected.length === scope.priorities.length && selected.length === 0) {\n scope.includeAll = true;\n } else {\n scope.includeAll = false;\n }\n } else if (scope.priorities) {\n for (var i = 0; i < scope.priorities.length; i++) {\n scope.priorities[i].include = true; \n }\n }\n }\n\n scope.deselectAll = function (include) {\n for (var k = 0; k < scope.priorities.length; k++) {\n scope.priorities[k].include = include; \n }\n scope.modifyFilter();\n };\n\n scope.modifyFilter = function(){\n var selected = $filter('filter')(scope.priorities, { include: true });\n if(selected.length === scope.priorities.length){\n scope.includeAll = true;\n scope.filters = null;\n } else {\n scope.includeAll = false;\n var selectedItems = [];\n for(var i=0; i < selected.length; i++){\n selectedItems.push(selected[i].priorityStatus);\n }\n scope.filters = [{\n sourceColumn: \"priorityStatus\",\n operator: \"InList\",\n items: selectedItems\n }];\n }\n scope.filterChangeHandler({ updatedSourceColumn: \"priorityStatus\", filter: scope.filters });\n };\n\n }\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"numberSelector\", ['$filter', '$translate','dataService',\n function ($filter, $translate, dataService) {\n return {\n templateUrl: 'numberselector.html',\n restrict: 'E',\n scope: {\n 'filters': '=',\n 'source': '=',\n 'filterChangeHandler': '&'\n },\n link: function (scope, elem, attrs) {\n scope.operator1 = \"\";\n scope.operator2 = \"\";\n\n scope.valueoperator1 = \"\";\n scope.valueoperator2 = \"\";\n\n scope.$watch('source', function () {\n applyFilter();\n });\n\n scope.operator1option = [\n {\n translatedText: $translate.instant('DASHBOARD_LESS_THAN'),\n dbCode: \"LessThan\"\n },{\n translatedText: $translate.instant('DASHBOARD_GREATER_THAN_OR_EQUAL'), \n dbCode: \"GreaterThanOrEquals\"\n },\n {\n translatedText: $translate.instant('DASHBOARD_GREATER_THAN'),\n dbCode: \"GreaterThan\"\n }\n ];\n\n scope.operator2option = [\n {\n translatedText: $translate.instant('DASHBOARD_LESS_THAN_OR_EQUAL'),\n dbCode: \"LessThanOrEquals\"\n },\n {\n translatedText: $translate.instant('DASHBOARD_LESS_THAN'),\n dbCode: \"LessThan\"\n },\n {\n translatedText: $translate.instant('DASHBOARD_GREATER_THAN'),\n dbCode: \"GreaterThan\"\n }\n ];\n\n scope.clearOperator1 = function(){\n scope.operator1 = \"\";\n scope.valueoperator1 = \"\";\n scope.modifyFilter();\n }\n\n scope.clearOperator2 = function(){\n scope.operator2 = \"\";\n scope.valueoperator2 = \"\";\n scope.modifyFilter();\n }\n\n function applyFilter(){\n if(!scope.filters){\n scope.operator1 = \"\";\n scope.operator2 = \"\";\n } else {\n if(scope.filters[0]){\n scope.operator1 = $filter('filter')(scope.operator1option, { dbCode: scope.filters[0].operator }, true)[0];\n scope.valueoperator1 = scope.filters[0].items[0]; \n }\n if (scope.filters[1]) {\n scope.operator2 = $filter('filter')(scope.operator2option, { dbCode: scope.filters[1].operator }, true)[0];\n scope.valueoperator2 = scope.filters[1].items[0]; \n }\n }\n }\n\n scope.modifyFilter = function(){\n if(scope.operator1 !== \"\"){\n scope.filters = [{\n sourceColumn: scope.source,\n operator: scope.operator1.dbCode,\n items: [scope.valueoperator1]\n }];\n if(scope.operator2 !== \"\"){\n var filter2 = {\n sourceColumn: scope.source,\n operator: scope.operator2.dbCode,\n items: [scope.valueoperator2]\n };\n scope.filters.push(filter2);\n } \n } else {\n scope.filters = null;\n }\n scope.filterChangeHandler({ updatedSourceColumn: scope.source, filter: scope.filters });\n }\n }\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"projectSelector\", ['$filter', 'projectService', \n function ($filter, projectService) {\n return {\n templateUrl: 'projectSelector.html',\n restrict: 'E',\n scope: {\n 'filters': '=',\n 'source': '=',\n 'filterChangeHandler': '&'\n },\n link: function (scope, elem, attrs) {\n scope.includeAll = true;\n\n function getProjectList() {\n projectService().getList().then(function (projects) {\n scope.projects = projects;\n applyFilter(); \n });\n };\n getProjectList();\n\n scope.$watch('source', function () {\n applyFilter();\n });\n\n\n function applyFilter(){\n if (scope.filters && scope.filters.length > 0 && scope.projects) {\n \n // make sure filter items are ints\n \n var projetIdentifiers = [];\n var selectedFilter = scope.filters[0];\n if (selectedFilter && selectedFilter.items.length > 0) {\n \n selectedFilter.items.forEach(item => {\n projetIdentifiers.push(parseInt(item));\n });\n selectedFilter.items = projetIdentifiers;\n }\n \n for (var k = 0; k < scope.projects.length; k++) {\n var index = -1;\n if(selectedFilter.items.length > 0 ){\n index = selectedFilter.items.indexOf(scope.projects[k].id);\n }\n if (index > -1){\n scope.projects[k].include = true;\n } else {\n scope.projects[k].include = false;\n } \n }\n\n var selected = $filter('filter')(scope.projects, { include: true });\n if (selected.length === scope.projects.length && selected.length === 0) {\n scope.includeAll = true;\n } else {\n scope.includeAll = false;\n }\n } else if (scope.projects) {\n for (var i = 0; i < scope.projects.length; i++) {\n scope.projects[i].include = true; \n }\n }\n }\n\n scope.deselectAll = function (include) {\n for (var k = 0; k < scope.projects.length; k++) {\n scope.projects[k].include = include; \n }\n scope.modifyFilter();\n };\n\n scope.modifyFilter = function(){\n var selected = $filter('filter')(scope.projects, { include: true });\n if(selected.length === scope.projects.length){\n scope.includeAll = true;\n scope.filters = null;\n } else {\n scope.includeAll = false;\n var selectedItems = [];\n for(var i=0; i < selected.length; i++){\n selectedItems.push(selected[i].id);\n }\n scope.filters = [{\n sourceColumn: \"projectId\",\n operator: \"InList\",\n items: selectedItems\n }];\n }\n scope.filterChangeHandler({ updatedSourceColumn: \"projectId\", filter: scope.filters });\n };\n\n }\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"strategygoalSelector\", ['$filter', 'strategyService', \n function ($filter, strategyService) {\n return {\n templateUrl: 'strategygoalSelector.html',\n restrict: 'E',\n scope: {\n 'filters': '=',\n 'source': '=',\n 'filterChangeHandler': '&'\n },\n link: function (scope, elem, attrs) {\n scope.includeAll = true;\n\n function getList() {\n strategyService().getBreakthroughObjectives().then(function (goals) {\n scope.goals = goals;\n applyFilter(); \n });\n };\n getList();\n\n scope.$watch('source', function () {\n applyFilter();\n });\n\n\n function applyFilter(){\n if (scope.filters && scope.filters.length > 0 && scope.goals) {\n \n // make sure filter items are ints\n \n var projetIdentifiers = [];\n var selectedFilter = scope.filters[0];\n if (selectedFilter && selectedFilter.items.length > 0) {\n \n selectedFilter.items.forEach(item => {\n projetIdentifiers.push(parseInt(item));\n });\n selectedFilter.items = projetIdentifiers;\n }\n \n for (var k = 0; k < scope.goals.length; k++) {\n var index = -1;\n if(selectedFilter.items.length > 0 ){\n index = selectedFilter.items.indexOf(scope.goals[k].id);\n }\n if (index > -1){\n scope.goals[k].include = true;\n } else {\n scope.goals[k].include = false;\n } \n }\n\n var selected = $filter('filter')(scope.goals, { include: true });\n if (selected.length === scope.goals.length && selected.length === 0) {\n scope.includeAll = true;\n } else {\n scope.includeAll = false;\n }\n } else if (scope.goals) {\n for (var i = 0; i < scope.goals.length; i++) {\n scope.goals[i].include = true; \n }\n }\n }\n\n scope.deselectAll = function (include) {\n for (var k = 0; k < scope.goals.length; k++) {\n scope.goals[k].include = include; \n }\n scope.modifyFilter();\n };\n\n scope.modifyFilter = function(){\n var selected = $filter('filter')(scope.goals, { include: true });\n if(selected.length === scope.goals.length){\n scope.includeAll = true;\n scope.filters = null;\n } else {\n scope.includeAll = false;\n var selectedItems = [];\n for(var i=0; i < selected.length; i++){\n selectedItems.push(selected[i].id);\n }\n scope.filters = [{\n sourceColumn: \"strategyGoalId\",\n operator: \"InList\",\n items: selectedItems\n }];\n }\n scope.filterChangeHandler({ updatedSourceColumn: \"strategyGoalId\", filter: scope.filters });\n };\n\n }\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"stringSelector\", ['$filter', '$translate', 'dataService',\n function ($filter, $translate, dataService) {\n return {\n templateUrl: 'stringselector.html',\n restrict: 'E',\n scope: {\n 'filters': '=',\n 'source': '=',\n 'filterChangeHandler': '&'\n },\n link: function (scope, elem, attrs) {\n\n \n scope.$watch('source', function () {\n applyFilter();\n });\n\n scope.operatorChanged = function (item, operator) {\n item.operator = operator.dbCode;\n }\n\n scope.operator1option = [\n {\n translatedText: $translate.instant('DASHBOARD_CONTAINS'),\n dbCode: \"Contains\"\n }, {\n translatedText: $translate.instant('DASHBOARD_NOT_CONTAIN'),\n dbCode: \"NotContain\"\n }\n ];\n\n scope.add = function () {\n if (!scope.filters) scope.filters = [];\n var filterItem = {\n sourceColumn: scope.source,\n operator: scope.operator1option[0].dbCode,\n selectedOperator: scope.operator1option[0],\n text: \"\"\n };\n scope.filters.push(filterItem);\n }\n\n scope.delete = function (item) {\n var index = scope.filters.indexOf(item);\n if (index != -1) {\n scope.filters.splice(index, 1);\n updateSettings();\n }\n }\n\n function updateSettings() {\n var filters = [];\n if (scope.filters) {\n for (var i = 0; i < scope.filters.length; i++) {\n filters.push({\n sourceColumn: scope.source,\n operator: scope.filters[i].selectedOperator.dbCode,\n items: [scope.filters[i].text]\n });\n }\n }\n scope.filterChangeHandler({ updatedSourceColumn: scope.source, filter: filters });\n }\n\n function applyFilter() {\n if (!scope.filters) return;\n \n for (var i = 0; i < scope.filters.length; i++) {\n scope.filters[i].selectedOperator = $filter('filter')(scope.operator1option, { dbCode: scope.filters[i].operator })[0],\n scope.filters[i].text = scope.filters[i].items[0];\n }\n\n }\n\n scope.modifyFilter = function (filter) {\n updateSettings();\n }\n }\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"tasktagSelector\", ['$filter', '$translate', 'dataService',\n function ($filter, $translate, dataService) {\n return {\n templateUrl: 'tasktagselector.html',\n restrict: 'E',\n scope: {\n 'filters': '=',\n 'source': '=',\n 'filterChangeHandler': '&'\n },\n link: function (scope, elem, attrs) {\n\n \n scope.$watch('source', function () {\n applyFilter();\n });\n\n scope.operatorChanged = function (operator) {\n updateSettings();\n }\n\n scope.operator1option = [\n {\n translatedText: $translate.instant('DASHBOARD_CONTAINS'),\n dbCode: \"Contains\"\n }\n ];\n\n scope.selectedOperator = scope.operator1option[0];\n scope.selectedText = \"\";\n\n \n scope.add = function () {\n if (!scope.filters) scope.filters = [];\n var filterItem = {\n sourceColumn: scope.source,\n operator: scope.operator1option[0].dbCode,\n selectedOperator: scope.operator1option[0],\n text: \"\"\n };\n scope.filters.push(filterItem);\n }\n\n scope.delete = function (item) {\n var index = scope.filters.indexOf(item);\n if (index != -1) {\n scope.filters.splice(index, 1);\n updateSettings();\n }\n }\n\n function updateSettings() {\n var filters = [];\n if(scope.selectedText != \"\"){\n filters.push({\n sourceColumn: scope.source,\n operator: scope.selectedOperator.dbCode,\n items: [scope.selectedText]\n });\n }\n scope.filterChangeHandler({ updatedSourceColumn: scope.source, filter: filters });\n }\n\n function applyFilter() {\n if (!scope.filters) return;\n scope.selectedText = scope.filters[0].items[0];\n }\n\n scope.modifyFilter = function () {\n updateSettings();\n }\n }\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"unitSelector\", ['$filter', 'deviationService', \n function ($filter, deviationService) {\n return {\n templateUrl: 'unitSelector.html',\n restrict: 'E',\n scope: {\n 'filters': '=',\n 'source': '=',\n 'filterChangeHandler': '&'\n },\n link: function (scope, elem, attrs) {\n scope.includeAll = true;\n\n function getList() {\n scope.units = deviationService().getConsequenceUnit();\n applyFilter(); \n };\n getList();\n\n scope.$watch('source', function () {\n applyFilter();\n });\n\n\n function applyFilter(){\n if (scope.filters && scope.filters.length > 0 && scope.units) {\n \n var identifiers = [];\n var selectedFilter = scope.filters[0];\n if (selectedFilter && selectedFilter.items.length > 0) {\n\n selectedFilter.items.forEach(item => {\n identifiers.push(parseInt(item));\n });\n selectedFilter.items = identifiers;\n }\n for (var k = 0; k < scope.units.length; k++) {\n var index = -1;\n if(selectedFilter.items.length > 0 ){\n index = selectedFilter.items.indexOf(scope.units[k].id);\n }\n if (index > -1){\n scope.units[k].include = true;\n } else {\n scope.units[k].include = false;\n } \n }\n\n var selected = $filter('filter')(scope.units, { include: true });\n if (selected.length === scope.units.length && selected.length === 0) {\n scope.includeAll = true;\n } else {\n scope.includeAll = false;\n }\n } else if (scope.units) {\n for (var i = 0; i < scope.units.length; i++) {\n scope.units[i].include = true; \n }\n }\n }\n\n scope.deselectAll = function (include) {\n for (var k = 0; k < scope.units.length; k++) {\n scope.units[k].include = include; \n }\n scope.modifyFilter();\n };\n\n scope.modifyFilter = function(){\n var selected = $filter('filter')(scope.units, { include: true });\n if(selected.length === scope.units.length){\n scope.includeAll = true;\n scope.filters = null;\n } else {\n scope.includeAll = false;\n var selectedItems = [];\n for(var i=0; i < selected.length; i++){\n selectedItems.push(selected[i].id);\n }\n scope.filters = [{\n sourceColumn: \"unit\",\n operator: \"InList\",\n items: selectedItems\n }];\n }\n scope.filterChangeHandler({ updatedSourceColumn: \"unit\", filter: scope.filters });\n };\n\n }\n }\n }]);\n","\nangular\n .module('DigiLean')\n .directive(\"excelImportValues\", ['$filter', '$uibModal', 'dataService', 'dataSourceService',\n function ($filter, $uibModal, dataService, dataSourceService) {\n return {\n templateUrl: 'excelImportValues.html',\n restrict: 'E',\n scope: {\n 'datasourceId': '@',\n },\n link: function (scope, elem, attrs) {\n scope.$watch('datasourceId', function (dataSourceId) {\n if (!dataSourceId)\n return;\n scope.uploadPath = \"/excel/importdatavalues/\" + dataSourceId;\n dataSourceService().get(dataSourceId).then(function (dataSource) {\n scope.dataSource = dataSource;\n })\n });\n\n scope.fileParsed = function(result) {\n scope.result = result;\n }\n }\n }\n }]);\n","var DigiLean = angular.module('DigiLean');\n\nDigiLean.directive(\"latestDataValue\", ['dataService',\n function (dataService) {\n return {\n templateUrl: 'latestDataValue.html',\n restrict: 'E',\n scope: {\n 'datasourceId': '<',\n },\n link: function (scope, elem, attrs) {\n scope.value = null;\n scope.$watch('datasourceId', function (datasourceId) {\n if (!datasourceId) return;\n var options = {\n numberOfValues : 1,\n sortOrder : \"DESC\"\n }\n dataService().getLatestValues(datasourceId, options).then(function(value){\n if (value.length == 1) {\n scope.value = value[0];\n }\n \n });\n });\n }\n }\n }]);\n","var DigiLean = angular.module('DigiLean');\nDigiLean.controller('timeframeSelectorModal', ['$scope', '$rootScope', '$filter', '$uibModalInstance', '$translate', 'timePeriod',\n function ($scope, $rootScope, $filter, $uibModalInstance, $translate, timePeriod) {\n //$scope.selected = \"all\";\n $scope.timePeriod = timePeriod;\n $scope.showTimeSelector = false;\n $scope.change = function (selected) {\n $scope.selected = selected;\n $scope.showTimeSelector = false;\n if (selected ==\"all\"){\n $scope.timePeriod.timeframe = \"all\"; \n } else if (selected ==\"last\"){\n $scope.timePeriod.timeframe = \"last\"; \n } else {\n $scope.timePeriod.timeframe = \"all\";\n $scope.showTimeSelector = true;\n }\n $scope.options = {\n timePeriod: $scope.timePeriod\n };\n }\n if($scope.timePeriod.timeframe === \"all\"){\n $scope.selected = \"all\";\n $scope.change($scope.selected);\n } else if($scope.timePeriod.timeframe === \"last\"){\n $scope.selected = \"last\";\n } else {\n $scope.selected = \"timeframe\"; \n $scope.showTimeSelector = true;\n }\n\n $scope.options = {\n timePeriod: $scope.timePeriod\n };\n\n \n $scope.periodChangedHandler = function (timePeriod) {\n\n if (!timePeriod.timeframe) return;\n if ($scope.options.timePeriod && $scope.options.timePeriod.timeframe === timePeriod.timeframe && timePeriod.timeframe != \"custom\") return;\n\n if(timePeriod.timeframe == \"custom\" && timePeriod.period.to == $scope.options.timePeriod.period.to && timePeriod.period.from == $scope.options.timePeriod.period.from) return;\n $scope.options = {\n timePeriod: timePeriod\n };\n\n }\n\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n\n $scope.ok = function () {\n $uibModalInstance.close($scope.options.timePeriod);\n };\n\n }]);","var DigiLean = angular.module('DigiLean');\n\nDigiLean.directive(\"unitLabel\", [\n function () {\n return {\n templateUrl: 'unitLabel.html',\n restrict: 'E',\n scope: {\n 'unitcode': '<',\n },\n link: function (scope, elem, attrs) {\n \n }\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"deviationCategoriesSelector\", ['$filter',\n function ($filter) {\n return {\n templateUrl: 'deviationCategoriesSelector.html',\n restrict: 'E',\n scope: {\n 'categories': '=',\n 'selectedCategories': '=',\n },\n link: function (scope, element, attrs) {\n scope.$watch(\"categories\", function (categories) {\n setSelectedCategories();\n });\n\n scope.$watch(\"selectedCategories\", function () {\n // retrieve and match with categories.\n setSelectedCategories();\n });\n\n function setSelectedCategories() {\n if (!scope.categories) return;\n if (!scope.selectedCategories) return;\n for (let index = 0; index < scope.categories.length; index++) {\n const category = scope.categories[index];\n var isSelected = $filter('filter')(scope.selectedCategories, { id: category.id }, true);\n if (isSelected.length == 0) {\n category.isSelected = false;\n } else {\n category.isSelected = true;\n }\n // also match subcategories\n for (let index = 0; index < category.children.length; index++) {\n const subCategory = category.children[index];\n var isSelected = $filter('filter')(scope.selectedCategories, { id: subCategory.id }, true);\n if (isSelected.length == 0) {\n subCategory.isSelected = false;\n } else {\n subCategory.isSelected = true;\n }\n \n }\n }\n }\n\n scope.toggleCategory = function(category) {\n // Mark parent as selected\n if (category.isSelected) {\n addSelectedCategory(category);\n } else {\n removeSelectedCategory(category);\n if (category.children) {\n for (let index = 0; index < category.children.length; index++) {\n const subCategory = category.children[index];\n subCategory.isSelected = false;\n removeSelectedCategory(subCategory);\n }\n }\n }\n\n }\n scope.toggleSubCategory = function(subCategory) {\n // Mark parent as selected\n var parent = $filter('filter')(scope.categories, { id: subCategory.parentId }, true);\n if (parent.length > 0) {\n parent[0].isSelected = true;\n addSelectedCategory(parent[0]);\n }\n if (subCategory.isSelected) {\n addSelectedCategory(subCategory);\n } else {\n removeSelectedCategory(subCategory);\n\n }\n }\n\n function addSelectedCategory(category) {\n var exists = $filter('filter')(scope.selectedCategories, { id: category.id }, true);\n if (exists.length == 0) {\n scope.selectedCategories.push(category);\n }\n }\n\n function removeSelectedCategory(category) {\n var exists = $filter('filter')(scope.selectedCategories, { id: category.id }, true);\n if (exists.length > 0) {\n var index = scope.selectedCategories.indexOf(exists[0]);\n scope.selectedCategories.splice(index, 1);\n }\n }\n\n }\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"deviationList\", ['$filter', '$translate',\n function ($filter, $translate) {\n return {\n templateUrl: 'deviationList.html',\n restrict: 'E',\n scope: {\n\n },\n link: function (scope, elem, attrs) {\n scope.filterChanged = function (filter) {\n scope.params.filter = filter\n }\n scope.params = {\n \n };\n\n scope.listOptions = {\n showFilter : true,\n showFileGenerators: true,\n showArchived: true\n }\n }\n\n }\n }]);\n","var DigiLean = angular.module('DigiLean');\n\nDigiLean.directive(\"deviationCauseSummary\", ['$translate', 'deviationService', 'dataService','debounce',\n function ($translate, deviationService, dataService, debounce) {\n return {\n templateUrl: 'deviationCauseSummary.html',\n restrict: 'E',\n scope: {\n 'isAdminMode': '=',\n 'timeframe': '@',\n 'settings': '=',\n 'settingsChangeHandler': '&'\n },\n link: function (scope, elem, attrs) {\n\n scope.filters = null;\n var causeSummaryData = null;\n var drilledDown = false;\n var countTranslated = $translate.instant('COMMON_COUNT');\n var accumulatedTranslated = $translate.instant('DASHBOARD_ACCUMULATED');\n var recordingTranslated = $translate.instant('DEVIATION_NUMBER_OF_DEVIATIONS');\n\n scope.periodChangedHandler = function (timePeriod) {\n if (!timePeriod.timeframe) return;\n if (scope.timePeriod && scope.timePeriod.period.from === timePeriod.period.from && scope.timePeriod.period.to === timePeriod.period.to) return;\n scope.timePeriod = timePeriod;\n scope.options.timePeriod = timePeriod;\n loadData();\n // if adminmode, then save settings\n if (scope.isAdminMode) {\n scope.updateSettings();\n }\n }\n\n scope.updateSettings = function () {\n var componentSettings = {\n timePeriod: scope.options.timePeriod,\n };\n scope.settingsChangeHandler({ settings: componentSettings });\n }\n\n scope.$watch('timeframe', function (timeframe) {\n scope.setTimePeriodDebounced(timeframe, null);\n });\n\n\n // Default options\n var timeSettings = {\n timeframe: \"YTD\",\n useDefaultTimeframes: true,\n timeframes: [],\n period: null,\n getTimePeriod: function () {\n return {\n useDefaultTimeframes: timeSettings.useDefaultTimeframes,\n timeframes: timeSettings.timeframes,\n timeframe: timeSettings.timeframe,\n period: timeSettings.period\n }\n },\n setTimePeriod: function (timeframe, period) {\n timeSettings.timeframe = timeframe;\n timeSettings.period = period;\n // debounce, to make sure not starting loading several timeframes.\n scope.options = {\n timePeriod: timeSettings.getTimePeriod()\n }\n }\n }\n scope.setTimePeriodDebounced = debounce(timeSettings.setTimePeriod, 100, false);\n // Default options\n scope.setTimePeriodDebounced(timeSettings.timeframe, timeSettings.period);\n\n function loadData() {\n if (!scope.timePeriod || !scope.timePeriod.period) return;\n var options = {TimePeriod:scope.timePeriod.period,\n Filters: scope.filters}\n deviationService().getSummaryOfCauses(options).then(function (data) {\n causeSummaryData = data;\n drawChart(data);\n resizeChart();\n });\n }\n\n scope.subscribe(\"DeviationCreated\", function (deviation) {\n loadData();\n });\n\n // Dashboard Settings handling\n scope.$watch('settings', function (settings) {\n scope.filters = null;\n if (settings) {\n if (settings.timePeriod) {\n scope.setTimePeriodDebounced(settings.timePeriod.timeframe, settings.timePeriod.period);\n }\n if (settings.filters) {\n scope.filters = settings.filters;\n }\n loadData();\n } else {\n loadData();\n }\n });\n\n\n function getDeviations(columnOrderNo){\n//TODO implement use getDeviationsByFilter\");\n\n }\n\n // Draw options\n var categoryChart\n var paddingRight = 30;\n var paddingBottom = 100;\n function resizeChart() {\n var host = $(elem).closest(\".grid-stack-item-content\");\n if (host.length == 0)\n host = $(elem).closest(\".modal-body\")\n \n if (host.length == 0) return;\n var width = host.width();\n var height = host.height();\n if (categoryChart)\n categoryChart.setSize(width - paddingRight, height - paddingBottom, true);\n }\n scope.$on(\"widget-resized\", function (event, args) {\n resizeChart();\n });\n\n function drawChart(data) {\n\n var categories = [];\n var count = [];\n var accumulated = [];\n\n for (var i = 0; i < data.length; i++) {\n var currentItem = data[i];\n categories.push(currentItem.title);\n count.push(currentItem.count);\n accumulated.push(currentItem.accumulated);\n\n }\n\n var renderElement = $(elem).find(\".cause-summary-chart\")[0];\n categoryChart = Highcharts.chart({\n chart: {\n renderTo: renderElement,\n },\n title: {\n text: ''\n },\n credits: {\n enabled: false\n },\n legend: {\n layout: 'horizontal',\n verticalAlign: 'bottom'\n },\n exporting: { enabled: false },\n tooltip: {\n formatter: function () {\n if (this.series.name === accumulatedTranslated) {\n return this.y + '%';\n }\n //return this.x + ':
' + '# ' + this.y.toString().replace('.', ',') + ' ' + '
' + 'Percent ' + Math.round((this.y / 28) * 100) + '% ';\n return this.x + ':
' + '# ' + this.y + '';\n }\n },\n xAxis: {\n categories: categories,\n crosshair: true\n },\n yAxis: [{\n title: {\n text: recordingTranslated\n }\n }, {\n labels: {\n formatter: function () {\n return this.value + '%';\n }\n },\n max: 100,\n min: 0,\n opposite: true,\n plotLines: [{\n color: 'red',\n dashStyle: 'shortdash',\n value: 80,\n width: 3,\n zIndex: 10\n }],\n title: {\n text: ''\n }\n }],\n series: [{\n name: countTranslated,\n data: count,\n color: '#3bafda',\n type: 'column',\n point: {\n events: {\n click: function () {\n getDeviations(this.x);\n }\n }\n }\n }, {\n data: accumulated,\n name: accumulatedTranslated,\n type: 'spline',\n yAxis: 1,\n id: 'accumulated'\n }\n ]\n });\n }\n\n }\n }\n }]);\n","var DigiLean = angular.module('DigiLean');\n\nDigiLean.directive(\"deviationConsequenceSummary\", ['$translate', 'deviationService','debounce',\n function ($translate, deviationService, debounce) {\n return {\n templateUrl: 'deviationConsequenceSummary.html',\n restrict: 'E',\n scope: {\n 'isAdminMode': '=',\n 'timeframe': '@',\n 'settings': '=',\n 'settingsChangeHandler': '&'\n },\n link: function (scope, elem, attrs) {\n\n scope.filters = null;\n var causeSummaryData = null;\n var drilledDown = false;\n var countTranslated = $translate.instant('COMMON_COUNT');\n var accumulatedTranslated = $translate.instant('DASHBOARD_ACCUMULATED');\n var recordingTranslated = $translate.instant('DEVIATION_NUMBER_OF_DEVIATIONS');\n\n scope.periodChangedHandler = function (timePeriod) {\n if (!timePeriod.timeframe) return;\n if (scope.timePeriod && scope.timePeriod.period.from === timePeriod.period.from && scope.timePeriod.period.to === timePeriod.period.to) return;\n scope.timePeriod = timePeriod;\n scope.options.timePeriod = timePeriod;\n loadData();\n // if adminmode, then save settings\n if (scope.isAdminMode) {\n scope.updateSettings();\n }\n }\n\n scope.updateSettings = function () {\n var componentSettings = {\n timePeriod: scope.options.timePeriod,\n };\n scope.settingsChangeHandler({ settings: componentSettings });\n }\n\n scope.$watch('timeframe', function (timeframe) {\n scope.setTimePeriodDebounced(timeframe, null);\n });\n\n\n // Default options\n var timeSettings = {\n timeframe: \"YTD\",\n useDefaultTimeframes: true,\n timeframes: [],\n period: null,\n getTimePeriod: function () {\n return {\n useDefaultTimeframes: timeSettings.useDefaultTimeframes,\n timeframes: timeSettings.timeframes,\n timeframe: timeSettings.timeframe,\n period: timeSettings.period\n };\n },\n setTimePeriod: function (timeframe, period) {\n timeSettings.timeframe = timeframe;\n timeSettings.period = period;\n // debounce, to make sure not starting loading several timeframes.\n scope.options = {\n timePeriod: timeSettings.getTimePeriod()\n }\n }\n }\n scope.setTimePeriodDebounced = debounce(timeSettings.setTimePeriod, 100, false);\n // Default options\n scope.setTimePeriodDebounced(timeSettings.timeframe, timeSettings.period);\n\n function loadData() {\n if (!scope.timePeriod || !scope.timePeriod.period) return;\n var options = {TimePeriod:scope.timePeriod.period,\n Filters: scope.filters}\n deviationService().getSummaryOfConsequences(options).then(function (data) {\n causeSummaryData = data;\n drawChart(data);\n resizeChart();\n });\n }\n\n scope.subscribe(\"DeviationCreated\", function (deviation) {\n loadData();\n });\n\n \n scope.$watch('settings', function (settings) {\n scope.filters = null;\n if (settings) {\n if (settings.timePeriod) {\n scope.setTimePeriodDebounced(settings.timePeriod.timeframe, settings.timePeriod.period);\n }\n scope.filters = settings.filters;\n loadData();\n } else {\n loadData();\n }\n });\n\n\n function getDeviations(columnOrderNo){\n //TODO implement\n }\n\n // Draw options\n var categoryChart;\n var paddingRight = 30;\n var paddingBottom = 100;\n function resizeChart() {\n var host = $(elem).closest(\".grid-stack-item-content\");\n if (host.length == 0)\n host = $(elem).closest(\".modal-body\")\n \n if (host.length == 0) return;\n var width = host.width();\n var height = host.height();\n if (categoryChart)\n categoryChart.setSize(width - paddingRight, height - paddingBottom, true);\n }\n scope.$on(\"widget-resized\", function (event, args) {\n resizeChart();\n });\n\n function drawChart(data) {\n\n var categories = [];\n var count = [];\n var accumulated = [];\n\n for (var i = 0; i < data.length; i++) {\n var currentItem = data[i];\n categories.push(currentItem.title);\n count.push(currentItem.count);\n accumulated.push(currentItem.accumulated);\n\n }\n\n var renderElement = $(elem).find(\".consequence-summary-chart\")[0];\n categoryChart = Highcharts.chart({\n chart: {\n renderTo: renderElement,\n },\n title: {\n text: ''\n },\n credits: {\n enabled: false\n },\n legend: {\n layout: 'horizontal',\n verticalAlign: 'bottom'\n },\n exporting: { enabled: false },\n tooltip: {\n formatter: function () {\n if (this.series.name === accumulatedTranslated) {\n return this.y + '%';\n }\n //return this.x + ':
' + '# ' + this.y.toString().replace('.', ',') + ' ' + '
' + 'Percent ' + Math.round((this.y / 28) * 100) + '% ';\n return this.x + ':
' + '# ' + this.y + '';\n }\n },\n xAxis: {\n categories: categories,\n crosshair: true\n },\n yAxis: [{\n title: {\n text: recordingTranslated\n }\n }, {\n labels: {\n formatter: function () {\n return this.value + '%';\n }\n },\n max: 100,\n min: 0,\n opposite: true,\n plotLines: [{\n color: 'red',\n dashStyle: 'shortdash',\n value: 80,\n width: 3,\n zIndex: 10\n }],\n title: {\n text: ''\n }\n }],\n series: [{\n name: countTranslated,\n data: count,\n color: '#3bafda',\n type: 'column',\n point: {\n events: {\n click: function () {\n getDeviations(this.x);\n }\n }\n }\n }, {\n data: accumulated,\n name: accumulatedTranslated,\n type: 'spline',\n yAxis: 1,\n id: 'accumulated'\n }\n ]\n });\n }\n\n }\n }\n }]);\n","angular\n .module('DigiLean')\n .controller(\"deviationEvaluationController\", ['$scope', '$http', '$filter', '$translate', '$uibModal', 'deviationService',\n function ($scope, $http, $filter, $translate, $uibModal, deviationService) {\n\n $scope.timeframe = \"last12mth\";\n \n $scope.smile = 0;\n $scope.meh = 0;\n $scope.frown = 0;\n\n $scope.isAllSelected = true;\n $scope.filter = null;\n var selectedType = null;\n \n deviationService().getDeviationTypes().then(function (types) {\n $scope.types = types;\n for(var i=0; i<$scope.types.length;i++ ){\n $scope.types[i].isSelected = false;\n }\n });\n\n $scope.selectType = function(deviationtype){\n $scope.isAllSelected = false;\n for(var i=0; i<$scope.types.length;i++ ){\n $scope.types[i].isSelected = false;\n }\n deviationtype.isSelected = true;\n selectedType = deviationtype;\n $scope.filters = deviationtype;\n var filtersettings = [\n {sourceColumn: \"deviationTypeId\",\n operator: \"InList\",\n items: [selectedType.id]\n }\n ];\n $scope.settings = {\n title: deviationtype.title,\n filters: filtersettings\n };\n load();\n };\n\n $scope.resetSelection = function(){\n $scope.isAllSelected = true;\n for(var i=0; i<$scope.types.length;i++ ){\n $scope.types[i].isSelected = false;\n }\n $scope.filter = null;\n selectedType = null;\n $scope.settings = null;\n load();\n };\n \n \n $scope.options = {\n timePeriod: {\n timeframe: $scope.timeframe,\n timeframes: ['all', 'lastyear', 'last12mth', 'year', '30', 'year', 'month', 'previousmonth', 'previousisoweek', 'isoweek', 'day', 'custom']\n }\n };\n $scope.consequenceSettings = [];\n var load = function () {\n $scope.consequenceSettings = [];\n deviationService().getConsequences().then(function (consequences) {\n for(var i=0; i 0){\n $scope.smile = (100*evaluation.smile / evaluation.total).toFixed(1);\n $scope.meh = (100*evaluation.meh / evaluation.total).toFixed(1);\n $scope.frown = (100*evaluation.frown / evaluation.total).toFixed(1);\n }\n });\n \n };\n load();\n $scope.options = {\n timePeriod: {\n timeframe: \"year\",\n useDefaultTimeframes: true,\n timeframes: []\n }\n };\n\n \n $scope.getConsequenseSingelSettings = function (cons) {\n var settings = {\n title: cons.title,\n timePeriod: {\n timeframe: \"year\"\n },\n dataSource: {\n id: 'DeviationConsequence',\n valueElement: {\n unit: cons.unit\n }\n },\n filters: [\n {sourceColumn: \"lossTypeId\",\n operator: \"InList\",\n items: [cons.id]\n }\n ],\n decimals: 1\n };\n return settings;\n };\n\n }]);\n","var DigiLean = angular.module('DigiLean');\n\nDigiLean.directive(\"deviationEvaluationList\", ['debounce', '$translate', '$uibModal', 'NgTableParams', 'deviationService', \n function (debounce, $translate, $uibModal, NgTableParams, deviationService) {\n return {\n templateUrl: 'deviationEvaluationList.html',\n restrict: 'E',\n scope: {\n 'isAdminMode': '=',\n 'timeframe': '@',\n 'settings': '=',\n 'settingsChangeHandler': '&'\n },\n link: function (scope, elem, attrs) {\n\n scope.filters = null;\n\n var translateFilter = $translate.instant('COMMON_FILTER') + \"...\";\n\n scope.periodChangedHandler = function (timePeriod) {\n if (!timePeriod.timeframe) return;\n if (scope.timePeriod && scope.timePeriod.period.from === timePeriod.period.from && scope.timePeriod.period.to === timePeriod.period.to) return;\n scope.timePeriod = timePeriod;\n scope.options.timePeriod = timePeriod;\n loadData();\n // if adminmode, then save settings\n if (scope.isAdminMode) {\n scope.updateSettings();\n }\n }\n\n scope.updateSettings = function () {\n var componentSettings = {\n timePeriod: scope.options.timePeriod,\n };\n scope.settingsChangeHandler({ settings: componentSettings });\n }\n\n scope.$watch('timeframe', function (timeframe) {\n scope.setTimePeriodDebounced(timeframe, null);\n });\n\n\n // Default options\n var timeSettings = {\n timeframe: \"YTD\",\n useDefaultTimeframes: true,\n timeframes: [],\n period: null,\n getTimePeriod: function () {\n return {\n useDefaultTimeframes: timeSettings.useDefaultTimeframes,\n timeframes: timeSettings.timeframes,\n timeframe: timeSettings.timeframe,\n period: timeSettings.period\n };\n },\n setTimePeriod: function (timeframe, period) {\n timeSettings.timeframe = timeframe;\n timeSettings.period = period;\n // debounce, to make sure not starting loading several timeframes.\n scope.options = {\n timePeriod: timeSettings.getTimePeriod()\n }\n }\n }\n scope.setTimePeriodDebounced = debounce(timeSettings.setTimePeriod, 100, false);\n // Default options\n scope.setTimePeriodDebounced(timeSettings.timeframe, timeSettings.period);\n\n function loadData() {\n if (!scope.timePeriod || !scope.timePeriod.period) return;\n var options = {\n TimePeriod:scope.timePeriod.period,\n Filters: scope.filters\n };\n deviationService().getEvaluationSummaryList(options).then(function (data) {\n /*$scope.totalProjects = projects.length;\n \n angular.forEach(projects, function (project) {\n if (project.projectCustomer) {\n project.projectCustomerName = project.projectCustomer.name;\n }\n project.statusorder = getStatusOrder(project.status);\n \n })*/\n scope.rowdata = data;\n scope.tableParams = new NgTableParams({}, { dataset: scope.rowdata });\n });\n }\n\n scope.subscribe(\"DeviationCreated\", function (deviation) {\n loadData();\n });\n\n // Dashboard Settings handling\n scope.$watch('settings', function (settings) {\n scope.filters = null;\n scope.settings = settings;\n if (settings) {\n if (settings.timePeriod) {\n scope.setTimePeriodDebounced(settings.timePeriod.timeframe, settings.timePeriod.period);\n }\n if (settings.filters) {\n scope.filters = settings.filters;\n }\n loadData();\n } else {\n loadData();\n }\n });\n\n scope.categoryFilter = {\n category: {\n id: \"text\",\n placeholder: translateFilter,\n }\n };\n \n scope.causeFilter = {\n cause: {\n id: \"text\",\n placeholder: translateFilter,\n }\n };\n \n scope.lossTypeFilter = {\n lossType: {\n id: \"text\",\n placeholder: translateFilter,\n }\n };\n \n scope.showDeviations = function (row) {\n var currentfilter = [{\n sourceColumn: \"problemCategoryId\",\n operator: \"InList\",\n items: [row.categoryId]\n },\n {\n sourceColumn: \"problemReasonId\",\n operator: \"InList\",\n items: [row.causeId]\n },\n {\n sourceColumn: \"lossTypeId\",\n operator: \"InList\",\n items: [row.lossTypeId]\n }];\n var order = [{\n sourceColumn: \"Status\",\n SortDirection: \"ASC\"\n }, {\n sourceColumn: \"Severity\",\n SortDirection: \"DESC\"\n }];\n var options = {\n filters: currentfilter,\n sortOrders: order,\n timePeriod:scope.timePeriod.period,\n };\n \n var modalInstance = $uibModal.open({ backdrop: 'static',\n templateUrl: 'deviationListForm.html',\n controller: 'deviationListModalController',\n windowClass: 'fullDeviation-modal-window',\n resolve: {\n options: function () {\n return options;\n }\n }\n });\n };\n\n\n function getDeviations(columnOrderNo){\n deviationService().getDeviationsByFilter()\n //TODO implement use getDeviationsByFilter\");\n\n }\n\n\n }\n }\n }]);\n","var DigiLean = angular.module('DigiLean'); \nDigiLean.controller('myDeviationsController', ['$scope','$filter', '$uibModalInstance', '$uibModal', 'deviationService', 'authService',\n function ($scope, $filter, $uibModalInstance, $uibModal, deviationService, authService) {\n $scope.items = [];\n var userid = authService.getCurrentUser().userId;\n\n $scope.deviations = [];\n $scope.subscribe(\"DeviationChangedStatus\", function (changed) {\n // Check if comment is related to one of users\n var item = $filter('filter')($scope.deviations, { id: changed.deviationId }, true);\n if (item.length > 0) {\n item[0].status = changed.status;\n item[0].changed = true;\n setDeviationFirstInList(item[0]);\n }\n });\n $scope.subscribe(\"DeviationTitleChanged\", function (item) {\n var existing = $filter('filter')($scope.deviations, { id: item.deviationId }, true);\n if (existing.length === 1) {\n existing[0].title = item.newText;\n existing[0].cssClass = \"animated bounce\"; // Add animation\n existing[0].changed = true;\n $scope.$apply();\n }\n });\n $scope.subscribe(\"DeviationUpdated\", function (item) {\n // find by id\n var existingDeviations = $filter('filter')($scope.deviations, { id: item.id }, true);\n if (existingDeviations.length === 1) {\n getDeviations();\n }\n });\n $scope.subscribe(\"DeviationCreated\", function (item) {\n item.cssClass = \"animated bounce\"; // Add animation\n item.changed = true;\n // Make sure it's created by current user\n if (userid === item.createdByUserId) {\n getDeviations();\n }\n });\n $scope.subscribe(\"DeviationDeleted\", function (deviation) {\n // find by id\n var deletedid = deviation.id;\n var existingDeviations = $filter('filter')($scope.deviations, { id: deletedid }, true);\n if (existingDeviations.length === 1) {\n getDeviations();\n // splice does not work with pager\n //var index = $scope.deviations.indexOf(existingDeviations[0]);\n //$scope.deviations.splice(index, 1);\n }\n });\n $scope.addComment = function (deviation) {\n if (typeof deviation.comments === 'undefined') {\n deviation.comments = [];\n }\n var currentComment = {\n comment: deviation.activeComment\n };\n deviationService().addComment(deviation.id, currentComment).then(function (savedComment) {\n\n });\n deviation.activeComment = \"\";\n\n }\n\n $scope.subscribe(\"DeviationCommentedOn\", function (comment) {\n var item = $filter('filter')($scope.deviations, { id: comment.deviationId }, true);\n if (item.length > 0) {\n item[0].changed = true;\n item[0].comments.push(comment);\n }\n });\n\n function setDeviationFirstInList(item){ \n if (item) {\n var index = $scope.deviations.indexOf(item);\n $scope.deviations.splice(index, 1);\n $scope.deviations.unshift(item);\n }\n }\n\n function getDeviations() {\n $scope.isLoading = true;\n deviationService().getMyDeviations().then(function (items) {\n items.forEach(function (deviation) {\n deviation.changed = false;\n });\n $scope.deviations = items;\n $scope.isLoading = false;\n });\n }\n getDeviations();\n\n $scope.showComments = function (suggestion) {\n suggestion.showComments = !suggestion.showComments;\n }\n\n $scope.close = function () {\n $uibModalInstance.close(); \n };\n\n $scope.openDeviation = function (id) {\n deviationService().get(id).then(function (deviation) {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n templateUrl: 'fullDeviation.html',\n controller: 'fullDeviationController',\n windowClass: 'full-screen',\n resolve: {\n deviation: function () {\n return deviation;\n },\n activeTab: function () {\n return \"Info\";\n }\n }\n });\n });\n }\n\n }]);","var DigiLean = angular.module('DigiLean');\nDigiLean.directive(\"newDeviationButton\", ['$filter','$translate', 'deviationService','navigationService','$uibModal',\n function ($filter,$translate, deviationService, navigationService, $uibModal) {\n return {\n templateUrl: 'newDeviationButton.html',\n restrict: 'E',\n scope: {\n 'color': '@',\n },\n link: function (scope, elem, attrs) {\n //scope.buttonColor = \"blue\";\n\n \n scope.$watch(\"color\", function () {\n if (!scope.color) return;\n loadSettings();\n });\n \n function loadSettings(){\n deviationService().getDeviationTypes().then(function (types) {\n scope.types = types;\n });\n }\n\n scope.createNew = function (typeId) {\n if(typeId){\n var settings = {deviationTypeId:typeId};\n $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'newDeviation.html',\n controller: 'newDeviationController',\n windowClass: 'newdeviation-modal-window',\n resolve: {\n settings: function () {\n return settings;\n }\n }\n });\n }\n \n }\n\n }\n\n }\n }]);\n","\nangular\n .module('DigiLean')\n .component(\"deviationColumn\", {\n templateUrl: 'deviationColumn.html',\n bindings: {\n context: '@',\n label: '@',\n labelNew: '@',\n newClicked: '&',\n name: '@',\n data: '<',\n columnLoaded: '&'\n },\n controller: ['$element', '$translate', 'deviationCommonService',\n function ($element, $translate, deviationCommonService) {\n var $ctrl = this\n $ctrl.labelText = \"default\"\n $ctrl.labelNewText = \"\"\n \n $ctrl.$onChanges = function (changes) {\n if (changes.label) {\n if (changes.label.currentValue) {\n $ctrl.labelText = $translate.instant(changes.label.currentValue)\n }\n }\n if (changes.labelNew) {\n if (changes.labelNew.currentValue) {\n $ctrl.labelNewText = $translate.instant(changes.labelNew.currentValue)\n }\n }\n }\n\n $ctrl.hasDueDate = function (item) {\n if (item.dueDate) {\n return true\n } else return false\n }\n\n $ctrl.hasResponsible = function (item) {\n if (item.ownerUserId) {\n return true;\n } else return false;\n }\n\n\n $ctrl.$onInit = function() {\n if (!$ctrl.data)\n $ctrl.data = []\n }\n\n $ctrl.$postLink = function() {\n if ($ctrl.columnLoaded) {\n const ulEl = $element[0].querySelector(\"ul\")\n $ctrl.columnLoaded({column: ulEl})\n }\n \n }\n\n $ctrl.openDeviation = (deviation) => {\n deviationCommonService.deviationOpenForEdit(deviation.id).then(updatedDeviation => {\n \n })\n }\n \n // Open A3\n $ctrl.openA3 = (a3Id) => {\n // deviationCommonService.deviationOpenForEdit(deviation.id).then(updatedDeviation => {\n \n // })\n }\n \n }]\n });","angular.module(\"DigiLean\").factory('deviationCommonService', ['deviationService', '$uibModal',\n function (deviationService, $uibModal) {\n const deviationOpenForEdit = function (deviationId) {\n return deviationService().get(deviationId).then(function (deviation) {\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n templateUrl: 'fullDeviation.html',\n controller: 'fullDeviationController',\n windowClass: 'full-screen',\n resolve: {\n deviation: function () {\n return deviation;\n },\n activeTab: function () {\n return \"Info\";\n }\n }\n });\n return modalInstance.result.then(function (deviation) {\n return deviation;\n })\n })\n }\n\n return {\n deviationOpenForEdit\n }\n }\n])","var DigiLean = angular.module('DigiLean'); DigiLean.controller('deviationProjectStatusController', ['$scope', '$translate', 'authService',\n function ($scope, $translate, authService) {\n\n\n\n var deviationGroupElements = [\n {\n label: $translate.instant('PROJECT_PROJECT'),\n sourceColumn: \"projectId\",\n type: \"project\"\n },\n {\n label: $translate.instant('COMMON_ASSET'),\n sourceColumn: \"assetId\",\n type: \"asset\"\n },\n {\n label: $translate.instant('COMMON_AREA'),\n sourceColumn: \"areaId\",\n type: \"area\"\n },\n {\n label: $translate.instant('COMMON_CATEGORY'),\n sourceColumn: \"problemCategoryId\",\n type: \"problemcategory\"\n },\n {\n label: $translate.instant('DEVIATION_SEVERITY'),\n sourceColumn: \"severity\",\n type: \"deviationseverity\"\n },\n {\n label: $translate.instant('COMMON_DEVIATION_TYPES'),\n sourceColumn: \"deviationTypeId\",\n type: \"deviationtype\"\n }\n ];\n\n var deviationNew = {\n id: \"DeviationNew\",\n title: $translate.instant('DEVIATION_NEW_DEVIATIONS'),\n description: $translate.instant('DASHBOARD_DEVIATION_NEW_DESC'),\n valueElement: {\n unit: $translate.instant('COMMON_NUMBER'),\n label: $translate.instant('COMMON_NUMBER')\n },\n objectSource: 'internal',\n ownerUserDisplayName: 'DigiLEAN',\n elements: deviationGroupElements\n };\n $scope.filterDatasource = deviationNew;\n\n \n $scope.selectedFilters = [];\n\n $scope.isAdmin = authService.hasRole(\"Admin\") || authService.hasRole(\"DeviationAdmin\");\n // if page is refreshed we need to refresh\n $scope.subscribe(\"UserAuthenticatedAndReady\", function (profile) {\n $scope.isAdmin = authService.hasRole(\"Admin\") || authService.hasRole(\"DeviationAdmin\");\n });\n\n $scope.timeframe = \"last12mth\";\n $scope.options = {\n timePeriod: {\n timeframe: $scope.timeframe,\n timeframes: ['all', 'lastyear', 'last12mth', 'year', '30', 'year', 'month', 'previousmonth', 'previousisoweek', 'isoweek', 'day', 'custom']\n }\n };\n function initSettings() {\n\n $scope.settingProjectStatus =\n {\n groupColumn: \"projectId\",\n stackingColumn: \"status\",\n filters: $scope.selectedFilters\n }\n\n $scope.settingProjectType =\n {\n groupColumn: \"projectId\",\n stackingColumn: \"deviationTypeId\",\n filters: $scope.selectedFilters\n }\n\n\n $scope.settingProjectSeverity =\n {\n groupColumn: \"projectId\",\n stackingColumn: \"severity\",\n filters: $scope.selectedFilters\n }\n\n $scope.settingProjectCategory =\n {\n groupColumn: \"projectId\",\n stackingColumn: \"problemCategoryId\",\n filters: $scope.selectedFilters\n }\n\n $scope.settingCreatedBy =\n {\n groupColumn: \"createdByUserId\",\n stackingColumn: \"projectId\",\n filters: $scope.selectedFilters\n }\n }\n initSettings();\n\n $scope.periodChangedHandler = function (timePeriod) {\n $scope.options.timePeriod = timePeriod;\n $scope.timeframe = timePeriod.timeframe;\n };\n\n $scope.filterChangedHandler = function (filters) {\n $scope.selectedFilters = filters;\n initSettings();\n };\n\n \n }]);","angular\n .module('DigiLean')\n .controller(\"deviationStatusController\", ['$scope', '$http', '$filter', '$translate', '$uibModal', 'deviationService',\n function ($scope, $http, $filter, $translate, $uibModal, deviationService) {\n\n $scope.options = {\n timePeriod: {\n timeframe: \"year\",\n useDefaultTimeframes: true,\n timeframes: []\n }\n };\n\n }]);\n","angular\n .module('DigiLean')\n .directive(\"leadtimeDeviation\", ['$filter', '$translate', 'deviationService', 'authService',\n function ($filter, $translate, deviationService, authService) {\n return {\n templateUrl: 'leadtimeDeviation.html',\n restrict: 'E',\n scope: {\n\n },\n link: function (scope, elem, attrs) {\n scope.options = {\n timePeriod: {\n timeframe: \"year\",\n useDefaultTimeframes: true,\n timeframes: []\n }\n };\n\n var grafcolor = ['#2A2E36', '#0099DE', '#23c6c8', '#0077B5', '#5e5e5e', '#f8ac59', '#434348'],\n graphtextcolor = '#ffffff';\n\n // Leadtime diagram\n var leadtimecategories = [],\n dataFromInProgressToImplemented = [],\n dataFromNewToInProgress = [];\n\n\n var yAxisText = \"\";\n var fromImplToEval = \"\";\n var fromInProgressToImpl = \"\";\n var fromPlannedToInProgress = \"\";\n var fromNewToInProgress = \"\";\n $translate(['IMPROVEMENT_TOTAL_LEAD_TIME', 'IMPROVEMENT_FROM_IMPL_TO_EVALUATED', 'DEVIATION_FROM_IN_PROGRESS_TO_RESOLVED', 'IMPROVEMENT_FROM_PLANNED_TO_IN_PROGRESS', 'DEVIATION_FROM_NEW_TO_INPROGRESS']).then(function (translations) {\n yAxisText = translations.IMPROVEMENT_TOTAL_LEAD_TIME;\n fromImplToEval = translations.IMPROVEMENT_FROM_IMPL_TO_EVALUATED;\n fromInProgressToImpl = translations.DEVIATION_FROM_IN_PROGRESS_TO_RESOLVED;\n fromPlannedToInProgress = translations.IMPROVEMENT_FROM_PLANNED_TO_IN_PROGRESS;\n fromNewToInProgress = translations.DEVIATION_FROM_NEW_TO_INPROGRESS;\n getData();\n });\n\n scope.periodChangedHandler = function (timePeriod) {\n scope.timePeriod = timePeriod.period;\n scope.timeframe = timePeriod.timeframe;\n getData();\n }\n\n function getData() {\n if (!scope.timePeriod) return;\n /*var endDate = moment().utc().endOf('month');\n var startDate = moment().utc().add(-11, 'month').startOf('month');\n \n var timePeriod = {\n from: startDate.toDate().toJSON(),\n to: endDate.toDate().toJSON()\n };*/\n var leadtimecategories = [],\n dataFromInProgressToImplemented = [],\n dataFromNewToInProgress = [];\n\n deviationService().getLeadTimeForAssets(scope.timePeriod).then(function (result) {\n var leadtimedata = result.results;\n // Build the data arrays\n for (var i = 0; i < leadtimedata.length; i++) {\n if (leadtimedata[i].asset != null) {\n leadtimecategories.push(leadtimedata[i].asset);\n dataFromNewToInProgress.push(leadtimedata[i].fromNewToInProgress);\n dataFromInProgressToImplemented.push(leadtimedata[i].fromInProgressToImplemented);\n }\n }\n\n var renderElement = $(elem).find(\".leadtime\")[0];\n new Highcharts.chart({\n chart: {\n renderTo: renderElement,\n type: 'bar'\n },\n title: {\n text: ''\n },\n xAxis: {\n categories: leadtimecategories\n },\n yAxis: {\n min: 0,\n title: {\n text: yAxisText //'Total lead time'\n }\n },\n credits: {\n enabled: false\n },\n exporting: { enabled: false },\n legend: {\n reversed: true\n },\n plotOptions: {\n series: {\n stacking: 'normal'\n }\n },\n series: [{\n name: fromInProgressToImpl, //'From In Progress to Implemented',\n data: dataFromInProgressToImplemented,\n color: grafcolor[2] //'#23c6c8'\n }, {\n name: fromNewToInProgress, //'From new to inprogress\n data: dataFromNewToInProgress,\n color: \"#FFCE54\" //'#f8ac59'\n }]\n });\n });\n }\n }\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"monthlyStatusDeviationArea\", ['$filter', '$translate', 'deviationService',\n function ($filter, $translate, deviationService) {\n return {\n templateUrl: 'monthlyStatusDeviationArea.html',\n restrict: 'E',\n scope: {\n 'header': '@',\n 'component': '@'\n },\n link: function (scope, elem, attrs) {\n\n var grafcolor = ['#2A2E36', '#0099DE', '#23c6c8', '#0077B5', '#5e5e5e', '#f8ac59', '#434348'],\n graphtextcolor = '#ffffff';\n\n var leadtimecategories = [],\n xfirstlinecategories = [],\n xmonthcategories = [],\n browserDataSuggestionByArea = [],\n dataFromNewToPlanned = [];\n\n function getStatusData() {\n var endDate = moment().utc().endOf('month');\n var startDate = moment().utc().add(-3, 'month').startOf('month');\n // Monthly suggested, need to find start and end of month\n var timePeriod = {\n from: startDate.toDate().toJSON(),\n to: endDate.toDate().toJSON()\n };\n deviationService().getAreaMonthCountOnStatus(timePeriod).then(function (result) {\n\n var newSuggestionByData = result.new;\n var implementedSuggestionByData = result.implemented;\n\n if (newSuggestionByData) {\n // Build the data arrays\n for (var i = 0; i < newSuggestionByData.length; i++) {\n var areaName = newSuggestionByData[i].area;\n if (areaName === null) {\n areaName = $translate.instant('COMMON_UNDEFINED');\n }\n // add new browser data\n browserDataSuggestionByArea.push({\n name: areaName,\n data: newSuggestionByData[i].suggestionCount,\n color: grafcolor[i],\n stack: firstlinecategorynew,\n xAxis: 1\n });\n\n // add implemented browser data\n if (implementedSuggestionByData.length > i) {\n var areaName = implementedSuggestionByData[i].area;\n if (areaName === null) {\n areaName = $translate.instant('COMMON_UNDEFINED');\n }\n browserDataSuggestionByArea.push({\n name: areaName,\n data: implementedSuggestionByData[i].suggestionCount,\n color: grafcolor[i],\n showInLegend: false,\n stack: firstlinecategoryimpl,\n xAxis: 1\n });\n }\n\n }\n\n xmonthcategories = newSuggestionByData[0].monthNumbers;\n\n for (var i = 0; i < xmonthcategories.length; i++) {\n xfirstlinecategories.push('');\n xfirstlinecategories.push(firstlinecategorynew);\n xfirstlinecategories.push(firstlinecategoryimpl);\n xfirstlinecategories.push('');\n }\n\n var zeroes = [];\n xfirstlinecategories.forEach(function () { zeroes.push(0); });\n\n\n browserDataSuggestionByArea.push({\n name: '',\n data: zeroes,\n showInLegend: false,\n stack: firstlinecategoryimpl,\n });\n\n var monthly = $(elem).find(\".monthlystatusarea\")[0];\n Highcharts.chart({\n chart: {\n renderTo: monthly,\n type: 'column'\n },\n\n title: {\n text: ''\n },\n\n credits: {\n enabled: false\n },\n exporting: { enabled: false },\n\n xAxis: [\n {\n categories: xfirstlinecategories,\n labels: { autoRotation: false, style: { textOverflow: 'none' } },\n tickWidth: 0,\n },\n {\n categories: xmonthcategories,\n lineColor: graphtextcolor,\n tickWidth: 1,\n tickLength: 30\n },\n ],\n\n yAxis: {\n allowDecimals: false,\n min: 0,\n title: {\n text: noOfSuggestions\n }\n },\n\n tooltip: {\n formatter: function () {\n return '' + this.x + ' ' + this.series.options.stack + '
' +\n this.series.name + ': ' + this.y + '
' +\n 'Total: ' + this.point.stackTotal;\n }\n },\n plotOptions: {\n series: {\n events: {\n legendItemClick: function () {\n var myname = this.name;\n var myvis = !this.visible;\n this.chart.series.forEach(function (elem) {\n if (elem.name == myname) {\n elem.setVisible(myvis);\n }\n });\n return false;\n }\n }\n },\n column: {\n stacking: 'normal',\n groupPadding: 0.20,\n }\n },\n series: browserDataSuggestionByArea\n });\n var onLegendClick = function (event) {\n var myname = this.name;\n var myvis = !this.visible;\n this.chart.series.forEach(function (elem) {\n if (elem.name == myname) {\n elem.setVisible(myvis);\n }\n });\n return false;\n }\n }\n });\n\n\n }\n\n var firstlinecategorynew = \"\";\n var firstlinecategoryimpl = \"\";\n var noOfSuggestions = \"\";\n var fromInProgressToImpl = \"\";\n var fromPlannedToInProgress = \"\";\n\n\n $translate(['COMMON_NEW', 'IMPROVEMENT_IMPL', 'DEVIATION_NUMBER_OF_DEVIATIONS', 'IMPROVEMENT_FROM_PLANNED_TO_IN_PROGRESS', 'DEVIATION_FROM_IN_PROGRESS_TO_RESOLVED']).then(function (translations) {\n firstlinecategorynew = translations.COMMON_NEW;\n firstlinecategoryimpl = translations.IMPROVEMENT_IMPL;\n noOfSuggestions = translations.DEVIATION_NUMBER_OF_DEVIATIONS;\n fromInProgressToImpl = translations.DEVIATION_FROM_IN_PROGRESS_TO_RESOLVED;\n fromPlannedToInProgress = translations.IMPROVEMENT_FROM_PLANNED_TO_IN_PROGRESS;\n\n\n getStatusData();\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","angular\n .module('DigiLean')\n .directive(\"monthlyStatusDeviationSeverity\", ['$filter', '$translate', 'deviationService',\n function ($filter, $translate, deviationService) {\n return {\n templateUrl: 'monthlyStatusDeviationSeverity.html',\n restrict: 'E',\n scope: {\n 'header': '@',\n 'component': '@'\n },\n link: function (scope, elem, attrs) {\n\n var graphtextcolor = '#ffffff';\n\n var xfirstlinecategories = [],\n xmonthcategories = [],\n browserDataSuggestionByAsset = [];\n\n function getSeverityDescription(severity) {\n switch (severity) {\n case 1:\n return $translate.instant('COMMON_LOW');\n case 2:\n return $translate.instant('COMMON_MEDIUM');\n case 3:\n return $translate.instant('COMMON_HIGH');\n default:\n return $translate.instant('COMMON_UNDEFINED');\n }\n }\n\n /*\n function getSeverityColor(severity) {\n switch (severity) {\n case 1:\n return \"#s1872ab\";\n case 2:\n return \"#FFCE54\";\n case 3:\n return \"#DA4453\";\n default:\n return \"#2A2E36\";\n }\n }*/\n\n function getStatusData() {\n var endDate = moment().utc().endOf('month');\n var startDate = moment().utc().add(-3, 'month').startOf('month');\n // Monthly suggested, need to find start and end of month\n var timePeriod = {\n from: startDate.toDate().toJSON(),\n to: endDate.toDate().toJSON()\n };\n deviationService().getSeverityMonthCountOnStatus(timePeriod).then(function (result) {\n\n var newBySeverityData = result.new;\n var implementedBySeverityData = result.implemented;\n\n if (newBySeverityData) {\n // Build the data arrays\n for (var i = 0; i < newBySeverityData.length; i++) {\n var severity = getSeverityDescription(newBySeverityData[i].severity);\n if (severity === null) {\n severity = $translate.instant('COMMON_UNDEFINED');\n }\n // add new browser data\n browserDataSuggestionByAsset.push({\n name: severity,\n data: newBySeverityData[i].suggestionCount,\n color: deviationService().getSeverityColor(newBySeverityData[i].severity),\n stack: firstlinecategorynew,\n xAxis: 1\n });\n\n // add implemented browser data\n if (implementedBySeverityData.length > i) {\n var severityImpl = getSeverityDescription(implementedBySeverityData[i].severity);\n if (severityImpl === null) {\n severityImpl = $translate.instant('COMMON_UNDEFINED');\n }\n browserDataSuggestionByAsset.push({\n name: severityImpl,\n data: implementedBySeverityData[i].suggestionCount,\n color: deviationService().getSeverityColor(implementedBySeverityData[i].severity),\n showInLegend: false,\n stack: firstlinecategoryimpl,\n xAxis: 1\n });\n }\n\n }\n\n xmonthcategories = newBySeverityData[0].monthNumbers;\n\n for (var i = 0; i < xmonthcategories.length; i++) {\n xfirstlinecategories.push('');\n xfirstlinecategories.push(firstlinecategorynew);\n xfirstlinecategories.push(firstlinecategoryimpl);\n xfirstlinecategories.push('');\n }\n\n var zeroes = [];\n xfirstlinecategories.forEach(function () { zeroes.push(0); });\n\n\n browserDataSuggestionByAsset.push({\n name: '',\n data: zeroes,\n showInLegend: false,\n stack: firstlinecategoryimpl,\n });\n\n var monthly = $(elem).find(\".monthlystatusdeviationseverity\")[0];\n Highcharts.chart({\n chart: {\n renderTo: monthly,\n type: 'column'\n },\n\n title: {\n text: ''\n },\n\n credits: {\n enabled: false\n },\n exporting: { enabled: false },\n\n xAxis: [\n {\n categories: xfirstlinecategories,\n labels: { autoRotation: false, style: { textOverflow: 'none' } },\n tickWidth: 0,\n },\n {\n categories: xmonthcategories,\n lineColor: graphtextcolor,\n tickWidth: 1,\n tickLength: 30\n },\n ],\n\n yAxis: {\n allowDecimals: false,\n min: 0,\n title: {\n text: noOfSuggestions\n }\n },\n\n tooltip: {\n formatter: function () {\n return '' + this.x + ' ' + this.series.options.stack + '
' +\n this.series.name + ': ' + this.y + '
' +\n 'Total: ' + this.point.stackTotal;\n }\n },\n plotOptions: {\n series: {\n events: {\n legendItemClick: function () {\n var myname = this.name;\n var myvis = !this.visible;\n this.chart.series.forEach(function (elem) {\n if (elem.name == myname) {\n elem.setVisible(myvis);\n }\n });\n return false;\n }\n }\n },\n column: {\n stacking: 'normal',\n groupPadding: 0.20,\n }\n },\n series: browserDataSuggestionByAsset\n });\n var onLegendClick = function (event) {\n var myname = this.name;\n var myvis = !this.visible;\n this.chart.series.forEach(function (elem) {\n if (elem.name == myname) {\n elem.setVisible(myvis);\n }\n });\n return false;\n }\n }\n });\n\n\n }\n\n var firstlinecategorynew = \"\";\n var firstlinecategoryimpl = \"\";\n var noOfSuggestions = \"\";\n var fromInProgressToImpl = \"\";\n var fromPlannedToInProgress = \"\";\n\n\n $translate(['COMMON_NEW', 'IMPROVEMENT_IMPL', 'DEVIATION_NUMBER_OF_DEVIATIONS', 'IMPROVEMENT_FROM_PLANNED_TO_IN_PROGRESS', 'DEVIATION_FROM_IN_PROGRESS_TO_RESOLVED']).then(function (translations) {\n firstlinecategorynew = translations.COMMON_NEW;\n firstlinecategoryimpl = translations.IMPROVEMENT_IMPL;\n noOfSuggestions = translations.DEVIATION_NUMBER_OF_DEVIATIONS;\n fromInProgressToImpl = translations.DEVIATION_FROM_IN_PROGRESS_TO_RESOLVED;\n fromPlannedToInProgress = translations.IMPROVEMENT_FROM_PLANNED_TO_IN_PROGRESS;\n\n\n getStatusData();\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","angular\n .module('DigiLean')\n .directive(\"monthlystatusDeviation\", ['$filter', '$translate', 'deviationService', 'layoutService',\n function ($filter, $translate, deviationService, layoutService) {\n return {\n templateUrl: 'monthlystatusDeviation.html',\n restrict: 'E',\n scope: {\n 'header': '@',\n 'component': '@'\n },\n link: function (scope, elem, attrs) {\n\n var grafcolor = layoutService().getColors(),//['#2A2E36', '#0099DE', '#23c6c8', '#0077B5', '#5e5e5e', '#f8ac59', '#434348'],\n graphtextcolor = '#ffffff';\n\n var xfirstlinecategories = [],\n xmonthcategories = [],\n browserDataSuggestionByAsset = [];\n\n function getStatusData() {\n var endDate = moment().utc().endOf('month');\n var startDate = moment().utc().add(-3, 'month').startOf('month');\n // Monthly suggested, need to find start and end of month\n var timePeriod = {\n from: startDate.toDate().toJSON(),\n to: endDate.toDate().toJSON()\n };\n deviationService().getAssetMonthCountOnStatus(timePeriod).then(function (result) {\n\n var newSuggestionByAssetData = result.new;\n var implementedSuggestionByAssetData = result.implemented;\n\n if (newSuggestionByAssetData) {\n\n // Build the data arrays\n for (var i = 0; i < newSuggestionByAssetData.length; i++) {\n var assetName = newSuggestionByAssetData[i].asset;\n if (assetName === null) {\n assetName = $translate.instant('COMMON_UNDEFINED');\n }\n // add new browser data\n browserDataSuggestionByAsset.push({\n name: assetName,\n data: newSuggestionByAssetData[i].suggestionCount,\n color: grafcolor[i],\n stack: firstlinecategorynew,\n xAxis: 1\n });\n\n // add implemented browser data\n if (implementedSuggestionByAssetData.length > i) {\n var assetName = implementedSuggestionByAssetData[i].asset;\n if (assetName === null) {\n assetName = $translate.instant('COMMON_UNDEFINED');\n }\n browserDataSuggestionByAsset.push({\n name: assetName,\n data: implementedSuggestionByAssetData[i].suggestionCount,\n color: grafcolor[i],\n showInLegend: false,\n stack: firstlinecategoryimpl,\n xAxis: 1\n });\n }\n\n }\n\n xmonthcategories = newSuggestionByAssetData[0].monthNumbers;\n\n for (var i = 0; i < xmonthcategories.length; i++) {\n xfirstlinecategories.push('');\n xfirstlinecategories.push(firstlinecategorynew);\n xfirstlinecategories.push(firstlinecategoryimpl);\n xfirstlinecategories.push('');\n }\n\n var zeroes = [];\n xfirstlinecategories.forEach(function () { zeroes.push(0); });\n\n\n browserDataSuggestionByAsset.push({\n name: '',\n data: zeroes,\n showInLegend: false,\n stack: firstlinecategoryimpl,\n });\n\n var monthly = $(elem).find(\".monthlystatus\")[0];\n Highcharts.chart({\n chart: {\n renderTo: monthly,\n type: 'column'\n },\n\n title: {\n text: ''\n },\n\n credits: {\n enabled: false\n },\n exporting: { enabled: false },\n\n xAxis: [\n {\n categories: xfirstlinecategories,\n labels: { autoRotation: false, style: { textOverflow: 'none' } },\n tickWidth: 0,\n },\n {\n categories: xmonthcategories,\n lineColor: graphtextcolor,\n tickWidth: 1,\n tickLength: 30\n },\n ],\n\n yAxis: {\n allowDecimals: false,\n min: 0,\n title: {\n text: noOfSuggestions\n }\n },\n\n tooltip: {\n formatter: function () {\n return '' + this.x + ' ' + this.series.options.stack + '
' +\n this.series.name + ': ' + this.y + '
' +\n 'Total: ' + this.point.stackTotal;\n }\n },\n plotOptions: {\n series: {\n events: {\n legendItemClick: function () {\n var myname = this.name;\n var myvis = !this.visible;\n this.chart.series.forEach(function (elem) {\n if (elem.name == myname) {\n elem.setVisible(myvis);\n }\n });\n return false;\n }\n }\n },\n column: {\n stacking: 'normal',\n groupPadding: 0.20,\n }\n },\n series: browserDataSuggestionByAsset\n });\n var onLegendClick = function (event) {\n var myname = this.name;\n var myvis = !this.visible;\n this.chart.series.forEach(function (elem) {\n if (elem.name == myname) {\n elem.setVisible(myvis);\n }\n });\n return false;\n }\n }\n });\n\n\n }\n\n var firstlinecategorynew = \"\";\n var firstlinecategoryimpl = \"\";\n var noOfSuggestions = \"\";\n var fromInProgressToImpl = \"\";\n var fromPlannedToInProgress = \"\";\n\n\n $translate(['COMMON_NEW', 'IMPROVEMENT_IMPL', 'DEVIATION_NUMBER_OF_DEVIATIONS', 'IMPROVEMENT_FROM_PLANNED_TO_IN_PROGRESS', 'DEVIATION_FROM_IN_PROGRESS_TO_RESOLVED']).then(function (translations) {\n firstlinecategorynew = translations.COMMON_NEW;\n firstlinecategoryimpl = translations.IMPROVEMENT_IMPL;\n noOfSuggestions = translations.DEVIATION_NUMBER_OF_DEVIATIONS;\n fromInProgressToImpl = translations.DEVIATION_FROM_IN_PROGRESS_TO_RESOLVED;\n fromPlannedToInProgress = translations.IMPROVEMENT_FROM_PLANNED_TO_IN_PROGRESS;\n\n\n getStatusData();\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","\nangular\n .module('DigiLean')\n .directive(\"defaultBoardCard\",\n function () {\n return {\n templateUrl: 'defaultBoardCard.html',\n restrict: 'E',\n scope: {\n \"board\" : \"<\",\n },\n link: function (scope, elem, attrs) {\n scope.model = null;\n scope.isLoading = true;\n \n scope.$watch('board', function (board) {\n if (!board) return;\n });\n }\n }\n });\n","var DigiLean = angular.module('DigiLean');\nDigiLean.controller('hoursHubController', ['$scope', '$filter', '$state', 'dataSourceService', \n function ($scope, $filter, $state, dataSourceService) {\n var scope = $scope;\n dataSourceService().getFeatureSource(\"HourRegistration\").then(function (source) {\n if (source) {\n scope.dataSource = source;\n // When all feature info is loaded, we can setup the rest\n loadDashboard(scope.dataSource.id);\n }\n })\n\n // Dashboard settings\n function loadDashboard(dataSourceId) {\n scope.thisMonthSettings = {\n title: \"Denne måneden\",\n timePeriod: {\n timeframe: \"month\"\n },\n dataSource: {\n id: dataSourceId,\n valueElement: {\n unit: \"Timer\"\n }\n },\n decimals: 1\n }\n scope.thisMonthInvoicedSettings = {\n title: \"Fakturerbart\",\n timePeriod: {\n timeframe: \"month\"\n },\n dataSource: {\n id: dataSourceId,\n valueElement: {\n unit: \"Timer\"\n }\n },\n filters: [\n {// Fakturerbart\n sourceColumn: \"dimension3\",\n operator: \"InList\",\n items: [\"true\"]\n }\n ],\n decimals: 1\n }\n scope.thisYearSettings = {\n title: \"I år\",\n timePeriod: {\n timeframe: \"year\"\n },\n dataSource: {\n id: dataSourceId,\n valueElement: {\n unit: \"Timer\"\n }\n },\n decimals: 1\n }\n scope.thisYearInvoicedSettings = {\n title: \"I år\",\n timePeriod: {\n timeframe: \"year\"\n },\n dataSource: {\n id: dataSourceId,\n valueElement: {\n unit: \"Timer\"\n }\n },\n filters: [\n {// Fakturerbart\n sourceColumn: \"dimension3\",\n operator: \"InList\",\n items: [\"true\"]\n }\n ],\n decimals: 1\n }\n scope.thisMonthPieSettings = {\n title: \"Fordeling pr prosjekt\",\n timePeriod: {\n timeframe: \"month\"\n },\n dataSource: {\n id: dataSourceId,\n valueElement: {\n unit: \"Timer\"\n }\n },\n groupedBy: \"projectId\"\n }\n }\n\n }]);\n\n\n","angular\n .module('DigiLean')\n .controller(\"improvementController\", ['$scope', '$document', '$filter', 'authService', '$uibModal', 'suggestionService',\n function ($scope, $document, $filter, authService, $uibModal, suggestionService) {\n $scope.userName = authService.getCurrentUser().userName;\n\n // Get all 3 years back\n var startDate = moment().subtract(36, 'month').startOf(\"month\");\n var endDate = moment().endOf('month');\n $scope.timePeriod = {\n from: startDate.utc().toDate().toJSON(),\n to: endDate.utc().toDate().toJSON()\n }\n\n $scope.new = {\n list: [],\n filteredList: []\n };\n $scope.suggestionStatus1 = {\n list: [],\n filteredList: []\n };\n $scope.suggestionStatus2 = {\n list: [],\n filteredList: []\n };\n $scope.suggestionStatus3 = {\n list: [],\n filteredList: []\n };\n $scope.suggestionStatus4 = {\n list: [],\n filteredList: []\n };\n\n\n // UI SORTABLE => Drag and drop, SuggestionList\n $scope.suggestionSortableOptions = {\n connectWith: \".suggestioncontainer\",\n receive: changePriorityStatus\n };\n // Priority matrix options pr \n $scope.matrixSortableOptions = {\n connectWith: \"#suggestionList, .suggestioncontainer\",\n receive: changePriorityStatus\n };\n\n function changePriorityStatus (e, ui) {\n var target = ui.item.sortable.droptarget[0];\n var prioritystatus = $(target).attr(\"data-prioritystatus\");\n var source = ui.item.sortable.source[0];\n var sourceStatus = $(source).attr(\"data-prioritystatus\");\n var suggestion = ui.item.sortable.model;\n // alert(\"from priority: \" + sourceStatus + \" to: \" + prioritystatus);\n var status = \"Suggested\";\n if (prioritystatus > 0) status = \"Planned\";\n var statusData = {\n suggestionId: suggestion.id,\n status: status,\n priorityStatus: prioritystatus\n };\n\n suggestionService().changePriorityStatus(statusData).then(function () {\n // if status also has changed we need to notify\n if (suggestion.status !== statusData.status) {\n suggestionService().updateStatus(statusData).then(function () {\n\n });\n\n }\n });\n };\n\n \n $scope.subscribe(\"ImprovementLikeAdded\", function (like) {\n var existingSuggestions = $filter('filter')($scope.new.list, { id: like.improvementSuggestionId }, true);\n if (existingSuggestions.length === 1) {\n var index = $scope.new.list.indexOf(existingSuggestions[0]);\n $scope.new.list[index].likes.push(like);\n }\n });\n\n $scope.subscribe(\"ImprovementTitleChanged\", function (improvementTitle) {\n var existingSuggestions = $filter('filter')($scope.new.list, { id: improvementTitle.suggestionId }, true);\n if (existingSuggestions.length === 1) {\n var index = $scope.new.list.indexOf(existingSuggestions[0]);\n $scope.new.list[index].title = improvementTitle.newTitle;\n $scope.new.list[index].cssClass = \"animated bounce\";\n\n // check filtered list\n var existingfilteredSuggestions = $filter('filter')($scope.new.filteredList, { id: improvementTitle.suggestionId }, true);\n if (existingfilteredSuggestions.length === 1) {\n var index = $scope.new.filteredList.indexOf(existingfilteredSuggestions[0]);\n $scope.new.filteredList[index].title = improvementTitle.newTitle;\n $scope.new.filteredList[index].cssClass = \"animated bounce\"; \n }\n }\n });\n\n \n\n\n $scope.subscribe(\"ImprovementResponsibleChanged\", function (improvementResponsible) {\n // find suggestion by id\n var existingSuggestions = $filter('filter')($scope.new.list, { id: improvementResponsible.suggestionId }, true);\n if (existingSuggestions.length === 1) {\n var index = $scope.new.list.indexOf(existingSuggestions[0]);\n $scope.new.list[index].responsibleUserId = improvementResponsible.newResponsibleUserId;\n $scope.new.list[index].responsibleUser = improvementResponsible.newResponsibleUser;\n $scope.new.list[index].cssClass = \"animated bounce\"; // Add animation\n\n var existingfilteredSuggestions = $filter('filter')($scope.new.filteredList, { id: improvementResponsible.suggestionId }, true);\n if (existingfilteredSuggestions.length === 1) {\n var index = $scope.new.filteredList.indexOf(existingfilteredSuggestions[0]);\n $scope.new.filteredList[index].responsibleUserId = improvementResponsible.newResponsibleUserId;\n $scope.new.filteredList[index].responsibleUser = improvementResponsible.newResponsibleUser;\n $scope.new.filteredList[index].cssClass = \"animated bounce\"; // Add animation\n }\n }\n });\n\n $scope.subscribe(\"ImprovementUpdated\", function (suggestion) {\n suggestion.cssClass = \"animated bounce\"; // Add animation\n // find suggestion by id\n suggestionService().get(suggestion.id).then(function (fullSuggestion) {\n var existingSuggestions = $filter('filter')($scope.new.list, { id: fullSuggestion.id }, true);\n if (existingSuggestions.length === 1) {\n var index = $scope.new.list.indexOf(existingSuggestions[0]);\n fullSuggestion.cssClass = \"animated bounce\";\n $scope.new.list[index] = fullSuggestion;\n }\n\n var existingfilteredSuggestions = $filter('filter')($scope.new.filteredList, { id: fullSuggestion.id }, true);\n if (existingfilteredSuggestions.length === 1) {\n var index2 = $scope.new.filteredList.indexOf(existingfilteredSuggestions[0]);\n fullSuggestion.cssClass = \"animated bounce\";\n $scope.new.filteredList[index2] = fullSuggestion;\n }\n });\n\n });\n\n\n function removeAnmiation(suggestion) {\n setTimeout(function () {\n suggestion.cssState = \"\";\n }, 1000);\n }\n\n $scope.filterById = function (value) {\n return ($scope.filterValues.indexOf(value.id) !== -1);\n };\n\n\n $scope.suggestionOpenForEdit = function (suggestion) {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: $scope.animationsEnabled,\n templateUrl: 'fullImprovementInfoForm.html',\n controller: 'fullImprovementModalController',\n windowClass: 'fullSuggestion-modal-window',\n resolve: {\n suggestion: function () {\n return suggestion;\n },\n activeTab: function () {\n return \"Info\";\n }\n }\n });\n modalInstance.result.then(function (updatedSuggestion) {\n suggestion.roi = updatedSuggestion.roi;\n });\n }\n\n\n $scope.showComments = function (suggestion) {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: $scope.animationsEnabled,\n templateUrl: 'fullImprovementInfoForm.html',\n controller: 'fullImprovementModalController',\n windowClass: 'fullSuggestion-modal-window',\n resolve: {\n suggestion: function () {\n return suggestion;\n },\n activeTab: function () {\n return \"Comments\";\n }\n }\n });\n modalInstance.result.then(function (updatedSuggestion) {\n suggestion.roi = updatedSuggestion.roi;\n });\n\n }\n\n $scope.likedByMe = function (suggestion) {\n if (suggestion.likes) {\n for (var i = 0; i < suggestion.likes.length; i++) {\n if (suggestion.likes[i].likedBy === $scope.userName) {\n return true;\n }\n }\n }\n return false;\n }\n\n $scope.commentedByMe = function (suggestion) {\n if (suggestion.comments) {\n for (var i = 0; i < suggestion.comments.length; i++) {\n if (suggestion.comments[i].commentedBy === $scope.userName) {\n return true;\n }\n }\n }\n return false;\n }\n\n $scope.addComment = function (suggestion) {\n if (typeof suggestion.comments === 'undefined') {\n suggestion.comments = [];\n }\n\n var currentComment = {\n suggestionId: suggestion.id,\n comment: suggestion.activeComment\n };\n suggestionService().addComment(currentComment).then(function (savedComment) {\n suggestion.comments.push(savedComment);\n });\n suggestion.activeComment = \"\";\n }\n\n $scope.like = function (suggestion) {\n\n if (typeof suggestion.likes === 'undefined' || suggestion.likes === null) {\n suggestion.likes = [];\n }\n // TODO: Should check if current user has already liked, then remove like\n suggestionService().addLike(suggestion.id).then(function (like) {\n // Like event will increase counter\n });\n }\n\n\n $scope.newItem = function () {\n const modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'newSuggestionForm.html',\n controller: 'newSuggestionModalController',\n resolve: {\n suggestion: function () {\n return {\n id: 0,\n title: \"\",\n text: \"\",\n suggestedBy: \"\",\n suggestionDate: new Date(),\n showComments: false,\n likes: [],\n comments: [],\n }\n }\n }\n })\n\n modalInstance.result.then(function (suggestion) {\n suggestionService().addSuggestion(suggestion)\n }, () => {})\n }\n }]);","angular\n .module('DigiLean')\n .directive(\"improvementList\", ['$filter', '$translate',\n function ($filter, $translate) {\n return {\n templateUrl: 'improvementList.html',\n restrict: 'E',\n scope: {\n\n },\n link: function (scope, elem, attrs) {\n scope.filterChanged = function (filter) {\n scope.params.filter = filter\n }\n scope.params = {\n \n };\n\n scope.listOptions = {\n showFilter : true,\n showFileGenerators: true,\n showArchived: true\n }\n }\n }\n }]);\n","// TODO: check if in use\n\nangular\n .module('DigiLean')\n .directive(\"teammemberimprovement\", ['$uibModal', 'boardTaskService', 'suggestionService',\n function ($uibModal, boardTaskService, suggestionService) {\n return {\n templateUrl: 'teammemberimprovement.html',\n restrict: 'E',\n scope: {\n 'user': '='\n },\n link: function (scope, element, attrs) {\n scope.tasks = [];\n\n scope.improvementOverdueCount = 0;\n scope.improvementTodayCount = 0;\n scope.improvementFutureCount = 0;\n\n scope.$watch(\"user\", function (user) { \n if(user){\n scope.user = user;\n getUserTasks(user.userId);\n }\n });\n\n scope.openImprovement = function (improvementid) {\n\n suggestionService().get(improvementid).then(function (suggestion) {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n templateUrl: 'fullImprovementInfoForm.html',\n controller: 'fullImprovementModalController',\n windowClass: 'fullSuggestion-modal-window',\n resolve: {\n suggestion: function () {\n return suggestion;\n },\n activeTab: function () {\n return \"Info\";\n }\n }\n });\n });\n };\n\n function getUserTasks(userId) {\n boardTaskService().getUserTasks(userId).then(function (data) {\n\n data.overdue.forEach(function (element, index, array) {\n if(element.taskType === 'Improvement'){\n scope.improvementOverdueCount = scope.improvementOverdueCount + 1;\n element.dateStyleClass = \"overdue\";\n scope.tasks.push(element);\n }\n });\n data.today.forEach(function (element, index, array) {\n if (element.taskType === 'Improvement'){\n scope.improvementTodayCount = scope.improvementTodayCount + 1;\n scope.tasks.push(element);\n }\n });\n data.future.forEach(function (element, index, array) {\n if (element.taskType === 'Improvement'){\n scope.improvementFutureCount = scope.improvementFutureCount + 1;\n scope.tasks.push(element);\n }\n\n });\n scope.improvementCount = scope.improvementOverdueCount + scope.improvementTodayCount + scope.improvementFutureCount;\n });\n }\n\n scope.newPieChart = {\n data: [0, 0, 0, 0], \n options: {\n radius: 18,\n fill: [\"#f3f3f4\"],\n }\n };\n scope.planPieChart = {\n data: [1, 1, 1, 1], \n options: {\n radius: 18, \n fill: [\"#23c6c8\", \"#ffffff\", \"#ffffff\",\"#ffffff\"],\n }\n };\n scope.doPieChart = {\n data: [1, 1, 1, 1], \n options: {\n radius: 18,\n fill: [\"#23c6c8\", \"#23c6c8\", \"#ffffff\",\"#ffffff\"],\n }\n };\n scope.actPieChart = {\n data: [1, 1, 1, 1], \n options: {\n radius: 18,\n fill: [\"#23c6c8\", \"#23c6c8\", \"#23c6c8\", \"#23c6c8\"]\n }\n };\n }\n }\n }]);\n","angular\n .module('DigiLean')\n .controller('improvementstatusController', ['$scope', \n function($scope) {\n\n \n }]);","angular\n .module('DigiLean')\n .directive(\"initiativeTimeRealizationPerGroup\", ['$translate', 'suggestionService',\n function ($translate, suggestionService) {\n return {\n templateUrl: 'initiativeTimeRealizationPerGroup.html',\n restrict: 'E',\n scope: {\n 'header': '@',\n 'component': '@'\n },\n link: function (scope, elem, attrs) {\n scope.timeframe = \"thisyear\";\n\n scope.options = {\n timePeriod: {\n timeframe: \"thisyear\",\n useDefaultTimeframes: true,\n timeframes:[]\n }\n };\n \n var chartHeight = 400;\n var grafcolor = ['#2A2E36', '#0099DE', '#5cb85c', '#0077B5', '#5e5e5e', '#f8ac59', '#434348', '#434338'],\n graphtextcolor = '#ffffff';\n\n var initiatives = [];\n \n\n var yAxisText = \"\";\n var unrealizedLabel = \"\";\n var realizedLabel = \"\";\n $translate(['COMMON_HOURS','A3_REALIZED', 'COMMON_ESTIMATED']).then(function (translations) {\n \n yAxisText = translations.COMMON_HOURS;\n realizedLabel = translations.A3_REALIZED;\n unrealizedLabel = translations.COMMON_ESTIMATED;\n getData();\n });\n \n\n scope.periodChangedHandler = function (timePeriod) {\n scope.timePeriod = timePeriod.period;\n scope.timeframe = timePeriod.timeframe;\n getData();\n }\n\n function getData() {\n if (!scope.timePeriod) return;\n var realized = [],\n estimated = [],\n labelcategories = [];\n suggestionService().getTimeRealizationForAssets(scope.timePeriod).then(function (result) {\n initiatives = result;\n\n if(result && result.length > 10){ \n chartHeight = 400 + 30*(result.length -10);\n }\n // Build the data arrays\n for (var i = 0; i < result.length; i++) {\n var estimatedValue = 0;\n if(result[i].estimated){\n estimatedValue = result[i].estimated;\n }\n var realizedValue = 0;\n if(result[i].realized){\n realizedValue = result[i].realized;\n } \n if(result[i].assetName){\n labelcategories.push(result[i].assetName);\n } else {\n labelcategories.push($translate.instant('COMMON_UNDEFINED')); \n }\n \n estimated.push(estimatedValue); \n realized.push(realizedValue);\n }\n\n var renderElement = $(elem).find(\".initiativeTimeRealizationPerGroup\")[0];\n if (renderElement)\n Highcharts.chart({\n chart: {\n renderTo: renderElement,\n type: 'bar',\n height: chartHeight,\n },\n title: {\n text: ''\n },\n xAxis: {\n categories: labelcategories \n },\n yAxis: {\n min: 0,\n title: {\n text: yAxisText \n }\n },\n credits: {\n enabled: false\n },\n exporting: { enabled: false },\n legend: {\n reversed: true\n },\n plotOptions: {\n series: {\n stacking: 'normal',\n },bar: {\n dataLabels: { \n formatter: function(){\n return this.point.name\n },\n enabled: true\n }\n }\n },\n series: [\n {\n name: unrealizedLabel,\n data: estimated,\n color: grafcolor[7] \n },\n {\n name: realizedLabel, \n data: realized,\n color: grafcolor[2]\n }]\n });\n });\n }\n }\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"leadtimeImprovement\", ['$filter', '$translate', 'suggestionService', 'authService',\n function ($filter, $translate, suggestionService, authService) {\n return {\n templateUrl: 'leadtimeImprovement.html',\n restrict: 'E',\n scope: {\n 'header': '@',\n 'component': '@'\n },\n link: function (scope, elem, attrs) {\n scope.timeframe = \"year\";\n var chartHeight = 400;\n\n scope.options = {\n timePeriod: {\n timeframe: \"year\",\n useDefaultTimeframes: true,\n timeframes:[]\n }\n };\n \n\n var grafcolor = ['#2A2E36', '#0099DE', '#5cb85c', '#0077B5', '#5e5e5e', '#f8ac59', '#434348'],\n graphtextcolor = '#ffffff';\n\n // Leadtime diagram\n var leadtimecategories = [],\n dataFromImplementedToEvaluated = [],\n dataFromInProgressToImplemented = [],\n dataFromPlannedToInProgress = [],\n dataFromNewToPlanned = [];\n\n\n var yAxisText = \"\";\n var fromImplToEval = \"\";\n var fromInProgressToImpl = \"\";\n var fromPlannedToInProgress = \"\";\n var fromNewToPlanned = \"\";\n $translate(['IMPROVEMENT_TOTAL_LEAD_TIME', 'IMPROVEMENT_FROM_IMPL_TO_EVALUATED', 'IMPROVEMENT_FROM_IN_PROGRESS_TO_IMPL', 'IMPROVEMENT_FROM_PLANNED_TO_IN_PROGRESS', 'IMPROVEMENT_FROM_NEW_TO_PLANNED']).then(function (translations) {\n yAxisText = translations.IMPROVEMENT_TOTAL_LEAD_TIME;\n fromImplToEval = translations.IMPROVEMENT_FROM_IMPL_TO_EVALUATED;\n fromInProgressToImpl = translations.IMPROVEMENT_FROM_IN_PROGRESS_TO_IMPL;\n fromPlannedToInProgress = translations.IMPROVEMENT_FROM_PLANNED_TO_IN_PROGRESS;\n fromNewToPlanned = translations.IMPROVEMENT_FROM_NEW_TO_PLANNED;\n getData();\n });\n\n scope.periodChangedHandler = function (timePeriod) {\n scope.timePeriod = timePeriod.period;\n scope.timeframe = timePeriod.timeframe;\n getData();\n }\n\n function getData() {\n if (!scope.timePeriod) return;\n var leadtimecategories = [],\n dataFromImplementedToEvaluated = [],\n dataFromInProgressToImplemented = [],\n dataFromPlannedToInProgress = [],\n dataFromNewToPlanned = [];\n\n suggestionService().getLeadTimeForAssets(scope.timePeriod).then(function (result) {\n var leadtimedata = result.results;\n\n if(leadtimedata && leadtimedata.length > 5){ \n chartHeight = 400 + 30*(leadtimedata.length -5);\n }\n // Build the data arrays\n for (var i = 0; i < leadtimedata.length; i++) {\n leadtimecategories.push(leadtimedata[i].asset);\n dataFromImplementedToEvaluated.push(leadtimedata[i].fromImplementedToEvaluated);\n dataFromInProgressToImplemented.push(leadtimedata[i].fromInProgressToImplemented);\n dataFromPlannedToInProgress.push(leadtimedata[i].fromPlannedToInProgress);\n dataFromNewToPlanned.push(leadtimedata[i].fromNewToPlanned);\n }\n\n var renderElement = $(elem).find(\".leadtime\")[0];\n if (renderElement)\n Highcharts.chart({\n chart: {\n renderTo: renderElement,\n type: 'bar',\n height: chartHeight,\n },\n title: {\n text: ''\n },\n xAxis: {\n categories: leadtimecategories\n },\n yAxis: {\n min: 0,\n title: {\n text: yAxisText //'Total lead time'\n }\n },\n credits: {\n enabled: false\n },\n exporting: { enabled: false },\n legend: {\n reversed: true\n },\n plotOptions: {\n series: {\n stacking: 'normal'\n }\n },\n series: [{\n name: fromImplToEval, //'From Implemented to Evaluated',\n data: dataFromImplementedToEvaluated,\n color: grafcolor[5] //'#f8ac59'\n }, {\n name: fromInProgressToImpl, //'From In Progress to Implemented',\n data: dataFromInProgressToImplemented,\n color: grafcolor[2] //'#23c6c8'\n }, {\n name: fromPlannedToInProgress, //'From Planned to In Progress',\n data: dataFromPlannedToInProgress,\n color: grafcolor[1] //'#0099DE'\n }, {\n name: fromNewToPlanned, //'From New to Planned',\n data: dataFromNewToPlanned,\n color: grafcolor[6] //'#434348'\n }]\n });\n });\n }\n }\n }\n }]);\n","// Controller for the actual modal\nvar DigiLean = angular.module('DigiLean'); DigiLean.controller('likesController', ['$scope', '$uibModalInstance', 'suggestionService', 'suggestion',\n function ($scope, $uibModalInstance, suggestionService, suggestion) {\n \n $scope.suggestion = suggestion;\n $scope.likes = [];\n\n suggestionService().getLikesForSuggestion(suggestion.id).then(function(likes) {\n $scope.likes = likes;\n });\n \n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n\n }]);","angular\n .module('DigiLean')\n .directive(\"monthlystatusImprovement\", ['$filter', '$translate', 'suggestionService', 'authService', 'layoutService',\n function ($filter, $translate, suggestionService, authService, layoutService) {\n return {\n templateUrl: 'monthlystatusImprovement.html',\n restrict: 'E',\n scope: {\n 'header': '@',\n 'component': '@'\n },\n link: function (scope, elem, attrs) {\n\n var grafcolor = layoutService().getColors(), //['#2A2E36', '#0099DE', '#23c6c8', '#0077B5', '#5e5e5e', '#f8ac59', '#DA4453'],\n graphtextcolor = '#ffffff',\n colorById = [];\n var chartHeight = 400;\n\n var leadtimecategories = [],\n xfirstlinecategories = [],\n xmonthcategories = [],\n browserDataSuggestionByAsset = [],\n dataFromNewToPlanned = [];\n\n var customerId = authService.getCurrentUser().customerId;\n\n function getColorById(id) {\n if (id === null) id = 0;\n var color = $filter('filter')(colorById, { id: id });\n if (color.length > 0) {\n return color[0].color;\n } else {\n var index = colorById.length % grafcolor.length;\n var newColorById = {\n id: id,\n color: grafcolor[index] //colorById.length]\n }\n colorById.push(newColorById);\n return newColorById.color;\n }\n }\n\n function getStatusData() {\n var endDate = moment().utc().endOf('month');\n var startDate = moment().utc().add(-3, 'month').startOf('month');\n // Monthly suggested, need to find start and end of month\n var timePeriod = {\n from: startDate.toDate().toJSON(),\n to: endDate.toDate().toJSON()\n };\n suggestionService().getNoOfSuggestionByAssetAndStatusAndMonth(timePeriod).then(function (result) {\n var data = result;\n var newSuggestionByAssetData = result.new;\n var implementedSuggestionByAssetData = result.implemented;\n var notSpecified = $translate.instant('COMMON_NOT_SPECIFIED');\n\n if (newSuggestionByAssetData) {\n if(newSuggestionByAssetData.length > 12){ \n chartHeight = 400 + 30*(newSuggestionByAssetData.length -12);\n }\n\n // Build the data arrays\n for (var i = 0; i < newSuggestionByAssetData.length; i++) {\n var assetId = newSuggestionByAssetData[i].assetId;\n var asset = newSuggestionByAssetData[i].asset;\n if (!assetId) {\n assetId = 0;\n asset = notSpecified;\n }\n\n // add new browser data\n browserDataSuggestionByAsset.push({\n name: asset,\n data: newSuggestionByAssetData[i].suggestionCount,\n color: getColorById(assetId),\n stack: firstlinecategorynew,\n xAxis: 1\n });\n\n // add implemented browser data\n if (implementedSuggestionByAssetData.length > i) {\n var impAssetId = implementedSuggestionByAssetData[i].assetId;\n var impAsset = implementedSuggestionByAssetData[i].asset;\n if (!impAssetId) {\n impAssetId = 0;\n impAsset = notSpecified;\n }\n browserDataSuggestionByAsset.push({\n name: impAsset,\n data: implementedSuggestionByAssetData[i].suggestionCount,\n color: getColorById(assetId),//getColorById(newSuggestionByAssetData[i].assetId),\n showInLegend: false,\n stack: firstlinecategoryimpl,\n xAxis: 1\n });\n }\n }\n\n xmonthcategories = newSuggestionByAssetData[0].monthNumbers;\n\n for (var i = 0; i < xmonthcategories.length; i++) {\n xfirstlinecategories.push('');\n xfirstlinecategories.push(firstlinecategorynew);\n xfirstlinecategories.push(firstlinecategoryimpl);\n xfirstlinecategories.push('');\n }\n\n var zeroes = [];\n xfirstlinecategories.forEach(function () { zeroes.push(0); });\n\n\n browserDataSuggestionByAsset.push({\n name: '',\n data: zeroes,\n showInLegend: false,\n stack: firstlinecategoryimpl,\n });\n\n var monthly = $(elem).find(\".monthlystatus\")\n Highcharts.chart({\n chart: {\n renderTo: monthly[0],\n type: 'column',\n height: chartHeight,\n },\n\n\n title: {\n text: ''\n },\n\n credits: {\n enabled: false\n },\n exporting: { enabled: false },\n\n xAxis: [\n {\n categories: xfirstlinecategories,\n labels: { autoRotation: false, style: { textOverflow: 'none' } },\n tickWidth: 0,\n },\n {\n categories: xmonthcategories,\n lineColor: graphtextcolor,\n tickWidth: 1,\n tickLength: 30\n },\n ],\n\n yAxis: {\n allowDecimals: false,\n min: 0,\n title: {\n text: noOfSuggestions\n }\n },\n\n tooltip: {\n formatter: function () {\n return '' + this.x + ' ' + this.series.options.stack + '
' +\n this.series.name + ': ' + this.y + '
' +\n 'Total: ' + this.point.stackTotal;\n }\n },\n plotOptions: {\n series: {\n events: {\n legendItemClick: function () {\n var myname = this.name;\n var myvis = !this.visible;\n this.chart.series.forEach(function (elem) {\n if (elem.name == myname) {\n elem.setVisible(myvis);\n }\n });\n return false;\n }\n }\n },\n column: {\n stacking: 'normal',\n groupPadding: 0.20,\n }\n },\n series: browserDataSuggestionByAsset\n });\n }\n\n });\n\n\n }\n\n var firstlinecategorynew = \"\";\n var firstlinecategoryimpl = \"\";\n var noOfSuggestions = \"\";\n var fromInProgressToImpl = \"\";\n var fromPlannedToInProgress = \"\";\n var fromNewToPlanned = \"\";\n\n $translate(['COMMON_NEW', 'IMPROVEMENT_IMPL', 'IMPROVEMENT_NUMBER_OF_SUGGESTIONS', 'IMPROVEMENT_FROM_PLANNED_TO_IN_PROGRESS', 'IMPROVEMENT_FROM_NEW_TO_PLANNED']).then(function (translations) {\n firstlinecategorynew = translations.COMMON_NEW;\n firstlinecategoryimpl = translations.IMPROVEMENT_IMPL;\n noOfSuggestions = translations.IMPROVEMENT_NUMBER_OF_SUGGESTIONS;\n fromInProgressToImpl = translations.IMPROVEMENT_FROM_IN_PROGRESS_TO_IMPL;\n fromPlannedToInProgress = translations.IMPROVEMENT_FROM_PLANNED_TO_IN_PROGRESS;\n fromNewToPlanned = translations.IMPROVEMENT_FROM_NEW_TO_PLANNED;\n\n getStatusData();\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","var DigiLean = angular.module('DigiLean'); \nDigiLean.controller('mysuggestionsController', ['$scope', '$filter', '$uibModal', '$uibModalInstance', 'suggestionService','navigationService',\n function ($scope, $filter, $uibModal,$uibModalInstance, suggestionService, navigationService) {\n $scope.isLoading = true;\n $scope.hasImprovementModule = navigationService().hasModule(\"IMPROVEMENT\");\n $scope.subscribe('UserAuthenticatedAndReady', function (profile) {\n var hasAccess = $filter('filter')(profile.modules, { name: \"IMPROVEMENT\" });\n $scope.hasImprovementModule = hasAccess.length > 0;\n });\n\n $scope.items = [];\n $scope.suggestions = [];\n $scope.subscribe(\"ImprovementChangedStatus\", function (improvementStatus) {\n // Check if comment is related to one of users\n var improvement = $filter('filter')($scope.suggestions, { id: improvementStatus.suggestionId }, true);\n if (improvement.length > 0) {\n improvement[0].status = improvementStatus.status;\n improvement[0].changed = true;\n }\n });\n $scope.subscribe(\"ImprovementUpdated\", function (suggestion) {\n suggestion.cssClass = \"animated bounce\"; // Add animation\n suggestion.changed = true;\n // find suggestion by id\n var existingSuggestions = $filter('filter')($scope.suggestions, { id: suggestion.id }, true);\n if (existingSuggestions.length === 1) {\n var index = $scope.suggestions.indexOf(existingSuggestions[0]);\n $scope.suggestions[index] = suggestion;\n $scope.$apply();\n }\n });\n $scope.subscribe(\"ImprovementTitleChanged\", function (suggestion) {\n var existingSuggestions = $filter('filter')($scope.suggestions, { id: suggestion.suggestionId }, true);\n if (existingSuggestions.length === 1) {\n existingSuggestions[0].title = suggestion.newText;\n existingSuggestions[0].cssClass = \"animated bounce\"; // Add animation\n existingSuggestions[0].changed = true;\n $scope.$apply();\n }\n });\n \n $scope.subscribe(\"SuggestionCommentedOn\", function (suggestionComment) {\n var improvement = $filter('filter')($scope.suggestions, { id: suggestionComment.improvementSuggestionId }, true);\n if (improvement.length > 0) {\n improvement[0].changed = true;\n improvement[0].comments.push(suggestionComment);\n }\n });\n // Get suggestions\n var getSuggestions = function () {\n suggestionService().getMySuggestions().then(function (suggestions) {\n suggestions.forEach(function (suggestion) {\n suggestion.activeComment = \"\";\n suggestion.changed = false;\n });\n $scope.suggestions = suggestions;\n $scope.isLoading = false;\n });\n }\n getSuggestions();\n\n $scope.showComments = function (suggestion) {\n suggestion.showComments = !suggestion.showComments;\n suggestion.showLikes = false;\n }\n\n $scope.showLikes = function (suggestion) {\n suggestion.showComments = false;\n suggestionService().getLikesForSuggestion(suggestion.id).then(function(likes) {\n suggestion.likes = likes;\n suggestion.showLikes = !suggestion.showLikes;\n });\n \n }\n\n \n\n $scope.addComment = function (suggestion) {\n if (typeof suggestion.comments === 'undefined') {\n suggestion.comments = [];\n }\n\n var currentComment = {\n suggestionId: suggestion.id,\n comment: suggestion.activeComment\n };\n suggestionService().addComment(currentComment).then(function (savedComment) {\n\n });\n suggestion.activeComment = \"\";\n\n }\n\n $scope.openImprovementSuggestion = function (improvementsuggestionid) {\n suggestionService().get(improvementsuggestionid).then(function (suggestion) {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n templateUrl: 'fullImprovementInfoForm.html',\n controller: 'fullImprovementModalController',\n windowClass: 'fullSuggestion-modal-window',\n resolve: {\n suggestion: function () {\n return suggestion;\n },\n activeTab: function () {\n return \"Info\";\n }\n }\n });\n // When user has created new suggestion\n modalInstance.result.then(function (suggestion) {\n var existingSuggestions = $filter('filter')($scope.suggestions, { id: suggestion.id }, true);\n if (existingSuggestions.length === 1) {\n var index = $scope.suggestions.indexOf(existingSuggestions[0]);\n $scope.suggestions[index] = suggestion;\n $scope.$apply();\n }\n }, function () {\n //$log.info('Modal dismissed at: ' + new Date());\n });\n });\n }\n\n $scope.close = function () {\n $uibModalInstance.close(); \n };\n\n }]);","angular\n .module('DigiLean')\n .controller(\"newFeedbackModalController\", ['$scope', '$uibModalInstance', 'suggestion', 'authService',\n function ($scope, $uibModalInstance, suggestion, authService) {\n\n // the new action object\n $scope.suggestion = suggestion;\n $scope.uploadedFiles = [];\n\n function isInputfieldsValid(){\n $scope.missingTitle = false\n if(!$scope.suggestion.title){\n $scope.missingTitle = true\n return false;\n }\n return true;\n }\n\n $scope.ok = function () {\n if(!isInputfieldsValid()){\n return;\n }\n $scope.suggestion.attachments = $scope.uploadedFiles;\n $uibModalInstance.close($scope.suggestion);\n };\n\n $scope.close = function () {\n $uibModalInstance.dismiss('cancel');\n }\n }]);","\nangular\n .module('DigiLean')\n .component(\"improvementColumn\", {\n templateUrl: 'improvementColumn.html',\n bindings: {\n context: '@',\n label: '@',\n labelNew: '@',\n name: '@',\n data: '<',\n columnLoaded: '&'\n },\n controller: ['$element', '$translate', 'improvementCommonService',\n function ($element, $translate, improvementCommonService) {\n var $ctrl = this\n $ctrl.labelText = \"default\"\n $ctrl.labelNewText = \"\"\n \n $ctrl.$onChanges = function (changes) {\n if (changes.label) {\n if (changes.label.currentValue) {\n $ctrl.labelText = $translate.instant(changes.label.currentValue)\n }\n }\n if (changes.labelNew) {\n if (changes.labelNew.currentValue) {\n $ctrl.labelNewText = $translate.instant(changes.labelNew.currentValue)\n }\n }\n }\n\n $ctrl.newClicked = function() {\n const options = {detail: \"new\", bubbles: false, composed: true}\n $element[0].dispatchEvent(new CustomEvent(\"new-improvement-clicked\", options))\n }\n $ctrl.hasDueDate = function (item) {\n if (item.dueDate) {\n return true\n } else return false\n }\n\n $ctrl.hasResponsible = function (item) {\n if (item.responsibleUserId) {\n return true;\n } else return false;\n }\n\n $ctrl.hasFinancialNumbers = function (item) {\n if (item.estimatedCostOfInvestment > 0 || item.costOfInvestment > 0 || item.estimatedGainOfInvestment > 0 || item.gainOfInvestment > 0) {\n return true;\n } else return false;\n };\n\n $ctrl.$onInit = function() {\n if (!$ctrl.data)\n $ctrl.data = []\n }\n\n $ctrl.$postLink = function() {\n if ($ctrl.columnLoaded) {\n const ulEl = $element[0].querySelector(\"ul\")\n $ctrl.columnLoaded({column: ulEl})\n }\n \n }\n \n $ctrl.suggestionOpenForEdit = (suggestion) => {\n improvementCommonService.suggestionOpenForEdit(suggestion.id).then(updatedSuggestion => {\n suggestion.roi = updatedSuggestion.roi;\n })\n }\n }]\n });","angular.module(\"DigiLean\").factory('improvementCommonService', ['suggestionService', '$uibModal',\n function (suggestionService, $uibModal) {\n const suggestionOpenForEdit = function (suggestionId) {\n return suggestionService().get(suggestionId).then(function (suggestion) {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: false,\n templateUrl: 'fullImprovementInfoForm.html',\n controller: 'fullImprovementModalController',\n windowClass: 'fullSuggestion-modal-window',\n resolve: {\n suggestion: function () {\n return suggestion\n },\n activeTab: function () {\n return \"Info\"\n }\n }\n })\n return modalInstance.result.then(function (updatedSuggestion) {\n return updatedSuggestion\n })\n })\n }\n\n return {\n suggestionOpenForEdit\n }\n }\n])","angular\n .module('DigiLean')\n .directive(\"priorityMatrixApp\", ['$filter', '$sce',\n function ($filter, $sce) {\n return {\n templateUrl: 'priorityMatrixApp.html',\n restrict: 'E',\n scope: {\n 'isAdminMode': '=',\n 'settings': '=',\n 'settingsChangeHandler': '&'\n },\n link: function (scope, elem, attrs) {\n\n scope.title = \"\";\n scope.filter = null;\n // Dashboard Settings handling\n scope.$watch('settings', function (settings) {\n scope.settings = settings;\n if (scope.settings) {\n scope.title = settings.title;\n scope.filter = settings.filter;\n }\n });\n\n scope.updateSettings = function () {\n if (scope.isAdminMode == false) return;\n var componentSettings = {\n title: scope.title,\n filter: scope.filter,\n };\n scope.settingsChangeHandler({ settings: componentSettings });\n }\n\n scope.filterChanged = function (filter) {\n console.log(\"priorityMatrix filter changed\");\n scope.filter = filter;\n scope.updateSettings(); \n }\n\n }\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"rangeImprovement\", ['$filter', 'suggestionService','authService',\n function ($filter, suggestionService, authService) {\n return {\n templateUrl: 'rangeImprovement.html',\n restrict: 'E',\n scope: {\n 'header': '@',\n 'component': '@'\n },\n link: function (scope, elem, attrs) {\n // Get data from previous period \n var previousperiod = {\n from: moment().add(-60, 'days').toDate().toJSON(),\n to: moment().add(-30, 'days').toDate().toJSON()\n };\n scope.previousRankingData = [];\n\n // Get data for current period\n var period = {\n from: moment().add(-30, 'days').toDate().toJSON(),\n to: moment().add(1, 'days').toDate().toJSON()\n };\n scope.rankingData = [];\n suggestionService().getImplementedSuggestionByAsset(period).then(function (data) {\n scope.rankingData = data;\n suggestionService().getImplementedSuggestionByAsset(previousperiod).then(function (prevdata) {\n scope.previousRankingData = prevdata;\n setTrend();\n }); \n });\n\n function setTrend() {\n for (var i = 0; i < scope.rankingData.length; i++) {\n scope.rankingData[i].trend = 1;\n for (var j = 0; j < scope.previousRankingData.length; j++) {\n if (scope.rankingData[i].assetName === scope.previousRankingData[j].assetName){\n scope.rankingData[i].trend = j - i;\n }\n } \n } \n }\n\n }\n }\n }]);\n","var DigiLean = angular.module(\"DigiLean\")\nDigiLean.component(\"feedbackStatus\", \n{\n templateUrl: \"feedbackstatus.html\",\n bindings: {\n 'status': '<',\n },\n controller: [function(suggestionService) {\n let $ctrl = this\n $ctrl.status = \"\"\n\n // $ctrl.$onInit = function() {\n // console.log(`status=${$ctrl.status}`)\n // }\n }]\n})","angular\n .module('DigiLean')\n .directive(\"topTimeImprovementInitiatives\", ['$filter', '$state','$translate', '$uibModal','suggestionService',\n function ($filter, $state,$translate, $uibModal,suggestionService) {\n return {\n templateUrl: 'topTimeImprovementInitiatives.html',\n restrict: 'E',\n scope: {\n 'header': '@',\n 'component': '@'\n },\n link: function (scope, elem, attrs) {\n scope.timeframe = \"thisyear\";\n\n scope.options = {\n timePeriod: {\n timeframe: \"thisyear\",\n useDefaultTimeframes: true,\n timeframes:[]\n }\n };\n \n var chartHeight = 400;\n var grafcolor = ['#2A2E36', '#0099DE', '#5cb85c', '#0077B5', '#5e5e5e', '#f8ac59', '#434348', '#434338'],\n graphtextcolor = '#ffffff';\n\n var initiatives = [];\n \n\n var yAxisText = \"\";\n var unrealizedLabel = \"\";\n var realizedLabel = \"\";\n\n $translate(['COMMON_HOURS','A3_REALIZED', 'COMMON_ESTIMATED']).then(function (translations) {\n \n yAxisText = translations.COMMON_HOURS;\n realizedLabel = translations.A3_REALIZED;\n unrealizedLabel = translations.COMMON_ESTIMATED;\n getData();\n });\n \n\n scope.periodChangedHandler = function (timePeriod) {\n scope.timePeriod = timePeriod.period;\n scope.timeframe = timePeriod.timeframe;\n getData();\n }\n\n function getMoreInfo(index){\n var selected = initiatives[index];\n if(selected && selected.improvementSuggestionId){\n suggestionService().get(selected.improvementSuggestionId).then(function (suggestion) {\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n templateUrl: 'fullImprovementInfoForm.html',\n controller: 'fullImprovementModalController',\n windowClass: 'fullSuggestion-modal-window',\n resolve: {\n suggestion: function () {\n return suggestion;\n },\n activeTab: function () {\n return \"Info\";\n }\n }\n });\n modalInstance.result.then(function (updatedSuggestion) {\n scope.getValues();\n });\n });\n } else if(selected && selected.a3Id){\n $state.go('a3wizard', { id: selected.a3Id });\n }\n }\n\n function getData() {\n if (!scope.timePeriod) return;\n var realized = [],\n estimated = [],\n labelcategories = [];\n suggestionService().getTopTimeImprovementInitiatives(scope.timePeriod).then(function (result) {\n initiatives = result;\n\n if(result && result.length > 10){ \n chartHeight = 400 + 30*(result.length -10);\n }\n // Build the data arrays\n for (var i = 0; i < result.length; i++) {\n var estimatedValue = 0;\n if(result[i].estimated){\n var text = '';\n if(result[i].endDate){\n text = moment(result[i].endDate).format(\"MMM DD, YYYY\");\n }\n estimatedValue = [text, result[i].estimated];\n }\n var realizedValue = 0;\n if(result[i].realized){\n var text = '';\n if(result[i].endDate){\n text = moment(result[i].endDate).format(\"MMM DD, YYYY\");\n }\n realizedValue = [text,result[i].realized];\n } \n labelcategories.push(result[i].title);\n estimated.push(estimatedValue); \n realized.push(realizedValue);\n }\n\n var renderElement = $(elem).find(\".toptimeimprovementinitiatives\")[0];\n if (renderElement)\n Highcharts.chart({\n chart: {\n renderTo: renderElement,\n type: 'bar',\n height: chartHeight,\n },\n title: {\n text: ''\n },\n xAxis: {\n categories: labelcategories \n },\n yAxis: {\n min: 0,\n title: {\n text: yAxisText \n }\n },\n credits: {\n enabled: false\n },\n exporting: { enabled: false },\n legend: {\n reversed: true\n },\n plotOptions: {\n series: {\n stacking: 'normal',\n point: {\n events: {\n click: function(te) {\n getMoreInfo(this.x);\n }\n }\n }\n },bar: {\n dataLabels: { \n formatter: function(){\n return this.point.name\n },\n enabled: true\n }\n }\n },\n series: [\n {\n name: unrealizedLabel,\n data: estimated,\n color: grafcolor[7] \n },{\n name: realizedLabel, \n data: realized,\n color: grafcolor[2]\n }]\n });\n });\n }\n }\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"widgetImprovementStatus\", ['$filter', 'suggestionService',\n function ($filter, suggestionService) {\n return {\n templateUrl: 'widgetImprovementStatus.html',\n restrict: 'E',\n scope: {\n 'header': '@',\n 'component': '@'\n },\n link: function (scope, elem, attrs) {\n // Get data from previous period \n scope.noNew = 0;\n scope.noPlanned = 0;\n scope.noInProgress =0;\n scope.noImplemented = 0;\n scope.noEvaluated = 0;\n scope.noArchived = 0;\n\n suggestionService().getNoImprovementPerStatus(null).then(function (statusdata) {\n scope.noNew = statusdata.new;\n scope.noPlanned = statusdata.planned;\n scope.noInProgress = statusdata.inProgress;\n scope.noImplemented = statusdata.implemented;\n scope.noEvaluated = statusdata.evaluated;\n scope.noArchived = statusdata.archived;\n });\n\n }\n };\n }]);\n","angular\n .module('DigiLean')\n .controller(\"learningPageCommentController\", ['$scope', '$uibModalInstance', 'selectedPage', 'material', \n function ($scope, $uibModalInstance, selectedPage, material) {\n $scope.selectedPageId = selectedPage.id\n $scope.materialId = material.id\n $scope.pagetitle = selectedPage.title\n\n $scope.close = function () {\n $uibModalInstance.dismiss('cancel')\n }\n\n }])\n","2\nangular\n .module('DigiLean')\n .directive(\"learningPageEvaluation\", ['evaluationService','favoriteService',\n function (evaluationService, favoriteService) {\n return {\n templateUrl: 'learningPageEvaluation.html',\n restrict: 'E',\n scope: {\n 'pageId': '<',\n 'fileName': '<',\n 'isExternal': '<'\n },\n link: function (scope, elem, attrs) {\n scope.isUseful = false;\n scope.isNotUseful = false;\n scope.isStar = false;\n scope.$watch('pageId', function (pageId) {\n if (!pageId) return;\n scope.isUseful = false;\n scope.isNotUseful = false;\n evaluationService().getMyEvaluationForPage(scope.isExternal, pageId).then(function(evaluation) {\n if (evaluation) {\n if (evaluation.value == 1) {\n scope.isUseful = true;\n } else {\n scope.isNotUseful = true;\n }\n }\n })\n favoriteService().hasPageAsFavorite(pageId).then(function(status) {\n scope.isStar = status;\n })\n });\n\n scope.setUseful = function() {\n var evaluation = {\n value: 1\n }\n if (!scope.isUseful) {\n evaluationService().evaluatePage(scope.isExternal, scope.pageId, evaluation).then(function(comment){\n scope.isUseful = true;\n scope.isNotUseful = false;\n });\n } else {\n evaluationService().removeEvaluationFromPage(scope.isExternal, scope.pageId).then(function(comment){\n scope.isUseful = false;\n scope.isNotUseful = false;\n });\n }\n }\n scope.setNotUseful = function() {\n var evaluation = {\n value: -1\n }\n if (!scope.isNotUseful) {\n evaluationService().evaluatePage(scope.isExternal, scope.pageId, evaluation).then(function(comment){\n scope.isUseful = false;\n scope.isNotUseful = true;\n });\n } else {\n evaluationService().removeEvaluationFromPage(scope.isExternal, scope.pageId).then(function(comment){\n scope.isUseful = false;\n scope.isNotUseful = false;\n });\n }\n \n }\n scope.setStar = function() {\n scope.isStar = !scope.isStar;\n var source = \"internal\";\n if (scope.isExternal) source = \"external\";\n if (scope.isStar) {\n favoriteService().addPageAsFavorite(source, scope.pageId).then(function(status) {\n \n })\n } else {\n favoriteService().removePageAsFavorite(source, scope.pageId).then(function(status) {\n \n })\n }\n \n // evaluationService().evaluatePage(scope.pageId, evaluation).then(function(comment){\n // scope.isUseful = false;\n // scope.isNotUseful = true;\n // });\n }\n }\n }\n }]);\n","2\nangular\n .module('DigiLean')\n .directive(\"learningPageEvaluationStatus\", ['evaluationService','favoriteService',\n function (evaluationService,favoriteService) {\n return {\n templateUrl: 'learningPageEvaluationStatus.html',\n restrict: 'E',\n scope: {\n 'pageId': '<',\n 'fileName': '<',\n 'isExternal': '<'\n },\n link: function (scope, elem, attrs) {\n scope.isUseful = false\n scope.isNotUseful = false\n scope.$watch('pageId', function (pageId) {\n if (!pageId) return\n scope.status = {}\n evaluationService().getEvaluationsForPage(pageId).then(function(status) {\n scope.status = status\n })\n favoriteService().getPageFavoriteStatus(pageId).then(function(status) {\n scope.favoriteStatus = status\n })\n })\n \n }\n }\n }])\n","2\nangular\n .module('DigiLean')\n .directive(\"myFavoritePages\", ['favoriteService',\n function (favoriteService) {\n return {\n templateUrl: 'myFavoritePages.html',\n restrict: 'E',\n link: function (scope, elem, attrs) {\n scope.pages = [];\n favoriteService().getMyFavoritePages().then(function(pages) {\n scope.pages = pages;\n });\n\n scope.getLink = function(page) {\n let link = \"/#/learning/\"\n link += page.source\n link += `/${page.learningMaterialId}?pageid=`\n link += page.pageId ? page.pageId : '0';\n return link\n }\n }\n }\n }]);\n","angular.module('DigiLean').component('learningSummaryViewer', {\n templateUrl: \"learningSummaryViewer.html\",\n bindings: {\n 'items': '<',\n 'selectedPageId': '<',\n 'pageSelectHandler': '&',\n },\n controller: [\n function() {\n let $ctrl = this\n\n $ctrl.items = []\n \n $ctrl.$onChanges = function (changes) {\n if (changes.selectedPageId) {\n if (changes.selectedPageId.currentValue) {\n setSelectPageId($ctrl.selectedPageId);\n }\n }\n }\n\n let currentPageId = null;\n const setSelectPageId = function(selectedPageId) {\n if (!selectedPageId) {\n $ctrl.selectedPage = null;\n return;\n } \n if (currentPageId == selectedPageId)\n return\n if (!$ctrl.summary)\n return\n\n $ctrl.summary.forEach(element => {\n element.pages.forEach(page => {\n if(page.id == selectedPageId) {\n $ctrl.selectedPage = page\n }\n }) \n })\n }\n \n $ctrl.selectedPage = null\n $ctrl.selectPage = function (page) {\n var payLoad = {\n page: page\n }\n $ctrl.selectedPage = page\n currentPageId = page.id\n $ctrl.pageSelectHandler(payLoad)\n }\n }]\n })\n","angular\n.module('DigiLean')\n.controller('learningViewerController', ['$scope','$stateParams', '$filter', 'learningPublicService', '$uibModal', '$state', '$translate',\n function ($scope,$stateParams, $filter, learningPublicService, $uibModal, $state, $translate) {\n $scope.id = parseInt($stateParams.id)\n $scope.selectedPageId = null\n if ($stateParams.pageid) {\n $scope.selectedPageId = parseInt($stateParams.pageid)\n }\n this.uiOnParamsChanged = function(newParams) {\n console.log(\"new params: \", newParams)\n }\n $scope.isExternal = $stateParams.location == \"external\"\n $scope.isEditMode = false\n $scope.pages = []\n $scope.items = []\n learningPublicService.getItems($scope.isExternal, $scope.id).then(function (summary) {\n $scope.material = summary.material\n $scope.items = summary.items\n $scope.items.forEach(element => {\n $scope.pages = $scope.pages.concat(element.pages) \n })\n setCurrentPage($scope.selectedPageId)\n })\n console.debug(\"loading learningviewer\");\n $scope.$on('$locationChangeSuccess', function(e, newUrl, oldUrl) {\n // Use $state.params to update as needed\n // Needed to handle browser back/forward\n if (!newUrl.includes(\"learning/internal\") && !newUrl.includes(\"learning/external\"))\n return \n\n if ($stateParams.pageid) {\n $scope.selectedPageId = parseInt($stateParams.pageid)\n setCurrentPage($scope.selectedPageId)\n }else {\n $scope.selectFrontPage()\n }\n })\n $scope.frontPage = null\n $scope.selectedPage = null\n $scope.previousPage = null\n $scope.nextPage = null\n $scope.selectedPageType = \"frontPage\"\n \n $scope.selectFrontPage = function (page) {\n $scope.selectedPageType = \"frontPage\"\n $scope.selectedPage = null\n $scope.selectedPageId = null\n $state.go('.', {pageid: \"\"})\n setNextPage($scope.selectedPage)\n }\n\n\n $scope.selectPage = function (page) {\n if (page && page.id != $scope.selectedPageId) {\n learningPublicService.addPageVisit($scope.id, page.id)\n }\n $scope.selectedPage = page\n $scope.selectedPageType = \"normalPage\"\n $scope.selectedPageId = page.id\n $state.go($state.current, {pageid: page.id}, {location: true})\n setNextPage($scope.selectedPage)\n }\n\n $scope.pageSelectHandler = function (page) {\n $scope.selectPage(page)\n }\n\n var setCurrentPage = function(pageId) {\n if (!pageId) {\n setNextPage(null)\n return\n }\n var currentPage = $filter('filter')($scope.pages, { id: pageId }, true)\n if (currentPage.length > 0) {\n $scope.selectPage(currentPage[0])\n }\n }\n\n var setNextPage = function(currentPage) {\n\n if (!currentPage) {\n $scope.previousPage = null\n $scope.nextPage = $scope.pages[0]\n return\n }\n var currentIndex = -1\n var currentPage = $filter('filter')($scope.pages, { id: currentPage.id }, true)\n if (currentPage.length > 0) {\n currentIndex = $scope.pages.indexOf(currentPage[0])\n }\n // If lastpage\n if (currentIndex == $scope.pages.length) {\n $scope.nextPage = null\n } else {\n $scope.nextPage = $scope.pages[currentIndex+1]\n }\n if (currentIndex == 0) {\n $scope.previousPage = null\n } else {\n $scope.previousPage = $scope.pages[currentIndex-1]\n }\n }\n }])","\nangular\n .module('DigiLean')\n .directive(\"improvementChangedStatusMessage\", ['$uibModal', 'suggestionService',\n function ($uibModal, suggestionService) {\n return {\n templateUrl: 'improvementChangedStatusMessage.html',\n restrict: 'E',\n scope: {\n \"payLoad\": \"<\",\n },\n link: function (scope, elem, attrs) {\n scope.suggestion = null;\n scope.isLoading = true;\n\n scope.$watch('payLoad', function (payLoad) {\n if (!payLoad) return;\n suggestionService().get(payLoad.SuggestionId).then(function (suggestion) {\n suggestion.dateStyleClass = getDateStyle(suggestion.dueDate);\n scope.suggestion = suggestion;\n });\n });\n\n function getDateStyle(date) {\n if (!date) return \"\";\n // Overdue check\n\n var overdue = \"\";\n var duration = moment.duration(moment().diff(moment(date)));\n var days = duration.asDays();\n if (days > 1) {\n overdue = \"overdue\";\n }\n return overdue;\n }\n scope.openSuggestion = function (activeTab) {\n if (!activeTab) activeTab = \"Info\";\n\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'fullImprovementInfoForm.html',\n controller: 'fullImprovementModalController',\n windowClass: 'fullSuggestion-modal-window',\n resolve: {\n suggestion: function () {\n return scope.suggestion;\n },\n activeTab: function () {\n return activeTab;\n }\n }\n });\n\n }\n }\n }\n }]);","\nangular\n .module('DigiLean')\n .directive(\"newDeviationMessage\", ['$uibModal', 'deviationService',\n function ($uibModal, deviationService) {\n return {\n templateUrl: 'newDeviationMessage.html',\n restrict: 'E',\n scope: {\n \"payLoad\": \"<\",\n },\n link: function (scope, elem, attrs) {\n scope.deviation = null;\n scope.isLoading = true;\n scope.$watch('payLoad', function (payLoad) {\n if (!payLoad) return;\n deviationService().get(payLoad.Id).then(function (deviation) {\n scope.deviation = deviation;\n });\n \n });\n \n\n scope.openDeviation = function (activeTab) {\n if (!activeTab) activeTab = \"Info\";\n \n $uibModal.open({ backdrop: 'static',\n templateUrl: 'fullDeviation.html',\n controller: 'fullDeviationController',\n windowClass: 'full-screen',\n resolve: {\n deviation: function () {\n return scope.deviation;\n },\n activeTab: function () {\n return activeTab;\n }\n }\n });\n\n }\n }\n }\n }]);","\nangular\n .module('DigiLean')\n .directive(\"projectMessageAdded\",\n function () {\n return {\n templateUrl: 'projectMessageAdded.html',\n restrict: 'E',\n scope: {\n \"payLoad\": \"<\",\n },\n link: function (scope, elem, attrs) {\n scope.projectId = null;\n scope.projectName = null;\n scope.message = \"\";\n scope.isLoading = true;\n scope.users = [];\n scope.$watch('payLoad', function (payLoad) {\n if (!payLoad) return;\n scope.projectId = payLoad.ProjectId;\n scope.projectName = payLoad.Title;\n scope.message = payLoad.Text;\n });\n\n }\n }\n });","\nangular\n .module('DigiLean')\n .directive(\"taskAssignedMessage\", ['$uibModal', 'boardTaskService','suggestionService','deviationService',\n function ($uibModal, boardTaskService,suggestionService, deviationService) {\n return {\n templateUrl: 'taskAssignedMessage.html',\n restrict: 'E',\n scope: {\n \"payLoad\": \"<\",\n },\n link: function (scope, elem, attrs) {\n scope.task = null;\n scope.isLoading = true;\n\n scope.$watch('payLoad', function (payLoad) {\n if (!payLoad) return;\n boardTaskService().get(payLoad.TaskId).then(function (task) {\n scope.task = task;\n });\n });\n\n scope.openTask = function (activeTab) {\n if (!activeTab) activeTab = \"Info\";\n var options = {\n // archiveAvailable: true,\n // users: scope.users\n }\n\n $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'boardTask.html',\n controller: 'boardTaskController',\n resolve: {\n task: function () {\n return scope.task;\n },\n activeTab: function () {\n return activeTab;\n },\n options: function () {\n return options;\n }\n }\n });\n }\n\n scope.openSuggestion = function () {\n suggestionService().get(scope.task.improvementSuggestionId).then(function (suggestion) {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n templateUrl: 'fullImprovementInfoForm.html',\n controller: 'fullImprovementModalController',\n windowClass: 'fullSuggestion-modal-window',\n resolve: {\n suggestion: function () {\n return suggestion;\n },\n activeTab: function () {\n return \"Info\";\n }\n }\n });\n });\n\n }\n\n scope.openDeviation = function () {\n deviationService().get(scope.task.deviationId).then(function (deviation) {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n templateUrl: 'fullDeviation.html',\n controller: 'fullDeviationController',\n windowClass: 'full-screen',\n resolve: {\n deviation: function () {\n return deviation;\n },\n activeTab: function () {\n return \"Info\";\n }\n }\n });\n });\n\n }\n }\n }\n }]);","\nangular\n .module('DigiLean')\n .directive(\"updatedResponsibleDeviationMessage\", ['$uibModal', 'deviationService',\n function ($uibModal, deviationService) {\n return {\n templateUrl: 'updatedResponsibleDeviationMessage.html',\n restrict: 'E',\n scope: {\n \"payLoad\": \"<\",\n },\n link: function (scope, elem, attrs) {\n scope.deviation = null;\n scope.isLoading = true;\n\n scope.$watch('payLoad', function (payLoad) {\n if (!payLoad) return;\n deviationService().get(payLoad.DeviationId).then(function (deviation) {\n scope.deviation = deviation;\n });\n });\n\n scope.openDeviation = function (activeTab) {\n if (!activeTab) activeTab = \"Info\";\n \n $uibModal.open({ backdrop: 'static',\n templateUrl: 'fullDeviation.html',\n controller: 'fullDeviationController',\n windowClass: 'full-screen',\n resolve: {\n deviation: function () {\n return scope.deviation;\n },\n activeTab: function () {\n return activeTab;\n }\n }\n });\n\n }\n }\n }\n }]);","\nangular\n .module('DigiLean')\n .directive(\"updatedResponsibleSuggestionMessage\", ['$uibModal', 'suggestionService',\n function ($uibModal, suggestionService) {\n return {\n templateUrl: 'updatedResponsibleSuggestionMessage.html',\n restrict: 'E',\n scope: {\n \"payLoad\": \"<\",\n },\n link: function (scope, elem, attrs) {\n scope.suggestion = null;\n scope.isLoading = true;\n\n scope.$watch('payLoad', function (payLoad) {\n if (!payLoad) return;\n suggestionService().get(payLoad.SuggestionId).then(function (suggestion) {\n suggestion.dateStyleClass = getDateStyle(suggestion.dueDate);\n scope.suggestion = suggestion;\n });\n });\n\n function getDateStyle(date) {\n if (!date) return \"\";\n // Overdue check\n\n var overdue = \"\";\n var duration = moment.duration(moment().diff(moment(date)));\n var days = duration.asDays();\n if (days > 1) {\n overdue = \"overdue\";\n }\n return overdue;\n }\n scope.openSuggestion = function (activeTab) {\n if (!activeTab) activeTab = \"Info\";\n\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'fullImprovementInfoForm.html',\n controller: 'fullImprovementModalController',\n windowClass: 'fullSuggestion-modal-window',\n resolve: {\n suggestion: function () {\n return scope.suggestion;\n },\n activeTab: function () {\n return activeTab;\n }\n }\n });\n\n }\n }\n }\n }]);","var DigiLean = angular.module('DigiLean'); \nDigiLean.controller('myRegisteredIncidentsController', ['$scope','$filter', '$uibModal', 'deviationService', 'authService',\n function ($scope, $filter, $uibModal, deviationService, authService) {\n $scope.items = [];\n $scope.resolved = 0;\n var userid = authService.getCurrentUser().userId;\n\n $scope.translationData = {\n noOfIncidents: $scope.items.length\n };\n\n $scope.subscribe(\"DeviationChangedStatus\", function (changed) {\n // Check if comment is related to one of users\n var item = $filter('filter')($scope.items, { id: changed.deviationId }, true);\n if (item.length > 0) {\n if(item[0].status != changed.status){\n if(changed.status == 20){\n $scope.resolved++;\n } else if (item[0].status == 20 && changed.status != 20){\n $scope.resolved--;\n }\n }\n item[0].status = changed.status\n item[0].changed = true;\n }\n });\n $scope.subscribe(\"DeviationCreated\", function (item) {\n item.changed = true;\n // Make sure it's created by current user\n if (userid === item.createdByUserId) {\n getDeviations();\n }\n });\n $scope.subscribe(\"DeviationDeleted\", function (deviation) {\n // find by id\n var deletedid = deviation.id;\n var existingDeviations = $filter('filter')($scope.items, { id: deletedid }, true);\n if (existingDeviations.length === 1) {\n var index = $scope.items.indexOf(existingDeviations[0]);\n $scope.items.splice(index, 1);\n }\n });\n\n \n function getDeviations() {\n $scope.isLoading = true;\n deviationService().getMyDeviations().then(function (items) {\n $scope.items = items;\n $scope.translationData = {\n noOfIncidents: $scope.items.length\n };\n items.forEach(function (deviation) {\n \n if(deviation.status == 20){\n $scope.resolved = $scope.resolved + 1;\n } \n });\n $scope.isLoading = false;\n });\n }\n getDeviations();\n\n $scope.openDeviations = function () {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n templateUrl: 'myRegisteredIncidentsForm.html',\n controller: 'myDeviationsController',\n windowClass: 'fullDeviation-modal-window',\n resolve: {\n }\n });\n }\n\n }]);\n\n\n\n","var DigiLean = angular.module('DigiLean'); \nDigiLean.controller('myRegisteredSuggestionsController', ['$scope','$filter', '$uibModal', 'position','suggestionService',\n function ($scope, $filter, $uibModal, position, suggestionService) {\n $scope.suggestions = [];\n $scope.implemented = 0;\n if(position){\n $scope.position = position;\n } else {\n $scope.position = 'center';\n }\n\n suggestionService().getMySuggestions().then(function (suggestions) {\n $scope.suggestionimplemented = 0;\n $scope.suggestions = suggestions;\n suggestions.forEach(function (suggestion) {\n if(suggestion.status == \"Implemented\" || suggestion.status == \"Evaluated\") $scope.suggestionimplemented++;\n \n });\n $scope.suggestions = suggestions;\n $scope.translationData = {\n noOfSuggestions: $scope.suggestions.length\n };\n });\n\n $scope.openSuggestionss = function () {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n templateUrl: 'myRegisteredSuggestionsForm.html',\n controller: 'mysuggestionsController',\n windowClass: 'fullDeviation-modal-window',\n resolve: {\n }\n });\n }\n\n }]);\n\n\n\n","angular\n .module('DigiLean')\n .directive('notificationSettings', ['$translate', 'navigationService', 'notificationService',\n function ($translate, navigationService, notificationService) {\n return {\n templateUrl: 'notificationSettings.html',\n restrict: 'E',\n scope: {\n\n },\n link: function (scope, elem, attrs) {\n scope.wantsAll = true;\n var settingUpdated = false;\n var userSettings = [];\n refreshModules();\n scope.subscribe(\"UserAuthenticatedAndReady\", function (profile) {\n refreshModules();\n });\n\n function refreshModules() {\n scope.hasImprovementModule = navigationService().hasModule(\"IMPROVEMENT\");\n scope.hasDeviationModule = navigationService().hasModule(\"DEVIATION\");\n scope.hasA3Module = navigationService().hasModule(\"A3\");\n scope.hasBoard = navigationService().hasModule(\"BOARD\");\n scope.hasProjectModule = navigationService().hasModule(\"PROJECT\");\n scope.hasLearningModule = navigationService().hasModule(\"LEARNING\");\n }\n function init() {\n notificationService().getMyNotificationSettings().then(function (settings) {\n resetAllEvents();\n userSettings = settings;\n if (userSettings == null || userSettings.length == 0) { // user wants all notifications\n scope.wantsAll = true;\n } else { // user has unsubscribed all or some events\n scope.wantsAll = false;\n if (userSettings[0].key == \"All\") { // user do not want any notifications\n for (var e = 0; e < scope.allEvents.length; e++) {\n //scope.allEvents[e].include = false; \n scope.allEvents[e].notMobile = true;\n scope.allEvents[e].notEmail = true;\n }\n } else { // user has unsubscribed some events \n for (var e = 0; e < userSettings.length; e++) {\n const userSetting = userSettings[e]\n var matchingActivity = scope.allEvents.find(evt => evt.key == userSetting.key)\n if (matchingActivity) {\n var i = scope.allEvents.indexOf(matchingActivity);\n scope.allEvents[i].notMobile = userSettings[e].notMobile;\n scope.allEvents[i].notEmail = userSettings[e].notEmail;\n }\n }\n }\n }\n });\n }\n init();\n\n function resetAllEvents() {\n userSettings = [];\n scope.allEvents = [\n {\n key: \"TaskAssigned\",\n module: \"Board\",\n include: true,\n notMobile: false,\n notEmail: false,\n translation: $translate.instant('BOARD_NOTIFICATION_TASK_ASSIGNED')\n },\n {\n key: \"TaskComment\",\n include: true,\n notMobile: false,\n notEmail: false,\n module: \"Board\",\n translation: $translate.instant('BOARD_NOTIFICATION_TASK_COMMENT')\n },\n {\n key: \"UpdatedResponsibleSuggestion\",\n include: true,\n notMobile: false,\n notEmail: false,\n module: \"Improvement\",\n translation: $translate.instant('IMPROVEMENT_NOTIFICATION_SUGGESTION_ASSIGNED')\n },\n {\n key: \"ImprovementChangedStatus\",\n include: true,\n notMobile: false,\n notEmail: false,\n module: \"Improvement\",\n translation: $translate.instant('IMPROVEMENT_NOTIFICATION_SUGGESTION_STATUS')\n },\n {\n key: \"ImprovementComment\",\n include: true,\n notMobile: false,\n notEmail: false,\n module: \"Improvement\",\n translation: $translate.instant('IMPROVEMENT_NOTIFICATION_SUGGESTION_COMMENT')\n },\n {\n key: \"NewDeviation\",\n module: \"Deviation\",\n include: true,\n notMobile: false,\n notEmail: false,\n translation: $translate.instant('DEVIATION_NOTIFICATION_NEW_TO_GROUP')\n },\n {\n key: \"UpdatedResponsibleDeviation\",\n module: \"Deviation\",\n include: true,\n notMobile: false,\n notEmail: false,\n translation: $translate.instant('DEVIATION_NOTIFICATION_INCIDENT_ASSIGNED')\n },\n {\n key: \"DeviationComment\",\n module: \"Deviation\",\n include: true,\n notMobile: false,\n notEmail: false,\n translation: $translate.instant('DEVIATION_NOTIFICATION_INCIDENT_COMMENT')\n },\n {\n key: \"ProjectMessageAdded\",\n module: \"Project\",\n include: true,\n notMobile: false,\n notEmail: false,\n translation: $translate.instant('PROJECT_NOTIFICATION_MESSAGE_ADDED')\n },\n {\n key: \"A3Participant\", /*NEW id*/\n module: \"A3\",\n include: true,\n notMobile: false,\n notEmail: false,\n translation: \"A3 du er blitt en deltaker\"\n },\n {\n key: \"A3Updated\",\n module: \"A3\",\n include: true,\n notMobile: false,\n notEmail: false,\n translation: \"Oppdatert A3 som du er ansvarlig for\"\n },\n {\n key: \"PageCommentAdded\",\n module: \"Learning\",\n include: true,\n notMobile: false,\n notEmail: false,\n translation: $translate.instant('LEARNING_NOTIFICATION_PAGE_COMMENT')\n },\n {\n key: \"CommentMentions\",\n module: \"Global\",\n include: true,\n notMobile: false,\n notEmail: false,\n translation: $translate.instant('COMMON_COMMENT_MENTION')\n },\n {\n key: \"WeeklyTaskStatus\",\n module: \"UsefulInfo\",\n include: true,\n notMobile: false,\n notEmail: false,\n translation: $translate.instant('COMMON_USEFUL_INFORMATION_TASKSUMMARY')\n }\n\n ];\n }\n scope.toggleEmail = function (event) {\n settingUpdated = true;\n event.notEmail = !event.notEmail;\n update();\n // syncSettings(event);\n };\n scope.toggleMobile = function (event) {\n settingUpdated = true;\n event.notMobile = !event.notMobile;\n update();\n // syncSettings(event);\n };\n\n \n\n scope.toggleAll = function () {\n scope.wantsAll = !scope.wantsAll;\n settingUpdated = true;\n if (scope.wantsAll) {\n resetAllEvents();\n \n } else {\n \n for (var e = 0; e < scope.allEvents.length; e++) {\n scope.allEvents[e].include = false;\n scope.allEvents[e].notMobile = true;\n scope.allEvents[e].notEmail = true;\n }\n }\n update();\n };\n\n function update() {\n userSettings = [];\n var wantsNotifications = false;\n scope.allEvents.forEach(event => {\n // Set flag if at least one notification is wanted\n if (!event.notEmail || !event.notMobile) {\n wantsNotifications = true;\n }\n // Include settings where something is turned off / no need to store setting where both is wanted\n if (event.notEmail || event.notMobile) {\n userSettings.push({\n key: event.key,\n notMobile: event.notMobile,\n notEmail: event.notEmail\n });\n }\n });\n if (!wantsNotifications) { // Turn off all notification\n userSettings = [];\n var removeAllNotification = {\n key: \"All\",\n notMobile: true,\n notEmail: true\n }\n userSettings.push(removeAllNotification);\n }\n notificationService().addNotificationSettings(userSettings)\n }\n }\n }\n }]);\n","var DigiLean = angular.module('DigiLean');\nDigiLean.directive(\"taskThisWeek\", ['mathService','$translate', 'projectService',\n function (mathService, $translate, customerService, projectService) {\n return {\n templateUrl: 'taskThisWeek.html',\n restrict: 'E',\n scope: {\n },\n link: function (scope, elem, attrs) {\n var projectOnTimeChart = null;\n\n var noOfMilestoneMet = 0;\n var noOfMilestoneDelayed = 0;\n var noOfMilestoneRemaining = 0;\n\n var percentOnTime = null;\n var percentMet = null;\n var percentDelayed = null;\n var percentRemaining = null;\n scope.decimals = 1;\n var totalMilestones = 0;\n\n projectService().getProjectInfo(166).then(function (project) {\n scope.project = project;\n calculateMilestones(scope.project);\n if(percentOnTime != null){\n drawChart();\n }\n });\n function isValidDate(date) {\n var result = moment(date);\n return result._isValid;\n };\n function calculateMilestones(project){\n \n if (project.milestones && project.milestones.length > 0) {\n \n for (var i = 0; i < project.milestones.length; i++) {\n if (isValidDate(project.milestones[i].actualDate)) {\n if (isValidDate(project.milestones[i].plannedDate)) {\n var duration = moment.duration(moment(project.milestones[i].plannedDate).diff(moment(project.milestones[i].actualDate), 'days'));\n if(duration<0){\n noOfMilestoneDelayed = noOfMilestoneDelayed + 1;\n } else {\n noOfMilestoneMet = noOfMilestoneMet + 1;\n }\n }\n } else if (isValidDate(project.milestones[i].plannedDate)) {\n //check if overdue/missed\n var duration = moment.duration(moment().diff(moment(project.milestones[i].plannedDate)));\n var days = duration.asDays().toFixed(0); \n if (days >= 1) {\n noOfMilestoneDelayed = noOfMilestoneDelayed + 1; \n } else {\n noOfMilestoneRemaining = noOfMilestoneRemaining + 1;\n }\n }\n }\n }\n checkOnTime(project.estimatedStartDate, project.startDate);\n checkOnTime(project.estimatedEndDate, project.endDate);\n totalMilestones = noOfMilestoneMet + noOfMilestoneDelayed + noOfMilestoneRemaining;\n if (totalMilestones>0){\n \n percentOnTime = 100 * noOfMilestoneMet / totalMilestones;\n percentDelayed = 100 * noOfMilestoneDelayed / totalMilestones;\n percentRemaining = 100 * noOfMilestoneRemaining / totalMilestones;\n\n percentOnTime = mathService().roundNumber(percentOnTime, scope.decimals);\n percentDelayed = mathService().roundNumber(percentDelayed, scope.decimals);\n percentRemaining = mathService().roundNumber(percentRemaining, scope.decimals);\n }\n\n }\n\n function checkOnTime(estimatedDate, actualDate){\n if (isValidDate(actualDate)) {\n if (isValidDate(estimatedDate)) {\n var duration = moment.duration(moment(estimatedDate).diff(moment(actualDate), 'days'));\n if(duration<0){\n noOfMilestoneDelayed = noOfMilestoneDelayed + 1;\n } else {\n noOfMilestoneMet = noOfMilestoneMet + 1;\n }\n }\n } else if (isValidDate(estimatedDate)) {\n //check if overdue/missed\n var duration = moment.duration(moment().diff(moment(estimatedDate)));\n var days = duration.asDays().toFixed(0); \n if (days >= 1) {\n noOfMilestoneDelayed = noOfMilestoneDelayed + 1; \n } else {\n noOfMilestoneRemaining = noOfMilestoneRemaining + 1;\n }\n }\n \n }\n function drawChart() {\n var renderElement = $(elem).find(\".projectontime\")[0];\n projectOnTimeChart = new Highcharts.Chart({\n chart: {\n renderTo: renderElement,\n plotBackgroundColor: '#f3f3f4', //null, \n plotBorderWidth: 0,\n plotShadow: false,\n styledMode: true\n },\n title: {\n text: '

' + totalMilestones + '

',\n align: 'center',\n verticalAlign: 'middle',\n y: 5\n },\n tooltip: {\n headerFormat: 'Oppgaver denne uka
',\n //pointFormat: '{point.y}: {series.name:,.0f}
' \n pointFormat: '{point.name}: {point.y:,.0f}
'\n //pointFormat: '{series.name}: {point.percentage:.1f}%'\n },\n credits: {\n enabled: false //remove link to highcharts.com\n },\n exporting: {\n enabled: false //remove context menu\n },\n plotOptions: {\n pie: {\n dataLabels: {\n enabled: false,\n distance: -50,\n style: {\n fontWeight: 'bold',\n color: 'white'\n }\n },\n size: '110%',\n colors: ['#23c6c8', '#d9534f', '#434348'] //['#5cb85c', '#d9534f', '#434348']\n }\n },\n series: [{\n type: 'pie',\n name: 'Oppgaver denne uka',\n innerSize: '50%',\n data: [\n [$translate.instant('DASHBOARD_COMPLETED'), noOfMilestoneMet], //milestone met \n [$translate.instant('BOARD_WAITING'), noOfMilestoneDelayed], // \n [$translate.instant('PROJECT_REMAINING'), noOfMilestoneRemaining], \n \n ]\n }]\n });\n }\n\n\n \n\n }\n }\n }]);","angular\n .module('DigiLean').directive(\"projectAttachments\", ['projectService',\n function (projectService) {\n return {\n templateUrl: 'projectAttachments.html',\n restrict: 'E',\n scope: {\n 'projectId': '<',\n 'isEditMode': '<',\n },\n link: function (scope, elem, attrs) {\n scope.update = function () {\n \n }\n scope.uploadedFiles = [];\n scope.files = [];\n scope.isLoading = true;\n scope.toogleEditModeOn = true;\n if(scope.isEditMode){\n scope.toogleEditModeOn = false;\n }\n\n scope.$watch(\"projectId\", function (projectId) {\n if (!projectId) return;\n projectService().getAttachments(projectId).then(function(files) {\n scope.files = files;\n scope.isLoading = false;\n });\n });\n\n scope.deleteFile = function (file) {\n var i = scope.files.indexOf(file);\n scope.files.splice(i, 1);\n projectService().deleteAttachment(scope.projectId, file.id).then(function() {\n\n });\n }\n\n scope.fileUploaded = function (file) {\n projectService().addAttachment(scope.projectId, file).then(function(attachment) {\n scope.isEditMode = false;\n scope.files.push(attachment);\n });\n };\n scope.toggleEditMode = function () {\n scope.isEditMode = !scope.isEditMode ;\n };\n\n }\n\n }\n }]);\n","angular\n .module('DigiLean')\n .controller('customerstatusController', ['$rootScope','$scope', '$filter', '$translate', 'authService', 'projectService', \n function($rootScope,$scope, $filter, $translate, authService, projectService) {\n\n \n\n \n $scope.totalDeviations = null;\n $scope.totalSuggestions = null;\n \n $scope.customerId = authService.getCurrentUser().customerId;\n\n projectService().getProjectCustomers().then(function (customers) {\n $scope.customers = customers;\n\n });\n projectService().getCustomerProjectsDeliveredOnTime().then(function (result) {\n $scope.percentOnTime = Math.round(result);\n\n });\n\n projectService().getCustomerProjectNoOfSuggestions().then(function (result) {\n $scope.totalSuggestions = result;\n });\n \n projectService().getCustomerProjectNoOfDeviations().then(function (result) {\n $scope.totalDeviations = result;\n });\n\n\n $scope.items = [];\n projectService().getProjectCustomerStats().then(function (summary) {\n //$scope.material = summary.material;\n $scope.items = summary.items; \n var totalProjectsLevels = calculateLevels(summary.totalProjectsRange, 4);\n var onTimeLevels = calculateLevels(summary.onTimeRange, 4);\n var totalSuggestionsLevel = calculateLevels(summary.totalSuggestionsRange, 4);\n var totalDeviationsLevel = calculateLevels(summary.totalDeviationsRange, 4);\n\n $scope.items.forEach(item => {\n item.totalProjectsLevels = getLevel(item.totalProjects, totalProjectsLevels);\n item.onTimeLevels = getLevel(item.percentOnTime, onTimeLevels);\n item.totalSuggestionsLevel = getLevel(item.totalSuggestions, totalSuggestionsLevel);\n item.totalDeviationsLevel = getLevel(item.totalDeviations, totalDeviationsLevel);\n });\n });\n\n function calculateLevels(range, numberOfLevels) {\n var rangeSize = range.max - range.min;\n var levelSize = rangeSize / numberOfLevels;\n var levels = [];\n var levelStart = range.min;\n for (let index = 1; index <= numberOfLevels; index++) {\n var level = {\n start: levelStart,\n end: levelStart + levelSize\n };\n levels.push(level);\n levelStart = level.end;\n }\n return levels;\n }\n function getLevel(value, levels) {\n if (value == 0 || levels.length == 0) return \"level-0\";\n \n for (let index = 0; index <= levels.length; index++) {\n var level = levels[index];\n if (value >= level.start && value <= level.end) {\n return \"level-\" + (index + 1);\n }\n }\n return \"level-0\";\n }\n\n\n\n }]);","angular\n .module('DigiLean').directive(\"projectLinks\", ['projectService',\n function (projectService) {\n return {\n templateUrl: 'projectLinks.html',\n restrict: 'E',\n scope: {\n 'projectId': '<',\n 'isEditMode': '<',\n },\n link: function (scope, elem, attrs) {\n scope.uploadedFiles = [];\n scope.files = [];\n scope.isLoading = true;\n scope.toogleEditModeOn = true;\n if(scope.isEditMode){\n scope.toogleEditModeOn = false;\n }\n\n scope.title = \"\";\n scope.url = \"\";\n\n scope.$watch(\"projectId\", function (projectId) {\n if (!projectId) return;\n projectService().getLinks(projectId).then(function(links) {\n scope.links = links;\n scope.isLoading = false;\n });\n });\n\n scope.deleteLink = function (link) {\n var i = scope.links.indexOf(link);\n scope.links.splice(i, 1);\n projectService().deleteLink(scope.projectId, link.id).then(function() {\n\n });\n }\n\n function isValid(){\n scope.notValidTitle = false;\n scope.notValidUrl = false;\n if(scope.title == \"\"){\n scope.notValidTitle = true;\n }\n if(scope.url == \"\"){\n scope.notValidUrl = true;\n }\n\n if(scope.notValidTitle || scope.notValidUrl){\n return false;\n } else return true;\n }\n\n scope.addLink = function () {\n if(isValid()){\n var link = {\n title:scope.title,\n url : scope.url\n }\n projectService().addLink(scope.projectId, link).then(function(stored) {\n scope.isEditMode = false;\n scope.title = \"\";\n scope.url = \"\";\n scope.links.push(stored);\n });\n }\n };\n scope.toggleEditMode = function () {\n scope.isEditMode = !scope.isEditMode ;\n };\n\n }\n\n }\n }]);\n","var DigiLean = angular.module('DigiLean');\nDigiLean.directive(\"milestones\", ['$translate', 'projectService',\n function ($translate, projectService) {\n return {\n templateUrl: 'milestones.html',\n restrict: 'E',\n scope: {\n 'projectId': '=',\n 'canEdit': '=',\n 'readonly': '@'\n },\n link: function (scope, element, attrs) {\n\n scope.milestones = [];\n \n\n scope.$watch(\"projectId\", function () {\n if (!scope.projectId) return;\n // get milestones\n projectService().getMilestonesForProject(scope.projectId).then(function (milestones) {\n angular.forEach(milestones, function(milestone){\n milestone.plannedDate = moment(milestone.plannedDate).toDate();\n milestone.actualDate = moment(milestone.actualDate).toDate();\n milestone.datePicker = {\n opened: false\n },\n milestone.endDatePicker = {\n opened: false\n }\n })\n scope.milestones = milestones;\n });\n });\n\n scope.add = function () {\n var milestone = {\n name: $translate.instant('PROJECT_MILESTONE'),\n projectId: scope.projectId,\n plannedDate: moment().toDate(),\n completedDate: null,\n datePicker : {\n opened: false\n },\n endDatePicker : {\n opened: false\n }\n };\n projectService().createMilestone(milestone).then(function (milestone) {\n milestone.datePicker = {\n opened: false\n },\n milestone.endDatePicker = {\n opened: false\n }\n scope.milestones.push(milestone);\n });\n }\n\n scope.delete = function (milestone) {\n projectService().deleteMilestone(milestone.id).then(function () {\n var index = scope.milestones.indexOf(milestone);\n scope.milestones.splice(index, 1); \n });\n \n }\n\n scope.milestoneChanged = function (milestone) {\n projectService().updateMilestone(milestone)\n }\n\n scope.milestoneActualDateChanged = function(milestone, $event) {\n const date = $event.originalEvent.detail\n milestone.actualDate = date\n scope.milestoneChanged(milestone)\n }\n \n scope.milestonePlannedDateChanged = function(milestone, $event) {\n const date = $event.originalEvent.detail\n milestone.plannedDate = date\n scope.milestoneChanged(milestone)\n }\n }\n }\n }]);\n","angular\n .module('DigiLean')\n .controller(\"newProjectController\", ['$scope', '$state', '$uibModalInstance', '$filter', 'projectService',\n function ($scope, $state, $uibModalInstance, $filter, projectService) {\n\n $scope.template = null;\n $scope.project = {};\n\n $scope.templates = [\n {name: \"Forbedringsprosjekt\", dbId: \"A3\"},\n {name: \"Last Planner\", dbId: \"LastPlanner\"}\n ];\n\n $scope.changeType = function (type) {\n $scope.project.category = type.dbId;\n };\n\n $scope.ok = function () {\n projectService().addProject($scope.project).then(function (createdProject) {\n $uibModalInstance.close(createdProject);\n });\n };\n\n $scope.close = function () {\n $uibModalInstance.dismiss('cancel');\n };\n }]);\n","angular\n .module('DigiLean')\n .controller(\"projectController\", ['$rootScope', '$scope', '$translate', '$uibModal', 'NgTableParams', 'projectService', 'planService', 'authService', \n function ($rootScope, $scope, $translate,$uibModal, NgTableParams, projectService, planService, authService) {\n\n $scope.showTeamBoards = false;\n $scope.title = 'loading plan..';\n $scope.yearlyTimespan = true;\n $scope.editable = true;\n $scope.totalProjects = 0;\n\n $scope.options = {\n\n fromDate: getDateFromCurrentDate(-7),\n toDate: getDateFromCurrentDate(14),\n currentDate: 'column',\n currentDateValue: new Date()\n }\n\n function getDateFromCurrentDate(numberOfDaysToAdd){\n var someDate = new Date();\n someDate.setDate(someDate.getDate() + numberOfDaysToAdd);\n return someDate;\n }\n\n $scope.getToday = new Date();\n $scope.customerId = authService.getCurrentUser().customerId;\n\n $scope.boardPlans = [];\n\n $scope.handleRowIconClick = function (rowModel) {\n alert('Icon from ' + rowModel.name + ' row has been clicked.');\n };\n\n \n // Reload data action\n $scope.load = function () {\n \n $scope.showTeamBoards = false;\n var planData = planService.getPlanData($scope.customerId);\n $scope.data = planData.data;\n setIsYearlyTimespan(planData.duration);\n \n };\n\n function setIsYearlyTimespan(days) {\n if(days > 365) {\n $scope.yearlyTimespan = true;\n } else {\n $scope.yearlyTimespan = false;\n }\n };\n\n $scope.load();\n\n $translate(['COMMON_ALL', 'COMMON_NEW', 'COMMON_IN_PROGRESS', 'IMPROVEMENT_IMPLEMENTED', 'IMPROVEMENT_EVALUATED']).then(function (translations) {\n $scope.status = [\n { id:'All', name: translations.COMMON_ALL },\n { id:'New', name: translations.COMMON_NEW },\n { id:'In Progress', name: translations.COMMON_IN_PROGRESS },\n { id:'Implemented', name: translations.IMPROVEMENT_IMPLEMENTED },\n { id:'Evaluated', name: translations.IMPROVEMENT_EVALUATED }\n ];\n });\n\n $rootScope.$on('$translateChangeSuccess', function () {\n $scope.status = [\n { id:'All', name: $translate.instant('COMMON_ALL') },\n { id:'New', name: $translate.instant('COMMON_NEW') },\n { id:'In Progress', name: $translate.instant('COMMON_IN_PROGRESS') },\n { id:'Implemented', name: $translate.instant('IMPROVEMENT_IMPLEMENTED') },\n { id:'Evaluated', name: $translate.instant('IMPROVEMENT_EVALUATED') }\n ];\n });\n\n $scope.newPieChart = {\n data: [0, 0, 0, 0],\n options: {\n radius: 18,\n fill: [\"#ffffff\"],\n }\n };\n $scope.planPieChart = {\n data: [1, 1, 1, 1],\n options: {\n radius: 18,\n fill: [\"#5cb85c\", \"#ffffff\", \"#ffffff\", \"#ffffff\"],\n }\n };\n $scope.doPieChart = {\n data: [1, 1, 1, 1],\n options: {\n radius: 18,\n fill: [\"#5cb85c\", \"#5cb85c\", \"#ffffff\", \"#ffffff\"],\n }\n };\n $scope.checkPieChart = {\n data: [1, 1, 1, 1],\n options: {\n radius: 18,\n fill: [\"#5cb85c\", \"#5cb85c\", \"#5cb85c\", \"#ffffff\"]\n }\n };\n $scope.actPieChart = {\n data: [1, 1, 1, 1],\n options: {\n radius: 18,\n fill: [\"#5cb85c\", \"#5cb85c\", \"#5cb85c\", \"#5cb85c\"]\n }\n };\n function getStatusOrder(dbstatus) {\n switch (dbstatus) {\n case \"New\":\n return 1;\n case \"Plan\":\n return 2;\n case \"Do\":\n return 3;\n case \"Check\":\n return 4;\n case \"Act\":\n return 5;\n case \"Closed\":\n return 6;\n default:\n return 0;\n }\n }\n projectService().getList().then(function (projects) {\n $scope.totalProjects = projects.length;\n angular.forEach(projects, function (project) {\n project.statusorder = getStatusOrder(project.status);\n checkMilestones(projects);\n calculateRealization(project);\n })\n $scope.tableParams = new NgTableParams({}, { dataset: projects });\n });\n /*\n projectService().getProjectInfoForA3s().then(function (a3s) {\n angular.forEach(a3s, function (a3) {\n a3.statusorder = getStatusOrder(a3.status);\n checkMilestones(a3);\n calculateRealization(a3);\n })\n $scope.tableParams = new NgTableParams({}, { dataset: a3s });\n });*/\n\n\n \n\n function calculateRealization(a3) {\n if (a3.estimatedSavings && a3.estimatedTotalCost) {\n a3.estimated = a3.estimatedSavings - a3.estimatedTotalCost;\n }\n if (a3.actualSavings && a3.actualTotalCost) {\n a3.realized = a3.actualSavings - a3.actualTotalCost;\n }\n }\n\n function checkMilestones(a3) {\n if (a3.milestones && a3.milestones.length > 0) {\n a3.milestoneMissed = false;\n for (var i = 0; i < a3.milestones.length; i++) {\n if (a3.milestones[i].actualDate) {\n a3.milestones[i].status = \"completed\";\n } else if (a3.milestones[i].plannedDate) {\n //check if overdue/missed\n var duration = moment.duration(moment().diff(moment(a3.milestones[i].plannedDate)));\n var days = duration.asDays();\n if (days > 1) {\n a3.milestones[i].status = \"missed\";\n a3.milestoneMissed = true;\n } else {\n a3.milestones[i].status = \"future\";\n }\n }\n }\n }\n }\n\n $scope.search = function () {\n \n $scope.showTeamBoards = false;\n }\n\n $scope.selectStatus = function (status) {\n \n $scope.showTeamBoards = false;\n //TODO: hent prosjekt med gitt status\n }\n\n\n $scope.selectTeamBoards = function () {\n var period = {\n from: new Date(2017, 11, 1).toJSON(),\n to: new Date(2019, 1, 1).toJSON()\n }\n planService.getBoardPlansForPeriod(period).then(function (boardPlans) {\n $scope.boardPlans = boardPlans;\n $scope.title = boardPlans[0].name;\n });\n $scope.showTeamBoards = true;\n }\n\n $scope.new = function () {\n\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'newProject.html',\n controller: 'newProjectController'\n });\n };\n }]);\n\n\n\n","angular\n .module('DigiLean')\n .controller(\"projectDeleteController\", ['$scope', '$uibModalInstance', 'projectService', 'board', 'projectInfo',\n function ($scope, $uibModalInstance, projectService, board, projectInfo) {\n\n $scope.project = projectInfo.project;\n $scope.board = board;\n var projectBoardId = projectInfo.projectBoardId;\n \n $scope.permanentDelete = function () {\n projectService().deleteProject($scope.project.id).then(function (deletedProject) {\n $uibModalInstance.close(deletedProject);\n });\n };\n\n $scope.removeProjectFromBoard = function () {\n projectService().removeProjectFromBoard($scope.project.id, $scope.board.id, projectBoardId).then(function (deletedProject) {\n $uibModalInstance.close(deletedProject);\n });\n };\n\n \n\n $scope.close = function () {\n $uibModalInstance.dismiss('cancel');\n };\n }]);","angular\n .module('DigiLean')\n .controller(\"projectMilestoneListModalController\", ['$scope', '$uibModalInstance', 'projectService', 'projectId',\n function ($scope, $uibModalInstance, projectService, projectId) {\n\n \n $scope.projectId = projectId;\n \n $scope.canEditMilestones = true;\n $scope.canEdit = true;\n\n\n $scope.updateEstimatedStartDate = function($event) {\n const date = $event.originalEvent.detail\n $scope.project.estimatedStartDate = date\n projectService().updateEstimatedStartDate($scope.projectId, date)\n }\n\n $scope.updateStartDate = function($event) {\n const date = $event.originalEvent.detail\n $scope.project.startDate = date\n projectService().updateStartDate($scope.projectId, date)\n }\n $scope.updateEstimatedEndDate = function($event) {\n const date = $event.originalEvent.detail\n $scope.project.estimatedEndDate = date\n projectService().updateEstimatedEndDate($scope.projectId, date)\n }\n\n $scope.updateEndDate = function($event) {\n const date = $event.originalEvent.detail\n $scope.project.endDate = date\n projectService().updateEndDate($scope.projectId, date)\n }\n\n \n function get() {\n projectService().getProjectInfo($scope.projectId).then(function (project) {\n $scope.project = project;\n if ($scope.project.estimatedStartDate) {\n $scope.project.estimatedStartDate = moment($scope.project.estimatedStartDate).toDate();\n }\n if ($scope.project.startDate) {\n $scope.project.startDate = moment($scope.project.startDate).toDate();\n }\n if ($scope.project.estimatedEndDate) {\n $scope.project.estimatedEndDate = moment($scope.project.estimatedEndDate).toDate();\n }\n if ($scope.project.endDate) {\n $scope.project.endDate = moment($scope.project.endDate).toDate();\n }\n });\n }\n get();\n $scope.close = function () {\n $uibModalInstance.dismiss('cancel');\n }\n\n }]);","angular\n .module('DigiLean').directive(\"projectMilestoneSummary\", ['projectService',\n function (projectService) {\n return {\n templateUrl: 'projectMilestoneSummary.html',\n restrict: 'E',\n scope: {\n 'project': '=',\n },\n link: function (scope, elem, attrs) {\n scope.isLoading = true;\n var projectId = null;\n\n scope.statusStartDate = null;\n scope.statusEndDate = null;\n\n scope.$watch(\"project\", function (project) {\n if (!project) return;\n projectId = scope.project.id;\n if (scope.project.estimatedStartDate) {\n scope.project.estimatedStartDate = moment(scope.project.estimatedStartDate).toDate();\n }\n if (scope.project.startDate) {\n scope.project.startDate = moment(scope.project.startDate).toDate();\n }\n if (scope.project.estimatedEndDate) {\n scope.project.estimatedEndDate = moment(scope.project.estimatedEndDate).toDate();\n }\n if (scope.project.endDate) {\n scope.project.endDate = moment(scope.project.endDate).toDate();\n }\n\n scope.statusStartDate = checkDate(scope.project.estimatedStartDate, scope.project.startDate);\n scope.statusEndDate = checkDate(scope.project.estimatedEndDate, scope.project.endDate);\n getMilestones();\n });\n\n scope.subscribe(\"ProjectMilestoneUpdated\", function (attribute) {\n if (attribute.projectId == projectId) {\n getMilestones();\n }\n });\n\n scope.subscribe(\"ProjectStartDateUpdated\", function (project) {\n if (project.id == projectId) {\n scope.project.startDate = moment(project.startDate).toDate();\n scope.statusStartDate = checkDate(scope.project.estimatedStartDate, scope.project.startDate);\n }\n });\n scope.subscribe(\"ProjectEstimatedStartDateUpdated\", function (project) {\n if (project.id == projectId) {\n scope.project.estimatedStartDate = moment(project.estimatedStartDate).toDate();\n scope.statusStartDate = checkDate(scope.project.estimatedStartDate, scope.project.startDate);\n }\n });\n\n scope.subscribe(\"ProjectEndDateUpdated\", function (project) {\n if (project.id == projectId) {\n scope.project.endDate = moment(project.endDate).toDate();\n scope.statusEndDate = checkDate(scope.project.estimatedEndDate, scope.project.endDate);\n }\n });\n scope.subscribe(\"ProjectEstimatedEndDateUpdated\", function (project) {\n if (project.id == projectId) {\n scope.project.estimatedEndDate = moment(project.estimatedEndDate).toDate();\n scope.statusEndDate = checkDate(scope.project.estimatedEndDate, scope.project.endDate);\n }\n });\n \n \n scope.isValidDate = function (date) {\n var result = moment(date);\n return result._isValid;\n };\n\n scope.updateStartDate = function($event) {\n const date = $event.originalEvent.detail\n scope.project.startDate = date\n projectService().updateStartDate(projectId,scope.project.startDate)\n }\n\n scope.updateEstimatedStartDate = function($event) {\n const date = $event.originalEvent.detail\n scope.project.estimatedStartDate = date\n projectService().updateEstimatedStartDate(projectId, scope.project.estimatedStartDate)\n }\n scope.updateEndDate = function($event) {\n const date = $event.originalEvent.detail\n scope.project.endDate = date\n projectService().updateEndDate(projectId,scope.project.endDate)\n }\n\n scope.updateEstimatedEndDate = function($event){\n const date = $event.originalEvent.detail\n scope.project.estimatedEndDate = date\n projectService().updateEstimatedEndDate(projectId,scope.project.estimatedEndDate)\n }\n\n scope.saveMilestone = function (milestone) {\n projectService().updateMilestone(milestone)\n }\n scope.savePlannedDateMilestone = function(milestone, $event) {\n const date = $event.originalEvent.detail\n milestone.plannedDate = date\n scope.saveMilestone(milestone)\n }\n scope.saveActualDateMilestone = function(milestone, $event) {\n const date = $event.originalEvent.detail\n milestone.actualDate = date\n scope.saveMilestone(milestone)\n }\n\n function checkMilestones() {\n if (scope.milestones && scope.milestones.length > 0) {\n scope.milestoneMissed = false;\n for (var i = 0; i < scope.milestones.length; i++) {\n if (scope.isValidDate(scope.milestones[i].actualDate)) {\n scope.milestones[i].status = \"completed\";\n } else if (scope.milestones[i].plannedDate) {\n //check if overdue/missed\n var duration = moment.duration(moment().diff(moment(scope.milestones[i].plannedDate)));\n var days = duration.asDays().toFixed(0);\n if (days >= 1) {\n scope.milestones[i].status = \"missed\";\n scope.milestoneMissed = true;\n } else {\n scope.milestones[i].status = \"future\";\n }\n //addNextMilestone(project, project.milestones[i], days);\n }\n }\n }\n }\n\n function checkDate(estimated, actual) {\n var status = null;\n if (scope.isValidDate(actual)) {\n status = \"completed\";\n } else if (estimated) {\n //check if overdue/missed\n var duration = moment.duration(moment().diff(moment(estimated)));\n var days = duration.asDays().toFixed(0);\n if (days >= 1) {\n status = \"missed\";\n scope.milestoneMissed = true;\n } else {\n status = \"future\";\n }\n }\n return status;\n }\n\n function getMilestones(){\n projectService().getMilestonesForProject(projectId).then(function (milestones) {\n angular.forEach(milestones, function (milestone) {\n milestone.plannedDate = moment(milestone.plannedDate).toDate();\n milestone.actualDate = moment(milestone.actualDate).toDate();\n milestone.datePicker = {\n opened: false\n },\n milestone.estimatedDatePicker = {\n opened: false\n }\n })\n scope.milestones = milestones;\n scope.project.milestones = scope.milestones;\n checkMilestones();\n });\n }\n\n\n\n }\n\n }\n }]);\n","var DigiLean = angular.module('DigiLean');\nDigiLean.directive(\"projectOnTime\", ['mathService','$translate',\n function (mathService, $translate) {\n return {\n templateUrl: 'projectOnTime.html',\n restrict: 'E',\n scope: {\n 'project': '='\n },\n link: function (scope, elem, attrs) {\n var projectOnTimeChart = null;\n\n var noOfMilestoneMet = 0;\n var noOfMilestoneDelayed = 0;\n var noOfMilestoneRemaining = 0;\n\n var percentOnTime = null;\n var percentMet = null;\n var percentDelayed = null;\n var percentRemaining = null;\n scope.decimals = 1;\n var projectId = null;\n\n scope.$watch('project', function () {\n if (scope.project) {\n projectId = scope.project.id;\n calculateMilestones(scope.project);\n if(percentOnTime != null){\n drawChart();\n }\n }\n });\n function isValidDate(date) {\n var result = moment(date);\n return result._isValid;\n };\n\n function reset(){\n \n noOfMilestoneMet = 0;\n noOfMilestoneDelayed = 0;\n noOfMilestoneRemaining = 0;\n\n percentOnTime = null;\n percentMet = null;\n percentDelayed = null;\n percentRemaining = null;\n }\n scope.subscribe(\"ProjectStartDateUpdated\", function (project) {\n if (project.id == projectId) {\n reset();\n calculateMilestones(scope.project);\n if(percentOnTime != null){\n drawChart();\n }\n }\n });\n scope.subscribe(\"ProjectEstimatedStartDateUpdated\", function (project) {\n if (project.id == projectId) {\n reset();\n calculateMilestones(scope.project);\n if(percentOnTime != null){\n drawChart();\n }\n }\n });\n\n scope.subscribe(\"ProjectEndDateUpdated\", function (project) {\n if (project.id == projectId) {\n reset();\n calculateMilestones(scope.project);\n if(percentOnTime != null){\n drawChart();\n }\n }\n });\n scope.subscribe(\"ProjectEstimatedEndDateUpdated\", function (project) {\n if (project.id == projectId) {\n reset();\n calculateMilestones(scope.project);\n if(percentOnTime != null){\n drawChart();\n }\n }\n });\n scope.subscribe(\"ProjectMilestoneUpdated\", function (attribute) {\n if (attribute.projectId == projectId) {\n reset();\n calculateMilestones(scope.project);\n if(percentOnTime != null){\n drawChart();\n }\n }\n });\n function calculateMilestones(project){\n \n if (project.milestones && project.milestones.length > 0) {\n \n for (var i = 0; i < project.milestones.length; i++) {\n if (isValidDate(project.milestones[i].actualDate)) {\n if (isValidDate(project.milestones[i].plannedDate)) {\n var duration = moment.duration(moment(project.milestones[i].plannedDate).diff(moment(project.milestones[i].actualDate), 'days'));\n if(duration<0){\n noOfMilestoneDelayed = noOfMilestoneDelayed + 1;\n } else {\n noOfMilestoneMet = noOfMilestoneMet + 1;\n }\n }\n } else if (isValidDate(project.milestones[i].plannedDate)) {\n //check if overdue/missed\n var duration = moment.duration(moment().diff(moment(project.milestones[i].plannedDate)));\n var days = duration.asDays().toFixed(0); \n if (days >= 1) {\n noOfMilestoneDelayed = noOfMilestoneDelayed + 1; \n } else {\n noOfMilestoneRemaining = noOfMilestoneRemaining + 1;\n }\n }\n }\n }\n checkOnTime(project.estimatedStartDate, project.startDate);\n checkOnTime(project.estimatedEndDate, project.endDate);\n var totalMilestones = noOfMilestoneMet + noOfMilestoneDelayed + noOfMilestoneRemaining;\n if (totalMilestones>0){\n \n percentOnTime = 100 * noOfMilestoneMet / totalMilestones;\n percentDelayed = 100 * noOfMilestoneDelayed / totalMilestones;\n percentRemaining = 100 * noOfMilestoneRemaining / totalMilestones;\n\n percentOnTime = mathService().roundNumber(percentOnTime, scope.decimals);\n percentDelayed = mathService().roundNumber(percentDelayed, scope.decimals);\n percentRemaining = mathService().roundNumber(percentRemaining, scope.decimals);\n }\n\n }\n\n function checkOnTime(estimatedDate, actualDate){\n if (isValidDate(actualDate)) {\n if (isValidDate(estimatedDate)) {\n var duration = moment.duration(moment(estimatedDate).diff(moment(actualDate), 'days'));\n if(duration<0){\n noOfMilestoneDelayed = noOfMilestoneDelayed + 1;\n } else {\n noOfMilestoneMet = noOfMilestoneMet + 1;\n }\n }\n } else if (isValidDate(estimatedDate)) {\n //check if overdue/missed\n var duration = moment.duration(moment().diff(moment(estimatedDate)));\n var days = duration.asDays().toFixed(0); \n if (days >= 1) {\n noOfMilestoneDelayed = noOfMilestoneDelayed + 1; \n } else {\n noOfMilestoneRemaining = noOfMilestoneRemaining + 1;\n }\n }\n \n }\n\n function drawChart() {\n var renderElement = $(elem).find(\".projectontime\")[0];\n projectOnTimeChart = new Highcharts.Chart({\n chart: {\n renderTo: renderElement,\n plotBackgroundColor: 'var(--digilean-fifthery-background)',//'#fafafa', //null, // '#f3f3f4', \n backgroundColor: 'var(--digilean-fifthery-background)',\n plotBorderWidth: 0,\n plotShadow: false,\n },\n title: {\n text: $translate.instant('PROJECT_ON_TIME') + '
' + percentOnTime +' %',\n align: 'center',\n verticalAlign: 'middle',\n y: 40,\n style: {\n color: 'var(--digilean-primary-text)'\n }\n },\n tooltip: {\n pointFormat: '{series.name}: {point.percentage:.1f}%'\n },\n credits: {\n enabled: false //remove link to highcharts.com\n },\n exporting: {\n enabled: false //remove context menu\n },\n plotOptions: {\n pie: {\n dataLabels: {\n enabled: true,\n distance: -50,\n style: {\n fontWeight: 'bold',\n color: 'white'\n }\n },\n startAngle: -90,\n endAngle: 90,\n center: ['50%', '75%'],\n size: '110%',\n colors: ['#8cc152', '#d9534f', '#434348'] \n }\n },\n series: [{\n type: 'pie',\n name: $translate.instant('PROJECT_MILESTONES'),\n innerSize: '50%',\n data: [\n [$translate.instant('PROJECT_ON_TIME'), percentOnTime], //milestone met \n [$translate.instant('DASHBOARD_OVERDUE'), percentDelayed], // \n [$translate.instant('PROJECT_REMAINING'), percentRemaining], \n \n ]\n }]\n });\n }\n\n\n \n\n }\n }\n }]);","angular\n .module('DigiLean').directive(\"projectImprovementSummary\", ['suggestionService','$uibModal',\n function (suggestionService, $uibModal) {\n return {\n templateUrl: 'projectImprovementSummary.html',\n restrict: 'E',\n scope: {\n 'projectId': '<',\n },\n link: function (scope, elem, attrs) {\n scope.isLoading = true;\n\n\n scope.openSuggestions = 0;\n scope.noImplementedSuggestions = 0;\n scope.noEvaluatedSuggestions = 0;\n scope.noTotalSuggestions = 0;\n\n scope.$watch(\"projectId\", function (projectId) {\n if (!projectId) return;\n\n suggestionService().getNoProjectImprovementPerStatus(scope.projectId).then(function (statusdata) {\n scope.openSuggestions = statusdata.new + statusdata.planned + statusdata.inProgress;\n scope.noImplementedSuggestions = statusdata.implemented;\n scope.noEvaluatedSuggestions = statusdata.evaluated;\n scope.noTotalSuggestions = scope.openSuggestions + scope.noImplementedSuggestions + scope.noEvaluatedSuggestions + statusdata.archived;\n });\n\n });\n \n scope.showImprovements = function () {\n var currentfilter = [{\n sourceColumn: \"ProjectId\",\n operator: \"InList\",\n items: [scope.projectId]\n \n }];\n var order = [{\n sourceColumn: \"Status\",\n SortDirection: \"DESC\"\n }, {\n sourceColumn: \"PriorityStatus\",\n SortDirection: \"DESC\"\n }];\n var options = {\n filters: currentfilter,\n sortOrders: order\n };\n \n var modalInstance = $uibModal.open({ backdrop: 'static',\n templateUrl: 'suggestionListForm.html',\n controller: 'suggestionListModalController',\n windowClass: 'fullDeviation-modal-window',\n resolve: {\n options: function () {\n return options;\n }\n }\n });\n };\n\n }\n\n }\n }]);\n","angular\n .module('DigiLean').directive(\"projectIncidentSummary\", [ 'deviationService','$uibModal',\n function (deviationService, $uibModal) {\n return {\n templateUrl: 'projectIncidentSummary.html',\n restrict: 'E',\n scope: {\n 'projectId': '<',\n },\n link: function (scope, elem, attrs) {\n scope.isLoading = true;\n\n\n scope.openDeviations = 0;\n scope.noResolvedDeviations = 0;\n scope.noRejectedDeviations = 0;\n scope.noTotalDeviations = 0;\n\n\n scope.$watch(\"projectId\", function (projectId) {\n if (!projectId) return;\n\n\n deviationService().getNoProjectDeviationPerStatus(scope.projectId).then(function (statusdata) {\n scope.openDeviations = statusdata.new + statusdata.inProgress;\n scope.noResolvedDeviations = statusdata.resolved;\n scope.noRejectedDeviations = statusdata.rejected;\n scope.noTotalDeviations = scope.openDeviations + scope.noResolvedDeviations + scope.noRejectedDeviations;\n });\n });\n\n\n scope.showDeviations = function () {\n var currentfilter = [{\n sourceColumn: \"ProjectId\",\n operator: \"InList\",\n items: [scope.projectId]\n \n }];\n var order = [{\n sourceColumn: \"Status\",\n SortDirection: \"ASC\"\n }, {\n sourceColumn: \"Severity\",\n SortDirection: \"DESC\"\n }];\n var options = {\n filters: currentfilter,\n sortOrders: order\n };\n \n var modalInstance = $uibModal.open({ backdrop: 'static',\n templateUrl: 'deviationListForm.html',\n controller: 'deviationListModalController',\n windowClass: 'fullDeviation-modal-window',\n resolve: {\n options: function () {\n return options;\n }\n }\n });\n };\n \n }\n\n }\n }]);\n","var DigiLean = angular.module('DigiLean');\nDigiLean.directive(\"projectResourceLinks\", ['$filter', '$state','projectService', 'navigationService', '$uibModal',\n function ($filter,$state, projectService, navigationService, $uibModal) {\n return {\n templateUrl: 'projectResourceLinks.html',\n restrict: 'E',\n scope: {\n 'projectId': '<',\n 'assetId': '<',\n },\n link: function (scope, elem, attrs) {\n\n scope.hasA3Module = navigationService().hasModule(\"A3\");\n scope.subscribe(\"UserAuthenticatedAndReady\", function (profile) {\n scope.hasA3Module = navigationService().hasModule(\"A3\");\n });\n\n scope.boards = [];\n scope.dashboards = [];\n scope.a3s = [];\n scope.isLoading = true;\n scope.$watch(\"projectId\", function () {\n if (scope.projectId) {\n projectService().getBoardsForProject(scope.projectId).then(function (boards) {\n scope.boards = boards;\n scope.isLoading = false;\n });\n projectService().getDashboardsForProject(scope.projectId).then(function (dashboards) {\n scope.dashboards = dashboards;\n scope.isLoading = false;\n });\n projectService().getA3ForProject(scope.projectId).then(function (a3s) {\n scope.a3s = a3s;\n scope.isLoading = false;\n });\n }\n })\n\n scope.createNewBoard = function () {\n if(scope.assetId){\n $state.go('newFlexiboard', { assetid: scope.assetId, source: \"project\" }, { reload: false });\n }\n }\n\n scope.createNewA3 = function () {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'newA3Form.html',\n controller: 'newA3ModalController',\n resolve: {\n a3: function () {\n return {\n id: 0,\n title: \"\",\n assetId: scope.assetId,\n category: \"\",\n goal: \"\"\n }\n }\n\n }\n });\n\n };\n }\n\n }\n }]);\n","var DigiLean = angular.module('DigiLean');\nDigiLean.directive(\"projectTarget\", ['$filter', 'projectService','navigationService','$uibModal',\n function ($filter, projectService, navigationService, $uibModal) {\n return {\n templateUrl: 'projectTarget.html',\n restrict: 'E',\n scope: {\n 'editable': '=',\n 'projectId': '=',\n 'projectTargetId': '=',\n 'value': '='\n },\n link: function (scope, elem, attrs) {\n\n scope.subscribe(\"UserAuthenticatedAndReady\", function(profile)\n {\n scope.hasDeviation = navigationService().hasModule(\"DEVIATION\"); \n });\n \n scope.setStatusValue = function (newValue) {\n scope.value = newValue;\n \n var status = {\n status: scope.value,\n projectTargetId: scope.projectTargetId,\n projectId: scope.projectId\n };\n projectService().updateProjectTarget(status).then(function (savedStatus) {\n\n if(scope.hasDeviation == null) {scope.hasDeviation = navigationService().hasModule(\"DEVIATION\");}\n if(scope.hasDeviation && newValue > 1) {\n addDeviation(newValue);\n }\n });\n\n }\n\n function addDeviation(statusValue) {\n var severity = DigiLean.hms.getDeviationSeverity(statusValue);\n // Make sure task responsbile dropdown is closed if open.\n var settings = {\n projectId: scope.projectId,\n severity: severity\n }\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'newDeviation.html',\n controller: 'newDeviationController',\n windowClass: 'newdeviation-modal-window',\n resolve: {\n settings: function () {\n return settings;\n }\n }\n });\n }\n\n }\n\n }\n }]);\n","angular\n .module('DigiLean')\n .controller(\"cellCloneSelectorController\", ['$scope', '$state', '$uibModalInstance', '$filter', 'smartcellService', 'celltype',\n function ($scope, $state, $uibModalInstance, $filter, smartcellService, celltype) {\n\n $scope.visualizationType = null;\n $scope.celltype = celltype;\n $scope.types = [];\n\n function getAvailableCellIdentificators(){\n if($scope.celltype == 'textfromapp'){\n smartcellService().getClonedCellIdentificators(\"text\").then(function (result) {\n $scope.types = result;\n });\n }\n }\n getAvailableCellIdentificators();\n \n $scope.changeVisualizationType = function (type) {\n $scope.visualizationType = type;\n };\n\n $scope.ok = function () {\n $uibModalInstance.close($scope.visualizationType);\n };\n\n $scope.close = function () {\n $uibModalInstance.dismiss('cancel');\n };\n }]);\n","angular.module(\"DigiLean\").service('projectBoardService', ['$translate', '$compile',\n function ($translate, $compile) {\n function projectBoardService() {\n return {\n\n getStandardProjectColumns: function () {\n\n var columns = [\n {\n name: $translate.instant(\"PROJECT_NAME\"),\n sortOrder: 0,\n attributeType: \"projectName\"\n },\n {\n name: $translate.instant(\"PROJECT_NUMBER\"),\n sortOrder: 1,\n attributeType: \"projectNumber\"\n },\n {\n name: $translate.instant(\"PROJECT_CUSTOMER\"),\n sortOrder: 2,\n attributeType: \"customer\"\n },\n {\n name: $translate.instant(\"COMMON_RESPONSIBLE\"),\n sortOrder: 3,\n attributeType: \"owner\"\n },\n {\n name: $translate.instant(\"PROJECT_START_DATE\"),\n sortOrder: 4,\n attributeType: \"startdate\"\n },\n {\n name: $translate.instant(\"COMMON_END_DATE\"),\n sortOrder: 5,\n attributeType: \"enddate\"\n }\n ]\n return columns;\n },\n\n getStandardSmartTableColumns: function () {\n\n var columns = [\n {\n name: $translate.instant(\"COMMON_DESCRIPTION\"),\n sortOrder: 0,\n attributeType: \"name\"\n }\n ]\n return columns;\n },\n\n }\n }\n return projectBoardService;\n }]);\n\n","\nangular\n .module('DigiLean')\n .controller(\"projectCellSelectionController\", ['$scope', '$uibModalInstance', 'options',\n function ($scope, $uibModalInstance, options) {\n\n $scope.options = options;\n $scope.isStrategyContext = false;\n if($scope.options && $scope.options.context == \"strategy\"){\n $scope.isStrategyContext = true;\n }\n \n $scope.addColumn = function (columnid) {\n $uibModalInstance.close(columnid);\n }\n\n $scope.close = function () {\n $uibModalInstance.dismiss('cancel');\n }\n\n \n }]);","angular\n .module('DigiLean')\n .controller(\"projectNewController\", ['$scope', '$state', '$uibModalInstance', '$filter', '$translate','$rootScope', 'projectService', 'NgTableParams', 'existing',\n function ($scope, $state, $uibModalInstance, $filter, $translate,$rootScope, projectService, NgTableParams, existing) {\n\n $scope.existingProjects = existing;\n $scope.projects= [];\n $scope.selectedProject = {};\n $scope.projectExists = false;\n $scope.projectNameExists = false;\n \n $scope.newproject = {\n name: \"\",\n category: \"ProjectBoard\",\n projectNumber:\"\"\n };\n\n projectService().getList().then(function (projects) {\n $scope.projects = projects;\n \n });\n\n $scope.ok = function () {\n if(!exists()) {\n $uibModalInstance.close($scope.newproject);\n }\n };\n\n $scope.okWithSameProjectName = function () {\n\n $uibModalInstance.close($scope.newproject);\n \n };\n $scope.close = function () {\n $uibModalInstance.dismiss('cancel');\n };\n\n $scope.checkName = function () {\n if($scope.projectNameExists) {\n if(!exists()){\n $scope.projectNameExists = false;\n }\n }\n };\n\n \n function exists(){\n var allreadyExists = false;\n $scope.projectExists = false;\n $scope.projectNameExists = false;\n for(var i=0; i<$scope.projects.length; i++ ){\n if($scope.projects[i].projectNumber && $scope.newproject.projectNumber){\n if($scope.projects[i].projectNumber.toUpperCase() === $scope.newproject.projectNumber.toUpperCase()){\n $scope.projectExists = true;\n return true;\n }\n }\n if($scope.projects[i].name.toUpperCase() === $scope.newproject.name.toUpperCase()){\n $scope.projectNameExists = true;\n return true;\n }\n \n }\n $scope.projectExists = false;\n return allreadyExists;\n }\n \n\n }]);\n","angular\n .module('DigiLean')\n .controller(\"projectSelectorController\", ['$scope', '$state', '$uibModalInstance', '$filter', '$translate', '$rootScope', 'projectService', 'NgTableParams', 'existing',\n function ($scope, $state, $uibModalInstance, $filter, $translate, $rootScope, projectService, NgTableParams, existing) {\n\n $scope.existingProjects = existing;\n $scope.projects = [];\n $scope.selectedProject = {};\n projectService().getList().then(function (projects) {\n $scope.projects = projects;\n if ($scope.existingProjects && $scope.existingProjects.length > 0) {\n for (var e = 0; e < $scope.existingProjects.length; e++) {\n var filtered = $scope.projects.filter(function (value, index, arr) {\n return value.id !== $scope.existingProjects[e].id;\n });\n $scope.projects = filtered;\n }\n }\n\n $scope.tableParams = new NgTableParams({\n }, \n {\n dataset: $scope.projects\n });\n });\n\n\n\n $scope.ok = function (selectedProject) {\n $uibModalInstance.close(selectedProject);\n };\n\n $scope.close = function () {\n $uibModalInstance.dismiss('cancel');\n };\n\n\n $translate(['COMMON_ALL', 'COMMON_NEW', 'COMMON_IN_PROGRESS', 'IMPROVEMENT_IMPLEMENTED', 'IMPROVEMENT_EVALUATED']).then(function (translations) {\n $scope.status = [\n { id: 'All', name: translations.COMMON_ALL },\n { id: 'New', name: translations.COMMON_NEW },\n { id: 'In Progress', name: translations.COMMON_IN_PROGRESS },\n { id: 'Implemented', name: translations.IMPROVEMENT_IMPLEMENTED },\n { id: 'Evaluated', name: translations.IMPROVEMENT_EVALUATED }\n ];\n });\n\n $rootScope.$on('$translateChangeSuccess', function () {\n $scope.status = [\n { id: 'All', name: $translate.instant('COMMON_ALL') },\n { id: 'New', name: $translate.instant('COMMON_NEW') },\n { id: 'In Progress', name: $translate.instant('COMMON_IN_PROGRESS') },\n { id: 'Implemented', name: $translate.instant('IMPROVEMENT_IMPLEMENTED') },\n { id: 'Evaluated', name: $translate.instant('IMPROVEMENT_EVALUATED') }\n ];\n });\n\n $scope.newPieChart = {\n data: [0, 0, 0, 0],\n options: {\n radius: 18,\n fill: [\"#ffffff\"],\n }\n };\n $scope.planPieChart = {\n data: [1, 1, 1, 1],\n options: {\n radius: 18,\n fill: [\"#5cb85c\", \"#ffffff\", \"#ffffff\", \"#ffffff\"],\n }\n };\n $scope.doPieChart = {\n data: [1, 1, 1, 1],\n options: {\n radius: 18,\n fill: [\"#5cb85c\", \"#5cb85c\", \"#ffffff\", \"#ffffff\"],\n }\n };\n $scope.checkPieChart = {\n data: [1, 1, 1, 1],\n options: {\n radius: 18,\n fill: [\"#5cb85c\", \"#5cb85c\", \"#5cb85c\", \"#ffffff\"]\n }\n };\n $scope.actPieChart = {\n data: [1, 1, 1, 1],\n options: {\n radius: 18,\n fill: [\"#5cb85c\", \"#5cb85c\", \"#5cb85c\", \"#5cb85c\"]\n }\n };\n }]);\n","angular\n .module('DigiLean')\n .controller(\"targetProjectVisualizationController\", ['$scope', '$state', '$uibModalInstance', '$filter', 'qualityService', 'projectService', 'projectId', 'visualizationType',\n function ($scope, $state, $uibModalInstance, $filter, qualityService, projectService, projectId, visualizationType) {\n\n $scope.newtype = null;//visualizationType;\n $scope.projectId = projectId;\n $scope.selectedProject = null;\n \n $scope.existingtype = null;\n\n $scope.choosentype = visualizationType;\n \n /*\n qualityService().getVisualizationTypesForProjects().then(function (result) {\n $scope.types = result;\n });*/\n projectService().getActiveProjects().then(function (projects) {\n $scope.projects = projects;\n if($scope.projectId){\n var projects = $filter('filter')($scope.projects, { id: $scope.projectId }, true);\n if (projects.length === 1) {\n $scope.selectedProject = projects[0];\n }\n } \n });\n qualityService().getVisualizationTypesForProjects().then(function (result) {\n $scope.types = result;\n });\n $scope.setVisualizationType = function (type) {\n $scope.type = null;\n $scope.choosentype = type;\n };\n\n $scope.newType = function (type) {\n $scope.existingtype = null;\n $scope.choosentype = type;\n };\n $scope.setProject = function (project) {\n $scope.projectId = project.id;\n };\n\n $scope.ok = function () {\n var result = {\n type: $scope.choosentype,\n projectId : $scope.projectId\n }\n $uibModalInstance.close(result);\n };\n\n $scope.close = function () {\n $uibModalInstance.dismiss('cancel');\n };\n }]);\n","angular\n .module('DigiLean')\n .controller(\"targetVisualizationSelectorController\", ['$scope', '$state', '$uibModalInstance', '$filter', 'qualityService',\n function ($scope, $state, $uibModalInstance, $filter, qualityService) {\n\n $scope.visualizationType = null;\n \n qualityService().getVisualizationTypesForProjects().then(function (result) {\n $scope.types = result;\n });\n $scope.changeVisualizationType = function (type) {\n $scope.visualizationType = type;\n };\n\n $scope.ok = function () {\n $uibModalInstance.close($scope.visualizationType);\n };\n\n $scope.close = function () {\n $uibModalInstance.dismiss('cancel');\n };\n }]);\n","angular\n .module('DigiLean')\n .directive(\"projectContactPersonCell\", ['$filter', '$translate','projectService','modalService','authService','contactlistService','$uibModal',\n function ($filter, $translate, projectService,modalService, authService, contactlistService, $uibModal) {\n return {\n templateUrl: 'projectContactPersonCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'editable': '=',\n 'projectAttributeChangeHandler': '&',\n },\n link: function (scope, elem, attrs) {\n scope.contact = null;\n scope.contacts = [];\n scope.qcontact = \"\";\n\n scope.isAdmin = authService.hasRole(\"Admin\") || authService.hasRole(\"ProjectAdmin\");\n // if page is refreshed we need to refresh\n scope.subscribe(\"UserAuthenticatedAndReady\", function (profile) {\n scope.isAdmin = authService.hasRole(\"Admin\") || authService.hasRole(\"ProjectAdmin\");\n });\n\n scope.$watch('model', function (projectModel) {\n var value = scope.model.projectAttribute.value;\n if (value) {\n setValue(value);\n }\n });\n\n scope.$watch(\"model\", function (model) {\n if (scope.model && scope.model.project) {\n \n contactlistService().getList().then(function (items) {\n scope.contacts = items;\n setProjectContact();\n });\n } \n model.getSortValue = function() {\n if (scope.contact) {\n return scope.contact.fullName;\n }\n return \"\";\n }\n });\n\n \n scope.subscribe(\"PersonMembershipChanged\", function (membership) {\n if (membership.projectId == scope.model.project.id && membership.role == \"CustomerContact\") {\n var matching = $filter('filter')(scope.contacts, { id: membership.personId }, true);\n if (matching.length > 0) {\n if(scope.contact){\n scope.contact.isSelected = false;\n }\n scope.contact = matching[0];\n scope.contact.isSelected = true; \n }\n }\n });\n /*\n scope.subscribe(\"ProjectContactPersonUpdated\", function (project) {\n if (project.id == scope.model.project.id) {\n scope.contact = project.contactPerson;\n }\n });\n\n scope.subscribe(\"ProjectCustomerCreated\", function (newCustomer) {\n projectService().getProjectCustomers().then(function (customers) {\n scope.customers = customers; \n });\n });*/\n\n\n var setValue = function (value) {\n scope.customer = value;\n } \n\n \n\n scope.updateContact = function(contact){\n if(scope.contact){\n scope.contact.isSelected = false;\n }\n scope.contact = contact;\n scope.contact.isSelected = true;\n contactlistService().updateProjectContactPerson(contact.id, scope.model.project.id).then(function (registeredcontact) {\n }); \n };\n \n function setProjectContact(){\n contactlistService().getProjectContactPerson(scope.model.project.id).then(function (contact) {\n if(contact){\n var matching = $filter('filter')(scope.contacts, { id: contact.id }, true);\n if (matching.length > 0) {\n scope.contact = matching[0];\n scope.contact.isSelected = true; \n } \n }\n });\n } \n \n scope.clearContact = function () {\n contactlistService().deleteProjectContactPerson(scope.model.project.id).then(function () {\n if(scope.contact){\n scope.contact.isSelected = false;\n }\n scope.contact = null;\n });\n }; \n \n scope.newContact = function (name) {\n var suggestedName = \"\";\n var suggestedCompany = \"\";\n if(name){\n suggestedName = name;\n }\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'newContactPersonForm.html',\n controller: 'newContactPersonModalController',\n resolve: {\n contact: function () {\n return {\n id: 0,\n firstName: suggestedName,\n lastName: \"\",\n title: \"\",\n email: \"\",\n phoneNumber: \"\",\n companyName: suggestedCompany\n };\n }\n \n }\n });\n \n // When user has created new contact\n modalInstance.result.then(function (newcontact) {\n contactlistService().getList().then(function (items) {\n scope.contacts = items;\n var matching = $filter('filter')(scope.contacts, { id: newcontact.id }, true);\n if (matching.length > 0) {\n scope.updateContact(matching[0]); \n }\n \n });\n }, function () {\n });\n };\n\n }\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"projectDateCell\", ['$filter', 'projectService',\n function ($filter, projectService) {\n return {\n templateUrl: 'projectDateCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'editable': '=',\n 'projectAttributeChangeHandler': '&',\n },\n link: function (scope, elem, attrs) {\n var defaultDateColor = \"#0099DE\";\n scope.color = defaultDateColor;\n scope.customColorBackground = \"#a9a9a9\";\n scope.postIts = projectService().getPostIts();\n scope.value = \"\";\n \n\n scope.updateDate = function($event){\n const date = $event.originalEvent.detail\n scope.value = date\n scope.saveChanges()\n }\n \n\n scope.$watch(\"model\", function (model) {\n var value = model.projectAttribute.value;\n if (value) {\n setValue(value);\n } \n model.getSortValue = function() {\n if (scope.value) {\n return scope.value.value;\n }\n return null;\n }\n });\n\n var setValue = function(value) {\n scope.background = value.background;\n if(value.value){\n scope.value = moment(value.value).toDate();\n } else {\n scope.value = \"\";\n }\n scope.color = value.color;\n var predefinedPostIt = $filter('filter')(scope.postIts, { background: scope.background });\n if (predefinedPostIt.length > 0) {\n scope.selectedPostIt = predefinedPostIt[0];\n } else //Custom color \n {\n scope.selectedPostIt = { title: \"custom\", background: scope.background };\n scope.customColorBackground = value.background;\n }\n }\n\n scope.subscribe(\"ProjectAttributeUpdated\", function (attribute) {\n if (attribute.projectId == scope.model.project.id && attribute.projectBoardAttributeId == scope.model.boardAttributeId) {\n if (attribute.value) {\n setValue(attribute.value);\n }\n }\n });\n\n scope.selectColor = function (postIt) {\n scope.selectedPostIt = postIt;\n if(postIt.title === 'default'){\n scope.background = \"inherit\";\n scope.color = defaultDateColor;\n } else {\n scope.background = postIt.background;\n scope.color = \"#ffffff\";\n }\n scope.saveChanges();\n }\n scope.selectCustomColor = function (color) {\n scope.selectedPostIt = {title:\"custom\", background: color};\n scope.background = color;\n scope.color = \"#ffffff\";\n scope.saveChanges();\n }\n\n scope.saveChanges = function() {\n var value = {\n background: scope.background,\n color: scope.color,\n value: scope.value\n }\n scope.model.projectAttribute.value = value;\n scope.projectAttributeChangeHandler({projectAttribute: scope.model.projectAttribute})\n }\n }\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"projectLinkCell\", ['$filter', 'debounce', 'projectService',\n function ($filter, debounce, projectService) {\n return {\n templateUrl: 'projectLinkCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'editable': '=',\n 'projectAttributeChangeHandler': '&',\n 'adminmode': '='\n },\n link: function (scope, elem, attrs) {\n scope.url = \"\";\n scope.openInNewTab = true;\n scope.text = \"\";\n scope.color = \"#676a6c\"; //\"#ffffff\";\n scope.background = \"inherit\";\n scope.customColorBackground = \"#a9a9a9\";\n scope.postIts = projectService().getPostIts();\n\n scope.showDropdown = false;\n\n scope.usePredefinedLabels = false;\n scope.labels = [];\n scope.projectAttributeId = null;\n scope.projectId = null;\n\n scope.$watch('editable', function (editable) {\n var test = editable;\n });\n\n scope.$watch('model', function (model) {\n\n var value = model.projectAttribute.value;\n scope.projectId = model.project.id;\n scope.projectAttributeId = model.boardAttributeId;\n var settings = model.column.settings;\n\n if (value) {\n setValue(value);\n }\n model.getSortValue = function () {\n return scope.text;\n }\n });\n\n scope.autofocus = function () {\n setTimeout(function () {\n //$(elem).closest(\".smarttable-link-cell\").focus(); fungerer ikke\n $(\".project-link-cell\").focus();\n\n }, 50);\n }\n\n var setValue = function (value) {\n scope.background = value.background;\n scope.url = value.url;\n scope.openInNewTab = value.openInNewTab;\n scope.text = value.text;\n scope.color = value.color;\n var predefinedPostIt = $filter('filter')(scope.postIts, { background: scope.background });\n if (predefinedPostIt.length > 0) {\n scope.selectedPostIt = predefinedPostIt[0];\n } else //Custom color \n {\n scope.selectedPostIt = { title: \"custom\", background: scope.background };\n scope.customColorBackground = value.background;\n }\n }\n\n scope.subscribe(\"ProjectAttributeUpdated\", function (attribute) {\n if (attribute.projectId == scope.model.project.id && attribute.projectBoardAttributeId == scope.model.boardAttributeId) {\n if (attribute.value) {\n setValue(attribute.value);\n }\n }\n });\n scope.selectColor = function (postIt) {\n scope.selectedPostIt = postIt;\n if (postIt.title === 'default') {\n scope.background = \"inherit\";\n scope.color = \"#676a6c\";\n } else {\n scope.background = postIt.background;\n scope.color = \"#ffffff\";\n }\n scope.commitChangesDebounced();\n }\n scope.selectCustomColor = function (color) {\n scope.selectedPostIt = { title: \"custom\", background: color };\n scope.background = color;\n scope.color = \"#ffffff\";\n scope.commitChangesDebounced();\n }\n scope.textChanged = function (text) {\n if (scope.text === text) return;\n scope.text = text;\n scope.commitChangesDebounced();\n }\n scope.urlChanged = function (url) {\n if (scope.url === url) return;\n scope.url = url;\n scope.commitChangesDebounced();\n }\n\n scope.openChanged = function (open) {\n if (scope.openInNewTab === open) return;\n scope.openInNewTab = open;\n scope.commitChangesDebounced();\n }\n scope.saveChanges = function () {\n var value = {\n background: scope.background,\n color: scope.color,\n text: scope.text,\n url: scope.url,\n openInNewTab: scope.openInNewTab\n }\n scope.model.projectAttribute.value = value;\n scope.projectAttributeChangeHandler({ projectAttribute: scope.model.projectAttribute })\n }\n\n // Debounce function so that save is called to often.\n scope.commitChangesDebounced = debounce(scope.saveChanges, 1000, false);\n\n }\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"projectNextMilestoneCell\", ['$filter', '$translate', 'projectService',\n function ($filter, $translate, projectService) {\n return {\n templateUrl: 'projectNextMilestoneCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'editable': '=',\n 'projectAttributeChangeHandler': '&',\n },\n link: function (scope, elem, attrs) {\n scope.color = \"#0099DE\";\n scope.milestoneMissed = false;\n var createNew = false;\n scope.milestone = null;\n scope.value = null;\n\n var projectId = null;\n var isStartDate = false;\n var isEndDate = false;\n\n scope.changeColor = false;\n scope.changeColorXDaysBefore = 1;\n\n scope.update = function (newValue) {\n if (scope.milestone && !createNew) {\n scope.value = newValue;\n scope.saveChanges();\n } else {\n createNew();\n }\n }\n\n\n scope.$watch(\"model\", function (model) {\n projectId = model.project.id\n var settings = model.column.settings;\n if (projectId) {\n loadNextMilestone(projectId);\n }\n if (settings) {\n if (settings.changeColor && settings.changeColorXDaysBefore) {\n scope.changeColor = true;\n scope.changeColorXDaysBefore = settings.changeColorXDaysBefore;\n }\n }\n model.getSortValue = function () {\n if (scope.milestone) {\n if(scope.milestone.actualDate){\n return scope.milestone.actualDate;\n } else {\n return scope.milestone.plannedDate;\n } \n } else {\n if(scope.model.project && scope.model.project.milestones && scope.milestoneId){\n var foundMilestone = $filter('filter')(scope.model.project.milestones, { id: scope.milestoneId });\n if (foundMilestone.length > 0) {\n if(foundMilestone[0].actualDate){\n return moment(foundMilestone[0].actualDate).toDate();\n } else if(foundMilestone[0].plannedDate){\n return moment(foundMilestone[0].plannedDate).toDate();\n } else {\n return null;\n }\n } else {\n return null;\n }\n } else {\n return null;\n }\n }\n }\n });\n\n scope.subscribe(\"ProjectDateColorCellUpdated\", function (value) {\n if (scope.model.boardAttributeId === value.projectAttributeId) {\n scope.changeColor = value.changeColor;\n scope.changeColorXDaysBefore = value.changeColorXDaysBefore;\n }\n });\n\n\n scope.subscribe(\"ProjectMilestoneUpdated\", function (attribute) {\n if (attribute.projectId == scope.model.project.id && attribute.id == scope.milestone.id) {\n loadNextMilestone(projectId);\n }\n });\n\n scope.subscribe(\"ProjectMilestoneUpdated\", function (attribute) {\n if (attribute.projectId == scope.model.project.id && attribute.id == scope.milestone.id) {\n loadNextMilestone(projectId);\n }\n });\n scope.subscribe(\"ProjectStartDateUpdated\", function (project) {\n if (project.id == scope.model.project.id && scope.milestone.milestoneName == 'STARTDATE') {\n loadNextMilestone(projectId);\n }\n });\n scope.subscribe(\"ProjectEstimatedStartDateUpdated\", function (project) {\n if (project.id == scope.model.project.id && scope.milestone.milestoneName == 'STARTDATE') {\n loadNextMilestone(projectId);\n }\n });\n scope.subscribe(\"ProjectEndDateUpdated\", function (project) {\n if (project.id == scope.model.project.id && scope.milestone.milestoneName == 'ENDDATE') {\n loadNextMilestone(projectId);\n }\n });\n scope.subscribe(\"ProjectEstimatedEndDateUpdated\", function (project) {\n if (project.id == scope.model.project.id) {\n var currentDate = moment(scope.milestone.plannedDate).startOf('day');\n var updatedDate = moment(project.estimatedEndDate).startOf('day');;\n var diffInDays = currentDate.diff(updatedDate, 'days');\n if (diffInDays >= 1) {\n loadNextMilestone(projectId);\n }\n }\n });\n\n function loadNextMilestone(projectId) {\n isStartDate = false;\n isEndDate = false;\n scope.milestoneMissed = false;\n projectService().getNextMilestonesForProject(projectId).then(function (nextmilestone) {\n if (nextmilestone) {\n scope.milestone = nextmilestone;\n if (scope.milestone.plannedDate) {\n scope.milestone.plannedDate = moment(nextmilestone.plannedDate).toDate();\n var today = moment().startOf('day');\n var target = moment(scope.milestone.plannedDate).startOf('day');\n scope.days = today.diff(target, 'days');\n if (scope.days >= 1) {\n scope.milestoneMissed = true;\n }\n scope.days = Math.abs(scope.days);\n scope.translationData = {\n days: scope.days\n };\n }\n\n scope.milestone.name = scope.milestone.milestoneName;\n translateSystemName();\n\n if (scope.milestone.actualDate) {\n scope.milestone.actualDate = moment(milestone.actualDate).toDate();\n }\n\n } else {\n createTempMilestone();\n }\n });\n }\n function createTempMilestone() {\n createNew = true;\n scope.milestone = {\n name: scope.model.column.name,//$translate.instant('PROJECT_MILESTONE'),\n projectId: scope.model.project.id,\n plannedDate: null,\n actualDate: null\n };\n }\n\n function translateSystemName() {\n if (scope.milestone.milestoneName == 'STARTDATE') {\n isStartDate = true;\n isEndDate = false;\n scope.milestone.name = $translate.instant('PROJECT_START_DATE');\n } else if (scope.milestone.milestoneName == 'ENDDATE') {\n isEndDate = true;\n isStartDate = false;\n scope.milestone.name = $translate.instant('PROJECT_COMPLETION_DATE');\n }\n }\n\n scope.saveActualDate = function ($event) {\n const date = $event.originalEvent.detail\n scope.milestone.actualDate = date\n if (isStartDate) {\n projectService().updateStartDate(projectId, scope.milestone.actualDate).then(function (milestone) {\n loadNextMilestone(projectId);\n });\n } else if (isEndDate) {\n projectService().updateEndDate(projectId, scope.milestone.actualDate).then(function (milestone) {\n loadNextMilestone(projectId);\n });\n } else {\n projectService().updateMilestone(scope.milestone).then(function (milestone) {\n loadNextMilestone(projectId);\n });\n }\n }\n\n scope.saveEstimatedDate = function ($event) {\n const date = $event.originalEvent.detail\n scope.milestone.plannedDate = date\n if (isStartDate) {\n projectService().updateEstimatedStartDate(projectId, scope.milestone.plannedDate).then(function (milestone) {\n loadNextMilestone(projectId);\n });\n } else if (isEndDate) {\n projectService().updateEstimatedEndDate(projectId, scope.milestone.plannedDate).then(function (milestone) {\n loadNextMilestone(projectId);\n });\n } else {\n projectService().updateMilestone(scope.milestone).then(function (milestone) {\n loadNextMilestone(projectId);\n });\n }\n }\n\n }\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"numberCell\", ['$filter', 'debounce', 'projectService', 'mathService',\n function ($filter, debounce, projectService, mathService) {\n return {\n templateUrl: 'numberCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'editable': '=',\n 'projectAttributeChangeHandler': '&',\n },\n link: function (scope, elem, attrs) {\n scope.number = null;\n scope.unit = null;\n scope.unitPlacement = \"right\";\n scope.projectAttributeId = null;\n scope.projectId = null;\n scope.color = \"#676a6c\"; //\"#ffffff\";\n scope.background = \"inherit\";\n scope.customColorBackground = \"#a9a9a9\";\n scope.postIts = projectService().getPostIts();\n var settings = null;\n scope.$watch('model', function (model) {\n if (model) {\n scope.projectAttributeId = model.boardAttributeId;\n scope.projectId = model.project.id;\n var value = model.projectAttribute.value;\n settings = model.column.settings;\n if (settings) {\n if (settings.unit) {\n scope.unit = settings.unit;\n if (settings.unitPlacement) {\n scope.unitPlacement = settings.unitPlacement;\n }\n }\n if (settings.decimals !== null || settings.decimals !== undefined) {\n scope.decimals = settings.decimals;\n }\n }\n if (value) {\n setValue(value);\n }\n\n model.getSortValue = function () {\n return scope.number;\n }\n }\n\n });\n\n scope.autofocus = function () {\n setTimeout(function () {\n //document.querySelector( \"input\" ).focus();\n $(\".project-text-cell\").focus();\n }, 50);\n }\n\n var setValue = function (cell) {\n scope.background = cell.background;\n var number = cell.number;\n\n if (scope.decimals !== null && scope.decimals !== undefined) {\n scope.number = mathService().roundNumber(number, scope.decimals);\n }\n\n // if (scope.number > 1000) {\n // number = $filter('number')(number, fractionSize)\n // }\n scope.number = number;\n scope.updateAggregateCell();\n\n scope.color = cell.color;\n var predefinedPostIt = $filter('filter')(scope.postIts, { background: scope.background });\n if (predefinedPostIt.length > 0) {\n scope.selectedPostIt = predefinedPostIt[0];\n } else //Custom color \n {\n scope.selectedPostIt = { title: \"custom\", background: scope.background };\n scope.customColorBackground = cell.background;\n }\n }\n scope.subscribe(\"SmartActionListNumberCellDecimalUpdated\", function (value) {\n if (scope.model.boardAttributeId == value.smartActionListColumnId) {\n scope.decimals = value.decimals;\n var value = {\n background: scope.background,\n number: scope.number\n }\n setValue(value);\n }\n });\n\n scope.subscribe(\"ProjectAttributeUpdated\", function (attribute) {\n if (attribute.projectId == scope.model.project.id && attribute.projectBoardAttributeId == scope.model.boardAttributeId) {\n if (attribute.value) {\n setValue(attribute.value);\n }\n }\n });\n scope.subscribe(\"ProjectNumberCellDecimalUpdated\", function (value) {\n if (scope.projectAttributeId === value.projectAttributeId) {\n scope.decimals = value.decimals;\n var value = {\n background: scope.background,\n number: scope.number\n }\n setValue(value);\n }\n });\n scope.subscribe(\"ProjectNumberCellUnitUpdated\", function (value) {\n if (scope.projectAttributeId === value.projectAttributeId) {\n scope.unit = value.unit;\n }\n });\n\n scope.selectColor = function (postIt) {\n scope.selectedPostIt = postIt;\n if (postIt.title === 'default') {\n scope.background = \"inherit\";\n scope.color = \"#676a6c\";\n } else {\n scope.background = postIt.background;\n scope.color = \"#ffffff\";\n }\n scope.commitChangesDebounced();\n }\n scope.selectCustomColor = function (color) {\n scope.selectedPostIt = { title: \"custom\", background: color };\n scope.background = color;\n scope.color = \"#ffffff\";\n scope.commitChangesDebounced();\n }\n scope.numberChanged = function (number) {\n if (scope.number === number) return;\n scope.number = number;\n scope.updateAggregateCell();\n scope.commitChangesDebounced();\n }\n scope.saveChanges = function () {\n var value = {\n background: scope.background,\n color: scope.color,\n number: scope.number\n }\n scope.model.projectAttribute.value = value;\n scope.projectAttributeChangeHandler({ projectAttribute: scope.model.projectAttribute })\n }\n\n scope.sendEvent = function () {\n var payload = {\n projectAttributeId: scope.projectAttributeId,\n projectId: scope.projectId,\n value: scope.number\n }\n scope.publish(\"ProjectNumberCellUpdated\", payload);\n }\n\n scope.updateAggregateCell = debounce(scope.sendEvent, 1000, false);\n\n // Debounce function so that save is called to often.\n scope.commitChangesDebounced = debounce(scope.saveChanges, 1000, false);\n\n }\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"numberCellAggregate\", ['$filter', 'mathService',\n function ($filter, mathService) {\n return {\n templateUrl: 'numberCellAggregate.html',\n restrict: 'E',\n scope: {\n 'model': '='\n },\n link: function (scope, elem, attrs) {\n var projectAttributeId = null;\n scope.numberCellAggregateValue = null;\n scope.aggregateType = \"SUM\";\n var valuePerProject = [];\n scope.decimals = null;\n scope.unit = null;\n scope.unitPlacement = \"right\";\n\n scope.$watch('model', function (model) {\n projectAttributeId = model.id;\n if (model && model.settings) {\n var settings = model.settings;\n if(settings.aggregateType){\n scope.aggregateType = settings.aggregateType;\n }\n if(settings.dataSource && settings.dataSource.valueElement.unit == \"%\"){ //procent has to be calculated as average value\n scope.aggregateType = \"AVERAGE\";\n }\n if(settings.unit){\n scope.unit = settings.unit;\n if(settings.unitPlacement){\n scope.unitPlacement = settings.unitPlacement;\n }\n }\n if(settings.decimals !== null || settings.decimals !== undefined){\n scope.decimals = settings.decimals;\n }\n }\n model.getSortValue = function () {\n return scope.numberCellAggregateValue;\n }\n\n });\n\n scope.subscribe(\"ProjectNumberCellUpdated\", function (value) {\n if(projectAttributeId === value.projectAttributeId){\n updateValue(value);\n }\n });\n\n \n scope.subscribe(\"ProjectNumberCellUnitUpdated\", function (value) {\n if(projectAttributeId === value.projectAttributeId){\n scope.unit = value.unit;\n }\n });\n scope.subscribe(\"ProjectNumberCellUnitPlacementUpdated\", function (value) {\n if(projectAttributeId === value.projectAttributeId){\n scope.unitPlacement = value.unitPlacement;\n }\n });\n scope.subscribe(\"ProjectNumberCellDecimalUpdated\", function (value) {\n if(projectAttributeId === value.projectAttributeId){\n scope.decimals = value.decimals;\n calculateAggregateValue();\n }\n });\n scope.subscribe(\"ProjectNumberCellAggregateTypeUpdated\", function (value) {\n if(projectAttributeId === value.projectAttributeId){\n scope.aggregateType = value.aggregateType;\n calculateAggregateValue();\n }\n });\n\n scope.subscribe(\"ProjectDeleted\", function (payLoad) {\n var existingValueForProject = $filter('filter')(valuePerProject, { projectId: payLoad.id });\n\n if (existingValueForProject && existingValueForProject.length > 0) {\n var index = valuePerProject.indexOf(existingSumForProject);\n valuePerProject.splice(index, 1);\n calculateAggregateValue();\n }\n });\n\n\n function updateValue(updatedValue) {\n\n var existingValueForProject = $filter('filter')(valuePerProject, { projectId: updatedValue.projectId });\n\n if (existingValueForProject && existingValueForProject.length > 0) {\n var index = valuePerProject.indexOf(existingValueForProject[0]);\n valuePerProject[index] = updatedValue;\n } else {\n valuePerProject.push(updatedValue);\n }\n calculateAggregateValue();\n }\n\n function calculateAggregateValue() {\n scope.numberCellAggregateValue = 0;\n var noOfProjectCellWithValue = 0;\n for (var i = 0; i < valuePerProject.length; i++) {\n if (valuePerProject[i].value) {\n scope.numberCellAggregateValue = scope.numberCellAggregateValue + valuePerProject[i].value;\n noOfProjectCellWithValue = noOfProjectCellWithValue + 1;\n }\n }\n if (scope.aggregateType === \"AVERAGE\" && noOfProjectCellWithValue > 0) {\n scope.numberCellAggregateValue = scope.numberCellAggregateValue / noOfProjectCellWithValue;\n }\n\n if(scope.decimals !== null) {\n if(scope.decimals !== undefined) {\n scope.numberCellAggregateValue = mathService().roundNumber(scope.numberCellAggregateValue, scope.decimals);\n }\n }\n }\n }\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"ownerCell\", ['$filter', 'projectService',\n function ($filter, projectService) {\n return {\n templateUrl: 'ownerCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'editable': '=',\n 'projectAttributeChangeHandler': '&',\n 'users': '<'\n },\n link: function (scope, elem, attrs) {\n scope.displayName = \"\";\n scope.user = null;\n\n scope.$watch(\"users\", function (users) {\n if (!users) return;\n mapUser();\n });\n\n var mapUser = function() {\n if (scope.user === null && scope.model && scope.model.project.ownerUserId && scope.users) {\n var matchingUser = scope.users.find(user => user.userId === scope.model.project.ownerUserId);\n if (matchingUser) {\n scope.displayName = matchingUser.ownerDisplayName;\n scope.user = matchingUser;\n }\n }\n }\n\n scope.$watch(\"model\", function (model) {\n if (scope.model && scope.model.project) {\n if (scope.model.project.ownerUserId) {\n mapUser();\n }\n }\n if(scope.model){\n model.getSortValue = function () {\n if (scope.user) {\n return scope.user.fullName;\n }\n return \"\";\n }\n }\n });\n\n scope.subscribe(\"ProjectOwnerUpdated\", function (project) {\n if (project.id == scope.model.project.id) {\n if(project.ownerUserId)\n {\n var matchingUser = $filter('filter')(scope.users, { userId: project.ownerUserId }, true);\n if (matchingUser.length > 0) {\n scope.displayName = matchingUser[0].ownerDisplayName;\n scope.user = matchingUser[0];\n }\n }\n else {\n scope.displayName = \"\";\n scope.user = null;\n }\n }\n });\n \n scope.clearSelectedUser = function () {\n var emptyUser = {\n userId : null,\n fullName: \"\",\n displayName: \"\"\n }\n projectService().updateOwner(scope.model.project.id, emptyUser).then(function (registeredowner) {\n scope.user = null;\n });\n };\n\n scope.selectUser = function (user) {\n scope.user = user;\n scope.displayname = user.displayName;\n projectService().updateOwner(scope.model.project.id, user).then(function (registeredowner) {\n });\n };\n }\n }\n }]);","angular\n .module('DigiLean')\n .directive(\"projectPersonCell\", ['$filter', 'projectService',\n function ($filter, projectService) {\n return {\n templateUrl: 'projectPersonCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'editable': '=',\n 'projectAttributeChangeHandler': '&',\n 'users': '<'\n },\n link: function (scope, elem, attrs) {\n scope.displayName = \"\";\n scope.$watch('model', function (model) {\n var value = scope.model.projectAttribute.value;\n if (value) {\n setValue(value);\n mapUser();\n }\n model.getSortValue = function () {\n if (scope.user) {\n return scope.user.fullName;\n }\n return \"\";\n }\n });\n\n var setValue = function (value) {\n scope.displayName = value.displayName;\n scope.user = value;\n }\n scope.subscribe(\"ProjectAttributeUpdated\", function (attribute) {\n if (attribute.projectId == scope.model.project.id && attribute.projectBoardAttributeId == scope.model.boardAttributeId) {\n if (attribute.value) {\n setValue(attribute.value);\n } else {\n scope.displayName = \"\";\n scope.user = null;\n }\n }\n });\n\n scope.$watch(\"users\", function (users) {\n if (!users) return;\n mapUser();\n });\n\n var mapUser = function() {\n if (scope.user && scope.users) {\n var matchingUser = scope.users.find(user => user.userId === scope.user.userId);\n if (matchingUser) {\n scope.displayName = matchingUser.ownerDisplayName;\n scope.user = matchingUser;\n }\n }\n }\n scope.clearSelectedUser = function () {\n scope.user = null;\n scope.model.user = null;\n scope.model.projectAttribute.value = null;\n scope.projectAttributeChangeHandler({projectAttribute: scope.model.projectAttribute})\n };\n \n scope.selectUser = function (user) {\n scope.user = user;\n scope.model.user = user;\n user.assetRole = \"Member\";\n scope.model.projectAttribute.value = user;\n scope.projectAttributeChangeHandler({projectAttribute: scope.model.projectAttribute})\n if(user){\n projectService().addUser(scope.model.project.id, user).then(function (user) {\n });\n }\n };\n }\n }\n }]);","angular\n .module('DigiLean')\n .directive(\"progressbar\", ['$filter', '$translate',\n function ($filter, $translate) {\n return {\n templateUrl: 'progressbar.html',\n restrict: 'E',\n scope: {\n 'progress': '=',\n 'color': '=',\n },\n link: function (scope, elem, attrs) {\n scope.$watch('progress', function (value) {\n \n });\n scope.$watch('color', function (value) {\n \n });\n }\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"projectProgressCell\", ['$filter', '$translate',\n function ($filter, $translate) {\n return {\n templateUrl: 'projectProgressCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'editable': '=',\n 'projectAttributeChangeHandler': '&',\n },\n link: function (scope, elem, attrs) {\n scope.options = [\n { progress: 25, label: \"25 %\", color: \"#0099DE\"},\n { progress: 50, label: \"50 %\", color: \"#0099DE\"},\n { progress: 75, label: \"75 %\", color: \"#0099DE\"},\n { progress: 100, label: \"100 %\", color: \"#8CC152\"},\n ]\n\n scope.customOption = {\n progress: 0,\n label: \"0 %\",\n color: \"0099DE\"\n };\n scope.$watch(\"model\", function (model) {\n var value = scope.model.projectAttribute.value;\n if (value) {\n scope.progress = value.progress;\n scope.color = value.color;\n scope.customOption.progress = value.progress;\n }\n model.getSortValue = function () {\n if (scope.progress) {\n return scope.progress;\n }\n return 0;\n }\n });\n \n \n scope.subscribe(\"ProjectAttributeUpdated\", function (attribute) {\n if (attribute.projectId == scope.model.project.id && attribute.projectBoardAttributeId == scope.model.boardAttributeId) {\n if (attribute.value && scope.progress !== attribute.value.progress) {\n scope.progress = attribute.value.progress;\n scope.color = attribute.value.color; \n scope.label = attribute.value.label;\n scope.customOption.progress = attribute.value.progress;\n }\n }\n });\n \n \n scope.setProgress = function(option) {\n scope.progress = option.progress;\n scope.customOption.progress = option.progress;\n scope.color = option.color;\n if (scope.progress == 100) { // Green color if 100\n scope.color = \"#8CC152\";\n }\n // Trigger change to save\n scope.model.projectAttribute.value = {\n progress: scope.progress,\n color: scope.color,\n label: option.label\n }\n scope.projectAttributeChangeHandler({projectAttribute: scope.model.projectAttribute})\n }\n }\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"projectProgressTasksCell\", ['$filter', '$translate','$uibModal','boardTaskService',\n function ($filter, $translate, $uibModal, boardTaskService) {\n return {\n templateUrl: 'projectProgressTasksCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'editable': '=',\n 'cellChangeHandler': '&',\n },\n link: function (scope, elem, attrs) {\n var taskId = null;\n\n scope.options = [\n { progress: 25, label: \"25 %\", color: \"#0099DE\"},\n { progress: 50, label: \"50 %\", color: \"#0099DE\"},\n { progress: 75, label: \"75 %\", color: \"#0099DE\"},\n { progress: 100, label: \"100 %\", color: \"#8CC152\"},\n ]\n\n scope.customOption = {\n progress: 0,\n label: \"0 %\",\n color: \"0099DE\"\n };\n\n\n var projectId = null;\n\n scope.$watch(\"model\", function (model) {\n if (scope.model && scope.model.project) {\n if (scope.model.project.id) {\n projectId = scope.model.project.id;\n calculateProgress();\n }\n }\n model.getSortValue = function() {\n return scope.progress;\n }\n });\n\n /*\n scope.subscribe('TaskStatusUpdated', function (updatedstatus) {\n if (scope.model.task.id == updatedstatus.taskId) {\n scope.model.task.status = updatedstatus.status;\n calculateProgress();\n }\n });\n\n scope.subscribe(\"SubTaskCountChanged\", function(count) {\n if (count.taskId == taskId) {\n scope.model.task.subTaskCount = count.subTaskCount;\n scope.model.task.subTaskCompletedCount = count.subTaskCompletedCount;\n calculateProgress();\n }\n });*/\n \n scope.subscribe('TaskStatusUpdated', function (statustask) {\n if (statustask.status === 'OK') {\n calculateProgress();\n }\n });\n\n scope.subscribe('TaskDeleted', function (id) {\n calculateProgress();\n });\n scope.subscribe('NewTask', function (task) {\n calculateProgress();\n }); \n\n function calculateProgress(){\n boardTaskService().getNoProjectTaskPerStatus(projectId).then(function (statusdata) {\n //scope.openTasks = statusdata.blank;\n scope.taskCompletedCount = statusdata.ok;\n //scope.noBlockedTasks = statusdata.unacceptable;\n scope.taskCount = statusdata.blank + statusdata.ok + statusdata.unacceptable;\n var progress = 0;\n if(scope.taskCount > 0){\n progress = Math.round(100 * statusdata.ok/scope.taskCount);\n }\n var progressOptions = {\n progress: progress,\n label: progress + \" %\",\n color: \"0099DE\"\n };\n scope.setProgress(progressOptions);\n });\n\n }\n \n scope.openTasks = function () {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n templateUrl: 'taskListForm.html',\n controller: 'taskListModalController',\n windowClass: 'fullDeviation-modal-window',\n resolve: {\n projectId: function () {\n return projectId;\n }\n }\n });\n };\n \n scope.setProgress = function(option) {\n scope.progress = option.progress;\n scope.customOption.progress = option.progress;\n scope.color = option.color;\n if (scope.progress == 100) { // Green color if 100\n scope.color = \"#8CC152\";\n }\n }\n }\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"projectDescriptionCell\", ['$filter', '$translate', 'projectService',\n function ($filter, $translate, projectService) {\n return {\n templateUrl: 'projectDescriptionCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'editable': '=',\n },\n link: function (scope, elem, attrs) {\n \n scope.color = \"#676a6c\"; //\"#ffffff\";\n scope.background = \"inherit\";\n scope.customColorBackground = \"#a9a9a9\";\n // scope.postIts = projectService().getPostIts();\n \n scope.description = \"\";\n \n /*scope.postIts = projectService().getPostIts();\n scope.usePredefinedLabels = false;\n scope.labels = [];*/\n\n scope.$watch('model', function (model) {\n if(scope.model){\n scope.description = model.project.description;\n model.getSortValue = function () {\n return scope.description;\n }\n }\n \n });\n\n scope.setActive= function(){\n scope.active = true;\n }\n\n scope.subscribe(\"ProjectDescriptionUpdated\", function (project) {\n if (project.id == scope.model.project.id) {\n if (project.description) {\n scope.description = project.description;\n } else {\n scope.description = \"\";\n }\n }\n });\n\n scope.autofocus = function(){\n setTimeout(function() {\n //document.querySelector( \"input\" ).focus();\n $(\".layouttextarea\").focus();\n }, 50 );\n }\n\n scope.updateProjectDescription = function(description) {\n projectService().updateProjectDescription(scope.model.project.id, description).then(function (result) {\n });\n };\n \n\n }\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"projectLinkToHubCell\", ['$state',\n function ($state,) {\n return {\n templateUrl: 'projectLinkToHubCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'editable': '=',\n 'projectAttributeChangeHandler': '&',\n },\n link: function (scope, elem, attrs) {\n scope.projectId = null;\n\n scope.$watch(\"model\", function (model) {\n if (scope.model && scope.model.project) {\n if (scope.model.project.id) {\n scope.projectId = scope.model.project.id;\n }\n }\n model.getSortValue = function () {\n return scope.projectId;\n }\n });\n }\n }\n }]);","angular\n .module('DigiLean')\n .directive(\"projectNameCell\", ['$filter', '$translate','projectService',\n function ($filter, $translate, projectService) {\n return {\n templateUrl: 'projectNameCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'editable': '=',\n 'id': '=',\n },\n link: function (scope, elem, attrs) {\n scope.projectName = \"\";\n scope.active = false;\n\n scope.$watch('model', function (model) {\n scope.projectName = model.project.name;\n model.getSortValue = function() {\n return scope.projectName;\n }\n });\n\n scope.subscribe(\"ProjectNameUpdated\", function (project) {\n if (project.id == scope.model.project.id) {\n if (project.name) {\n scope.projectName = project.name;\n } else {\n scope.projectName = \"\";\n }\n }\n });\n\n scope.setActive = function() {\n scope.active = true; \n setTimeout(function() {\n $(\".project-name\").focus();\n }, 50 ); \n }\n scope.nameChanged = function(projectName) {\n scope.active = false; \n if(projectName !== scope.projectName){\n projectService().updateProjectName(scope.model.project.id, projectName).then(function (result) { \n });\n }\n\n }\n }\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"projectNumberCell\", ['$filter', '$translate','projectService',\n function ($filter, $translate, projectService) {\n return {\n templateUrl: 'projectNumberCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'editable': '=',\n 'id': '=',\n },\n link: function (scope, elem, attrs) {\n scope.projectNumber = \"\";\n \n scope.projectExists = false;\n\n scope.$watch('model', function (model) {\n scope.projectNumber = model.project.projectNumber;\n model.getSortValue = function () {\n return scope.projectNumber;\n }\n });\n\n scope.subscribe(\"ProjectNumberUpdated\", function (project) {\n if (project.id == scope.model.project.id) {\n if (project.projectNumber) {\n scope.projectNumber = project.projectNumber;\n } else {\n scope.projectNumber = null;\n }\n }\n });\n\n function exists(){\n var allreadyExists = false;\n scope.projectExists = false;\n for(var i=0; i 0) {\n var index = scope.participants.indexOf(matchingUser[0]);\n if (index > -1) {\n scope.participants.splice(index, 1);\n }\n }\n }\n });\n\n scope.openParticipants = function () {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'projectParticipantModal.html',\n controller: 'projectParticipantModalController',\n resolve: {\n projectId: function () {\n return scope.model.project.id;\n }\n }\n });\n };\n }\n }\n }]);","angular\n .module('DigiLean')\n .directive(\"projectStatusCell\", ['$filter', '$translate', 'projectService',\n function ($filter, $translate, projectService) {\n return {\n templateUrl: 'projectStatusCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'editable': '=',\n },\n link: function (scope, elem, attrs) {\n \n scope.color = \"#676a6c\"; //\"#ffffff\";\n scope.background = \"inherit\";\n \n scope.statusOptions = projectService().getStatus();\n \n /*scope.postIts = projectService().getPostIts();\n scope.usePredefinedLabels = false;\n scope.labels = [];*/\n\n scope.$watch('model', function (model) {\n scope.selectedStatusOption = $filter('filter')(scope.statusOptions, { dbCode: model.project.status }, true)[0];\n \n model.getSortValue = function() {\n if (!scope.selectedStatusOption) return 0;\n return scope.selectedStatusOption.sortorder;\n }\n \n });\n\n scope.subscribe(\"ProjectStatusUpdated\", function (project) {\n if (project.id == scope.model.project.id) {\n if (project.status) {\n scope.selectedStatusOption = $filter('filter')(scope.statusOptions, { dbCode: project.status }, true)[0]; \n }\n }\n });\n\n scope.autofocus = function(){\n setTimeout(function() {\n //document.querySelector( \"input\" ).focus();\n $(\".project-status-cell\").focus();\n }, 50 );\n }\n\n scope.statusChanged = function(projectStatus) { \n // scope.color = projectStatus.color;\n // scope.background = projectStatus.background;\n if(scope.selectedStatusOption && projectStatus.dbCode === scope.selectedStatusOption.dbCode){\n return; \n }\n projectService().updateProjectStatus(scope.model.project.id, projectStatus.dbCode).then(function (result) { \n });\n }\n \n /*\n var setValue = function(value) {\n scope.background = value.background;\n scope.text = value.text;\n scope.color = value.color;\n var predefinedPostIt = $filter('filter')(scope.postIts, { background: scope.background });\n $scope.selectedStatusOption = $filter('filter')($scope.statusOptions, { dbCode: $scope.project.status }, true)[0];\n \n if (predefinedPostIt.length > 0) {\n scope.selectedPostIt = predefinedPostIt[0];\n } else //Custom color \n {\n scope.selectedPostIt = { title: \"custom\", background: scope.background };\n scope.customColorBackground = value.background;\n }\n }\n\n \n\n scope.selectTextAndColor = function (postIt) {\n scope.selectedPostIt = postIt;\n if(postIt.title === 'default'){\n scope.background = \"inherit\";\n scope.color = \"#676a6c\";\n } else {\n scope.background = postIt.background;\n scope.color = postIt.color; \n scope.text = postIt.title;\n }\n scope.commitChangesDebounced();\n }\n scope.selectColor = function (postIt) {\n scope.selectedPostIt = postIt;\n if(postIt.title === 'default'){\n scope.background = \"inherit\";\n scope.color = \"#676a6c\";\n } else {\n scope.background = postIt.background;\n scope.color = \"#ffffff\";\n }\n scope.commitChangesDebounced();\n }\n scope.selectCustomColor = function (color) {\n scope.selectedPostIt = { title: \"custom\", background: color };\n scope.background = color;\n scope.color = \"#ffffff\";\n scope.commitChangesDebounced();\n }\n scope.textChanged = function (text) {\n scope.text = text;\n scope.commitChangesDebounced();\n }\n scope.saveChanges = function() {\n var value = {\n background: scope.background,\n color: scope.color,\n text: scope.text\n }\n scope.model.projectAttribute.value = value;\n scope.projectAttributeChangeHandler({projectAttribute: scope.model.projectAttribute})\n }\n\n // Debounce function so that save is called to often.\n scope.commitChangesDebounced = debounce(scope.saveChanges, 1000, false);*/\n\n }\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"projectTargetCell\", ['$filter', '$translate','navigationService',\n function ($filter, $translate, navigationService) {\n return {\n templateUrl: 'projectTargetCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'editable': '=',\n 'projectAttributeChangeHandler': '&',\n },\n link: function (scope, elem, attrs) {\n scope.value = 0;\n scope.subscribe(\"UserAuthenticatedAndReady\", function(profile)\n {\n scope.hasDeviation = navigationService().hasModule(\"DEVIATION\"); \n });\n scope.$watch(\"model\", function (model) {\n var value = scope.model.projectAttribute.value;\n if (value) {\n scope.value = value.value;\n }\n model.getSortValue = function () {\n return scope.value;\n }\n });\n \n scope.subscribe(\"ProjectAttributeUpdated\", function (attribute) {\n if (attribute.projectId == scope.model.project.id && attribute.projectBoardAttributeId == scope.model.boardAttributeId) {\n if (attribute.value) {\n scope.value = attribute.value.value;\n }\n }\n });\n\n scope.setStatusValue = function (newValue) {\n scope.value = newValue;\n scope.model.projectAttribute.value = {\n value: scope.value\n };\n scope.projectAttributeChangeHandler({projectAttribute: scope.model.projectAttribute})\n\n }\n\n function addDeviation(statusValue) {\n var severity = DigiLean.hms.getDeviationSeverity(statusValue);\n // Make sure task responsbile dropdown is closed if open.\n var settings = {\n projectId: scope.projectId,\n severity: severity\n }\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'newDeviation.html',\n controller: 'newDeviationController',\n windowClass: 'newdeviation-modal-window',\n resolve: {\n settings: function () {\n return settings;\n }\n }\n });\n }\n }\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"projectTasksCell\", ['$filter', '$translate', '$uibModal', 'boardTaskService',\n function ($filter, $translate, $uibModal, boardTaskService) {\n return {\n templateUrl: 'projectTasksCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'editable': '=',\n 'projectAttributeChangeHandler': '&',\n },\n link: function (scope, elem, attrs) {\n scope.taskCount = 0;\n scope.taskCompletedCount = 0;\n var projectId = null;\n\n scope.$watch(\"model\", function (model) {\n if (scope.model && scope.model.project) {\n if (scope.model.project.id) {\n projectId = scope.model.project.id;\n refresh();\n }\n }\n model.getSortValue = function() {\n return scope.taskCount;\n }\n });\n\n function refresh(){\n boardTaskService().getNoProjectTaskPerStatus(projectId).then(function (statusdata) {\n scope.taskCompletedCount = statusdata.ok;\n scope.taskCount = statusdata.blank + statusdata.ok + statusdata.unacceptable;\n });\n }\n\n scope.subscribe('TaskStatusUpdated', function (statustask) {\n if (statustask.status === 'OK') {\n refresh();\n }\n });\n\n scope.subscribe('TaskDeleted', function (id) {\n refresh();\n });\n scope.subscribe('NewTask', function (task) {\n refresh();\n });\n \n \n scope.openTasks = function () {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n templateUrl: 'taskListForm.html',\n controller: 'taskListModalController',\n windowClass: 'fullDeviation-modal-window',\n resolve: {\n projectId: function () {\n return projectId;\n }\n }\n });\n };\n } \n }\n }]);","angular\n .module('DigiLean')\n .directive(\"targetFromAppCell\", ['qualityService','$translate',\n function (qualityService, $translate) {\n return {\n templateUrl: 'targetFromAppCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'editable': '=',\n 'projectAttributeChangeHandler': '&',\n }, \n link: function (scope, elem, attrs) {\n scope.value = null;\n scope.projectId = null;\n var visualizationType = null;\n\n scope.$watch('model', function (model) {\n scope.projectId = model.project.id;\n if (model.column.settings) {\n if(model.column.settings.visualizationType){\n visualizationType = model.column.settings.visualizationType;\n scope.updateValue(visualizationType);\n }\n } \n model.getSortValue = function () {\n return scope.value;\n }\n });\n\n scope.subscribe(\"DateStatusChanged\", function (status) {\n if(status.visualizationType == visualizationType){ \n if (scope.projectId && status.projectId === scope.projectId) {\n scope.updateValue(visualizationType); \n }\n }\n });\n\n scope.updateValue = function (visualizationType) {\n if (!visualizationType) return;\n qualityService().getLatestProjectStatusValue(visualizationType, scope.projectId).then(function (result) {\n if(result){\n scope.value = result.status;\n scope.registerDate = result.registrationDate;\n // scope.tooltip = $translate.instant('COMMON_REGISTER_DATE') + \": \" + result.registrationDate;\n }\n });\n };\n }\n }\n }]);\n","var DigiLean = angular.module('DigiLean');\nDigiLean.controller('predefinedLabels', ['$scope', '$rootScope', '$filter', '$uibModalInstance', '$translate', 'labels','projectService',\n function ($scope, $rootScope, $filter, $uibModalInstance, $translate, labels, projectService) {\n $scope.defaultLabels = projectService().getPostIts();\n $scope.labels = labels;\n if(!$scope.labels){\n $scope.labels = $scope.defaultLabels; \n }\n\n $rootScope.$on('$translateChangeSuccess', function () {\n $scope.steps[0].title = $translate.instant('DASHBOARD_DATA_SOURCE');\n $scope.steps[1].title = $translate.instant('COMMON_FILTER');\n $scope.currentStep = $scope.steps[0];\n });\n\n \n $scope.createNew = function () {\n var newLabel = {\n title: \"\",\n fillColor: \"#ffffff\",\n background: \"#E6E9ED\",\n color: \"#ffffff\"\n }\n $scope.labels.push(newLabel);\n };\n\n $scope.delete = function (label) {\n var index = $scope.labels.indexOf(label);\n $scope.labels.splice(index, 1); \n }\n\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n\n $scope.ok = function () {\n $uibModalInstance.close($scope.labels);\n };\n\n }]);","angular\n .module('DigiLean')\n .directive(\"projectTextCell\", ['$filter', 'debounce', 'projectService',\n function ($filter, debounce, projectService) {\n return {\n templateUrl: 'projectTextCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'editable': '=',\n 'projectAttributeChangeHandler': '&',\n },\n link: function (scope, elem, attrs) {\n scope.text = \"\";\n scope.color = \"#676a6c\"; //\"#ffffff\";\n scope.background = \"inherit\";\n scope.customColorBackground = \"#a9a9a9\";\n scope.postIts = projectService().getPostIts();\n scope.usePredefinedLabels = false;\n scope.labels = [];\n\n var boardAttributeId = null;\n\n scope.$watch('model', function (model) {\n if (model) {\n var value = model.projectAttribute.value;\n var settings = model.column.settings;\n boardAttributeId = model.boardAttributeId;\n if (value) {\n setValue(value);\n }\n if (settings) {\n if (settings.usePredefinedLabels && settings.predefinedLabels) {\n scope.labels = settings.predefinedLabels;\n scope.usePredefinedLabels = true;\n }\n }\n model.getSortValue = function () {\n if (scope.usePredefinedLabels && scope.labels) {\n var order = scope.labels.length;\n if(scope.selectedPostIt){\n var match = scope.labels.find(a => a.title == scope.text || a.text == scope.text)\n if (match) {\n order = scope.labels.indexOf(match);\n }\n }\n return order;\n }\n return scope.text;\n }\n }\n });\n\n scope.autofocus = function () {\n setTimeout(function () {\n //document.querySelector( \"input\" ).focus();\n $(\".project-text-cell\").focus();\n }, 50);\n }\n\n var setValue = function (value) {\n scope.background = value.background;\n scope.text = value.text;\n scope.color = value.color;\n var predefinedPostIt = $filter('filter')(scope.postIts, { background: scope.background });\n if (predefinedPostIt.length > 0) {\n scope.selectedPostIt = predefinedPostIt[0];\n } else //Custom color \n {\n scope.selectedPostIt = { title: \"custom\", background: scope.background };\n scope.customColorBackground = value.background;\n }\n }\n\n\n scope.subscribe(\"ProjectAttributeUpdated\", function (attribute) {\n // ProjectTextCell\n if (attribute.projectId == scope.model.project.id && attribute.projectBoardAttributeId == scope.model.boardAttributeId) {\n if (attribute.value) {\n setValue(attribute.value);\n }\n }\n });\n\n scope.subscribe(\"ProjectTextCellLabelUpdated\", function (value) {\n if (boardAttributeId === value.boardAttributeId) {\n scope.labels = value.predefinedLabels;\n scope.usePredefinedLabels = value.usePredefinedLabels\n }\n });\n\n scope.selectTextAndColor = function (postIt) {\n scope.selectedPostIt = postIt;\n if (postIt.title === 'default') {\n scope.background = \"inherit\";\n scope.color = \"#676a6c\";\n scope.text = \"\";\n } else {\n scope.background = postIt.background;\n scope.color = postIt.color;\n scope.text = postIt.title;\n }\n scope.commitChangesDebounced();\n }\n scope.selectColor = function (postIt) {\n scope.selectedPostIt = postIt;\n if (postIt.title === 'default') {\n scope.background = \"inherit\";\n scope.color = \"#676a6c\";\n } else {\n scope.background = postIt.background;\n scope.color = \"#ffffff\";\n }\n scope.commitChangesDebounced();\n }\n scope.selectCustomColor = function (color) {\n scope.selectedPostIt = { title: \"custom\", background: color };\n scope.background = color;\n scope.color = \"#ffffff\";\n scope.commitChangesDebounced();\n }\n scope.textChanged = function (text) {\n scope.text = text;\n scope.commitChangesDebounced();\n }\n scope.saveChanges = function () {\n var value = {\n background: scope.background,\n color: scope.color,\n text: scope.text\n }\n scope.model.projectAttribute.value = value;\n scope.projectAttributeChangeHandler({ projectAttribute: scope.model.projectAttribute })\n }\n\n // Debounce function so that save is called to often.\n scope.commitChangesDebounced = debounce(scope.saveChanges, 1000, false);\n\n }\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"textFromAppCell\", ['smartcellService','debounce','projectService',\n function (smartcellService, debounce, projectService) {\n return {\n templateUrl: 'textFromAppCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'editable': '=',\n 'projectAttributeChangeHandler': '&',\n }, \n link: function (scope, elem, attrs) {\n scope.text = \"\";\n scope.color = \"#676a6c\"; \n scope.background = \"inherit\";\n scope.customColorBackground = \"#a9a9a9\";\n scope.postIts = projectService().getPostIts();\n scope.isCloned = false;\n scope.boardId = null;\n scope.clonedBoardId = null;\n\n scope.usePredefinedLabels = false;\n scope.labels = [];\n scope.projectId = null;\n var visualizationType = null;\n\n scope.$watch('model', function (model) {\n scope.projectId = model.project.id;\n var settings = model.column.settings;\n scope.boardId = model.column.boardId;\n if (settings) {\n if(settings.visualizationType){\n scope.isCloned = true;\n visualizationType = model.column.settings.visualizationType;\n scope.updateValue(visualizationType);\n }\n if(settings.usePredefinedLabels && settings.predefinedLabels){\n scope.labels = settings.predefinedLabels;\n scope.usePredefinedLabels = true;\n }\n } \n model.getSortValue = function () {\n return scope.text;\n }\n });\n\n scope.subscribe(\"SmartClonedCellChanged\", function (change) {\n if(change.name == visualizationType){ \n if (scope.projectId && change.projectId === scope.projectId) {\n var value = JSON.parse(change.value);\n scope.text =value.text;\n scope.color = value.color;\n scope.background = value.background;\n scope.registerDate = change.lastModified;\n\n scope.commitCellOnlyDebounced();\n }\n }\n });\n\n scope.updateValue = function (visualizationType) {\n if (!visualizationType) return;\n smartcellService().getProjectValueForClonedCell(visualizationType, scope.projectId).then(function (result) {\n if(result){\n var value = JSON.parse(result.value);\n scope.text =value.text;\n scope.color = value.color;\n scope.background = value.background;\n scope.registerDate = result.lastModified;\n\n if(value.boardId){\n scope.clonedBoardId = value.boardId;\n }\n\n if(value.labels){\n scope.usePredefinedLabels = true;\n scope.labels = value.labels;\n } else {\n scope.usePredefinedLabels = false;\n }\n }\n });\n };\n function updateCloneValue(){\n if(visualizationType && scope.isCloned){ \n var value = {\n background: scope.background,\n color: scope.color,\n text: scope.text,\n boardId: scope.boardId\n };\n if(scope.usePredefinedLabels){\n value.labels = scope.labels\n }\n var smartCloneCellValue = {\n id: scope.smartCloneId, \n value: value,\n name: visualizationType,\n type: \"text\",\n projectId: scope.projectId\n };\n smartcellService().updateCloneValue(smartCloneCellValue).then(function (savedStatus) { \n scope.clonedBoardId = scope.boardId;\n });\n }\n }\n\n scope.selectTextAndColor = function (postIt) {\n scope.selectedPostIt = postIt;\n if(postIt.title === 'default'){\n scope.background = \"inherit\";\n scope.color = \"#676a6c\";\n } else {\n scope.background = postIt.background;\n scope.color = postIt.color; \n scope.text = postIt.title;\n }\n scope.commitChangesDebounced();\n }\n scope.selectColor = function (postIt) {\n scope.selectedPostIt = postIt;\n if(postIt.title === 'default'){\n scope.background = \"inherit\";\n scope.color = \"#676a6c\";\n } else {\n scope.background = postIt.background;\n scope.color = \"#ffffff\";\n }\n scope.commitChangesDebounced();\n }\n scope.selectCustomColor = function (color) {\n scope.selectedPostIt = { title: \"custom\", background: color };\n scope.background = color;\n scope.color = \"#ffffff\";\n scope.commitChangesDebounced();\n }\n scope.textChanged = function (text) {\n scope.text = text;\n scope.commitChangesDebounced();\n }\n\n scope.saveChanges = function() {\n var value = {\n background: scope.background,\n color: scope.color,\n text: scope.text\n }\n \n scope.model.projectAttribute.value = value;\n scope.projectAttributeChangeHandler({projectAttribute: scope.model.projectAttribute})\n if(scope.isCloned){\n updateCloneValue();\n }\n }\n // Debounce function so that save is called to often.\n scope.commitChangesDebounced = debounce(scope.saveChanges, 1000, false);\n\n \n scope.saveCellChanges = function() {\n var value = {\n background: scope.background,\n color: scope.color,\n text: scope.text\n }\n \n scope.model.projectAttribute.value = value;\n scope.projectAttributeChangeHandler({projectAttribute: scope.model.projectAttribute})\n \n }\n // Debounce function so that save is called to often.\n scope.commitChangesDebounced = debounce(scope.saveChanges, 1000, false);\n\n scope.commitCellOnlyDebounced = debounce(scope.saveCellChanges, 1000, false);\n\n }\n }\n }]);\n","var DigiLean = angular.module('DigiLean');\n\nDigiLean.directive(\"projectPercentPlanComplete\", ['deviationService',\n function (deviationService) {\n return {\n templateUrl: 'projectPercentPlanComplete.html',\n restrict: 'E',\n scope: {\n 'isAdminMode': '=',\n 'timeframe': '@',\n 'settings': '=',\n 'settingsChangeHandler': '&'\n },\n link: function (scope, elem, attrs) {\n scope.options = {\n timePeriod: {\n timeframe: \"year\",\n useDefaultTimeframes: true,\n timeframes: []\n }\n };\n \n scope.periodChangedHandler = function (timePeriod) {\n scope.timePeriod = timePeriod.period;\n loadData(timePeriod.period);\n // if adminmode, then save settings\n }\n\n scope.$watch('timeframe', function (timeframe) {\n // apply\n scope.options = {\n timePeriod: {\n timeframe: timeframe,\n useDefaultTimeframes: true,\n timeframes: []\n }\n };\n });\n\n\n function loadData(timePeriod) {\n\n deviationService().getSummaryOfCategories(timePeriod).then(function (data) {\n drawChart(data);\n });\n }\n\n scope.subscribe(\"DeviationCreated\", function (deviation) {\n loadData();\n });\n\n // Dashboard Settings handling\n scope.$watch('settings', function (settings) {\n // apply\n if (settings) {\n scope.dataSource = settings.dataSource;\n if (settings.timeframe) {\n scope.options.timePeriod.timeframe = settings.timeframe;\n }\n }\n });\n\n function drawChart(data) {\n //elem.text(scope.timeframe);\n\n var categories = ['Uke 1', 'Uke 2', 'Uke 3', 'Uke 4', 'Uke 5', 'Uke 6', 'Uke 7'];\n //var count = [80, 77, 71, 75, 80, 64, 90];\n var count = [[0,80], [1,77], [2,71], [3,75], [4,80], [5,64], [6,90]];\n\n /*\n for (var i = 0; i < data.length; i++) {\n var currentItem = data[i];\n categories.push(currentItem.title);\n count.push(currentItem.count);\n }*/\n\n var renderElement = $(elem).find(\".ppc-chart\")[0];\n Highcharts.chart({\n\n \n chart:{\n renderTo: renderElement,\n },\n title: {\n text: ''\n },\n credits: {\n enabled: false\n },\n legend: {\n layout: 'horizontal',\n verticalAlign: 'bottom'\n },\n exporting: { enabled: false },\n tooltip: {\n formatter: function () {\n if (this.series.name === 'Accumulated') {\n return this.y + '%';\n }\n \n return this.x + ':
' + '# ' + this.y + '';\n }\n },\n xAxis: {\n categories: categories,\n crosshair: true\n },\n yAxis: [ {\n labels: {\n formatter: function () {\n return this.value + '%';\n }\n },\n max: 100,\n min: 0,\n opposite: false,\n title: {\n text: ''\n }\n }],\n series: [{\n regression: true ,\n regressionSettings: {\n name : 'Trend',\n color: 'rgba(223, 83, 83, .9)'\n\n },\n name: 'PPC',\n data: count,\n type: 'line'\n }\n \n ]\n\n\n\n/*\n\n chart:{\n renderTo: renderElement,\n type: 'scatter',\n zoomType: 'xy'\n },\n title: {\n text: 'Height Versus Weight of 507 Individuals by Gender'\n },\n subtitle: {\n text: 'Source: Heinz 2003'\n },\n xAxis: {\n title: {\n enabled: true,\n text: 'Height (cm)'\n },\n startOnTick: true,\n endOnTick: true,\n showLastLabel: true\n },\n yAxis: {\n title: {\n text: 'Weight (kg)'\n }\n },\n legend: {\n layout: 'vertical',\n align: 'left',\n verticalAlign: 'top',\n x: 100,\n y: 70,\n floating: true,\n backgroundColor: '#FFFFFF',\n borderWidth: 1\n },\n plotOptions: {\n scatter: {\n marker: {\n radius: 5,\n states: {\n hover: {\n enabled: true,\n lineColor: 'rgb(100,100,100)'\n }\n }\n },\n states: {\n hover: {\n marker: {\n enabled: false\n }\n }\n },\n tooltip: {\n headerFormat: '{series.name}
',\n pointFormat: '{point.x} cm, {point.y} kg'\n }\n }\n },\n series: [{\n regression: true ,\n regressionSettings: {\n name : 'Regression line',\n color: 'rgba(223, 83, 83, .9)'\n\n },\n name: 'Female',\n color: 'rgba(223, 83, 83, .5)',\n data: [[161.2, 51.6], [167.5, 59.0], [159.5, 49.2], [157.0, 63.0], [155.8, 53.6],\n [170.0, 59.0], [159.1, 47.6], [166.0, 69.8], [176.2, 66.8], [160.2, 75.2],\n [172.5, 55.2], [170.9, 54.2], [172.9, 62.5], [153.4, 42.0], [160.0, 50.0],\n [147.2, 49.8], [168.2, 49.2], [175.0, 73.2], [157.0, 47.8], [167.6, 68.8],\n [159.5, 50.6], [175.0, 82.5], [166.8, 57.2], [176.5, 87.8], [170.2, 72.8],\n [174.0, 54.5], [173.0, 59.8], [179.9, 67.3], [170.5, 67.8], [160.0, 47.0],\n [154.4, 46.2], [162.0, 55.0], [176.5, 83.0], [160.0, 54.4], [152.0, 45.8],\n [162.1, 53.6], [170.0, 73.2], [160.2, 52.1], [161.3, 67.9], [166.4, 56.6],\n [168.9, 62.3], [163.8, 58.5], [167.6, 54.5], [160.0, 50.2], [161.3, 60.3],\n [167.6, 58.3], [165.1, 56.2], [160.0, 50.2], [170.0, 72.9], [157.5, 59.8],\n [167.6, 61.0], [160.7, 69.1], [163.2, 55.9], [152.4, 46.5], [157.5, 54.3],\n [168.3, 54.8], [180.3, 60.7], [165.5, 60.0], [165.0, 62.0], [164.5, 60.3],\n [156.0, 52.7], [160.0, 74.3], [163.0, 62.0], [165.7, 73.1], [161.0, 80.0],\n [162.0, 54.7], [166.0, 53.2], [174.0, 75.7], [172.7, 61.1], [167.6, 55.7],\n [151.1, 48.7], [164.5, 52.3], [163.5, 50.0], [152.0, 59.3], [169.0, 62.5],\n [164.0, 55.7], [161.2, 54.8], [155.0, 45.9], [170.0, 70.6], [176.2, 67.2],\n [170.0, 69.4], [162.5, 58.2], [170.3, 64.8], [164.1, 71.6], [169.5, 52.8],\n [163.2, 59.8], [154.5, 49.0], [159.8, 50.0], [173.2, 69.2], [170.0, 55.9],\n [161.4, 63.4], [169.0, 58.2], [166.2, 58.6], [159.4, 45.7], [162.5, 52.2],\n [159.0, 48.6], [162.8, 57.8], [159.0, 55.6], [179.8, 66.8], [162.9, 59.4],\n [161.0, 53.6], [151.1, 73.2], [168.2, 53.4], [168.9, 69.0], [173.2, 58.4],\n [171.8, 56.2], [178.0, 70.6], [164.3, 59.8], [163.0, 72.0], [168.5, 65.2],\n [166.8, 56.6], [172.7, 105.2], [163.5, 51.8], [169.4, 63.4], [167.8, 59.0],\n [159.5, 47.6], [167.6, 63.0], [161.2, 55.2], [160.0, 45.0], [163.2, 54.0],\n [162.2, 50.2], [161.3, 60.2], [149.5, 44.8], [157.5, 58.8], [163.2, 56.4],\n [172.7, 62.0], [155.0, 49.2], [156.5, 67.2], [164.0, 53.8], [160.9, 54.4],\n [162.8, 58.0], [167.0, 59.8], [160.0, 54.8], [160.0, 43.2], [168.9, 60.5],\n [158.2, 46.4], [156.0, 64.4], [160.0, 48.8], [167.1, 62.2], [158.0, 55.5],\n [167.6, 57.8], [156.0, 54.6], [162.1, 59.2], [173.4, 52.7], [159.8, 53.2],\n [170.5, 64.5], [159.2, 51.8], [157.5, 56.0], [161.3, 63.6], [162.6, 63.2],\n [160.0, 59.5], [168.9, 56.8], [165.1, 64.1], [162.6, 50.0], [165.1, 72.3],\n [166.4, 55.0], [160.0, 55.9], [152.4, 60.4], [170.2, 69.1], [162.6, 84.5],\n [170.2, 55.9], [158.8, 55.5], [172.7, 69.5], [167.6, 76.4], [162.6, 61.4],\n [167.6, 65.9], [156.2, 58.6], [175.2, 66.8], [172.1, 56.6], [162.6, 58.6],\n [160.0, 55.9], [165.1, 59.1], [182.9, 81.8], [166.4, 70.7], [165.1, 56.8],\n [177.8, 60.0], [165.1, 58.2], [175.3, 72.7], [154.9, 54.1], [158.8, 49.1],\n [172.7, 75.9], [168.9, 55.0], [161.3, 57.3], [167.6, 55.0], [165.1, 65.5],\n [175.3, 65.5], [157.5, 48.6], [163.8, 58.6], [167.6, 63.6], [165.1, 55.2],\n [165.1, 62.7], [168.9, 56.6], [162.6, 53.9], [164.5, 63.2], [176.5, 73.6],\n [168.9, 62.0], [175.3, 63.6], [159.4, 53.2], [160.0, 53.4], [170.2, 55.0],\n [162.6, 70.5], [167.6, 54.5], [162.6, 54.5], [160.7, 55.9], [160.0, 59.0],\n [157.5, 63.6], [162.6, 54.5], [152.4, 47.3], [170.2, 67.7], [165.1, 80.9],\n [172.7, 70.5], [165.1, 60.9], [170.2, 63.6], [170.2, 54.5], [170.2, 59.1],\n [161.3, 70.5], [167.6, 52.7], [167.6, 62.7], [165.1, 86.3], [162.6, 66.4],\n [152.4, 67.3], [168.9, 63.0], [170.2, 73.6], [175.2, 62.3], [175.2, 57.7],\n [160.0, 55.4], [165.1, 104.1], [174.0, 55.5], [170.2, 77.3], [160.0, 80.5],\n [167.6, 64.5], [167.6, 72.3], [167.6, 61.4], [154.9, 58.2], [162.6, 81.8],\n [175.3, 63.6], [171.4, 53.4], [157.5, 54.5], [165.1, 53.6], [160.0, 60.0],\n [174.0, 73.6], [162.6, 61.4], [174.0, 55.5], [162.6, 63.6], [161.3, 60.9],\n [156.2, 60.0], [149.9, 46.8], [169.5, 57.3], [160.0, 64.1], [175.3, 63.6],\n [169.5, 67.3], [160.0, 75.5], [172.7, 68.2], [162.6, 61.4], [157.5, 76.8],\n [176.5, 71.8], [164.4, 55.5], [160.7, 48.6], [174.0, 66.4], [163.8, 67.3]]\n }]\n\n\n\n*/\n\n });\n }\n\n }\n }\n }]);\n","angular\n .module('DigiLean').directive(\"strategyAttachments\", ['strategyService',\n function (strategyService) {\n return {\n templateUrl: 'strategyAttachments.html',\n restrict: 'E',\n scope: {\n 'strategyGoalId': '<',\n 'assetId': '<',\n 'isEditMode': '<',\n },\n link: function (scope, elem, attrs) {\n scope.update = function () {\n \n }\n var currentAssetId = null;\n scope.uploadedFiles = [];\n scope.files = [];\n scope.isLoading = true;\n scope.toogleEditModeOn = true;\n if(scope.isEditMode){\n scope.toogleEditModeOn = false;\n }\n\n scope.$watch(\"strategyGoalId\", function (strategyGoalId) {\n loadData();\n });\n\n scope.$watch(\"assetId\", function (assetId) {\n if(currentAssetId != assetId){\n currentAssetId = scope.assetId;\n loadData();\n }\n \n });\n\n function loadData(){\n if (!scope.strategyGoalId) return;\n \n scope.isLoading = true;\n strategyService().getAttachments(scope.strategyGoalId, scope.assetId).then(function(files) {\n scope.files = files;\n scope.isLoading = false;\n });\n }\n\n\n scope.deleteFile = function (file) {\n var i = scope.files.indexOf(file);\n scope.files.splice(i, 1);\n strategyService().deleteAttachment(scope.strategyGoalId, file.id).then(function() {\n\n });\n }\n\n scope.fileUploaded = function (file) {\n strategyService().addAttachment(scope.strategyGoalId, scope.assetId,file).then(function(attachment) {\n scope.isEditMode = false;\n scope.files.push(attachment);\n });\n };\n scope.toggleEditMode = function () {\n scope.isEditMode = !scope.isEditMode ;\n };\n\n }\n\n }\n }]);\n","angular\n .module('DigiLean')\n .controller(\"goalCreatePopup\", ['$scope', '$uibModalInstance', 'strategyGoalService', 'options',\n function ($scope, $uibModalInstance, strategyGoalService, options) \n {\n \n if(options){\n $scope.goalId = options.goalId;\n $scope.options = options;\n }\n $scope.isValid = false;\n $scope.goalCreateChangedHandler = function(goalCreate) {\n $scope.isValid = false;\n $scope.goalCreate = goalCreate;\n if (!goalCreate) return;\n if (!goalCreate.color) return;\n $scope.color = goalCreate.color;\n if (!goalCreate.name) return;\n $scope.isValid = true;\n }\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n\n $scope.save = function () {\n if($scope.goalCreate.assetList && $scope.goalCreate.assetList.length >0){\n var strategyGoal = {\n name: $scope.goalCreate.name,\n color: $scope.goalCreate.color,\n assetId: null,\n parentId: $scope.goalId\n };\n var strategyGoals = [];\n for(var i=0; i < $scope.goalCreate.assetList.length; i++){\n var strategyGoal = {\n name: $scope.goalCreate.name,\n color: $scope.goalCreate.color,\n assetId: $scope.goalCreate.assetList[i].id,\n parentId: $scope.goalId\n };\n strategyGoals.push(strategyGoal);\n }\n strategyGoalService().createGoals(strategyGoals).then(function (result) {\n $uibModalInstance.close();\n });\n } else {\n var strategyGoal = {\n name: $scope.goalCreate.name,\n color: $scope.goalCreate.color,\n assetId: null,\n parentId: $scope.goalId\n };\n strategyGoalService().createGoal(strategyGoal).then(function (created) {\n $uibModalInstance.close(created);\n });\n }\n };\n }]);\n","angular\n .module('DigiLean')\n .controller(\"goalEditPopup\", ['$scope', '$uibModalInstance', 'strategyGoalService', 'goalId',\n function ($scope, $uibModalInstance, strategyGoalService, goalId) {\n $scope.goalId = goalId;\n $scope.isValid = false;\n $scope.goalEditChangedHandler = function (goalEdit) {\n $scope.isValid = false;\n $scope.goalEdit = goalEdit;\n if (!goalEdit) return;\n if (!goalEdit.color) return;\n $scope.color = goalEdit.color;\n if (!goalEdit.name) return;\n $scope.isValid = true;\n }\n\n strategyGoalService().getGoal(goalId).then(function (goal) {\n $scope.goal = goal;\n });\n\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n\n $scope.save = function () {\n var changesToSave = [];\n if ($scope.goal.name != $scope.goalEdit.name) {\n changesToSave.push(strategyGoalService().updateName(goalId, $scope.goalEdit.name));\n }\n if ($scope.goal.color != $scope.goalEdit.color) {\n changesToSave.push(strategyGoalService().updateColor(goalId, $scope.goalEdit.color));\n }\n if ($scope.goal.assetId != $scope.goalEdit.assetId) {\n changesToSave.push(strategyGoalService().updateAsset(goalId, $scope.goalEdit.assetId));\n }\n Promise.all(changesToSave).then((values) => {\n $uibModalInstance.close();\n });\n };\n }]);\n","angular\n .module('DigiLean')\n .directive(\"goalKanbanCard\", ['$filter','$uibModal','taskDrawingService','boardTaskService',\n function ($filter,$uibModal, taskDrawingService, boardTaskService) {\n return {\n templateUrl: 'goalKanbanCard.html',\n restrict: 'E',\n scope: {\n 'task': '<',\n 'users': ' 0) {\n scope.selectedPostIt = predefinedPostIt[0];\n setStyle(scope.selectedPostIt.fillColor, scope.selectedPostIt.background)\n } else {\n // Try to match background color\n var backgroundPostIt = $filter('filter')(scope.postIts, { background: taskColor });\n if (backgroundPostIt.length > 0) {\n scope.selectedPostIt = backgroundPostIt[0];\n setStyle(scope.selectedPostIt.fillColor, scope.selectedPostIt.background)\n } else {\n setStyle(scope.fillColor, scope.borderColor);\n }\n }\n }\n\n function setResponsible(task) {\n if (task.responsibleUserId && scope.users) {\n var user = $filter('filter')(scope.users, { userId: task.responsibleUserId }, false);\n if (user.length > 0) {\n task.user = user[0];\n }\n }\n }\n\n scope.subscribe(\"TaskUpdated\", function (task) {\n if (scope.model.task.id == task.id) {\n scope.model.task.color = task.color;\n setColor(scope.model.task.color);\n scope.model.task.title = task.title;\n scope.model.task.animate(\"bounce\");\n }\n });\n\n scope.subscribe('TaskAssigned', function (status) {\n if (scope.model.task.id == status.taskId) {\n scope.model.task.responsibleUserId = status.userId;\n scope.model.task.responsibleUserName = status.userName;\n scope.model.task.responsibleUserDisplayName = status.userDisplayName;\n scope.model.task.animate(\"bounce\");\n }\n });\n scope.subscribe('TaskStatusUpdated', function (status) {\n if (scope.model.task.id == status.taskId) {\n scope.model.task.status = status.status;\n if(status.status == 'OK'){\n scope.model.task.overdue = false;\n }\n }\n });\n\n var setStyle = function (fillColor, borderColor) {\n \n if (fillColor == \"#ffffff\") {\n borderColor = scope.borderColor;\n }\n \n scope.task.displayColor = borderColor;\n }\n\n scope.openCloneInfo = function(task) {\n \n $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'cloneInfo.html',\n controller: 'cloneInfoController',\n resolve: {\n task: function () {\n return task;\n }\n }\n });\n }\n scope.openTask = function () {\n boardTaskService().get(scope.task.id).then(function (task) {\n $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'boardTask.html',\n controller: 'boardTaskController',\n resolve: {\n task: function () {\n return task;\n },\n activeTab: function () {\n return \"Info\";\n },\n options: function () {\n var options = {\n archiveAvailable: true,\n users: scope.users\n }\n return options;\n }\n }\n });\n });\n }\n }\n }\n }]);","angular\n .module('DigiLean')\n .controller(\"goalSelectorController\", ['$scope', '$uibModalInstance','goals',\n function ($scope, $uibModalInstance,goals) {\n\n $scope.selectedStrategyGoal = null;\n $scope.strategyGoals = goals;\n \n $scope.setSelectedStrategyGoal = function (goal) {\n $uibModalInstance.close(goal.id);\n };\n\n\n $scope.close = function () {\n $uibModalInstance.dismiss('cancel');\n };\n }]);\n","angular\n .module('DigiLean').directive(\"strategyLinks\", ['strategyService',\n function (strategyService) {\n return {\n templateUrl: 'strategyLinks.html',\n restrict: 'E',\n scope: {\n 'strategyGoalId': '<',\n 'assetId': '<',\n 'isEditMode': '<',\n },\n link: function (scope, elem, attrs) {\n scope.uploadedFiles = [];\n scope.files = [];\n scope.isLoading = true;\n var currentAssetId = null;\n scope.toogleEditModeOn = true;\n if(scope.isEditMode){\n scope.toogleEditModeOn = false;\n }\n\n scope.title = \"\";\n scope.url = \"\";\n\n scope.$watch(\"strategyGoalId\", function (strategyGoalId) {\n loadData();\n });\n\n scope.$watch(\"assetId\", function (assetId) {\n if(currentAssetId != assetId){\n currentAssetId = scope.assetId;\n loadData();\n }\n \n });\n\n function loadData(){\n if (!scope.strategyGoalId) return;\n \n scope.isLoading = true;\n strategyService().getLinks(scope.strategyGoalId, scope.assetId).then(function(links) {\n scope.links = links;\n scope.isLoading = false;\n });\n }\n\n scope.deleteLink = function (link) {\n var i = scope.links.indexOf(link);\n scope.links.splice(i, 1);\n strategyService().deleteLink(scope.strategyGoalId, link.id).then(function() {\n\n });\n }\n\n scope.addLink = function () {\n var link = {\n title:scope.title,\n url : scope.url\n }\n strategyService().addLink(scope.strategyGoalId, scope.assetId, link).then(function(stored) {\n scope.isEditMode = false;\n scope.title = \"\";\n scope.url = \"\";\n scope.links.push(stored);\n });\n };\n scope.toggleEditMode = function () {\n scope.isEditMode = !scope.isEditMode ;\n };\n\n }\n\n }\n }]);\n","var DigiLean = angular.module('DigiLean');\nDigiLean.controller('strategyController', ['$scope', 'strategyService', 'authService',\n function ($scope, strategyService, authService) {\n\n $scope.vision = \"\"; //\"Å være den foretrukne forbedringsplattformen i verden\";\n $scope.isAdmin = authService.hasRole(\"Admin\") || authService.hasRole(\"StrategyAdmin\");\n // if page is refreshed we need to refresh\n $scope.subscribe(\"UserAuthenticatedAndReady\", function (profile) {\n $scope.isAdmin = authService.hasRole(\"Admin\") || authService.hasRole(\"StrategyAdmin\");\n });\n\n $scope.data = null;\n var strategy = null;\n\n\n\n $scope.subscribe(\"StrategyGoalCreated\", function (goal) {\n if (!goal.parentId) {\n loadStrategyBoard();\n }\n });\n\n strategyService().getVision().then(function (visioninfo) {\n if (visioninfo) {\n $scope.vision = visioninfo.vision;\n strategy = visioninfo;\n\n }\n\n })\n\n function loadStrategyBoard() {\n strategyService().getStrategyBoard().then(function (board) {\n $scope.data = board;\n $scope.hasBoard = true;\n })\n }\n loadStrategyBoard();\n\n $scope.updateStrategy = function (vision) {\n\n $scope.vision = vision;\n if (strategy) {\n if (strategy.vision == vision) return;\n strategy.vision = vision;\n strategyService().updateStrategy(strategy).then(function (result) {\n strategy = result\n })\n } else {\n strategy = {\n Id: 0,\n Vision: vision\n }\n strategyService().updateStrategy(strategy).then(function (result) {\n strategy = result\n })\n }\n };\n\n\n\n }]);\n\n\n","var DigiLean = angular.module('DigiLean');\nDigiLean.directive(\"strategyGoalResourceLinks\", ['$filter', '$state','a3Service','strategyService', 'navigationService', '$uibModal',\n function ($filter,$state, a3Service, strategyService, navigationService, $uibModal) {\n return {\n templateUrl: 'strategyGoalResourceLinks.html',\n restrict: 'E',\n scope: {\n 'strategyGoalId': '<',\n 'assetId': '<',\n },\n link: function (scope, elem, attrs) {\n\n scope.hasA3Module = navigationService().hasModule(\"A3\");\n scope.subscribe(\"UserAuthenticatedAndReady\", function (profile) {\n scope.hasA3Module = navigationService().hasModule(\"A3\");\n });\n\n scope.boards = [];\n scope.dashboards = [];\n scope.a3s = [];\n scope.isLoading = true;\n scope.$watch(\"strategyGoalId\", function () {\n loadData();\n })\n\n scope.$watch(\"assetId\", function () {\n loadData();\n })\n\n function loadData(){\n if (scope.strategyGoalId) {\n strategyService().getBoardsForStrategyGoal(scope.strategyGoalId,scope.assetId).then(function (boards) {\n scope.boards = boards;\n scope.isLoading = false;\n });\n strategyService().getDashboardsForStrategyGoal(scope.strategyGoalId, scope.assetId).then(function (dashboards) {\n scope.dashboards = dashboards;\n scope.isLoading = false;\n });\n strategyService().getA3sForStrategyGoal(scope.strategyGoalId, scope.assetId).then(function (a3s) {\n scope.a3s = a3s;\n scope.isLoading = false;\n });\n }\n }\n\n scope.createNewBoard = function () {\n if(scope.strategyGoalId){\n $state.go('newFlexiboard', { assetid: scope.assetId, strategygoalid:scope.strategyGoalId }, { reload: false });\n }\n }\n\n scope.createNewA3 = function () {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'newA3Form.html',\n controller: 'newA3ModalController',\n resolve: {\n a3: function () {\n return {\n id: 0,\n title: \"\",\n assetId: scope.assetId,\n category: \"\",\n goal: \"\"\n }\n }\n\n }\n });\n modalInstance.result.then(function (result) {\n if(result && result.id){\n a3Service().addStrategyGoalToA3(result.id, scope.strategyGoalId).then(function (saved) {\n });\n }\n });\n\n };\n }\n\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"strategyBowlerMonthlyActual\", ['$filter','$uibModal','strategyService','dataSourceService','dataService',\n function ($filter,$uibModal, strategyService,dataSourceService, dataService) {\n return {\n templateUrl: 'strategyBowlerMonthlyActual.html',\n restrict: 'E',\n scope: {\n 'kpi': '<',\n 'year': '<',\n 'month': '<',\n 'valuechanged': '<'\n },\n link: function (scope, elem, attrs) {\n scope.onTarget = null;\n scope.editable = true;\n scope.showNoteIcon = false;\n scope.note = null;\n var dataSource = null;\n var timePeriod = null;\n var locale = 'en-US';\n var yearForValue = null;\n\n function setActualValue(value){\n scope.actual = value;\n if(scope.actual){\n scope.actualformatted = scope.actual.toLocaleString(locale);\n } else {\n scope.actualformatted = null;\n }\n }\n\n scope.$watch(\"kpi\", function (kpi) {\n if (!kpi) return;\n scope.operator = kpi.operator;\n scope.kpiid = kpi.id;\n \n if (navigator.language)\n locale = navigator.language.toLowerCase();\n var value = $filter('filter')(kpi.kpiMonthlyValues, { month: scope.month },true);\n if (value && value.length > 0) { \n setActualValue(value[0].actual);\n scope.plan = value[0].plan;\n scope.note = value[0].note;\n yearForValue = value[0].year;\n if(!yearForValue) yearForValue = scope.year;\n showNoteIcon();\n checkOnTarget();\n }\n if(!yearForValue) yearForValue = scope.year;\n });\n\n scope.$watch(\"valuechanged\", function (valuechanged) {\n if (!valuechanged) return;\n scope.operator = scope.kpi.operator;\n scope.kpiid = scope.kpi.id;\n var value = $filter('filter')(scope.kpi.kpiMonthlyValues, { month: scope.month },true);\n if (value.length > 0) { \n setActualValue(value[0].actual);\n scope.plan = value[0].plan;\n scope.note = value[0].note;\n showNoteIcon();\n checkOnTarget();\n }\n });\n scope.subscribe(\"KPIMonthlyValueUpdated\", function (update) {\n if (update.kpiId == scope.kpiid && scope.month == update.month && yearForValue == update.year) {\n scope.plan = update.plan;\n if(!scope.kpi.dataSourceId){\n setActualValue(update.actual);\n }\n scope.note = update.note;\n showNoteIcon();\n checkOnTarget();\n }\n });\n\n //Datasource events\n scope.subscribe(\"DataValueAdded\", function (value) {\n if(isWithinTimePeriod(value.valueDate)){\n checkUpdatedDatasourceValue(value.dataSourceId);\n } \n });\n scope.subscribe(\"DataValueUpdated\", function (value) {\n if(isWithinTimePeriod(value.valueDate)){\n checkUpdatedDatasourceValue(value.dataSourceId);\n } \n });\n scope.subscribe(\"DataValueDeleted\", function (value) {\n checkUpdatedDatasourceValue(value.dataSourceId);\n });\n\n function isWithinTimePeriod(valueDate){\n timePeriod = getTimePeriod(); \n var result = false;\n if(valueDate && timePeriod){ //valid input\n var timeperiodfrom = moment(timePeriod.from);\n var timeperiodto = moment(timePeriod.to);\n if(moment(timeperiodfrom).isBefore(valueDate)\n && moment(valueDate).isBefore(timeperiodto)){\n return true;\n }\n }\n return result;\n }\n function checkUpdatedDatasourceValue (id) {\n if (!scope.kpi.dataSourceId) return;\n if (scope.kpi.dataSourceId !== id) return;\n var formula = scope.kpi.formula;\n /*if(scope.kpi.unit == \"%\"){\n formula = \"average\";\n }*/\n var options = {\n timePeriod: getTimePeriod(),\n filters: scope.kpi.filter,\n formula: formula\n };\n dataService().getSumForPeriod(scope.kpi.dataSourceId, options).then(function (sum) {\n if(sum) {\n setActualValue(sum);\n } else {\n setActualValue(0);\n }\n checkOnTarget();\n });\n };\n\n function getTimePeriod(){\n if (timePeriod) return timePeriod;\n var startDate = moment().set({'year': yearForValue, 'month': scope.month-1, 'date':1}).startOf('day');\n var endDate = moment(startDate).endOf(\"month\");\n timePeriod = {\n from: startDate.utc().toDate().toJSON(),\n to: endDate.utc().toDate().toJSON()\n }; \n timePeriod = timePeriod;\n return timePeriod;\n }\n\n function showNoteIcon(){\n if(!scope.note){\n scope.showNoteIcon = false;\n } else {\n scope.showNoteIcon = true;\n }\n }\n\n scope.subscribe(\"KPIUpdated\", function (update) {\n if (update.id == scope.kpiid && update.operator != scope.operator) {\n scope.operator = update.operator;\n checkOnTarget();\n }\n });\n\n function checkDatasourceTargetValid(){\n if(scope.kpi.dataSourceId){\n if(yearForValue > moment().year()){\n scope.onTarget = null;\n } else if(yearForValue == moment().year() && scope.month > moment().month()+1){\n scope.onTarget = null;\n }\n } \n }\n\n function checkOnTarget(){\n if(!scope.actual){\n scope.onTarget = null;\n }\n if(scope.operator && scope.actual != null && scope.plan != null){\n if(scope.operator == '>='){\n if(scope.actual >= scope.plan){\n scope.onTarget = true;\n } else {\n scope.onTarget = false;\n }\n \n } else if(scope.operator == '<='){\n if(scope.actual <= scope.plan){\n scope.onTarget = true;\n } else {\n scope.onTarget = false; \n }\n \n }\n else if(scope.operator == '>'){\n if(scope.actual > scope.plan){\n scope.onTarget = true;\n } else {\n scope.onTarget = false;\n }\n }\n else if(scope.operator == '<'){\n if(scope.actual < scope.plan){\n scope.onTarget = true;\n } else {\n scope.onTarget = false; \n } \n }\n checkDatasourceTargetValid(); // remove targetindicatorcolor if datasource is used and this is a future value\n }\n }\n\n scope.openDataValues = function(){\n if(scope.kpi.dataSourceId){\n if(dataSource){\n openDataValuesPopup(dataSource);\n } else {\n dataSourceService().get(scope.kpi.dataSourceId).then(function(dataSource) {\n dataSource = dataSource;\n openDataValuesPopup(dataSource);\n });\n }\n } \n }\n\n function openDataValuesPopup(dataSource){\n var datasourceoptions = {\n dataSource: dataSource,\n filters: scope.kpi.filter,\n timePeriod: getTimePeriod(),\n editable: true\n }\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n templateUrl: 'datavaluesListForm.html',\n controller: 'datavaluesListModalController',\n windowClass: 'fullDeviation-modal-window',\n resolve: {\n options: function () {\n return datasourceoptions;\n }\n }\n });\n }\n\n scope.updateNote = function(newNote){\n scope.note = newNote;\n var kpiMonthlyValue = {\n KPIId:scope.kpiid,\n month:scope.month,\n year: yearForValue,\n actual: scope.actual,\n plan: scope.plan,\n note: newNote\n }\n showNoteIcon();\n\n strategyService().updateKPIMonthlyValue(kpiMonthlyValue).then(function () {\n\n });\n\n }\n scope.clearNote = function(){\n scope.note = '';\n var kpiMonthlyValue = {\n KPIId:scope.kpiid,\n month:scope.month,\n year: yearForValue,\n actual: scope.actual,\n plan: scope.plan,\n note: null\n }\n showNoteIcon();\n strategyService().updateKPIMonthlyValue(kpiMonthlyValue).then(function () {\n\n });\n\n }\n scope.updateValue = function(newActual){\n var kpiMonthlyValue = {\n KPIId:scope.kpiid,\n month:scope.month,\n year: yearForValue,\n actual: newActual,\n plan: scope.plan,\n note: scope.note\n }\n\n strategyService().updateKPIMonthlyValue(kpiMonthlyValue).then(function () {\n\n });\n\n }\n\n }\n }\n }]);","angular\n .module('DigiLean')\n .directive(\"strategyBowlerMonthlyPlan\", ['$filter','$uibModal','strategyService','dataSourceService','dataService',\n function ($filter,$uibModal, strategyService,dataSourceService, dataService) {\n return {\n templateUrl: 'strategyBowlerMonthlyPlan.html',\n restrict: 'E',\n scope: {\n 'kpi': '<',\n 'year': '<',\n 'month': '<',\n 'valuechanged': '<'\n },\n link: function (scope, elem, attrs) {\n scope.editable = true;\n scope.active = false;\n var targetDataSource = null;\n var timePeriod = null;\n var locale = 'en-US';\n var yearForValue = null;\n\n function setPlanValue(value){\n scope.plan = value;\n if(scope.plan) {\n scope.planformatted = scope.plan.toLocaleString(locale); \n } else {\n scope.planformatted = null;\n } \n }\n\n scope.$watch(\"kpi\", function (kpi) {\n if (!kpi) return;\n scope.kpiid = kpi.id;\n var value = $filter('filter')(kpi.kpiMonthlyValues, { month: scope.month },true);\n if (value && value.length > 0) { \n setPlanValue(value[0].plan);\n scope.actual = value[0].actual;\n yearForValue = value[0].year;\n if(!yearForValue) yearForValue = scope.year;\n }\n if(!yearForValue) yearForValue = scope.year;\n });\n\n scope.$watch(\"valuechanged\", function (valuechanged) {\n if (!valuechanged) return;\n scope.kpiid = scope.kpi.id;\n var value = $filter('filter')(scope.kpi.kpiMonthlyValues, { month: scope.month },true);\n if (value.length > 0) { \n scope.actual = value[0].actual;\n setPlanValue(value[0].plan);\n }\n });\n\n scope.subscribe(\"KPIMonthlyValueUpdated\", function (update) {\n if (update.kpiId == scope.kpiid && scope.month == update.month && yearForValue == update.year) {\n scope.actual = update.actual;\n if(!scope.kpi.targetDataSourceId){\n if(update.plan != scope.plan){\n setPlanValue(update.plan); \n }\n } \n }\n });\n\n scope.setActive = function() {\n scope.active = true; \n setTimeout(function() {\n $(\".kpi-plan\").focus();\n }, 50 ); \n }\n\n //Datasource events\n scope.subscribe(\"DataValueAdded\", function (value) {\n if(isWithinTimePeriod(value.valueDate)){\n checkUpdatedDatasourceValue(value.dataSourceId);\n } \n });\n scope.subscribe(\"DataValueUpdated\", function (value) {\n if(isWithinTimePeriod(value.valueDate)){\n checkUpdatedDatasourceValue(value.dataSourceId);\n } \n });\n scope.subscribe(\"DataValueDeleted\", function (value) {\n checkUpdatedDatasourceValue(value.dataSourceId);\n });\n\n function isWithinTimePeriod(valueDate){\n timePeriod = getTimePeriod(); \n var result = false;\n if(valueDate && timePeriod){ //valid input\n var timeperiodfrom = moment(timePeriod.from);\n var timeperiodto = moment(timePeriod.to);\n if(moment(timeperiodfrom).isBefore(valueDate)\n && moment(valueDate).isBefore(timeperiodto)){\n return true;\n }\n }\n return result;\n }\n function checkUpdatedDatasourceValue (id) {\n if (!scope.kpi.targetDataSourceId) return;\n if (scope.kpi.targetDataSourceId !== id) return;\n var formula = null;\n if(scope.kpi.unit == \"%\"){\n formula = \"average\";\n }\n var options = {\n timePeriod: getTimePeriod(),\n filters: scope.kpi.targetFilter,\n formula: formula\n };\n dataService().getSumForPeriod(scope.kpi.targetDataSourceId, options).then(function (sum) {\n if(sum){\n setPlanValue(sum);\n } else {\n setPlanValue(0);\n }\n });\n };\n\n \n scope.openDataValues = function(){\n if(scope.kpi.targetDataSourceId){\n if(targetDataSource){\n openDataValuesPopup(targetDataSource);\n } else {\n dataSourceService().get(scope.kpi.targetDataSourceId).then(function(dataSource) {\n targetDataSource = dataSource;\n openDataValuesPopup(targetDataSource);\n });\n }\n } \n }\n\n function openDataValuesPopup(dataSource){\n var datasourceoptions = {\n dataSource: targetDataSource,\n filters: scope.kpi.targetFilter,\n timePeriod: getTimePeriod(),\n editable: true\n }\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n templateUrl: 'datavaluesListForm.html',\n controller: 'datavaluesListModalController',\n windowClass: 'fullDeviation-modal-window',\n resolve: {\n options: function () {\n return datasourceoptions;\n }\n }\n });\n }\n\n function getTimePeriod(){\n if (timePeriod) return timePeriod;\n var startDate = moment().set({'year': yearForValue, 'month': scope.month-1, 'date':1}).startOf('day');\n var endDate = moment(startDate).endOf(\"month\");\n timePeriod = {\n from: startDate.utc().toDate().toJSON(),\n to: endDate.utc().toDate().toJSON()\n }; \n return timePeriod;\n }\n scope.updateValue = function(newPlan){\n scope.active = false; \n if(newPlan != scope.plan){\n var kpiMonthlyValue = {\n KPIId:scope.kpiid,\n month:scope.month,\n year: yearForValue,\n plan: newPlan,\n actual: scope.actual\n }\n\n strategyService().updateKPIMonthlyValue(kpiMonthlyValue).then(function () {\n\n });\n }\n\n }\n\n }\n }\n }]);","angular\n .module('DigiLean')\n .directive(\"strategyBowlerTitle\", ['$translate','strategyService','modalService',\n function ($translate,strategyService, modalService) {\n return {\n templateUrl: 'strategyBowlerTitle.html',\n restrict: 'E',\n scope: {\n 'kpi': '=',\n },\n link: function (scope, elem, attrs) {\n scope.editable = true;\n\n /*\n scope.$watch(\"kpi\", function (kpi) {\n if (!kpi) return;\n });*/\n\n scope.subscribe(\"KPIUpdated\", function (update) {\n if (update.Id == scope.kpi.id) {\n scope.kpi.title = update.title;\n scope.kpi.unit = update.unit;\n scope.kpi.operator = update.operator;\n scope.kpi.title.animate(\"bounce\");\n }\n });\n\n\n scope.update = function(){\n if(scope.kpi.title != ''){\n strategyService().updateKPI(scope.kpi).then(function () {\n });\n }\n };\n\n scope.delete = function(){\n var modalOptions = {\n closeButtonText: $translate.instant('COMMON_CANCEL'),\n actionButtonText: $translate.instant('COMMON_DELETE'),\n headerText: scope.kpi.title,\n bodyText: $translate.instant('ADMIN_MESSAGE_DELETE_ROW_CONFIRMATION') \n };\n \n modalService.showModal({}, modalOptions).then(function (result) {\n strategyService().deleteKPI(scope.kpi.id).then(function () {\n });\n });\n \n };\n\n scope.setDirectionDown = function () {\n scope.kpi.operator = '<=';\n };\n scope.setDirectionUp = function () {\n scope.kpi.operator = '>=';\n };\n\n }\n }\n }]);","var DigiLean = angular.module('DigiLean');\nDigiLean.controller('strategyKPIConfigurationController', ['$scope', '$uibModalInstance', '$uibModal','$filter','$translate','modalService','strategyService','dataSourceService','configuration',\n function ($scope, $uibModalInstance, $uibModal, $filter,$translate,modalService, strategyService,dataSourceService, configuration) {\n $scope.settings = configuration;\n\n //Relevant for dataserie configuration\n $scope.formula = 'sum';\n\n $scope.firstdecision = null;\n $scope.thirddecision = null;\n\n $scope.operators = [\n { dbCode: \">=\", html: \">=\" },\n { dbCode: \">\", html: \">\" },\n { dbCode: \"<=\", html: \"<=\" },\n { dbCode: \"<\", html: \"<\" },\n ];\n $scope.operator = $scope.operators[0];\n\n function init() {\n if ($scope.settings) {\n $scope.title = $scope.settings.title;\n $scope.dataSourceId = $scope.settings.dataSourceId;\n $scope.filters = $scope.settings.filter;\n $scope.unit = $scope.settings.unit;\n $scope.targetDataSourceId = $scope.settings.targetDataSourceId;\n $scope.targetFilters = $scope.settings.targetFilter;\n $scope.targetValue = $scope.settings.targetValue;\n if($scope.settings.formula){\n $scope.formula = $scope.settings.formula;\n }\n if($scope.settings.operator){\n var operator = $filter('filter')($scope.operators, { dbCode: $scope.settings.operator}, true);\n if (operator.length > 0) {\n $scope.operator = operator[0];\n }\n }\n\n if($scope.dataSourceId){\n $scope.firstdecision = \"datasource\";\n dataSourceService().get($scope.dataSourceId).then(function(dataSource) {\n $scope.dataSource = dataSource;\n });\n } else if($scope.title){\n $scope.firstdecision = \"manual\";\n }\n\n if($scope.targetDataSourceId){\n $scope.targetdecision = \"datasourceTarget\";\n dataSourceService().get($scope.targetDataSourceId).then(function(dataSource) {\n $scope.targetDataSource = dataSource;\n });\n } else if($scope.targetValue !== null){\n $scope.targetdecision = \"manualTarget\";\n }\n\n if ($scope.settings.startDate) {\n $scope.startDate = moment($scope.settings.startDate).toDate();\n }\n if ($scope.settings.endDate) {\n $scope.endDate = moment($scope.settings.endDate).toDate();\n }\n }\n }\n init();\n\n $scope.updateTitle = function (title){\n $scope.title = title;\n };\n\n $scope.updateUnit = function (unit){\n $scope.unit = unit;\n };\n\n $scope.startDateUpdated = function (event) {\n const orgEvt = event.originalEvent\n const startDate = orgEvt.detail\n $scope.startDate = startDate\n $scope.changedStartDate = true\n checkDate()\n }\n\n $scope.endDateUpdated = function (event) {\n const orgEvt = event.originalEvent\n const endDate = orgEvt.detail\n $scope.endDate = endDate\n checkDate()\n }\n function checkDate(){ \n $scope.enddateBeforeStartdate = false;\n if(!($scope.endDate && $scope.startDate)) return;\n if(moment($scope.endDate).isBefore($scope.startDate)){\n $scope.enddateBeforeStartdate = true; \n }\n }\n\n /*\n $scope.updateTargetValue = function (targetValue){\n $scope.targetValue = targetValue;\n $scope.targetDataSource = null;\n };*/\n\n $scope.operatorChanged = function (operator){\n $scope.operator = operator;\n };\n\n $scope.delete = function(){\n if($scope.settings && $scope.settings.id){\n var modalOptions = {\n closeButtonText: $translate.instant('COMMON_CANCEL'),\n actionButtonText: $translate.instant('COMMON_DELETE'),\n headerText: $scope.title,\n bodyText: $translate.instant('ADMIN_MESSAGE_DELETE_ROW_CONFIRMATION') \n };\n \n modalService.showModal({}, modalOptions).then(function (result) {\n strategyService().deleteKPI($scope.settings.id).then(function () {\n });\n });\n }\n $uibModalInstance.close(\"Delete\");\n \n };\n\n \n $scope.selectDataSource = function () {\n var hasDataSerie = false;\n if ($scope.dataSource) {\n hasDataSerie = true;\n }\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'dataSourceSingleSelector.html',\n controller: 'dataSourceSingleSelector',\n windowClass: 'newdeviation-modal-window',\n resolve: {\n hasDataSerie: function () {\n return hasDataSerie;\n },\n dataSource: function () {\n return $scope.dataSource;\n },\n filters: function () {\n return $scope.filters;\n },\n withTarget: function () {\n return false;\n },\n type: function () {\n return null;\n },\n externalOnly: function () {\n return true;\n }\n }\n });\n\n modalInstance.result.then(function (result) {\n $scope.dataSource = result.dataSource;\n if(result.dataSource.valueElement){\n $scope.unit = result.dataSource.valueElement.unit;\n } \n $scope.filters = result.filters;\n if(!$scope.title){\n $scope.title = $scope.dataSource.title; \n }\n });\n };\n\n $scope.selectTargetDataSource = function () {\n var hasDataSerie = false;\n if ($scope.targetDataSource) {\n hasDataSerie = true;\n }\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'dataSourceSingleSelector.html',\n controller: 'dataSourceSingleSelector',\n windowClass: 'newdeviation-modal-window',\n resolve: {\n hasDataSerie: function () {\n return hasDataSerie;\n },\n dataSource: function () {\n return $scope.targetDataSource;\n },\n filters: function () {\n return $scope.targetFilters;\n },\n withTarget: function () {\n return false;\n },\n type: function () {\n return null;\n },\n externalOnly: function () {\n return true;\n }\n }\n });\n\n modalInstance.result.then(function (result) {\n $scope.targetDataSource = result.dataSource;\n $scope.targetFilters = result.filters;\n });\n };\n\n $scope.changeFormula = function(newFormula){\n $scope.formula = newFormula;\n }\n\n function isInputOk(){\n $scope.titleMissing = false;\n $scope.dataSourceMissing = false;\n $scope.targetMissing = false;\n if(!$scope.title || $scope.title == ''){\n $scope.titleMissing = true;\n }\n\n if($scope.firstdecision== 'datasource' && !$scope.dataSource ){\n $scope.dataSourceMissing = true;\n }\n \n if(!$scope.targetDataSource && $scope.targetdecision === 'datasourceTarget'){\n $scope.targetMissing = true;\n }\n if($scope.titleMissing || $scope.dataSourceMissing || $scope.targetMissing){\n return false;\n } else {\n return true;\n }\n }\n\n $scope.ok = function () {\n if(isInputOk()){\n $scope.settings.title = $scope.title;\n if($scope.dataSource){\n $scope.settings.dataSourceId = $scope.dataSource.id;\n } else {\n $scope.settings.dataSourceId = null;\n }\n $scope.settings.dataSource = $scope.dataSource;\n $scope.settings.filters = $scope.filters;\n if($scope.targetDataSource){\n $scope.settings.targetDataSourceId = $scope.targetDataSource.id;\n } else {\n $scope.settings.targetDataSourceId = null;\n }\n \n $scope.settings.targetDataSource = $scope.targetDataSource;\n $scope.settings.targetFilters = $scope.targetFilters;\n $scope.settings.unit = $scope.unit;\n $scope.settings.formula = $scope.formula;\n $scope.settings.operator = $scope.operator.dbCode;\n\n if($scope.startDate){\n $scope.settings.startDate = $scope.startDate;\n }\n if($scope.endDate){\n $scope.settings.endDate = $scope.endDate;\n }\n \n $uibModalInstance.close($scope.settings);\n }\n };\n\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n\n }]);","angular\n .module('DigiLean')\n .directive(\"strategyGoalCard\", ['$state', 'strategyGoalService',\n function ($state,strategyGoalService) {\n return {\n templateUrl: 'strategyGoalCard.html',\n restrict: 'E',\n scope: {\n 'goalId': '=',\n },\n link: function (scope, elem, attrs) {\n scope.goal = [];\n scope.$watch(\"goalId\", function () {\n loadGoal();\n });\n\n function loadGoal() {\n if (scope.goalId == null) return;\n strategyGoalService().getGoal(scope.goalId).then(function (goal) {\n scope.goal = goal;\n });\n }\n\n scope.goToHub = function () {\n strategyGoalService().getGoal(scope.goal.breakthroughGoalId).then(function (breakthroughgoal) {\n if(breakthroughgoal){\n /*var assetid = null;\n if(scope.goal.assetId){\n assetid = scope.goal.assetId;\n }*/\n $state.go('goalDetails', { id: scope.goal.breakthroughGoalId, assetid: scope.goal.assetId }, { reload: false });\n //$state.go('goalDetails', { id: breakthroughgoal.projectId, assetid: scope.goal.assetId }, { reload: false });\n }\n }); \n };\n }\n }\n }]);","angular\n .module('DigiLean')\n .directive(\"strategyTaskList\", ['$filter', '$translate', \n function ($filter, $translate) {\n return {\n templateUrl: 'strategyTaskList.html',\n restrict: 'E',\n scope: {\n \n },\n link: function (scope, elem, attrs) {\n scope.filter = [];\n scope.filterChanged = function(filter) {\n scope.filter = filter\n }\n }\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"assetCell\", ['$filter', '$translate', 'strategyGoalService',\n function ($filter, $translate, strategyGoalService) {\n return {\n templateUrl: 'assetCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'editable': '=',\n 'projectAttributeChangeHandler': '&',\n 'assets': '<'\n },\n link: function (scope, elem, attrs) {\n scope.name = \"\";\n scope.asset = null;\n\n \n var map = function() {\n if (scope.model && scope.model.goal.assetId && scope.assets) {\n var matching = $filter('filter')(scope.assets, { id: scope.model.goal.assetId }, true);\n if (matching.length > 0) {\n scope.name = matching[0].name;\n scope.asset = matching[0];\n }\n }\n }\n scope.$watch(\"assets\", function (assets) {\n if (!assets) return;\n map();\n });\n scope.$watch(\"model\", function (model) {\n if (scope.model && scope.model.goal) {\n if (scope.model.goal.assetId) {\n map();\n }\n }\n if(scope.model){\n model.getSortValue = function () {\n if (scope.name) {\n return scope.name;\n }\n return \"\";\n }\n }\n });\n\n scope.subscribe(\"StrategyGoalAssetUpdated\", function (goalInfo) {\n if (goalInfo.strategyGoalId == scope.model.goal.id) {\n scope.model.goal.assetId = goalInfo.assetId;\n map();\n }\n });\n scope.clearAsset = function () {\n var emptyAsset = {\n id : \"\",\n name: $translate.instant('STRATEGY_TOP_LEVEL')\n }\n scope.asset = null;\n scope.selectAsset(emptyAsset);\n };\n scope.selectAsset = function (asset) {\n scope.asset = asset;\n scope.name = asset.name;\n strategyGoalService().updateAsset(scope.model.goal.id, asset.id).then(function () {\n });\n };\n }\n }\n }]);","/* REMOVE THIS IF NOT USED*/\nangular\n .module('DigiLean')\n .controller(\"breakthroughNewController\", ['$scope', '$state', '$uibModalInstance', '$filter', '$translate','$rootScope', 'projectService', 'NgTableParams', 'existing',\n function ($scope, $state, $uibModalInstance, $filter, $translate,$rootScope, projectService, NgTableParams, existing) {\n\n $scope.existingProjects = existing;\n $scope.projects= [];\n $scope.selectedProject = {};\n $scope.projectExists = false;\n $scope.projectNameExists = false;\n \n $scope.newproject = {\n name: \"\",\n category: \"StrategyBoard\",\n projectNumber:\"\",\n color: \"\"\n };\n\n strategyService().getBreakthroughObjectives().then(function (projects) {\n $scope.projects = projects;\n \n });\n\n $scope.ok = function () {\n if(!exists()) {\n $uibModalInstance.close($scope.newproject);\n }\n };\n\n $scope.okWithSameProjectName = function () {\n\n $uibModalInstance.close($scope.newproject);\n \n };\n $scope.close = function () {\n $uibModalInstance.dismiss('cancel');\n };\n\n $scope.checkName = function () {\n if($scope.projectNameExists) {\n if(!exists()){\n $scope.projectNameExists = false;\n }\n }\n };\n\n function exists(){\n var allreadyExists = false;\n $scope.projectExists = false;\n $scope.projectNameExists = false;\n for(var i=0; i<$scope.projects.length; i++ ){\n if($scope.projects[i].projectNumber && $scope.newproject.projectNumber){\n if($scope.projects[i].projectNumber.toUpperCase() === $scope.newproject.projectNumber.toUpperCase()){\n $scope.projectExists = true;\n return true;\n }\n }\n if($scope.projects[i].name.toUpperCase() === $scope.newproject.name.toUpperCase()){\n $scope.projectNameExists = true;\n return true;\n }\n \n }\n $scope.projectExists = false;\n return allreadyExists;\n }\n \n\n }]);\n","angular\n .module('DigiLean')\n .directive(\"strategyDescriptionCell\", ['strategyGoalService',\n function (strategyGoalService) {\n return {\n templateUrl: 'strategyDescriptionCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'editable': '=',\n },\n link: function (scope, elem, attrs) {\n \n scope.color = \"#676a6c\"; //\"#ffffff\";\n scope.background = \"inherit\";\n scope.customColorBackground = \"#a9a9a9\"; \n scope.description = \"\";\n \n\n scope.$watch('model', function (model) {\n if(scope.model){\n scope.description = model.goal.description;\n model.getSortValue = function () {\n return scope.description;\n }\n }\n \n });\n\n scope.setActive= function(){\n scope.active = true;\n }\n\n scope.subscribe(\"StrategyGoalDescriptionUpdated\", function (goal) {\n if (goal.id == scope.model.goal.id) {\n if (goal.description) {\n scope.description = goal.description;\n } else {\n scope.description = \"\";\n }\n }\n });\n\n scope.autofocus = function(){\n setTimeout(function() {\n //document.querySelector( \"input\" ).focus();\n $(\".layouttextarea\").focus();\n }, 50 );\n }\n\n scope.updateDescription = function(description) {\n scope.description = description;\n var goalDescription = {\n id: scope.model.goal.id,\n description : scope.description\n };\n strategyGoalService().updateDescription(goalDescription).then(function (result) {\n });\n };\n \n\n }\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"strategyEndDateCell\", ['strategyGoalService',\n function (strategyGoalService) {\n return {\n templateUrl: 'strategyEndDateCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'editable': '=',\n 'projectAttributeChangeHandler': '&',\n },\n link: function (scope, elem, attrs) {\n scope.color = \"#0099DE\";\n scope.dateMissed = false;\n scope.date = null;\n scope.value = null;\n\n scope.updateEndDate = function($event) {\n const date = $event.originalEvent.detail\n scope.value = date\n strategyGoalService().updateEndDate(scope.model.goal.id, scope.value)\n } \n\n scope.$watch(\"model\", function (model) {\n if (scope.model && scope.model.goal) {\n if (scope.model.goal.endDate) {\n setValue(scope.model.goal.endDate);\n } \n model.getSortValue = function() {\n if (scope.date) {\n return scope.date;\n }\n return null;\n }\n }\n });\n\n var setValue = function(endDate) {\n if(endDate){\n scope.value = moment(endDate).toDate();\n }\n }\n \n\n scope.subscribe(\"StrategyGoalEndDateUpdated\", function (goal) {\n if (goal.id == scope.model.goal.id) {\n setValue(goal.endDate);\n }\n });\n \n }\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"strategyNameCell\", ['$filter', '$state', '$uibModal',\n function ($filter, $state, $uibModal) {\n return {\n templateUrl: 'strategyNameCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'editable': '=',\n 'id': '=',\n 'parentGoal': '=',\n },\n link: function (scope, elem, attrs) {\n scope.projectName = \"\";\n scope.active = false;\n scope.hasParentGoal = false;\n\n scope.$watch('model', function (model) {\n if (scope.model) {\n scope.projectName = model.goal.name;\n scope.color = model.goal.color;\n scope.parentgoal = model.goal;\n model.getSortValue = function () {\n return scope.projectName;\n }\n }\n });\n\n scope.editGoal = function () {\n var goalId = scope.model.goal.id;\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'goalEditPopup.html',\n controller: 'goalEditPopup',\n resolve: {\n goalId: function () {\n return goalId;\n }\n\n }\n });\n modalInstance.result.then(function (result) {\n\n });\n }\n\n scope.$watch('parentGoal', function (goal) {\n if (scope.parentGoal) {\n scope.hasParentGoal = true;\n }\n });\n\n scope.subscribe(\"StrategyGoalNameUpdated\", function (goal) {\n if (goal.id == scope.model.goal.id) {\n scope.projectName = goal.name;\n }\n });\n\n scope.subscribe(\"StrategyGoalColorUpdated\", function (goal) {\n if (goal.id == scope.model.goal.id) {\n scope.color = goal.color;\n }\n });\n\n\n scope.loadSubGoals = function () {\n scope.model.showSubGoals = !scope.model.showSubGoals;\n }\n\n\n\n\n scope.goToHub = function () {\n //$state.go('goalDetails', { id: scope.model.project.id }, { reload: false });\n if (scope.parentGoal) {\n $state.go('goalDetails', { id: scope.model.goal.breakthroughGoalId, assetid: scope.model.goal.assetId }, { reload: false });\n } else {\n $state.go('goalDetails', { id: scope.model.goal.id }, { reload: false });\n }\n \n }\n }\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"strategyStartDateCell\", ['strategyGoalService',\n function (strategyGoalService) {\n return {\n templateUrl: 'strategyStartDateCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'editable': '=',\n 'projectAttributeChangeHandler': '&',\n },\n link: function (scope, elem, attrs) {\n scope.color = \"#0099DE\";\n scope.dateMissed = false;\n scope.date = null;\n scope.value = null;\n \n\n scope.updateStartDate = function($event) {\n const date = $event.originalEvent.detail\n scope.value = date\n strategyGoalService().updateStartDate(scope.model.goal.id, scope.value)\n } \n\n scope.$watch(\"model\", function (model) {\n if (scope.model && scope.model.goal) {\n if (scope.model.goal.startDate) {\n setValue(scope.model.goal.startDate);\n } \n model.getSortValue = function() {\n if (scope.date) {\n return scope.date;\n }\n return null;\n }\n }\n });\n\n var setValue = function(startDate) {\n if(startDate){\n scope.value = moment(startDate).toDate();\n }\n }\n \n\n scope.subscribe(\"StrategyGoalStartDateUpdated\", function (goal) {\n if (goal.id == scope.model.goal.id) {\n setValue(goal.startDate);\n }\n });\n \n }\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"strategySubGoalCell\", ['$state',\n function ($state,) {\n return {\n templateUrl: 'strategySubGoalCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'editable': '=',\n 'projectAttributeChangeHandler': '&',\n },\n link: function (scope, elem, attrs) {\n scope.projectId = null;\n\n scope.$watch(\"model\", function (model) {\n if (scope.model && scope.model.project) {\n if (scope.model.project.id) {\n scope.projectId = scope.model.project.id;\n model.getSortValue = function () {\n return scope.projectId;\n }\n }\n }\n \n });\n\n\n scope.toggleShowSubGoals = function () {\n \n }\n }\n }\n }]);","angular\n .module('DigiLean')\n .directive(\"teamGoalsTable\", ['$translate', 'strategyService',\n function ($translate, strategyService) {\n return {\n templateUrl: 'teamGoalsTable.html',\n restrict: 'E',\n scope: {\n 'goalId': '=',\n 'assetId': '=',\n },\n link: function (scope, elem, attrs) {\n scope.editable = false;\n\n scope.columns = [];\n scope.goals = [];\n \n\n function createTable() {\n scope.columns = [\n {\n name: $translate.instant(\"STRATEGY_PREVIOUS_LEVEL\"),\n sortOrder: 0,\n attributeType: \"parentgoaltitle\"\n },\n {\n name: $translate.instant(\"COMMON_GOAL\"),\n sortOrder: 1,\n attributeType: \"goaltitle\"\n },\n {\n name: $translate.instant(\"COMMON_DUE_DATE\"),\n sortOrder: 2,\n attributeType: \"duedate\"\n },\n {\n name: $translate.instant(\"STRATEGY_KPI\"),\n sortOrder: 3,\n attributeType: \"kpis\"\n }];\n \n }\n\n createTable();\n\n scope.$watch(\"assetId\", function () { \n loadGoals(); \n });\n\n\n scope.$watch(\"goalId\", function () {\n loadGoals(); \n });\n\n function loadGoals() {\n if (scope.goalId == null) return;\n if (scope.assetId == null) return;\n strategyService().getTeamGoals(scope.goalId, scope.assetId).then(function(goals){\n \n var currentParentId = -1;\n for (let index = 0; index < goals.length; index++) {\n const goal = goals[index];\n if (goal.parentId != currentParentId) {\n goal.first = true;\n currentParentId = goal.parentId;\n //TODO not sure why the structure from the backedend returns parent.childgoals having different assetId\n var currentrowspan = 1;\n if(goal.parent && goal.parent.childGoals){\n \n for (let s = 0; s < goal.parent.childGoals.length; s++) {\n if(goal.parent.childGoals[s].assetId == scope.assetId){\n currentrowspan = currentrowspan + 1;\n }\n }\n }\n goal.rowspan = currentrowspan;\n }\n }\n scope.goals = goals;\n\n });\n }\n \n }\n }\n }]);","\n\nangular\n .module('DigiLean')\n .directive('taskInfo', ['$filter', '$translate', 'boardTaskService',\n function ($filter, $translate, boardTaskService) {\n return {\n templateUrl: 'taskInfo.html',\n restrict: 'E',\n scope: {\n \"id\" : \"<\"\n },\n link: function (scope, elem, attrs) {\n scope.title = \"\";\n scope.$watch('id', function (id) {\n // var value = model.projectAttribute.value;\n if (id) {\n boardTaskService().getInfo(id).then(function(info){\n scope.title = info.title;\n })\n }\n });\n\n\n }\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"threeCTask\", ['threeCService',\n function (threeCService) {\n return {\n templateUrl: '3Ctask.html',\n restrict: 'E',\n scope: {\n \"task\": \"<\",\n \"status\": \"<\",\n },\n link: function (scope, elem, attrs) { \n scope.threeCStatusChangedHandler = function (status) {\n var itemStatus = {\n boardTaskId: scope.task.id,\n status: status.toString()\n }\n threeCService().updateStatus(scope.task.id, itemStatus).then(function (data) {\n });\n }\n\n scope.subscribe(\"ThreeCItemStatusUpdated\", function (status) {\n if (scope.task.id == status.boardTaskId && scope.task.status != status.status) {\n setTimeout(function() {\n scope.$apply(function() {\n scope.task.status = status.status;\n });\n }, 1000);\n }\n });\n }\n }\n }]);","angular\n .module('DigiLean')\n .directive(\"taskList\", ['$filter', '$translate', \n function ($filter, $translate) {\n return {\n templateUrl: 'taskList.html',\n restrict: 'E',\n scope: {\n \n },\n link: function (scope, elem, attrs) {\n scope.filter = [];\n scope.filterChanged = function(filter) {\n scope.filter = filter\n }\n }\n }\n }]);\n","\nangular\n .module('DigiLean')\n .directive(\"teamKanban\", ['$uibModal', '$filter', '$translate', 'statusColumnProvider', 'responsibleColumnProvider', 'deviationService', 'boardTaskService', 'suggestionService',\n function ($uibModal, $filter, $translate, statusColumnProvider, responsibleColumnProvider, deviationService, boardTaskService, suggestionService) {\n return {\n templateUrl: 'teamKanban.html',\n restrict: 'E',\n scope: {\n 'users': ' 0;\n }\n\n function updateSuggestion(task, column) {\n if (column.property == \"responsible\") {\n var responsible = column.user;\n\n if (responsible) {\n var improvementResponsible =\n {\n suggestionId: task.taskTypeId,\n newResponsible: responsible.fullName,\n newResponsibleUserId: responsible.userId\n\n }\n suggestionService().updateResponsible(improvementResponsible);\n }\n\n }\n }\n\n function updateDeviation(task, column) {\n if (column.property == \"responsible\") {\n var responsible = column.user;\n\n if (responsible) {\n var deviationResponsible =\n {\n deviationId: task.taskTypeId,\n newResponsible: responsible.fullName,\n newResponsibleUserId: responsible.userId\n\n }\n deviationService().updateResponsible(deviationResponsible);\n }\n\n }\n }\n\n scope.columnOptions = {\n connectWith: \".task-list\",\n receive: function (e, ui) {\n var target = ui.item.sortable.droptarget[0];\n var columnIndex = $(target).attr(\"data-column-index\");\n var task = ui.item.sortable.model;\n // Find column\n var column = scope.columns[columnIndex];\n\n task.animate(\"bounce\");\n var changeSettings = {\n dropColumn: column,\n taskId: task.id,\n task: task,\n property: column.property,\n propertyValue: column.propertyValue\n };\n\n if (task.entityType == \"Improvement\") {\n updateSuggestion(task, column);\n\n } else if (task.entityType == \"Deviation\") {\n updateDeviation(task, column);\n } else {\n column.saveChanges(changeSettings)\n }\n }\n };\n\n var initTask = function (task) {\n task.model = {\n task: task,\n boardTaskId: task.id\n }\n task.animate = function (animation, timeOut) {\n if (!timeOut) {\n timeOut = 1000;\n }\n task.animateClass = \"animated \" + animation;\n setTimeout(function () {\n task.animateClass = \"\";\n }, timeOut);\n }\n task.animate(\"slideInDown\", 3000);\n };\n\n var loadModel = function (model, columnGrouping, options) {\n scope.columns = [];\n model.tasks.forEach(function (task) {\n initTask(task);\n });\n if (scope.selectedGrouping.property == \"responsible\") {\n scope.columns = columnGrouping.columnProvider().getColumns(model.tasks, scope.users, options);\n } else {\n scope.columns = columnGrouping.columnProvider().getColumns(model.tasks, scope.users, columnGrouping.groupModel); \n }\n \n }\n\n scope.createTask = function (column) {\n var status = \"blank\";\n var options = {\n canChangeBoard: true,\n showDueDate: true,\n }\n // Map column \n if (column.property == \"status\") {\n status = column.propertyValue;\n }\n if (column.property == \"responsible\") {\n options.selectedUser = column.user;\n }\n var task = {\n id: 0,\n boardId: 0,\n title: \"\",\n text: \"\",\n boardDate: moment().startOf('day'),\n status: status,\n tags: \"\",\n user: column.user,\n sortOrder: scope.columns.length\n }\n\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'newBoardTask.html',\n controller: 'newBoardTaskController',\n resolve: {\n task: function () {\n return task;\n },\n options: function () {\n return options;\n }\n }\n });\n }\n }\n\n }\n }]);","angular\n .module('DigiLean')\n .directive(\"teamKanbanCard\", ['$filter','$uibModal', '$state','taskDrawingService','boardTaskService','deviationService','suggestionService',\n function ($filter,$uibModal, $state, taskDrawingService, boardTaskService, deviationService, suggestionService) {\n return {\n templateUrl: 'teamKanbanCard.html',\n restrict: 'E',\n scope: {\n 'task': '<',\n 'users': ' 0) {\n scope.selectedPostIt = predefinedPostIt[0];\n setStyle(scope.selectedPostIt.fillColor, scope.selectedPostIt.background)\n } else {\n // Try to match background color\n var backgroundPostIt = $filter('filter')(scope.postIts, { background: taskColor });\n if (backgroundPostIt.length > 0) {\n scope.selectedPostIt = backgroundPostIt[0];\n setStyle(scope.selectedPostIt.fillColor, scope.selectedPostIt.background)\n } else {\n setStyle(scope.fillColor, scope.borderColor);\n }\n }\n }\n\n var setStyle = function (fillColor, borderColor) {\n \n if (fillColor == \"#ffffff\") {\n borderColor = scope.borderColor;\n }\n \n scope.task.displayColor = borderColor;\n }\n\n scope.openDeviation = function (task) {\n var tab = \"Info\";\n if(task.entityType == \"BoardTask\"){\n tab = \"Action\";\n }\n deviationService().get(task.taskTypeId).then(function (deviation) {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n templateUrl: 'fullDeviation.html',\n controller: 'fullDeviationController',\n windowClass: 'full-screen',\n resolve: {\n deviation: function () {\n return deviation;\n },\n activeTab: function () {\n return tab;\n }\n }\n });\n });\n }\n\n scope.openImprovementSuggestion = function (task) {\n var tab = \"Info\";\n if(task.entityType == \"BoardTask\"){\n tab = \"Action\";\n }\n\n suggestionService().get(task.taskTypeId).then(function (suggestion) {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n templateUrl: 'fullImprovementInfoForm.html',\n controller: 'fullImprovementModalController',\n windowClass: 'fullSuggestion-modal-window',\n resolve: {\n suggestion: function () {\n return suggestion;\n },\n activeTab: function () {\n return tab;\n }\n }\n });\n });\n }\n\n scope.openTask = function () {\n if(scope.task){\n if(scope.task.taskType == 'Improvement'){\n scope.openImprovementSuggestion(scope.task);\n }else if(scope.task.taskType == 'Deviation'){\n scope.openDeviation(scope.task);\n } else if(scope.task.taskType == 'A3'){\n $state.go('a3wizard', { id: scope.task.taskTypeId }, { reload: false });\n }\n else if(scope.task.taskType == 'SubTask'){\n boardTaskService().get(scope.task.taskTypeId).then(function (task) {\n $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'boardTask.html',\n controller: 'boardTaskController',\n resolve: {\n task: function () {\n return task;\n },\n activeTab: function () {\n return \"SubTasks\";\n },\n options: function () {\n var options = {\n archiveAvailable: true,\n users: scope.users\n }\n return options;\n }\n }\n });\n });\n } else {\n boardTaskService().get(scope.task.id).then(function (task) {\n $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'boardTask.html',\n controller: 'boardTaskController',\n resolve: {\n task: function () {\n return task;\n },\n activeTab: function () {\n return \"Info\";\n },\n options: function () {\n var options = {\n archiveAvailable: true,\n users: scope.users\n }\n return options;\n }\n }\n });\n });\n }\n }\n \n }\n }\n }\n }]);","angular\n .module('DigiLean')\n .directive(\"teammember\", ['$filter', '$uibModal', 'boardTaskService', 'navigationService', 'deviationService', 'suggestionService',\n function ($filter, $uibModal, boardTaskService, navigationService, deviationService, suggestionService) {\n return {\n templateUrl: 'teammember.html',\n restrict: 'E',\n scope: {\n 'user': '=',\n },\n link: function (scope, elem, attrs) {\n scope.taskCount = 0;\n scope.taskOverdueCount = 0;\n scope.taskTodayCount = 0;\n scope.taskFutureCount = 0;\n scope.improvementCount = 0;\n scope.improvementOverdueCount = 0;\n scope.improvementTodayCount = 0;\n scope.improvementFutureCount = 0;\n scope.deviationCount = 0;\n scope.deviationOverdueCount = 0;\n scope.deviationTodayCount = 0;\n scope.deviationFutureCount = 0;\n scope.a3Count = 0;\n scope.a3OverdueCount = 0;\n scope.a3TodayCount = 0;\n scope.a3FutureCount = 0;\n\n scope.hasBoard = navigationService().hasModule(\"BOARD\");\n scope.hasImprovement = navigationService().hasModule(\"IMPROVEMENT\");\n scope.hasDeviation = navigationService().hasModule(\"DEVIATION\");\n scope.hasA3 = navigationService().hasModule(\"A3\");\n\n scope.$watch('user', function (user) {\n // apply\n if (user) {\n getUserTasks(user.userId);\n }\n });\n\n scope.subscribe(\"UserAuthenticatedAndReady\", function(profile)\n {\n scope.hasBoard = navigationService().hasModule(\"BOARD\");\n scope.hasImprovement = navigationService().hasModule(\"IMPROVEMENT\");\n scope.hasDeviation = navigationService().hasModule(\"DEVIATION\");\n scope.hasA3 = navigationService().hasModule(\"A3\");\n //getUserTasks(profile.user.id); \n });\n\n var colorClasses = [\"label-primary\", \"label-warning-light\"];\n function getUserTasks(userId) {\n boardTaskService().getUserTasks(userId).then(function (data) {\n data.overdue.forEach(function (element, index, array) {\n if(element.taskType === 'Board'){\n scope.taskOverdueCount = scope.taskOverdueCount + 1;\n } else if (element.taskType === 'Improvement'){\n scope.improvementOverdueCount = scope.improvementOverdueCount + 1;\n } else if (element.taskType === 'Deviation'){\n scope.deviationOverdueCount = scope.deviationOverdueCount + 1;\n } else if (element.taskType === 'A3'){\n scope.a3OverdueCount = scope.a3OverdueCount + 1;\n }\n });\n data.today.forEach(function (element, index, array) {\n if(element.taskType === 'Board'){\n scope.taskTodayCount = scope.taskTodayCount + 1;\n } else if (element.taskType === 'Improvement'){\n scope.improvementTodayCount = scope.improvementTodayCount + 1;\n } else if (element.taskType === 'Deviation'){\n scope.deviationTodayCount = scope.deviationTodayCount + 1;\n } else if (element.taskType === 'A3'){\n scope.a3TodayCount = scope.a3TodayCount + 1;\n }\n });\n data.future.forEach(function (element, index, array) {\n if(element.taskType === 'Board'){\n scope.taskFutureCount = scope.taskFutureCount + 1;\n } else if (element.taskType === 'Improvement'){\n scope.improvementFutureCount = scope.improvementFutureCount + 1;\n } else if (element.taskType === 'Deviation'){\n scope.deviationFutureCount = scope.deviationFutureCount + 1;\n } else if (element.taskType === 'A3'){\n scope.a3FutureCount = scope.a3FutureCount + 1;\n }\n\n });\n scope.taskCount = scope.taskOverdueCount + scope.taskTodayCount + scope.taskFutureCount;\n scope.improvementCount = scope.improvementOverdueCount + scope.improvementTodayCount + scope.improvementFutureCount;\n scope.deviationCount = scope.deviationOverdueCount + scope.deviationTodayCount + scope.deviationFutureCount;\n scope.a3Count = scope.a3OverdueCount + scope.a3TodayCount + scope.a3FutureCount;\n \n\n scope.workList = data;\n });\n }\n },\n\n \n }\n }]);\n\n\n","angular.module(\"DigiLean\").service('activityCenter', ['activityService', function (activityService) {\n return { Initialize: Initialize };\n function Initialize(scope) {\n console.log('activtycenter init');\n // We should only subscribe to Send events so we only log events once.\n scope.subscribe(\"SendBoardCreated\", function (board) {\n var activity = {\n action: \"BoardCreation\",\n activity: \"Board\",\n activityId: board.id,\n title: \"created board\",\n description: board.name,\n payLoad: JSON.stringify(board)\n }\n saveActivity(activity, true);\n });\n scope.subscribe(\"SendBoardDeleted\", function (id) {\n var activity = {\n action: \"BoardDeleted\",\n activity: \"Board\",\n activityId: id,\n title: \"deleted board\",\n description: \"\",\n payLoad: JSON.stringify(id)\n }\n saveActivity(activity, true);\n });\n scope.subscribe(\"SendSuggestionAttachmentAdded\", function (attachment) {\n var activity = {\n action: \"NewAttachment\",\n activity: \"ImprovementSuggestion\",\n activityId: attachment.improvementSuggestionId,\n title: \"added attachment to suggestion\",\n parentId: attachment.improvementSuggestionId,\n payLoad: JSON.stringify(attachment)\n }\n saveActivity(activity, true);\n });\n scope.subscribe(\"SendSuggestionAttachmentDeleted\", function (attachment) {\n var activity = {\n action: \"DeleteAttachment\",\n activity: \"ImprovementSuggestion\",\n activityId: attachment.improvementSuggestionId,\n title: \"deleted attachment on suggestion\",\n parentId: attachment.improvementSuggestionId,\n payLoad: JSON.stringify(attachment)\n }\n saveActivity(activity, true);\n });\n \n scope.subscribe(\"SendImprovementChangedCategory\", function (improvement) {\n var activity = {\n action: \"UpdatedCategorySuggestion\",\n activity: \"ImprovementSuggestion\",\n activityId: improvement.suggestionId,\n \n title: \"updated improvement category to: \" + improvement.categoryName,\n payLoad: JSON.stringify(improvement)\n }\n saveActivity(activity, true);\n }); \n\n scope.subscribe(\"SendDeviationDueDateChanged\", function (duedate) {\n var activity = {\n action: \"UpdatedDueDateDeviation\",\n activity: \"Deviation\",\n activityId: duedate.deviationId,\n title: \"updated deviation due date from: \" + duedate.oldDueDate + \" to \" + duedate.newDueDate,\n payLoad: JSON.stringify(duedate)\n }\n saveActivity(activity, true);\n });\n\n \n scope.subscribe(\"SendDeviationProblemReasonChanged\", function (problemreasons) {\n var activity = {\n action: \"UpdatedProblemReasonDeviation\",\n activity: \"Deviation\",\n activityId: problemreasons.deviationId,\n title: \"updated deviation problem reasons\",\n payLoad: JSON.stringify(problemreasons)\n }\n saveActivity(activity, true);\n });\n\n scope.subscribe(\"SendDeviationSeverityChanged\", function (severity) {\n var activity = {\n action: \"UpdatedSeverityDeviation\",\n activity: \"Deviation\",\n activityId: severity.deviationId,\n title: \"updated deviation severity from: \" + severity.oldSeverity + \" to \" + severity.newSeverity,\n payLoad: JSON.stringify(severity)\n }\n saveActivity(activity, true);\n });\n scope.subscribe(\"SendDeviationChangedCategory\", function (category) {\n var activity = {\n action: \"DeviationChangedCategory\",\n activity: \"Deviation\",\n activityId: category.deviationId,\n title: \"updated deviation category to: \" + category.categoryText,\n payLoad: JSON.stringify(category)\n }\n saveActivity(activity, true);\n });\n\n scope.subscribe(\"SendImprovementUpdated\", function (improvement) {\n var activity = {\n action: \"UpdatedSuggestion\",\n activity: \"ImprovementSuggestion\",\n activityId: improvement.id,\n activityOwner: improvement.suggestedBy,\n activityOwnerUserId: improvement.suggestedByUserId,\n title: \"updated improvement suggestion \",\n description: improvement.title,\n payLoad: JSON.stringify(improvement)\n }\n saveActivity(activity, true);\n });\n\n scope.subscribe(\"SendTaskAssigned\", function (taskAssigned) {\n var activity = {};\n var title = \"cleared task responsible\";\n if (taskAssigned.userId) {\n title = \"assigned task\";\n };\n activity = {\n action: \"TaskAssigned\",\n activity: \"BoardTask\",\n activityId: taskAssigned.taskId,\n activityOwner: taskAssigned.userDisplayName,\n activityOwnerId: taskAssigned.userId,\n title: title,\n description: \"\",\n payLoad: JSON.stringify(taskAssigned)\n }\n \n saveActivity(activity, true);\n });\n \n scope.subscribe(\"SendTaskDeviationCreated\", function (task) {\n var activity = {\n action: \"TaskDeviationCreated\",\n activity: \"BoardTask\",\n activityId: task.taskId,\n activityOwner: \"\",\n title: task.title,\n description: \"\",\n payLoad: JSON.stringify(task)\n }\n saveActivity(activity, true);\n });\n scope.subscribe(\"SendTaskMovedToActionList\", function (task) {\n var activity = {\n action: \"TaskMovedToActionList\",\n activity: \"BoardTask\",\n activityId: task.id,\n activityOwner: \"\",\n title: \"moved task to actionlist\",\n description: \"\",\n payLoad: JSON.stringify(task)\n }\n saveActivity(activity, true);\n });\n scope.subscribe(\"SendActionItemMovedToTask\", function (task) {\n var activity = {\n action: \"TaskMovedFromActionListToBoard\",\n activity: \"BoardTask\",\n activityId: task.id,\n activityOwner: \"\",\n title: \"moved task from actionlist to board\",\n description: \"\",\n payLoad: JSON.stringify(task)\n }\n saveActivity(activity, true);\n });\n scope.subscribe(\"SendCreateActionListItem\", function (task) {\n var activity = {\n action: \"TaskCreatedToActionList\",\n activity: \"BoardTask\",\n activityId: task.id,\n activityOwner: \"\",\n title: \"created new item to actionlist\",\n description: task.title,\n payLoad: JSON.stringify(task)\n }\n saveActivity(activity, true);\n });\n \n scope.subscribe(\"SendTaskRepeated\", function (repeatResult) {\n // Save original\n var task = repeatResult.original;\n var activity = {\n action: \"TaskRepeated\",\n activity: \"BoardTask\",\n activityId: task.id,\n activityOwner: \"\",\n title: \"repeated task\",\n description: task.title,\n payLoad: JSON.stringify(task)\n }\n saveActivity(activity, true);\n });\n \n scope.subscribe(\"SendTaskAttachmentAdded\", function (attachment) {\n var activity = {\n action: \"TaskAttachmentAdded\",\n activity: \"BoardTask\",\n activityId: attachment.boardTaskId,\n title: \"added attachment to task\",\n parentId: attachment.boardTaskId,\n payLoad: JSON.stringify(attachment)\n }\n saveActivity(activity, true);\n });\n scope.subscribe(\"SendTaskAttachmentDeleted\", function (attachment) {\n var activity = {\n action: \"TaskAttachmentDeleted\",\n activity: \"BoardTask\",\n activityId: attachment.boardTaskId,\n title: \"deleted attachment on task\",\n parentId: attachment.boardTaskId,\n payLoad: JSON.stringify(attachment)\n }\n saveActivity(activity, true);\n });\n scope.subscribe(\"SendA3sDeleted\", function (a3Ids) {\n angular.forEach(a3Ids, function(id) {\n var activity = {\n action: \"A3Deleted\",\n activity: \"A3\",\n activityId: id,\n activityOwner: \"\",\n title: \"deleted A3\",\n payLoad: JSON.stringify(id)\n }\n saveActivity(activity, true);\n });\n });\n scope.subscribe(\"SendA3Created\", function (a3) {\n var activity = {\n action: \"A3Created\",\n activity: \"A3\",\n activityId: a3.id,\n activityOwner: \"\",\n title: \"created A3\",\n description: a3.title,\n payLoad: JSON.stringify(a3)\n }\n saveActivity(activity, true);\n });\n \n scope.subscribe(\"SendA3VersionCreated\", function (a3Version) {\n var activity = {\n action: \"A3VersionCreated\",\n activity: \"A3Version\",\n activityId: a3Version.id,\n activityOwner: \"\",\n parentId: a3Version.a3Id,\n title: \"created new A3 version\",\n description: \"\",\n payLoad: JSON.stringify(a3Version)\n }\n saveActivity(activity, true);\n });\n\n function saveActivity(activity, publish) {\n \n activityService().add(activity).then(function (activity) {\n if(publish){\n scope.publish(\"SendActivityOccured\", activity);\n }\n });\n }\n }\n}]).run(['$rootScope', 'activityCenter', function ($rootScope, activityCenter) {\n activityCenter.Initialize($rootScope);\n}]);","angular\n.module('DigiLean')\n.directive('contenteditable', function() {\n return {\n require: 'ngModel',\n restrict: 'A',\n link: function(scope, elm, attr, ngModel) {\n\n function updateViewValue() {\n ngModel.$setViewValue(this.innerHTML);\n }\n //Binding it to keyup, lly bind it to any other events of interest \n //like change etc..\n elm.on('keyup', updateViewValue);\n\n scope.$on('$destroy', function() {\n elm.off('keyup', updateViewValue);\n });\n\n ngModel.$render = function(){\n elm.html(ngModel.$viewValue);\n }\n\n }\n }\n});","/*Deprecated???*/\nangular.module(\"DigiLean\").service('dataValueCenter', function () {\n return { Initialize: Initialize };\n function Initialize(scope) {\n console.log('dataValueCenter init');\n // We should only subscribe to Send events so we only log events once.\n scope.subscribe(\"TaskStatusUpdated\", function (taskStatus) {\n\n var source = {\n dataSource: \"CompletedTasks\",\n id: taskStatus.taskId,\n value: taskStatus.status\n }\n publishValue(source);\n });\n\n function publishValue(activity) {\n scope.publish(\"SendDataSourceUpdated\", activity);\n }\n }\n}).run(['$rootScope', 'dataValueCenter', function ($rootScope, dataValueCenter) {\n dataValueCenter.Initialize($rootScope);\n}]);","// Create an AngularJS service called debounce\nangular.module(\"DigiLean\").factory('debounce', ['$timeout', '$q', function ($timeout, $q) {\n // The service is actually this function, which we call with the func\n // that should be debounced and how long to wait in between calls\n return function debounce(func, wait, immediate) {\n var timeout;\n // Create a deferred object that will be resolved when we need to\n // actually call the func\n var deferred = $q.defer();\n return function () {\n var context = this, args = arguments;\n var later = function () {\n timeout = null;\n if (!immediate) {\n deferred.resolve(func.apply(context, args));\n deferred = $q.defer();\n }\n };\n var callNow = immediate && !timeout;\n if (timeout) {\n $timeout.cancel(timeout);\n }\n timeout = $timeout(later, wait);\n if (callNow) {\n deferred.resolve(func.apply(context, args));\n deferred = $q.defer();\n }\n return deferred.promise;\n };\n };\n}]);","var DigiLean = DigiLean || {};\nDigiLean.domain = {\n domains: ['https://digilean.tools/', 'https://boardhub.digilean.tools/', 'https://improvementhub.digilean.tools/',\n 'https://systemhub.digilean.tools/', 'https://socialhub.digilean.tools/'],\n\n getDomain: function () {\n //localStorage.removeItem(\"activeDomains\");\n var activeDomains = localStorage.getItem(\"activeDomains\");\n if (!activeDomains) {\n activeDomains = [];\n } else {\n activeDomains = JSON.parse(activeDomains);\n }\n // loop through domains and check if already used.\n\n for (var i = 0; i < DigiLean.domain.domains.length; i++) {\n // check activedomain\n var domain = DigiLean.domain.domains[i];\n var index = activeDomains.indexOf(domain);\n if (index === -1) {\n DigiLean.domain.addActiveDomain(domain);\n return domain;\n }\n }\n DigiLean.domain.addActiveDomain(DigiLean.domain.domains[0]);\n return domain;\n },\n\n addActiveDomain: function (domain) {\n // localStorage.removeItem(\"activeDomains\");\n var activeDomains = localStorage.getItem(\"activeDomains\");\n if (!activeDomains) {\n activeDomains = [];\n } else {\n activeDomains = JSON.parse(activeDomains);\n }\n activeDomains.push(domain);\n\n localStorage.setItem(\"activeDomains\", JSON.stringify(activeDomains));\n },\n\n removeDomain(domain) {\n var activeDomains = localStorage.getItem(\"activeDomains\");\n if (!activeDomains) {\n activeDomains = [];\n } else {\n activeDomains = JSON.parse(activeDomains);\n }\n var index = activeDomains.indexOf(domain);\n if (index > -1) {\n activeDomains.splice(index, 1);\n }\n localStorage.setItem(\"activeDomains\", JSON.stringify(activeDomains));\n }\n}\n","FroalaEditor.DefineIconTemplate(\"font_awesome_regular\", '')\nFroalaEditor.DefineIconTemplate(\"font_awesome_solid\", '')\n\nFroalaEditor.DefineIcon('insertDiagram', {NAME: 'project-diagram', template: 'font_awesome_regular'})\n\nFroalaEditor.DefineIcon('editDiagram',{NAME: 'project-diagram', template: 'font_awesome_regular'})\n","\nangular\n.module('DigiLean').directive('froalaView', ['$sce', function($sce) {\n return {\n restrict: 'ACM',\n scope: false,\n link: function(scope, element, attrs) {\n element.addClass('fr-view')\n scope.$watch(attrs.froalaView, function(nv) {\n if (nv || nv === '') {\n var explicitlyTrustedValue = $sce.trustAsHtml(nv)\n element.html(explicitlyTrustedValue.toString())\n }\n })\n }\n }\n}])","angular.module('DigiLean').directive('onErrorSrc', function() {\n return {\n link: function(scope, element, attrs) {\n element.bind('error', function() {\n if (attrs.src != attrs.onErrorSrc) {\n attrs.$set('src', attrs.onErrorSrc);\n }\n });\n }\n }\n});","angular.module(\"DigiLean\").filter('digiColors', function () {\n var colors = [\"label-success\", \"label-info\", \"label-primary\", \"label-default-digilean\", \"label-funeral-digilean\"];\n return function (index) {\n if (index >= colors.length) {\n return colors[0];\n }\n return colors[index];\n };\n});","angular.module(\"DigiLean\").filter('deviationSeverityTranslation', ['$translate', function ($translate) {\n return function(severity) {\n switch (severity) { \n case 1:\n return $translate.instant('COMMON_LOW');\n case 2:\n return $translate.instant('COMMON_MEDIUM');\n case 3:\n return $translate.instant('COMMON_HIGH');\n default:\n return $translate.instant('COMMON_NOT_SPECIFIED');\n \n }\n };\n}]);","angular.module(\"DigiLean\").filter('improvementPriorityTranslation', ['$translate', function ($translate) {\n return function(priority) {\n switch (priority) {\n case 1:\n return $translate.instant('IMPROVEMENT_LOW_EFFORT_HIGH_EFFECT');\n case 2:\n return $translate.instant('IMPROVEMENT_HIGH_EFFORT_HIGH_EFFECT');\n case 3:\n return $translate.instant('IMPROVEMENT_LOW_EFFORT_LOW_EFFECT');\n case 4:\n return $translate.instant('IMPROVEMENT_HIGH_EFFORT_LOW_EFFECT');\n default:\n return $translate.instant('IMPROVEMENT_NOT_PRIORITIZED');\n \n }\n };\n}]);","angular.module(\"DigiLean\").filter('unsafe', ['$sce', function ($sce) \n{ \n return $sce.trustAsHtml;\n}])","var DigiLean = angular.module('DigiLean');\nDigiLean.hms = {\n\n getDeviationSeverity: function (greencrossSeverity) {\n return greencrossSeverity - 1;\n }\n}\n\n","angular\n .module('DigiLean')\n .component(\"htmlTextArea\", {\n templateUrl: 'htmlTextArea.html',\n bindings: {\n text: '<',\n contentChangedHandler: '&'\n },\n controller: ['$element', '$translate', 'taskDrawingService',\n function ($element, $translate, taskDrawingService) {\n var $ctrl = this;\n $ctrl.initialized = false;\n\n $ctrl.froalaOptions = {\n key: \"CTD5xD3E1G2A1A8B2wc2DBKSPJ1WKTUCQOd1OURPE1KDc1C-7J2A4D4B3C6E2C1F4F1F1==\",\n attribution: false,\n toolbarButtons: [\"bold\", \"italic\", \"underline\", '|' ,'formatUL','formatOL', '|', \"insertLink\"],\n pastePlain: false,\n imagePaste: false,\n toolbarSticky: false, // if needed, make this a setting that can be consumed by bindings.\n toolbarInline: false,\n placeholderText: $translate.instant('COMMON_DESCRIPTION'),\n heightMin: 160,\n zIndex:2501,\n linkAlwaysBlank: true,\n quickInsertTags: []\n };\n\n $ctrl.$onInit = function() {\n $ctrl.editContent = $ctrl.text;\n setTimeout(function () {\n $ctrl.initialized = true; //prevent toolbar to be drawn top of the screen\n }, 100);\n };\n\n $ctrl.contentChanged = function(val) {\n $ctrl.contentChangedHandler({ content: val });\n // if (!scope.froalaInit) {\n // scope.froalaInit = true;\n // return;\n // }\n // scope.model.content = val;\n // scope.commitChangesDebounced(scope.model.id, val);\n };\n\n $ctrl.$onChanges = function (changes) {\n\n // alert(changes);\n // if (changes.text) {\n // if (!changes.text.currentValue && froalaEditor && froalaEditor.html)\n // froalaEditor.html.set(\"\");\n // }\n };\n\n $ctrl.$onDestroy = function() {\n \n };\n }]\n });","angular\n .module('DigiLean')\n .controller(\"assetSelectorModalController\", ['$scope', '$filter', '$uibModalInstance', 'filters',\n function ($scope, $filter, $uibModalInstance, filters) {\n\n $scope.filters = filters;\n \n $scope.updateFilter = function (updatedSourceColumn, filters) {\n var hasFilter = $filter('filter')($scope.filters, { sourceColumn: updatedSourceColumn });\n // Remove existing filter connected to sourceColumn\n if (hasFilter && hasFilter.length > 0) {\n // Remove existing filter\n angular.forEach(hasFilter, function (filter, key) {\n var index = $scope.filters.indexOf(hasFilter[key]);\n $scope.filters.splice(index, 1);\n });\n }\n angular.forEach(filters, function (filter) {\n if (filter) {\n if($scope.filters === undefined || !$scope.filters){\n $scope.filters = [];\n }\n $scope.filters.push(filter);\n }\n });\n };\n\n $scope.ok = function () {\n $uibModalInstance.close($scope.filters);\n };\n\n $scope.close = function () {\n $uibModalInstance.dismiss('cancel');\n };\n }]);\n","angular\n .module('DigiLean')\n .directive(\"fullscreen\", ['$interval',\n function ($interval) {\n return {\n templateUrl: 'fullscreen.html',\n restrict: 'E',\n scope: {\n 'mode': '@'\n },\n link: function (scope, element, attrs) {\n scope.showFullscreenIcon = true;\n scope.toggleFullScreen = function () {\n scope.showFullscreenIcon = ! scope.showFullscreenIcon;\n var isInFullScreen = (document.fullScreenElement && document.fullScreenElement !== null) || // alternative standard method \n (document.mozFullScreen || document.webkitIsFullScreen);\n\n if (typeof isInFullScreen === 'undefined') {\n isInFullScreen = document.msFullscreenElement != null;\n }\n\n //var docElm = document.getElementById(\"wrapper\");\n var docElm = document.body;\n\n if (!isInFullScreen) {\n\n if (docElm.requestFullscreen) {\n docElm.requestFullscreen();\n } else if (docElm.mozRequestFullScreen) {\n docElm.mozRequestFullScreen();\n } else if (docElm.webkitRequestFullScreen) {\n docElm.webkitRequestFullScreen();\n }\n else if (docElm.msRequestFullscreen) {\n docElm.msRequestFullscreen();\n }\n scope.publish(\"EnterFullScreenMode\");\n } else {\n if (document.exitFullscreen) {\n document.exitFullscreen();\n } else if (document.msExitFullscreen) {\n document.msExitFullscreen();\n } else if (document.mozCancelFullScreen) {\n document.mozCancelFullScreen();\n } else if (document.webkitExitFullscreen) {\n document.webkitExitFullscreen();\n }\n scope.publish(\"ExitFullScreenMode\");\n }\n }\n }\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"iboxExpandButton\", ['$filter',\n function ($filter) {\n return {\n templateUrl: 'iboxExpandButton.html',\n restrict: 'E',\n scope: {\n 'isClosed': '@'\n },\n link: function (scope, element, attrs) { \n if(scope.isClosed && scope.isClosed === \"true\"){ \n var ibox = $(element).closest('div.ibox');\n var button = $(element).find('i');\n var content = ibox.find('div.ibox-content').first();\n content.slideToggle(0);\n button.toggleClass('fa-chevron-up').toggleClass('fa-chevron-down');\n ibox.toggleClass('').toggleClass('border-bottom');\n /*setTimeout(function () {\n ibox.resize();\n ibox.find('[id^=map-]').resize();\n }, 50); */ \n }\n\n scope.$watch(\"isClosed\", function () {\n if (scope.isClosed && scope.isClosed === \"false\") {\n var ibox = $(element).closest('div.ibox');\n var button = $(element).find('i');\n var content = ibox.find('div.ibox-content').first();\n content.slideToggle(200);\n button.toggleClass('fa-chevron-up').toggleClass('fa-chevron-down');\n ibox.toggleClass('').toggleClass('border-bottom');\n setTimeout(function () {\n ibox.resize();\n ibox.find('[id^=map-]').resize();\n }, 50);\n \n }\n });\n\n // Collapse ibox function\n $('.collapse-link').off();\n $('.collapse-link').click(function () {\n var ibox = $(this).closest('div.ibox');\n var button = $(this).find('i');\n var content = ibox.find('div.ibox-content');\n content.slideToggle(200);\n button.toggleClass('fa-chevron-up').toggleClass('fa-chevron-down');\n ibox.toggleClass('').toggleClass('border-bottom');\n setTimeout(function () {\n ibox.resize();\n ibox.find('[id^=map-]').resize();\n }, 50);\n });\n }\n }\n }]);\n","angular\n.module('DigiLean')\n.directive(\"inTrialInfo\", ['$uibModal',\n function ($uibModal) {\n return {\n templateUrl: 'inTrialInfo.html',\n restrict: 'E',\n scope: {\n 'isAdmin': '=',\n },\n link: function (scope, element, attrs) {\n /*\n scope.$watch(\"isAdmin\", function () {\n scope.isAdmin= scope.isAdmin; \n });*/\n }\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"navnewa3\", ['$uibModal',\n function ($uibModal) {\n return {\n templateUrl: 'navnewa3.html',\n restrict: 'E',\n scope: {\n 'mode': '@'\n },\n link: function (scope, element, attrs) {\n scope.createNew = function () {\n\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'newA3Form.html',\n controller: 'newA3ModalController',\n resolve: {\n a3: function () {\n return {\n id: 0,\n title: \"\",\n assetId: \"\"\n }\n }\n\n }\n });\n\n // When user has created new a3\n modalInstance.result.then(function (a3) {\n a3Service().addA3(a3).then(function (savedA3) {\n $state.go('a3wizard', { id: savedA3.id }, { reload: false });\n $scope.publish(\"SendA3Created\", savedA3);\n });\n }, function () {\n //$log.info('Modal dismissed at: ' + new Date());\n });\n\n }\n }\n }\n }]);\n\n\n\n","angular\n.module('DigiLean')\n.directive(\"navnewsuggestion\", ['$uibModal','suggestionService',\n function ($uibModal, suggestionService) {\n return {\n templateUrl: 'navnewsuggestion.html',\n restrict: 'E',\n scope: {\n 'mode': '@'\n },\n link: function (scope, element, attrs) {\n scope.createNew = function () {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'newSuggestionForm.html',\n controller: 'newSuggestionModalController',\n resolve: {\n suggestion: function () {\n return {\n id: 0,\n title:\"\",\n text: \"\",\n suggestedBy: \"\",\n suggestionDate: new Date(),\n showComments: false,\n likes: [],\n comments: [],\n }\n }\n \n }\n });\n \n // When user has created new suggestion\n modalInstance.result.then(function (suggestion) {\n suggestionService().addSuggestion(suggestion).then(function (savedsuggestion) {\n\n });\n }, function () {\n //$log.info('Modal dismissed at: ' + new Date());\n });\n }\n }\n }\n }]);\n","angular\n .module('DigiLean')\n .directive(\"projectSelectorDropdown\", ['$filter', 'projectService',\n function ($filter, projectService) {\n return {\n templateUrl: 'projectSelectorDropdown.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'userid': '=',\n 'ismandatory': '=',\n 'projectChangeHandler': '&',\n },\n link: function (scope, elem, attrs) {\n scope.displayName = \"\";\n scope.projects = null;\n scope.project = null;\n scope.isLoading = true;\n\n scope.$watch(\"userid\", function () {\n if(!scope.userid && !scope.model) return;\n if(scope.model && scope.model.projects){\n scope.projects = scope.model.projects;\n scope.isLoading = false;\n } else {\n if(!scope.projects){\n projectService().getList().then(function (data) {\n scope.projects = data;\n scope.isLoading = false;\n });\n } else if (scope.userid){ \n projectService().getMyProjects().then(function (data) {\n scope.projects = data;\n scope.isLoading = false;\n });\n }\n }\n });\n\n scope.$watch(\"model\", function () {\n if(!scope.userid && !scope.model) return;\n if(scope.model && scope.model.projects){\n scope.projects = scope.model.projects;\n scope.isLoading = false;\n } \n if(scope.model && scope.model.projectId){\n if(!scope.projects){\n if (scope.userid){ \n projectService().getMyProjects().then(function (data) {\n scope.projects = data;\n scope.isLoading = false;\n setProject(scope.model.projectId);\n });\n } else {\n projectService().getList().then(function (data) {\n scope.projects = data;\n scope.isLoading = false;\n setProject(scope.model.projectId);\n });\n } \n } else {\n setProject(scope.model.projectId);\n }\n } else {\n scope.project = null;\n }\n });\n\n function setProject(projectId){\n var project = $filter('filter')(scope.projects, { id: projectId }, true);\n if (project.length > 0) {\n scope.project = project[0];\n }\n }\n\n \n\n scope.selectProject = function (project) {\n scope.project = project;\n if(project){\n scope.projectid = project.id;\n } else {\n scope.projectid = null;\n }\n var updateinfo = {\n model: scope.model,\n project: scope.project\n } \n scope.projectChangeHandler({projectinfo: updateinfo})\n };\n }\n }\n }]);","angular.module(\"DigiLean\").factory('layoutService', ['$filter',\n function ($filter) {\n\n function layoutService() {\n return {\n\n getColors: function () {\n return ['#0099DE', \n '#23c6c8', \n '#0077B5', \n '#5e5e5e', \n '#f8ac59', \n '#ed5565', \n '#9E78B8',\n '#2A2E36', \n '#84B5E3', \n '#23B2C7',\n '#759296',\n '#188687',\n '#004569',\n '#004569',\n \n '#7fccee',\n '#91e2e3',\n '#7fbbda',\n '#aeaeae',\n '#f8ac59',\n '#f499a2',\n '#c4aed4',\n '#94969a',\n '#c1daf1',\n '#91d8e3',\n '#bac8ca',\n '#8bc2c3',\n '#7fa2b4'\n ];\n },\n };\n }\n return layoutService;\n }]);\n","angular.module('DigiLean').factory('mathService', [\n function () {\n function mathService() {\n\n return {\n\n roundNumber: function(num, scale){\n if(!num) return num;\n if(!(\"\" + num).includes(\"e\")) {\n return +(Math.round(num + \"e+\" + scale) + \"e-\" + scale);\n } else {\n var arr = (\"\" + num).split(\"e\");\n var sig = \"\"\n if(+arr[1] + scale > 0) {\n sig = \"+\";\n }\n return +(Math.round(+arr[0] + \"e\" + sig + (+arr[1] + scale)) + \"e-\" + scale);\n }\n },\n isNumeric: function(str, allowblank) {\n if(allowblank && (str == \"\" || !str)) return true;\n return !isNaN(str) && // use type coercion to parse the _entirety_ of the string (`parseFloat` alone does not do this)...\n !isNaN(parseFloat(str)) // ...and ensure strings of whitespace fail\n },\n correctForComma: function(str){\n if(str && str.indexOf(\",\") > -1){\n return str.replace(\",\", \".\");\n }\n return str;\n }\n };\n }\n return mathService;\n }]);\n\n","angular\n .module('DigiLean')\n .component(\"message\", {\n templateUrl: 'message.html',\n bindings: {\n msg: '<'\n },\n controller: ['$state',\n function ($state) {\n const $ctrl = this\n\n $ctrl.goTo = function (msg) {\n if(msg.projectId != null){\n $state.go('projectDetails', { id: msg.projectId }, { reload: false })\n } else if (msg.boardId != null){\n $state.go('board', { id: msg.boardId }, { reload: false })\n }\n }\n }]\n })","angular\n .module('DigiLean')\n .component(\"simpleReply\", {\n templateUrl: 'simpleReply.html',\n bindings: {\n reply: '<'\n },\n controller: function () {\n var $ctrl = this;\n \n $ctrl.$onInit = function() {\n console.log(\"simpleReply\");\n };\n }\n });","angular\n .module('DigiLean')\n .directive(\"draggableModal\", ['pagerService',\n function (pagerService) {\n return {\n restrict: 'A',\n link: function(scope, elem, attrs) {\n setTimeout(function () {\n // SHould find closest parent to attach\n $(\".modal-dialog\").draggable({\n handle: \".modal-header\"\n });\n }, 50);\n }\n }\n }]);\n","// Controller for the actual modal\nvar DigiLean = angular.module('DigiLean');\nDigiLean.controller('fullscreenWidgetController', ['$scope', '$uibModalInstance', 'options',\n function ($scope, $uibModalInstance, options) {\n \n const widget = options.widget\n\n if (!widget)\n throw new Error(\"No widget\")\n\n $scope.widget = widget;\n $scope.assetId = options.assetId;\n $scope.title = options.title;\n $scope.subTitle = options.subTitle;\n $scope.userAccess = options.userAccess\n \n $scope.ok = function () {\n $uibModalInstance.close($scope.selectedApp);\n\n };\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n }]);","angular.module('DigiLean').service('modalService', ['$uibModal',\n function ($uibModal) {\n var modalDefaults = {\n backdrop: true,\n keyboard: true,\n modalFade: true,\n templateUrl: 'modal.html'\n };\n\n var modalOptions = {\n closeButtonText: 'Close',\n actionButtonText: 'OK',\n headerText: 'Proceed?',\n bodyText: 'Perform this action?'\n };\n\n this.showModal = function (customModalDefaults, customModalOptions) {\n if (!customModalDefaults) customModalDefaults = {};\n customModalDefaults.backdrop = 'static';\n return this.show(customModalDefaults, customModalOptions);\n };\n\n this.show = function (customModalDefaults, customModalOptions) {\n //Create temp objects to work with since we're in a singleton service\n var tempModalDefaults = {};\n var tempModalOptions = {};\n\n //Map angular-ui modal custom defaults to modal defaults defined in service\n angular.extend(tempModalDefaults, modalDefaults, customModalDefaults);\n\n //Map modal.html $scope custom properties to defaults defined in service\n angular.extend(tempModalOptions, modalOptions, customModalOptions);\n\n if (!tempModalDefaults.controller) {\n tempModalDefaults.controller = ['$scope', '$uibModalInstance', function ($scope, $uibModalInstance) {\n $scope.modalOptions = tempModalOptions;\n $scope.modalOptions.okButton = function (result) {\n $uibModalInstance.close(result);\n };\n $scope.modalOptions.close = function (result) {\n $uibModalInstance.dismiss('cancel');\n };\n }];\n }\n return $uibModal.open(tempModalDefaults).result;\n };\n\n }]);","/*\nThis directive allows us to pass a function in on an enter key to do what we want.\n// Prevent double invoke: https://stackoverflow.com/questions/35627896/angularjs-ngenter-function-is-invoked-twice\n*/\n\nangular\n .module('DigiLean')\n .directive('ngEnter', function () {\n return function (scope, element, attrs) {\n element.bind(\"keydown keypress\", function (event) {\n if (event.which === 13) {\n scope.$apply(function () {\n scope.$eval(attrs.ngEnter)\n })\n \n event.preventDefault()\n }\n })\n }\n })","angular\n .module('DigiLean')\n .directive(\"pager\", ['pagerService',\n function (pagerService) {\n return {\n templateUrl: 'pager.html',\n restrict: 'E',\n scope: {\n 'allItems': '=',\n 'items': '=',\n 'pageSize':'=',\n 'settings': '='\n },\n link: function (scope, elem, attrs) {\n var result = [];\n var currentPage = 1;\n scope.pager = {};\n scope.setPage = setPage;\n\n scope.$watch('settings', function (settings) {\n scope.settings = settings;\n //checkSettings();\n });\n scope.$watch('allItems', function (items) {\n if (!items) return;\n if (items.length > 0) {\n result = items;\n initController();\n }\n });\n\n scope.$watchCollection('allItems', function(changed, old) {\n if (!changed || !old) return;\n if (changed.length > old.length) {\n result = changed;\n setPage(currentPage);\n }\n \n });\n\n function initController() {\n // initialize to page 1\n scope.setPage(1);\n }\n\n function setPage(page) {\n if (page < 1 || page > scope.pager.totalPages) {\n return;\n }\n currentPage = page;\n // get pager object from service\n scope.pager = pagerService().getPager(result.length, page, scope.pageSize);\n\n // get current page of items\n scope.items = result.slice(scope.pager.startIndex, scope.pager.endIndex + 1);\n }\n\n }\n\n }\n }]);\n","angular.module(\"DigiLean\").factory('pagerService', [\n function () {\n function pagerService() {\n\n return {\n getPager: function (totalItems, currentPage, pageSize) {\n // default to first page\n currentPage = currentPage || 1;\n\n // default page size is 10\n pageSize = pageSize || 10;\n\n // calculate total pages\n var totalPages = Math.ceil(totalItems / pageSize);\n\n var startPage, endPage;\n if (totalPages <= 10) {\n // less than 10 total pages so show all\n startPage = 1;\n endPage = totalPages;\n } else {\n // more than 10 total pages so calculate start and end pages\n if (currentPage <= 6) {\n startPage = 1;\n endPage = 10;\n } else if (currentPage + 4 >= totalPages) {\n startPage = totalPages - 9;\n endPage = totalPages;\n } else {\n startPage = currentPage - 5;\n endPage = currentPage + 4;\n }\n }\n\n // calculate start and end item indexes\n var startIndex = (currentPage - 1) * pageSize;\n var endIndex = Math.min(startIndex + pageSize - 1, totalItems - 1);\n\n // create an array of pages to ng-repeat in the pager control\n var pages = _.range(startPage, endPage + 1);\n\n // return object with all pager properties required by the view\n return {\n totalItems: totalItems,\n currentPage: currentPage,\n pageSize: pageSize,\n totalPages: totalPages,\n startPage: startPage,\n endPage: endPage,\n startIndex: startIndex,\n endIndex: endIndex,\n pages: pages\n };\n }\n }\n }\n return pagerService;\n }]); \n","\n// This service lives on rootscope and doesn't need to be injected to controllers. just use:\n//$scope.publish('eventName', data);\n\n//$scope.subscribe('eventName', function (data) {\n// //do somthing\n//});\n\nangular.module(\"DigiLean\").service('PubSubService', function () {\n return { Initialize: Initialize };\n\n function Initialize(scope) {\n\n //Keep a dictionary to store the events and its subscriptions\n var publishEventMap = {};\n // Register publish events\n scope.constructor.prototype.publish = scope.constructor.prototype.publish\n || function () {\n var _thisScope = this,\n handlers,\n args,\n evnt;\n //Get event and rest of the data\n args = [].slice.call(arguments);\n evnt = args.splice(0, 1);\n\n var handlers = publishEventMap[evnt] || [];\n //console.log(\"publish to handler: \" + evnt + \"to \" + handlers.length + \" handlers\");\n //Loop though each handlerMap and invoke the handler\n handlers.forEach(function (handlerMap) {\n\n //console.debug(\"publish: \" + evnt + \" to handler\");\n try {\n handlerMap.handler.apply(_thisScope, args);\n }\n catch (err) {\n (console.error || console.log).call(console, \"Failed to publish event to handler: \" + handlerMap.handler + (err.stack || err));\n }\n });\n }\n\n //Register Subscribe events\n scope.constructor.prototype.subscribe = scope.constructor.prototype.subscribe\n || function (evnt, handler) {\n var _thisScope = this,\n handlers = (publishEventMap[evnt] = publishEventMap[evnt] || []);\n \n //Just keep the scopeid for reference later for cleanup\n handlers.push({ $id: _thisScope.$id, handler: handler });\n //When scope is destroy remove the handlers that it has subscribed. \n _thisScope.$on('$destroy', function () {\n for (var i = 0, l = handlers.length; i < l; i++) {\n if (handlers[i].$id === _thisScope.$id) {\n handlers.splice(i, 1);\n // DEBUG\n //console.log(\"destroy: \" + handler[i]);\n break;\n }\n }\n });\n }\n\n }\n}).run(['$rootScope', 'PubSubService',function ($rootScope, PubSubService) {\n PubSubService.Initialize($rootScope);\n}]);","angular.module('DigiLean').factory('settingsService', ['$translate',\n function ($translate) {\n function settingsService() {\n return {\n \n getSettingsFromDataSource: function (dataSource) {\n if (!dataSource)\n return\n \n var settingsSource = {\n id: dataSource.id,\n source: dataSource.source\n };\n if (dataSource.valueElement) {\n settingsSource.valueElement = dataSource.valueElement;\n }\n if (dataSource.targets) {\n settingsSource.targets = dataSource.targets;\n }\n return settingsSource;\n },\n };\n }\n return settingsService;\n }]);\n\n","var DigiLean = angular.module('DigiLean');\nDigiLean.target = {\n\n getTargetIndicatorColor: function (targetindicator) {\n if(targetindicator == \"green\"){\n return \"#5cb85c\";\n } else if(targetindicator == \"yellow\"){\n return \"#f8ac59\";\n } else if(targetindicator == \"red\"){\n return \"#ed5565\";\n } else return \"#676a6c\";\n },\n\n getInternalTargetResultForPeriod: function (options, dataSource) { \n \n var validTargetsInPeriod = dataSource.targets;\n\n if (validTargetsInPeriod == null || validTargetsInPeriod.length == 0) return;\n if (dataSource.unitOfTime == null) return;\n\n var fromdate = moment(options.timePeriod.from).toDate(); \n var todate = moment(options.timePeriod.to).toDate(); \n var greenvalue = 0;\n var redvalue = 0;\n if (dataSource.unitOfTime == \"YEAR\"){\n var totalNumOfYears = moment(todate).get('year') - moment(fromdate).get('year');//todate.Year - fromdate.Year;\n\n for (var m = 0; m < totalNumOfYears; m++){\n angular.forEach(validTargetsInPeriod, function (target) {\n if (moment(target.validFrom).toDate() <= fromdate){\n greenvalue = greenvalue + Number(target.redValue);\n if (target.redValue != null){\n redvalue = redvalue + Number(target.redValue);\n }\n }\n\n });\n fromdate = moment(fromdate).add(1, 'year');//fromdate.AddYears(1);\n var daysOfNewMonth = moment(fromdate).daysInMonth();//DateTime.DaysInMonth(fromdate.Year, fromdate.Month);\n fromdate = moment(fromdate).add(daysOfNewMonth + moment(fromdate).get('day'));//fromdate.AddDays(daysOfNewMonth + fromdate.Day);\n }\n if (dataSource.valueUnit == \"%\"){\n redvalue = redvalue / totalNumOfYears;\n greenvalue = greenvalue / totalNumOfYears;\n options.value = options.value / options.numberOfValues;\n }\n\n }\n if (dataSource.unitOfTime == \"MONTH\"){\n\n var totalNumOfMonths = (moment(todate).get('year') - moment(fromdate).get('year')) * 12 + moment.utc(todate).get('month') - moment.utc(fromdate).get('month');//(todate.Year - fromdate.Year) * 12 + todate.Month - fromdate.Month;\n\n for (var m = 0; m < totalNumOfMonths; m++){\n angular.forEach(validTargetsInPeriod, function (target) {\n \n if (moment(target.validFrom).toDate() <= fromdate){\n greenvalue = greenvalue + Number(target.greenValue);\n if (target.redValue != null){\n redvalue = redvalue + Number(target.redValue);\n }\n }\n\n });\n fromdate = moment(fromdate).add(1, 'month');//fromdate.AddMonths(1);\n var daysOfNewMonth = moment(fromdate).daysInMonth();//DateTime.DaysInMonth(fromdate.Year, fromdate.Month);\n if (moment(fromdate).get('day') < daysOfNewMonth){ // Handles e.g when february adds one but \"truncates\" days to 28. Must add missing days in next month\n fromdate = moment(fromdate).add(daysOfNewMonth-moment(fromdate).get('day'));//fromdate.AddDays(daysOfNewMonth-fromdate.Day);\n }\n }\n if (dataSource.valueUnit == \"%\"){\n redvalue = redvalue / totalNumOfMonths;\n greenvalue = greenvalue / totalNumOfMonths;\n options.value = options.value / options.numberOfValues;\n }\n }\n if (scope.dataSource.unitOfTime == \"WEEK\") {\n\n var isoYearStartDate = moment.utc(fromdate).isoWeekYear();\n var isoYearEndDate = moment.utc(todate).isoWeekYear();\n var totalNumOfWeeks = 0;\n while(isoYearStartDate 0; t--) {\n var target = validTargetsInPeriod[t - 1];\n if (moment(target.validFrom).toDate() <= fromdate) {\n greenvalue = greenvalue + Number(target.greenValue);\n if (target.redValue != null) {\n redvalue = redvalue + Number(target.redValue);\n }\n break;\n }\n\n }\n fromdate = moment(fromdate).add(7, 'day');\n /*var daysOfNewMonth = moment(fromdate).daysInMonth();//DateTime.DaysInMonth(fromdate.Year, fromdate.Month);\n if (moment(fromdate).get('day') < daysOfNewMonth) { // Handles e.g when february adds one but \"truncates\" days to 28. Must add missing days in next month\n fromdate = moment(fromdate).add(daysOfNewMonth - moment(fromdate).get('day'));//fromdate.AddDays(daysOfNewMonth-fromdate.Day);\n }*/\n }\n if (scope.dataSource.valueUnit == \"%\" || scope.formula == \"average\") {\n redvalue = redvalue / totalNumOfWeeks;\n greenvalue = greenvalue / totalNumOfWeeks;\n options.value = options.value / options.numberOfValues;\n }\n }\n if (dataSource.unitOfTime == \"DAY\"){\n var totalNumOfDays = 0;\n while (moment(options.timePeriod.to).toDate() >= fromdate){\n totalNumOfDays = totalNumOfDays + 1;\n angular.forEach(validTargetsInPeriod, function (target) {\n if (moment(target.validFrom).toDate() <= fromdate){\n greenvalue = greenvalue + Number(target.greenValue);\n if (target.redValue != null){\n redvalue = redvalue + Number(target.redValue);\n }\n }\n\n });\n fromdate = moment(fromdate).add(1, 'day'); //fromdate.AddDays(1);\n }\n if (dataSource.valueUnit == \"%\"){\n redvalue = redvalue / totalNumOfDays;\n greenvalue = greenvalue / totalNumOfDays;\n options.value = options.value / options.numberOfValues;\n }\n }\n\n var result = {\n greenOperator: validTargetsInPeriod[0].greenOperator,\n greenValue: greenvalue,\n redOperator: validTargetsInPeriod[0].redOperator,\n redValue: redvalue,\n targetIndicator: \"\"\n }\n\n if(options.value == null){\n result.targetIndicator = \"\";\n } else{\n result.targetIndicator = \"yellow\";\n\n if (validTargetsInPeriod[0].greenOperator == \"<\"){\n if (options.value < result.greenValue){\n result.targetIndicator = \"green\";\n }\n if (validTargetsInPeriod[0].RedOperator == \">=\"){\n if (options.value >= result.redValue){\n result.targetIndicator = \"red\";\n }\n }else if (validTargetsInPeriod[0].redOperator == \">\"){\n if (options.value > result.redValue){\n result.targetIndicator = \"red\";\n }\n }\n }\n if (validTargetsInPeriod[0].greenOperator == \"<=\"){\n if (options.value <= result.greenValue){\n result.targetIndicator = \"green\";\n }\n if (validTargetsInPeriod[0].redOperator == \">=\"){\n if (options.value >= result.redValue){\n result.targetIndicator = \"red\";\n }\n } else if (validTargetsInPeriod[0].redOperator == \">\"){\n if (options.value > result.redValue){\n result.targetIndicator = \"red\";\n }\n }\n }\n if (validTargetsInPeriod[0].greenOperator == \">\"){\n if (options.value > result.greenValue) {\n result.targetIndicator = \"green\";\n }\n if (validTargetsInPeriod[0].redOperator == \"<=\"){\n if (options.value <= result.redValue){\n result.targetIndicator = \"red\";\n }\n } else if (validTargetsInPeriod[0].redOperator == \"<\"){\n if (options.value < result.redValue){\n result.targetIndicator = \"red\";\n }\n }\n }\n if (validTargetsInPeriod[0].greenOperator == \">=\"){\n if (options.value >= result.greenValue){\n result.targetIndicator = \"green\";\n }\n if (validTargetsInPeriod[0].redOperator == \"<=\"){\n if (options.value <= result.redValue){\n result.targetIndicator = \"red\";\n }\n } else if (validTargetsInPeriod[0].redOperator == \"<\"){\n if (options.value < result.redValue){\n result.targetIndicator = \"red\";\n }\n }\n }\n }\n result.targetDescription = result.greenOperator + \" \" + result.greenValue.toFixed(options.decimals);\n return result;\n\n },\n getTargetResultByValueAndOperator: function(value, targetOperator, targetValue){\n var result = {\n targetIndicator: \"\"\n }\n if(value === null || targetValue === null || targetValue === \"\" || targetOperator == null){\n result.targetIndicator = \"\";\n } else{\n result.targetIndicator = \"red\";\n\n if (targetOperator == \"<\"){\n if (value < targetValue){\n result.targetIndicator = \"green\";\n }\n }\n if (targetOperator == \"<=\"){\n if (value <= targetValue){\n result.targetIndicator = \"green\";\n }\n }\n if (targetOperator == \">\"){\n if (value > targetValue) {\n result.targetIndicator = \"green\";\n }\n }\n if (targetOperator == \">=\"){\n if (value >= targetValue){\n result.targetIndicator = \"green\";\n }\n }\n }\n return result;\n },\n getTargetResultForUnitOfTime: function (options, targets) { \n\n if (targets == null || targets.length == 0) return;\n if (options.unitOfTime == null) return;\n\n var fromdate = moment(options.timePeriod.from).toDate(); \n var todate = moment(options.timePeriod.to).toDate(); \n var greenvalue = 0;\n var redvalue = 0;\n var validTargetPeriod = false;\n if (options.unitOfTime == \"YEAR\"){\n fromdate = moment().year(options.value.year).month(0).date(1); \n\n angular.forEach(targets, function (target) {\n if (moment(target.validFrom).toDate() <= fromdate){\n validTargetPeriod = true;\n greenvalue = greenvalue + Number(target.greenValue);\n if (target.redValue != null){\n redvalue = redvalue + Number(target.redValue);\n }\n }\n\n });\n if (options.valueUnit == \"%\"){\n options.value = options.value / options.value.count;\n }\n\n }\n if (options.unitOfTime == \"MONTH\"){\n fromdate = moment().year(options.value.year).month(options.value.month-1).date(1);\n\n angular.forEach(targets, function (target) {\n if (moment(target.validFrom).toDate() <= fromdate){\n validTargetPeriod = true;\n greenvalue = greenvalue + Number(target.greenValue);\n if (target.redValue != null){\n redvalue = redvalue + Number(target.redValue);\n }\n }\n });\n \n if (options.valueUnit == \"%\"){\n options.value.value = options.value.value / options.value.numberOfValues;\n }\n }\n if (options.unitOfTime == \"WEEK\"){\n //fromdate = moment(options.value.valueDate).toDate().startOf(\"isoweek\");\n fromdate = moment().isoWeekYear(options.value.year).isoWeekday(1).isoWeek(options.value.week).utc().toDate();\n\n angular.forEach(targets, function (target) {\n if (moment(target.validFrom).toDate() <= fromdate){\n validTargetPeriod = true;\n greenvalue = greenvalue + Number(target.greenValue);\n if (target.redValue != null){\n redvalue = redvalue + Number(target.redValue);\n }\n }\n });\n \n if (options.valueUnit == \"%\"){\n options.value.value = options.value.value / options.value.numberOfValues;\n }\n }\n if (options.unitOfTime == \"DAY\"){\n fromdate = moment(options.value.valueDate).toDate();\n angular.forEach(targets, function (target) {\n validTargetPeriod = true;\n if (moment(target.validFrom).toDate() <= fromdate){\n greenvalue = greenvalue + Number(target.greenValue);\n if (target.redValue != null){\n redvalue = redvalue + Number(target.redValue);\n }\n }\n });\n if (options.valueUnit == \"%\"){\n options.value.value = options.value.value / options.count;\n }\n }\n\n var result = {\n greenOperator: targets[0].greenOperator,\n greenValue: greenvalue,\n redOperator: targets[0].redOperator,\n redValue: redvalue,\n targetIndicator: \"\"\n }\n\n // No valid target for given period found\n if(!validTargetPeriod){\n return result;\n } \n\n if(options.value == null){\n result.targetIndicator = \"\";\n } else{\n result.targetIndicator = \"yellow\";\n\n if (targets[0].greenOperator == \"<\"){\n if (options.value.value < result.greenValue){\n result.targetIndicator = \"green\";\n }\n if (targets[0].redOperator == \">=\"){\n if (options.value.value >= result.redValue){\n result.targetIndicator = \"red\";\n }\n }else if (targets[0].redOperator == \">\"){\n if (options.value.value > result.redValue){\n result.targetIndicator = \"red\";\n }\n }\n }\n if (targets[0].greenOperator == \"<=\"){\n if (options.value.value <= result.greenValue){\n result.targetIndicator = \"green\";\n }\n if (targets[0].redOperator == \">=\"){\n if (options.value.value >= result.redValue){\n result.targetIndicator = \"red\";\n }\n } else if (targets[0].redOperator == \">\"){\n if (options.value.value > result.redValue){\n result.targetIndicator = \"red\";\n }\n }\n }\n if (targets[0].greenOperator == \">\"){\n if (options.value.value > result.greenValue) {\n result.targetIndicator = \"green\";\n }\n if (targets[0].redOperator == \"<=\"){\n if (options.value.value <= result.redValue){\n result.targetIndicator = \"red\";\n }\n } else if (targets[0].redOperator == \"<\"){\n if (options.value.value < result.redValue){\n result.targetIndicator = \"red\";\n }\n }\n }\n if (targets[0].greenOperator == \">=\"){\n if (options.value.value >= result.greenValue){\n result.targetIndicator = \"green\";\n }\n if (targets[0].redOperator == \"<=\"){\n if (options.value.value <= result.redValue){\n result.targetIndicator = \"red\";\n }\n } else if (targets[0].redOperator == \"<\"){\n if (options.value.value < result.redValue){\n result.targetIndicator = \"red\";\n }\n }\n }\n }\n result.targetDescription = result.greenOperator + \" \" + result.greenValue.toFixed(options.decimals);\n return result;\n\n }\n}\n","angular.module('DigiLean').factory('themeService', [\n function () {\n function themeService() {\n\n return {\n\n getColors: function(){\n return [\"#FCBB42\", \"#3BAFDA\", \"#8CC152\", \"#ED5565\", \"#E9573F\", \"#D770AD\", \"#c18852\", \"#5254c1\",\n \"#fcea42\", \"#52c1c0\", \"#c1bf52\", \"#449d44\", \"#8b8d92\", \"#202020\", \"#13105e\", \"#AC92EC\"];\n }\n };\n }\n return themeService;\n }]);\n\n","\nangular.module(\"DigiLean\")\n .directive('zoomSelector', ['$filter',\n function ($filter) {\n return {\n templateUrl: \"zoomSelector.html\",\n restrict: \"E\",\n scope: {\n 'zoom': '<',\n 'zoomChangedHandler': '&',\n 'zoomOptions': '<'\n },\n link: function (scope, elem, attrs) {\n\n scope.zoomMax = 2\n scope.zoomMin = 0.25\n\n scope.zoomLevels = [0.5, 0.75, 1, 1.25]\n\n let internalZoomLevels = []\n function calcInternal() {\n internalZoomLevels = [scope.zoomMin]\n step = 0.1\n let level = internalZoomLevels[0]\n while(level < scope.zoomMax) {\n level = parseFloat((level + step).toFixed(1))\n if (level < scope.zoomMax)\n internalZoomLevels.push(level)\n else\n internalZoomLevels.push(scope.zoomMax)\n }\n }\n \n calcInternal()\n scope.$watch('zoomOptions', function (options) {\n if (options) {\n if (options.zoomLevels) {\n scope.zoomLevels = options.zoomLevels\n }\n if (options.zoomMax)\n scope.zoomMax = options.zoomMax\n if (options.zoomMin)\n scope.zoomMin = options.zoomMin\n \n calcInternal()\n }\n })\n scope.setZoom = function(zoom) {\n scope.zoom = zoom\n scope.zoomChanged()\n }\n scope.zoomOut = function($event) {\n $event.stopPropagation()\n const index = getIndex()\n if (index === -1) return\n\n if ((index) > 0) {\n scope.zoom = internalZoomLevels[index - 1]\n } else {\n scope.zoom = internalZoomLevels[index]\n }\n scope.zoomChanged()\n }\n scope.zoomIn = function($event) {\n $event.stopPropagation()\n const index = getIndex()\n if (index === -1) return\n \n\n if ((index + 1) < internalZoomLevels.length) {\n scope.zoom = internalZoomLevels[index + 1]\n } else {\n scope.zoom = internalZoomLevels[index]\n }\n scope.zoomChanged()\n }\n \n scope.zoomChanged = function () {\n scope.zoomChangedHandler({ zoom: scope.zoom })\n }\n \n function getIndex() {\n let index = internalZoomLevels.indexOf(scope.zoom)\n if (index == -1) {\n // try get closest\n let zoomRounded = parseFloat(scope.zoom.toFixed(1))\n index = internalZoomLevels.indexOf(zoomRounded)\n }\n return index\n }\n }\n }\n }])","/*global define:true*/\n(function(root, factory) {\n\n\t'use strict';\n\n\tif (typeof define === 'function' && define.amd) {\n\t\t// AMD\n\t\tdefine(['angular'], factory);\n\t} else if (typeof exports === 'object') {\n\t\t// CommonJS\n\t\tmodule.exports = factory(require('angular'));\n\t} else {\n\t\t// Browser, nothing \"exported\". Only registered as a module with angular.\n\t\tfactory(root.angular);\n\t}\n}(this, function(angular) {\n\n\t'use strict';\n\n\t// This returned angular module 'gridster' is what is exported.\n\treturn angular.module('gridster', [])\n\n\t.constant('gridsterConfig', {\n\t\tcolumns: 6, // number of columns in the grid\n\t\tpushing: true, // whether to push other items out of the way\n\t\tfloating: true, // whether to automatically float items up so they stack\n\t\tswapping: false, // whether or not to have items switch places instead of push down if they are the same size\n\t\twidth: 'auto', // width of the grid. \"auto\" will expand the grid to its parent container\n\t\tcolWidth: 'auto', // width of grid columns. \"auto\" will divide the width of the grid evenly among the columns\n\t\trowHeight: 'match', // height of grid rows. 'match' will make it the same as the column width, a numeric value will be interpreted as pixels, '/2' is half the column width, '*5' is five times the column width, etc.\n\t\tmargins: [10, 10], // margins in between grid items\n\t\touterMargin: true,\n\t\tsparse: false, // \"true\" can increase performance of dragging and resizing for big grid (e.g. 20x50)\n\t\tisMobile: false, // toggle mobile view\n\t\tmobileBreakPoint: 600, // width threshold to toggle mobile mode\n\t\tmobileModeEnabled: true, // whether or not to toggle mobile mode when screen width is less than mobileBreakPoint\n\t\tminColumns: 1, // minimum amount of columns the grid can scale down to\n\t\tminRows: 1, // minimum amount of rows to show if the grid is empty\n\t\tmaxRows: 100, // maximum amount of rows in the grid\n\t\tdefaultSizeX: 2, // default width of an item in columns\n\t\tdefaultSizeY: 1, // default height of an item in rows\n\t\tminSizeX: 1, // minimum column width of an item\n\t\tmaxSizeX: null, // maximum column width of an item\n\t\tminSizeY: 1, // minumum row height of an item\n\t\tmaxSizeY: null, // maximum row height of an item\n\t\tsaveGridItemCalculatedHeightInMobile: false, // grid item height in mobile display. true- to use the calculated height by sizeY given\n\t\tresizable: { // options to pass to resizable handler\n\t\t\tenabled: true,\n\t\t\thandles: ['s', 'e', 'n', 'w', 'se', 'ne', 'sw', 'nw']\n\t\t},\n\t\tdraggable: { // options to pass to draggable handler\n\t\t\tenabled: true,\n\t\t\tscrollSensitivity: 20, // Distance in pixels from the edge of the viewport after which the viewport should scroll, relative to pointer\n\t\t\tscrollSpeed: 15 // Speed at which the window should scroll once the mouse pointer gets within scrollSensitivity distance\n\t\t}\n\t})\n\n\t.controller('GridsterCtrl', ['gridsterConfig', '$timeout', '$rootScope',\n\t\tfunction(gridsterConfig, $timeout, $rootScope) {\n\n\t\t\tvar gridster = this;\n\n\t\t\t/**\n\t\t\t * Create options from gridsterConfig constant\n\t\t\t */\n\t\t\tangular.extend(this, gridsterConfig);\n\n\t\t\tthis.resizable = angular.extend({}, gridsterConfig.resizable || {});\n\t\t\tthis.draggable = angular.extend({}, gridsterConfig.draggable || {});\n\n\t\t\tvar flag = false;\n\t\t\tthis.layoutChanged = function() {\n\t\t\t\tif (flag) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tflag = true;\n\t\t\t\t$timeout(function() {\n\t\t\t\t\tflag = false;\n\t\t\t\t\tif (gridster.loaded) {\n\t\t\t\t\t\tgridster.floatItemsUp();\n\t\t\t\t\t}\n\t\t\t\t\tgridster.updateHeight(gridster.movingItem ? gridster.movingItem.sizeY : 0);\n\t\t\t\t\t$rootScope.$broadcast('gridster-resized-digilean', gridster); // we needed to know when this resize is done\n\t\t\t\t}, 30);\n\t\t\t};\n\n\t\t\t/**\n\t\t\t * A positional array of the items in the grid\n\t\t\t */\n\t\t\tthis.grid = [];\n\t\t\tthis.allItems = [];\n\n\t\t\t/**\n\t\t\t * Clean up after yourself\n\t\t\t */\n\t\t\tthis.destroy = function() {\n\t\t\t\t// empty the grid to cut back on the possibility\n\t\t\t\t// of circular references\n\t\t\t\tif (this.grid) {\n\t\t\t\t\tthis.grid = [];\n\t\t\t\t}\n\t\t\t\tthis.$element = null;\n\n\t\t\t\tif (this.allItems) {\n\t\t\t\t\tthis.allItems.length = 0;\n\t\t\t\t\tthis.allItems = null;\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t/**\n\t\t\t * Overrides default options\n\t\t\t *\n\t\t\t * @param {Object} options The options to override\n\t\t\t */\n\t\t\tthis.setOptions = function(options) {\n\t\t\t\tif (!options) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\toptions = angular.extend({}, options);\n\n\t\t\t\t// all this to avoid using jQuery...\n\t\t\t\tif (options.draggable) {\n\t\t\t\t\tangular.extend(this.draggable, options.draggable);\n\t\t\t\t\tdelete(options.draggable);\n\t\t\t\t}\n\t\t\t\tif (options.resizable) {\n\t\t\t\t\tangular.extend(this.resizable, options.resizable);\n\t\t\t\t\tdelete(options.resizable);\n\t\t\t\t}\n\n\t\t\t\tangular.extend(this, options);\n\n\t\t\t\tif (!this.margins || this.margins.length !== 2) {\n\t\t\t\t\tthis.margins = [0, 0];\n\t\t\t\t} else {\n\t\t\t\t\tfor (var x = 0, l = this.margins.length; x < l; ++x) {\n\t\t\t\t\t\tthis.margins[x] = parseInt(this.margins[x], 10);\n\t\t\t\t\t\tif (isNaN(this.margins[x])) {\n\t\t\t\t\t\t\tthis.margins[x] = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t/**\n\t\t\t * Check if item can occupy a specified position in the grid\n\t\t\t *\n\t\t\t * @param {Object} item The item in question\n\t\t\t * @param {Number} row The row index\n\t\t\t * @param {Number} column The column index\n\t\t\t * @returns {Boolean} True if if item fits\n\t\t\t */\n\t\t\tthis.canItemOccupy = function(item, row, column) {\n\t\t\t\treturn row > -1 && column > -1 && item.sizeX + column <= this.columns && item.sizeY + row <= this.maxRows;\n\t\t\t};\n\n\t\t\t/**\n\t\t\t * Set the item in the first suitable position\n\t\t\t *\n\t\t\t * @param {Object} item The item to insert\n\t\t\t */\n\t\t\tthis.autoSetItemPosition = function(item) {\n\t\t\t\t// walk through each row and column looking for a place it will fit\n\t\t\t\tfor (var rowIndex = 0; rowIndex < this.maxRows; ++rowIndex) {\n\t\t\t\t\tfor (var colIndex = 0; colIndex < this.columns; ++colIndex) {\n\t\t\t\t\t\t// only insert if position is not already taken and it can fit\n\t\t\t\t\t\tvar items = this.getItems(rowIndex, colIndex, item.sizeX, item.sizeY, item);\n\t\t\t\t\t\tif (items.length === 0 && this.canItemOccupy(item, rowIndex, colIndex)) {\n\t\t\t\t\t\t\tthis.putItem(item, rowIndex, colIndex);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthrow new Error('Unable to place item!');\n\t\t\t};\n\n\t\t\t/**\n\t\t\t * Gets items at a specific coordinate\n\t\t\t *\n\t\t\t * @param {Number} row\n\t\t\t * @param {Number} column\n\t\t\t * @param {Number} sizeX\n\t\t\t * @param {Number} sizeY\n\t\t\t * @param {Array} excludeItems An array of items to exclude from selection\n\t\t\t * @returns {Array} Items that match the criteria\n\t\t\t */\n\t\t\tthis.getItems = function(row, column, sizeX, sizeY, excludeItems) {\n\t\t\t\tvar items = [];\n\t\t\t\tif (!sizeX || !sizeY) {\n\t\t\t\t\tsizeX = sizeY = 1;\n\t\t\t\t}\n\t\t\t\tif (excludeItems && !(excludeItems instanceof Array)) {\n\t\t\t\t\texcludeItems = [excludeItems];\n\t\t\t\t}\n\t\t\t\tvar item;\n\t\t\t\tif (this.sparse === false) { // check all cells\n\t\t\t\t\tfor (var h = 0; h < sizeY; ++h) {\n\t\t\t\t\t\tfor (var w = 0; w < sizeX; ++w) {\n\t\t\t\t\t\t\titem = this.getItem(row + h, column + w, excludeItems);\n\t\t\t\t\t\t\tif (item && (!excludeItems || excludeItems.indexOf(item) === -1) && items.indexOf(item) === -1) {\n\t\t\t\t\t\t\t\titems.push(item);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else { // check intersection with all items\n\t\t\t\t\tvar bottom = row + sizeY - 1;\n\t\t\t\t\tvar right = column + sizeX - 1;\n\t\t\t\t\tfor (var i = 0; i < this.allItems.length; ++i) {\n\t\t\t\t\t\titem = this.allItems[i];\n\t\t\t\t\t\tif (item && (!excludeItems || excludeItems.indexOf(item) === -1) && items.indexOf(item) === -1 && this.intersect(item, column, right, row, bottom)) {\n\t\t\t\t\t\t\titems.push(item);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn items;\n\t\t\t};\n\n\t\t\t/**\n\t\t\t * @param {Array} items\n\t\t\t * @returns {Object} An item that represents the bounding box of the items\n\t\t\t */\n\t\t\tthis.getBoundingBox = function(items) {\n\n\t\t\t\tif (items.length === 0) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tif (items.length === 1) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\trow: items[0].row,\n\t\t\t\t\t\tcol: items[0].col,\n\t\t\t\t\t\tsizeY: items[0].sizeY,\n\t\t\t\t\t\tsizeX: items[0].sizeX\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tvar maxRow = 0;\n\t\t\t\tvar maxCol = 0;\n\t\t\t\tvar minRow = 9999;\n\t\t\t\tvar minCol = 9999;\n\n\t\t\t\tfor (var i = 0, l = items.length; i < l; ++i) {\n\t\t\t\t\tvar item = items[i];\n\t\t\t\t\tminRow = Math.min(item.row, minRow);\n\t\t\t\t\tminCol = Math.min(item.col, minCol);\n\t\t\t\t\tmaxRow = Math.max(item.row + item.sizeY, maxRow);\n\t\t\t\t\tmaxCol = Math.max(item.col + item.sizeX, maxCol);\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\trow: minRow,\n\t\t\t\t\tcol: minCol,\n\t\t\t\t\tsizeY: maxRow - minRow,\n\t\t\t\t\tsizeX: maxCol - minCol\n\t\t\t\t};\n\t\t\t};\n\n\t\t\t/**\n\t\t\t * Checks if item intersects specified box\n\t\t\t *\n\t\t\t * @param {object} item\n\t\t\t * @param {number} left\n\t\t\t * @param {number} right\n\t\t\t * @param {number} top\n\t\t\t * @param {number} bottom\n\t\t\t */\n\n\t\t\tthis.intersect = function(item, left, right, top, bottom) {\n\t\t\t\treturn (left <= item.col + item.sizeX - 1 &&\n\t\t\t\t\tright >= item.col &&\n\t\t\t\t\ttop <= item.row + item.sizeY - 1 &&\n\t\t\t\t\tbottom >= item.row);\n\t\t\t};\n\n\n\t\t\t/**\n\t\t\t * Removes an item from the grid\n\t\t\t *\n\t\t\t * @param {Object} item\n\t\t\t */\n\t\t\tthis.removeItem = function(item) {\n\t\t\t\tvar index;\n\t\t\t\tfor (var rowIndex = 0, l = this.grid.length; rowIndex < l; ++rowIndex) {\n\t\t\t\t\tvar columns = this.grid[rowIndex];\n\t\t\t\t\tif (!columns) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tindex = columns.indexOf(item);\n\t\t\t\t\tif (index !== -1) {\n\t\t\t\t\t\tcolumns[index] = null;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this.sparse) {\n\t\t\t\t\tindex = this.allItems.indexOf(item);\n\t\t\t\t\tif (index !== -1) {\n\t\t\t\t\t\tthis.allItems.splice(index, 1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.layoutChanged();\n\t\t\t};\n\n\t\t\t/**\n\t\t\t * Returns the item at a specified coordinate\n\t\t\t *\n\t\t\t * @param {Number} row\n\t\t\t * @param {Number} column\n\t\t\t * @param {Array} excludeItems Items to exclude from selection\n\t\t\t * @returns {Object} The matched item or null\n\t\t\t */\n\t\t\tthis.getItem = function(row, column, excludeItems) {\n\t\t\t\tif (excludeItems && !(excludeItems instanceof Array)) {\n\t\t\t\t\texcludeItems = [excludeItems];\n\t\t\t\t}\n\t\t\t\tvar sizeY = 1;\n\t\t\t\twhile (row > -1) {\n\t\t\t\t\tvar sizeX = 1,\n\t\t\t\t\t\tcol = column;\n\t\t\t\t\twhile (col > -1) {\n\t\t\t\t\t\tvar items = this.grid[row];\n\t\t\t\t\t\tif (items) {\n\t\t\t\t\t\t\tvar item = items[col];\n\t\t\t\t\t\t\tif (item && (!excludeItems || excludeItems.indexOf(item) === -1) && item.sizeX >= sizeX && item.sizeY >= sizeY) {\n\t\t\t\t\t\t\t\treturn item;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t++sizeX;\n\t\t\t\t\t\t--col;\n\t\t\t\t\t}\n\t\t\t\t\t--row;\n\t\t\t\t\t++sizeY;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t\t};\n\n\t\t\t/**\n\t\t\t * Insert an array of items into the grid\n\t\t\t *\n\t\t\t * @param {Array} items An array of items to insert\n\t\t\t */\n\t\t\tthis.putItems = function(items) {\n\t\t\t\tfor (var i = 0, l = items.length; i < l; ++i) {\n\t\t\t\t\tthis.putItem(items[i]);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t/**\n\t\t\t * Insert a single item into the grid\n\t\t\t *\n\t\t\t * @param {Object} item The item to insert\n\t\t\t * @param {Number} row (Optional) Specifies the items row index\n\t\t\t * @param {Number} column (Optional) Specifies the items column index\n\t\t\t * @param {Array} ignoreItems\n\t\t\t */\n\t\t\tthis.putItem = function(item, row, column, ignoreItems) {\n\t\t\t\t// auto place item if no row specified\n\t\t\t\tif (typeof row === 'undefined' || row === null) {\n\t\t\t\t\trow = item.row;\n\t\t\t\t\tcolumn = item.col;\n\t\t\t\t\tif (typeof row === 'undefined' || row === null) {\n\t\t\t\t\t\tthis.autoSetItemPosition(item);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// keep item within allowed bounds\n\t\t\t\tif (!this.canItemOccupy(item, row, column)) {\n\t\t\t\t\tcolumn = Math.min(this.columns - item.sizeX, Math.max(0, column));\n\t\t\t\t\trow = Math.min(this.maxRows - item.sizeY, Math.max(0, row));\n\t\t\t\t}\n\n\t\t\t\t// check if item is already in grid\n\t\t\t\tif (item.oldRow !== null && typeof item.oldRow !== 'undefined') {\n\t\t\t\t\tvar samePosition = item.oldRow === row && item.oldColumn === column;\n\t\t\t\t\tvar inGrid = this.grid[row] && this.grid[row][column] === item;\n\t\t\t\t\tif (samePosition && inGrid) {\n\t\t\t\t\t\titem.row = row;\n\t\t\t\t\t\titem.col = column;\n\t\t\t\t\t\treturn;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// remove from old position\n\t\t\t\t\t\tvar oldRow = this.grid[item.oldRow];\n\t\t\t\t\t\tif (oldRow && oldRow[item.oldColumn] === item) {\n\t\t\t\t\t\t\tdelete oldRow[item.oldColumn];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\titem.oldRow = item.row = row;\n\t\t\t\titem.oldColumn = item.col = column;\n\n\t\t\t\tthis.moveOverlappingItems(item, ignoreItems);\n\n\t\t\t\tif (!this.grid[row]) {\n\t\t\t\t\tthis.grid[row] = [];\n\t\t\t\t}\n\t\t\t\tthis.grid[row][column] = item;\n\n\t\t\t\tif (this.sparse && this.allItems.indexOf(item) === -1) {\n\t\t\t\t\tthis.allItems.push(item);\n\t\t\t\t}\n\n\t\t\t\tif (this.movingItem === item) {\n\t\t\t\t\tthis.floatItemUp(item);\n\t\t\t\t}\n\t\t\t\tthis.layoutChanged();\n\t\t\t};\n\n\t\t\t/**\n\t\t\t * Trade row and column if item1 with item2\n\t\t\t *\n\t\t\t * @param {Object} item1\n\t\t\t * @param {Object} item2\n\t\t\t */\n\t\t\tthis.swapItems = function(item1, item2) {\n\t\t\t\tthis.grid[item1.row][item1.col] = item2;\n\t\t\t\tthis.grid[item2.row][item2.col] = item1;\n\n\t\t\t\tvar item1Row = item1.row;\n\t\t\t\tvar item1Col = item1.col;\n\t\t\t\titem1.row = item2.row;\n\t\t\t\titem1.col = item2.col;\n\t\t\t\titem2.row = item1Row;\n\t\t\t\titem2.col = item1Col;\n\t\t\t};\n\n\t\t\t/**\n\t\t\t * Prevents items from being overlapped\n\t\t\t *\n\t\t\t * @param {Object} item The item that should remain\n\t\t\t * @param {Array} ignoreItems\n\t\t\t */\n\t\t\tthis.moveOverlappingItems = function(item, ignoreItems) {\n\t\t\t\t// don't move item, so ignore it\n\t\t\t\tif (!ignoreItems) {\n\t\t\t\t\tignoreItems = [item];\n\t\t\t\t} else if (ignoreItems.indexOf(item) === -1) {\n\t\t\t\t\tignoreItems = ignoreItems.slice(0);\n\t\t\t\t\tignoreItems.push(item);\n\t\t\t\t}\n\n\t\t\t\t// get the items in the space occupied by the item's coordinates\n\t\t\t\tvar overlappingItems = this.getItems(\n\t\t\t\t\titem.row,\n\t\t\t\t\titem.col,\n\t\t\t\t\titem.sizeX,\n\t\t\t\t\titem.sizeY,\n\t\t\t\t\tignoreItems\n\t\t\t\t);\n\t\t\t\tthis.moveItemsDown(overlappingItems, item.row + item.sizeY, ignoreItems);\n\t\t\t};\n\n\t\t\t/**\n\t\t\t * Moves an array of items to a specified row\n\t\t\t *\n\t\t\t * @param {Array} items The items to move\n\t\t\t * @param {Number} newRow The target row\n\t\t\t * @param {Array} ignoreItems\n\t\t\t */\n\t\t\tthis.moveItemsDown = function(items, newRow, ignoreItems) {\n\t\t\t\tif (!items || items.length === 0) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\titems.sort(function(a, b) {\n\t\t\t\t\treturn a.row - b.row;\n\t\t\t\t});\n\n\t\t\t\tignoreItems = ignoreItems ? ignoreItems.slice(0) : [];\n\t\t\t\tvar topRows = {},\n\t\t\t\t\titem, i, l;\n\n\t\t\t\t// calculate the top rows in each column\n\t\t\t\tfor (i = 0, l = items.length; i < l; ++i) {\n\t\t\t\t\titem = items[i];\n\t\t\t\t\tvar topRow = topRows[item.col];\n\t\t\t\t\tif (typeof topRow === 'undefined' || item.row < topRow) {\n\t\t\t\t\t\ttopRows[item.col] = item.row;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// move each item down from the top row in its column to the row\n\t\t\t\tfor (i = 0, l = items.length; i < l; ++i) {\n\t\t\t\t\titem = items[i];\n\t\t\t\t\tvar rowsToMove = newRow - topRows[item.col];\n\t\t\t\t\tthis.moveItemDown(item, item.row + rowsToMove, ignoreItems);\n\t\t\t\t\tignoreItems.push(item);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t/**\n\t\t\t * Moves an item down to a specified row\n\t\t\t *\n\t\t\t * @param {Object} item The item to move\n\t\t\t * @param {Number} newRow The target row\n\t\t\t * @param {Array} ignoreItems\n\t\t\t */\n\t\t\tthis.moveItemDown = function(item, newRow, ignoreItems) {\n\t\t\t\tif (item.row >= newRow) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\twhile (item.row < newRow) {\n\t\t\t\t\t++item.row;\n\t\t\t\t\tthis.moveOverlappingItems(item, ignoreItems);\n\t\t\t\t}\n\t\t\t\tthis.putItem(item, item.row, item.col, ignoreItems);\n\t\t\t};\n\n\t\t\t/**\n\t\t\t * Moves all items up as much as possible\n\t\t\t */\n\t\t\tthis.floatItemsUp = function() {\n\t\t\t\tif (this.floating === false) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tfor (var rowIndex = 0, l = this.grid.length; rowIndex < l; ++rowIndex) {\n\t\t\t\t\tvar columns = this.grid[rowIndex];\n\t\t\t\t\tif (!columns) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tfor (var colIndex = 0, len = columns.length; colIndex < len; ++colIndex) {\n\t\t\t\t\t\tvar item = columns[colIndex];\n\t\t\t\t\t\tif (item) {\n\t\t\t\t\t\t\tthis.floatItemUp(item);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t/**\n\t\t\t * Float an item up to the most suitable row\n\t\t\t *\n\t\t\t * @param {Object} item The item to move\n\t\t\t */\n\t\t\tthis.floatItemUp = function(item) {\n\t\t\t\tif (this.floating === false) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tvar colIndex = item.col,\n\t\t\t\t\tsizeY = item.sizeY,\n\t\t\t\t\tsizeX = item.sizeX,\n\t\t\t\t\tbestRow = null,\n\t\t\t\t\tbestColumn = null,\n\t\t\t\t\trowIndex = item.row - 1;\n\n\t\t\t\twhile (rowIndex > -1) {\n\t\t\t\t\tvar items = this.getItems(rowIndex, colIndex, sizeX, sizeY, item);\n\t\t\t\t\tif (items.length !== 0) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tbestRow = rowIndex;\n\t\t\t\t\tbestColumn = colIndex;\n\t\t\t\t\t--rowIndex;\n\t\t\t\t}\n\t\t\t\tif (bestRow !== null) {\n\t\t\t\t\tthis.putItem(item, bestRow, bestColumn);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t/**\n\t\t\t * Update gridsters height\n\t\t\t *\n\t\t\t * @param {Number} plus (Optional) Additional height to add\n\t\t\t */\n\t\t\tthis.updateHeight = function(plus) {\n\t\t\t\tvar maxHeight = this.minRows;\n\t\t\t\tplus = plus || 0;\n\t\t\t\tfor (var rowIndex = this.grid.length; rowIndex >= 0; --rowIndex) {\n\t\t\t\t\tvar columns = this.grid[rowIndex];\n\t\t\t\t\tif (!columns) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tfor (var colIndex = 0, len = columns.length; colIndex < len; ++colIndex) {\n\t\t\t\t\t\tif (columns[colIndex]) {\n\t\t\t\t\t\t\tmaxHeight = Math.max(maxHeight, rowIndex + plus + columns[colIndex].sizeY);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.gridHeight = this.maxRows - maxHeight > 0 ? Math.min(this.maxRows, maxHeight) : Math.max(this.maxRows, maxHeight);\n\t\t\t};\n\n\t\t\t/**\n\t\t\t * Returns the number of rows that will fit in given amount of pixels\n\t\t\t *\n\t\t\t * @param {Number} pixels\n\t\t\t * @param {Boolean} ceilOrFloor (Optional) Determines rounding method\n\t\t\t */\n\t\t\tthis.pixelsToRows = function(pixels, ceilOrFloor) {\n\t\t\t\tif (!this.outerMargin) {\n\t\t\t\t\tpixels += this.margins[0] / 2;\n\t\t\t\t}\n\n\t\t\t\tif (ceilOrFloor === true) {\n\t\t\t\t\treturn Math.ceil(pixels / this.curRowHeight);\n\t\t\t\t} else if (ceilOrFloor === false) {\n\t\t\t\t\treturn Math.floor(pixels / this.curRowHeight);\n\t\t\t\t}\n\n\t\t\t\treturn Math.round(pixels / this.curRowHeight);\n\t\t\t};\n\n\t\t\t/**\n\t\t\t * Returns the number of columns that will fit in a given amount of pixels\n\t\t\t *\n\t\t\t * @param {Number} pixels\n\t\t\t * @param {Boolean} ceilOrFloor (Optional) Determines rounding method\n\t\t\t * @returns {Number} The number of columns\n\t\t\t */\n\t\t\tthis.pixelsToColumns = function(pixels, ceilOrFloor) {\n\t\t\t\tif (!this.outerMargin) {\n\t\t\t\t\tpixels += this.margins[1] / 2;\n\t\t\t\t}\n\n\t\t\t\tif (ceilOrFloor === true) {\n\t\t\t\t\treturn Math.ceil(pixels / this.curColWidth);\n\t\t\t\t} else if (ceilOrFloor === false) {\n\t\t\t\t\treturn Math.floor(pixels / this.curColWidth);\n\t\t\t\t}\n\n\t\t\t\treturn Math.round(pixels / this.curColWidth);\n\t\t\t};\n\t\t}\n\t])\n\n\t.directive('gridsterPreview', function() {\n\t\treturn {\n\t\t\treplace: true,\n\t\t\tscope: true,\n\t\t\trequire: '^gridster',\n\t\t\ttemplate: '
',\n\t\t\tlink: function(scope, $el, attrs, gridster) {\n\n\t\t\t\t/**\n\t\t\t\t * @returns {Object} style object for preview element\n\t\t\t\t */\n\t\t\t\tscope.previewStyle = function() {\n\t\t\t\t\tif (!gridster.movingItem) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tdisplay: 'none'\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdisplay: 'block',\n\t\t\t\t\t\theight: (gridster.movingItem.sizeY * gridster.curRowHeight - gridster.margins[0]) + 'px',\n\t\t\t\t\t\twidth: (gridster.movingItem.sizeX * gridster.curColWidth - gridster.margins[1]) + 'px',\n\t\t\t\t\t\ttop: (gridster.movingItem.row * gridster.curRowHeight + (gridster.outerMargin ? gridster.margins[0] : 0)) + 'px',\n\t\t\t\t\t\tleft: (gridster.movingItem.col * gridster.curColWidth + (gridster.outerMargin ? gridster.margins[1] : 0)) + 'px'\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t}\n\t\t};\n\t})\n\n\t/**\n\t * The gridster directive\n\t *\n\t * @param {Function} $timeout\n\t * @param {Object} $window\n\t * @param {Object} $rootScope\n\t * @param {Function} gridsterDebounce\n\t */\n\t.directive('gridster', ['$timeout', '$window', '$rootScope', 'gridsterDebounce',\n\t\tfunction($timeout, $window, $rootScope, gridsterDebounce) {\n\t\t\treturn {\n\t\t\t\tscope: true,\n\t\t\t\trestrict: 'EAC',\n\t\t\t\tcontroller: 'GridsterCtrl',\n\t\t\t\tcontrollerAs: 'gridster',\n\t\t\t\tcompile: function($tplElem) {\n\n\t\t\t\t\t$tplElem.prepend('
');\n\n\t\t\t\t\treturn function(scope, $elem, attrs, gridster) {\n\t\t\t\t\t\tgridster.loaded = false;\n\n\t\t\t\t\t\tgridster.$element = $elem;\n\n\t\t\t\t\t\tscope.gridster = gridster;\n\n\t\t\t\t\t\t$elem.addClass('gridster');\n\n\t\t\t\t\t\tvar isVisible = function(ele) {\n\t\t\t\t\t\t\treturn ele.style.visibility !== 'hidden' && ele.style.display !== 'none';\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tfunction updateHeight() {\n\t\t\t\t\t\t\t$elem.css('height', (gridster.gridHeight * gridster.curRowHeight) + (gridster.outerMargin ? gridster.margins[0] : -gridster.margins[0]) + 'px');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tscope.$watch(function() {\n\t\t\t\t\t\t\treturn gridster.gridHeight;\n\t\t\t\t\t\t}, updateHeight);\n\n\t\t\t\t\t\tscope.$watch(function() {\n\t\t\t\t\t\t\treturn gridster.movingItem;\n\t\t\t\t\t\t}, function() {\n\t\t\t\t\t\t\tgridster.updateHeight(gridster.movingItem ? gridster.movingItem.sizeY : 0);\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tfunction refresh(config) {\n\t\t\t\t\t\t\tgridster.setOptions(config);\n\n\t\t\t\t\t\t\tif (!isVisible($elem[0])) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// resolve \"auto\" & \"match\" values\n\t\t\t\t\t\t\tif (gridster.width === 'auto') {\n\t\t\t\t\t\t\t\tgridster.curWidth = $elem[0].offsetWidth || parseInt($elem.css('width'), 10);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tgridster.curWidth = gridster.width;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (gridster.colWidth === 'auto') {\n\t\t\t\t\t\t\t\tgridster.curColWidth = (gridster.curWidth + (gridster.outerMargin ? -gridster.margins[1] : gridster.margins[1])) / gridster.columns;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tgridster.curColWidth = gridster.colWidth;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tgridster.curRowHeight = gridster.rowHeight;\n\t\t\t\t\t\t\tif (typeof gridster.rowHeight === 'string') {\n\t\t\t\t\t\t\t\tif (gridster.rowHeight === 'match') {\n\t\t\t\t\t\t\t\t\tgridster.curRowHeight = Math.round(gridster.curColWidth);\n\t\t\t\t\t\t\t\t} else if (gridster.rowHeight.indexOf('*') !== -1) {\n\t\t\t\t\t\t\t\t\tgridster.curRowHeight = Math.round(gridster.curColWidth * gridster.rowHeight.replace('*', '').replace(' ', ''));\n\t\t\t\t\t\t\t\t} else if (gridster.rowHeight.indexOf('/') !== -1) {\n\t\t\t\t\t\t\t\t\tgridster.curRowHeight = Math.round(gridster.curColWidth / gridster.rowHeight.replace('/', '').replace(' ', ''));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tgridster.isMobile = gridster.mobileModeEnabled && gridster.curWidth <= gridster.mobileBreakPoint;\n\n\t\t\t\t\t\t\t// loop through all items and reset their CSS\n\t\t\t\t\t\t\tfor (var rowIndex = 0, l = gridster.grid.length; rowIndex < l; ++rowIndex) {\n\t\t\t\t\t\t\t\tvar columns = gridster.grid[rowIndex];\n\t\t\t\t\t\t\t\tif (!columns) {\n\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tfor (var colIndex = 0, len = columns.length; colIndex < len; ++colIndex) {\n\t\t\t\t\t\t\t\t\tif (columns[colIndex]) {\n\t\t\t\t\t\t\t\t\t\tvar item = columns[colIndex];\n\t\t\t\t\t\t\t\t\t\titem.setElementPosition();\n\t\t\t\t\t\t\t\t\t\titem.setElementSizeY();\n\t\t\t\t\t\t\t\t\t\titem.setElementSizeX();\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tupdateHeight();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar optionsKey = attrs.gridster;\n\t\t\t\t\t\tif (optionsKey) {\n\t\t\t\t\t\t\tscope.$parent.$watch(optionsKey, function(newConfig) {\n\t\t\t\t\t\t\t\trefresh(newConfig);\n\t\t\t\t\t\t\t}, true);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\trefresh({});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tscope.$watch(function() {\n\t\t\t\t\t\t\treturn gridster.loaded;\n\t\t\t\t\t\t}, function() {\n\t\t\t\t\t\t\tif (gridster.loaded) {\n\t\t\t\t\t\t\t\t$elem.addClass('gridster-loaded');\n\t\t\t\t\t\t\t\t$rootScope.$broadcast('gridster-loaded', gridster);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t$elem.removeClass('gridster-loaded');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tscope.$watch(function() {\n\t\t\t\t\t\t\treturn gridster.isMobile;\n\t\t\t\t\t\t}, function() {\n\t\t\t\t\t\t\tif (gridster.isMobile) {\n\t\t\t\t\t\t\t\t$elem.addClass('gridster-mobile').removeClass('gridster-desktop');\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t$elem.removeClass('gridster-mobile').addClass('gridster-desktop');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t$rootScope.$broadcast('gridster-mobile-changed', gridster);\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tscope.$watch(function() {\n\t\t\t\t\t\t\treturn gridster.draggable;\n\t\t\t\t\t\t}, function() {\n\t\t\t\t\t\t\t$rootScope.$broadcast('gridster-draggable-changed', gridster);\n\t\t\t\t\t\t}, true);\n\n\t\t\t\t\t\tscope.$watch(function() {\n\t\t\t\t\t\t\treturn gridster.resizable;\n\t\t\t\t\t\t}, function() {\n\t\t\t\t\t\t\t$rootScope.$broadcast('gridster-resizable-changed', gridster);\n\t\t\t\t\t\t}, true);\n\n\t\t\t\t\t\tvar prevWidth = $elem[0].offsetWidth || parseInt($elem.css('width'), 10);\n\n\t\t\t\t\t\tvar resize = function() {\n\t\t\t\t\t\t\tvar width = $elem[0].offsetWidth || parseInt($elem.css('width'), 10);\n\n\t\t\t\t\t\t\tif (!width || width === prevWidth || gridster.movingItem) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tprevWidth = width;\n\n\t\t\t\t\t\t\tif (gridster.loaded) {\n\t\t\t\t\t\t\t\t$elem.removeClass('gridster-loaded');\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\trefresh();\n\n\t\t\t\t\t\t\tif (gridster.loaded) {\n\t\t\t\t\t\t\t\t$elem.addClass('gridster-loaded');\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t$rootScope.$broadcast('gridster-resized', [width, $elem[0].offsetHeight], gridster);\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\t// track element width changes any way we can\n\t\t\t\t\t\tvar onResize = gridsterDebounce(function onResize() {\n\t\t\t\t\t\t\tresize();\n\t\t\t\t\t\t\t$timeout(function() {\n\t\t\t\t\t\t\t\tscope.$apply();\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}, 100);\n\n\t\t\t\t\t\tscope.$watch(function() {\n\t\t\t\t\t\t\treturn isVisible($elem[0]);\n\t\t\t\t\t\t}, onResize);\n\n\t\t\t\t\t\t// see https://github.com/sdecima/javascript-detect-element-resize\n\t\t\t\t\t\tif (typeof window.addResizeListener === 'function') {\n\t\t\t\t\t\t\twindow.addResizeListener($elem[0], onResize);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tscope.$watch(function() {\n\t\t\t\t\t\t\t\treturn $elem[0].offsetWidth || parseInt($elem.css('width'), 10);\n\t\t\t\t\t\t\t}, resize);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvar $win = angular.element($window);\n\t\t\t\t\t\t$win.on('resize', onResize);\n\n\t\t\t\t\t\t// be sure to cleanup\n\t\t\t\t\t\tscope.$on('$destroy', function() {\n\t\t\t\t\t\t\tgridster.destroy();\n\t\t\t\t\t\t\t$win.off('resize', onResize);\n\t\t\t\t\t\t\tif (typeof window.removeResizeListener === 'function') {\n\t\t\t\t\t\t\t\twindow.removeResizeListener($elem[0], onResize);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\t// allow a little time to place items before floating up\n\t\t\t\t\t\t$timeout(function() {\n\t\t\t\t\t\t\tscope.$watch('gridster.floating', function() {\n\t\t\t\t\t\t\t\tgridster.floatItemsUp();\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tgridster.loaded = true;\n\t\t\t\t\t\t}, 100);\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t])\n\n\t.controller('GridsterItemCtrl', function() {\n\t\tthis.$element = null;\n\t\tthis.gridster = null;\n\t\tthis.row = null;\n\t\tthis.col = null;\n\t\tthis.sizeX = null;\n\t\tthis.sizeY = null;\n\t\tthis.minSizeX = 0;\n\t\tthis.minSizeY = 0;\n\t\tthis.maxSizeX = null;\n\t\tthis.maxSizeY = null;\n\n\t\tthis.init = function($element, gridster) {\n\t\t\tthis.$element = $element;\n\t\t\tthis.gridster = gridster;\n\t\t\tthis.sizeX = gridster.defaultSizeX;\n\t\t\tthis.sizeY = gridster.defaultSizeY;\n\t\t};\n\n\t\tthis.destroy = function() {\n\t\t\t// set these to null to avoid the possibility of circular references\n\t\t\tthis.gridster = null;\n\t\t\tthis.$element = null;\n\t\t};\n\n\t\t/**\n\t\t * Returns the items most important attributes\n\t\t */\n\t\tthis.toJSON = function() {\n\t\t\treturn {\n\t\t\t\trow: this.row,\n\t\t\t\tcol: this.col,\n\t\t\t\tsizeY: this.sizeY,\n\t\t\t\tsizeX: this.sizeX\n\t\t\t};\n\t\t};\n\n\t\tthis.isMoving = function() {\n\t\t\treturn this.gridster.movingItem === this;\n\t\t};\n\n\t\t/**\n\t\t * Set the items position\n\t\t *\n\t\t * @param {Number} row\n\t\t * @param {Number} column\n\t\t */\n\t\tthis.setPosition = function(row, column) {\n\t\t\tthis.gridster.putItem(this, row, column);\n\n\t\t\tif (!this.isMoving()) {\n\t\t\t\tthis.setElementPosition();\n\t\t\t}\n\t\t};\n\n\t\t/**\n\t\t * Sets a specified size property\n\t\t *\n\t\t * @param {String} key Can be either \"x\" or \"y\"\n\t\t * @param {Number} value The size amount\n\t\t * @param {Boolean} preventMove\n\t\t */\n\t\tthis.setSize = function(key, value, preventMove) {\n\t\t\tkey = key.toUpperCase();\n\t\t\tvar camelCase = 'size' + key,\n\t\t\t\ttitleCase = 'Size' + key;\n\t\t\tif (value === '') {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvalue = parseInt(value, 10);\n\t\t\tif (isNaN(value) || value === 0) {\n\t\t\t\tvalue = this.gridster['default' + titleCase];\n\t\t\t}\n\t\t\tvar max = key === 'X' ? this.gridster.columns : this.gridster.maxRows;\n\t\t\tif (this['max' + titleCase]) {\n\t\t\t\tmax = Math.min(this['max' + titleCase], max);\n\t\t\t}\n\t\t\tif (this.gridster['max' + titleCase]) {\n\t\t\t\tmax = Math.min(this.gridster['max' + titleCase], max);\n\t\t\t}\n\t\t\tif (key === 'X' && this.cols) {\n\t\t\t\tmax -= this.cols;\n\t\t\t} else if (key === 'Y' && this.rows) {\n\t\t\t\tmax -= this.rows;\n\t\t\t}\n\n\t\t\tvar min = 0;\n\t\t\tif (this['min' + titleCase]) {\n\t\t\t\tmin = Math.max(this['min' + titleCase], min);\n\t\t\t}\n\t\t\tif (this.gridster['min' + titleCase]) {\n\t\t\t\tmin = Math.max(this.gridster['min' + titleCase], min);\n\t\t\t}\n\n\t\t\tvalue = Math.max(Math.min(value, max), min);\n\n\t\t\tvar changed = (this[camelCase] !== value || (this['old' + titleCase] && this['old' + titleCase] !== value));\n\t\t\tthis['old' + titleCase] = this[camelCase] = value;\n\n\t\t\tif (!this.isMoving()) {\n\t\t\t\tthis['setElement' + titleCase]();\n\t\t\t}\n\t\t\tif (!preventMove && changed) {\n\t\t\t\tthis.gridster.moveOverlappingItems(this);\n\t\t\t\tthis.gridster.layoutChanged();\n\t\t\t}\n\n\t\t\treturn changed;\n\t\t};\n\n\t\t/**\n\t\t * Sets the items sizeY property\n\t\t *\n\t\t * @param {Number} rows\n\t\t * @param {Boolean} preventMove\n\t\t */\n\t\tthis.setSizeY = function(rows, preventMove) {\n\t\t\treturn this.setSize('Y', rows, preventMove);\n\t\t};\n\n\t\t/**\n\t\t * Sets the items sizeX property\n\t\t *\n\t\t * @param {Number} columns\n\t\t * @param {Boolean} preventMove\n\t\t */\n\t\tthis.setSizeX = function(columns, preventMove) {\n\t\t\treturn this.setSize('X', columns, preventMove);\n\t\t};\n\n\t\t/**\n\t\t * Sets an elements position on the page\n\t\t */\n\t\tthis.setElementPosition = function() {\n\t\t\tif (this.gridster.isMobile) {\n\t\t\t\tthis.$element.css({\n\t\t\t\t\tmarginLeft: this.gridster.margins[0] + 'px',\n\t\t\t\t\tmarginRight: this.gridster.margins[0] + 'px',\n\t\t\t\t\tmarginTop: this.gridster.margins[1] + 'px',\n\t\t\t\t\tmarginBottom: this.gridster.margins[1] + 'px',\n\t\t\t\t\ttop: '',\n\t\t\t\t\tleft: ''\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthis.$element.css({\n\t\t\t\t\tmargin: 0,\n\t\t\t\t\ttop: (this.row * this.gridster.curRowHeight + (this.gridster.outerMargin ? this.gridster.margins[0] : 0)) + 'px',\n\t\t\t\t\tleft: (this.col * this.gridster.curColWidth + (this.gridster.outerMargin ? this.gridster.margins[1] : 0)) + 'px'\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\n\t\t/**\n\t\t * Sets an elements height\n\t\t */\n\t\tthis.setElementSizeY = function() {\n\t\t\tif (this.gridster.isMobile && !this.gridster.saveGridItemCalculatedHeightInMobile) {\n\t\t\t\tthis.$element.css('height', '');\n\t\t\t} else {\n\t\t\t\tthis.$element.css('height', (this.sizeY * this.gridster.curRowHeight - this.gridster.margins[0]) + 'px');\n\t\t\t}\n\t\t};\n\n\t\t/**\n\t\t * Sets an elements width\n\t\t */\n\t\tthis.setElementSizeX = function() {\n\t\t\tif (this.gridster.isMobile) {\n\t\t\t\tthis.$element.css('width', '');\n\t\t\t} else {\n\t\t\t\tthis.$element.css('width', (this.sizeX * this.gridster.curColWidth - this.gridster.margins[1]) + 'px');\n\t\t\t}\n\t\t};\n\n\t\t/**\n\t\t * Gets an element's width\n\t\t */\n\t\tthis.getElementSizeX = function() {\n\t\t\treturn (this.sizeX * this.gridster.curColWidth - this.gridster.margins[1]);\n\t\t};\n\n\t\t/**\n\t\t * Gets an element's height\n\t\t */\n\t\tthis.getElementSizeY = function() {\n\t\t\treturn (this.sizeY * this.gridster.curRowHeight - this.gridster.margins[0]);\n\t\t};\n\n\t})\n\n\t.factory('GridsterTouch', [function() {\n\t\treturn function GridsterTouch(target, startEvent, moveEvent, endEvent) {\n\t\t\tvar lastXYById = {};\n\n\t\t\t// Opera doesn't have Object.keys so we use this wrapper\n\t\t\tvar numberOfKeys = function(theObject) {\n\t\t\t\tif (Object.keys) {\n\t\t\t\t\treturn Object.keys(theObject).length;\n\t\t\t\t}\n\n\t\t\t\tvar n = 0,\n\t\t\t\t\tkey;\n\t\t\t\tfor (key in theObject) {\n\t\t\t\t\t++n;\n\t\t\t\t}\n\n\t\t\t\treturn n;\n\t\t\t};\n\n\t\t\t// this calculates the delta needed to convert pageX/Y to offsetX/Y because offsetX/Y don't exist in the TouchEvent object or in Firefox's MouseEvent object\n\t\t\tvar computeDocumentToElementDelta = function(theElement) {\n\t\t\t\tvar elementLeft = 0;\n\t\t\t\tvar elementTop = 0;\n\t\t\t\tvar oldIEUserAgent = navigator.userAgent.match(/\\bMSIE\\b/);\n\n\t\t\t\tfor (var offsetElement = theElement; offsetElement != null; offsetElement = offsetElement.offsetParent) {\n\t\t\t\t\t// the following is a major hack for versions of IE less than 8 to avoid an apparent problem on the IEBlog with double-counting the offsets\n\t\t\t\t\t// this may not be a general solution to IE7's problem with offsetLeft/offsetParent\n\t\t\t\t\tif (oldIEUserAgent &&\n\t\t\t\t\t\t(!document.documentMode || document.documentMode < 8) &&\n\t\t\t\t\t\toffsetElement.currentStyle.position === 'relative' && offsetElement.offsetParent && offsetElement.offsetParent.currentStyle.position === 'relative' && offsetElement.offsetLeft === offsetElement.offsetParent.offsetLeft) {\n\t\t\t\t\t\t// add only the top\n\t\t\t\t\t\telementTop += offsetElement.offsetTop;\n\t\t\t\t\t} else {\n\t\t\t\t\t\telementLeft += offsetElement.offsetLeft;\n\t\t\t\t\t\telementTop += offsetElement.offsetTop;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\tx: elementLeft,\n\t\t\t\t\ty: elementTop\n\t\t\t\t};\n\t\t\t};\n\n\t\t\t// cache the delta from the document to our event target (reinitialized each mousedown/MSPointerDown/touchstart)\n\t\t\tvar documentToTargetDelta = computeDocumentToElementDelta(target);\n\t\t\tvar useSetReleaseCapture = false;\n\n\t\t\t// common event handler for the mouse/pointer/touch models and their down/start, move, up/end, and cancel events\n\t\t\tvar doEvent = function(theEvtObj) {\n\n\t\t\t\tif (theEvtObj.type === 'mousemove' && numberOfKeys(lastXYById) === 0) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar prevent = true;\n\n\t\t\t\tvar pointerList = theEvtObj.changedTouches ? theEvtObj.changedTouches : [theEvtObj];\n\t\t\t\tfor (var i = 0; i < pointerList.length; ++i) {\n\t\t\t\t\tvar pointerObj = pointerList[i];\n\t\t\t\t\tvar pointerId = (typeof pointerObj.identifier !== 'undefined') ? pointerObj.identifier : (typeof pointerObj.pointerId !== 'undefined') ? pointerObj.pointerId : 1;\n\n\t\t\t\t\t// use the pageX/Y coordinates to compute target-relative coordinates when we have them (in ie < 9, we need to do a little work to put them there)\n\t\t\t\t\tif (typeof pointerObj.pageX === 'undefined') {\n\t\t\t\t\t\t// initialize assuming our source element is our target\n\t\t\t\t\t\tpointerObj.pageX = pointerObj.offsetX + documentToTargetDelta.x;\n\t\t\t\t\t\tpointerObj.pageY = pointerObj.offsetY + documentToTargetDelta.y;\n\n\t\t\t\t\t\tif (pointerObj.srcElement.offsetParent === target && document.documentMode && document.documentMode === 8 && pointerObj.type === 'mousedown') {\n\t\t\t\t\t\t\t// source element is a child piece of VML, we're in IE8, and we've not called setCapture yet - add the origin of the source element\n\t\t\t\t\t\t\tpointerObj.pageX += pointerObj.srcElement.offsetLeft;\n\t\t\t\t\t\t\tpointerObj.pageY += pointerObj.srcElement.offsetTop;\n\t\t\t\t\t\t} else if (pointerObj.srcElement !== target && !document.documentMode || document.documentMode < 8) {\n\t\t\t\t\t\t\t// source element isn't the target (most likely it's a child piece of VML) and we're in a version of IE before IE8 -\n\t\t\t\t\t\t\t// the offsetX/Y values are unpredictable so use the clientX/Y values and adjust by the scroll offsets of its parents\n\t\t\t\t\t\t\t// to get the document-relative coordinates (the same as pageX/Y)\n\t\t\t\t\t\t\tvar sx = -2,\n\t\t\t\t\t\t\t\tsy = -2; // adjust for old IE's 2-pixel border\n\t\t\t\t\t\t\tfor (var scrollElement = pointerObj.srcElement; scrollElement !== null; scrollElement = scrollElement.parentNode) {\n\t\t\t\t\t\t\t\tsx += scrollElement.scrollLeft ? scrollElement.scrollLeft : 0;\n\t\t\t\t\t\t\t\tsy += scrollElement.scrollTop ? scrollElement.scrollTop : 0;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tpointerObj.pageX = pointerObj.clientX + sx;\n\t\t\t\t\t\t\tpointerObj.pageY = pointerObj.clientY + sy;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\n\t\t\t\t\tvar pageX = pointerObj.pageX;\n\t\t\t\t\tvar pageY = pointerObj.pageY;\n\n\t\t\t\t\tif (theEvtObj.type.match(/(start|down)$/i)) {\n\t\t\t\t\t\t// clause for processing MSPointerDown, touchstart, and mousedown\n\n\t\t\t\t\t\t// refresh the document-to-target delta on start in case the target has moved relative to document\n\t\t\t\t\t\tdocumentToTargetDelta = computeDocumentToElementDelta(target);\n\n\t\t\t\t\t\t// protect against failing to get an up or end on this pointerId\n\t\t\t\t\t\tif (lastXYById[pointerId]) {\n\t\t\t\t\t\t\tif (endEvent) {\n\t\t\t\t\t\t\t\tendEvent({\n\t\t\t\t\t\t\t\t\ttarget: theEvtObj.target,\n\t\t\t\t\t\t\t\t\twhich: theEvtObj.which,\n\t\t\t\t\t\t\t\t\tpointerId: pointerId,\n\t\t\t\t\t\t\t\t\tpageX: pageX,\n\t\t\t\t\t\t\t\t\tpageY: pageY\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tdelete lastXYById[pointerId];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (startEvent) {\n\t\t\t\t\t\t\tif (prevent) {\n\t\t\t\t\t\t\t\tprevent = startEvent({\n\t\t\t\t\t\t\t\t\ttarget: theEvtObj.target,\n\t\t\t\t\t\t\t\t\twhich: theEvtObj.which,\n\t\t\t\t\t\t\t\t\tpointerId: pointerId,\n\t\t\t\t\t\t\t\t\tpageX: pageX,\n\t\t\t\t\t\t\t\t\tpageY: pageY\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// init last page positions for this pointer\n\t\t\t\t\t\tlastXYById[pointerId] = {\n\t\t\t\t\t\t\tx: pageX,\n\t\t\t\t\t\t\ty: pageY\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\t// IE pointer model\n\t\t\t\t\t\tif (target.msSetPointerCapture && prevent) {\n\t\t\t\t\t\t\ttarget.msSetPointerCapture(pointerId);\n\t\t\t\t\t\t} else if (theEvtObj.type === 'mousedown' && numberOfKeys(lastXYById) === 1) {\n\t\t\t\t\t\t\tif (useSetReleaseCapture) {\n\t\t\t\t\t\t\t\ttarget.setCapture(true);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tdocument.addEventListener('mousemove', doEvent, false);\n\t\t\t\t\t\t\t\tdocument.addEventListener('mouseup', doEvent, false);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (theEvtObj.type.match(/move$/i)) {\n\t\t\t\t\t\t// clause handles mousemove, MSPointerMove, and touchmove\n\n\t\t\t\t\t\tif (lastXYById[pointerId] && !(lastXYById[pointerId].x === pageX && lastXYById[pointerId].y === pageY)) {\n\t\t\t\t\t\t\t// only extend if the pointer is down and it's not the same as the last point\n\n\t\t\t\t\t\t\tif (moveEvent && prevent) {\n\t\t\t\t\t\t\t\tprevent = moveEvent({\n\t\t\t\t\t\t\t\t\ttarget: theEvtObj.target,\n\t\t\t\t\t\t\t\t\twhich: theEvtObj.which,\n\t\t\t\t\t\t\t\t\tpointerId: pointerId,\n\t\t\t\t\t\t\t\t\tpageX: pageX,\n\t\t\t\t\t\t\t\t\tpageY: pageY\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// update last page positions for this pointer\n\t\t\t\t\t\t\tlastXYById[pointerId].x = pageX;\n\t\t\t\t\t\t\tlastXYById[pointerId].y = pageY;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (lastXYById[pointerId] && theEvtObj.type.match(/(up|end|cancel)$/i)) {\n\t\t\t\t\t\t// clause handles up/end/cancel\n\n\t\t\t\t\t\tif (endEvent && prevent) {\n\t\t\t\t\t\t\tprevent = endEvent({\n\t\t\t\t\t\t\t\ttarget: theEvtObj.target,\n\t\t\t\t\t\t\t\twhich: theEvtObj.which,\n\t\t\t\t\t\t\t\tpointerId: pointerId,\n\t\t\t\t\t\t\t\tpageX: pageX,\n\t\t\t\t\t\t\t\tpageY: pageY\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// delete last page positions for this pointer\n\t\t\t\t\t\tdelete lastXYById[pointerId];\n\n\t\t\t\t\t\t// in the Microsoft pointer model, release the capture for this pointer\n\t\t\t\t\t\t// in the mouse model, release the capture or remove document-level event handlers if there are no down points\n\t\t\t\t\t\t// nothing is required for the iOS touch model because capture is implied on touchstart\n\t\t\t\t\t\tif (target.msReleasePointerCapture) {\n\t\t\t\t\t\t\ttarget.msReleasePointerCapture(pointerId);\n\t\t\t\t\t\t} else if (theEvtObj.type === 'mouseup' && numberOfKeys(lastXYById) === 0) {\n\t\t\t\t\t\t\tif (useSetReleaseCapture) {\n\t\t\t\t\t\t\t\ttarget.releaseCapture();\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tdocument.removeEventListener('mousemove', doEvent, false);\n\t\t\t\t\t\t\t\tdocument.removeEventListener('mouseup', doEvent, false);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (prevent) {\n\t\t\t\t\tif (theEvtObj.preventDefault) {\n\t\t\t\t\t\ttheEvtObj.preventDefault();\n\t\t\t\t\t}\n\n\t\t\t\t\tif (theEvtObj.preventManipulation) {\n\t\t\t\t\t\ttheEvtObj.preventManipulation();\n\t\t\t\t\t}\n\n\t\t\t\t\tif (theEvtObj.preventMouseEvent) {\n\t\t\t\t\t\ttheEvtObj.preventMouseEvent();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t// saving the settings for contentZooming and touchaction before activation\n\t\t\tvar contentZooming, msTouchAction;\n\n\t\t\tthis.enable = function() {\n\n\t\t\t\tif (window.navigator.msPointerEnabled) {\n\t\t\t\t\t// Microsoft pointer model\n\t\t\t\t\ttarget.addEventListener('MSPointerDown', doEvent, false);\n\t\t\t\t\ttarget.addEventListener('MSPointerMove', doEvent, false);\n\t\t\t\t\ttarget.addEventListener('MSPointerUp', doEvent, false);\n\t\t\t\t\ttarget.addEventListener('MSPointerCancel', doEvent, false);\n\n\t\t\t\t\t// css way to prevent panning in our target area\n\t\t\t\t\tif (typeof target.style.msContentZooming !== 'undefined') {\n\t\t\t\t\t\tcontentZooming = target.style.msContentZooming;\n\t\t\t\t\t\ttarget.style.msContentZooming = 'none';\n\t\t\t\t\t}\n\n\t\t\t\t\t// new in Windows Consumer Preview: css way to prevent all built-in touch actions on our target\n\t\t\t\t\t// without this, you cannot touch draw on the element because IE will intercept the touch events\n\t\t\t\t\tif (typeof target.style.msTouchAction !== 'undefined') {\n\t\t\t\t\t\tmsTouchAction = target.style.msTouchAction;\n\t\t\t\t\t\ttarget.style.msTouchAction = 'none';\n\t\t\t\t\t}\n\t\t\t\t} else if (target.addEventListener) {\n\t\t\t\t\t// iOS touch model\n\t\t\t\t\ttarget.addEventListener('touchstart', doEvent, false);\n\t\t\t\t\ttarget.addEventListener('touchmove', doEvent, false);\n\t\t\t\t\ttarget.addEventListener('touchend', doEvent, false);\n\t\t\t\t\ttarget.addEventListener('touchcancel', doEvent, false);\n\n\t\t\t\t\t// mouse model\n\t\t\t\t\ttarget.addEventListener('mousedown', doEvent, false);\n\n\t\t\t\t\t// mouse model with capture\n\t\t\t\t\t// rejecting gecko because, unlike ie, firefox does not send events to target when the mouse is outside target\n\t\t\t\t\tif (target.setCapture && !window.navigator.userAgent.match(/\\bGecko\\b/)) {\n\t\t\t\t\t\tuseSetReleaseCapture = true;\n\n\t\t\t\t\t\ttarget.addEventListener('mousemove', doEvent, false);\n\t\t\t\t\t\ttarget.addEventListener('mouseup', doEvent, false);\n\t\t\t\t\t}\n\t\t\t\t} else if (target.attachEvent && target.setCapture) {\n\t\t\t\t\t// legacy IE mode - mouse with capture\n\t\t\t\t\tuseSetReleaseCapture = true;\n\t\t\t\t\ttarget.attachEvent('onmousedown', function() {\n\t\t\t\t\t\tdoEvent(window.event);\n\t\t\t\t\t\twindow.event.returnValue = false;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t});\n\t\t\t\t\ttarget.attachEvent('onmousemove', function() {\n\t\t\t\t\t\tdoEvent(window.event);\n\t\t\t\t\t\twindow.event.returnValue = false;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t});\n\t\t\t\t\ttarget.attachEvent('onmouseup', function() {\n\t\t\t\t\t\tdoEvent(window.event);\n\t\t\t\t\t\twindow.event.returnValue = false;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tthis.disable = function() {\n\t\t\t\tif (window.navigator.msPointerEnabled) {\n\t\t\t\t\t// Microsoft pointer model\n\t\t\t\t\ttarget.removeEventListener('MSPointerDown', doEvent, false);\n\t\t\t\t\ttarget.removeEventListener('MSPointerMove', doEvent, false);\n\t\t\t\t\ttarget.removeEventListener('MSPointerUp', doEvent, false);\n\t\t\t\t\ttarget.removeEventListener('MSPointerCancel', doEvent, false);\n\n\t\t\t\t\t// reset zooming to saved value\n\t\t\t\t\tif (contentZooming) {\n\t\t\t\t\t\ttarget.style.msContentZooming = contentZooming;\n\t\t\t\t\t}\n\n\t\t\t\t\t// reset touch action setting\n\t\t\t\t\tif (msTouchAction) {\n\t\t\t\t\t\ttarget.style.msTouchAction = msTouchAction;\n\t\t\t\t\t}\n\t\t\t\t} else if (target.removeEventListener) {\n\t\t\t\t\t// iOS touch model\n\t\t\t\t\ttarget.removeEventListener('touchstart', doEvent, false);\n\t\t\t\t\ttarget.removeEventListener('touchmove', doEvent, false);\n\t\t\t\t\ttarget.removeEventListener('touchend', doEvent, false);\n\t\t\t\t\ttarget.removeEventListener('touchcancel', doEvent, false);\n\n\t\t\t\t\t// mouse model\n\t\t\t\t\ttarget.removeEventListener('mousedown', doEvent, false);\n\n\t\t\t\t\t// mouse model with capture\n\t\t\t\t\t// rejecting gecko because, unlike ie, firefox does not send events to target when the mouse is outside target\n\t\t\t\t\tif (target.setCapture && !window.navigator.userAgent.match(/\\bGecko\\b/)) {\n\t\t\t\t\t\tuseSetReleaseCapture = true;\n\n\t\t\t\t\t\ttarget.removeEventListener('mousemove', doEvent, false);\n\t\t\t\t\t\ttarget.removeEventListener('mouseup', doEvent, false);\n\t\t\t\t\t}\n\t\t\t\t} else if (target.detachEvent && target.setCapture) {\n\t\t\t\t\t// legacy IE mode - mouse with capture\n\t\t\t\t\tuseSetReleaseCapture = true;\n\t\t\t\t\ttarget.detachEvent('onmousedown');\n\t\t\t\t\ttarget.detachEvent('onmousemove');\n\t\t\t\t\ttarget.detachEvent('onmouseup');\n\t\t\t\t}\n\t\t\t};\n\n\t\t\treturn this;\n\t\t};\n\t}])\n\n\t.factory('GridsterDraggable', ['$document', '$window', 'GridsterTouch',\n\t\tfunction($document, $window, GridsterTouch) {\n\t\t\tfunction GridsterDraggable($el, scope, gridster, item, itemOptions) {\n\n\t\t\t\tvar elmX, elmY, elmW, elmH,\n\n\t\t\t\t\tmouseX = 0,\n\t\t\t\t\tmouseY = 0,\n\t\t\t\t\tlastMouseX = 0,\n\t\t\t\t\tlastMouseY = 0,\n\t\t\t\t\tmOffX = 0,\n\t\t\t\t\tmOffY = 0,\n\n\t\t\t\t\tminTop = 0,\n\t\t\t\t\tminLeft = 0,\n\t\t\t\t\trealdocument = $document[0];\n\n\t\t\t\tvar originalCol, originalRow;\n\t\t\t\tvar inputTags = ['select', 'option', 'input', 'textarea', 'button'];\n\n\t\t\t\tfunction dragStart(event) {\n\t\t\t\t\t$el.addClass('gridster-item-moving');\n\t\t\t\t\tgridster.movingItem = item;\n\n\t\t\t\t\tgridster.updateHeight(item.sizeY);\n\t\t\t\t\tscope.$apply(function() {\n\t\t\t\t\t\tif (gridster.draggable && gridster.draggable.start) {\n\t\t\t\t\t\t\tgridster.draggable.start(event, $el, itemOptions, item);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tfunction drag(event) {\n\t\t\t\t\tvar oldRow = item.row,\n\t\t\t\t\t\toldCol = item.col,\n\t\t\t\t\t\thasCallback = gridster.draggable && gridster.draggable.drag,\n\t\t\t\t\t\tscrollSensitivity = gridster.draggable.scrollSensitivity,\n\t\t\t\t\t\tscrollSpeed = gridster.draggable.scrollSpeed;\n\n\t\t\t\t\tvar row = Math.min(gridster.pixelsToRows(elmY), gridster.maxRows - 1);\n\t\t\t\t\tvar col = Math.min(gridster.pixelsToColumns(elmX), gridster.columns - 1);\n\n\t\t\t\t\tvar itemsInTheWay = gridster.getItems(row, col, item.sizeX, item.sizeY, item);\n\t\t\t\t\tvar hasItemsInTheWay = itemsInTheWay.length !== 0;\n\n\t\t\t\t\tif (gridster.swapping === true && hasItemsInTheWay) {\n\t\t\t\t\t\tvar boundingBoxItem = gridster.getBoundingBox(itemsInTheWay),\n\t\t\t\t\t\t\tsameSize = boundingBoxItem.sizeX === item.sizeX && boundingBoxItem.sizeY === item.sizeY,\n\t\t\t\t\t\t\tsameRow = boundingBoxItem.row === oldRow,\n\t\t\t\t\t\t\tsameCol = boundingBoxItem.col === oldCol,\n\t\t\t\t\t\t\tsamePosition = boundingBoxItem.row === row && boundingBoxItem.col === col,\n\t\t\t\t\t\t\tinline = sameRow || sameCol;\n\n\t\t\t\t\t\tif (sameSize && itemsInTheWay.length === 1) {\n\t\t\t\t\t\t\tif (samePosition) {\n\t\t\t\t\t\t\t\tgridster.swapItems(item, itemsInTheWay[0]);\n\t\t\t\t\t\t\t} else if (inline) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (boundingBoxItem.sizeX <= item.sizeX && boundingBoxItem.sizeY <= item.sizeY && inline) {\n\t\t\t\t\t\t\tvar emptyRow = item.row <= row ? item.row : row + item.sizeY,\n\t\t\t\t\t\t\t\temptyCol = item.col <= col ? item.col : col + item.sizeX,\n\t\t\t\t\t\t\t\trowOffset = emptyRow - boundingBoxItem.row,\n\t\t\t\t\t\t\t\tcolOffset = emptyCol - boundingBoxItem.col;\n\n\t\t\t\t\t\t\tfor (var i = 0, l = itemsInTheWay.length; i < l; ++i) {\n\t\t\t\t\t\t\t\tvar itemInTheWay = itemsInTheWay[i];\n\n\t\t\t\t\t\t\t\tvar itemsInFreeSpace = gridster.getItems(\n\t\t\t\t\t\t\t\t\titemInTheWay.row + rowOffset,\n\t\t\t\t\t\t\t\t\titemInTheWay.col + colOffset,\n\t\t\t\t\t\t\t\t\titemInTheWay.sizeX,\n\t\t\t\t\t\t\t\t\titemInTheWay.sizeY,\n\t\t\t\t\t\t\t\t\titem\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\tif (itemsInFreeSpace.length === 0) {\n\t\t\t\t\t\t\t\t\tgridster.putItem(itemInTheWay, itemInTheWay.row + rowOffset, itemInTheWay.col + colOffset);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (gridster.pushing !== false || !hasItemsInTheWay) {\n\t\t\t\t\t\titem.row = row;\n\t\t\t\t\t\titem.col = col;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (event.pageY - realdocument.body.scrollTop < scrollSensitivity) {\n\t\t\t\t\t\trealdocument.body.scrollTop = realdocument.body.scrollTop - scrollSpeed;\n\t\t\t\t\t} else if ($window.innerHeight - (event.pageY - realdocument.body.scrollTop) < scrollSensitivity) {\n\t\t\t\t\t\trealdocument.body.scrollTop = realdocument.body.scrollTop + scrollSpeed;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (event.pageX - realdocument.body.scrollLeft < scrollSensitivity) {\n\t\t\t\t\t\trealdocument.body.scrollLeft = realdocument.body.scrollLeft - scrollSpeed;\n\t\t\t\t\t} else if ($window.innerWidth - (event.pageX - realdocument.body.scrollLeft) < scrollSensitivity) {\n\t\t\t\t\t\trealdocument.body.scrollLeft = realdocument.body.scrollLeft + scrollSpeed;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (hasCallback || oldRow !== item.row || oldCol !== item.col) {\n\t\t\t\t\t\tscope.$apply(function() {\n\t\t\t\t\t\t\tif (hasCallback) {\n\t\t\t\t\t\t\t\tgridster.draggable.drag(event, $el, itemOptions, item);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tfunction dragStop(event) {\n\t\t\t\t\t$el.removeClass('gridster-item-moving');\n\t\t\t\t\tvar row = Math.min(gridster.pixelsToRows(elmY), gridster.maxRows - 1);\n\t\t\t\t\tvar col = Math.min(gridster.pixelsToColumns(elmX), gridster.columns - 1);\n\t\t\t\t\tif (gridster.pushing !== false || gridster.getItems(row, col, item.sizeX, item.sizeY, item).length === 0) {\n\t\t\t\t\t\titem.row = row;\n\t\t\t\t\t\titem.col = col;\n\t\t\t\t\t}\n\t\t\t\t\tgridster.movingItem = null;\n\t\t\t\t\titem.setPosition(item.row, item.col);\n\n\t\t\t\t\tscope.$apply(function() {\n\t\t\t\t\t\tif (gridster.draggable && gridster.draggable.stop) {\n\t\t\t\t\t\t\tgridster.draggable.stop(event, $el, itemOptions, item);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tfunction mouseDown(e) {\n\t\t\t\t\tif (inputTags.indexOf(e.target.nodeName.toLowerCase()) !== -1) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar $target = angular.element(e.target);\n\n\t\t\t\t\t// exit, if a resize handle was hit\n\t\t\t\t\tif ($target.hasClass('gridster-item-resizable-handler')) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\t// exit, if the target has it's own click event\n\t\t\t\t\tif ($target.attr('onclick') || $target.attr('ng-click')) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\t// only works if you have jQuery\n\t\t\t\t\tif ($target.closest && $target.closest('.gridster-no-drag').length) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\t// apply drag handle filter\n\t\t\t\t\tif (gridster.draggable && gridster.draggable.handle) {\n\t\t\t\t\t\tvar $dragHandles = angular.element($el[0].querySelectorAll(gridster.draggable.handle));\n\t\t\t\t\t\tvar match = false;\n\t\t\t\t\t\touterloop:\n\t\t\t\t\t\t\tfor (var h = 0, hl = $dragHandles.length; h < hl; ++h) {\n\t\t\t\t\t\t\t\tvar handle = $dragHandles[h];\n\t\t\t\t\t\t\t\tif (handle === e.target) {\n\t\t\t\t\t\t\t\t\tmatch = true;\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tvar target = e.target;\n\t\t\t\t\t\t\t\tfor (var p = 0; p < 20; ++p) {\n\t\t\t\t\t\t\t\t\tvar parent = target.parentNode;\n\t\t\t\t\t\t\t\t\tif (parent === $el[0] || !parent) {\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif (parent === handle) {\n\t\t\t\t\t\t\t\t\t\tmatch = true;\n\t\t\t\t\t\t\t\t\t\tbreak outerloop;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\ttarget = parent;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!match) {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tswitch (e.which) {\n\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t// left mouse button\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t// right or middle mouse button\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tlastMouseX = e.pageX;\n\t\t\t\t\tlastMouseY = e.pageY;\n\n\t\t\t\t\telmX = parseInt($el.css('left'), 10);\n\t\t\t\t\telmY = parseInt($el.css('top'), 10);\n\t\t\t\t\telmW = $el[0].offsetWidth;\n\t\t\t\t\telmH = $el[0].offsetHeight;\n\n\t\t\t\t\toriginalCol = item.col;\n\t\t\t\t\toriginalRow = item.row;\n\n\t\t\t\t\tdragStart(e);\n\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tfunction mouseMove(e) {\n\t\t\t\t\tif (!$el.hasClass('gridster-item-moving') || $el.hasClass('gridster-item-resizing')) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar maxLeft = gridster.curWidth - 1;\n\t\t\t\t\tvar maxTop = gridster.curRowHeight * gridster.maxRows - 1;\n\n\t\t\t\t\t// Get the current mouse position.\n\t\t\t\t\tmouseX = e.pageX;\n\t\t\t\t\tmouseY = e.pageY;\n\n\t\t\t\t\t// Get the deltas\n\t\t\t\t\tvar diffX = mouseX - lastMouseX + mOffX;\n\t\t\t\t\tvar diffY = mouseY - lastMouseY + mOffY;\n\t\t\t\t\tmOffX = mOffY = 0;\n\n\t\t\t\t\t// Update last processed mouse positions.\n\t\t\t\t\tlastMouseX = mouseX;\n\t\t\t\t\tlastMouseY = mouseY;\n\n\t\t\t\t\tvar dX = diffX,\n\t\t\t\t\t\tdY = diffY;\n\t\t\t\t\tif (elmX + dX < minLeft) {\n\t\t\t\t\t\tdiffX = minLeft - elmX;\n\t\t\t\t\t\tmOffX = dX - diffX;\n\t\t\t\t\t} else if (elmX + elmW + dX > maxLeft) {\n\t\t\t\t\t\tdiffX = maxLeft - elmX - elmW;\n\t\t\t\t\t\tmOffX = dX - diffX;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (elmY + dY < minTop) {\n\t\t\t\t\t\tdiffY = minTop - elmY;\n\t\t\t\t\t\tmOffY = dY - diffY;\n\t\t\t\t\t} else if (elmY + elmH + dY > maxTop) {\n\t\t\t\t\t\tdiffY = maxTop - elmY - elmH;\n\t\t\t\t\t\tmOffY = dY - diffY;\n\t\t\t\t\t}\n\t\t\t\t\telmX += diffX;\n\t\t\t\t\telmY += diffY;\n\n\t\t\t\t\t// set new position\n\t\t\t\t\t$el.css({\n\t\t\t\t\t\t'top': elmY + 'px',\n\t\t\t\t\t\t'left': elmX + 'px'\n\t\t\t\t\t});\n\n\t\t\t\t\tdrag(e);\n\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tfunction mouseUp(e) {\n\t\t\t\t\tif (!$el.hasClass('gridster-item-moving') || $el.hasClass('gridster-item-resizing')) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\tmOffX = mOffY = 0;\n\n\t\t\t\t\tdragStop(e);\n\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tvar enabled = null;\n\t\t\t\tvar gridsterTouch = null;\n\n\t\t\t\tthis.enable = function() {\n\t\t\t\t\tif (enabled === true) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tenabled = true;\n\n\t\t\t\t\tif (gridsterTouch) {\n\t\t\t\t\t\tgridsterTouch.enable();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tgridsterTouch = new GridsterTouch($el[0], mouseDown, mouseMove, mouseUp);\n\t\t\t\t\tgridsterTouch.enable();\n\t\t\t\t};\n\n\t\t\t\tthis.disable = function() {\n\t\t\t\t\tif (enabled === false) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tenabled = false;\n\t\t\t\t\tif (gridsterTouch) {\n\t\t\t\t\t\tgridsterTouch.disable();\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tthis.toggle = function(enabled) {\n\t\t\t\t\tif (enabled) {\n\t\t\t\t\t\tthis.enable();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.disable();\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tthis.destroy = function() {\n\t\t\t\t\tthis.disable();\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn GridsterDraggable;\n\t\t}\n\t])\n\n\t.factory('GridsterResizable', ['GridsterTouch', function(GridsterTouch) {\n\t\tfunction GridsterResizable($el, scope, gridster, item, itemOptions) {\n\n\t\t\tfunction ResizeHandle(handleClass) {\n\n\t\t\t\tvar hClass = handleClass;\n\n\t\t\t\tvar elmX, elmY, elmW, elmH,\n\n\t\t\t\t\tmouseX = 0,\n\t\t\t\t\tmouseY = 0,\n\t\t\t\t\tlastMouseX = 0,\n\t\t\t\t\tlastMouseY = 0,\n\t\t\t\t\tmOffX = 0,\n\t\t\t\t\tmOffY = 0,\n\n\t\t\t\t\tminTop = 0,\n\t\t\t\t\tmaxTop = 9999,\n\t\t\t\t\tminLeft = 0;\n\n\t\t\t\tvar getMinHeight = function() {\n\t\t\t\t\treturn (item.minSizeY ? item.minSizeY : 1) * gridster.curRowHeight - gridster.margins[0];\n\t\t\t\t};\n\t\t\t\tvar getMinWidth = function() {\n\t\t\t\t\treturn (item.minSizeX ? item.minSizeX : 1) * gridster.curColWidth - gridster.margins[1];\n\t\t\t\t};\n\n\t\t\t\tvar originalWidth, originalHeight;\n\t\t\t\tvar savedDraggable;\n\n\t\t\t\tfunction resizeStart(e) {\n\t\t\t\t\t$el.addClass('gridster-item-moving');\n\t\t\t\t\t$el.addClass('gridster-item-resizing');\n\n\t\t\t\t\tgridster.movingItem = item;\n\n\t\t\t\t\titem.setElementSizeX();\n\t\t\t\t\titem.setElementSizeY();\n\t\t\t\t\titem.setElementPosition();\n\t\t\t\t\tgridster.updateHeight(1);\n\n\t\t\t\t\tscope.$apply(function() {\n\t\t\t\t\t\t// callback\n\t\t\t\t\t\tif (gridster.resizable && gridster.resizable.start) {\n\t\t\t\t\t\t\tgridster.resizable.start(e, $el, itemOptions, item); // options is the item model\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tfunction resize(e) {\n\t\t\t\t\tvar oldRow = item.row,\n\t\t\t\t\t\toldCol = item.col,\n\t\t\t\t\t\toldSizeX = item.sizeX,\n\t\t\t\t\t\toldSizeY = item.sizeY,\n\t\t\t\t\t\thasCallback = gridster.resizable && gridster.resizable.resize;\n\n\t\t\t\t\tvar col = item.col;\n\t\t\t\t\t// only change column if grabbing left edge\n\t\t\t\t\tif (['w', 'nw', 'sw'].indexOf(handleClass) !== -1) {\n\t\t\t\t\t\tcol = gridster.pixelsToColumns(elmX, false);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar row = item.row;\n\t\t\t\t\t// only change row if grabbing top edge\n\t\t\t\t\tif (['n', 'ne', 'nw'].indexOf(handleClass) !== -1) {\n\t\t\t\t\t\trow = gridster.pixelsToRows(elmY, false);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar sizeX = item.sizeX;\n\t\t\t\t\t// only change row if grabbing left or right edge\n\t\t\t\t\tif (['n', 's'].indexOf(handleClass) === -1) {\n\t\t\t\t\t\tsizeX = gridster.pixelsToColumns(elmW, true);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar sizeY = item.sizeY;\n\t\t\t\t\t// only change row if grabbing top or bottom edge\n\t\t\t\t\tif (['e', 'w'].indexOf(handleClass) === -1) {\n\t\t\t\t\t\tsizeY = gridster.pixelsToRows(elmH, true);\n\t\t\t\t\t}\n\n\n\t\t\t\t\tvar canOccupy = row > -1 && col > -1 && sizeX + col <= gridster.columns && sizeY + row <= gridster.maxRows;\n\t\t\t\t\tif (canOccupy && (gridster.pushing !== false || gridster.getItems(row, col, sizeX, sizeY, item).length === 0)) {\n\t\t\t\t\t\titem.row = row;\n\t\t\t\t\t\titem.col = col;\n\t\t\t\t\t\titem.sizeX = sizeX;\n\t\t\t\t\t\titem.sizeY = sizeY;\n\t\t\t\t\t}\n\t\t\t\t\tvar isChanged = item.row !== oldRow || item.col !== oldCol || item.sizeX !== oldSizeX || item.sizeY !== oldSizeY;\n\n\t\t\t\t\tif (hasCallback || isChanged) {\n\t\t\t\t\t\tscope.$apply(function() {\n\t\t\t\t\t\t\tif (hasCallback) {\n\t\t\t\t\t\t\t\tgridster.resizable.resize(e, $el, itemOptions, item); // options is the item model\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tfunction resizeStop(e) {\n\t\t\t\t\t$el.removeClass('gridster-item-moving');\n\t\t\t\t\t$el.removeClass('gridster-item-resizing');\n\n\t\t\t\t\tgridster.movingItem = null;\n\n\t\t\t\t\titem.setPosition(item.row, item.col);\n\t\t\t\t\titem.setSizeY(item.sizeY);\n\t\t\t\t\titem.setSizeX(item.sizeX);\n\n\t\t\t\t\tscope.$apply(function() {\n\t\t\t\t\t\tif (gridster.resizable && gridster.resizable.stop) {\n\t\t\t\t\t\t\tgridster.resizable.stop(e, $el, itemOptions, item); // options is the item model\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tfunction mouseDown(e) {\n\t\t\t\t\tswitch (e.which) {\n\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t// left mouse button\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t// right or middle mouse button\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t// save the draggable setting to restore after resize\n\t\t\t\t\tsavedDraggable = gridster.draggable.enabled;\n\t\t\t\t\tif (savedDraggable) {\n\t\t\t\t\t\tgridster.draggable.enabled = false;\n\t\t\t\t\t\tscope.$broadcast('gridster-draggable-changed', gridster);\n\t\t\t\t\t}\n\n\t\t\t\t\t// Get the current mouse position.\n\t\t\t\t\tlastMouseX = e.pageX;\n\t\t\t\t\tlastMouseY = e.pageY;\n\n\t\t\t\t\t// Record current widget dimensions\n\t\t\t\t\telmX = parseInt($el.css('left'), 10);\n\t\t\t\t\telmY = parseInt($el.css('top'), 10);\n\t\t\t\t\telmW = $el[0].offsetWidth;\n\t\t\t\t\telmH = $el[0].offsetHeight;\n\n\t\t\t\t\toriginalWidth = item.sizeX;\n\t\t\t\t\toriginalHeight = item.sizeY;\n\n\t\t\t\t\tresizeStart(e);\n\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tfunction mouseMove(e) {\n\t\t\t\t\tvar maxLeft = gridster.curWidth - 1;\n\n\t\t\t\t\t// Get the current mouse position.\n\t\t\t\t\tmouseX = e.pageX;\n\t\t\t\t\tmouseY = e.pageY;\n\n\t\t\t\t\t// Get the deltas\n\t\t\t\t\tvar diffX = mouseX - lastMouseX + mOffX;\n\t\t\t\t\tvar diffY = mouseY - lastMouseY + mOffY;\n\t\t\t\t\tmOffX = mOffY = 0;\n\n\t\t\t\t\t// Update last processed mouse positions.\n\t\t\t\t\tlastMouseX = mouseX;\n\t\t\t\t\tlastMouseY = mouseY;\n\n\t\t\t\t\tvar dY = diffY,\n\t\t\t\t\t\tdX = diffX;\n\n\t\t\t\t\tif (hClass.indexOf('n') >= 0) {\n\t\t\t\t\t\tif (elmH - dY < getMinHeight()) {\n\t\t\t\t\t\t\tdiffY = elmH - getMinHeight();\n\t\t\t\t\t\t\tmOffY = dY - diffY;\n\t\t\t\t\t\t} else if (elmY + dY < minTop) {\n\t\t\t\t\t\t\tdiffY = minTop - elmY;\n\t\t\t\t\t\t\tmOffY = dY - diffY;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telmY += diffY;\n\t\t\t\t\t\telmH -= diffY;\n\t\t\t\t\t}\n\t\t\t\t\tif (hClass.indexOf('s') >= 0) {\n\t\t\t\t\t\tif (elmH + dY < getMinHeight()) {\n\t\t\t\t\t\t\tdiffY = getMinHeight() - elmH;\n\t\t\t\t\t\t\tmOffY = dY - diffY;\n\t\t\t\t\t\t} else if (elmY + elmH + dY > maxTop) {\n\t\t\t\t\t\t\tdiffY = maxTop - elmY - elmH;\n\t\t\t\t\t\t\tmOffY = dY - diffY;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telmH += diffY;\n\t\t\t\t\t}\n\t\t\t\t\tif (hClass.indexOf('w') >= 0) {\n\t\t\t\t\t\tif (elmW - dX < getMinWidth()) {\n\t\t\t\t\t\t\tdiffX = elmW - getMinWidth();\n\t\t\t\t\t\t\tmOffX = dX - diffX;\n\t\t\t\t\t\t} else if (elmX + dX < minLeft) {\n\t\t\t\t\t\t\tdiffX = minLeft - elmX;\n\t\t\t\t\t\t\tmOffX = dX - diffX;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telmX += diffX;\n\t\t\t\t\t\telmW -= diffX;\n\t\t\t\t\t}\n\t\t\t\t\tif (hClass.indexOf('e') >= 0) {\n\t\t\t\t\t\tif (elmW + dX < getMinWidth()) {\n\t\t\t\t\t\t\tdiffX = getMinWidth() - elmW;\n\t\t\t\t\t\t\tmOffX = dX - diffX;\n\t\t\t\t\t\t} else if (elmX + elmW + dX > maxLeft) {\n\t\t\t\t\t\t\tdiffX = maxLeft - elmX - elmW;\n\t\t\t\t\t\t\tmOffX = dX - diffX;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telmW += diffX;\n\t\t\t\t\t}\n\n\t\t\t\t\t// set new position\n\t\t\t\t\t$el.css({\n\t\t\t\t\t\t'top': elmY + 'px',\n\t\t\t\t\t\t'left': elmX + 'px',\n\t\t\t\t\t\t'width': elmW + 'px',\n\t\t\t\t\t\t'height': elmH + 'px'\n\t\t\t\t\t});\n\n\t\t\t\t\tresize(e);\n\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tfunction mouseUp(e) {\n\t\t\t\t\t// restore draggable setting to its original state\n\t\t\t\t\tif (gridster.draggable.enabled !== savedDraggable) {\n\t\t\t\t\t\tgridster.draggable.enabled = savedDraggable;\n\t\t\t\t\t\tscope.$broadcast('gridster-draggable-changed', gridster);\n\t\t\t\t\t}\n\n\t\t\t\t\tmOffX = mOffY = 0;\n\n\t\t\t\t\tresizeStop(e);\n\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tvar $dragHandle = null;\n\t\t\t\tvar unifiedInput;\n\n\t\t\t\tthis.enable = function() {\n\t\t\t\t\tif (!$dragHandle) {\n\t\t\t\t\t\t$dragHandle = angular.element('
');\n\t\t\t\t\t\t$el.append($dragHandle);\n\t\t\t\t\t}\n\n\t\t\t\t\tunifiedInput = new GridsterTouch($dragHandle[0], mouseDown, mouseMove, mouseUp);\n\t\t\t\t\tunifiedInput.enable();\n\t\t\t\t};\n\n\t\t\t\tthis.disable = function() {\n\t\t\t\t\tif ($dragHandle) {\n\t\t\t\t\t\t$dragHandle.remove();\n\t\t\t\t\t\t$dragHandle = null;\n\t\t\t\t\t}\n\n\t\t\t\t\tunifiedInput.disable();\n\t\t\t\t\tunifiedInput = undefined;\n\t\t\t\t};\n\n\t\t\t\tthis.destroy = function() {\n\t\t\t\t\tthis.disable();\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tvar handles = [];\n\t\t\tvar handlesOpts = gridster.resizable.handles;\n\t\t\tif (typeof handlesOpts === 'string') {\n\t\t\t\thandlesOpts = gridster.resizable.handles.split(',');\n\t\t\t}\n\t\t\tvar enabled = false;\n\n\t\t\tfor (var c = 0, l = handlesOpts.length; c < l; c++) {\n\t\t\t\thandles.push(new ResizeHandle(handlesOpts[c]));\n\t\t\t}\n\n\t\t\tthis.enable = function() {\n\t\t\t\tif (enabled) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tfor (var c = 0, l = handles.length; c < l; c++) {\n\t\t\t\t\thandles[c].enable();\n\t\t\t\t}\n\t\t\t\tenabled = true;\n\t\t\t};\n\n\t\t\tthis.disable = function() {\n\t\t\t\tif (!enabled) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tfor (var c = 0, l = handles.length; c < l; c++) {\n\t\t\t\t\thandles[c].disable();\n\t\t\t\t}\n\t\t\t\tenabled = false;\n\t\t\t};\n\n\t\t\tthis.toggle = function(enabled) {\n\t\t\t\tif (enabled) {\n\t\t\t\t\tthis.enable();\n\t\t\t\t} else {\n\t\t\t\t\tthis.disable();\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tthis.destroy = function() {\n\t\t\t\tfor (var c = 0, l = handles.length; c < l; c++) {\n\t\t\t\t\thandles[c].destroy();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\treturn GridsterResizable;\n\t}])\n\n\t.factory('gridsterDebounce', function() {\n\t\treturn function gridsterDebounce(func, wait, immediate) {\n\t\t\tvar timeout;\n\t\t\treturn function() {\n\t\t\t\tvar context = this,\n\t\t\t\t\targs = arguments;\n\t\t\t\tvar later = function() {\n\t\t\t\t\ttimeout = null;\n\t\t\t\t\tif (!immediate) {\n\t\t\t\t\t\tfunc.apply(context, args);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tvar callNow = immediate && !timeout;\n\t\t\t\tclearTimeout(timeout);\n\t\t\t\ttimeout = setTimeout(later, wait);\n\t\t\t\tif (callNow) {\n\t\t\t\t\tfunc.apply(context, args);\n\t\t\t\t}\n\t\t\t};\n\t\t};\n\t})\n\n\t/**\n\t * GridsterItem directive\n\t * @param $parse\n\t * @param GridsterDraggable\n\t * @param GridsterResizable\n\t * @param gridsterDebounce\n\t */\n\t.directive('gridsterItem', ['$parse', 'GridsterDraggable', 'GridsterResizable', 'gridsterDebounce',\n\t\tfunction($parse, GridsterDraggable, GridsterResizable, gridsterDebounce) {\n\t\t\treturn {\n\t\t\t\tscope: true,\n\t\t\t\trestrict: 'EA',\n\t\t\t\tcontroller: 'GridsterItemCtrl',\n\t\t\t\tcontrollerAs: 'gridsterItem',\n\t\t\t\trequire: ['^gridster', 'gridsterItem'],\n\t\t\t\tlink: function(scope, $el, attrs, controllers) {\n\t\t\t\t\tvar optionsKey = attrs.gridsterItem,\n\t\t\t\t\t\toptions;\n\n\t\t\t\t\tvar gridster = controllers[0],\n\t\t\t\t\t\titem = controllers[1];\n\n\t\t\t\t\tscope.gridster = gridster;\n\n\t\t\t\t\t// bind the item's position properties\n\t\t\t\t\t// options can be an object specified by gridster-item=\"object\"\n\t\t\t\t\t// or the options can be the element html attributes object\n\t\t\t\t\tif (optionsKey) {\n\t\t\t\t\t\tvar $optionsGetter = $parse(optionsKey);\n\t\t\t\t\t\toptions = $optionsGetter(scope) || {};\n\t\t\t\t\t\tif (!options && $optionsGetter.assign) {\n\t\t\t\t\t\t\toptions = {\n\t\t\t\t\t\t\t\trow: item.row,\n\t\t\t\t\t\t\t\tcol: item.col,\n\t\t\t\t\t\t\t\tsizeX: item.sizeX,\n\t\t\t\t\t\t\t\tsizeY: item.sizeY,\n\t\t\t\t\t\t\t\tminSizeX: 0,\n\t\t\t\t\t\t\t\tminSizeY: 0,\n\t\t\t\t\t\t\t\tmaxSizeX: null,\n\t\t\t\t\t\t\t\tmaxSizeY: null\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t$optionsGetter.assign(scope, options);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\toptions = attrs;\n\t\t\t\t\t}\n\n\t\t\t\t\titem.init($el, gridster);\n\n\t\t\t\t\t$el.addClass('gridster-item');\n\n\t\t\t\t\tvar aspects = ['minSizeX', 'maxSizeX', 'minSizeY', 'maxSizeY', 'sizeX', 'sizeY', 'row', 'col'],\n\t\t\t\t\t\t$getters = {};\n\n\t\t\t\t\tvar expressions = [];\n\t\t\t\t\tvar aspectFn = function(aspect) {\n\t\t\t\t\t\tvar expression;\n\t\t\t\t\t\tif (typeof options[aspect] === 'string') {\n\t\t\t\t\t\t\t// watch the expression in the scope\n\t\t\t\t\t\t\texpression = options[aspect];\n\t\t\t\t\t\t} else if (typeof options[aspect.toLowerCase()] === 'string') {\n\t\t\t\t\t\t\t// watch the expression in the scope\n\t\t\t\t\t\t\texpression = options[aspect.toLowerCase()];\n\t\t\t\t\t\t} else if (optionsKey) {\n\t\t\t\t\t\t\t// watch the expression on the options object in the scope\n\t\t\t\t\t\t\texpression = optionsKey + '.' + aspect;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\texpressions.push('\"' + aspect + '\":' + expression);\n\t\t\t\t\t\t$getters[aspect] = $parse(expression);\n\n\t\t\t\t\t\t// initial set\n\t\t\t\t\t\tvar val = $getters[aspect](scope);\n\t\t\t\t\t\tif (typeof val === 'number') {\n\t\t\t\t\t\t\titem[aspect] = val;\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t\tfor (var i = 0, l = aspects.length; i < l; ++i) {\n\t\t\t\t\t\taspectFn(aspects[i]);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar watchExpressions = '{' + expressions.join(',') + '}';\n\t\t\t\t\t// when the value changes externally, update the internal item object\n\t\t\t\t\tscope.$watchCollection(watchExpressions, function(newVals, oldVals) {\n\t\t\t\t\t\tfor (var aspect in newVals) {\n\t\t\t\t\t\t\tvar newVal = newVals[aspect];\n\t\t\t\t\t\t\tvar oldVal = oldVals[aspect];\n\t\t\t\t\t\t\tif (oldVal === newVal) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tnewVal = parseInt(newVal, 10);\n\t\t\t\t\t\t\tif (!isNaN(newVal)) {\n\t\t\t\t\t\t\t\titem[aspect] = newVal;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\tfunction positionChanged() {\n\t\t\t\t\t\t// call setPosition so the element and gridster controller are updated\n\t\t\t\t\t\titem.setPosition(item.row, item.col);\n\n\t\t\t\t\t\t// when internal item position changes, update externally bound values\n\t\t\t\t\t\tif ($getters.row && $getters.row.assign) {\n\t\t\t\t\t\t\t$getters.row.assign(scope, item.row);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ($getters.col && $getters.col.assign) {\n\t\t\t\t\t\t\t$getters.col.assign(scope, item.col);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tscope.$watch(function() {\n\t\t\t\t\t\treturn item.row + ',' + item.col;\n\t\t\t\t\t}, positionChanged);\n\n\t\t\t\t\tfunction sizeChanged() {\n\t\t\t\t\t\tvar changedX = item.setSizeX(item.sizeX, true);\n\t\t\t\t\t\tif (changedX && $getters.sizeX && $getters.sizeX.assign) {\n\t\t\t\t\t\t\t$getters.sizeX.assign(scope, item.sizeX);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvar changedY = item.setSizeY(item.sizeY, true);\n\t\t\t\t\t\tif (changedY && $getters.sizeY && $getters.sizeY.assign) {\n\t\t\t\t\t\t\t$getters.sizeY.assign(scope, item.sizeY);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (changedX || changedY) {\n\t\t\t\t\t\t\titem.gridster.moveOverlappingItems(item);\n\t\t\t\t\t\t\tgridster.layoutChanged();\n\t\t\t\t\t\t\tscope.$broadcast('gridster-item-resized', item);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tscope.$watch(function() {\n\t\t\t\t\t\treturn item.sizeY + ',' + item.sizeX + ',' + item.minSizeX + ',' + item.maxSizeX + ',' + item.minSizeY + ',' + item.maxSizeY;\n\t\t\t\t\t}, sizeChanged);\n\n\t\t\t\t\tvar draggable = new GridsterDraggable($el, scope, gridster, item, options);\n\t\t\t\t\tvar resizable = new GridsterResizable($el, scope, gridster, item, options);\n\n\t\t\t\t\tvar updateResizable = function() {\n\t\t\t\t\t\tresizable.toggle(!gridster.isMobile && gridster.resizable && gridster.resizable.enabled);\n\t\t\t\t\t};\n\t\t\t\t\tupdateResizable();\n\n\t\t\t\t\tvar updateDraggable = function() {\n\t\t\t\t\t\tdraggable.toggle(!gridster.isMobile && gridster.draggable && gridster.draggable.enabled);\n\t\t\t\t\t};\n\t\t\t\t\tupdateDraggable();\n\n\t\t\t\t\tscope.$on('gridster-draggable-changed', updateDraggable);\n\t\t\t\t\tscope.$on('gridster-resizable-changed', updateResizable);\n\t\t\t\t\tscope.$on('gridster-resized', updateResizable);\n\t\t\t\t\tscope.$on('gridster-mobile-changed', function() {\n\t\t\t\t\t\tupdateResizable();\n\t\t\t\t\t\tupdateDraggable();\n\t\t\t\t\t});\n\n\t\t\t\t\tfunction whichTransitionEvent() {\n\t\t\t\t\t\tvar el = document.createElement('div');\n\t\t\t\t\t\tvar transitions = {\n\t\t\t\t\t\t\t'transition': 'transitionend',\n\t\t\t\t\t\t\t'OTransition': 'oTransitionEnd',\n\t\t\t\t\t\t\t'MozTransition': 'transitionend',\n\t\t\t\t\t\t\t'WebkitTransition': 'webkitTransitionEnd'\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (var t in transitions) {\n\t\t\t\t\t\t\tif (el.style[t] !== undefined) {\n\t\t\t\t\t\t\t\treturn transitions[t];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tvar debouncedTransitionEndPublisher = gridsterDebounce(function() {\n\t\t\t\t\t\tscope.$apply(function() {\n\t\t\t\t\t\t\tscope.$broadcast('gridster-item-transition-end', item);\n\t\t\t\t\t\t});\n\t\t\t\t\t}, 50);\n\n\t\t\t\t\t$el.on(whichTransitionEvent(), debouncedTransitionEndPublisher);\n\n\t\t\t\t\tscope.$broadcast('gridster-item-initialized', item);\n\n\t\t\t\t\treturn scope.$on('$destroy', function() {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresizable.destroy();\n\t\t\t\t\t\t\tdraggable.destroy();\n\t\t\t\t\t\t} catch (e) {}\n\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tgridster.removeItem(item);\n\t\t\t\t\t\t} catch (e) {}\n\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\titem.destroy();\n\t\t\t\t\t\t} catch (e) {}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t])\n\n\t.directive('gridsterNoDrag', function() {\n\t\treturn {\n\t\t\trestrict: 'A',\n\t\t\tlink: function(scope, $element) {\n\t\t\t\t$element.addClass('gridster-no-drag');\n\t\t\t}\n\t\t};\n\t})\n\n\t;\n\n}));\n","angular.module(\"colorpicker.module\",[]).factory(\"Helper\",function(){\"use strict\";return{closestSlider:function(e){var o=e.matches||e.webkitMatchesSelector||e.mozMatchesSelector||e.msMatchesSelector;return o.bind(e)(\"I\")?e.parentNode:e},getOffset:function(e,o){for(var t=0,n=0,r=e.getBoundingClientRect();e&&!isNaN(e.offsetLeft)&&!isNaN(e.offsetTop);)o||\"BODY\"!==e.tagName?(t+=e.scrollLeft,n+=e.scrollTop):(t+=document.documentElement.scrollLeft||e.scrollLeft,n+=document.documentElement.scrollTop||e.scrollTop),e=e.offsetParent;return{top:r.top+window.pageYOffset,left:r.left+window.pageXOffset,scrollX:t,scrollY:n}},stringParsers:[{re:/rgba?\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*(?:,\\s*(\\d+(?:\\.\\d+)?)\\s*)?\\)/,parse:function(e){return[e[1],e[2],e[3],e[4]]}},{re:/rgba?\\(\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*(?:,\\s*(\\d+(?:\\.\\d+)?)\\s*)?\\)/,parse:function(e){return[2.55*e[1],2.55*e[2],2.55*e[3],e[4]]}},{re:/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/,parse:function(e){return[parseInt(e[1],16),parseInt(e[2],16),parseInt(e[3],16)]}},{re:/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/,parse:function(e){return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16)]}}]}}).factory(\"Color\",[\"Helper\",function(e){\"use strict\";return{value:{h:1,s:1,b:1,a:1},rgb:function(){var e=this.toRGB();return\"rgb(\"+e.r+\",\"+e.g+\",\"+e.b+\")\"},rgba:function(){var e=this.toRGB();return\"rgba(\"+e.r+\",\"+e.g+\",\"+e.b+\",\"+e.a+\")\"},hex:function(){return this.toHex()},RGBtoHSB:function(e,o,t,n){e/=255,o/=255,t/=255;var r,i,l,s;return l=Math.max(e,o,t),s=l-Math.min(e,o,t),r=0===s?null:l===e?(o-t)/s:l===o?(t-e)/s+2:(e-o)/s+4,r=(r+360)%6*60/360,i=0===s?0:s/l,{h:r||1,s:i,b:l,a:n||1}},setColor:function(o){o=o?o.toLowerCase():o;for(var t in e.stringParsers)if(e.stringParsers.hasOwnProperty(t)){var n=e.stringParsers[t],r=n.re.exec(o),i=r&&n.parse(r);if(i)return this.value=this.RGBtoHSB.apply(null,i),!1}},setHue:function(e){this.value.h=1-e},setSaturation:function(e){this.value.s=e},setLightness:function(e){this.value.b=1-e},setAlpha:function(e){this.value.a=parseInt(100*(1-e),10)/100},toRGB:function(e,o,t,n){e||(e=this.value.h,o=this.value.s,t=this.value.b),e*=360;var r,i,l,s,c;return e=e%360/60,c=t*o,s=c*(1-Math.abs(e%2-1)),r=i=l=t-c,e=~~e,r+=[c,s,0,0,s,c][e],i+=[s,c,c,s,0,0][e],l+=[0,0,s,c,c,s][e],{r:Math.round(255*r),g:Math.round(255*i),b:Math.round(255*l),a:n||this.value.a}},toHex:function(e,o,t,n){var r=this.toRGB(e,o,t,n);return\"#\"+(1<<24|parseInt(r.r,10)<<16|parseInt(r.g,10)<<8|parseInt(r.b,10)).toString(16).substr(1)}}}]).factory(\"Slider\",[\"Helper\",function(e){\"use strict\";var o={maxLeft:0,maxTop:0,callLeft:null,callTop:null,knob:{top:0,left:0}},t={};return{getSlider:function(){return o},getLeftPosition:function(e){return Math.max(0,Math.min(o.maxLeft,o.left+((e.pageX||t.left)-t.left)))},getTopPosition:function(e){return Math.max(0,Math.min(o.maxTop,o.top+((e.pageY||t.top)-t.top)))},setSlider:function(n,r){var i=e.closestSlider(n.target),l=e.getOffset(i,r),s=i.getBoundingClientRect(),c=n.clientX-s.left,a=n.clientY-s.top;o.knob=i.children[0].style,o.left=n.pageX-l.left-window.pageXOffset+l.scrollX,o.top=n.pageY-l.top-window.pageYOffset+l.scrollY,t={left:n.pageX-(c-o.left),top:n.pageY-(a-o.top)}},setSaturation:function(e,t,n){o={maxLeft:n,maxTop:n,callLeft:\"setSaturation\",callTop:\"setLightness\"},this.setSlider(e,t)},setHue:function(e,t,n){o={maxLeft:0,maxTop:n,callLeft:!1,callTop:\"setHue\"},this.setSlider(e,t)},setAlpha:function(e,t,n){o={maxLeft:0,maxTop:n,callLeft:!1,callTop:\"setAlpha\"},this.setSlider(e,t)},setKnob:function(e,t){o.knob.top=e+\"px\",o.knob.left=t+\"px\"}}}]).directive(\"colorpicker\",[\"$document\",\"$compile\",\"Color\",\"Slider\",\"Helper\",function(e,o,t,n,r){\"use strict\";return{require:\"?ngModel\",restrict:\"A\",link:function(i,l,s,c){function a(){e.on(\"mousemove\",u),e.on(\"mouseup\",f)}function p(){try{D.css(\"backgroundColor\",M[w]())}catch(e){D.css(\"backgroundColor\",M.toHex())}B.css(\"backgroundColor\",M.toHex(M.value.h,1,1,1)),\"rgba\"===w&&(x.css.backgroundColor=M.toHex())}function u(e){var o=n.getLeftPosition(e),t=n.getTopPosition(e),r=n.getSlider();n.setKnob(t,o),r.callLeft&&M[r.callLeft].call(M,o/P),r.callTop&&M[r.callTop].call(M,t/P),p();var s=M[w]();return l.val(s),c&&i.$apply(c.$setViewValue(s)),$&&F.val(s),!1}function f(){m(\"colorpicker-selected\"),e.off(\"mousemove\",u),e.off(\"mouseup\",f)}function d(e){M.setColor(l.val()),$&&!e&&F.val(l.val()),Y.eq(0).css({left:M.value.s*P+\"px\",top:P-M.value.b*P+\"px\"}),Y.eq(1).css(\"top\",P*(1-M.value.h)+\"px\"),Y.eq(2).css(\"top\",P*(1-M.value.a)+\"px\"),p()}function h(){var e,o=r.getOffset(l[0]);return angular.isDefined(s.colorpickerParent)&&(o.left=0,o.top=0),\"top\"===S?e={top:o.top-147,left:o.left}:\"right\"===S?e={top:o.top,left:o.left+126}:\"bottom\"===S?e={top:o.top+l[0].offsetHeight+2,left:o.left}:\"left\"===S&&(e={top:o.top,left:o.left-150}),{top:e.top+\"px\",left:e.left+\"px\"}}function g(){v()}function k(){y.hasClass(\"colorpicker-visible\")||(d(),y.addClass(\"colorpicker-visible\").css(h()),m(\"colorpicker-shown\"),I===!1&&e.on(\"mousedown\",g),s.colorpickerIsOpen&&(i[s.colorpickerIsOpen]=!0,i.$$phase||i.$digest()))}function m(e){c&&i.$emit(e,{name:s.ngModel,value:c.$modelValue})}function v(){y.hasClass(\"colorpicker-visible\")&&(y.removeClass(\"colorpicker-visible\"),m(\"colorpicker-closed\"),e.off(\"mousedown\",g),s.colorpickerIsOpen&&(i[s.colorpickerIsOpen]=!1,i.$$phase||i.$digest()))}var b,x,w=s.colorpicker?s.colorpicker:\"hex\",S=angular.isDefined(s.colorpickerPosition)?s.colorpickerPosition:\"bottom\",I=angular.isDefined(s.colorpickerInline)?s.colorpickerInline:!1,C=angular.isDefined(s.colorpickerFixedPosition)?s.colorpickerFixedPosition:!1,L=angular.isDefined(s.colorpickerParent)?l.parent():angular.element(document.body),$=angular.isDefined(s.colorpickerWithInput)?s.colorpickerWithInput:!1,P=angular.isDefined(s.colorpickerSize)?s.colorpickerSize:100,b=P+\"px\",H=$?'':\"\",T=I?\"\":'',O='
'+H+T+\"
\",y=angular.element(O),M=t,A=y.find(\"colorpicker-hue\"),B=y.find(\"colorpicker-saturation\"),D=y.find(\"colorpicker-preview\"),Y=y.find(\"i\");if(o(y)(i),y.css(\"min-width\",parseInt(P)+29+\"px\"),B.css({width:b,height:b}),A.css(\"height\",b),$){var F=y.find(\"input\");F.css(\"width\",b),F.on(\"mousedown\",function(e){e.stopPropagation()}).on(\"keyup\",function(){var e=this.value;l.val(e),c&&c.$modelValue!==e&&(i.$apply(c.$setViewValue(e)),d(!0))})}\"rgba\"===w&&(y.addClass(\"alpha\"),x=y.find(\"colorpicker-alpha\"),x.css(\"height\",b),x.on(\"click\",function(e){n.setAlpha(e,C,P),u(e)}).on(\"mousedown\",function(e){n.setAlpha(e,C,P),a()}).on(\"mouseup\",function(e){m(\"colorpicker-selected-alpha\")})),A.on(\"click\",function(e){n.setHue(e,C,P),u(e)}).on(\"mousedown\",function(e){n.setHue(e,C,P),a()}).on(\"mouseup\",function(e){m(\"colorpicker-selected-hue\")}),B.on(\"click\",function(e){n.setSaturation(e,C,P),u(e),angular.isDefined(s.colorpickerCloseOnSelect)&&v()}).on(\"mousedown\",function(e){n.setSaturation(e,C,P),a()}).on(\"mouseup\",function(e){m(\"colorpicker-selected-saturation\")}),C&&y.addClass(\"colorpicker-fixed-position\"),y.addClass(\"colorpicker-position-\"+S),\"true\"===I&&y.addClass(\"colorpicker-inline\"),L.append(y),c&&(c.$render=function(){l.val(c.$viewValue),d()}),l.on(\"blur keyup change\",function(){d()}),l.on(\"$destroy\",function(){y.remove()}),I===!1?l.on(\"click\",k):k(),y.on(\"mousedown\",function(e){e.stopPropagation(),e.preventDefault()}),y.find(\"button\").on(\"click\",function(){v()}),s.colorpickerIsOpen&&i.$watch(s.colorpickerIsOpen,function(e){e===!0?k():e===!1&&v()})}}}]);","/*!\n * Bootstrap v3.3.7 (http://getbootstrap.com)\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under the MIT license\n */\nif(\"undefined\"==typeof jQuery)throw new Error(\"Bootstrap's JavaScript requires jQuery\");+function(a){\"use strict\";var b=a.fn.jquery.split(\" \")[0].split(\".\");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1||b[0]>3)throw new Error(\"Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4\")}(jQuery),+function(a){\"use strict\";function b(){var a=document.createElement(\"bootstrap\"),b={WebkitTransition:\"webkitTransitionEnd\",MozTransition:\"transitionend\",OTransition:\"oTransitionEnd otransitionend\",transition:\"transitionend\"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one(\"bsTransitionEnd\",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){if(a(b.target).is(this))return b.handleObj.handler.apply(this,arguments)}})})}(jQuery),+function(a){\"use strict\";function b(b){return this.each(function(){var c=a(this),e=c.data(\"bs.alert\");e||c.data(\"bs.alert\",e=new d(this)),\"string\"==typeof b&&e[b].call(c)})}var c='[data-dismiss=\"alert\"]',d=function(b){a(b).on(\"click\",c,this.close)};d.VERSION=\"3.3.7\",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger(\"closed.bs.alert\").remove()}var e=a(this),f=e.attr(\"data-target\");f||(f=e.attr(\"href\"),f=f&&f.replace(/.*(?=#[^\\s]*$)/,\"\"));var g=a(\"#\"===f?[]:f);b&&b.preventDefault(),g.length||(g=e.closest(\".alert\")),g.trigger(b=a.Event(\"close.bs.alert\")),b.isDefaultPrevented()||(g.removeClass(\"in\"),a.support.transition&&g.hasClass(\"fade\")?g.one(\"bsTransitionEnd\",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on(\"click.bs.alert.data-api\",c,d.prototype.close)}(jQuery),+function(a){\"use strict\";function b(b){return this.each(function(){var d=a(this),e=d.data(\"bs.button\"),f=\"object\"==typeof b&&b;e||d.data(\"bs.button\",e=new c(this,f)),\"toggle\"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION=\"3.3.7\",c.DEFAULTS={loadingText:\"loading...\"},c.prototype.setState=function(b){var c=\"disabled\",d=this.$element,e=d.is(\"input\")?\"val\":\"html\",f=d.data();b+=\"Text\",null==f.resetText&&d.data(\"resetText\",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),\"loadingText\"==b?(this.isLoading=!0,d.addClass(c).attr(c,c).prop(c,!0)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c).prop(c,!1))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle=\"buttons\"]');if(b.length){var c=this.$element.find(\"input\");\"radio\"==c.prop(\"type\")?(c.prop(\"checked\")&&(a=!1),b.find(\".active\").removeClass(\"active\"),this.$element.addClass(\"active\")):\"checkbox\"==c.prop(\"type\")&&(c.prop(\"checked\")!==this.$element.hasClass(\"active\")&&(a=!1),this.$element.toggleClass(\"active\")),c.prop(\"checked\",this.$element.hasClass(\"active\")),a&&c.trigger(\"change\")}else this.$element.attr(\"aria-pressed\",!this.$element.hasClass(\"active\")),this.$element.toggleClass(\"active\")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on(\"click.bs.button.data-api\",'[data-toggle^=\"button\"]',function(c){var d=a(c.target).closest(\".btn\");b.call(d,\"toggle\"),a(c.target).is('input[type=\"radio\"], input[type=\"checkbox\"]')||(c.preventDefault(),d.is(\"input,button\")?d.trigger(\"focus\"):d.find(\"input:visible,button:visible\").first().trigger(\"focus\"))}).on(\"focus.bs.button.data-api blur.bs.button.data-api\",'[data-toggle^=\"button\"]',function(b){a(b.target).closest(\".btn\").toggleClass(\"focus\",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){\"use strict\";function b(b){return this.each(function(){var d=a(this),e=d.data(\"bs.carousel\"),f=a.extend({},c.DEFAULTS,d.data(),\"object\"==typeof b&&b),g=\"string\"==typeof b?b:f.slide;e||d.data(\"bs.carousel\",e=new c(this,f)),\"number\"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(\".carousel-indicators\"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on(\"keydown.bs.carousel\",a.proxy(this.keydown,this)),\"hover\"==this.options.pause&&!(\"ontouchstart\"in document.documentElement)&&this.$element.on(\"mouseenter.bs.carousel\",a.proxy(this.pause,this)).on(\"mouseleave.bs.carousel\",a.proxy(this.cycle,this))};c.VERSION=\"3.3.7\",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:\"hover\",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(\".item\"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d=\"prev\"==a&&0===c||\"next\"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e=\"prev\"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(\".item.active\"));if(!(a>this.$items.length-1||a<0))return this.sliding?this.$element.one(\"slid.bs.carousel\",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?\"next\":\"prev\",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(\".next, .prev\").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){if(!this.sliding)return this.slide(\"next\")},c.prototype.prev=function(){if(!this.sliding)return this.slide(\"prev\")},c.prototype.slide=function(b,d){var e=this.$element.find(\".item.active\"),f=d||this.getItemForDirection(b,e),g=this.interval,h=\"next\"==b?\"left\":\"right\",i=this;if(f.hasClass(\"active\"))return this.sliding=!1;var j=f[0],k=a.Event(\"slide.bs.carousel\",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(\".active\").removeClass(\"active\");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass(\"active\")}var m=a.Event(\"slid.bs.carousel\",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass(\"slide\")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one(\"bsTransitionEnd\",function(){f.removeClass([b,h].join(\" \")).addClass(\"active\"),e.removeClass([\"active\",h].join(\" \")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass(\"active\"),f.addClass(\"active\"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr(\"data-target\")||(d=e.attr(\"href\"))&&d.replace(/.*(?=#[^\\s]+$)/,\"\"));if(f.hasClass(\"carousel\")){var g=a.extend({},f.data(),e.data()),h=e.attr(\"data-slide-to\");h&&(g.interval=!1),b.call(f,g),h&&f.data(\"bs.carousel\").to(h),c.preventDefault()}};a(document).on(\"click.bs.carousel.data-api\",\"[data-slide]\",e).on(\"click.bs.carousel.data-api\",\"[data-slide-to]\",e),a(window).on(\"load\",function(){a('[data-ride=\"carousel\"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){\"use strict\";function b(b){var c,d=b.attr(\"data-target\")||(c=b.attr(\"href\"))&&c.replace(/.*(?=#[^\\s]+$)/,\"\");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data(\"bs.collapse\"),f=a.extend({},d.DEFAULTS,c.data(),\"object\"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data(\"bs.collapse\",e=new d(this,f)),\"string\"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle=\"collapse\"][href=\"#'+b.id+'\"],[data-toggle=\"collapse\"][data-target=\"#'+b.id+'\"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION=\"3.3.7\",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass(\"width\");return a?\"width\":\"height\"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass(\"in\")){var b,e=this.$parent&&this.$parent.children(\".panel\").children(\".in, .collapsing\");if(!(e&&e.length&&(b=e.data(\"bs.collapse\"),b&&b.transitioning))){var f=a.Event(\"show.bs.collapse\");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,\"hide\"),b||e.data(\"bs.collapse\",null));var g=this.dimension();this.$element.removeClass(\"collapse\").addClass(\"collapsing\")[g](0).attr(\"aria-expanded\",!0),this.$trigger.removeClass(\"collapsed\").attr(\"aria-expanded\",!0),this.transitioning=1;var h=function(){this.$element.removeClass(\"collapsing\").addClass(\"collapse in\")[g](\"\"),this.transitioning=0,this.$element.trigger(\"shown.bs.collapse\")};if(!a.support.transition)return h.call(this);var i=a.camelCase([\"scroll\",g].join(\"-\"));this.$element.one(\"bsTransitionEnd\",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass(\"in\")){var b=a.Event(\"hide.bs.collapse\");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass(\"collapsing\").removeClass(\"collapse in\").attr(\"aria-expanded\",!1),this.$trigger.addClass(\"collapsed\").attr(\"aria-expanded\",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass(\"collapsing\").addClass(\"collapse\").trigger(\"hidden.bs.collapse\")};return a.support.transition?void this.$element[c](0).one(\"bsTransitionEnd\",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass(\"in\")?\"hide\":\"show\"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle=\"collapse\"][data-parent=\"'+this.options.parent+'\"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass(\"in\");a.attr(\"aria-expanded\",c),b.toggleClass(\"collapsed\",!c).attr(\"aria-expanded\",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on(\"click.bs.collapse.data-api\",'[data-toggle=\"collapse\"]',function(d){var e=a(this);e.attr(\"data-target\")||d.preventDefault();var f=b(e),g=f.data(\"bs.collapse\"),h=g?\"toggle\":e.data();c.call(f,h)})}(jQuery),+function(a){\"use strict\";function b(b){var c=b.attr(\"data-target\");c||(c=b.attr(\"href\"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\\s]*$)/,\"\"));var d=c&&a(c);return d&&d.length?d:b.parent()}function c(c){c&&3===c.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=b(d),f={relatedTarget:this};e.hasClass(\"open\")&&(c&&\"click\"==c.type&&/input|textarea/i.test(c.target.tagName)&&a.contains(e[0],c.target)||(e.trigger(c=a.Event(\"hide.bs.dropdown\",f)),c.isDefaultPrevented()||(d.attr(\"aria-expanded\",\"false\"),e.removeClass(\"open\").trigger(a.Event(\"hidden.bs.dropdown\",f)))))}))}function d(b){return this.each(function(){var c=a(this),d=c.data(\"bs.dropdown\");d||c.data(\"bs.dropdown\",d=new g(this)),\"string\"==typeof b&&d[b].call(c)})}var e=\".dropdown-backdrop\",f='[data-toggle=\"dropdown\"]',g=function(b){a(b).on(\"click.bs.dropdown\",this.toggle)};g.VERSION=\"3.3.7\",g.prototype.toggle=function(d){var e=a(this);if(!e.is(\".disabled, :disabled\")){var f=b(e),g=f.hasClass(\"open\");if(c(),!g){\"ontouchstart\"in document.documentElement&&!f.closest(\".navbar-nav\").length&&a(document.createElement(\"div\")).addClass(\"dropdown-backdrop\").insertAfter(a(this)).on(\"click\",c);var h={relatedTarget:this};if(f.trigger(d=a.Event(\"show.bs.dropdown\",h)),d.isDefaultPrevented())return;e.trigger(\"focus\").attr(\"aria-expanded\",\"true\"),f.toggleClass(\"open\").trigger(a.Event(\"shown.bs.dropdown\",h))}return!1}},g.prototype.keydown=function(c){if(/(38|40|27|32)/.test(c.which)&&!/input|textarea/i.test(c.target.tagName)){var d=a(this);if(c.preventDefault(),c.stopPropagation(),!d.is(\".disabled, :disabled\")){var e=b(d),g=e.hasClass(\"open\");if(!g&&27!=c.which||g&&27==c.which)return 27==c.which&&e.find(f).trigger(\"focus\"),d.trigger(\"click\");var h=\" li:not(.disabled):visible a\",i=e.find(\".dropdown-menu\"+h);if(i.length){var j=i.index(c.target);38==c.which&&j>0&&j--,40==c.which&&jdocument.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:\"\",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:\"\"})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:\"\",paddingRight:\"\"})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth
',trigger:\"hover focus\",title:\"\",delay:0,html:!1,container:!1,viewport:{selector:\"body\",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(a.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error(\"`selector` option must be specified when initializing \"+this.type+\" on the window.document object!\");for(var e=this.options.trigger.split(\" \"),f=e.length;f--;){var g=e[f];if(\"click\"==g)this.$element.on(\"click.\"+this.type,this.options.selector,a.proxy(this.toggle,this));else if(\"manual\"!=g){var h=\"hover\"==g?\"mouseenter\":\"focusin\",i=\"hover\"==g?\"mouseleave\":\"focusout\";this.$element.on(h+\".\"+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+\".\"+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:\"manual\",selector:\"\"}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&\"number\"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data(\"bs.\"+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data(\"bs.\"+this.type,c)),b instanceof a.Event&&(c.inState[\"focusin\"==b.type?\"focus\":\"hover\"]=!0),c.tip().hasClass(\"in\")||\"in\"==c.hoverState?void(c.hoverState=\"in\"):(clearTimeout(c.timeout),c.hoverState=\"in\",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){\"in\"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.isInStateTrue=function(){for(var a in this.inState)if(this.inState[a])return!0;return!1},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data(\"bs.\"+this.type);if(c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data(\"bs.\"+this.type,c)),b instanceof a.Event&&(c.inState[\"focusout\"==b.type?\"focus\":\"hover\"]=!1),!c.isInStateTrue())return clearTimeout(c.timeout),c.hoverState=\"out\",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){\"out\"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event(\"show.bs.\"+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr(\"id\",g),this.$element.attr(\"aria-describedby\",g),this.options.animation&&f.addClass(\"fade\");var h=\"function\"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\\s?auto?\\s?/i,j=i.test(h);j&&(h=h.replace(i,\"\")||\"top\"),f.detach().css({top:0,left:0,display:\"block\"}).addClass(h).data(\"bs.\"+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element),this.$element.trigger(\"inserted.bs.\"+this.type);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.getPosition(this.$viewport);h=\"bottom\"==h&&k.bottom+m>o.bottom?\"top\":\"top\"==h&&k.top-mo.width?\"left\":\"left\"==h&&k.left-lg.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;jg.right&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr(\"data-original-title\")||(\"function\"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){if(!this.$tip&&(this.$tip=a(this.options.template),1!=this.$tip.length))throw new Error(this.type+\" `template` option must consist of exactly 1 top-level element!\");return this.$tip},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(\".tooltip-arrow\")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data(\"bs.\"+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data(\"bs.\"+this.type,c))),b?(c.inState.click=!c.inState.click,c.isInStateTrue()?c.enter(c):c.leave(c)):c.tip().hasClass(\"in\")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off(\".\"+a.type).removeData(\"bs.\"+a.type),a.$tip&&a.$tip.detach(),a.$tip=null,a.$arrow=null,a.$viewport=null,a.$element=null})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){\"use strict\";function b(b){return this.each(function(){var d=a(this),e=d.data(\"bs.popover\"),f=\"object\"==typeof b&&b;!e&&/destroy|hide/.test(b)||(e||d.data(\"bs.popover\",e=new c(this,f)),\"string\"==typeof b&&e[b]())})}var c=function(a,b){this.init(\"popover\",a,b)};if(!a.fn.tooltip)throw new Error(\"Popover requires tooltip.js\");c.VERSION=\"3.3.7\",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:\"right\",trigger:\"click\",content:\"\",template:'

'}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(\".popover-title\")[this.options.html?\"html\":\"text\"](b),a.find(\".popover-content\").children().detach().end()[this.options.html?\"string\"==typeof c?\"html\":\"append\":\"text\"](c),a.removeClass(\"fade top bottom left right in\"),a.find(\".popover-title\").html()||a.find(\".popover-title\").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr(\"data-content\")||(\"function\"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(\".arrow\")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){\"use strict\";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||\"\")+\" .nav li > a\",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on(\"scroll.bs.scrollspy\",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data(\"bs.scrollspy\"),f=\"object\"==typeof c&&c;e||d.data(\"bs.scrollspy\",e=new b(this,f)),\"string\"==typeof c&&e[c]()})}b.VERSION=\"3.3.7\",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c=\"offset\",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c=\"position\",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data(\"target\")||b.attr(\"href\"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(\":visible\")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b=e[a]&&(void 0===e[a+1]||b .dropdown-menu > .active\").removeClass(\"active\").end().find('[data-toggle=\"tab\"]').attr(\"aria-expanded\",!1),b.addClass(\"active\").find('[data-toggle=\"tab\"]').attr(\"aria-expanded\",!0),h?(b[0].offsetWidth,b.addClass(\"in\")):b.removeClass(\"fade\"),b.parent(\".dropdown-menu\").length&&b.closest(\"li.dropdown\").addClass(\"active\").end().find('[data-toggle=\"tab\"]').attr(\"aria-expanded\",!0),e&&e()}var g=d.find(\"> .active\"),h=e&&a.support.transition&&(g.length&&g.hasClass(\"fade\")||!!d.find(\"> .fade\").length);g.length&&h?g.one(\"bsTransitionEnd\",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass(\"in\")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),\"show\")};a(document).on(\"click.bs.tab.data-api\",'[data-toggle=\"tab\"]',e).on(\"click.bs.tab.data-api\",'[data-toggle=\"pill\"]',e)}(jQuery),+function(a){\"use strict\";function b(b){return this.each(function(){var d=a(this),e=d.data(\"bs.affix\"),f=\"object\"==typeof b&&b;e||d.data(\"bs.affix\",e=new c(this,f)),\"string\"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on(\"scroll.bs.affix.data-api\",a.proxy(this.checkPosition,this)).on(\"click.bs.affix.data-api\",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION=\"3.3.7\",c.RESET=\"affix affix-top affix-bottom\",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&\"top\"==this.affixed)return e=a-d&&\"bottom\"},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass(\"affix\");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(\":visible\")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=Math.max(a(document).height(),a(document.body).height());\"object\"!=typeof d&&(f=e=d),\"function\"==typeof e&&(e=d.top(this.$element)),\"function\"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css(\"top\",\"\");var i=\"affix\"+(h?\"-\"+h:\"\"),j=a.Event(i+\".bs.affix\");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin=\"bottom\"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace(\"affix\",\"affixed\")+\".bs.affix\")}\"bottom\"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on(\"load\",function(){a('[data-spy=\"affix\"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery);","!function (a, t) { \"function\" == typeof define && define.amd ? define(t) : \"object\" == typeof exports ? module.exports = t(require, exports, module) : a.CountUp = t() }(this, function (a, t, n) { var e = function (a, t, n, e, i, r) { for (var o = 0, s = [\"webkit\", \"moz\", \"ms\", \"o\"], m = 0; m < s.length && !window.requestAnimationFrame; ++m) window.requestAnimationFrame = window[s[m] + \"RequestAnimationFrame\"], window.cancelAnimationFrame = window[s[m] + \"CancelAnimationFrame\"] || window[s[m] + \"CancelRequestAnimationFrame\"]; window.requestAnimationFrame || (window.requestAnimationFrame = function (a, t) { var n = (new Date).getTime(), e = Math.max(0, 16 - (n - o)), i = window.setTimeout(function () { a(n + e) }, e); return o = n + e, i }), window.cancelAnimationFrame || (window.cancelAnimationFrame = function (a) { clearTimeout(a) }); var u = this; u.options = { useEasing: !0, useGrouping: !0, separator: \",\", decimal: \".\", easingFn: null, formattingFn: null }; for (var l in r) r.hasOwnProperty(l) && (u.options[l] = r[l]); \"\" === u.options.separator && (u.options.useGrouping = !1), u.options.prefix || (u.options.prefix = \"\"), u.options.suffix || (u.options.suffix = \"\"), u.d = \"string\" == typeof a ? document.getElementById(a) : a, u.startVal = Number(t), u.endVal = Number(n), u.countDown = u.startVal > u.endVal, u.frameVal = u.startVal, u.decimals = Math.max(0, e || 0), u.dec = Math.pow(10, u.decimals), u.duration = 1e3 * Number(i) || 2e3, u.formatNumber = function (a) { a = a.toFixed(u.decimals), a += \"\"; var t, n, e, i; if (t = a.split(\".\"), n = t[0], e = t.length > 1 ? u.options.decimal + t[1] : \"\", i = /(\\d+)(\\d{3})/, u.options.useGrouping) for (; i.test(n) ;) n = n.replace(i, \"$1\" + u.options.separator + \"$2\"); return u.options.prefix + n + e + u.options.suffix }, u.easeOutExpo = function (a, t, n, e) { return n * (-Math.pow(2, -10 * a / e) + 1) * 1024 / 1023 + t }, u.easingFn = u.options.easingFn ? u.options.easingFn : u.easeOutExpo, u.formattingFn = u.options.formattingFn ? u.options.formattingFn : u.formatNumber, u.version = function () { return \"1.7.1\" }, u.printValue = function (a) { var t = u.formattingFn(a); \"INPUT\" === u.d.tagName ? this.d.value = t : \"text\" === u.d.tagName || \"tspan\" === u.d.tagName ? this.d.textContent = t : this.d.innerHTML = t }, u.count = function (a) { u.startTime || (u.startTime = a), u.timestamp = a; var t = a - u.startTime; u.remaining = u.duration - t, u.options.useEasing ? u.countDown ? u.frameVal = u.startVal - u.easingFn(t, 0, u.startVal - u.endVal, u.duration) : u.frameVal = u.easingFn(t, u.startVal, u.endVal - u.startVal, u.duration) : u.countDown ? u.frameVal = u.startVal - (u.startVal - u.endVal) * (t / u.duration) : u.frameVal = u.startVal + (u.endVal - u.startVal) * (t / u.duration), u.countDown ? u.frameVal = u.frameVal < u.endVal ? u.endVal : u.frameVal : u.frameVal = u.frameVal > u.endVal ? u.endVal : u.frameVal, u.frameVal = Math.round(u.frameVal * u.dec) / u.dec, u.printValue(u.frameVal), t < u.duration ? u.rAF = requestAnimationFrame(u.count) : u.callback && u.callback() }, u.start = function (a) { return u.callback = a, u.rAF = requestAnimationFrame(u.count), !1 }, u.pauseResume = function () { u.paused ? (u.paused = !1, delete u.startTime, u.duration = u.remaining, u.startVal = u.frameVal, requestAnimationFrame(u.count)) : (u.paused = !0, cancelAnimationFrame(u.rAF)) }, u.reset = function () { u.paused = !1, delete u.startTime, u.startVal = t, cancelAnimationFrame(u.rAF), u.printValue(u.startVal) }, u.update = function (a) { cancelAnimationFrame(u.rAF), u.paused = !1, delete u.startTime, u.startVal = u.frameVal, u.endVal = Number(a), u.countDown = u.startVal > u.endVal, u.rAF = requestAnimationFrame(u.count) }, u.printValue(u.startVal) }; return e });","!function(e){\"use strict\";function a(){return\"ondrag\"in document.createElement(\"a\")}function n(e){e.originalEvent&&(e.dataTransfer=e.originalEvent.dataTransfer),\"undefined\"!=typeof e.dataTransfer&&\"none\"===e.dataTransfer.dropEffect&&(\"copy\"===e.dataTransfer.effectAllowed||\"move\"===e.dataTransfer.effectAllowed?e.dataTransfer.dropEffect=e.dataTransfer.effectAllowed:\"copyMove\"!==e.dataTransfer.effectAllowed&&\"copymove\"!==e.dataTransfer.effectAllowed||(e.dataTransfer.dropEffect=e.ctrlKey?\"copy\":\"move\"))}if(!a())return void e.module(\"ang-drag-drop\",[]);var r=e.module(\"ang-drag-drop\",[]);r.directive(\"uiDraggable\",[\"$parse\",\"$rootScope\",\"$dragImage\",function(a,r,t){return function(o,d,f){function i(e){e.originalEvent&&(e.dataTransfer=e.originalEvent.dataTransfer),setTimeout(function(){d.unbind(\"$destroy\",i)},0);var t=f.dragChannel||\"defaultchannel\";if(r.$broadcast(\"ANGULAR_DRAG_END\",e,t),n(e),e.dataTransfer&&\"none\"!==e.dataTransfer.dropEffect){if(f.onDropSuccess){var s=a(f.onDropSuccess);o.$evalAsync(function(){s(o,{$event:e})})}}else if(e.dataTransfer&&\"none\"===e.dataTransfer.dropEffect&&f.onDropFailure){var l=a(f.onDropFailure);o.$evalAsync(function(){l(o,{$event:e})})}d.removeClass(c)}function s(n,r){var t;n.originalEvent&&(n.dataTransfer=n.originalEvent.dataTransfer),t=a(r),o.$apply(function(){var a,r=t(o,{$event:n});r&&e.isString(r)&&(a=document.getElementById(r),a&&n.dataTransfer.setDragImage(a,0,0))})}function l(n){n.originalEvent&&(n.dataTransfer=n.originalEvent.dataTransfer);var l=!v||u.classList.contains(g);if(l){var p=f.dragChannel||\"defaultchannel\",$=\"\";f.drag&&($=o.$eval(f.drag));var m=f.dragImage||null;d.addClass(c),d.bind(\"$destroy\",i);var T=!(document.uniqueID||window.opera);if(m&&T){var h=a(f.dragImage);o.$apply(function(){var a=h(o,{$event:n});if(a&&(e.isString(a)&&(a=t.generate(a)),a.image)){var r=a.xOffset||0,d=a.yOffset||0;n.dataTransfer.setDragImage(a.image,r,d)}})}else f.dragImageElementId&&s(n,f.dragImageElementId);var b={x:n.offsetX,y:n.offsetY},D={data:$,channel:p,offset:b},y=e.toJson(D);n.dataTransfer.setData(\"text\",y),n.dataTransfer.effectAllowed=\"copyMove\",r.$broadcast(\"ANGULAR_DRAG_START\",n,p,D)}else n.preventDefault()}var g,u,v=!1,c=f.draggingClass||\"on-dragging\";d.attr(\"draggable\",!1),o.$watch(f.uiDraggable,function(e){e?(d.attr(\"draggable\",e),d.bind(\"dragend\",i),d.bind(\"dragstart\",l)):(d.removeAttr(\"draggable\"),d.unbind(\"dragend\",i),d.unbind(\"dragstart\",l))}),e.isString(f.dragHandleClass)&&(v=!0,g=f.dragHandleClass.trim()||\"drag-handle\",d.bind(\"mousedown\",function(e){u=e.target}))}}]),r.directive(\"uiOnDrop\",[\"$parse\",\"$rootScope\",function(a,r){return function(t,o,d){function f(e){for(var a={x:e.offsetX,y:e.offsetY},n=e.target;n!==o[0];)if(a.x=a.x+n.offsetLeft,a.y=a.y+n.offsetTop,n=n.offsetParent,!n)return null;return a}function i(e){e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation();var n=a(d.uiOnDragOver);return t.$evalAsync(function(){n(t,{$event:e,$channel:p})}),!1}function s(e){e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),c--,0===c&&(t.$evalAsync(function(){b(t,{$event:e,$channel:p})}),o.addClass(m),o.removeClass(T));var n=a(d.uiOnDragLeave);t.$evalAsync(function(){n(t,{$event:e,$channel:p})})}function l(e){e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),0===c&&(t.$evalAsync(function(){h(t,{$event:e,$channel:p})}),o.removeClass(m),o.addClass(T)),c++;var n=a(d.uiOnDragEnter);t.$evalAsync(function(){n(t,{$event:e,$channel:p})}),r.$broadcast(\"ANGULAR_HOVER\",$)}function g(r){r.originalEvent&&(r.dataTransfer=r.originalEvent.dataTransfer),r.preventDefault&&r.preventDefault(),r.stopPropagation&&r.stopPropagation();var i=r.dataTransfer.getData(\"text\");i=e.fromJson(i);var s=f(r),l=s?{x:s.x-i.offset.x,y:s.y-i.offset.y}:null;n(r);var g=a(d.uiOnDrop);t.$evalAsync(function(){g(t,{$data:i.data,$event:r,$channel:i.channel,$position:l})}),o.removeClass(m),c=0}function u(e,a){if(\"*\"===a)return!0;var n=new RegExp(\"(\\\\s|[,])+(\"+e+\")(\\\\s|[,])+\",\"i\");return n.test(\",\"+a+\",\")}function v(e){return e.originalEvent&&(e.dataTransfer=e.originalEvent.dataTransfer),e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),e.dataTransfer.dropEffect=\"none\",!1}var c=0,p=d.dropChannel||\"defaultchannel\",$=\"\",m=d.dragEnterClass||\"on-drag-enter\",T=d.dragHoverClass||\"on-drag-hover\",h=a(d.onDragEnter),b=a(d.onDragLeave),D=r.$on(\"ANGULAR_DRAG_START\",function(e,n,r,f){$=r;var c=!0;if(u(r,p)||(c=!1),c&&d.dropValidate){var T=a(d.dropValidate);c=T(t,{$drop:{scope:t,element:o},$event:n,$data:f.data,$channel:f.channel})}c?(o.bind(\"dragover\",i),o.bind(\"dragenter\",l),o.bind(\"dragleave\",s),o.bind(\"drop\",g),o.addClass(m)):(o.bind(\"dragover\",v),o.bind(\"dragenter\",v),o.bind(\"dragleave\",v),o.bind(\"drop\",v),o.removeClass(m))}),y=r.$on(\"ANGULAR_DRAG_END\",function(){o.unbind(\"dragover\",i),o.unbind(\"dragenter\",l),o.unbind(\"dragleave\",s),o.unbind(\"drop\",g),o.removeClass(T),o.removeClass(m),o.unbind(\"dragover\",v),o.unbind(\"dragenter\",v),o.unbind(\"dragleave\",v),o.unbind(\"drop\",v)});t.$on(\"$destroy\",function(){D(),y()}),d.$observe(\"dropChannel\",function(e){e&&(p=e)})}}]),r.constant(\"$dragImageConfig\",{height:20,width:200,padding:10,font:\"bold 11px Arial\",fontColor:\"#eee8d5\",backgroundColor:\"#93a1a1\",xOffset:0,yOffset:0}),r.service(\"$dragImage\",[\"$dragImageConfig\",function(a){function n(e,a,n){var t=e.measureText(a).width;if(tn.width;)a=a.substring(0,a.length-1),t=e.measureText(a+r).width;return a+r}var r=\"…\";this.generate=function(r,t){var o=e.extend({},a,t||{}),d=document.createElement(\"canvas\");d.height=o.height,d.width=o.width;var f=d.getContext(\"2d\");f.fillStyle=o.backgroundColor,f.fillRect(0,0,o.width,o.height),f.font=o.font,f.fillStyle=o.fontColor;var i=n(f,r,o);f.fillText(i,4,o.padding+4);var s=new Image;return s.src=d.toDataURL(),{image:s,xOffset:o.xOffset,yOffset:o.yOffset}}}])}(angular);","/*!\n * FullCalendar v3.1.0\n * Docs & License: http://fullcalendar.io/\n * (c) 2016 Adam Shaw\n */\n!function(t){\"function\"==typeof define&&define.amd?define([\"jquery\",\"moment\"],t):\"object\"==typeof exports?module.exports=t(require(\"jquery\"),require(\"moment\")):t(jQuery,moment)}(function(t,e){function n(t){return q(t,$t)}function i(t,e){e.left&&t.css({\"border-left-width\":1,\"margin-left\":e.left-1}),e.right&&t.css({\"border-right-width\":1,\"margin-right\":e.right-1})}function r(t){t.css({\"margin-left\":\"\",\"margin-right\":\"\",\"border-left-width\":\"\",\"border-right-width\":\"\"})}function s(){t(\"body\").addClass(\"fc-not-allowed\")}function o(){t(\"body\").removeClass(\"fc-not-allowed\")}function l(e,n,i){var r=Math.floor(n/e.length),s=Math.floor(n-r*(e.length-1)),o=[],l=[],u=[],c=0;a(e),e.each(function(n,i){var a=n===e.length-1?s:r,d=t(i).outerHeight(!0);d *\").each(function(e,i){var r=t(i).outerWidth();r>n&&(n=r)}),n++,e.width(n),n}function c(t,e){var n,i=t.add(e);return i.css({position:\"relative\",left:-1}),n=t.outerHeight()-e.outerHeight(),i.css({position:\"\",left:\"\"}),n}function d(e){var n=e.css(\"position\"),i=e.parents().filter(function(){var e=t(this);return/(auto|scroll)/.test(e.css(\"overflow\")+e.css(\"overflow-y\")+e.css(\"overflow-x\"))}).eq(0);return\"fixed\"!==n&&i.length?i:t(e[0].ownerDocument||document)}function h(t,e){var n=t.offset(),i=n.left-(e?e.left:0),r=n.top-(e?e.top:0);return{left:i,right:i+t.outerWidth(),top:r,bottom:r+t.outerHeight()}}function f(t,e){var n=t.offset(),i=p(t),r=n.left+y(t,\"border-left-width\")+i.left-(e?e.left:0),s=n.top+y(t,\"border-top-width\")+i.top-(e?e.top:0);return{left:r,right:r+t[0].clientWidth,top:s,bottom:s+t[0].clientHeight}}function g(t,e){var n=t.offset(),i=n.left+y(t,\"border-left-width\")+y(t,\"padding-left\")-(e?e.left:0),r=n.top+y(t,\"border-top-width\")+y(t,\"padding-top\")-(e?e.top:0);return{left:i,right:i+t.width(),top:r,bottom:r+t.height()}}function p(t){var e=t.innerWidth()-t[0].clientWidth,n={left:0,right:0,top:0,bottom:t.innerHeight()-t[0].clientHeight};return v()&&\"rtl\"==t.css(\"direction\")?n.left=e:n.right=e,n}function v(){return null===Qt&&(Qt=m()),Qt}function m(){var e=t(\"
\").css({position:\"absolute\",top:-1e3,left:0,border:0,padding:0,overflow:\"scroll\",direction:\"rtl\"}).appendTo(\"body\"),n=e.children(),i=n.offset().left>e.offset().left;return e.remove(),i}function y(t,e){return parseFloat(t.css(e))||0}function S(t){return 1==t.which&&!t.ctrlKey}function w(t){if(void 0!==t.pageX)return t.pageX;var e=t.originalEvent.touches;return e?e[0].pageX:void 0}function E(t){if(void 0!==t.pageY)return t.pageY;var e=t.originalEvent.touches;return e?e[0].pageY:void 0}function b(t){return/^touch/.test(t.type)}function D(t){t.addClass(\"fc-unselectable\").on(\"selectstart\",T)}function T(t){t.preventDefault()}function C(t){return!!window.addEventListener&&(window.addEventListener(\"scroll\",t,!0),!0)}function H(t){return!!window.removeEventListener&&(window.removeEventListener(\"scroll\",t,!0),!0)}function R(t,e){var n={left:Math.max(t.left,e.left),right:Math.min(t.right,e.right),top:Math.max(t.top,e.top),bottom:Math.min(t.bottom,e.bottom)};return n.lefta&&o=a?(n=o.clone(),r=!0):(n=a.clone(),r=!1),l<=u?(i=l.clone(),s=!0):(i=u.clone(),s=!1),{start:n,end:i,isStart:r,isEnd:s}}function N(t,n){return e.duration({days:t.clone().stripTime().diff(n.clone().stripTime(),\"days\"),ms:t.time()-n.time()})}function G(t,n){return e.duration({days:t.clone().stripTime().diff(n.clone().stripTime(),\"days\")})}function O(t,n,i){return e.duration(Math.round(t.diff(n,i,!0)),i)}function A(t,e){var n,i,r;for(n=0;n=1&&ot(r)));n++);return i}function V(t,n,i){return null!=i?i.diff(n,t,!0):e.isDuration(n)?n.as(t):n.end.diff(n.start,t,!0)}function P(t,e,n){var i;return W(n)?(e-t)/n:(i=n.asMonths(),Math.abs(i)>=1&&ot(i)?e.diff(t,\"months\",!0)/i:e.diff(t,\"days\",!0)/n.asDays())}function _(t,e){var n,i;return W(t)||W(e)?t/e:(n=t.asMonths(),i=e.asMonths(),Math.abs(n)>=1&&ot(n)&&Math.abs(i)>=1&&ot(i)?n/i:t.asDays()/e.asDays())}function Y(t,n){var i;return W(t)?e.duration(t*n):(i=t.asMonths(),Math.abs(i)>=1&&ot(i)?e.duration({months:i*n}):e.duration({days:t.asDays()*n}))}function W(t){return Boolean(t.hours()||t.minutes()||t.seconds()||t.milliseconds())}function U(t){return\"[object Date]\"===Object.prototype.toString.call(t)||t instanceof Date}function j(t){return/^\\d+\\:\\d+(?:\\:\\d+\\.?(?:\\d{3})?)?$/.test(t)}function q(t,e){var n,i,r,s,o,l,a={};if(e)for(n=0;n=0;s--)if(o=t[s][i],\"object\"==typeof o)r.unshift(o);else if(void 0!==o){a[i]=o;break}r.length&&(a[i]=q(r))}for(n=t.length-1;n>=0;n--){l=t[n];for(i in l)i in a||(a[i]=l[i])}return a}function Z(t){var e=function(){};return e.prototype=t,new e}function $(t,e){for(var n in t)Q(t,n)&&(e[n]=t[n])}function Q(t,e){return Jt.call(t,e)}function X(e){return/undefined|null|boolean|number|string/.test(t.type(e))}function K(e,n,i){if(t.isFunction(e)&&(e=[e]),e){var r,s;for(r=0;r/g,\">\").replace(/'/g,\"'\").replace(/\"/g,\""\").replace(/\\n/g,\"
\")}function et(t){return t.replace(/&.*?;/g,\"\")}function nt(e){var n=[];return t.each(e,function(t,e){null!=e&&n.push(t+\":\"+e)}),n.join(\";\")}function it(e){var n=[];return t.each(e,function(t,e){null!=e&&n.push(t+'=\"'+tt(e)+'\"')}),n.join(\" \")}function rt(t){return t.charAt(0).toUpperCase()+t.slice(1)}function st(t,e){return t-e}function ot(t){return t%1===0}function lt(t,e){var n=t[e];return function(){return n.apply(t,arguments)}}function at(t,e,n){var i,r,s,o,l,a=function(){var u=+new Date-o;uo&&(s=vt(t,e,u,c,n[l]),s!==!1);l--)h=s+h;for(a=o;a<=l;a++)f+=ft(t,n[a]),g+=ft(e,n[a]);return(f||g)&&(p=r?g+i+f:f+i+g),d+p+h}function vt(t,e,n,i,r){var s,o;return\"string\"==typeof r?r:!!((s=r.token)&&(o=oe[s.charAt(0)],o&&n.isSame(i,o)))&&ct(t,s)}function mt(t){return t in le?le[t]:le[t]=yt(t)}function yt(t){for(var e,n=[],i=/\\[([^\\]]*)\\]|\\(([^\\)]*)\\)|(LTS|LT|(\\w)\\4*o?)|([^\\w\\[\\(]+)/g;e=i.exec(t);)e[1]?n.push(e[1]):e[2]?n.push({maybe:yt(e[2])}):e[3]?n.push({token:e[3]}):e[5]&&n.push(e[5]);return n}function St(){}function wt(t,e){var n;return Q(e,\"constructor\")&&(n=e.constructor),\"function\"!=typeof n&&(n=e.constructor=function(){t.apply(this,arguments)}),n.prototype=Z(t.prototype),$(e,n.prototype),$(t,n),n}function Et(t,e){$(e,t.prototype)}function bt(e){var n=t.Deferred(),i=n.promise();if(\"function\"==typeof e&&e(function(t){bt.immediate&&(i._value=t),n.resolve(t)},function(){n.reject()}),bt.immediate){var r=i.then;i.then=function(t,e){var n=i.state();if(\"resolved\"===n){if(\"function\"==typeof t)return bt.resolve(t(i._value))}else if(\"rejected\"===n&&\"function\"==typeof e)return e(),i;return r.call(i,t,e)}}return i}function Dt(t){function e(t){return new bt(function(e){var i=function(){bt.resolve(t()).then(e).then(function(){n.shift(),n.length&&n[0]()})};n.push(i),1===n.length&&i()})}var n=[];this.add=\"number\"==typeof t?at(e,t):e,this.addQuickly=e}function Tt(t,e){return!t&&!e||!(!t||!e)&&(t.component===e.component&&Ct(t,e)&&Ct(e,t))}function Ct(t,e){for(var n in t)if(!/^(component|left|right|top|bottom)$/.test(n)&&t[n]!==e[n])return!1;return!0}function Ht(t){return{start:t.start.clone(),end:t.end?t.end.clone():null,allDay:t.allDay}}function Rt(t){var e=It(t);return\"background\"===e||\"inverse-background\"===e}function xt(t){return\"inverse-background\"===It(t)}function It(t){return J((t.source||{}).rendering,t.rendering)}function kt(t){var e,n,i={};for(e=0;e=t.leftCol)return!0;return!1}function zt(t,e){return t.leftCol-e.leftCol}function Ft(t){var e,n,i,r=[];for(e=0;ee.top&&t.top\"),g.append(o(\"left\")).append(o(\"right\")).append(o(\"center\")).append('
')):s()}function s(){g&&(g.remove(),g=f.el=null)}function o(i){var r=t('
'),s=n.layout[i];return s&&t.each(s.split(\" \"),function(n){var i,s=t(),o=!0;t.each(this.split(\",\"),function(n,i){var r,l,a,u,c,d,h,f,g,m;\"title\"==i?(s=s.add(t(\"

 

\")),o=!1):((r=(e.options.customButtons||{})[i])?(a=function(t){r.click&&r.click.call(m[0],t)},u=\"\",c=r.text):(l=e.getViewSpec(i))?(a=function(){e.changeView(i)},v.push(i),u=l.buttonTextOverride,c=l.buttonTextDefault):e[i]&&(a=function(){e[i]()},u=(e.overrides.buttonText||{})[i],c=e.options.buttonText[i]),a&&(d=r?r.themeIcon:e.options.themeButtonIcons[i],h=r?r.icon:e.options.buttonIcons[i],f=u?tt(u):d&&e.options.theme?\"\":h&&!e.options.theme?\"\":tt(c),g=[\"fc-\"+i+\"-button\",p+\"-button\",p+\"-state-default\"],m=t('\").click(function(t){m.hasClass(p+\"-state-disabled\")||(a(t),(m.hasClass(p+\"-state-active\")||m.hasClass(p+\"-state-disabled\"))&&m.removeClass(p+\"-state-hover\"))}).mousedown(function(){m.not(\".\"+p+\"-state-active\").not(\".\"+p+\"-state-disabled\").addClass(p+\"-state-down\")}).mouseup(function(){m.removeClass(p+\"-state-down\")}).hover(function(){m.not(\".\"+p+\"-state-active\").not(\".\"+p+\"-state-disabled\").addClass(p+\"-state-hover\")},function(){m.removeClass(p+\"-state-hover\").removeClass(p+\"-state-down\")}),s=s.add(m)))}),o&&s.first().addClass(p+\"-corner-left\").end().last().addClass(p+\"-corner-right\").end(),s.length>1?(i=t(\"
\"),o&&i.addClass(\"fc-button-group\"),i.append(s),r.append(i)):r.append(s)}),r}function l(t){g&&g.find(\"h2\").text(t)}function a(t){g&&g.find(\".fc-\"+t+\"-button\").addClass(p+\"-state-active\")}function u(t){g&&g.find(\".fc-\"+t+\"-button\").removeClass(p+\"-state-active\")}function c(t){g&&g.find(\".fc-\"+t+\"-button\").prop(\"disabled\",!0).addClass(p+\"-state-disabled\")}function d(t){g&&g.find(\".fc-\"+t+\"-button\").prop(\"disabled\",!1).removeClass(p+\"-state-disabled\")}function h(){return v}var f=this;f.setToolbarOptions=i,f.render=r,f.removeElement=s,f.updateTitle=l,f.activateButton=a,f.deactivateButton=u,f.disableButton=c,f.enableButton=d,f.getViewsWithButtons=h,f.el=null;var g,p,v=[]}function _t(n,i){function r(t){t._locale=Y}function s(){q?a()&&(f(),u()):o()}function o(){n.addClass(\"fc\"),n.on(\"click.fc\",\"a[data-goto]\",function(e){var n=t(this),i=n.data(\"goto\"),r=_.moment(i.date),s=i.type,o=Q.opt(\"navLink\"+rt(s)+\"Click\");\"function\"==typeof o?o(r,e):(\"string\"==typeof o&&(s=o),B(r,s))}),_.bindOption(\"theme\",function(t){$=t?\"ui\":\"fc\",n.toggleClass(\"ui-widget\",t),n.toggleClass(\"fc-unthemed\",!t)}),_.bindOptions([\"isRTL\",\"locale\"],function(t){n.toggleClass(\"fc-ltr\",!t),n.toggleClass(\"fc-rtl\",t)}),q=t(\"
\").prependTo(n);var e=y();W=new Vt(e),U=_.header=e[0],j=_.footer=e[1],E(),b(),u(_.options.defaultView),_.options.handleWindowResize&&(K=at(v,_.options.windowResizeDelay),t(window).resize(K))}function l(){Q&&Q.removeElement(),W.proxyCall(\"removeElement\"),q.remove(),n.removeClass(\"fc fc-ltr fc-rtl fc-unthemed ui-widget\"),n.off(\".fc\"),K&&t(window).unbind(\"resize\",K)}function a(){return n.is(\":visible\")}function u(e,n){nt++;var i=Q&&e&&Q.type!==e;i&&(F(),c()),!Q&&e&&(Q=_.view=et[e]||(et[e]=_.instantiateView(e)),Q.setElement(t(\"
\").appendTo(q)),W.proxyCall(\"activateButton\",e)),Q&&(J=Q.massageCurrentDate(J),Q.isDateSet&&J>=Q.intervalStart&&J=Q.intervalStart&&tq&&i.push(n);return i}function s(t,e){return!q||tZ}function o(t,e){return q=t,Z=e,l()}function l(){return u(tt,\"reset\")}function a(t){return u(E(t))}function u(t,e){var n,i;for(\"reset\"===e?nt=[]:\"add\"!==e&&(nt=C(nt,t)),n=0;nr.value)&&(r=i));return r?r.unit:null},qt.Class=St,St.extend=function(){var t,e,n=arguments.length;for(t=0;t').addClass(n.className||\"\").css({top:0,left:0}).append(n.content).appendTo(n.parentEl),this.el.on(\"click\",\".fc-close\",function(){e.hide()}),n.autoHide&&this.listenTo(t(document),\"mousedown\",this.documentMousedown)},documentMousedown:function(e){this.el&&!t(e.target).closest(this.el).length&&this.hide()},removeElement:function(){this.hide(),this.el&&(this.el.remove(),this.el=null),this.stopListeningTo(t(document),\"mousedown\")},position:function(){var e,n,i,r,s,o=this.options,l=this.el.offsetParent().offset(),a=this.el.outerWidth(),u=this.el.outerHeight(),c=t(window),h=d(this.el);r=o.top||0,s=void 0!==o.left?o.left:void 0!==o.right?o.right-a:0,h.is(window)||h.is(document)?(h=c,e=0,n=0):(i=h.offset(),e=i.top,n=i.left),e+=c.scrollTop(),n+=c.scrollLeft(),o.viewportConstrain!==!1&&(r=Math.min(r,e+h.outerHeight()-u-this.margin),r=Math.max(r,e+this.margin),s=Math.min(s,n+h.outerWidth()-a-this.margin),s=Math.max(s,n+this.margin)),this.el.css({top:r-l.top,left:s-l.left})},trigger:function(t){this.options[t]&&this.options[t].apply(this,Array.prototype.slice.call(arguments,1))}}),fe=qt.CoordCache=St.extend({els:null,forcedOffsetParentEl:null,origin:null,boundingRect:null,isHorizontal:!1,isVertical:!1,lefts:null,rights:null,tops:null,bottoms:null,constructor:function(e){this.els=t(e.els),this.isHorizontal=e.isHorizontal,this.isVertical=e.isVertical,this.forcedOffsetParentEl=e.offsetParent?t(e.offsetParent):null},build:function(){var t=this.forcedOffsetParentEl;!t&&this.els.length>0&&(t=this.els.eq(0).offsetParent()),this.origin=t?t.offset():null,this.boundingRect=this.queryBoundingRect(),this.isHorizontal&&this.buildElHorizontals(),this.isVertical&&this.buildElVerticals()},clear:function(){this.origin=null,this.boundingRect=null,this.lefts=null,this.rights=null,this.tops=null,this.bottoms=null},ensureBuilt:function(){this.origin||this.build()},buildElHorizontals:function(){var e=[],n=[];this.els.each(function(i,r){var s=t(r),o=s.offset().left,l=s.outerWidth();e.push(o),n.push(o+l)}),this.lefts=e,this.rights=n},buildElVerticals:function(){var e=[],n=[];this.els.each(function(i,r){var s=t(r),o=s.offset().top,l=s.outerHeight();e.push(o),n.push(o+l)}),this.tops=e,this.bottoms=n},getHorizontalIndex:function(t){this.ensureBuilt();var e,n=this.lefts,i=this.rights,r=n.length;for(e=0;e=n[e]&&t=n[e]&&t0&&(t=d(this.els.eq(0)),!t.is(document))?f(t):null},isPointInBounds:function(t,e){return this.isLeftInBounds(t)&&this.isTopInBounds(e)},isLeftInBounds:function(t){return!this.boundingRect||t>=this.boundingRect.left&&t=this.boundingRect.top&&t=r*r&&this.handleDistanceSurpassed(t)),this.isDragging&&this.handleDrag(n,i,t)},handleDrag:function(t,e,n){this.trigger(\"drag\",t,e,n),this.updateAutoScroll(n)},endDrag:function(t){this.isDragging&&(this.isDragging=!1,this.handleDragEnd(t))},handleDragEnd:function(t){this.trigger(\"dragEnd\",t)},startDelay:function(t){var e=this;this.delay?this.delayTimeoutId=setTimeout(function(){e.handleDelayEnd(t)},this.delay):this.handleDelayEnd(t)},handleDelayEnd:function(t){this.isDelayEnded=!0,this.isDistanceSurpassed&&this.startDrag(t)},handleDistanceSurpassed:function(t){this.isDistanceSurpassed=!0,this.isDelayEnded&&this.startDrag(t)},handleTouchMove:function(t){this.isDragging&&t.preventDefault(),this.handleMove(t)},handleMouseMove:function(t){this.handleMove(t)},handleTouchScroll:function(t){this.isDragging||this.endInteraction(t,!0)},trigger:function(t){this.options[t]&&this.options[t].apply(this,Array.prototype.slice.call(arguments,1)),this[\"_\"+t]&&this[\"_\"+t].apply(this,Array.prototype.slice.call(arguments,1))}});ge.mixin({isAutoScroll:!1,scrollBounds:null,scrollTopVel:null,scrollLeftVel:null,scrollIntervalId:null,scrollSensitivity:30,scrollSpeed:200,scrollIntervalMs:50,initAutoScroll:function(){var t=this.scrollEl;this.isAutoScroll=this.options.scroll&&t&&!t.is(window)&&!t.is(document),this.isAutoScroll&&this.listenTo(t,\"scroll\",at(this.handleDebouncedScroll,100))},destroyAutoScroll:function(){this.endAutoScroll(),this.isAutoScroll&&this.stopListeningTo(this.scrollEl,\"scroll\")},computeScrollBounds:function(){this.isAutoScroll&&(this.scrollBounds=h(this.scrollEl))},updateAutoScroll:function(t){var e,n,i,r,s=this.scrollSensitivity,o=this.scrollBounds,l=0,a=0;o&&(e=(s-(E(t)-o.top))/s,n=(s-(o.bottom-E(t)))/s,i=(s-(w(t)-o.left))/s,r=(s-(o.right-w(t)))/s,e>=0&&e<=1?l=e*this.scrollSpeed*-1:n>=0&&n<=1&&(l=n*this.scrollSpeed),i>=0&&i<=1?a=i*this.scrollSpeed*-1:r>=0&&r<=1&&(a=r*this.scrollSpeed)),this.setScrollVel(l,a)},setScrollVel:function(t,e){this.scrollTopVel=t,this.scrollLeftVel=e,this.constrainScrollVel(),!this.scrollTopVel&&!this.scrollLeftVel||this.scrollIntervalId||(this.scrollIntervalId=setInterval(lt(this,\"scrollIntervalFunc\"),this.scrollIntervalMs))},constrainScrollVel:function(){var t=this.scrollEl;this.scrollTopVel<0?t.scrollTop()<=0&&(this.scrollTopVel=0):this.scrollTopVel>0&&t.scrollTop()+t[0].clientHeight>=t[0].scrollHeight&&(this.scrollTopVel=0),this.scrollLeftVel<0?t.scrollLeft()<=0&&(this.scrollLeftVel=0):this.scrollLeftVel>0&&t.scrollLeft()+t[0].clientWidth>=t[0].scrollWidth&&(this.scrollLeftVel=0)},scrollIntervalFunc:function(){var t=this.scrollEl,e=this.scrollIntervalMs/1e3;this.scrollTopVel&&t.scrollTop(t.scrollTop()+this.scrollTopVel*e),this.scrollLeftVel&&t.scrollLeft(t.scrollLeft()+this.scrollLeftVel*e),this.constrainScrollVel(),this.scrollTopVel||this.scrollLeftVel||this.endAutoScroll()},endAutoScroll:function(){this.scrollIntervalId&&(clearInterval(this.scrollIntervalId),this.scrollIntervalId=null,this.handleScrollEnd())},handleDebouncedScroll:function(){this.scrollIntervalId||this.handleScrollEnd()},handleScrollEnd:function(){}});var pe=ge.extend({component:null,origHit:null,hit:null,coordAdjust:null,constructor:function(t,e){ge.call(this,e),this.component=t},handleInteractionStart:function(t){var e,n,i,r=this.subjectEl;this.computeCoords(),t?(n={left:w(t),top:E(t)},i=n,r&&(e=h(r),i=x(i,e)),this.origHit=this.queryHit(i.left,i.top),r&&this.options.subjectCenter&&(this.origHit&&(e=R(this.origHit,e)||e),i=I(e)),this.coordAdjust=k(i,n)):(this.origHit=null,this.coordAdjust=null),ge.prototype.handleInteractionStart.apply(this,arguments)},computeCoords:function(){this.component.prepareHits(),this.computeScrollBounds()},handleDragStart:function(t){var e;ge.prototype.handleDragStart.apply(this,arguments),e=this.queryHit(w(t),E(t)),e&&this.handleHitOver(e)},handleDrag:function(t,e,n){var i;ge.prototype.handleDrag.apply(this,arguments),i=this.queryHit(w(n),E(n)),Tt(i,this.hit)||(this.hit&&this.handleHitOut(),i&&this.handleHitOver(i))},handleDragEnd:function(){this.handleHitDone(),ge.prototype.handleDragEnd.apply(this,arguments)},handleHitOver:function(t){var e=Tt(t,this.origHit);this.hit=t,this.trigger(\"hitOver\",this.hit,e,this.origHit)},handleHitOut:function(){this.hit&&(this.trigger(\"hitOut\",this.hit),this.handleHitDone(),this.hit=null)},handleHitDone:function(){this.hit&&this.trigger(\"hitDone\",this.hit)},handleInteractionEnd:function(){ge.prototype.handleInteractionEnd.apply(this,arguments),this.origHit=null,this.hit=null,this.component.releaseHits()},handleScrollEnd:function(){ge.prototype.handleScrollEnd.apply(this,arguments),this.computeCoords()},queryHit:function(t,e){return this.coordAdjust&&(t+=this.coordAdjust.left,e+=this.coordAdjust.top),this.component.queryHit(t,e)}}),ve=St.extend(ce,{options:null,sourceEl:null,el:null,parentEl:null,top0:null,left0:null,y0:null,x0:null,topDelta:null,leftDelta:null,isFollowing:!1,isHidden:!1,isAnimating:!1,constructor:function(e,n){this.options=n=n||{},this.sourceEl=e,this.parentEl=n.parentEl?t(n.parentEl):e.parent()},start:function(e){this.isFollowing||(this.isFollowing=!0,this.y0=E(e),this.x0=w(e),this.topDelta=0,this.leftDelta=0,this.isHidden||this.updatePosition(),b(e)?this.listenTo(t(document),\"touchmove\",this.handleMove):this.listenTo(t(document),\"mousemove\",this.handleMove))},stop:function(e,n){function i(){r.isAnimating=!1,r.removeElement(),r.top0=r.left0=null,n&&n()}var r=this,s=this.options.revertDuration;this.isFollowing&&!this.isAnimating&&(this.isFollowing=!1,this.stopListeningTo(t(document)),e&&s&&!this.isHidden?(this.isAnimating=!0,this.el.animate({top:this.top0,left:this.left0},{duration:s,complete:i})):i())},getEl:function(){var t=this.el;return t||(t=this.el=this.sourceEl.clone().addClass(this.options.additionalClass||\"\").css({position:\"absolute\",visibility:\"\",display:this.isHidden?\"none\":\"\",margin:0,right:\"auto\",bottom:\"auto\",width:this.sourceEl.width(),height:this.sourceEl.height(),opacity:this.options.opacity||\"\",zIndex:this.options.zIndex}),t.addClass(\"fc-unselectable\"),t.appendTo(this.parentEl)),t},removeElement:function(){this.el&&(this.el.remove(),this.el=null)},updatePosition:function(){var t,e;this.getEl(),null===this.top0&&(t=this.sourceEl.offset(),e=this.el.offsetParent().offset(),this.top0=t.top-e.top,this.left0=t.left-e.left),this.el.css({top:this.top0+this.topDelta,left:this.left0+this.leftDelta})},handleMove:function(t){this.topDelta=E(t)-this.y0,this.leftDelta=w(t)-this.x0,this.isHidden||this.updatePosition()},hide:function(){this.isHidden||(this.isHidden=!0,this.el&&this.el.hide())},show:function(){this.isHidden&&(this.isHidden=!1,this.updatePosition(),this.getEl().show())}}),me=qt.Grid=St.extend(ce,de,{hasDayInteractions:!0,view:null,isRTL:null,start:null,end:null,el:null,elsByFill:null,eventTimeFormat:null,displayEventTime:null,displayEventEnd:null,minResizeDuration:null,largeUnit:null,dayDragListener:null,segDragListener:null,segResizeListener:null,externalDragListener:null,constructor:function(t){this.view=t,this.isRTL=t.opt(\"isRTL\"),this.elsByFill={},this.dayDragListener=this.buildDayDragListener(),this.initMouseIgnoring()},computeEventTimeFormat:function(){return this.view.opt(\"smallTimeFormat\")},computeDisplayEventTime:function(){return!0},computeDisplayEventEnd:function(){return!0},setRange:function(t){this.start=t.start.clone(),this.end=t.end.clone(),this.rangeUpdated(),this.processRangeOptions()},rangeUpdated:function(){},processRangeOptions:function(){var t,e,n=this.view;this.eventTimeFormat=n.opt(\"eventTimeFormat\")||n.opt(\"timeFormat\")||this.computeEventTimeFormat(),t=n.opt(\"displayEventTime\"),null==t&&(t=this.computeDisplayEventTime()),e=n.opt(\"displayEventEnd\"),null==e&&(e=this.computeDisplayEventEnd()),this.displayEventTime=t,this.displayEventEnd=e},spanToSegs:function(t){},diffDates:function(t,e){return this.largeUnit?O(t,e,this.largeUnit):N(t,e)},prepareHits:function(){},releaseHits:function(){},queryHit:function(t,e){},getHitSpan:function(t){},getHitEl:function(t){},setElement:function(t){this.el=t,this.hasDayInteractions&&(D(t),this.bindDayHandler(\"touchstart\",this.dayTouchStart),this.bindDayHandler(\"mousedown\",this.dayMousedown)),this.bindSegHandlers(),this.bindGlobalHandlers()},bindDayHandler:function(e,n){var i=this;this.el.on(e,function(e){if(!t(e.target).is(i.segSelector+\",\"+i.segSelector+\" *,.fc-more,a[data-goto]\"))return n.call(i,e)})},removeElement:function(){this.unbindGlobalHandlers(),this.clearDragListeners(),this.el.remove()},renderSkeleton:function(){},renderDates:function(){},unrenderDates:function(){},bindGlobalHandlers:function(){this.listenTo(t(document),{dragstart:this.externalDragStart,sortstart:this.externalDragStart})},unbindGlobalHandlers:function(){this.stopListeningTo(t(document))},dayMousedown:function(t){this.isIgnoringMouse||this.dayDragListener.startInteraction(t,{})},dayTouchStart:function(t){var e=this.view,n=e.opt(\"selectLongPressDelay\");(e.isSelected||e.selectedEvent)&&this.tempIgnoreMouse(),null==n&&(n=e.opt(\"longPressDelay\")),this.dayDragListener.startInteraction(t,{delay:n})},buildDayDragListener:function(){var t,e,n=this,i=this.view,r=i.opt(\"selectable\"),l=new pe(this,{scroll:i.opt(\"dragScroll\"),interactionStart:function(){t=l.origHit,e=null},dragStart:function(){i.unselect()},hitOver:function(i,o,l){l&&(o||(t=null),r&&(e=n.computeSelection(n.getHitSpan(l),n.getHitSpan(i)),e?n.renderSelection(e):e===!1&&s()))},hitOut:function(){t=null,e=null,n.unrenderSelection()},hitDone:function(){o()},interactionEnd:function(r,s){s||(t&&!n.isIgnoringMouse&&i.triggerDayClick(n.getHitSpan(t),n.getHitEl(t),r),e&&i.reportSelection(e,r))}});return l},clearDragListeners:function(){this.dayDragListener.endInteraction(),this.segDragListener&&this.segDragListener.endInteraction(),this.segResizeListener&&this.segResizeListener.endInteraction(),this.externalDragListener&&this.externalDragListener.endInteraction()},renderEventLocationHelper:function(t,e){var n=this.fabricateHelperEvent(t,e);return this.renderHelper(n,e)},fabricateHelperEvent:function(t,e){var n=e?Z(e.event):{};return n.start=t.start.clone(),n.end=t.end?t.end.clone():null,n.allDay=null,this.view.calendar.normalizeEventDates(n),n.className=(n.className||[]).concat(\"fc-helper\"),e||(n.editable=!1),n},renderHelper:function(t,e){},unrenderHelper:function(){},renderSelection:function(t){this.renderHighlight(t)},unrenderSelection:function(){this.unrenderHighlight()},computeSelection:function(t,e){var n=this.computeSelectionSpan(t,e);return!(n&&!this.view.calendar.isSelectionSpanAllowed(n))&&n},computeSelectionSpan:function(t,e){var n=[t.start,t.end,e.start,e.end];return n.sort(st),{start:n[0].clone(),end:n[3].clone()}},renderHighlight:function(t){this.renderFill(\"highlight\",this.spanToSegs(t))},unrenderHighlight:function(){this.unrenderFill(\"highlight\")},highlightSegClasses:function(){return[\"fc-highlight\"]},renderBusinessHours:function(){},unrenderBusinessHours:function(){},getNowIndicatorUnit:function(){},renderNowIndicator:function(t){},unrenderNowIndicator:function(){},renderFill:function(t,e){},unrenderFill:function(t){var e=this.elsByFill[t];e&&(e.remove(),delete this.elsByFill[t])},renderFillSegEls:function(e,n){var i,r=this,s=this[e+\"SegEl\"],o=\"\",l=[];if(n.length){for(i=0;i\"},getDayClasses:function(t,e){var n=this.view,i=n.calendar.getNow(),r=[\"fc-\"+Xt[t.day()]];return 1==n.intervalDuration.as(\"months\")&&t.month()!=n.intervalStart.month()&&r.push(\"fc-other-month\"),t.isSame(i,\"day\")?(r.push(\"fc-today\"),e!==!0&&r.push(n.highlightStateClass)):t *\",mousedOverSeg:null,isDraggingSeg:!1,isResizingSeg:!1,isDraggingExternal:!1,segs:null,renderEvents:function(t){var e,n=[],i=[];for(e=0;el&&o.push({start:l,end:n.start}),l=n.end;return l=e.length?e[e.length-1]+1:e[n]},computeColHeadFormat:function(){return this.rowCnt>1||this.colCnt>10?\"ddd\":this.colCnt>1?this.view.opt(\"dayOfMonthFormat\"):\"dddd\"},sliceRangeByRow:function(t){var e,n,i,r,s,o=this.daysPerRow,l=this.view.computeDayRange(t),a=this.getDateDayIndex(l.start),u=this.getDateDayIndex(l.end.clone().subtract(1,\"days\")),c=[];for(e=0;e'+this.renderHeadTrHtml()+\"
\"},renderHeadIntroHtml:function(){return this.renderIntroHtml()},renderHeadTrHtml:function(){return\"\"+(this.isRTL?\"\":this.renderHeadIntroHtml())+this.renderHeadDateCellsHtml()+(this.isRTL?this.renderHeadIntroHtml():\"\")+\"\"},renderHeadDateCellsHtml:function(){var t,e,n=[];for(t=0;t1?' colspan=\"'+e+'\"':\"\")+(n?\" \"+n:\"\")+\">\"+i.buildGotoAnchorHtml({date:t,forceOff:this.rowCnt>1||1===this.colCnt},tt(t.format(this.colHeadFormat)))+\"\"},renderBgTrHtml:function(t){return\"\"+(this.isRTL?\"\":this.renderBgIntroHtml(t))+this.renderBgCellsHtml(t)+(this.isRTL?this.renderBgIntroHtml(t):\"\")+\"\"},renderBgIntroHtml:function(t){return this.renderIntroHtml()},renderBgCellsHtml:function(t){var e,n,i=[];for(e=0;e\"},renderIntroHtml:function(){},bookendCells:function(t){var e=this.renderIntroHtml();e&&(this.isRTL?t.append(e):t.prepend(e))}},Se=qt.DayGrid=me.extend(ye,{numbersVisible:!1,bottomCoordPadding:0,rowEls:null,cellEls:null,helperEls:null,rowCoordCache:null,colCoordCache:null,renderDates:function(t){var e,n,i=this.view,r=this.rowCnt,s=this.colCnt,o=\"\";for(e=0;e
'+this.renderBgTrHtml(t)+'
'+(this.numbersVisible?\"\"+this.renderNumberTrHtml(t)+\"\":\"\")+\"
\"},renderNumberTrHtml:function(t){return\"\"+(this.isRTL?\"\":this.renderNumberIntroHtml(t))+this.renderNumberCellsHtml(t)+(this.isRTL?this.renderNumberIntroHtml(t):\"\")+\"\"},renderNumberIntroHtml:function(t){return this.renderIntroHtml()},renderNumberCellsHtml:function(t){var e,n,i=[];for(e=0;e',this.view.cellWeekNumbersVisible&&t.day()==n&&(i+=this.view.buildGotoAnchorHtml({date:t,type:\"week\"},{class:\"fc-week-number\"},t.format(\"w\"))),this.view.dayNumbersVisible&&(i+=this.view.buildGotoAnchorHtml(t,{class:\"fc-day-number\"},t.date())),i+=\"\"):\"\"},computeEventTimeFormat:function(){return this.view.opt(\"extraSmallTimeFormat\")},computeDisplayEventEnd:function(){return 1==this.colCnt},rangeUpdated:function(){this.updateDayTable()},spanToSegs:function(t){var e,n,i=this.sliceRangeByRow(t);for(e=0;e');o=n&&n.row===e?n.el.position().top:l.find(\".fc-content-skeleton tbody\").position().top,a.css(\"top\",o).find(\"table\").append(i[e].tbodyEl),l.append(a),r.push(a[0])}),this.helperEls=t(r)},unrenderHelper:function(){this.helperEls&&(this.helperEls.remove(),this.helperEls=null)},fillSegTag:\"td\",renderFill:function(e,n,i){var r,s,o,l=[];for(n=this.renderFillSegEls(e,n),r=0;r
'),s=r.find(\"tr\"),l>0&&s.append(''),s.append(n.el.attr(\"colspan\",a-l)),a'),this.bookendCells(s),r}});Se.mixin({rowStructs:null,unrenderEvents:function(){this.removeSegPopover(),me.prototype.unrenderEvents.apply(this,arguments)},getEventSegs:function(){return me.prototype.getEventSegs.call(this).concat(this.popoverSegs||[])},renderBgSegs:function(e){var n=t.grep(e,function(t){return t.event.allDay});return me.prototype.renderBgSegs.call(this,n)},renderFgSegs:function(e){var n;return e=this.renderFgSegEls(e),n=this.rowStructs=this.renderSegRows(e),this.rowEls.each(function(e,i){t(i).find(\".fc-content-skeleton > table\").append(n[e].tbodyEl)}),e},unrenderFgSegs:function(){for(var t,e=this.rowStructs||[];t=e.pop();)t.tbodyEl.remove();this.rowStructs=null},renderSegRows:function(t){var e,n,i=[];for(e=this.groupSegRows(t),n=0;n'+tt(n)+\"\")),i=''+(tt(s.title||\"\")||\" \")+\"\",'
'+(this.isRTL?i+\" \"+d:d+\" \"+i)+\"
\"+(l?'
':\"\")+(a?'
':\"\")+\"\"},renderSegRow:function(e,n){function i(e){for(;o\"),l.append(c)),v[r][o]=c,m[r][o]=c,o++}var r,s,o,l,a,u,c,d=this.colCnt,h=this.buildSegLevels(n),f=Math.max(1,h.length),g=t(\"\"),p=[],v=[],m=[];for(r=0;r\"),p.push([]),v.push([]),m.push([]),s)for(a=0;a').append(u.el),u.leftCol!=u.rightCol?c.attr(\"colspan\",u.rightCol-u.leftCol+1):m[r][o]=c;o<=u.rightCol;)v[r][o]=c,p[r][o]=u,o++;l.append(c)}i(d),this.bookendCells(l),g.append(l)}return{row:e,tbodyEl:g,cellMatrix:v,segMatrix:p,segLevels:h,segs:n}},buildSegLevels:function(t){var e,n,i,r=[];for(this.sortEventSegs(t),e=0;e td > :first-child\").each(n),r.position().top+s>l)return i;return!1},limitRow:function(e,n){function i(i){for(;b\").append(y),h.append(m),E.push(m[0])),b++}var r,s,o,l,a,u,c,d,h,f,g,p,v,m,y,S=this,w=this.rowStructs[e],E=[],b=0;if(n&&n').attr(\"rowspan\",f),u=d[p],y=this.renderMoreLink(e,a.leftCol+p,[a].concat(u)),m=t(\"
\").append(y),v.append(m),g.push(v[0]),E.push(v[0]);h.addClass(\"fc-limited\").after(t(g)),o.push(h[0])}}i(this.colCnt),w.moreEls=t(E),w.limitedEls=t(o)}},unlimitRow:function(t){var e=this.rowStructs[t];e.moreEls&&(e.moreEls.remove(),e.moreEls=null),e.limitedEls&&(e.limitedEls.removeClass(\"fc-limited\"),e.limitedEls=null)},renderMoreLink:function(e,n,i){var r=this,s=this.view;return t('').text(this.getMoreLinkText(i.length)).on(\"click\",function(o){var l=s.opt(\"eventLimitClick\"),a=r.getCellDate(e,n),u=t(this),c=r.getCellEl(e,n),d=r.getCellSegs(e,n),h=r.resliceDaySegs(d,a),f=r.resliceDaySegs(i,a);\"function\"==typeof l&&(l=s.publiclyTrigger(\"eventLimitClick\",null,{date:a,dayEl:c,moreEl:u,segs:h,hiddenSegs:f},o)),\"popover\"===l?r.showSegPopover(e,n,u,h):\"string\"==typeof l&&s.calendar.zoomTo(a,l)})},showSegPopover:function(t,e,n,i){var r,s,o=this,l=this.view,a=n.parent();r=1==this.rowCnt?l.el:this.rowEls.eq(t),s={className:\"fc-more-popover\",content:this.renderSegPopoverContent(t,e,i),parentEl:this.view.el,top:r.offset().top,autoHide:!0,viewportConstrain:l.opt(\"popoverViewportConstrain\"),hide:function(){if(o.popoverSegs)for(var t,e=0;e'+tt(l)+'
'),u=a.find(\".fc-event-container\");for(i=this.renderFgSegEls(i,!0),this.popoverSegs=i,r=0;r'+this.renderBgTrHtml(0)+'
\"},renderSlatRowHtml:function(){for(var t,n,i,r=this.view,s=this.isRTL,o=\"\",l=e.duration(+this.minTime);l\"+(n?\"\"+tt(t.format(this.labelFormat))+\"\":\"\")+\"\",o+='\"+(s?\"\":i)+''+(s?i:\"\")+\"\",l.add(this.slotDuration);return o},processOptions:function(){var n,i=this.view,r=i.opt(\"slotDuration\"),s=i.opt(\"snapDuration\");r=e.duration(r),s=s?e.duration(s):r,this.slotDuration=r,this.snapDuration=s,this.snapsPerSlot=r/s,this.minResizeDuration=s,this.minTime=e.duration(i.opt(\"minTime\")),this.maxTime=e.duration(i.opt(\"maxTime\")),n=i.opt(\"slotLabelFormat\"),t.isArray(n)&&(n=n[n.length-1]),this.labelFormat=n||i.opt(\"smallTimeFormat\"),n=i.opt(\"slotLabelInterval\"),this.labelInterval=n?e.duration(n):this.computeLabelInterval(r)},computeLabelInterval:function(t){var n,i,r;for(n=Oe.length-1;n>=0;n--)if(i=e.duration(Oe[n]),r=_(i,t),ot(r)&&r>1)return i;return e.duration(t)},computeEventTimeFormat:function(){return this.view.opt(\"noMeridiemTimeFormat\")},computeDisplayEventEnd:function(){return!0},prepareHits:function(){this.colCoordCache.build(),this.slatCoordCache.build()},releaseHits:function(){this.colCoordCache.clear()},queryHit:function(t,e){var n=this.snapsPerSlot,i=this.colCoordCache,r=this.slatCoordCache;if(i.isLeftInBounds(t)&&r.isTopInBounds(e)){var s=i.getHorizontalIndex(t),o=r.getVerticalIndex(e);if(null!=s&&null!=o){var l=r.getTopOffset(o),a=r.getHeight(o),u=(e-l)/a,c=Math.floor(u*n),d=o*n+c,h=l+c/n*a,f=l+(c+1)/n*a;return{col:s,snap:d,component:this,left:i.getLeftOffset(s),right:i.getRightOffset(s),top:h,bottom:f}}}},getHitSpan:function(t){var e,n=this.getCellDate(0,t.col),i=this.computeSnapTime(t.snap);return n.time(i),e=n.clone().add(this.snapDuration),{start:n,end:e}},getHitEl:function(t){return this.colEls.eq(t.col)},rangeUpdated:function(){this.updateDayTable()},computeSnapTime:function(t){return e.duration(this.minTime+this.snapDuration*t)},spanToSegs:function(t){var e,n=this.sliceRangeByTimes(t);for(e=0;e
').css(\"top\",r).appendTo(this.colContainerEls.eq(i[n].col))[0]);i.length>0&&s.push(t('
').css(\"top\",r).appendTo(this.el.find(\".fc-content-skeleton\"))[0]),this.nowIndicatorEls=t(s)},unrenderNowIndicator:function(){this.nowIndicatorEls&&(this.nowIndicatorEls.remove(),this.nowIndicatorEls=null)},renderSelection:function(t){this.view.opt(\"selectHelper\")?this.renderEventLocationHelper(t):this.renderHighlight(t)},unrenderSelection:function(){this.unrenderHelper(),this.unrenderHighlight()},renderHighlight:function(t){this.renderHighlightSegs(this.spanToSegs(t))},unrenderHighlight:function(){this.unrenderHighlightSegs()}});we.mixin({colContainerEls:null,fgContainerEls:null,bgContainerEls:null,helperContainerEls:null,highlightContainerEls:null,businessContainerEls:null,fgSegs:null,bgSegs:null,helperSegs:null,highlightSegs:null,businessSegs:null,renderContentSkeleton:function(){var e,n,i=\"\";for(e=0;e
';n=t('
'+i+\"
\"),this.colContainerEls=n.find(\".fc-content-col\"),this.helperContainerEls=n.find(\".fc-helper-container\"),this.fgContainerEls=n.find(\".fc-event-container:not(.fc-helper-container)\"),this.bgContainerEls=n.find(\".fc-bgevent-container\"),this.highlightContainerEls=n.find(\".fc-highlight-container\"),this.businessContainerEls=n.find(\".fc-business-container\"),this.bookendCells(n.find(\"tr\")),this.el.append(n)},renderFgSegs:function(t){return t=this.renderFgSegsIntoContainers(t,this.fgContainerEls),this.fgSegs=t,t},unrenderFgSegs:function(){this.unrenderNamedSegs(\"fgSegs\")},renderHelperSegs:function(e,n){var i,r,s,o=[];for(e=this.renderFgSegsIntoContainers(e,this.helperContainerEls),i=0;i
'+(n?'
'+tt(n)+\"
\":\"\")+(o.title?'
'+tt(o.title)+\"
\":\"\")+'
'+(u?'
':\"\")+\"\"},updateSegVerticals:function(t){this.computeSegVerticals(t),this.assignSegVerticals(t)},computeSegVerticals:function(t){var e,n;for(e=0;e1?\"ll\":\"LL\"},formatRange:function(t,e,n){var i=t.end;return i.hasTime()||(i=i.clone().subtract(1)),gt(t.start,i,e,n,this.opt(\"isRTL\"))},getAllDayHtml:function(){return this.opt(\"allDayHtml\")||tt(this.opt(\"allDayText\"))},buildGotoAnchorHtml:function(e,n,i){var r,s,o,l;return t.isPlainObject(e)?(r=e.date,s=e.type,o=e.forceOff):r=e,r=qt.moment(r),l={date:r.format(\"YYYY-MM-DD\"),type:s||\"day\"},\"string\"==typeof n&&(i=n,n=null),n=n?\" \"+it(n):\"\",i=i||\"\",!o&&this.opt(\"navLinks\")?\"'+i+\"\":\"\"+i+\"\"},setElement:function(t){this.el=t,this.bindGlobalHandlers(),this.renderSkeleton()},removeElement:function(){this.unsetDate(),this.unrenderSkeleton(),this.unbindGlobalHandlers(),this.el.remove()},renderSkeleton:function(){},unrenderSkeleton:function(){},setDate:function(t){var e=this.isDateSet;this.isDateSet=!0,this.handleDate(t,e),this.trigger(e?\"dateReset\":\"dateSet\",t)},unsetDate:function(){this.isDateSet&&(this.isDateSet=!1,this.handleDateUnset(),this.trigger(\"dateUnset\"))},handleDate:function(t,e){var n=this;this.unbindEvents(),this.requestDateRender(t).then(function(){n.bindEvents()})},handleDateUnset:function(){this.unbindEvents(),this.requestDateUnrender()},requestDateRender:function(t){var e=this;return this.dateRenderQueue.add(function(){return e.executeDateRender(t)})},requestDateUnrender:function(){var t=this;return this.dateRenderQueue.add(function(){return t.executeDateUnrender()})},executeDateRender:function(t){var e=this;return t?this.captureInitialScroll():this.captureScroll(),this.freezeHeight(),this.executeDateUnrender().then(function(){t&&e.setRange(e.computeRange(t)),e.render&&e.render(),e.renderDates(),e.updateSize(),e.renderBusinessHours(),e.startNowIndicator(),e.thawHeight(),e.releaseScroll(),e.isDateRendered=!0,e.onDateRender(),e.trigger(\"dateRender\")})},executeDateUnrender:function(){var t=this;return t.isDateRendered?this.requestEventsUnrender().then(function(){t.unselect(),t.stopNowIndicator(),t.triggerUnrender(),t.unrenderBusinessHours(),t.unrenderDates(),t.destroy&&t.destroy(),t.isDateRendered=!1,t.trigger(\"dateUnrender\")}):bt.resolve()},onDateRender:function(){this.triggerRender()},renderDates:function(){},unrenderDates:function(){},triggerRender:function(){this.publiclyTrigger(\"viewRender\",this,this,this.el);\n},triggerUnrender:function(){this.publiclyTrigger(\"viewDestroy\",this,this,this.el)},bindGlobalHandlers:function(){this.listenTo(t(document),\"mousedown\",this.handleDocumentMousedown),this.listenTo(t(document),\"touchstart\",this.processUnselect)},unbindGlobalHandlers:function(){this.stopListeningTo(t(document))},initThemingProps:function(){var t=this.opt(\"theme\")?\"ui\":\"fc\";this.widgetHeaderClass=t+\"-widget-header\",this.widgetContentClass=t+\"-widget-content\",this.highlightStateClass=t+\"-state-highlight\"},renderBusinessHours:function(){},unrenderBusinessHours:function(){},startNowIndicator:function(){var t,n,i,r=this;this.opt(\"nowIndicator\")&&(t=this.getNowIndicatorUnit(),t&&(n=lt(this,\"updateNowIndicator\"),this.initialNowDate=this.calendar.getNow(),this.initialNowQueriedMs=+new Date,this.renderNowIndicator(this.initialNowDate),this.isNowIndicatorRendered=!0,i=this.initialNowDate.clone().startOf(t).add(1,t)-this.initialNowDate,this.nowIndicatorTimeoutID=setTimeout(function(){r.nowIndicatorTimeoutID=null,n(),i=+e.duration(1,t),i=Math.max(100,i),r.nowIndicatorIntervalID=setInterval(n,i)},i)))},updateNowIndicator:function(){this.isNowIndicatorRendered&&(this.unrenderNowIndicator(),this.renderNowIndicator(this.initialNowDate.clone().add(new Date-this.initialNowQueriedMs)))},stopNowIndicator:function(){this.isNowIndicatorRendered&&(this.nowIndicatorTimeoutID&&(clearTimeout(this.nowIndicatorTimeoutID),this.nowIndicatorTimeoutID=null),this.nowIndicatorIntervalID&&(clearTimeout(this.nowIndicatorIntervalID),this.nowIndicatorIntervalID=null),this.unrenderNowIndicator(),this.isNowIndicatorRendered=!1)},getNowIndicatorUnit:function(){},renderNowIndicator:function(t){},unrenderNowIndicator:function(){},updateSize:function(t){t&&this.captureScroll(),this.updateHeight(t),this.updateWidth(t),this.updateNowIndicator(),t&&this.releaseScroll()},updateWidth:function(t){},updateHeight:function(t){var e=this.calendar;this.setHeight(e.getSuggestedViewHeight(),e.isHeightAuto())},setHeight:function(t,e){},capturedScroll:null,capturedScrollDepth:0,captureScroll:function(){return!this.capturedScrollDepth++&&(this.capturedScroll=this.isDateRendered?this.queryScroll():{},!0)},captureInitialScroll:function(e){this.captureScroll()&&(this.capturedScroll.isInitial=!0,e?t.extend(this.capturedScroll,e):this.capturedScroll.isComputed=!0)},releaseScroll:function(){var e=this.capturedScroll,n=this.discardScroll();e.isComputed&&(n?t.extend(e,this.computeInitialScroll()):e=null),e&&(e.isInitial?this.hardSetScroll(e):this.setScroll(e))},discardScroll:function(){return!--this.capturedScrollDepth&&(this.capturedScroll=null,!0)},computeInitialScroll:function(){return{}},queryScroll:function(){return{}},hardSetScroll:function(t){var e=this,n=function(){e.setScroll(t)};n(),setTimeout(n,0)},setScroll:function(t){},freezeHeight:function(){this.calendar.freezeContentHeight()},thawHeight:function(){this.calendar.thawContentHeight()},bindEvents:function(){var t=this;this.isEventsBound||(this.isEventsBound=!0,this.rejectOn(\"eventsUnbind\",this.requestEvents()).then(function(e){t.listenTo(t.calendar,\"eventsReset\",t.setEvents),t.setEvents(e)}))},unbindEvents:function(){this.isEventsBound&&(this.isEventsBound=!1,this.stopListeningTo(this.calendar,\"eventsReset\"),this.unsetEvents(),this.trigger(\"eventsUnbind\"))},setEvents:function(t){var e=this.isEventSet;this.isEventsSet=!0,this.handleEvents(t,e),this.trigger(e?\"eventsReset\":\"eventsSet\",t)},unsetEvents:function(){this.isEventsSet&&(this.isEventsSet=!1,this.handleEventsUnset(),this.trigger(\"eventsUnset\"))},whenEventsSet:function(){var t=this;return this.isEventsSet?bt.resolve(this.getCurrentEvents()):new bt(function(e){t.one(\"eventsSet\",e)})},handleEvents:function(t,e){this.requestEventsRender(t)},handleEventsUnset:function(){this.requestEventsUnrender()},requestEventsRender:function(t){var e=this;return this.eventRenderQueue.add(function(){return e.executeEventsRender(t)})},requestEventsUnrender:function(){var t=this;return this.isEventsRendered?this.eventRenderQueue.addQuickly(function(){return t.executeEventsUnrender()}):bt.resolve()},requestCurrentEventsRender:function(){return this.isEventsSet?void this.requestEventsRender(this.getCurrentEvents()):bt.reject()},executeEventsRender:function(t){var e=this;return this.captureScroll(),this.freezeHeight(),this.executeEventsUnrender().then(function(){e.renderEvents(t),e.thawHeight(),e.releaseScroll(),e.isEventsRendered=!0,e.onEventsRender(),e.trigger(\"eventsRender\")})},executeEventsUnrender:function(){return this.isEventsRendered&&(this.onBeforeEventsUnrender(),this.captureScroll(),this.freezeHeight(),this.destroyEvents&&this.destroyEvents(),this.unrenderEvents(),this.thawHeight(),this.releaseScroll(),this.isEventsRendered=!1,this.trigger(\"eventsUnrender\")),bt.resolve()},onEventsRender:function(){this.renderedEventSegEach(function(t){this.publiclyTrigger(\"eventAfterRender\",t.event,t.event,t.el)}),this.publiclyTrigger(\"eventAfterAllRender\")},onBeforeEventsUnrender:function(){this.renderedEventSegEach(function(t){this.publiclyTrigger(\"eventDestroy\",t.event,t.event,t.el)})},renderEvents:function(t){},unrenderEvents:function(){},requestEvents:function(){return this.calendar.requestEvents(this.start,this.end)},getCurrentEvents:function(){return this.calendar.getPrunedEventCache()},resolveEventEl:function(e,n){var i=this.publiclyTrigger(\"eventRender\",e,e,n);return i===!1?n=null:i&&i!==!0&&(n=t(i)),n},showEvent:function(t){this.renderedEventSegEach(function(t){t.el.css(\"visibility\",\"\")},t)},hideEvent:function(t){this.renderedEventSegEach(function(t){t.el.css(\"visibility\",\"hidden\")},t)},renderedEventSegEach:function(t,e){var n,i=this.getEventSegs();for(n=0;n=this.nextDayThreshold&&r.add(1,\"days\")),(!i||r<=n)&&(r=n.clone().add(1,\"days\")),{start:n,end:r}},isMultiDayEvent:function(t){var e=this.computeDayRange(t);return e.end.diff(e.start,\"days\")>1}}),be=qt.Scroller=St.extend({el:null,scrollEl:null,overflowX:null,overflowY:null,constructor:function(t){t=t||{},this.overflowX=t.overflowX||t.overflow||\"auto\",this.overflowY=t.overflowY||t.overflow||\"auto\"},render:function(){this.el=this.renderEl(),this.applyOverflow()},renderEl:function(){return this.scrollEl=t('
')},clear:function(){this.setHeight(\"auto\"),this.applyOverflow()},destroy:function(){this.el.remove()},applyOverflow:function(){this.scrollEl.css({\"overflow-x\":this.overflowX,\"overflow-y\":this.overflowY})},lockOverflow:function(t){var e=this.overflowX,n=this.overflowY;t=t||this.getScrollbarWidths(),\"auto\"===e&&(e=t.top||t.bottom||this.scrollEl[0].scrollWidth-1>this.scrollEl[0].clientWidth?\"scroll\":\"hidden\"),\"auto\"===n&&(n=t.left||t.right||this.scrollEl[0].scrollHeight-1>this.scrollEl[0].clientHeight?\"scroll\":\"hidden\"),this.scrollEl.css({\"overflow-x\":e,\"overflow-y\":n})},setHeight:function(t){this.scrollEl.height(t)},getScrollTop:function(){return this.scrollEl.scrollTop()},setScrollTop:function(t){this.scrollEl.scrollTop(t)},getClientWidth:function(){return this.scrollEl[0].clientWidth},getClientHeight:function(){return this.scrollEl[0].clientHeight},getScrollbarWidths:function(){return p(this.scrollEl)}});Vt.prototype.proxyCall=function(t){var e=Array.prototype.slice.call(arguments,1),n=[];return this.items.forEach(function(i){n.push(i[t].apply(i,e))}),n};var De=qt.Calendar=St.extend({dirDefaults:null,localeDefaults:null,overrides:null,dynamicOverrides:null,options:null,viewSpecCache:null,view:null,header:null,footer:null,loadingLevel:0,constructor:_t,initialize:function(){},populateOptionsHash:function(){var t,e,i,r;t=J(this.dynamicOverrides.locale,this.overrides.locale),e=Te[t],e||(t=De.defaults.locale,e=Te[t]||{}),i=J(this.dynamicOverrides.isRTL,this.overrides.isRTL,e.isRTL,De.defaults.isRTL),r=i?De.rtlDefaults:{},this.dirDefaults=r,this.localeDefaults=e,this.options=n([De.defaults,r,e,this.overrides,this.dynamicOverrides]),Yt(this.options)},getViewSpec:function(t){var e=this.viewSpecCache;return e[t]||(e[t]=this.buildViewSpec(t))},getUnitViewSpec:function(e){var n,i,r;if(t.inArray(e,Kt)!=-1)for(n=this.header.getViewsWithButtons(),t.each(qt.views,function(t){n.push(t)}),i=0;i=n&&e.end<=i},De.prototype.getPeerEvents=function(t,e){var n,i,r=this.getEventCache(),s=[];for(n=0;nn};var ke={id:\"_fcBusinessHours\",start:\"09:00\",end:\"17:00\",dow:[1,2,3,4,5],rendering:\"inverse-background\"};De.prototype.getCurrentBusinessHourEvents=function(t){return this.computeBusinessHourEvents(t,this.options.businessHours)},De.prototype.computeBusinessHourEvents=function(e,n){return n===!0?this.expandBusinessHourEvents(e,[{}]):t.isPlainObject(n)?this.expandBusinessHourEvents(e,[n]):t.isArray(n)?this.expandBusinessHourEvents(e,n,!0):[]},De.prototype.expandBusinessHourEvents=function(e,n,i){var r,s,o=this.getView(),l=[];for(r=0;r1,this.opt(\"weekNumbers\")&&(this.opt(\"weekNumbersWithinDays\")?(this.cellWeekNumbersVisible=!0,this.colWeekNumbersVisible=!1):(this.cellWeekNumbersVisible=!1,this.colWeekNumbersVisible=!0)),this.dayGrid.numbersVisible=this.dayNumbersVisible||this.cellWeekNumbersVisible||this.colWeekNumbersVisible,this.el.addClass(\"fc-basic-view\").html(this.renderSkeletonHtml()),this.renderHead(),this.scroller.render();var e=this.scroller.el.addClass(\"fc-day-grid-container\"),n=t('
').appendTo(e);this.el.find(\".fc-body > tr > td\").append(e),this.dayGrid.setElement(n),this.dayGrid.renderDates(this.hasRigidRows())},renderHead:function(){this.headContainerEl=this.el.find(\".fc-head-container\").html(this.dayGrid.renderHeadHtml()),this.headRowEl=this.headContainerEl.find(\".fc-row\")},unrenderDates:function(){this.dayGrid.unrenderDates(),this.dayGrid.removeElement(),this.scroller.destroy()},renderBusinessHours:function(){this.dayGrid.renderBusinessHours()},unrenderBusinessHours:function(){this.dayGrid.unrenderBusinessHours()},renderSkeletonHtml:function(){return'
'},weekNumberStyleAttr:function(){return null!==this.weekNumberWidth?'style=\"width:'+this.weekNumberWidth+'px\"':\"\"},hasRigidRows:function(){var t=this.opt(\"eventLimit\");return t&&\"number\"!=typeof t},updateWidth:function(){this.colWeekNumbersVisible&&(this.weekNumberWidth=u(this.el.find(\".fc-week-number\")))},setHeight:function(t,e){var n,s,o=this.opt(\"eventLimit\");this.scroller.clear(),r(this.headRowEl),this.dayGrid.removeSegPopover(),o&&\"number\"==typeof o&&this.dayGrid.limitRows(o),n=this.computeScrollerHeight(t),this.setGridHeight(n,e),o&&\"number\"!=typeof o&&this.dayGrid.limitRows(o),e||(this.scroller.setHeight(n),s=this.scroller.getScrollbarWidths(),(s.left||s.right)&&(i(this.headRowEl,s),n=this.computeScrollerHeight(t),this.scroller.setHeight(n)),this.scroller.lockOverflow(s))},computeScrollerHeight:function(t){return t-c(this.el,this.scroller.el)},setGridHeight:function(t,e){e?a(this.dayGrid.rowEls):l(this.dayGrid.rowEls,t,!0)},computeInitialScroll:function(){return{top:0}},queryScroll:function(){return{top:this.scroller.getScrollTop()}},setScroll:function(t){this.scroller.setScrollTop(t.top)},prepareHits:function(){this.dayGrid.prepareHits()},releaseHits:function(){this.dayGrid.releaseHits()},queryHit:function(t,e){return this.dayGrid.queryHit(t,e)},getHitSpan:function(t){return this.dayGrid.getHitSpan(t)},getHitEl:function(t){return this.dayGrid.getHitEl(t)},renderEvents:function(t){this.dayGrid.renderEvents(t),this.updateHeight()},getEventSegs:function(){return this.dayGrid.getEventSegs()},unrenderEvents:function(){this.dayGrid.unrenderEvents()},renderDrag:function(t,e){return this.dayGrid.renderDrag(t,e)},unrenderDrag:function(){this.dayGrid.unrenderDrag()},renderSelection:function(t){this.dayGrid.renderSelection(t)},unrenderSelection:function(){this.dayGrid.unrenderSelection()}}),Me={renderHeadIntroHtml:function(){var t=this.view;return t.colWeekNumbersVisible?'\"+tt(t.opt(\"weekNumberTitle\"))+\"\":\"\"},renderNumberIntroHtml:function(t){var e=this.view,n=this.getCellDate(t,0);return e.colWeekNumbersVisible?'\"+e.buildGotoAnchorHtml({date:n,type:\"week\",forceOff:1===this.colCnt},n.format(\"w\"))+\"\":\"\"},renderBgIntroHtml:function(){var t=this.view;return t.colWeekNumbersVisible?'\":\"\"},renderIntroHtml:function(){var t=this.view;return t.colWeekNumbersVisible?'\":\"\"}},Be=qt.MonthView=Le.extend({computeRange:function(t){var e,n=Le.prototype.computeRange.call(this,t);return this.isFixedWeeks()&&(e=Math.ceil(n.end.diff(n.start,\"weeks\",!0)),n.end.add(6-e,\"weeks\")),n},setGridHeight:function(t,e){e&&(t*=this.rowCnt/6),l(this.dayGrid.rowEls,t,!e)},isFixedWeeks:function(){return this.opt(\"fixedWeekCount\")}});Zt.basic={class:Le},Zt.basicDay={type:\"basic\",duration:{days:1}},Zt.basicWeek={type:\"basic\",duration:{weeks:1}},Zt.month={class:Be,duration:{months:1},defaults:{fixedWeekCount:!0}};var ze=qt.AgendaView=Ee.extend({scroller:null,timeGridClass:we,timeGrid:null,dayGridClass:Se,dayGrid:null,axisWidth:null,headContainerEl:null,noScrollRowEls:null,bottomRuleEl:null,initialize:function(){this.timeGrid=this.instantiateTimeGrid(),this.opt(\"allDaySlot\")&&(this.dayGrid=this.instantiateDayGrid()),this.scroller=new be({overflowX:\"hidden\",overflowY:\"auto\"})},instantiateTimeGrid:function(){var t=this.timeGridClass.extend(Fe);return new t(this)},instantiateDayGrid:function(){var t=this.dayGridClass.extend(Ne);return new t(this)},setRange:function(t){Ee.prototype.setRange.call(this,t),this.timeGrid.setRange(t),this.dayGrid&&this.dayGrid.setRange(t)},renderDates:function(){this.el.addClass(\"fc-agenda-view\").html(this.renderSkeletonHtml()),this.renderHead(),this.scroller.render();var e=this.scroller.el.addClass(\"fc-time-grid-container\"),n=t('
').appendTo(e);this.el.find(\".fc-body > tr > td\").append(e),this.timeGrid.setElement(n),this.timeGrid.renderDates(),this.bottomRuleEl=t('
').appendTo(this.timeGrid.el),this.dayGrid&&(this.dayGrid.setElement(this.el.find(\".fc-day-grid\")),this.dayGrid.renderDates(),this.dayGrid.bottomCoordPadding=this.dayGrid.el.next(\"hr\").outerHeight()),this.noScrollRowEls=this.el.find(\".fc-row:not(.fc-scroller *)\")},renderHead:function(){this.headContainerEl=this.el.find(\".fc-head-container\").html(this.timeGrid.renderHeadHtml())},unrenderDates:function(){this.timeGrid.unrenderDates(),this.timeGrid.removeElement(),this.dayGrid&&(this.dayGrid.unrenderDates(),this.dayGrid.removeElement()),this.scroller.destroy()},renderSkeletonHtml:function(){return'
'+(this.dayGrid?'

':\"\")+\"
\"},axisStyleAttr:function(){return null!==this.axisWidth?'style=\"width:'+this.axisWidth+'px\"':\"\"},renderBusinessHours:function(){this.timeGrid.renderBusinessHours(),this.dayGrid&&this.dayGrid.renderBusinessHours()},unrenderBusinessHours:function(){this.timeGrid.unrenderBusinessHours(),this.dayGrid&&this.dayGrid.unrenderBusinessHours()},getNowIndicatorUnit:function(){return this.timeGrid.getNowIndicatorUnit()},renderNowIndicator:function(t){this.timeGrid.renderNowIndicator(t)},unrenderNowIndicator:function(){this.timeGrid.unrenderNowIndicator()},updateSize:function(t){this.timeGrid.updateSize(t),Ee.prototype.updateSize.call(this,t)},updateWidth:function(){this.axisWidth=u(this.el.find(\".fc-axis\"))},setHeight:function(t,e){var n,s,o;this.bottomRuleEl.hide(),this.scroller.clear(),r(this.noScrollRowEls),this.dayGrid&&(this.dayGrid.removeSegPopover(),n=this.opt(\"eventLimit\"),n&&\"number\"!=typeof n&&(n=Ge),n&&this.dayGrid.limitRows(n)),e||(s=this.computeScrollerHeight(t),this.scroller.setHeight(s),o=this.scroller.getScrollbarWidths(),(o.left||o.right)&&(i(this.noScrollRowEls,o),s=this.computeScrollerHeight(t),this.scroller.setHeight(s)),this.scroller.lockOverflow(o),this.timeGrid.getTotalSlatHeight()\"+e.buildGotoAnchorHtml({date:this.start,type:\"week\",forceOff:this.colCnt>1},tt(t))+\"\"):'\"},renderBgIntroHtml:function(){var t=this.view;return'\"},renderIntroHtml:function(){var t=this.view;return'\"}},Ne={renderBgIntroHtml:function(){var t=this.view;return'\"+t.getAllDayHtml()+\"\"},renderIntroHtml:function(){var t=this.view;return'\"}},Ge=5,Oe=[{hours:1},{minutes:30},{minutes:15},{seconds:30},{seconds:15}];Zt.agenda={class:ze,defaults:{allDaySlot:!0,slotDuration:\"00:30:00\",minTime:\"00:00:00\",maxTime:\"24:00:00\",slotEventOverlap:!0}},Zt.agendaDay={type:\"agenda\",duration:{days:1}},Zt.agendaWeek={type:\"agenda\",duration:{weeks:1}};var Ae=Ee.extend({grid:null,scroller:null,initialize:function(){this.grid=new Ve(this),this.scroller=new be({overflowX:\"hidden\",overflowY:\"auto\"})},setRange:function(t){Ee.prototype.setRange.call(this,t),this.grid.setRange(t)},renderSkeleton:function(){this.el.addClass(\"fc-list-view \"+this.widgetContentClass),this.scroller.render(),this.scroller.el.appendTo(this.el),this.grid.setElement(this.scroller.scrollEl)},unrenderSkeleton:function(){this.scroller.destroy()},setHeight:function(t,e){this.scroller.setHeight(this.computeScrollerHeight(t))},computeScrollerHeight:function(t){return t-c(this.el,this.scroller.el);\n},renderEvents:function(t){this.grid.renderEvents(t)},unrenderEvents:function(){this.grid.unrenderEvents()},isEventResizable:function(t){return!1},isEventDraggable:function(t){return!1}}),Ve=me.extend({segSelector:\".fc-list-item\",hasDayInteractions:!1,spanToSegs:function(t){for(var e,n=this.view,i=n.start.clone().time(0),r=0,s=[];i
'+tt(this.view.opt(\"noEventsMessage\"))+\"
\")},renderSegList:function(e){var n,i,r,s=this.groupSegsByDay(e),o=t('
'),l=o.find(\"tbody\");for(n=0;n'+(n?e.buildGotoAnchorHtml(t,{class:\"fc-list-heading-main\"},tt(t.format(n))):\"\")+(i?e.buildGotoAnchorHtml(t,{class:\"fc-list-heading-alt\"},tt(t.format(i))):\"\")+\"\"},fgSegHtml:function(t){var e,n=this.view,i=[\"fc-list-item\"].concat(this.getSegCustomClasses(t)),r=this.getSegBackgroundColor(t),s=t.event,o=s.url;return e=s.allDay?n.getAllDayHtml():n.isMultiDayEvent(s)?t.isStart||t.isEnd?tt(this.getEventTimeText(t)):n.getAllDayHtml():tt(this.getEventTimeText(s)),o&&i.push(\"fc-has-url\"),''+(this.displayEventTime?''+(e||\"\")+\"\":\"\")+'\"+tt(t.event.title||\"\")+\"\"}});return Zt.list={class:Ae,buttonTextKey:\"list\",defaults:{buttonText:\"list\",listDayFormat:\"LL\",noEventsMessage:\"No events to display\"}},Zt.listDay={type:\"list\",duration:{days:1},defaults:{listDayFormat:\"dddd\"}},Zt.listWeek={type:\"list\",duration:{weeks:1},defaults:{listDayFormat:\"dddd\",listDayAltFormat:\"LL\"}},Zt.listMonth={type:\"list\",duration:{month:1},defaults:{listDayAltFormat:\"dddd\"}},Zt.listYear={type:\"list\",duration:{year:1},defaults:{listDayAltFormat:\"dddd\"}},qt});","!function(e){\"function\"==typeof define&&define.amd?define([\"jquery\",\"moment\"],e):\"object\"==typeof exports?module.exports=e(require(\"jquery\"),require(\"moment\")):e(jQuery,moment)}(function(e,a){!function(){!function(){var e=a.defineLocale(\"af\",{months:\"Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember\".split(\"_\"),monthsShort:\"Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des\".split(\"_\"),weekdays:\"Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag\".split(\"_\"),weekdaysShort:\"Son_Maa_Din_Woe_Don_Vry_Sat\".split(\"_\"),weekdaysMin:\"So_Ma_Di_Wo_Do_Vr_Sa\".split(\"_\"),meridiemParse:/vm|nm/i,isPM:function(e){return/^nm$/i.test(e)},meridiem:function(e,a,t){return e<12?t?\"vm\":\"VM\":t?\"nm\":\"NM\"},longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd, D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[Vandag om] LT\",nextDay:\"[Môre om] LT\",nextWeek:\"dddd [om] LT\",lastDay:\"[Gister om] LT\",lastWeek:\"[Laas] dddd [om] LT\",sameElse:\"L\"},relativeTime:{future:\"oor %s\",past:\"%s gelede\",s:\"'n paar sekondes\",m:\"'n minuut\",mm:\"%d minute\",h:\"'n uur\",hh:\"%d ure\",d:\"'n dag\",dd:\"%d dae\",M:\"'n maand\",MM:\"%d maande\",y:\"'n jaar\",yy:\"%d jaar\"},ordinalParse:/\\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?\"ste\":\"de\")},week:{dow:1,doy:4}});return e}(),e.fullCalendar.datepickerLocale(\"af\",\"af\",{closeText:\"Selekteer\",prevText:\"Vorige\",nextText:\"Volgende\",currentText:\"Vandag\",monthNames:[\"Januarie\",\"Februarie\",\"Maart\",\"April\",\"Mei\",\"Junie\",\"Julie\",\"Augustus\",\"September\",\"Oktober\",\"November\",\"Desember\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mrt\",\"Apr\",\"Mei\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Okt\",\"Nov\",\"Des\"],dayNames:[\"Sondag\",\"Maandag\",\"Dinsdag\",\"Woensdag\",\"Donderdag\",\"Vrydag\",\"Saterdag\"],dayNamesShort:[\"Son\",\"Maa\",\"Din\",\"Woe\",\"Don\",\"Vry\",\"Sat\"],dayNamesMin:[\"So\",\"Ma\",\"Di\",\"Wo\",\"Do\",\"Vr\",\"Sa\"],weekHeader:\"Wk\",dateFormat:\"dd/mm/yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),e.fullCalendar.locale(\"af\",{buttonText:{year:\"Jaar\",month:\"Maand\",week:\"Week\",day:\"Dag\",list:\"Agenda\"},allDayHtml:\"Heeldag\",eventLimitText:\"Addisionele\",noEventsMessage:\"Daar is geen gebeurtenis\"})}(),function(){!function(){var e={1:\"١\",2:\"٢\",3:\"٣\",4:\"٤\",5:\"٥\",6:\"٦\",7:\"٧\",8:\"٨\",9:\"٩\",0:\"٠\"},t={\"١\":\"1\",\"٢\":\"2\",\"٣\":\"3\",\"٤\":\"4\",\"٥\":\"5\",\"٦\":\"6\",\"٧\":\"7\",\"٨\":\"8\",\"٩\":\"9\",\"٠\":\"0\"},n=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},r={s:[\"أقل من ثانية\",\"ثانية واحدة\",[\"ثانيتان\",\"ثانيتين\"],\"%d ثوان\",\"%d ثانية\",\"%d ثانية\"],m:[\"أقل من دقيقة\",\"دقيقة واحدة\",[\"دقيقتان\",\"دقيقتين\"],\"%d دقائق\",\"%d دقيقة\",\"%d دقيقة\"],h:[\"أقل من ساعة\",\"ساعة واحدة\",[\"ساعتان\",\"ساعتين\"],\"%d ساعات\",\"%d ساعة\",\"%d ساعة\"],d:[\"أقل من يوم\",\"يوم واحد\",[\"يومان\",\"يومين\"],\"%d أيام\",\"%d يومًا\",\"%d يوم\"],M:[\"أقل من شهر\",\"شهر واحد\",[\"شهران\",\"شهرين\"],\"%d أشهر\",\"%d شهرا\",\"%d شهر\"],y:[\"أقل من عام\",\"عام واحد\",[\"عامان\",\"عامين\"],\"%d أعوام\",\"%d عامًا\",\"%d عام\"]},s=function(e){return function(a,t,s,d){var i=n(a),o=r[e][n(a)];return 2===i&&(o=o[t?0:1]),o.replace(/%d/i,a)}},d=[\"كانون الثاني يناير\",\"شباط فبراير\",\"آذار مارس\",\"نيسان أبريل\",\"أيار مايو\",\"حزيران يونيو\",\"تموز يوليو\",\"آب أغسطس\",\"أيلول سبتمبر\",\"تشرين الأول أكتوبر\",\"تشرين الثاني نوفمبر\",\"كانون الأول ديسمبر\"],i=a.defineLocale(\"ar\",{months:d,monthsShort:d,weekdays:\"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت\".split(\"_\"),weekdaysShort:\"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت\".split(\"_\"),weekdaysMin:\"ح_ن_ث_ر_خ_ج_س\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"D/‏M/‏YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},meridiemParse:/ص|م/,isPM:function(e){return\"م\"===e},meridiem:function(e,a,t){return e<12?\"ص\":\"م\"},calendar:{sameDay:\"[اليوم عند الساعة] LT\",nextDay:\"[غدًا عند الساعة] LT\",nextWeek:\"dddd [عند الساعة] LT\",lastDay:\"[أمس عند الساعة] LT\",lastWeek:\"dddd [عند الساعة] LT\",sameElse:\"L\"},relativeTime:{future:\"بعد %s\",past:\"منذ %s\",s:s(\"s\"),m:s(\"m\"),mm:s(\"m\"),h:s(\"h\"),hh:s(\"h\"),d:s(\"d\"),dd:s(\"d\"),M:s(\"M\"),MM:s(\"M\"),y:s(\"y\"),yy:s(\"y\")},preparse:function(e){return e.replace(/\\u200f/g,\"\").replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(e){return t[e]}).replace(/،/g,\",\")},postformat:function(a){return a.replace(/\\d/g,function(a){return e[a]}).replace(/,/g,\"،\")},week:{dow:6,doy:12}});return i}(),e.fullCalendar.datepickerLocale(\"ar\",\"ar\",{closeText:\"إغلاق\",prevText:\"<السابق\",nextText:\"التالي>\",currentText:\"اليوم\",monthNames:[\"يناير\",\"فبراير\",\"مارس\",\"أبريل\",\"مايو\",\"يونيو\",\"يوليو\",\"أغسطس\",\"سبتمبر\",\"أكتوبر\",\"نوفمبر\",\"ديسمبر\"],monthNamesShort:[\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\"],dayNames:[\"الأحد\",\"الاثنين\",\"الثلاثاء\",\"الأربعاء\",\"الخميس\",\"الجمعة\",\"السبت\"],dayNamesShort:[\"أحد\",\"اثنين\",\"ثلاثاء\",\"أربعاء\",\"خميس\",\"جمعة\",\"سبت\"],dayNamesMin:[\"ح\",\"ن\",\"ث\",\"ر\",\"خ\",\"ج\",\"س\"],weekHeader:\"أسبوع\",dateFormat:\"dd/mm/yy\",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:\"\"}),e.fullCalendar.locale(\"ar\",{buttonText:{month:\"شهر\",week:\"أسبوع\",day:\"يوم\",list:\"أجندة\"},allDayText:\"اليوم كله\",eventLimitText:\"أخرى\",noEventsMessage:\"أي أحداث لعرض\"})}(),function(){!function(){var e=a.defineLocale(\"ar-dz\",{months:\"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر\".split(\"_\"),monthsShort:\"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر\".split(\"_\"),weekdays:\"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت\".split(\"_\"),weekdaysShort:\"احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت\".split(\"_\"),weekdaysMin:\"أح_إث_ثلا_أر_خم_جم_سب\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[اليوم على الساعة] LT\",nextDay:\"[غدا على الساعة] LT\",nextWeek:\"dddd [على الساعة] LT\",lastDay:\"[أمس على الساعة] LT\",lastWeek:\"dddd [على الساعة] LT\",sameElse:\"L\"},relativeTime:{future:\"في %s\",past:\"منذ %s\",s:\"ثوان\",m:\"دقيقة\",mm:\"%d دقائق\",h:\"ساعة\",hh:\"%d ساعات\",d:\"يوم\",dd:\"%d أيام\",M:\"شهر\",MM:\"%d أشهر\",y:\"سنة\",yy:\"%d سنوات\"},week:{dow:0,doy:4}});return e}(),e.fullCalendar.datepickerLocale(\"ar-dz\",\"ar-DZ\",{closeText:\"إغلاق\",prevText:\"<السابق\",nextText:\"التالي>\",currentText:\"اليوم\",monthNames:[\"جانفي\",\"فيفري\",\"مارس\",\"أفريل\",\"ماي\",\"جوان\",\"جويلية\",\"أوت\",\"سبتمبر\",\"أكتوبر\",\"نوفمبر\",\"ديسمبر\"],monthNamesShort:[\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\"],dayNames:[\"الأحد\",\"الاثنين\",\"الثلاثاء\",\"الأربعاء\",\"الخميس\",\"الجمعة\",\"السبت\"],dayNamesShort:[\"الأحد\",\"الاثنين\",\"الثلاثاء\",\"الأربعاء\",\"الخميس\",\"الجمعة\",\"السبت\"],dayNamesMin:[\"ح\",\"ن\",\"ث\",\"ر\",\"خ\",\"ج\",\"س\"],weekHeader:\"أسبوع\",dateFormat:\"dd/mm/yy\",firstDay:6,isRTL:!0,showMonthAfterYear:!1,yearSuffix:\"\"}),e.fullCalendar.locale(\"ar-dz\",{buttonText:{month:\"شهر\",week:\"أسبوع\",day:\"يوم\",list:\"أجندة\"},allDayText:\"اليوم كله\",eventLimitText:\"أخرى\",noEventsMessage:\"أي أحداث لعرض\"})}(),function(){!function(){var e={1:\"1\",2:\"2\",3:\"3\",4:\"4\",5:\"5\",6:\"6\",7:\"7\",8:\"8\",9:\"9\",0:\"0\"},t=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},n={s:[\"أقل من ثانية\",\"ثانية واحدة\",[\"ثانيتان\",\"ثانيتين\"],\"%d ثوان\",\"%d ثانية\",\"%d ثانية\"],m:[\"أقل من دقيقة\",\"دقيقة واحدة\",[\"دقيقتان\",\"دقيقتين\"],\"%d دقائق\",\"%d دقيقة\",\"%d دقيقة\"],h:[\"أقل من ساعة\",\"ساعة واحدة\",[\"ساعتان\",\"ساعتين\"],\"%d ساعات\",\"%d ساعة\",\"%d ساعة\"],d:[\"أقل من يوم\",\"يوم واحد\",[\"يومان\",\"يومين\"],\"%d أيام\",\"%d يومًا\",\"%d يوم\"],M:[\"أقل من شهر\",\"شهر واحد\",[\"شهران\",\"شهرين\"],\"%d أشهر\",\"%d شهرا\",\"%d شهر\"],y:[\"أقل من عام\",\"عام واحد\",[\"عامان\",\"عامين\"],\"%d أعوام\",\"%d عامًا\",\"%d عام\"]},r=function(e){return function(a,r,s,d){var i=t(a),o=n[e][t(a)];return 2===i&&(o=o[r?0:1]),o.replace(/%d/i,a)}},s=[\"يناير\",\"فبراير\",\"مارس\",\"أبريل\",\"مايو\",\"يونيو\",\"يوليو\",\"أغسطس\",\"سبتمبر\",\"أكتوبر\",\"نوفمبر\",\"ديسمبر\"],d=a.defineLocale(\"ar-ly\",{months:s,monthsShort:s,weekdays:\"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت\".split(\"_\"),weekdaysShort:\"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت\".split(\"_\"),weekdaysMin:\"ح_ن_ث_ر_خ_ج_س\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"D/‏M/‏YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},meridiemParse:/ص|م/,isPM:function(e){return\"م\"===e},meridiem:function(e,a,t){return e<12?\"ص\":\"م\"},calendar:{sameDay:\"[اليوم عند الساعة] LT\",nextDay:\"[غدًا عند الساعة] LT\",nextWeek:\"dddd [عند الساعة] LT\",lastDay:\"[أمس عند الساعة] LT\",lastWeek:\"dddd [عند الساعة] LT\",sameElse:\"L\"},relativeTime:{future:\"بعد %s\",past:\"منذ %s\",s:r(\"s\"),m:r(\"m\"),mm:r(\"m\"),h:r(\"h\"),hh:r(\"h\"),d:r(\"d\"),dd:r(\"d\"),M:r(\"M\"),MM:r(\"M\"),y:r(\"y\"),yy:r(\"y\")},preparse:function(e){return e.replace(/\\u200f/g,\"\").replace(/،/g,\",\")},postformat:function(a){return a.replace(/\\d/g,function(a){return e[a]}).replace(/,/g,\"،\")},week:{dow:6,doy:12}});return d}(),e.fullCalendar.datepickerLocale(\"ar-ly\",\"ar\",{closeText:\"إغلاق\",prevText:\"<السابق\",nextText:\"التالي>\",currentText:\"اليوم\",monthNames:[\"يناير\",\"فبراير\",\"مارس\",\"أبريل\",\"مايو\",\"يونيو\",\"يوليو\",\"أغسطس\",\"سبتمبر\",\"أكتوبر\",\"نوفمبر\",\"ديسمبر\"],monthNamesShort:[\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\"],dayNames:[\"الأحد\",\"الاثنين\",\"الثلاثاء\",\"الأربعاء\",\"الخميس\",\"الجمعة\",\"السبت\"],dayNamesShort:[\"أحد\",\"اثنين\",\"ثلاثاء\",\"أربعاء\",\"خميس\",\"جمعة\",\"سبت\"],dayNamesMin:[\"ح\",\"ن\",\"ث\",\"ر\",\"خ\",\"ج\",\"س\"],weekHeader:\"أسبوع\",dateFormat:\"dd/mm/yy\",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:\"\"}),e.fullCalendar.locale(\"ar-ly\",{buttonText:{month:\"شهر\",week:\"أسبوع\",day:\"يوم\",list:\"أجندة\"},allDayText:\"اليوم كله\",eventLimitText:\"أخرى\",noEventsMessage:\"أي أحداث لعرض\"})}(),function(){!function(){var e=a.defineLocale(\"ar-ma\",{months:\"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر\".split(\"_\"),monthsShort:\"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر\".split(\"_\"),weekdays:\"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت\".split(\"_\"),weekdaysShort:\"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت\".split(\"_\"),weekdaysMin:\"ح_ن_ث_ر_خ_ج_س\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[اليوم على الساعة] LT\",nextDay:\"[غدا على الساعة] LT\",nextWeek:\"dddd [على الساعة] LT\",lastDay:\"[أمس على الساعة] LT\",lastWeek:\"dddd [على الساعة] LT\",sameElse:\"L\"},relativeTime:{future:\"في %s\",past:\"منذ %s\",s:\"ثوان\",m:\"دقيقة\",mm:\"%d دقائق\",h:\"ساعة\",hh:\"%d ساعات\",d:\"يوم\",dd:\"%d أيام\",M:\"شهر\",MM:\"%d أشهر\",y:\"سنة\",yy:\"%d سنوات\"},week:{dow:6,doy:12}});return e}(),e.fullCalendar.datepickerLocale(\"ar-ma\",\"ar\",{closeText:\"إغلاق\",prevText:\"<السابق\",nextText:\"التالي>\",currentText:\"اليوم\",monthNames:[\"يناير\",\"فبراير\",\"مارس\",\"أبريل\",\"مايو\",\"يونيو\",\"يوليو\",\"أغسطس\",\"سبتمبر\",\"أكتوبر\",\"نوفمبر\",\"ديسمبر\"],monthNamesShort:[\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\"],dayNames:[\"الأحد\",\"الاثنين\",\"الثلاثاء\",\"الأربعاء\",\"الخميس\",\"الجمعة\",\"السبت\"],dayNamesShort:[\"أحد\",\"اثنين\",\"ثلاثاء\",\"أربعاء\",\"خميس\",\"جمعة\",\"سبت\"],dayNamesMin:[\"ح\",\"ن\",\"ث\",\"ر\",\"خ\",\"ج\",\"س\"],weekHeader:\"أسبوع\",dateFormat:\"dd/mm/yy\",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:\"\"}),e.fullCalendar.locale(\"ar-ma\",{buttonText:{month:\"شهر\",week:\"أسبوع\",day:\"يوم\",list:\"أجندة\"},allDayText:\"اليوم كله\",eventLimitText:\"أخرى\",noEventsMessage:\"أي أحداث لعرض\"})}(),function(){!function(){var e={1:\"١\",2:\"٢\",3:\"٣\",4:\"٤\",5:\"٥\",6:\"٦\",7:\"٧\",8:\"٨\",9:\"٩\",0:\"٠\"},t={\"١\":\"1\",\"٢\":\"2\",\"٣\":\"3\",\"٤\":\"4\",\"٥\":\"5\",\"٦\":\"6\",\"٧\":\"7\",\"٨\":\"8\",\"٩\":\"9\",\"٠\":\"0\"},n=a.defineLocale(\"ar-sa\",{months:\"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر\".split(\"_\"),monthsShort:\"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر\".split(\"_\"),weekdays:\"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت\".split(\"_\"),weekdaysShort:\"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت\".split(\"_\"),weekdaysMin:\"ح_ن_ث_ر_خ_ج_س\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},meridiemParse:/ص|م/,isPM:function(e){return\"م\"===e},meridiem:function(e,a,t){return e<12?\"ص\":\"م\"},calendar:{sameDay:\"[اليوم على الساعة] LT\",nextDay:\"[غدا على الساعة] LT\",nextWeek:\"dddd [على الساعة] LT\",lastDay:\"[أمس على الساعة] LT\",lastWeek:\"dddd [على الساعة] LT\",sameElse:\"L\"},relativeTime:{future:\"في %s\",past:\"منذ %s\",s:\"ثوان\",m:\"دقيقة\",mm:\"%d دقائق\",h:\"ساعة\",hh:\"%d ساعات\",d:\"يوم\",dd:\"%d أيام\",M:\"شهر\",MM:\"%d أشهر\",y:\"سنة\",yy:\"%d سنوات\"},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(e){return t[e]}).replace(/،/g,\",\")},postformat:function(a){return a.replace(/\\d/g,function(a){return e[a]}).replace(/,/g,\"،\")},week:{dow:0,doy:6}});return n}(),e.fullCalendar.datepickerLocale(\"ar-sa\",\"ar\",{closeText:\"إغلاق\",prevText:\"<السابق\",nextText:\"التالي>\",currentText:\"اليوم\",monthNames:[\"يناير\",\"فبراير\",\"مارس\",\"أبريل\",\"مايو\",\"يونيو\",\"يوليو\",\"أغسطس\",\"سبتمبر\",\"أكتوبر\",\"نوفمبر\",\"ديسمبر\"],monthNamesShort:[\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\"],dayNames:[\"الأحد\",\"الاثنين\",\"الثلاثاء\",\"الأربعاء\",\"الخميس\",\"الجمعة\",\"السبت\"],dayNamesShort:[\"أحد\",\"اثنين\",\"ثلاثاء\",\"أربعاء\",\"خميس\",\"جمعة\",\"سبت\"],dayNamesMin:[\"ح\",\"ن\",\"ث\",\"ر\",\"خ\",\"ج\",\"س\"],weekHeader:\"أسبوع\",dateFormat:\"dd/mm/yy\",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:\"\"}),e.fullCalendar.locale(\"ar-sa\",{buttonText:{month:\"شهر\",week:\"أسبوع\",day:\"يوم\",list:\"أجندة\"},allDayText:\"اليوم كله\",eventLimitText:\"أخرى\",noEventsMessage:\"أي أحداث لعرض\"})}(),function(){!function(){var e=a.defineLocale(\"ar-tn\",{months:\"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر\".split(\"_\"),monthsShort:\"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر\".split(\"_\"),weekdays:\"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت\".split(\"_\"),weekdaysShort:\"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت\".split(\"_\"),weekdaysMin:\"ح_ن_ث_ر_خ_ج_س\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[اليوم على الساعة] LT\",nextDay:\"[غدا على الساعة] LT\",nextWeek:\"dddd [على الساعة] LT\",lastDay:\"[أمس على الساعة] LT\",lastWeek:\"dddd [على الساعة] LT\",sameElse:\"L\"},relativeTime:{future:\"في %s\",past:\"منذ %s\",s:\"ثوان\",m:\"دقيقة\",mm:\"%d دقائق\",h:\"ساعة\",hh:\"%d ساعات\",d:\"يوم\",dd:\"%d أيام\",M:\"شهر\",MM:\"%d أشهر\",y:\"سنة\",yy:\"%d سنوات\"},week:{dow:1,doy:4}});return e}(),e.fullCalendar.datepickerLocale(\"ar-tn\",\"ar\",{closeText:\"إغلاق\",prevText:\"<السابق\",nextText:\"التالي>\",currentText:\"اليوم\",monthNames:[\"يناير\",\"فبراير\",\"مارس\",\"أبريل\",\"مايو\",\"يونيو\",\"يوليو\",\"أغسطس\",\"سبتمبر\",\"أكتوبر\",\"نوفمبر\",\"ديسمبر\"],monthNamesShort:[\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\"],dayNames:[\"الأحد\",\"الاثنين\",\"الثلاثاء\",\"الأربعاء\",\"الخميس\",\"الجمعة\",\"السبت\"],dayNamesShort:[\"أحد\",\"اثنين\",\"ثلاثاء\",\"أربعاء\",\"خميس\",\"جمعة\",\"سبت\"],dayNamesMin:[\"ح\",\"ن\",\"ث\",\"ر\",\"خ\",\"ج\",\"س\"],weekHeader:\"أسبوع\",dateFormat:\"dd/mm/yy\",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:\"\"}),e.fullCalendar.locale(\"ar-tn\",{buttonText:{month:\"شهر\",week:\"أسبوع\",day:\"يوم\",list:\"أجندة\"},allDayText:\"اليوم كله\",eventLimitText:\"أخرى\",noEventsMessage:\"أي أحداث لعرض\"})}(),function(){!function(){var e=a.defineLocale(\"bg\",{months:\"януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември\".split(\"_\"),monthsShort:\"янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек\".split(\"_\"),weekdays:\"неделя_понеделник_вторник_сряда_четвъртък_петък_събота\".split(\"_\"),weekdaysShort:\"нед_пон_вто_сря_чет_пет_съб\".split(\"_\"),weekdaysMin:\"нд_пн_вт_ср_чт_пт_сб\".split(\"_\"),longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"D.MM.YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY H:mm\",LLLL:\"dddd, D MMMM YYYY H:mm\"},calendar:{sameDay:\"[Днес в] LT\",nextDay:\"[Утре в] LT\",nextWeek:\"dddd [в] LT\",lastDay:\"[Вчера в] LT\",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return\"[В изминалата] dddd [в] LT\";case 1:case 2:case 4:case 5:return\"[В изминалия] dddd [в] LT\"}},sameElse:\"L\"},relativeTime:{future:\"след %s\",past:\"преди %s\",s:\"няколко секунди\",m:\"минута\",mm:\"%d минути\",h:\"час\",hh:\"%d часа\",d:\"ден\",dd:\"%d дни\",M:\"месец\",MM:\"%d месеца\",y:\"година\",yy:\"%d години\"},ordinalParse:/\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(e){var a=e%10,t=e%100;return 0===e?e+\"-ев\":0===t?e+\"-ен\":t>10&&t<20?e+\"-ти\":1===a?e+\"-ви\":2===a?e+\"-ри\":7===a||8===a?e+\"-ми\":e+\"-ти\"},week:{dow:1,doy:7}});return e}(),e.fullCalendar.datepickerLocale(\"bg\",\"bg\",{closeText:\"затвори\",prevText:\"<назад\",nextText:\"напред>\",nextBigText:\">>\",currentText:\"днес\",monthNames:[\"Януари\",\"Февруари\",\"Март\",\"Април\",\"Май\",\"Юни\",\"Юли\",\"Август\",\"Септември\",\"Октомври\",\"Ноември\",\"Декември\"],monthNamesShort:[\"Яну\",\"Фев\",\"Мар\",\"Апр\",\"Май\",\"Юни\",\"Юли\",\"Авг\",\"Сеп\",\"Окт\",\"Нов\",\"Дек\"],dayNames:[\"Неделя\",\"Понеделник\",\"Вторник\",\"Сряда\",\"Четвъртък\",\"Петък\",\"Събота\"],dayNamesShort:[\"Нед\",\"Пон\",\"Вто\",\"Сря\",\"Чет\",\"Пет\",\"Съб\"],dayNamesMin:[\"Не\",\"По\",\"Вт\",\"Ср\",\"Че\",\"Пе\",\"Съ\"],weekHeader:\"Wk\",dateFormat:\"dd.mm.yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),e.fullCalendar.locale(\"bg\",{buttonText:{month:\"Месец\",week:\"Седмица\",day:\"Ден\",list:\"График\"},allDayText:\"Цял ден\",eventLimitText:function(e){return\"+още \"+e},noEventsMessage:\"Няма събития за показване\"})}(),function(){!function(){var e=a.defineLocale(\"ca\",{months:\"gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre\".split(\"_\"),monthsShort:\"gen._febr._mar._abr._mai._jun._jul._ag._set._oct._nov._des.\".split(\"_\"),monthsParseExact:!0,weekdays:\"diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte\".split(\"_\"),weekdaysShort:\"dg._dl._dt._dc._dj._dv._ds.\".split(\"_\"),weekdaysMin:\"Dg_Dl_Dt_Dc_Dj_Dv_Ds\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY H:mm\",LLLL:\"dddd D MMMM YYYY H:mm\"},calendar:{sameDay:function(){return\"[avui a \"+(1!==this.hours()?\"les\":\"la\")+\"] LT\"},nextDay:function(){return\"[demà a \"+(1!==this.hours()?\"les\":\"la\")+\"] LT\"},nextWeek:function(){return\"dddd [a \"+(1!==this.hours()?\"les\":\"la\")+\"] LT\"},lastDay:function(){return\"[ahir a \"+(1!==this.hours()?\"les\":\"la\")+\"] LT\"},lastWeek:function(){return\"[el] dddd [passat a \"+(1!==this.hours()?\"les\":\"la\")+\"] LT\"},sameElse:\"L\"},relativeTime:{future:\"d'aquí %s\",past:\"fa %s\",s:\"uns segons\",m:\"un minut\",mm:\"%d minuts\",h:\"una hora\",hh:\"%d hores\",d:\"un dia\",dd:\"%d dies\",M:\"un mes\",MM:\"%d mesos\",y:\"un any\",yy:\"%d anys\"},ordinalParse:/\\d{1,2}(r|n|t|è|a)/,ordinal:function(e,a){var t=1===e?\"r\":2===e?\"n\":3===e?\"r\":4===e?\"t\":\"è\";return\"w\"!==a&&\"W\"!==a||(t=\"a\"),e+t},week:{dow:1,doy:4}});return e}(),e.fullCalendar.datepickerLocale(\"ca\",\"ca\",{closeText:\"Tanca\",prevText:\"Anterior\",nextText:\"Següent\",currentText:\"Avui\",monthNames:[\"gener\",\"febrer\",\"març\",\"abril\",\"maig\",\"juny\",\"juliol\",\"agost\",\"setembre\",\"octubre\",\"novembre\",\"desembre\"],monthNamesShort:[\"gen\",\"feb\",\"març\",\"abr\",\"maig\",\"juny\",\"jul\",\"ag\",\"set\",\"oct\",\"nov\",\"des\"],dayNames:[\"diumenge\",\"dilluns\",\"dimarts\",\"dimecres\",\"dijous\",\"divendres\",\"dissabte\"],dayNamesShort:[\"dg\",\"dl\",\"dt\",\"dc\",\"dj\",\"dv\",\"ds\"],dayNamesMin:[\"dg\",\"dl\",\"dt\",\"dc\",\"dj\",\"dv\",\"ds\"],weekHeader:\"Set\",dateFormat:\"dd/mm/yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),e.fullCalendar.locale(\"ca\",{buttonText:{month:\"Mes\",week:\"Setmana\",day:\"Dia\",list:\"Agenda\"},allDayText:\"Tot el dia\",eventLimitText:\"més\",noEventsMessage:\"No hi ha esdeveniments per mostrar\"})}(),function(){!function(){function e(e){return e>1&&e<5&&1!==~~(e/10)}function t(a,t,n,r){var s=a+\" \";switch(n){case\"s\":return t||r?\"pár sekund\":\"pár sekundami\";case\"m\":return t?\"minuta\":r?\"minutu\":\"minutou\";case\"mm\":return t||r?s+(e(a)?\"minuty\":\"minut\"):s+\"minutami\";case\"h\":return t?\"hodina\":r?\"hodinu\":\"hodinou\";case\"hh\":return t||r?s+(e(a)?\"hodiny\":\"hodin\"):s+\"hodinami\";case\"d\":return t||r?\"den\":\"dnem\";case\"dd\":return t||r?s+(e(a)?\"dny\":\"dní\"):s+\"dny\";case\"M\":return t||r?\"měsíc\":\"měsícem\";case\"MM\":return t||r?s+(e(a)?\"měsíce\":\"měsíců\"):s+\"měsíci\";case\"y\":return t||r?\"rok\":\"rokem\";case\"yy\":return t||r?s+(e(a)?\"roky\":\"let\"):s+\"lety\"}}var n=\"leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec\".split(\"_\"),r=\"led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro\".split(\"_\"),s=a.defineLocale(\"cs\",{months:n,monthsShort:r,monthsParse:function(e,a){var t,n=[];for(t=0;t<12;t++)n[t]=new RegExp(\"^\"+e[t]+\"$|^\"+a[t]+\"$\",\"i\");return n}(n,r),shortMonthsParse:function(e){var a,t=[];for(a=0;a<12;a++)t[a]=new RegExp(\"^\"+e[a]+\"$\",\"i\");return t}(r),longMonthsParse:function(e){var a,t=[];for(a=0;a<12;a++)t[a]=new RegExp(\"^\"+e[a]+\"$\",\"i\");return t}(n),weekdays:\"neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota\".split(\"_\"),weekdaysShort:\"ne_po_út_st_čt_pá_so\".split(\"_\"),weekdaysMin:\"ne_po_út_st_čt_pá_so\".split(\"_\"),longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY H:mm\",LLLL:\"dddd D. MMMM YYYY H:mm\",l:\"D. M. YYYY\"},calendar:{sameDay:\"[dnes v] LT\",nextDay:\"[zítra v] LT\",nextWeek:function(){switch(this.day()){case 0:return\"[v neděli v] LT\";case 1:case 2:return\"[v] dddd [v] LT\";case 3:return\"[ve středu v] LT\";case 4:return\"[ve čtvrtek v] LT\";case 5:return\"[v pátek v] LT\";case 6:return\"[v sobotu v] LT\"}},lastDay:\"[včera v] LT\",lastWeek:function(){switch(this.day()){case 0:return\"[minulou neděli v] LT\";case 1:case 2:return\"[minulé] dddd [v] LT\";case 3:return\"[minulou středu v] LT\";case 4:case 5:return\"[minulý] dddd [v] LT\";case 6:return\"[minulou sobotu v] LT\"}},sameElse:\"L\"},relativeTime:{future:\"za %s\",past:\"před %s\",s:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},ordinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}});return s}(),e.fullCalendar.datepickerLocale(\"cs\",\"cs\",{closeText:\"Zavřít\",prevText:\"<Dříve\",nextText:\"Později>\",currentText:\"Nyní\",monthNames:[\"leden\",\"únor\",\"březen\",\"duben\",\"květen\",\"červen\",\"červenec\",\"srpen\",\"září\",\"říjen\",\"listopad\",\"prosinec\"],monthNamesShort:[\"led\",\"úno\",\"bře\",\"dub\",\"kvě\",\"čer\",\"čvc\",\"srp\",\"zář\",\"říj\",\"lis\",\"pro\"],dayNames:[\"neděle\",\"pondělí\",\"úterý\",\"středa\",\"čtvrtek\",\"pátek\",\"sobota\"],dayNamesShort:[\"ne\",\"po\",\"út\",\"st\",\"čt\",\"pá\",\"so\"],dayNamesMin:[\"ne\",\"po\",\"út\",\"st\",\"čt\",\"pá\",\"so\"],weekHeader:\"Týd\",dateFormat:\"dd.mm.yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),e.fullCalendar.locale(\"cs\",{buttonText:{month:\"Měsíc\",week:\"Týden\",day:\"Den\",list:\"Agenda\"},allDayText:\"Celý den\",eventLimitText:function(e){return\"+další: \"+e},noEventsMessage:\"Žádné akce k zobrazení\"})}(),function(){!function(){var e=a.defineLocale(\"da\",{months:\"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december\".split(\"_\"),monthsShort:\"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec\".split(\"_\"),weekdays:\"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag\".split(\"_\"),weekdaysShort:\"søn_man_tir_ons_tor_fre_lør\".split(\"_\"),weekdaysMin:\"sø_ma_ti_on_to_fr_lø\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY HH:mm\",LLLL:\"dddd [d.] D. MMMM YYYY HH:mm\"},calendar:{sameDay:\"[I dag kl.] LT\",nextDay:\"[I morgen kl.] LT\",nextWeek:\"dddd [kl.] LT\",lastDay:\"[I går kl.] LT\",lastWeek:\"[sidste] dddd [kl] LT\",sameElse:\"L\"},relativeTime:{future:\"om %s\",past:\"%s siden\",s:\"få sekunder\",m:\"et minut\",mm:\"%d minutter\",h:\"en time\",hh:\"%d timer\",d:\"en dag\",dd:\"%d dage\",M:\"en måned\",MM:\"%d måneder\",y:\"et år\",yy:\"%d år\"},ordinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}});return e}(),e.fullCalendar.datepickerLocale(\"da\",\"da\",{closeText:\"Luk\",prevText:\"<Forrige\",nextText:\"Næste>\",currentText:\"Idag\",monthNames:[\"Januar\",\"Februar\",\"Marts\",\"April\",\"Maj\",\"Juni\",\"Juli\",\"August\",\"September\",\"Oktober\",\"November\",\"December\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"Maj\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Okt\",\"Nov\",\"Dec\"],dayNames:[\"Søndag\",\"Mandag\",\"Tirsdag\",\"Onsdag\",\"Torsdag\",\"Fredag\",\"Lørdag\"],dayNamesShort:[\"Søn\",\"Man\",\"Tir\",\"Ons\",\"Tor\",\"Fre\",\"Lør\"],dayNamesMin:[\"Sø\",\"Ma\",\"Ti\",\"On\",\"To\",\"Fr\",\"Lø\"],weekHeader:\"Uge\",dateFormat:\"dd-mm-yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),e.fullCalendar.locale(\"da\",{buttonText:{month:\"Måned\",week:\"Uge\",day:\"Dag\",list:\"Agenda\"},allDayText:\"Hele dagen\",eventLimitText:\"flere\",noEventsMessage:\"Ingen arrangementer at vise\"})}(),function(){!function(){function e(e,a,t,n){var r={m:[\"eine Minute\",\"einer Minute\"],h:[\"eine Stunde\",\"einer Stunde\"],d:[\"ein Tag\",\"einem Tag\"],dd:[e+\" Tage\",e+\" Tagen\"],M:[\"ein Monat\",\"einem Monat\"],MM:[e+\" Monate\",e+\" Monaten\"],y:[\"ein Jahr\",\"einem Jahr\"],yy:[e+\" Jahre\",e+\" Jahren\"]};return a?r[t][0]:r[t][1]}var t=a.defineLocale(\"de\",{months:\"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember\".split(\"_\"),monthsShort:\"Jan._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.\".split(\"_\"),monthsParseExact:!0,weekdays:\"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag\".split(\"_\"),weekdaysShort:\"So._Mo._Di._Mi._Do._Fr._Sa.\".split(\"_\"),weekdaysMin:\"So_Mo_Di_Mi_Do_Fr_Sa\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY HH:mm\",LLLL:\"dddd, D. MMMM YYYY HH:mm\"},calendar:{sameDay:\"[heute um] LT [Uhr]\",sameElse:\"L\",nextDay:\"[morgen um] LT [Uhr]\",nextWeek:\"dddd [um] LT [Uhr]\",lastDay:\"[gestern um] LT [Uhr]\",lastWeek:\"[letzten] dddd [um] LT [Uhr]\"},relativeTime:{future:\"in %s\",past:\"vor %s\",s:\"ein paar Sekunden\",m:e,mm:\"%d Minuten\",h:e,hh:\"%d Stunden\",d:e,dd:e,M:e,MM:e,y:e,yy:e},ordinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}});return t}(),e.fullCalendar.datepickerLocale(\"de\",\"de\",{closeText:\"Schließen\",prevText:\"<Zurück\",nextText:\"Vor>\",currentText:\"Heute\",monthNames:[\"Januar\",\"Februar\",\"März\",\"April\",\"Mai\",\"Juni\",\"Juli\",\"August\",\"September\",\"Oktober\",\"November\",\"Dezember\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mär\",\"Apr\",\"Mai\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Okt\",\"Nov\",\"Dez\"],dayNames:[\"Sonntag\",\"Montag\",\"Dienstag\",\"Mittwoch\",\"Donnerstag\",\"Freitag\",\"Samstag\"],dayNamesShort:[\"So\",\"Mo\",\"Di\",\"Mi\",\"Do\",\"Fr\",\"Sa\"],dayNamesMin:[\"So\",\"Mo\",\"Di\",\"Mi\",\"Do\",\"Fr\",\"Sa\"],weekHeader:\"KW\",dateFormat:\"dd.mm.yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),e.fullCalendar.locale(\"de\",{buttonText:{month:\"Monat\",week:\"Woche\",day:\"Tag\",list:\"Terminübersicht\"},allDayText:\"Ganztägig\",eventLimitText:function(e){return\"+ weitere \"+e},noEventsMessage:\"Keine Ereignisse anzuzeigen\"})}(),function(){!function(){function e(e,a,t,n){var r={m:[\"eine Minute\",\"einer Minute\"],h:[\"eine Stunde\",\"einer Stunde\"],d:[\"ein Tag\",\"einem Tag\"],dd:[e+\" Tage\",e+\" Tagen\"],M:[\"ein Monat\",\"einem Monat\"],MM:[e+\" Monate\",e+\" Monaten\"],y:[\"ein Jahr\",\"einem Jahr\"],yy:[e+\" Jahre\",e+\" Jahren\"]};return a?r[t][0]:r[t][1]}var t=a.defineLocale(\"de-at\",{months:\"Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember\".split(\"_\"),monthsShort:\"Jän._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.\".split(\"_\"),monthsParseExact:!0,weekdays:\"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag\".split(\"_\"),weekdaysShort:\"So._Mo._Di._Mi._Do._Fr._Sa.\".split(\"_\"),weekdaysMin:\"So_Mo_Di_Mi_Do_Fr_Sa\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY HH:mm\",LLLL:\"dddd, D. MMMM YYYY HH:mm\"},calendar:{sameDay:\"[heute um] LT [Uhr]\",sameElse:\"L\",nextDay:\"[morgen um] LT [Uhr]\",nextWeek:\"dddd [um] LT [Uhr]\",lastDay:\"[gestern um] LT [Uhr]\",lastWeek:\"[letzten] dddd [um] LT [Uhr]\"},relativeTime:{future:\"in %s\",past:\"vor %s\",s:\"ein paar Sekunden\",m:e,mm:\"%d Minuten\",h:e,hh:\"%d Stunden\",d:e,dd:e,M:e,MM:e,y:e,yy:e},ordinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}});return t}(),e.fullCalendar.datepickerLocale(\"de-at\",\"de\",{closeText:\"Schließen\",prevText:\"<Zurück\",nextText:\"Vor>\",currentText:\"Heute\",monthNames:[\"Januar\",\"Februar\",\"März\",\"April\",\"Mai\",\"Juni\",\"Juli\",\"August\",\"September\",\"Oktober\",\"November\",\"Dezember\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mär\",\"Apr\",\"Mai\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Okt\",\"Nov\",\"Dez\"],dayNames:[\"Sonntag\",\"Montag\",\"Dienstag\",\"Mittwoch\",\"Donnerstag\",\"Freitag\",\"Samstag\"],dayNamesShort:[\"So\",\"Mo\",\"Di\",\"Mi\",\"Do\",\"Fr\",\"Sa\"],dayNamesMin:[\"So\",\"Mo\",\"Di\",\"Mi\",\"Do\",\"Fr\",\"Sa\"],weekHeader:\"KW\",dateFormat:\"dd.mm.yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),e.fullCalendar.locale(\"de-at\",{buttonText:{month:\"Monat\",week:\"Woche\",day:\"Tag\",list:\"Terminübersicht\"},allDayText:\"Ganztägig\",eventLimitText:function(e){return\"+ weitere \"+e},noEventsMessage:\"Keine Ereignisse anzuzeigen\"})}(),function(){!function(){function e(e){return e instanceof Function||\"[object Function]\"===Object.prototype.toString.call(e)}var t=a.defineLocale(\"el\",{monthsNominativeEl:\"Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος\".split(\"_\"),monthsGenitiveEl:\"Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου\".split(\"_\"),months:function(e,a){return/D/.test(a.substring(0,a.indexOf(\"MMMM\")))?this._monthsGenitiveEl[e.month()]:this._monthsNominativeEl[e.month()]},monthsShort:\"Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ\".split(\"_\"),weekdays:\"Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο\".split(\"_\"),weekdaysShort:\"Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ\".split(\"_\"),weekdaysMin:\"Κυ_Δε_Τρ_Τε_Πε_Πα_Σα\".split(\"_\"),meridiem:function(e,a,t){return e>11?t?\"μμ\":\"ΜΜ\":t?\"πμ\":\"ΠΜ\"},isPM:function(e){return\"μ\"===(e+\"\").toLowerCase()[0]},meridiemParse:/[ΠΜ]\\.?Μ?\\.?/i,longDateFormat:{LT:\"h:mm A\",LTS:\"h:mm:ss A\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY h:mm A\",LLLL:\"dddd, D MMMM YYYY h:mm A\"},calendarEl:{sameDay:\"[Σήμερα {}] LT\",nextDay:\"[Αύριο {}] LT\",nextWeek:\"dddd [{}] LT\",lastDay:\"[Χθες {}] LT\",lastWeek:function(){switch(this.day()){case 6:return\"[το προηγούμενο] dddd [{}] LT\";default:return\"[την προηγούμενη] dddd [{}] LT\"}},sameElse:\"L\"},calendar:function(a,t){var n=this._calendarEl[a],r=t&&t.hours();return e(n)&&(n=n.apply(t)),n.replace(\"{}\",r%12===1?\"στη\":\"στις\")},relativeTime:{future:\"σε %s\",past:\"%s πριν\",s:\"λίγα δευτερόλεπτα\",m:\"ένα λεπτό\",mm:\"%d λεπτά\",h:\"μία ώρα\",hh:\"%d ώρες\",d:\"μία μέρα\",dd:\"%d μέρες\",M:\"ένας μήνας\",MM:\"%d μήνες\",y:\"ένας χρόνος\",yy:\"%d χρόνια\"},ordinalParse:/\\d{1,2}η/,ordinal:\"%dη\",week:{dow:1,doy:4}});return t}(),e.fullCalendar.datepickerLocale(\"el\",\"el\",{closeText:\"Κλείσιμο\",prevText:\"Προηγούμενος\",nextText:\"Επόμενος\",currentText:\"Σήμερα\",monthNames:[\"Ιανουάριος\",\"Φεβρουάριος\",\"Μάρτιος\",\"Απρίλιος\",\"Μάιος\",\"Ιούνιος\",\"Ιούλιος\",\"Αύγουστος\",\"Σεπτέμβριος\",\"Οκτώβριος\",\"Νοέμβριος\",\"Δεκέμβριος\"],monthNamesShort:[\"Ιαν\",\"Φεβ\",\"Μαρ\",\"Απρ\",\"Μαι\",\"Ιουν\",\"Ιουλ\",\"Αυγ\",\"Σεπ\",\"Οκτ\",\"Νοε\",\"Δεκ\"],dayNames:[\"Κυριακή\",\"Δευτέρα\",\"Τρίτη\",\"Τετάρτη\",\"Πέμπτη\",\"Παρασκευή\",\"Σάββατο\"],dayNamesShort:[\"Κυρ\",\"Δευ\",\"Τρι\",\"Τετ\",\"Πεμ\",\"Παρ\",\"Σαβ\"],dayNamesMin:[\"Κυ\",\"Δε\",\"Τρ\",\"Τε\",\"Πε\",\"Πα\",\"Σα\"],weekHeader:\"Εβδ\",dateFormat:\"dd/mm/yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),e.fullCalendar.locale(\"el\",{buttonText:{month:\"Μήνας\",week:\"Εβδομάδα\",day:\"Ημέρα\",list:\"Ατζέντα\"},allDayText:\"Ολοήμερο\",eventLimitText:\"περισσότερα\",noEventsMessage:\"Δεν υπάρχουν γεγονότα για να εμφανιστεί\"})}(),function(){!function(){var e=a.defineLocale(\"en-au\",{months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),monthsShort:\"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec\".split(\"_\"),weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),weekdaysShort:\"Sun_Mon_Tue_Wed_Thu_Fri_Sat\".split(\"_\"),weekdaysMin:\"Su_Mo_Tu_We_Th_Fr_Sa\".split(\"_\"),longDateFormat:{LT:\"h:mm A\",LTS:\"h:mm:ss A\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY h:mm A\",LLLL:\"dddd, D MMMM YYYY h:mm A\"},calendar:{sameDay:\"[Today at] LT\",nextDay:\"[Tomorrow at] LT\",nextWeek:\"dddd [at] LT\",lastDay:\"[Yesterday at] LT\",lastWeek:\"[Last] dddd [at] LT\",sameElse:\"L\"},relativeTime:{future:\"in %s\",past:\"%s ago\",s:\"a few seconds\",m:\"a minute\",mm:\"%d minutes\",h:\"an hour\",hh:\"%d hours\",d:\"a day\",dd:\"%d days\",M:\"a month\",MM:\"%d months\",y:\"a year\",yy:\"%d years\"},ordinalParse:/\\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10,t=1===~~(e%100/10)?\"th\":1===a?\"st\":2===a?\"nd\":3===a?\"rd\":\"th\";return e+t},week:{\ndow:1,doy:4}});return e}(),e.fullCalendar.datepickerLocale(\"en-au\",\"en-AU\",{closeText:\"Done\",prevText:\"Prev\",nextText:\"Next\",currentText:\"Today\",monthNames:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],dayNames:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],dayNamesShort:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],dayNamesMin:[\"Su\",\"Mo\",\"Tu\",\"We\",\"Th\",\"Fr\",\"Sa\"],weekHeader:\"Wk\",dateFormat:\"dd/mm/yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),e.fullCalendar.locale(\"en-au\")}(),function(){!function(){var e=a.defineLocale(\"en-ca\",{months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),monthsShort:\"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec\".split(\"_\"),weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),weekdaysShort:\"Sun_Mon_Tue_Wed_Thu_Fri_Sat\".split(\"_\"),weekdaysMin:\"Su_Mo_Tu_We_Th_Fr_Sa\".split(\"_\"),longDateFormat:{LT:\"h:mm A\",LTS:\"h:mm:ss A\",L:\"YYYY-MM-DD\",LL:\"MMMM D, YYYY\",LLL:\"MMMM D, YYYY h:mm A\",LLLL:\"dddd, MMMM D, YYYY h:mm A\"},calendar:{sameDay:\"[Today at] LT\",nextDay:\"[Tomorrow at] LT\",nextWeek:\"dddd [at] LT\",lastDay:\"[Yesterday at] LT\",lastWeek:\"[Last] dddd [at] LT\",sameElse:\"L\"},relativeTime:{future:\"in %s\",past:\"%s ago\",s:\"a few seconds\",m:\"a minute\",mm:\"%d minutes\",h:\"an hour\",hh:\"%d hours\",d:\"a day\",dd:\"%d days\",M:\"a month\",MM:\"%d months\",y:\"a year\",yy:\"%d years\"},ordinalParse:/\\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10,t=1===~~(e%100/10)?\"th\":1===a?\"st\":2===a?\"nd\":3===a?\"rd\":\"th\";return e+t}});return e}(),e.fullCalendar.locale(\"en-ca\")}(),function(){!function(){var e=a.defineLocale(\"en-gb\",{months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),monthsShort:\"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec\".split(\"_\"),weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),weekdaysShort:\"Sun_Mon_Tue_Wed_Thu_Fri_Sat\".split(\"_\"),weekdaysMin:\"Su_Mo_Tu_We_Th_Fr_Sa\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd, D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[Today at] LT\",nextDay:\"[Tomorrow at] LT\",nextWeek:\"dddd [at] LT\",lastDay:\"[Yesterday at] LT\",lastWeek:\"[Last] dddd [at] LT\",sameElse:\"L\"},relativeTime:{future:\"in %s\",past:\"%s ago\",s:\"a few seconds\",m:\"a minute\",mm:\"%d minutes\",h:\"an hour\",hh:\"%d hours\",d:\"a day\",dd:\"%d days\",M:\"a month\",MM:\"%d months\",y:\"a year\",yy:\"%d years\"},ordinalParse:/\\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10,t=1===~~(e%100/10)?\"th\":1===a?\"st\":2===a?\"nd\":3===a?\"rd\":\"th\";return e+t},week:{dow:1,doy:4}});return e}(),e.fullCalendar.datepickerLocale(\"en-gb\",\"en-GB\",{closeText:\"Done\",prevText:\"Prev\",nextText:\"Next\",currentText:\"Today\",monthNames:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],dayNames:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],dayNamesShort:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],dayNamesMin:[\"Su\",\"Mo\",\"Tu\",\"We\",\"Th\",\"Fr\",\"Sa\"],weekHeader:\"Wk\",dateFormat:\"dd/mm/yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),e.fullCalendar.locale(\"en-gb\")}(),function(){!function(){var e=a.defineLocale(\"en-ie\",{months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),monthsShort:\"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec\".split(\"_\"),weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),weekdaysShort:\"Sun_Mon_Tue_Wed_Thu_Fri_Sat\".split(\"_\"),weekdaysMin:\"Su_Mo_Tu_We_Th_Fr_Sa\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD-MM-YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[Today at] LT\",nextDay:\"[Tomorrow at] LT\",nextWeek:\"dddd [at] LT\",lastDay:\"[Yesterday at] LT\",lastWeek:\"[Last] dddd [at] LT\",sameElse:\"L\"},relativeTime:{future:\"in %s\",past:\"%s ago\",s:\"a few seconds\",m:\"a minute\",mm:\"%d minutes\",h:\"an hour\",hh:\"%d hours\",d:\"a day\",dd:\"%d days\",M:\"a month\",MM:\"%d months\",y:\"a year\",yy:\"%d years\"},ordinalParse:/\\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10,t=1===~~(e%100/10)?\"th\":1===a?\"st\":2===a?\"nd\":3===a?\"rd\":\"th\";return e+t},week:{dow:1,doy:4}});return e}(),e.fullCalendar.locale(\"en-ie\")}(),function(){!function(){var e=a.defineLocale(\"en-nz\",{months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),monthsShort:\"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec\".split(\"_\"),weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),weekdaysShort:\"Sun_Mon_Tue_Wed_Thu_Fri_Sat\".split(\"_\"),weekdaysMin:\"Su_Mo_Tu_We_Th_Fr_Sa\".split(\"_\"),longDateFormat:{LT:\"h:mm A\",LTS:\"h:mm:ss A\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY h:mm A\",LLLL:\"dddd, D MMMM YYYY h:mm A\"},calendar:{sameDay:\"[Today at] LT\",nextDay:\"[Tomorrow at] LT\",nextWeek:\"dddd [at] LT\",lastDay:\"[Yesterday at] LT\",lastWeek:\"[Last] dddd [at] LT\",sameElse:\"L\"},relativeTime:{future:\"in %s\",past:\"%s ago\",s:\"a few seconds\",m:\"a minute\",mm:\"%d minutes\",h:\"an hour\",hh:\"%d hours\",d:\"a day\",dd:\"%d days\",M:\"a month\",MM:\"%d months\",y:\"a year\",yy:\"%d years\"},ordinalParse:/\\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10,t=1===~~(e%100/10)?\"th\":1===a?\"st\":2===a?\"nd\":3===a?\"rd\":\"th\";return e+t},week:{dow:1,doy:4}});return e}(),e.fullCalendar.datepickerLocale(\"en-nz\",\"en-NZ\",{closeText:\"Done\",prevText:\"Prev\",nextText:\"Next\",currentText:\"Today\",monthNames:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],dayNames:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],dayNamesShort:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],dayNamesMin:[\"Su\",\"Mo\",\"Tu\",\"We\",\"Th\",\"Fr\",\"Sa\"],weekHeader:\"Wk\",dateFormat:\"dd/mm/yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),e.fullCalendar.locale(\"en-nz\")}(),function(){!function(){var e=\"ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.\".split(\"_\"),t=\"ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic\".split(\"_\"),n=a.defineLocale(\"es\",{months:\"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre\".split(\"_\"),monthsShort:function(a,n){return/-MMM-/.test(n)?t[a.month()]:e[a.month()]},monthsParseExact:!0,weekdays:\"domingo_lunes_martes_miércoles_jueves_viernes_sábado\".split(\"_\"),weekdaysShort:\"dom._lun._mar._mié._jue._vie._sáb.\".split(\"_\"),weekdaysMin:\"do_lu_ma_mi_ju_vi_sá\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D [de] MMMM [de] YYYY\",LLL:\"D [de] MMMM [de] YYYY H:mm\",LLLL:\"dddd, D [de] MMMM [de] YYYY H:mm\"},calendar:{sameDay:function(){return\"[hoy a la\"+(1!==this.hours()?\"s\":\"\")+\"] LT\"},nextDay:function(){return\"[mañana a la\"+(1!==this.hours()?\"s\":\"\")+\"] LT\"},nextWeek:function(){return\"dddd [a la\"+(1!==this.hours()?\"s\":\"\")+\"] LT\"},lastDay:function(){return\"[ayer a la\"+(1!==this.hours()?\"s\":\"\")+\"] LT\"},lastWeek:function(){return\"[el] dddd [pasado a la\"+(1!==this.hours()?\"s\":\"\")+\"] LT\"},sameElse:\"L\"},relativeTime:{future:\"en %s\",past:\"hace %s\",s:\"unos segundos\",m:\"un minuto\",mm:\"%d minutos\",h:\"una hora\",hh:\"%d horas\",d:\"un día\",dd:\"%d días\",M:\"un mes\",MM:\"%d meses\",y:\"un año\",yy:\"%d años\"},ordinalParse:/\\d{1,2}º/,ordinal:\"%dº\",week:{dow:1,doy:4}});return n}(),e.fullCalendar.datepickerLocale(\"es\",\"es\",{closeText:\"Cerrar\",prevText:\"<Ant\",nextText:\"Sig>\",currentText:\"Hoy\",monthNames:[\"enero\",\"febrero\",\"marzo\",\"abril\",\"mayo\",\"junio\",\"julio\",\"agosto\",\"septiembre\",\"octubre\",\"noviembre\",\"diciembre\"],monthNamesShort:[\"ene\",\"feb\",\"mar\",\"abr\",\"may\",\"jun\",\"jul\",\"ago\",\"sep\",\"oct\",\"nov\",\"dic\"],dayNames:[\"domingo\",\"lunes\",\"martes\",\"miércoles\",\"jueves\",\"viernes\",\"sábado\"],dayNamesShort:[\"dom\",\"lun\",\"mar\",\"mié\",\"jue\",\"vie\",\"sáb\"],dayNamesMin:[\"D\",\"L\",\"M\",\"X\",\"J\",\"V\",\"S\"],weekHeader:\"Sm\",dateFormat:\"dd/mm/yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),e.fullCalendar.locale(\"es\",{buttonText:{month:\"Mes\",week:\"Semana\",day:\"Día\",list:\"Agenda\"},allDayHtml:\"Todo
el día\",eventLimitText:\"más\",noEventsMessage:\"No hay eventos para mostrar\"})}(),function(){!function(){var e=\"ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.\".split(\"_\"),t=\"ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic\".split(\"_\"),n=a.defineLocale(\"es-do\",{months:\"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre\".split(\"_\"),monthsShort:function(a,n){return/-MMM-/.test(n)?t[a.month()]:e[a.month()]},monthsParseExact:!0,weekdays:\"domingo_lunes_martes_miércoles_jueves_viernes_sábado\".split(\"_\"),weekdaysShort:\"dom._lun._mar._mié._jue._vie._sáb.\".split(\"_\"),weekdaysMin:\"do_lu_ma_mi_ju_vi_sá\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"h:mm A\",LTS:\"h:mm:ss A\",L:\"DD/MM/YYYY\",LL:\"D [de] MMMM [de] YYYY\",LLL:\"D [de] MMMM [de] YYYY h:mm A\",LLLL:\"dddd, D [de] MMMM [de] YYYY h:mm A\"},calendar:{sameDay:function(){return\"[hoy a la\"+(1!==this.hours()?\"s\":\"\")+\"] LT\"},nextDay:function(){return\"[mañana a la\"+(1!==this.hours()?\"s\":\"\")+\"] LT\"},nextWeek:function(){return\"dddd [a la\"+(1!==this.hours()?\"s\":\"\")+\"] LT\"},lastDay:function(){return\"[ayer a la\"+(1!==this.hours()?\"s\":\"\")+\"] LT\"},lastWeek:function(){return\"[el] dddd [pasado a la\"+(1!==this.hours()?\"s\":\"\")+\"] LT\"},sameElse:\"L\"},relativeTime:{future:\"en %s\",past:\"hace %s\",s:\"unos segundos\",m:\"un minuto\",mm:\"%d minutos\",h:\"una hora\",hh:\"%d horas\",d:\"un día\",dd:\"%d días\",M:\"un mes\",MM:\"%d meses\",y:\"un año\",yy:\"%d años\"},ordinalParse:/\\d{1,2}º/,ordinal:\"%dº\",week:{dow:1,doy:4}});return n}(),e.fullCalendar.datepickerLocale(\"es-do\",\"es\",{closeText:\"Cerrar\",prevText:\"<Ant\",nextText:\"Sig>\",currentText:\"Hoy\",monthNames:[\"enero\",\"febrero\",\"marzo\",\"abril\",\"mayo\",\"junio\",\"julio\",\"agosto\",\"septiembre\",\"octubre\",\"noviembre\",\"diciembre\"],monthNamesShort:[\"ene\",\"feb\",\"mar\",\"abr\",\"may\",\"jun\",\"jul\",\"ago\",\"sep\",\"oct\",\"nov\",\"dic\"],dayNames:[\"domingo\",\"lunes\",\"martes\",\"miércoles\",\"jueves\",\"viernes\",\"sábado\"],dayNamesShort:[\"dom\",\"lun\",\"mar\",\"mié\",\"jue\",\"vie\",\"sáb\"],dayNamesMin:[\"D\",\"L\",\"M\",\"X\",\"J\",\"V\",\"S\"],weekHeader:\"Sm\",dateFormat:\"dd/mm/yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),e.fullCalendar.locale(\"es-do\",{buttonText:{month:\"Mes\",week:\"Semana\",day:\"Día\",list:\"Agenda\"},allDayHtml:\"Todo
el día\",eventLimitText:\"más\",noEventsMessage:\"No hay eventos para mostrar\"})}(),function(){!function(){var e=a.defineLocale(\"eu\",{months:\"urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua\".split(\"_\"),monthsShort:\"urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.\".split(\"_\"),monthsParseExact:!0,weekdays:\"igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata\".split(\"_\"),weekdaysShort:\"ig._al._ar._az._og._ol._lr.\".split(\"_\"),weekdaysMin:\"ig_al_ar_az_og_ol_lr\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"YYYY-MM-DD\",LL:\"YYYY[ko] MMMM[ren] D[a]\",LLL:\"YYYY[ko] MMMM[ren] D[a] HH:mm\",LLLL:\"dddd, YYYY[ko] MMMM[ren] D[a] HH:mm\",l:\"YYYY-M-D\",ll:\"YYYY[ko] MMM D[a]\",lll:\"YYYY[ko] MMM D[a] HH:mm\",llll:\"ddd, YYYY[ko] MMM D[a] HH:mm\"},calendar:{sameDay:\"[gaur] LT[etan]\",nextDay:\"[bihar] LT[etan]\",nextWeek:\"dddd LT[etan]\",lastDay:\"[atzo] LT[etan]\",lastWeek:\"[aurreko] dddd LT[etan]\",sameElse:\"L\"},relativeTime:{future:\"%s barru\",past:\"duela %s\",s:\"segundo batzuk\",m:\"minutu bat\",mm:\"%d minutu\",h:\"ordu bat\",hh:\"%d ordu\",d:\"egun bat\",dd:\"%d egun\",M:\"hilabete bat\",MM:\"%d hilabete\",y:\"urte bat\",yy:\"%d urte\"},ordinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:7}});return e}(),e.fullCalendar.datepickerLocale(\"eu\",\"eu\",{closeText:\"Egina\",prevText:\"<Aur\",nextText:\"Hur>\",currentText:\"Gaur\",monthNames:[\"urtarrila\",\"otsaila\",\"martxoa\",\"apirila\",\"maiatza\",\"ekaina\",\"uztaila\",\"abuztua\",\"iraila\",\"urria\",\"azaroa\",\"abendua\"],monthNamesShort:[\"urt.\",\"ots.\",\"mar.\",\"api.\",\"mai.\",\"eka.\",\"uzt.\",\"abu.\",\"ira.\",\"urr.\",\"aza.\",\"abe.\"],dayNames:[\"igandea\",\"astelehena\",\"asteartea\",\"asteazkena\",\"osteguna\",\"ostirala\",\"larunbata\"],dayNamesShort:[\"ig.\",\"al.\",\"ar.\",\"az.\",\"og.\",\"ol.\",\"lr.\"],dayNamesMin:[\"ig\",\"al\",\"ar\",\"az\",\"og\",\"ol\",\"lr\"],weekHeader:\"As\",dateFormat:\"yy-mm-dd\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),e.fullCalendar.locale(\"eu\",{buttonText:{month:\"Hilabetea\",week:\"Astea\",day:\"Eguna\",list:\"Agenda\"},allDayHtml:\"Egun
osoa\",eventLimitText:\"gehiago\",noEventsMessage:\"Ez dago ekitaldirik erakusteko\"})}(),function(){!function(){var e={1:\"۱\",2:\"۲\",3:\"۳\",4:\"۴\",5:\"۵\",6:\"۶\",7:\"۷\",8:\"۸\",9:\"۹\",0:\"۰\"},t={\"۱\":\"1\",\"۲\":\"2\",\"۳\":\"3\",\"۴\":\"4\",\"۵\":\"5\",\"۶\":\"6\",\"۷\":\"7\",\"۸\":\"8\",\"۹\":\"9\",\"۰\":\"0\"},n=a.defineLocale(\"fa\",{months:\"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر\".split(\"_\"),monthsShort:\"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر\".split(\"_\"),weekdays:\"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه\".split(\"_\"),weekdaysShort:\"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه\".split(\"_\"),weekdaysMin:\"ی_د_س_چ_پ_ج_ش\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd, D MMMM YYYY HH:mm\"},meridiemParse:/قبل از ظهر|بعد از ظهر/,isPM:function(e){return/بعد از ظهر/.test(e)},meridiem:function(e,a,t){return e<12?\"قبل از ظهر\":\"بعد از ظهر\"},calendar:{sameDay:\"[امروز ساعت] LT\",nextDay:\"[فردا ساعت] LT\",nextWeek:\"dddd [ساعت] LT\",lastDay:\"[دیروز ساعت] LT\",lastWeek:\"dddd [پیش] [ساعت] LT\",sameElse:\"L\"},relativeTime:{future:\"در %s\",past:\"%s پیش\",s:\"چندین ثانیه\",m:\"یک دقیقه\",mm:\"%d دقیقه\",h:\"یک ساعت\",hh:\"%d ساعت\",d:\"یک روز\",dd:\"%d روز\",M:\"یک ماه\",MM:\"%d ماه\",y:\"یک سال\",yy:\"%d سال\"},preparse:function(e){return e.replace(/[۰-۹]/g,function(e){return t[e]}).replace(/،/g,\",\")},postformat:function(a){return a.replace(/\\d/g,function(a){return e[a]}).replace(/,/g,\"،\")},ordinalParse:/\\d{1,2}م/,ordinal:\"%dم\",week:{dow:6,doy:12}});return n}(),e.fullCalendar.datepickerLocale(\"fa\",\"fa\",{closeText:\"بستن\",prevText:\"<قبلی\",nextText:\"بعدی>\",currentText:\"امروز\",monthNames:[\"ژانویه\",\"فوریه\",\"مارس\",\"آوریل\",\"مه\",\"ژوئن\",\"ژوئیه\",\"اوت\",\"سپتامبر\",\"اکتبر\",\"نوامبر\",\"دسامبر\"],monthNamesShort:[\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\"],dayNames:[\"يکشنبه\",\"دوشنبه\",\"سه‌شنبه\",\"چهارشنبه\",\"پنجشنبه\",\"جمعه\",\"شنبه\"],dayNamesShort:[\"ی\",\"د\",\"س\",\"چ\",\"پ\",\"ج\",\"ش\"],dayNamesMin:[\"ی\",\"د\",\"س\",\"چ\",\"پ\",\"ج\",\"ش\"],weekHeader:\"هف\",dateFormat:\"yy/mm/dd\",firstDay:6,isRTL:!0,showMonthAfterYear:!1,yearSuffix:\"\"}),e.fullCalendar.locale(\"fa\",{buttonText:{month:\"ماه\",week:\"هفته\",day:\"روز\",list:\"برنامه\"},allDayText:\"تمام روز\",eventLimitText:function(e){return\"بیش از \"+e},noEventsMessage:\"هیچ رویدادی به نمایش\"})}(),function(){!function(){function e(e,a,n,r){var s=\"\";switch(n){case\"s\":return r?\"muutaman sekunnin\":\"muutama sekunti\";case\"m\":return r?\"minuutin\":\"minuutti\";case\"mm\":s=r?\"minuutin\":\"minuuttia\";break;case\"h\":return r?\"tunnin\":\"tunti\";case\"hh\":s=r?\"tunnin\":\"tuntia\";break;case\"d\":return r?\"päivän\":\"päivä\";case\"dd\":s=r?\"päivän\":\"päivää\";break;case\"M\":return r?\"kuukauden\":\"kuukausi\";case\"MM\":s=r?\"kuukauden\":\"kuukautta\";break;case\"y\":return r?\"vuoden\":\"vuosi\";case\"yy\":s=r?\"vuoden\":\"vuotta\"}return s=t(e,r)+\" \"+s}function t(e,a){return e<10?a?r[e]:n[e]:e}var n=\"nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän\".split(\" \"),r=[\"nolla\",\"yhden\",\"kahden\",\"kolmen\",\"neljän\",\"viiden\",\"kuuden\",n[7],n[8],n[9]],s=a.defineLocale(\"fi\",{months:\"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu\".split(\"_\"),monthsShort:\"tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu\".split(\"_\"),weekdays:\"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai\".split(\"_\"),weekdaysShort:\"su_ma_ti_ke_to_pe_la\".split(\"_\"),weekdaysMin:\"su_ma_ti_ke_to_pe_la\".split(\"_\"),longDateFormat:{LT:\"HH.mm\",LTS:\"HH.mm.ss\",L:\"DD.MM.YYYY\",LL:\"Do MMMM[ta] YYYY\",LLL:\"Do MMMM[ta] YYYY, [klo] HH.mm\",LLLL:\"dddd, Do MMMM[ta] YYYY, [klo] HH.mm\",l:\"D.M.YYYY\",ll:\"Do MMM YYYY\",lll:\"Do MMM YYYY, [klo] HH.mm\",llll:\"ddd, Do MMM YYYY, [klo] HH.mm\"},calendar:{sameDay:\"[tänään] [klo] LT\",nextDay:\"[huomenna] [klo] LT\",nextWeek:\"dddd [klo] LT\",lastDay:\"[eilen] [klo] LT\",lastWeek:\"[viime] dddd[na] [klo] LT\",sameElse:\"L\"},relativeTime:{future:\"%s päästä\",past:\"%s sitten\",s:e,m:e,mm:e,h:e,hh:e,d:e,dd:e,M:e,MM:e,y:e,yy:e},ordinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}});return s}(),e.fullCalendar.datepickerLocale(\"fi\",\"fi\",{closeText:\"Sulje\",prevText:\"«Edellinen\",nextText:\"Seuraava»\",currentText:\"Tänään\",monthNames:[\"Tammikuu\",\"Helmikuu\",\"Maaliskuu\",\"Huhtikuu\",\"Toukokuu\",\"Kesäkuu\",\"Heinäkuu\",\"Elokuu\",\"Syyskuu\",\"Lokakuu\",\"Marraskuu\",\"Joulukuu\"],monthNamesShort:[\"Tammi\",\"Helmi\",\"Maalis\",\"Huhti\",\"Touko\",\"Kesä\",\"Heinä\",\"Elo\",\"Syys\",\"Loka\",\"Marras\",\"Joulu\"],dayNamesShort:[\"Su\",\"Ma\",\"Ti\",\"Ke\",\"To\",\"Pe\",\"La\"],dayNames:[\"Sunnuntai\",\"Maanantai\",\"Tiistai\",\"Keskiviikko\",\"Torstai\",\"Perjantai\",\"Lauantai\"],dayNamesMin:[\"Su\",\"Ma\",\"Ti\",\"Ke\",\"To\",\"Pe\",\"La\"],weekHeader:\"Vk\",dateFormat:\"d.m.yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),e.fullCalendar.locale(\"fi\",{buttonText:{month:\"Kuukausi\",week:\"Viikko\",day:\"Päivä\",list:\"Tapahtumat\"},allDayText:\"Koko päivä\",eventLimitText:\"lisää\",noEventsMessage:\"Ei tapahtumia näytettäviä\"})}(),function(){!function(){var e=a.defineLocale(\"fr\",{months:\"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre\".split(\"_\"),monthsShort:\"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.\".split(\"_\"),monthsParseExact:!0,weekdays:\"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi\".split(\"_\"),weekdaysShort:\"dim._lun._mar._mer._jeu._ven._sam.\".split(\"_\"),weekdaysMin:\"Di_Lu_Ma_Me_Je_Ve_Sa\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[Aujourd'hui à] LT\",nextDay:\"[Demain à] LT\",nextWeek:\"dddd [à] LT\",lastDay:\"[Hier à] LT\",lastWeek:\"dddd [dernier à] LT\",sameElse:\"L\"},relativeTime:{future:\"dans %s\",past:\"il y a %s\",s:\"quelques secondes\",m:\"une minute\",mm:\"%d minutes\",h:\"une heure\",hh:\"%d heures\",d:\"un jour\",dd:\"%d jours\",M:\"un mois\",MM:\"%d mois\",y:\"un an\",yy:\"%d ans\"},ordinalParse:/\\d{1,2}(er|)/,ordinal:function(e){return e+(1===e?\"er\":\"\")},week:{dow:1,doy:4}});return e}(),e.fullCalendar.datepickerLocale(\"fr\",\"fr\",{closeText:\"Fermer\",prevText:\"Précédent\",nextText:\"Suivant\",currentText:\"Aujourd'hui\",monthNames:[\"janvier\",\"février\",\"mars\",\"avril\",\"mai\",\"juin\",\"juillet\",\"août\",\"septembre\",\"octobre\",\"novembre\",\"décembre\"],monthNamesShort:[\"janv.\",\"févr.\",\"mars\",\"avr.\",\"mai\",\"juin\",\"juil.\",\"août\",\"sept.\",\"oct.\",\"nov.\",\"déc.\"],dayNames:[\"dimanche\",\"lundi\",\"mardi\",\"mercredi\",\"jeudi\",\"vendredi\",\"samedi\"],dayNamesShort:[\"dim.\",\"lun.\",\"mar.\",\"mer.\",\"jeu.\",\"ven.\",\"sam.\"],dayNamesMin:[\"D\",\"L\",\"M\",\"M\",\"J\",\"V\",\"S\"],weekHeader:\"Sem.\",dateFormat:\"dd/mm/yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),e.fullCalendar.locale(\"fr\",{buttonText:{year:\"Année\",month:\"Mois\",week:\"Semaine\",day:\"Jour\",list:\"Mon planning\"},allDayHtml:\"Toute la
journée\",eventLimitText:\"en plus\",noEventsMessage:\"Aucun événement à afficher\"})}(),function(){!function(){var e=a.defineLocale(\"fr-ca\",{months:\"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre\".split(\"_\"),monthsShort:\"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.\".split(\"_\"),monthsParseExact:!0,weekdays:\"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi\".split(\"_\"),weekdaysShort:\"dim._lun._mar._mer._jeu._ven._sam.\".split(\"_\"),weekdaysMin:\"Di_Lu_Ma_Me_Je_Ve_Sa\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"YYYY-MM-DD\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[Aujourd'hui à] LT\",nextDay:\"[Demain à] LT\",nextWeek:\"dddd [à] LT\",lastDay:\"[Hier à] LT\",lastWeek:\"dddd [dernier à] LT\",sameElse:\"L\"},relativeTime:{future:\"dans %s\",past:\"il y a %s\",s:\"quelques secondes\",m:\"une minute\",mm:\"%d minutes\",h:\"une heure\",hh:\"%d heures\",d:\"un jour\",dd:\"%d jours\",M:\"un mois\",MM:\"%d mois\",y:\"un an\",yy:\"%d ans\"},ordinalParse:/\\d{1,2}(er|e)/,ordinal:function(e){return e+(1===e?\"er\":\"e\")}});return e}(),e.fullCalendar.datepickerLocale(\"fr-ca\",\"fr-CA\",{closeText:\"Fermer\",prevText:\"Précédent\",nextText:\"Suivant\",currentText:\"Aujourd'hui\",monthNames:[\"janvier\",\"février\",\"mars\",\"avril\",\"mai\",\"juin\",\"juillet\",\"août\",\"septembre\",\"octobre\",\"novembre\",\"décembre\"],monthNamesShort:[\"janv.\",\"févr.\",\"mars\",\"avril\",\"mai\",\"juin\",\"juil.\",\"août\",\"sept.\",\"oct.\",\"nov.\",\"déc.\"],dayNames:[\"dimanche\",\"lundi\",\"mardi\",\"mercredi\",\"jeudi\",\"vendredi\",\"samedi\"],dayNamesShort:[\"dim.\",\"lun.\",\"mar.\",\"mer.\",\"jeu.\",\"ven.\",\"sam.\"],dayNamesMin:[\"D\",\"L\",\"M\",\"M\",\"J\",\"V\",\"S\"],weekHeader:\"Sem.\",dateFormat:\"yy-mm-dd\",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),e.fullCalendar.locale(\"fr-ca\",{buttonText:{year:\"Année\",month:\"Mois\",week:\"Semaine\",day:\"Jour\",list:\"Mon planning\"},allDayHtml:\"Toute la
journée\",eventLimitText:\"en plus\",noEventsMessage:\"Aucun événement à afficher\"})}(),function(){!function(){var e=a.defineLocale(\"fr-ch\",{months:\"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre\".split(\"_\"),monthsShort:\"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.\".split(\"_\"),monthsParseExact:!0,weekdays:\"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi\".split(\"_\"),weekdaysShort:\"dim._lun._mar._mer._jeu._ven._sam.\".split(\"_\"),weekdaysMin:\"Di_Lu_Ma_Me_Je_Ve_Sa\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[Aujourd'hui à] LT\",nextDay:\"[Demain à] LT\",nextWeek:\"dddd [à] LT\",lastDay:\"[Hier à] LT\",lastWeek:\"dddd [dernier à] LT\",sameElse:\"L\"},relativeTime:{future:\"dans %s\",past:\"il y a %s\",s:\"quelques secondes\",m:\"une minute\",mm:\"%d minutes\",h:\"une heure\",hh:\"%d heures\",d:\"un jour\",dd:\"%d jours\",M:\"un mois\",MM:\"%d mois\",y:\"un an\",yy:\"%d ans\"},ordinalParse:/\\d{1,2}(er|e)/,ordinal:function(e){return e+(1===e?\"er\":\"e\")},week:{dow:1,doy:4}});return e}(),e.fullCalendar.datepickerLocale(\"fr-ch\",\"fr-CH\",{closeText:\"Fermer\",prevText:\"<Préc\",nextText:\"Suiv>\",currentText:\"Courant\",monthNames:[\"janvier\",\"février\",\"mars\",\"avril\",\"mai\",\"juin\",\"juillet\",\"août\",\"septembre\",\"octobre\",\"novembre\",\"décembre\"],monthNamesShort:[\"janv.\",\"févr.\",\"mars\",\"avril\",\"mai\",\"juin\",\"juil.\",\"août\",\"sept.\",\"oct.\",\"nov.\",\"déc.\"],dayNames:[\"dimanche\",\"lundi\",\"mardi\",\"mercredi\",\"jeudi\",\"vendredi\",\"samedi\"],dayNamesShort:[\"dim.\",\"lun.\",\"mar.\",\"mer.\",\"jeu.\",\"ven.\",\"sam.\"],dayNamesMin:[\"D\",\"L\",\"M\",\"M\",\"J\",\"V\",\"S\"],weekHeader:\"Sm\",dateFormat:\"dd.mm.yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),e.fullCalendar.locale(\"fr-ch\",{buttonText:{year:\"Année\",month:\"Mois\",week:\"Semaine\",day:\"Jour\",list:\"Mon planning\"},allDayHtml:\"Toute la
journée\",eventLimitText:\"en plus\",noEventsMessage:\"Aucun événement à afficher\"})}(),function(){!function(){var e=a.defineLocale(\"gl\",{months:\"xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro\".split(\"_\"),monthsShort:\"xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.\".split(\"_\"),monthsParseExact:!0,weekdays:\"domingo_luns_martes_mércores_xoves_venres_sábado\".split(\"_\"),weekdaysShort:\"dom._lun._mar._mér._xov._ven._sáb.\".split(\"_\"),weekdaysMin:\"do_lu_ma_mé_xo_ve_sá\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D [de] MMMM [de] YYYY\",LLL:\"D [de] MMMM [de] YYYY H:mm\",LLLL:\"dddd, D [de] MMMM [de] YYYY H:mm\"},calendar:{sameDay:function(){return\"[hoxe \"+(1!==this.hours()?\"ás\":\"á\")+\"] LT\"},nextDay:function(){return\"[mañá \"+(1!==this.hours()?\"ás\":\"á\")+\"] LT\"},nextWeek:function(){return\"dddd [\"+(1!==this.hours()?\"ás\":\"a\")+\"] LT\"},lastDay:function(){return\"[onte \"+(1!==this.hours()?\"á\":\"a\")+\"] LT\"},lastWeek:function(){return\"[o] dddd [pasado \"+(1!==this.hours()?\"ás\":\"a\")+\"] LT\"},sameElse:\"L\"},relativeTime:{future:function(e){return 0===e.indexOf(\"un\")?\"n\"+e:\"en \"+e},past:\"hai %s\",s:\"uns segundos\",m:\"un minuto\",mm:\"%d minutos\",h:\"unha hora\",hh:\"%d horas\",d:\"un día\",dd:\"%d días\",M:\"un mes\",MM:\"%d meses\",y:\"un ano\",yy:\"%d anos\"},ordinalParse:/\\d{1,2}º/,ordinal:\"%dº\",week:{dow:1,doy:4}});return e}(),e.fullCalendar.datepickerLocale(\"gl\",\"gl\",{closeText:\"Pechar\",prevText:\"<Ant\",nextText:\"Seg>\",currentText:\"Hoxe\",monthNames:[\"Xaneiro\",\"Febreiro\",\"Marzo\",\"Abril\",\"Maio\",\"Xuño\",\"Xullo\",\"Agosto\",\"Setembro\",\"Outubro\",\"Novembro\",\"Decembro\"],monthNamesShort:[\"Xan\",\"Feb\",\"Mar\",\"Abr\",\"Mai\",\"Xuñ\",\"Xul\",\"Ago\",\"Set\",\"Out\",\"Nov\",\"Dec\"],dayNames:[\"Domingo\",\"Luns\",\"Martes\",\"Mércores\",\"Xoves\",\"Venres\",\"Sábado\"],dayNamesShort:[\"Dom\",\"Lun\",\"Mar\",\"Mér\",\"Xov\",\"Ven\",\"Sáb\"],dayNamesMin:[\"Do\",\"Lu\",\"Ma\",\"Mé\",\"Xo\",\"Ve\",\"Sá\"],weekHeader:\"Sm\",dateFormat:\"dd/mm/yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),e.fullCalendar.locale(\"gl\",{buttonText:{month:\"Mes\",week:\"Semana\",day:\"Día\",list:\"Axenda\"},allDayHtml:\"Todo
o día\",eventLimitText:\"máis\",noEventsMessage:\"Non hai eventos para amosar\"})}(),function(){!function(){var e=a.defineLocale(\"he\",{months:\"ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר\".split(\"_\"),monthsShort:\"ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳\".split(\"_\"),weekdays:\"ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת\".split(\"_\"),weekdaysShort:\"א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳\".split(\"_\"),weekdaysMin:\"א_ב_ג_ד_ה_ו_ש\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D [ב]MMMM YYYY\",LLL:\"D [ב]MMMM YYYY HH:mm\",LLLL:\"dddd, D [ב]MMMM YYYY HH:mm\",l:\"D/M/YYYY\",ll:\"D MMM YYYY\",lll:\"D MMM YYYY HH:mm\",llll:\"ddd, D MMM YYYY HH:mm\"},calendar:{sameDay:\"[היום ב־]LT\",nextDay:\"[מחר ב־]LT\",nextWeek:\"dddd [בשעה] LT\",lastDay:\"[אתמול ב־]LT\",lastWeek:\"[ביום] dddd [האחרון בשעה] LT\",sameElse:\"L\"},relativeTime:{future:\"בעוד %s\",past:\"לפני %s\",s:\"מספר שניות\",m:\"דקה\",mm:\"%d דקות\",h:\"שעה\",hh:function(e){return 2===e?\"שעתיים\":e+\" שעות\"},d:\"יום\",dd:function(e){return 2===e?\"יומיים\":e+\" ימים\"},M:\"חודש\",MM:function(e){return 2===e?\"חודשיים\":e+\" חודשים\"},y:\"שנה\",yy:function(e){return 2===e?\"שנתיים\":e%10===0&&10!==e?e+\" שנה\":e+\" שנים\"}},meridiemParse:/אחה\"צ|לפנה\"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,isPM:function(e){return/^(אחה\"צ|אחרי הצהריים|בערב)$/.test(e)},meridiem:function(e,a,t){return e<5?\"לפנות בוקר\":e<10?\"בבוקר\":e<12?t?'לפנה\"צ':\"לפני הצהריים\":e<18?t?'אחה\"צ':\"אחרי הצהריים\":\"בערב\"}});return e}(),e.fullCalendar.datepickerLocale(\"he\",\"he\",{closeText:\"סגור\",prevText:\"<הקודם\",nextText:\"הבא>\",currentText:\"היום\",monthNames:[\"ינואר\",\"פברואר\",\"מרץ\",\"אפריל\",\"מאי\",\"יוני\",\"יולי\",\"אוגוסט\",\"ספטמבר\",\"אוקטובר\",\"נובמבר\",\"דצמבר\"],monthNamesShort:[\"ינו\",\"פבר\",\"מרץ\",\"אפר\",\"מאי\",\"יוני\",\"יולי\",\"אוג\",\"ספט\",\"אוק\",\"נוב\",\"דצמ\"],dayNames:[\"ראשון\",\"שני\",\"שלישי\",\"רביעי\",\"חמישי\",\"שישי\",\"שבת\"],dayNamesShort:[\"א'\",\"ב'\",\"ג'\",\"ד'\",\"ה'\",\"ו'\",\"שבת\"],dayNamesMin:[\"א'\",\"ב'\",\"ג'\",\"ד'\",\"ה'\",\"ו'\",\"שבת\"],weekHeader:\"Wk\",dateFormat:\"dd/mm/yy\",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:\"\"}),e.fullCalendar.locale(\"he\",{buttonText:{month:\"חודש\",week:\"שבוע\",day:\"יום\",list:\"סדר יום\"},allDayText:\"כל היום\",eventLimitText:\"אחר\",noEventsMessage:\"אין אירועים להצגה\",weekNumberTitle:\"שבוע\"})}(),function(){!function(){var e={1:\"१\",2:\"२\",3:\"३\",4:\"४\",5:\"५\",6:\"६\",7:\"७\",8:\"८\",9:\"९\",0:\"०\"},t={\"१\":\"1\",\"२\":\"2\",\"३\":\"3\",\"४\":\"4\",\"५\":\"5\",\"६\":\"6\",\"७\":\"7\",\"८\":\"8\",\"९\":\"9\",\"०\":\"0\"},n=a.defineLocale(\"hi\",{months:\"जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर\".split(\"_\"),monthsShort:\"जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.\".split(\"_\"),monthsParseExact:!0,weekdays:\"रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार\".split(\"_\"),weekdaysShort:\"रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि\".split(\"_\"),weekdaysMin:\"र_सो_मं_बु_गु_शु_श\".split(\"_\"),longDateFormat:{LT:\"A h:mm बजे\",LTS:\"A h:mm:ss बजे\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY, A h:mm बजे\",LLLL:\"dddd, D MMMM YYYY, A h:mm बजे\"},calendar:{sameDay:\"[आज] LT\",nextDay:\"[कल] LT\",nextWeek:\"dddd, LT\",lastDay:\"[कल] LT\",lastWeek:\"[पिछले] dddd, LT\",sameElse:\"L\"},relativeTime:{future:\"%s में\",past:\"%s पहले\",s:\"कुछ ही क्षण\",m:\"एक मिनट\",mm:\"%d मिनट\",h:\"एक घंटा\",hh:\"%d घंटे\",d:\"एक दिन\",dd:\"%d दिन\",M:\"एक महीने\",MM:\"%d महीने\",y:\"एक वर्ष\",yy:\"%d वर्ष\"},preparse:function(e){return e.replace(/[१२३४५६७८९०]/g,function(e){return t[e]})},postformat:function(a){return a.replace(/\\d/g,function(a){return e[a]})},meridiemParse:/रात|सुबह|दोपहर|शाम/,meridiemHour:function(e,a){return 12===e&&(e=0),\"रात\"===a?e<4?e:e+12:\"सुबह\"===a?e:\"दोपहर\"===a?e>=10?e:e+12:\"शाम\"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?\"रात\":e<10?\"सुबह\":e<17?\"दोपहर\":e<20?\"शाम\":\"रात\"},week:{dow:0,doy:6}});return n}(),e.fullCalendar.datepickerLocale(\"hi\",\"hi\",{closeText:\"बंद\",prevText:\"पिछला\",nextText:\"अगला\",currentText:\"आज\",monthNames:[\"जनवरी \",\"फरवरी\",\"मार्च\",\"अप्रेल\",\"मई\",\"जून\",\"जूलाई\",\"अगस्त \",\"सितम्बर\",\"अक्टूबर\",\"नवम्बर\",\"दिसम्बर\"],monthNamesShort:[\"जन\",\"फर\",\"मार्च\",\"अप्रेल\",\"मई\",\"जून\",\"जूलाई\",\"अग\",\"सित\",\"अक्ट\",\"नव\",\"दि\"],dayNames:[\"रविवार\",\"सोमवार\",\"मंगलवार\",\"बुधवार\",\"गुरुवार\",\"शुक्रवार\",\"शनिवार\"],dayNamesShort:[\"रवि\",\"सोम\",\"मंगल\",\"बुध\",\"गुरु\",\"शुक्र\",\"शनि\"],dayNamesMin:[\"रवि\",\"सोम\",\"मंगल\",\"बुध\",\"गुरु\",\"शुक्र\",\"शनि\"],weekHeader:\"हफ्ता\",dateFormat:\"dd/mm/yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),e.fullCalendar.locale(\"hi\",{buttonText:{month:\"महीना\",week:\"सप्ताह\",day:\"दिन\",list:\"कार्यसूची\"},allDayText:\"सभी दिन\",eventLimitText:function(e){return\"+अधिक \"+e},noEventsMessage:\"कोई घटनाओं को प्रदर्शित करने के लिए\"})}(),function(){!function(){function e(e,a,t){var n=e+\" \";switch(t){case\"m\":return a?\"jedna minuta\":\"jedne minute\";case\"mm\":return n+=1===e?\"minuta\":2===e||3===e||4===e?\"minute\":\"minuta\";case\"h\":return a?\"jedan sat\":\"jednog sata\";case\"hh\":return n+=1===e?\"sat\":2===e||3===e||4===e?\"sata\":\"sati\";case\"dd\":return n+=1===e?\"dan\":\"dana\";case\"MM\":return n+=1===e?\"mjesec\":2===e||3===e||4===e?\"mjeseca\":\"mjeseci\";case\"yy\":return n+=1===e?\"godina\":2===e||3===e||4===e?\"godine\":\"godina\"}}var t=a.defineLocale(\"hr\",{months:{format:\"siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca\".split(\"_\"),standalone:\"siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac\".split(\"_\")},monthsShort:\"sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.\".split(\"_\"),monthsParseExact:!0,weekdays:\"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota\".split(\"_\"),weekdaysShort:\"ned._pon._uto._sri._čet._pet._sub.\".split(\"_\"),weekdaysMin:\"ne_po_ut_sr_če_pe_su\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY H:mm\",LLLL:\"dddd, D. MMMM YYYY H:mm\"},calendar:{sameDay:\"[danas u] LT\",nextDay:\"[sutra u] LT\",nextWeek:function(){switch(this.day()){case 0:return\"[u] [nedjelju] [u] LT\";case 3:return\"[u] [srijedu] [u] LT\";case 6:return\"[u] [subotu] [u] LT\";case 1:case 2:case 4:case 5:return\"[u] dddd [u] LT\"}},lastDay:\"[jučer u] LT\",lastWeek:function(){switch(this.day()){case 0:case 3:return\"[prošlu] dddd [u] LT\";case 6:return\"[prošle] [subote] [u] LT\";case 1:case 2:case 4:case 5:return\"[prošli] dddd [u] LT\"}},sameElse:\"L\"},relativeTime:{future:\"za %s\",past:\"prije %s\",s:\"par sekundi\",m:e,mm:e,h:e,hh:e,d:\"dan\",dd:e,M:\"mjesec\",MM:e,y:\"godinu\",yy:e},ordinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:7}});return t}(),e.fullCalendar.datepickerLocale(\"hr\",\"hr\",{closeText:\"Zatvori\",prevText:\"<\",nextText:\">\",currentText:\"Danas\",monthNames:[\"Siječanj\",\"Veljača\",\"Ožujak\",\"Travanj\",\"Svibanj\",\"Lipanj\",\"Srpanj\",\"Kolovoz\",\"Rujan\",\"Listopad\",\"Studeni\",\"Prosinac\"],\nmonthNamesShort:[\"Sij\",\"Velj\",\"Ožu\",\"Tra\",\"Svi\",\"Lip\",\"Srp\",\"Kol\",\"Ruj\",\"Lis\",\"Stu\",\"Pro\"],dayNames:[\"Nedjelja\",\"Ponedjeljak\",\"Utorak\",\"Srijeda\",\"Četvrtak\",\"Petak\",\"Subota\"],dayNamesShort:[\"Ned\",\"Pon\",\"Uto\",\"Sri\",\"Čet\",\"Pet\",\"Sub\"],dayNamesMin:[\"Ne\",\"Po\",\"Ut\",\"Sr\",\"Če\",\"Pe\",\"Su\"],weekHeader:\"Tje\",dateFormat:\"dd.mm.yy.\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),e.fullCalendar.locale(\"hr\",{buttonText:{month:\"Mjesec\",week:\"Tjedan\",day:\"Dan\",list:\"Raspored\"},allDayText:\"Cijeli dan\",eventLimitText:function(e){return\"+ još \"+e},noEventsMessage:\"Nema događaja za prikaz\"})}(),function(){!function(){function e(e,a,t,n){var r=e;switch(t){case\"s\":return n||a?\"néhány másodperc\":\"néhány másodperce\";case\"m\":return\"egy\"+(n||a?\" perc\":\" perce\");case\"mm\":return r+(n||a?\" perc\":\" perce\");case\"h\":return\"egy\"+(n||a?\" óra\":\" órája\");case\"hh\":return r+(n||a?\" óra\":\" órája\");case\"d\":return\"egy\"+(n||a?\" nap\":\" napja\");case\"dd\":return r+(n||a?\" nap\":\" napja\");case\"M\":return\"egy\"+(n||a?\" hónap\":\" hónapja\");case\"MM\":return r+(n||a?\" hónap\":\" hónapja\");case\"y\":return\"egy\"+(n||a?\" év\":\" éve\");case\"yy\":return r+(n||a?\" év\":\" éve\")}return\"\"}function t(e){return(e?\"\":\"[múlt] \")+\"[\"+n[this.day()]+\"] LT[-kor]\"}var n=\"vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton\".split(\" \"),r=a.defineLocale(\"hu\",{months:\"január_február_március_április_május_június_július_augusztus_szeptember_október_november_december\".split(\"_\"),monthsShort:\"jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec\".split(\"_\"),weekdays:\"vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat\".split(\"_\"),weekdaysShort:\"vas_hét_kedd_sze_csüt_pén_szo\".split(\"_\"),weekdaysMin:\"v_h_k_sze_cs_p_szo\".split(\"_\"),longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"YYYY.MM.DD.\",LL:\"YYYY. MMMM D.\",LLL:\"YYYY. MMMM D. H:mm\",LLLL:\"YYYY. MMMM D., dddd H:mm\"},meridiemParse:/de|du/i,isPM:function(e){return\"u\"===e.charAt(1).toLowerCase()},meridiem:function(e,a,t){return e<12?t===!0?\"de\":\"DE\":t===!0?\"du\":\"DU\"},calendar:{sameDay:\"[ma] LT[-kor]\",nextDay:\"[holnap] LT[-kor]\",nextWeek:function(){return t.call(this,!0)},lastDay:\"[tegnap] LT[-kor]\",lastWeek:function(){return t.call(this,!1)},sameElse:\"L\"},relativeTime:{future:\"%s múlva\",past:\"%s\",s:e,m:e,mm:e,h:e,hh:e,d:e,dd:e,M:e,MM:e,y:e,yy:e},ordinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}});return r}(),e.fullCalendar.datepickerLocale(\"hu\",\"hu\",{closeText:\"bezár\",prevText:\"vissza\",nextText:\"előre\",currentText:\"ma\",monthNames:[\"Január\",\"Február\",\"Március\",\"Április\",\"Május\",\"Június\",\"Július\",\"Augusztus\",\"Szeptember\",\"Október\",\"November\",\"December\"],monthNamesShort:[\"Jan\",\"Feb\",\"Már\",\"Ápr\",\"Máj\",\"Jún\",\"Júl\",\"Aug\",\"Szep\",\"Okt\",\"Nov\",\"Dec\"],dayNames:[\"Vasárnap\",\"Hétfő\",\"Kedd\",\"Szerda\",\"Csütörtök\",\"Péntek\",\"Szombat\"],dayNamesShort:[\"Vas\",\"Hét\",\"Ked\",\"Sze\",\"Csü\",\"Pén\",\"Szo\"],dayNamesMin:[\"V\",\"H\",\"K\",\"Sze\",\"Cs\",\"P\",\"Szo\"],weekHeader:\"Hét\",dateFormat:\"yy.mm.dd.\",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:\"\"}),e.fullCalendar.locale(\"hu\",{buttonText:{month:\"Hónap\",week:\"Hét\",day:\"Nap\",list:\"Napló\"},allDayText:\"Egész nap\",eventLimitText:\"további\",noEventsMessage:\"Nincs megjeleníthető események\"})}(),function(){!function(){var e=a.defineLocale(\"id\",{months:\"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember\".split(\"_\"),monthsShort:\"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des\".split(\"_\"),weekdays:\"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu\".split(\"_\"),weekdaysShort:\"Min_Sen_Sel_Rab_Kam_Jum_Sab\".split(\"_\"),weekdaysMin:\"Mg_Sn_Sl_Rb_Km_Jm_Sb\".split(\"_\"),longDateFormat:{LT:\"HH.mm\",LTS:\"HH.mm.ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY [pukul] HH.mm\",LLLL:\"dddd, D MMMM YYYY [pukul] HH.mm\"},meridiemParse:/pagi|siang|sore|malam/,meridiemHour:function(e,a){return 12===e&&(e=0),\"pagi\"===a?e:\"siang\"===a?e>=11?e:e+12:\"sore\"===a||\"malam\"===a?e+12:void 0},meridiem:function(e,a,t){return e<11?\"pagi\":e<15?\"siang\":e<19?\"sore\":\"malam\"},calendar:{sameDay:\"[Hari ini pukul] LT\",nextDay:\"[Besok pukul] LT\",nextWeek:\"dddd [pukul] LT\",lastDay:\"[Kemarin pukul] LT\",lastWeek:\"dddd [lalu pukul] LT\",sameElse:\"L\"},relativeTime:{future:\"dalam %s\",past:\"%s yang lalu\",s:\"beberapa detik\",m:\"semenit\",mm:\"%d menit\",h:\"sejam\",hh:\"%d jam\",d:\"sehari\",dd:\"%d hari\",M:\"sebulan\",MM:\"%d bulan\",y:\"setahun\",yy:\"%d tahun\"},week:{dow:1,doy:7}});return e}(),e.fullCalendar.datepickerLocale(\"id\",\"id\",{closeText:\"Tutup\",prevText:\"<mundur\",nextText:\"maju>\",currentText:\"hari ini\",monthNames:[\"Januari\",\"Februari\",\"Maret\",\"April\",\"Mei\",\"Juni\",\"Juli\",\"Agustus\",\"September\",\"Oktober\",\"Nopember\",\"Desember\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"Mei\",\"Jun\",\"Jul\",\"Agus\",\"Sep\",\"Okt\",\"Nop\",\"Des\"],dayNames:[\"Minggu\",\"Senin\",\"Selasa\",\"Rabu\",\"Kamis\",\"Jumat\",\"Sabtu\"],dayNamesShort:[\"Min\",\"Sen\",\"Sel\",\"Rab\",\"kam\",\"Jum\",\"Sab\"],dayNamesMin:[\"Mg\",\"Sn\",\"Sl\",\"Rb\",\"Km\",\"jm\",\"Sb\"],weekHeader:\"Mg\",dateFormat:\"dd/mm/yy\",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),e.fullCalendar.locale(\"id\",{buttonText:{month:\"Bulan\",week:\"Minggu\",day:\"Hari\",list:\"Agenda\"},allDayHtml:\"Sehari
penuh\",eventLimitText:\"lebih\",noEventsMessage:\"Tidak ada acara untuk ditampilkan\"})}(),function(){!function(){function e(e){return e%100===11||e%10!==1}function t(a,t,n,r){var s=a+\" \";switch(n){case\"s\":return t||r?\"nokkrar sekúndur\":\"nokkrum sekúndum\";case\"m\":return t?\"mínúta\":\"mínútu\";case\"mm\":return e(a)?s+(t||r?\"mínútur\":\"mínútum\"):t?s+\"mínúta\":s+\"mínútu\";case\"hh\":return e(a)?s+(t||r?\"klukkustundir\":\"klukkustundum\"):s+\"klukkustund\";case\"d\":return t?\"dagur\":r?\"dag\":\"degi\";case\"dd\":return e(a)?t?s+\"dagar\":s+(r?\"daga\":\"dögum\"):t?s+\"dagur\":s+(r?\"dag\":\"degi\");case\"M\":return t?\"mánuður\":r?\"mánuð\":\"mánuði\";case\"MM\":return e(a)?t?s+\"mánuðir\":s+(r?\"mánuði\":\"mánuðum\"):t?s+\"mánuður\":s+(r?\"mánuð\":\"mánuði\");case\"y\":return t||r?\"ár\":\"ári\";case\"yy\":return e(a)?s+(t||r?\"ár\":\"árum\"):s+(t||r?\"ár\":\"ári\")}}var n=a.defineLocale(\"is\",{months:\"janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember\".split(\"_\"),monthsShort:\"jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des\".split(\"_\"),weekdays:\"sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur\".split(\"_\"),weekdaysShort:\"sun_mán_þri_mið_fim_fös_lau\".split(\"_\"),weekdaysMin:\"Su_Má_Þr_Mi_Fi_Fö_La\".split(\"_\"),longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY [kl.] H:mm\",LLLL:\"dddd, D. MMMM YYYY [kl.] H:mm\"},calendar:{sameDay:\"[í dag kl.] LT\",nextDay:\"[á morgun kl.] LT\",nextWeek:\"dddd [kl.] LT\",lastDay:\"[í gær kl.] LT\",lastWeek:\"[síðasta] dddd [kl.] LT\",sameElse:\"L\"},relativeTime:{future:\"eftir %s\",past:\"fyrir %s síðan\",s:t,m:t,mm:t,h:\"klukkustund\",hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},ordinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}});return n}(),e.fullCalendar.datepickerLocale(\"is\",\"is\",{closeText:\"Loka\",prevText:\"< Fyrri\",nextText:\"Næsti >\",currentText:\"Í dag\",monthNames:[\"Janúar\",\"Febrúar\",\"Mars\",\"Apríl\",\"Maí\",\"Júní\",\"Júlí\",\"Ágúst\",\"September\",\"Október\",\"Nóvember\",\"Desember\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"Maí\",\"Jún\",\"Júl\",\"Ágú\",\"Sep\",\"Okt\",\"Nóv\",\"Des\"],dayNames:[\"Sunnudagur\",\"Mánudagur\",\"Þriðjudagur\",\"Miðvikudagur\",\"Fimmtudagur\",\"Föstudagur\",\"Laugardagur\"],dayNamesShort:[\"Sun\",\"Mán\",\"Þri\",\"Mið\",\"Fim\",\"Fös\",\"Lau\"],dayNamesMin:[\"Su\",\"Má\",\"Þr\",\"Mi\",\"Fi\",\"Fö\",\"La\"],weekHeader:\"Vika\",dateFormat:\"dd.mm.yy\",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),e.fullCalendar.locale(\"is\",{buttonText:{month:\"Mánuður\",week:\"Vika\",day:\"Dagur\",list:\"Dagskrá\"},allDayHtml:\"Allan
daginn\",eventLimitText:\"meira\",noEventsMessage:\"Engir viðburðir til að sýna\"})}(),function(){!function(){var e=a.defineLocale(\"it\",{months:\"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre\".split(\"_\"),monthsShort:\"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic\".split(\"_\"),weekdays:\"Domenica_Lunedì_Martedì_Mercoledì_Giovedì_Venerdì_Sabato\".split(\"_\"),weekdaysShort:\"Dom_Lun_Mar_Mer_Gio_Ven_Sab\".split(\"_\"),weekdaysMin:\"Do_Lu_Ma_Me_Gi_Ve_Sa\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd, D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[Oggi alle] LT\",nextDay:\"[Domani alle] LT\",nextWeek:\"dddd [alle] LT\",lastDay:\"[Ieri alle] LT\",lastWeek:function(){switch(this.day()){case 0:return\"[la scorsa] dddd [alle] LT\";default:return\"[lo scorso] dddd [alle] LT\"}},sameElse:\"L\"},relativeTime:{future:function(e){return(/^[0-9].+$/.test(e)?\"tra\":\"in\")+\" \"+e},past:\"%s fa\",s:\"alcuni secondi\",m:\"un minuto\",mm:\"%d minuti\",h:\"un'ora\",hh:\"%d ore\",d:\"un giorno\",dd:\"%d giorni\",M:\"un mese\",MM:\"%d mesi\",y:\"un anno\",yy:\"%d anni\"},ordinalParse:/\\d{1,2}º/,ordinal:\"%dº\",week:{dow:1,doy:4}});return e}(),e.fullCalendar.datepickerLocale(\"it\",\"it\",{closeText:\"Chiudi\",prevText:\"<Prec\",nextText:\"Succ>\",currentText:\"Oggi\",monthNames:[\"Gennaio\",\"Febbraio\",\"Marzo\",\"Aprile\",\"Maggio\",\"Giugno\",\"Luglio\",\"Agosto\",\"Settembre\",\"Ottobre\",\"Novembre\",\"Dicembre\"],monthNamesShort:[\"Gen\",\"Feb\",\"Mar\",\"Apr\",\"Mag\",\"Giu\",\"Lug\",\"Ago\",\"Set\",\"Ott\",\"Nov\",\"Dic\"],dayNames:[\"Domenica\",\"Lunedì\",\"Martedì\",\"Mercoledì\",\"Giovedì\",\"Venerdì\",\"Sabato\"],dayNamesShort:[\"Dom\",\"Lun\",\"Mar\",\"Mer\",\"Gio\",\"Ven\",\"Sab\"],dayNamesMin:[\"Do\",\"Lu\",\"Ma\",\"Me\",\"Gi\",\"Ve\",\"Sa\"],weekHeader:\"Sm\",dateFormat:\"dd/mm/yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),e.fullCalendar.locale(\"it\",{buttonText:{month:\"Mese\",week:\"Settimana\",day:\"Giorno\",list:\"Agenda\"},allDayHtml:\"Tutto il
giorno\",eventLimitText:function(e){return\"+altri \"+e},noEventsMessage:\"Non ci sono eventi da visualizzare\"})}(),function(){!function(){var e=a.defineLocale(\"ja\",{months:\"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月\".split(\"_\"),monthsShort:\"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月\".split(\"_\"),weekdays:\"日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日\".split(\"_\"),weekdaysShort:\"日_月_火_水_木_金_土\".split(\"_\"),weekdaysMin:\"日_月_火_水_木_金_土\".split(\"_\"),longDateFormat:{LT:\"Ah時m分\",LTS:\"Ah時m分s秒\",L:\"YYYY/MM/DD\",LL:\"YYYY年M月D日\",LLL:\"YYYY年M月D日Ah時m分\",LLLL:\"YYYY年M月D日Ah時m分 dddd\"},meridiemParse:/午前|午後/i,isPM:function(e){return\"午後\"===e},meridiem:function(e,a,t){return e<12?\"午前\":\"午後\"},calendar:{sameDay:\"[今日] LT\",nextDay:\"[明日] LT\",nextWeek:\"[来週]dddd LT\",lastDay:\"[昨日] LT\",lastWeek:\"[前週]dddd LT\",sameElse:\"L\"},ordinalParse:/\\d{1,2}日/,ordinal:function(e,a){switch(a){case\"d\":case\"D\":case\"DDD\":return e+\"日\";default:return e}},relativeTime:{future:\"%s後\",past:\"%s前\",s:\"数秒\",m:\"1分\",mm:\"%d分\",h:\"1時間\",hh:\"%d時間\",d:\"1日\",dd:\"%d日\",M:\"1ヶ月\",MM:\"%dヶ月\",y:\"1年\",yy:\"%d年\"}});return e}(),e.fullCalendar.datepickerLocale(\"ja\",\"ja\",{closeText:\"閉じる\",prevText:\"<前\",nextText:\"次>\",currentText:\"今日\",monthNames:[\"1月\",\"2月\",\"3月\",\"4月\",\"5月\",\"6月\",\"7月\",\"8月\",\"9月\",\"10月\",\"11月\",\"12月\"],monthNamesShort:[\"1月\",\"2月\",\"3月\",\"4月\",\"5月\",\"6月\",\"7月\",\"8月\",\"9月\",\"10月\",\"11月\",\"12月\"],dayNames:[\"日曜日\",\"月曜日\",\"火曜日\",\"水曜日\",\"木曜日\",\"金曜日\",\"土曜日\"],dayNamesShort:[\"日\",\"月\",\"火\",\"水\",\"木\",\"金\",\"土\"],dayNamesMin:[\"日\",\"月\",\"火\",\"水\",\"木\",\"金\",\"土\"],weekHeader:\"週\",dateFormat:\"yy/mm/dd\",firstDay:0,isRTL:!1,showMonthAfterYear:!0,yearSuffix:\"年\"}),e.fullCalendar.locale(\"ja\",{buttonText:{month:\"月\",week:\"週\",day:\"日\",list:\"予定リスト\"},allDayText:\"終日\",eventLimitText:function(e){return\"他 \"+e+\" 件\"},noEventsMessage:\"イベントが表示されないように\"})}(),function(){!function(){var e={0:\"-ші\",1:\"-ші\",2:\"-ші\",3:\"-ші\",4:\"-ші\",5:\"-ші\",6:\"-шы\",7:\"-ші\",8:\"-ші\",9:\"-шы\",10:\"-шы\",20:\"-шы\",30:\"-шы\",40:\"-шы\",50:\"-ші\",60:\"-шы\",70:\"-ші\",80:\"-ші\",90:\"-шы\",100:\"-ші\"},t=a.defineLocale(\"kk\",{months:\"қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан\".split(\"_\"),monthsShort:\"қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел\".split(\"_\"),weekdays:\"жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі\".split(\"_\"),weekdaysShort:\"жек_дүй_сей_сәр_бей_жұм_сен\".split(\"_\"),weekdaysMin:\"жк_дй_сй_ср_бй_жм_сн\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd, D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[Бүгін сағат] LT\",nextDay:\"[Ертең сағат] LT\",nextWeek:\"dddd [сағат] LT\",lastDay:\"[Кеше сағат] LT\",lastWeek:\"[Өткен аптаның] dddd [сағат] LT\",sameElse:\"L\"},relativeTime:{future:\"%s ішінде\",past:\"%s бұрын\",s:\"бірнеше секунд\",m:\"бір минут\",mm:\"%d минут\",h:\"бір сағат\",hh:\"%d сағат\",d:\"бір күн\",dd:\"%d күн\",M:\"бір ай\",MM:\"%d ай\",y:\"бір жыл\",yy:\"%d жыл\"},ordinalParse:/\\d{1,2}-(ші|шы)/,ordinal:function(a){var t=a%10,n=a>=100?100:null;return a+(e[a]||e[t]||e[n])},week:{dow:1,doy:7}});return t}(),e.fullCalendar.datepickerLocale(\"kk\",\"kk\",{closeText:\"Жабу\",prevText:\"<Алдыңғы\",nextText:\"Келесі>\",currentText:\"Бүгін\",monthNames:[\"Қаңтар\",\"Ақпан\",\"Наурыз\",\"Сәуір\",\"Мамыр\",\"Маусым\",\"Шілде\",\"Тамыз\",\"Қыркүйек\",\"Қазан\",\"Қараша\",\"Желтоқсан\"],monthNamesShort:[\"Қаң\",\"Ақп\",\"Нау\",\"Сәу\",\"Мам\",\"Мау\",\"Шіл\",\"Там\",\"Қыр\",\"Қаз\",\"Қар\",\"Жел\"],dayNames:[\"Жексенбі\",\"Дүйсенбі\",\"Сейсенбі\",\"Сәрсенбі\",\"Бейсенбі\",\"Жұма\",\"Сенбі\"],dayNamesShort:[\"жкс\",\"дсн\",\"ссн\",\"срс\",\"бсн\",\"жма\",\"снб\"],dayNamesMin:[\"Жк\",\"Дс\",\"Сс\",\"Ср\",\"Бс\",\"Жм\",\"Сн\"],weekHeader:\"Не\",dateFormat:\"dd.mm.yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),e.fullCalendar.locale(\"kk\",{buttonText:{month:\"Ай\",week:\"Апта\",day:\"Күн\",list:\"Күн тәртібі\"},allDayText:\"Күні бойы\",eventLimitText:function(e){return\"+ тағы \"+e},noEventsMessage:\"Көрсету үшін оқиғалар жоқ\"})}(),function(){!function(){var e=a.defineLocale(\"ko\",{months:\"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월\".split(\"_\"),monthsShort:\"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월\".split(\"_\"),weekdays:\"일요일_월요일_화요일_수요일_목요일_금요일_토요일\".split(\"_\"),weekdaysShort:\"일_월_화_수_목_금_토\".split(\"_\"),weekdaysMin:\"일_월_화_수_목_금_토\".split(\"_\"),longDateFormat:{LT:\"A h시 m분\",LTS:\"A h시 m분 s초\",L:\"YYYY.MM.DD\",LL:\"YYYY년 MMMM D일\",LLL:\"YYYY년 MMMM D일 A h시 m분\",LLLL:\"YYYY년 MMMM D일 dddd A h시 m분\"},calendar:{sameDay:\"오늘 LT\",nextDay:\"내일 LT\",nextWeek:\"dddd LT\",lastDay:\"어제 LT\",lastWeek:\"지난주 dddd LT\",sameElse:\"L\"},relativeTime:{future:\"%s 후\",past:\"%s 전\",s:\"몇 초\",ss:\"%d초\",m:\"일분\",mm:\"%d분\",h:\"한 시간\",hh:\"%d시간\",d:\"하루\",dd:\"%d일\",M:\"한 달\",MM:\"%d달\",y:\"일 년\",yy:\"%d년\"},ordinalParse:/\\d{1,2}일/,ordinal:\"%d일\",meridiemParse:/오전|오후/,isPM:function(e){return\"오후\"===e},meridiem:function(e,a,t){return e<12?\"오전\":\"오후\"}});return e}(),e.fullCalendar.datepickerLocale(\"ko\",\"ko\",{closeText:\"닫기\",prevText:\"이전달\",nextText:\"다음달\",currentText:\"오늘\",monthNames:[\"1월\",\"2월\",\"3월\",\"4월\",\"5월\",\"6월\",\"7월\",\"8월\",\"9월\",\"10월\",\"11월\",\"12월\"],monthNamesShort:[\"1월\",\"2월\",\"3월\",\"4월\",\"5월\",\"6월\",\"7월\",\"8월\",\"9월\",\"10월\",\"11월\",\"12월\"],dayNames:[\"일요일\",\"월요일\",\"화요일\",\"수요일\",\"목요일\",\"금요일\",\"토요일\"],dayNamesShort:[\"일\",\"월\",\"화\",\"수\",\"목\",\"금\",\"토\"],dayNamesMin:[\"일\",\"월\",\"화\",\"수\",\"목\",\"금\",\"토\"],weekHeader:\"주\",dateFormat:\"yy. m. d.\",firstDay:0,isRTL:!1,showMonthAfterYear:!0,yearSuffix:\"년\"}),e.fullCalendar.locale(\"ko\",{buttonText:{month:\"월\",week:\"주\",day:\"일\",list:\"일정목록\"},allDayText:\"종일\",eventLimitText:\"개\",noEventsMessage:\"일정이 표시 없습니다\"})}(),function(){!function(){function e(e,a,t,n){var r={m:[\"eng Minutt\",\"enger Minutt\"],h:[\"eng Stonn\",\"enger Stonn\"],d:[\"een Dag\",\"engem Dag\"],M:[\"ee Mount\",\"engem Mount\"],y:[\"ee Joer\",\"engem Joer\"]};return a?r[t][0]:r[t][1]}function t(e){var a=e.substr(0,e.indexOf(\" \"));return r(a)?\"a \"+e:\"an \"+e}function n(e){var a=e.substr(0,e.indexOf(\" \"));return r(a)?\"viru \"+e:\"virun \"+e}function r(e){if(e=parseInt(e,10),isNaN(e))return!1;if(e<0)return!0;if(e<10)return 4<=e&&e<=7;if(e<100){var a=e%10,t=e/10;return r(0===a?t:a)}if(e<1e4){for(;e>=10;)e/=10;return r(e)}return e/=1e3,r(e)}var s=a.defineLocale(\"lb\",{months:\"Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember\".split(\"_\"),monthsShort:\"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.\".split(\"_\"),monthsParseExact:!0,weekdays:\"Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg\".split(\"_\"),weekdaysShort:\"So._Mé._Dë._Më._Do._Fr._Sa.\".split(\"_\"),weekdaysMin:\"So_Mé_Dë_Më_Do_Fr_Sa\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"H:mm [Auer]\",LTS:\"H:mm:ss [Auer]\",L:\"DD.MM.YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY H:mm [Auer]\",LLLL:\"dddd, D. MMMM YYYY H:mm [Auer]\"},calendar:{sameDay:\"[Haut um] LT\",sameElse:\"L\",nextDay:\"[Muer um] LT\",nextWeek:\"dddd [um] LT\",lastDay:\"[Gëschter um] LT\",lastWeek:function(){switch(this.day()){case 2:case 4:return\"[Leschten] dddd [um] LT\";default:return\"[Leschte] dddd [um] LT\"}}},relativeTime:{future:t,past:n,s:\"e puer Sekonnen\",m:e,mm:\"%d Minutten\",h:e,hh:\"%d Stonnen\",d:e,dd:\"%d Deeg\",M:e,MM:\"%d Méint\",y:e,yy:\"%d Joer\"},ordinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}});return s}(),e.fullCalendar.datepickerLocale(\"lb\",\"lb\",{closeText:\"Fäerdeg\",prevText:\"Zréck\",nextText:\"Weider\",currentText:\"Haut\",monthNames:[\"Januar\",\"Februar\",\"Mäerz\",\"Abrëll\",\"Mee\",\"Juni\",\"Juli\",\"August\",\"September\",\"Oktober\",\"November\",\"Dezember\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mäe\",\"Abr\",\"Mee\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Okt\",\"Nov\",\"Dez\"],dayNames:[\"Sonndeg\",\"Méindeg\",\"Dënschdeg\",\"Mëttwoch\",\"Donneschdeg\",\"Freideg\",\"Samschdeg\"],dayNamesShort:[\"Son\",\"Méi\",\"Dën\",\"Mët\",\"Don\",\"Fre\",\"Sam\"],dayNamesMin:[\"So\",\"Mé\",\"Dë\",\"Më\",\"Do\",\"Fr\",\"Sa\"],weekHeader:\"W\",dateFormat:\"dd.mm.yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),e.fullCalendar.locale(\"lb\",{buttonText:{month:\"Mount\",week:\"Woch\",day:\"Dag\",list:\"Terminiwwersiicht\"},allDayText:\"Ganzen Dag\",eventLimitText:\"méi\",noEventsMessage:\"Nee Evenementer ze affichéieren\"})}(),function(){!function(){function e(e,a,t,n){return a?\"kelios sekundės\":n?\"kelių sekundžių\":\"kelias sekundes\"}function t(e,a,t,n){return a?r(t)[0]:n?r(t)[1]:r(t)[2]}function n(e){return e%10===0||e>10&&e<20}function r(e){return d[e].split(\"_\")}function s(e,a,s,d){var i=e+\" \";return 1===e?i+t(e,a,s[0],d):a?i+(n(e)?r(s)[1]:r(s)[0]):d?i+r(s)[1]:i+(n(e)?r(s)[1]:r(s)[2])}var d={m:\"minutė_minutės_minutę\",mm:\"minutės_minučių_minutes\",h:\"valanda_valandos_valandą\",hh:\"valandos_valandų_valandas\",d:\"diena_dienos_dieną\",dd:\"dienos_dienų_dienas\",M:\"mėnuo_mėnesio_mėnesį\",MM:\"mėnesiai_mėnesių_mėnesius\",y:\"metai_metų_metus\",yy:\"metai_metų_metus\"},i=a.defineLocale(\"lt\",{months:{format:\"sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio\".split(\"_\"),standalone:\"sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis\".split(\"_\"),isFormat:/D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?|MMMM?(\\[[^\\[\\]]*\\]|\\s)+D[oD]?/},monthsShort:\"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd\".split(\"_\"),weekdays:{format:\"sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį\".split(\"_\"),standalone:\"sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis\".split(\"_\"),isFormat:/dddd HH:mm/},weekdaysShort:\"Sek_Pir_Ant_Tre_Ket_Pen_Šeš\".split(\"_\"),weekdaysMin:\"S_P_A_T_K_Pn_Š\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"YYYY-MM-DD\",LL:\"YYYY [m.] MMMM D [d.]\",LLL:\"YYYY [m.] MMMM D [d.], HH:mm [val.]\",LLLL:\"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]\",l:\"YYYY-MM-DD\",ll:\"YYYY [m.] MMMM D [d.]\",lll:\"YYYY [m.] MMMM D [d.], HH:mm [val.]\",llll:\"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]\"},calendar:{sameDay:\"[Šiandien] LT\",nextDay:\"[Rytoj] LT\",nextWeek:\"dddd LT\",lastDay:\"[Vakar] LT\",lastWeek:\"[Praėjusį] dddd LT\",sameElse:\"L\"},relativeTime:{future:\"po %s\",past:\"prieš %s\",s:e,m:t,mm:s,h:t,hh:s,d:t,dd:s,M:t,MM:s,y:t,yy:s},ordinalParse:/\\d{1,2}-oji/,ordinal:function(e){return e+\"-oji\"},week:{dow:1,doy:4}});return i}(),e.fullCalendar.datepickerLocale(\"lt\",\"lt\",{closeText:\"Uždaryti\",prevText:\"<Atgal\",nextText:\"Pirmyn>\",currentText:\"Šiandien\",monthNames:[\"Sausis\",\"Vasaris\",\"Kovas\",\"Balandis\",\"Gegužė\",\"Birželis\",\"Liepa\",\"Rugpjūtis\",\"Rugsėjis\",\"Spalis\",\"Lapkritis\",\"Gruodis\"],monthNamesShort:[\"Sau\",\"Vas\",\"Kov\",\"Bal\",\"Geg\",\"Bir\",\"Lie\",\"Rugp\",\"Rugs\",\"Spa\",\"Lap\",\"Gru\"],dayNames:[\"sekmadienis\",\"pirmadienis\",\"antradienis\",\"trečiadienis\",\"ketvirtadienis\",\"penktadienis\",\"šeštadienis\"],dayNamesShort:[\"sek\",\"pir\",\"ant\",\"tre\",\"ket\",\"pen\",\"šeš\"],dayNamesMin:[\"Se\",\"Pr\",\"An\",\"Tr\",\"Ke\",\"Pe\",\"Še\"],weekHeader:\"SAV\",dateFormat:\"yy-mm-dd\",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:\"\"}),e.fullCalendar.locale(\"lt\",{buttonText:{month:\"Mėnuo\",week:\"Savaitė\",day:\"Diena\",list:\"Darbotvarkė\"},allDayText:\"Visą dieną\",eventLimitText:\"daugiau\",noEventsMessage:\"Nėra įvykių rodyti\"})}(),function(){!function(){function e(e,a,t){return t?a%10===1&&a%100!==11?e[2]:e[3]:a%10===1&&a%100!==11?e[0]:e[1]}function t(a,t,n){return a+\" \"+e(s[n],a,t)}function n(a,t,n){return e(s[n],a,t)}function r(e,a){return a?\"dažas sekundes\":\"dažām sekundēm\"}var s={m:\"minūtes_minūtēm_minūte_minūtes\".split(\"_\"),mm:\"minūtes_minūtēm_minūte_minūtes\".split(\"_\"),h:\"stundas_stundām_stunda_stundas\".split(\"_\"),hh:\"stundas_stundām_stunda_stundas\".split(\"_\"),d:\"dienas_dienām_diena_dienas\".split(\"_\"),dd:\"dienas_dienām_diena_dienas\".split(\"_\"),M:\"mēneša_mēnešiem_mēnesis_mēneši\".split(\"_\"),MM:\"mēneša_mēnešiem_mēnesis_mēneši\".split(\"_\"),y:\"gada_gadiem_gads_gadi\".split(\"_\"),yy:\"gada_gadiem_gads_gadi\".split(\"_\")},d=a.defineLocale(\"lv\",{months:\"janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris\".split(\"_\"),monthsShort:\"jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec\".split(\"_\"),weekdays:\"svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena\".split(\"_\"),weekdaysShort:\"Sv_P_O_T_C_Pk_S\".split(\"_\"),weekdaysMin:\"Sv_P_O_T_C_Pk_S\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD.MM.YYYY.\",LL:\"YYYY. [gada] D. MMMM\",LLL:\"YYYY. [gada] D. MMMM, HH:mm\",LLLL:\"YYYY. [gada] D. MMMM, dddd, HH:mm\"},calendar:{sameDay:\"[Šodien pulksten] LT\",nextDay:\"[Rīt pulksten] LT\",nextWeek:\"dddd [pulksten] LT\",lastDay:\"[Vakar pulksten] LT\",lastWeek:\"[Pagājušā] dddd [pulksten] LT\",sameElse:\"L\"},relativeTime:{future:\"pēc %s\",past:\"pirms %s\",s:r,m:n,mm:t,h:n,hh:t,d:n,dd:t,M:n,MM:t,y:n,yy:t},ordinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}});return d}(),e.fullCalendar.datepickerLocale(\"lv\",\"lv\",{closeText:\"Aizvērt\",prevText:\"Iepr.\",nextText:\"Nāk.\",currentText:\"Šodien\",monthNames:[\"Janvāris\",\"Februāris\",\"Marts\",\"Aprīlis\",\"Maijs\",\"Jūnijs\",\"Jūlijs\",\"Augusts\",\"Septembris\",\"Oktobris\",\"Novembris\",\"Decembris\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"Mai\",\"Jūn\",\"Jūl\",\"Aug\",\"Sep\",\"Okt\",\"Nov\",\"Dec\"],dayNames:[\"svētdiena\",\"pirmdiena\",\"otrdiena\",\"trešdiena\",\"ceturtdiena\",\"piektdiena\",\"sestdiena\"],dayNamesShort:[\"svt\",\"prm\",\"otr\",\"tre\",\"ctr\",\"pkt\",\"sst\"],dayNamesMin:[\"Sv\",\"Pr\",\"Ot\",\"Tr\",\"Ct\",\"Pk\",\"Ss\"],weekHeader:\"Ned.\",dateFormat:\"dd.mm.yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),e.fullCalendar.locale(\"lv\",{buttonText:{month:\"Mēnesis\",week:\"Nedēļa\",day:\"Diena\",list:\"Dienas kārtība\"},allDayText:\"Visu dienu\",eventLimitText:function(e){return\"+vēl \"+e},noEventsMessage:\"Nav notikumu, lai parādītu\"})}(),function(){!function(){var e=a.defineLocale(\"mk\",{months:\"јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември\".split(\"_\"),monthsShort:\"јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек\".split(\"_\"),weekdays:\"недела_понеделник_вторник_среда_четврток_петок_сабота\".split(\"_\"),weekdaysShort:\"нед_пон_вто_сре_чет_пет_саб\".split(\"_\"),weekdaysMin:\"нe_пo_вт_ср_че_пе_сa\".split(\"_\"),longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"D.MM.YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY H:mm\",LLLL:\"dddd, D MMMM YYYY H:mm\"},calendar:{sameDay:\"[Денес во] LT\",nextDay:\"[Утре во] LT\",nextWeek:\"[Во] dddd [во] LT\",lastDay:\"[Вчера во] LT\",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return\"[Изминатата] dddd [во] LT\";case 1:case 2:case 4:case 5:return\"[Изминатиот] dddd [во] LT\"}},sameElse:\"L\"},relativeTime:{future:\"после %s\",past:\"пред %s\",s:\"неколку секунди\",m:\"минута\",mm:\"%d минути\",h:\"час\",hh:\"%d часа\",d:\"ден\",dd:\"%d дена\",M:\"месец\",MM:\"%d месеци\",y:\"година\",yy:\"%d години\"},ordinalParse:/\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(e){var a=e%10,t=e%100;return 0===e?e+\"-ев\":0===t?e+\"-ен\":t>10&&t<20?e+\"-ти\":1===a?e+\"-ви\":2===a?e+\"-ри\":7===a||8===a?e+\"-ми\":e+\"-ти\"},week:{dow:1,doy:7}});return e}(),e.fullCalendar.datepickerLocale(\"mk\",\"mk\",{closeText:\"Затвори\",prevText:\"<\",nextText:\">\",currentText:\"Денес\",monthNames:[\"Јануари\",\"Февруари\",\"Март\",\"Април\",\"Мај\",\"Јуни\",\"Јули\",\"Август\",\"Септември\",\"Октомври\",\"Ноември\",\"Декември\"],monthNamesShort:[\"Јан\",\"Фев\",\"Мар\",\"Апр\",\"Мај\",\"Јун\",\"Јул\",\"Авг\",\"Сеп\",\"Окт\",\"Ное\",\"Дек\"],dayNames:[\"Недела\",\"Понеделник\",\"Вторник\",\"Среда\",\"Четврток\",\"Петок\",\"Сабота\"],dayNamesShort:[\"Нед\",\"Пон\",\"Вто\",\"Сре\",\"Чет\",\"Пет\",\"Саб\"],dayNamesMin:[\"Не\",\"По\",\"Вт\",\"Ср\",\"Че\",\"Пе\",\"Са\"],weekHeader:\"Сед\",dateFormat:\"dd.mm.yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),e.fullCalendar.locale(\"mk\",{buttonText:{month:\"Месец\",week:\"Недела\",day:\"Ден\",list:\"График\"},allDayText:\"Цел ден\",eventLimitText:function(e){return\"+повеќе \"+e},noEventsMessage:\"Нема настани за прикажување\"})}(),function(){!function(){var e=a.defineLocale(\"ms\",{months:\"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember\".split(\"_\"),monthsShort:\"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis\".split(\"_\"),weekdays:\"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu\".split(\"_\"),weekdaysShort:\"Ahd_Isn_Sel_Rab_Kha_Jum_Sab\".split(\"_\"),weekdaysMin:\"Ah_Is_Sl_Rb_Km_Jm_Sb\".split(\"_\"),longDateFormat:{LT:\"HH.mm\",LTS:\"HH.mm.ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY [pukul] HH.mm\",LLLL:\"dddd, D MMMM YYYY [pukul] HH.mm\"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,a){return 12===e&&(e=0),\"pagi\"===a?e:\"tengahari\"===a?e>=11?e:e+12:\"petang\"===a||\"malam\"===a?e+12:void 0},meridiem:function(e,a,t){return e<11?\"pagi\":e<15?\"tengahari\":e<19?\"petang\":\"malam\"},calendar:{sameDay:\"[Hari ini pukul] LT\",nextDay:\"[Esok pukul] LT\",nextWeek:\"dddd [pukul] LT\",lastDay:\"[Kelmarin pukul] LT\",lastWeek:\"dddd [lepas pukul] LT\",sameElse:\"L\"},relativeTime:{future:\"dalam %s\",past:\"%s yang lepas\",s:\"beberapa saat\",m:\"seminit\",mm:\"%d minit\",h:\"sejam\",hh:\"%d jam\",d:\"sehari\",dd:\"%d hari\",M:\"sebulan\",MM:\"%d bulan\",y:\"setahun\",yy:\"%d tahun\"},week:{dow:1,doy:7}});return e}(),e.fullCalendar.datepickerLocale(\"ms\",\"ms\",{closeText:\"Tutup\",prevText:\"<Sebelum\",nextText:\"Selepas>\",currentText:\"hari ini\",monthNames:[\"Januari\",\"Februari\",\"Mac\",\"April\",\"Mei\",\"Jun\",\"Julai\",\"Ogos\",\"September\",\"Oktober\",\"November\",\"Disember\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mac\",\"Apr\",\"Mei\",\"Jun\",\"Jul\",\"Ogo\",\"Sep\",\"Okt\",\"Nov\",\"Dis\"],dayNames:[\"Ahad\",\"Isnin\",\"Selasa\",\"Rabu\",\"Khamis\",\"Jumaat\",\"Sabtu\"],dayNamesShort:[\"Aha\",\"Isn\",\"Sel\",\"Rab\",\"kha\",\"Jum\",\"Sab\"],dayNamesMin:[\"Ah\",\"Is\",\"Se\",\"Ra\",\"Kh\",\"Ju\",\"Sa\"],weekHeader:\"Mg\",dateFormat:\"dd/mm/yy\",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),e.fullCalendar.locale(\"ms\",{buttonText:{month:\"Bulan\",week:\"Minggu\",day:\"Hari\",list:\"Agenda\"},allDayText:\"Sepanjang hari\",eventLimitText:function(e){return\"masih ada \"+e+\" acara\"},noEventsMessage:\"Tiada peristiwa untuk dipaparkan\"})}(),function(){!function(){var e=a.defineLocale(\"ms-my\",{months:\"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember\".split(\"_\"),monthsShort:\"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis\".split(\"_\"),weekdays:\"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu\".split(\"_\"),weekdaysShort:\"Ahd_Isn_Sel_Rab_Kha_Jum_Sab\".split(\"_\"),weekdaysMin:\"Ah_Is_Sl_Rb_Km_Jm_Sb\".split(\"_\"),longDateFormat:{LT:\"HH.mm\",LTS:\"HH.mm.ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY [pukul] HH.mm\",LLLL:\"dddd, D MMMM YYYY [pukul] HH.mm\"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,a){return 12===e&&(e=0),\"pagi\"===a?e:\"tengahari\"===a?e>=11?e:e+12:\"petang\"===a||\"malam\"===a?e+12:void 0},meridiem:function(e,a,t){return e<11?\"pagi\":e<15?\"tengahari\":e<19?\"petang\":\"malam\"},calendar:{sameDay:\"[Hari ini pukul] LT\",nextDay:\"[Esok pukul] LT\",nextWeek:\"dddd [pukul] LT\",lastDay:\"[Kelmarin pukul] LT\",lastWeek:\"dddd [lepas pukul] LT\",sameElse:\"L\"},relativeTime:{future:\"dalam %s\",past:\"%s yang lepas\",s:\"beberapa saat\",m:\"seminit\",mm:\"%d minit\",h:\"sejam\",hh:\"%d jam\",d:\"sehari\",dd:\"%d hari\",M:\"sebulan\",MM:\"%d bulan\",y:\"setahun\",yy:\"%d tahun\"},week:{dow:1,doy:7}});return e}(),e.fullCalendar.datepickerLocale(\"ms-my\",\"ms\",{closeText:\"Tutup\",prevText:\"<Sebelum\",nextText:\"Selepas>\",currentText:\"hari ini\",monthNames:[\"Januari\",\"Februari\",\"Mac\",\"April\",\"Mei\",\"Jun\",\"Julai\",\"Ogos\",\"September\",\"Oktober\",\"November\",\"Disember\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mac\",\"Apr\",\"Mei\",\"Jun\",\"Jul\",\"Ogo\",\"Sep\",\"Okt\",\"Nov\",\"Dis\"],dayNames:[\"Ahad\",\"Isnin\",\"Selasa\",\"Rabu\",\"Khamis\",\"Jumaat\",\"Sabtu\"],dayNamesShort:[\"Aha\",\"Isn\",\"Sel\",\"Rab\",\"kha\",\"Jum\",\"Sab\"],dayNamesMin:[\"Ah\",\"Is\",\"Se\",\"Ra\",\"Kh\",\"Ju\",\"Sa\"],weekHeader:\"Mg\",dateFormat:\"dd/mm/yy\",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),e.fullCalendar.locale(\"ms-my\",{buttonText:{month:\"Bulan\",week:\"Minggu\",day:\"Hari\",list:\"Agenda\"},allDayText:\"Sepanjang hari\",eventLimitText:function(e){return\"masih ada \"+e+\" acara\"},noEventsMessage:\"Tiada peristiwa untuk dipaparkan\"})}(),function(){!function(){var e=a.defineLocale(\"nb\",{months:\"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember\".split(\"_\"),monthsShort:\"jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.\".split(\"_\"),monthsParseExact:!0,weekdays:\"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag\".split(\"_\"),weekdaysShort:\"sø._ma._ti._on._to._fr._lø.\".split(\"_\"),weekdaysMin:\"sø_ma_ti_on_to_fr_lø\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY [kl.] HH:mm\",LLLL:\"dddd D. MMMM YYYY [kl.] HH:mm\"},calendar:{sameDay:\"[i dag kl.] LT\",nextDay:\"[i morgen kl.] LT\",nextWeek:\"dddd [kl.] LT\",lastDay:\"[i går kl.] LT\",lastWeek:\"[forrige] dddd [kl.] LT\",sameElse:\"L\"},relativeTime:{future:\"om %s\",past:\"%s siden\",s:\"noen sekunder\",m:\"ett minutt\",mm:\"%d minutter\",h:\"en time\",hh:\"%d timer\",d:\"en dag\",dd:\"%d dager\",M:\"en måned\",MM:\"%d måneder\",y:\"ett år\",yy:\"%d år\"},ordinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}});return e}(),e.fullCalendar.datepickerLocale(\"nb\",\"nb\",{closeText:\"Lukk\",prevText:\"«Forrige\",nextText:\"Neste»\",currentText:\"I dag\",monthNames:[\"januar\",\"februar\",\"mars\",\"april\",\"mai\",\"juni\",\"juli\",\"august\",\"september\",\"oktober\",\"november\",\"desember\"],monthNamesShort:[\"jan\",\"feb\",\"mar\",\"apr\",\"mai\",\"jun\",\"jul\",\"aug\",\"sep\",\"okt\",\"nov\",\"des\"],dayNamesShort:[\"søn\",\"man\",\"tir\",\"ons\",\"tor\",\"fre\",\"lør\"],dayNames:[\"søndag\",\"mandag\",\"tirsdag\",\"onsdag\",\"torsdag\",\"fredag\",\"lørdag\"],dayNamesMin:[\"sø\",\"ma\",\"ti\",\"on\",\"to\",\"fr\",\"lø\"],weekHeader:\"Uke\",dateFormat:\"dd.mm.yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),e.fullCalendar.locale(\"nb\",{buttonText:{month:\"Måned\",week:\"Uke\",day:\"Dag\",list:\"Agenda\"},allDayText:\"Hele dagen\",eventLimitText:\"til\",noEventsMessage:\"Ingen hendelser å vise\"})}(),function(){!function(){var e=\"jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.\".split(\"_\"),t=\"jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec\".split(\"_\"),n=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],r=/^(januari|februari|maart|april|mei|april|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,s=a.defineLocale(\"nl\",{months:\"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december\".split(\"_\"),monthsShort:function(a,n){return/-MMM-/.test(n)?t[a.month()]:e[a.month()]},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(januari|februari|maart|mei|ju[nl]i|april|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,monthsParse:n,longMonthsParse:n,shortMonthsParse:n,weekdays:\"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag\".split(\"_\"),weekdaysShort:\"zo._ma._di._wo._do._vr._za.\".split(\"_\"),weekdaysMin:\"Zo_Ma_Di_Wo_Do_Vr_Za\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD-MM-YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[vandaag om] LT\",nextDay:\"[morgen om] LT\",nextWeek:\"dddd [om] LT\",lastDay:\"[gisteren om] LT\",\nlastWeek:\"[afgelopen] dddd [om] LT\",sameElse:\"L\"},relativeTime:{future:\"over %s\",past:\"%s geleden\",s:\"een paar seconden\",m:\"één minuut\",mm:\"%d minuten\",h:\"één uur\",hh:\"%d uur\",d:\"één dag\",dd:\"%d dagen\",M:\"één maand\",MM:\"%d maanden\",y:\"één jaar\",yy:\"%d jaar\"},ordinalParse:/\\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?\"ste\":\"de\")},week:{dow:1,doy:4}});return s}(),e.fullCalendar.datepickerLocale(\"nl\",\"nl\",{closeText:\"Sluiten\",prevText:\"←\",nextText:\"→\",currentText:\"Vandaag\",monthNames:[\"januari\",\"februari\",\"maart\",\"april\",\"mei\",\"juni\",\"juli\",\"augustus\",\"september\",\"oktober\",\"november\",\"december\"],monthNamesShort:[\"jan\",\"feb\",\"mrt\",\"apr\",\"mei\",\"jun\",\"jul\",\"aug\",\"sep\",\"okt\",\"nov\",\"dec\"],dayNames:[\"zondag\",\"maandag\",\"dinsdag\",\"woensdag\",\"donderdag\",\"vrijdag\",\"zaterdag\"],dayNamesShort:[\"zon\",\"maa\",\"din\",\"woe\",\"don\",\"vri\",\"zat\"],dayNamesMin:[\"zo\",\"ma\",\"di\",\"wo\",\"do\",\"vr\",\"za\"],weekHeader:\"Wk\",dateFormat:\"dd-mm-yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),e.fullCalendar.locale(\"nl\",{buttonText:{month:\"Maand\",week:\"Week\",day:\"Dag\",list:\"Agenda\"},allDayText:\"Hele dag\",eventLimitText:\"extra\",noEventsMessage:\"Geen evenementen om te laten zien\"})}(),function(){!function(){var e=\"jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.\".split(\"_\"),t=\"jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec\".split(\"_\"),n=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],r=/^(januari|februari|maart|april|mei|april|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,s=a.defineLocale(\"nl-be\",{months:\"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december\".split(\"_\"),monthsShort:function(a,n){return/-MMM-/.test(n)?t[a.month()]:e[a.month()]},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(januari|februari|maart|mei|ju[nl]i|april|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,monthsParse:n,longMonthsParse:n,shortMonthsParse:n,weekdays:\"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag\".split(\"_\"),weekdaysShort:\"zo._ma._di._wo._do._vr._za.\".split(\"_\"),weekdaysMin:\"Zo_Ma_Di_Wo_Do_Vr_Za\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[vandaag om] LT\",nextDay:\"[morgen om] LT\",nextWeek:\"dddd [om] LT\",lastDay:\"[gisteren om] LT\",lastWeek:\"[afgelopen] dddd [om] LT\",sameElse:\"L\"},relativeTime:{future:\"over %s\",past:\"%s geleden\",s:\"een paar seconden\",m:\"één minuut\",mm:\"%d minuten\",h:\"één uur\",hh:\"%d uur\",d:\"één dag\",dd:\"%d dagen\",M:\"één maand\",MM:\"%d maanden\",y:\"één jaar\",yy:\"%d jaar\"},ordinalParse:/\\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?\"ste\":\"de\")},week:{dow:1,doy:4}});return s}(),e.fullCalendar.datepickerLocale(\"nl-be\",\"nl-BE\",{closeText:\"Sluiten\",prevText:\"←\",nextText:\"→\",currentText:\"Vandaag\",monthNames:[\"januari\",\"februari\",\"maart\",\"april\",\"mei\",\"juni\",\"juli\",\"augustus\",\"september\",\"oktober\",\"november\",\"december\"],monthNamesShort:[\"jan\",\"feb\",\"mrt\",\"apr\",\"mei\",\"jun\",\"jul\",\"aug\",\"sep\",\"okt\",\"nov\",\"dec\"],dayNames:[\"zondag\",\"maandag\",\"dinsdag\",\"woensdag\",\"donderdag\",\"vrijdag\",\"zaterdag\"],dayNamesShort:[\"zon\",\"maa\",\"din\",\"woe\",\"don\",\"vri\",\"zat\"],dayNamesMin:[\"zo\",\"ma\",\"di\",\"wo\",\"do\",\"vr\",\"za\"],weekHeader:\"Wk\",dateFormat:\"dd/mm/yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),e.fullCalendar.locale(\"nl-be\",{buttonText:{month:\"Maand\",week:\"Week\",day:\"Dag\",list:\"Agenda\"},allDayText:\"Hele dag\",eventLimitText:\"extra\",noEventsMessage:\"Geen evenementen om te laten zien\"})}(),function(){!function(){var e=a.defineLocale(\"nn\",{months:\"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember\".split(\"_\"),monthsShort:\"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des\".split(\"_\"),weekdays:\"sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag\".split(\"_\"),weekdaysShort:\"sun_mån_tys_ons_tor_fre_lau\".split(\"_\"),weekdaysMin:\"su_må_ty_on_to_fr_lø\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY [kl.] H:mm\",LLLL:\"dddd D. MMMM YYYY [kl.] HH:mm\"},calendar:{sameDay:\"[I dag klokka] LT\",nextDay:\"[I morgon klokka] LT\",nextWeek:\"dddd [klokka] LT\",lastDay:\"[I går klokka] LT\",lastWeek:\"[Føregåande] dddd [klokka] LT\",sameElse:\"L\"},relativeTime:{future:\"om %s\",past:\"%s sidan\",s:\"nokre sekund\",m:\"eit minutt\",mm:\"%d minutt\",h:\"ein time\",hh:\"%d timar\",d:\"ein dag\",dd:\"%d dagar\",M:\"ein månad\",MM:\"%d månader\",y:\"eit år\",yy:\"%d år\"},ordinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}});return e}(),e.fullCalendar.datepickerLocale(\"nn\",\"nn\",{closeText:\"Lukk\",prevText:\"«Førre\",nextText:\"Neste»\",currentText:\"I dag\",monthNames:[\"januar\",\"februar\",\"mars\",\"april\",\"mai\",\"juni\",\"juli\",\"august\",\"september\",\"oktober\",\"november\",\"desember\"],monthNamesShort:[\"jan\",\"feb\",\"mar\",\"apr\",\"mai\",\"jun\",\"jul\",\"aug\",\"sep\",\"okt\",\"nov\",\"des\"],dayNamesShort:[\"sun\",\"mån\",\"tys\",\"ons\",\"tor\",\"fre\",\"lau\"],dayNames:[\"sundag\",\"måndag\",\"tysdag\",\"onsdag\",\"torsdag\",\"fredag\",\"laurdag\"],dayNamesMin:[\"su\",\"må\",\"ty\",\"on\",\"to\",\"fr\",\"la\"],weekHeader:\"Veke\",dateFormat:\"dd.mm.yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),e.fullCalendar.locale(\"nn\",{buttonText:{month:\"Månad\",week:\"Veke\",day:\"Dag\",list:\"Agenda\"},allDayText:\"Heile dagen\",eventLimitText:\"til\",noEventsMessage:\"Ingen hendelser å vise\"})}(),function(){!function(){function e(e){return e%10<5&&e%10>1&&~~(e/10)%10!==1}function t(a,t,n){var r=a+\" \";switch(n){case\"m\":return t?\"minuta\":\"minutę\";case\"mm\":return r+(e(a)?\"minuty\":\"minut\");case\"h\":return t?\"godzina\":\"godzinę\";case\"hh\":return r+(e(a)?\"godziny\":\"godzin\");case\"MM\":return r+(e(a)?\"miesiące\":\"miesięcy\");case\"yy\":return r+(e(a)?\"lata\":\"lat\")}}var n=\"styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień\".split(\"_\"),r=\"stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia\".split(\"_\"),s=a.defineLocale(\"pl\",{months:function(e,a){return\"\"===a?\"(\"+r[e.month()]+\"|\"+n[e.month()]+\")\":/D MMMM/.test(a)?r[e.month()]:n[e.month()]},monthsShort:\"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru\".split(\"_\"),weekdays:\"niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota\".split(\"_\"),weekdaysShort:\"ndz_pon_wt_śr_czw_pt_sob\".split(\"_\"),weekdaysMin:\"Nd_Pn_Wt_Śr_Cz_Pt_So\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd, D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[Dziś o] LT\",nextDay:\"[Jutro o] LT\",nextWeek:\"[W] dddd [o] LT\",lastDay:\"[Wczoraj o] LT\",lastWeek:function(){switch(this.day()){case 0:return\"[W zeszłą niedzielę o] LT\";case 3:return\"[W zeszłą środę o] LT\";case 6:return\"[W zeszłą sobotę o] LT\";default:return\"[W zeszły] dddd [o] LT\"}},sameElse:\"L\"},relativeTime:{future:\"za %s\",past:\"%s temu\",s:\"kilka sekund\",m:t,mm:t,h:t,hh:t,d:\"1 dzień\",dd:\"%d dni\",M:\"miesiąc\",MM:t,y:\"rok\",yy:t},ordinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}});return s}(),e.fullCalendar.datepickerLocale(\"pl\",\"pl\",{closeText:\"Zamknij\",prevText:\"<Poprzedni\",nextText:\"Następny>\",currentText:\"Dziś\",monthNames:[\"Styczeń\",\"Luty\",\"Marzec\",\"Kwiecień\",\"Maj\",\"Czerwiec\",\"Lipiec\",\"Sierpień\",\"Wrzesień\",\"Październik\",\"Listopad\",\"Grudzień\"],monthNamesShort:[\"Sty\",\"Lu\",\"Mar\",\"Kw\",\"Maj\",\"Cze\",\"Lip\",\"Sie\",\"Wrz\",\"Pa\",\"Lis\",\"Gru\"],dayNames:[\"Niedziela\",\"Poniedziałek\",\"Wtorek\",\"Środa\",\"Czwartek\",\"Piątek\",\"Sobota\"],dayNamesShort:[\"Nie\",\"Pn\",\"Wt\",\"Śr\",\"Czw\",\"Pt\",\"So\"],dayNamesMin:[\"N\",\"Pn\",\"Wt\",\"Śr\",\"Cz\",\"Pt\",\"So\"],weekHeader:\"Tydz\",dateFormat:\"dd.mm.yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),e.fullCalendar.locale(\"pl\",{buttonText:{month:\"Miesiąc\",week:\"Tydzień\",day:\"Dzień\",list:\"Plan dnia\"},allDayText:\"Cały dzień\",eventLimitText:\"więcej\",noEventsMessage:\"Brak wydarzeń do wyświetlenia\"})}(),function(){!function(){var e=a.defineLocale(\"pt\",{months:\"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro\".split(\"_\"),monthsShort:\"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez\".split(\"_\"),weekdays:\"Domingo_Segunda-Feira_Terça-Feira_Quarta-Feira_Quinta-Feira_Sexta-Feira_Sábado\".split(\"_\"),weekdaysShort:\"Dom_Seg_Ter_Qua_Qui_Sex_Sáb\".split(\"_\"),weekdaysMin:\"Dom_2ª_3ª_4ª_5ª_6ª_Sáb\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D [de] MMMM [de] YYYY\",LLL:\"D [de] MMMM [de] YYYY HH:mm\",LLLL:\"dddd, D [de] MMMM [de] YYYY HH:mm\"},calendar:{sameDay:\"[Hoje às] LT\",nextDay:\"[Amanhã às] LT\",nextWeek:\"dddd [às] LT\",lastDay:\"[Ontem às] LT\",lastWeek:function(){return 0===this.day()||6===this.day()?\"[Último] dddd [às] LT\":\"[Última] dddd [às] LT\"},sameElse:\"L\"},relativeTime:{future:\"em %s\",past:\"há %s\",s:\"segundos\",m:\"um minuto\",mm:\"%d minutos\",h:\"uma hora\",hh:\"%d horas\",d:\"um dia\",dd:\"%d dias\",M:\"um mês\",MM:\"%d meses\",y:\"um ano\",yy:\"%d anos\"},ordinalParse:/\\d{1,2}º/,ordinal:\"%dº\",week:{dow:1,doy:4}});return e}(),e.fullCalendar.datepickerLocale(\"pt\",\"pt\",{closeText:\"Fechar\",prevText:\"Anterior\",nextText:\"Seguinte\",currentText:\"Hoje\",monthNames:[\"Janeiro\",\"Fevereiro\",\"Março\",\"Abril\",\"Maio\",\"Junho\",\"Julho\",\"Agosto\",\"Setembro\",\"Outubro\",\"Novembro\",\"Dezembro\"],monthNamesShort:[\"Jan\",\"Fev\",\"Mar\",\"Abr\",\"Mai\",\"Jun\",\"Jul\",\"Ago\",\"Set\",\"Out\",\"Nov\",\"Dez\"],dayNames:[\"Domingo\",\"Segunda-feira\",\"Terça-feira\",\"Quarta-feira\",\"Quinta-feira\",\"Sexta-feira\",\"Sábado\"],dayNamesShort:[\"Dom\",\"Seg\",\"Ter\",\"Qua\",\"Qui\",\"Sex\",\"Sáb\"],dayNamesMin:[\"Dom\",\"Seg\",\"Ter\",\"Qua\",\"Qui\",\"Sex\",\"Sáb\"],weekHeader:\"Sem\",dateFormat:\"dd/mm/yy\",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),e.fullCalendar.locale(\"pt\",{buttonText:{month:\"Mês\",week:\"Semana\",day:\"Dia\",list:\"Agenda\"},allDayText:\"Todo o dia\",eventLimitText:\"mais\",noEventsMessage:\"Não há eventos para mostrar\"})}(),function(){!function(){var e=a.defineLocale(\"pt-br\",{months:\"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro\".split(\"_\"),monthsShort:\"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez\".split(\"_\"),weekdays:\"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado\".split(\"_\"),weekdaysShort:\"Dom_Seg_Ter_Qua_Qui_Sex_Sáb\".split(\"_\"),weekdaysMin:\"Dom_2ª_3ª_4ª_5ª_6ª_Sáb\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D [de] MMMM [de] YYYY\",LLL:\"D [de] MMMM [de] YYYY [às] HH:mm\",LLLL:\"dddd, D [de] MMMM [de] YYYY [às] HH:mm\"},calendar:{sameDay:\"[Hoje às] LT\",nextDay:\"[Amanhã às] LT\",nextWeek:\"dddd [às] LT\",lastDay:\"[Ontem às] LT\",lastWeek:function(){return 0===this.day()||6===this.day()?\"[Último] dddd [às] LT\":\"[Última] dddd [às] LT\"},sameElse:\"L\"},relativeTime:{future:\"em %s\",past:\"%s atrás\",s:\"poucos segundos\",m:\"um minuto\",mm:\"%d minutos\",h:\"uma hora\",hh:\"%d horas\",d:\"um dia\",dd:\"%d dias\",M:\"um mês\",MM:\"%d meses\",y:\"um ano\",yy:\"%d anos\"},ordinalParse:/\\d{1,2}º/,ordinal:\"%dº\"});return e}(),e.fullCalendar.datepickerLocale(\"pt-br\",\"pt-BR\",{closeText:\"Fechar\",prevText:\"<Anterior\",nextText:\"Próximo>\",currentText:\"Hoje\",monthNames:[\"Janeiro\",\"Fevereiro\",\"Março\",\"Abril\",\"Maio\",\"Junho\",\"Julho\",\"Agosto\",\"Setembro\",\"Outubro\",\"Novembro\",\"Dezembro\"],monthNamesShort:[\"Jan\",\"Fev\",\"Mar\",\"Abr\",\"Mai\",\"Jun\",\"Jul\",\"Ago\",\"Set\",\"Out\",\"Nov\",\"Dez\"],dayNames:[\"Domingo\",\"Segunda-feira\",\"Terça-feira\",\"Quarta-feira\",\"Quinta-feira\",\"Sexta-feira\",\"Sábado\"],dayNamesShort:[\"Dom\",\"Seg\",\"Ter\",\"Qua\",\"Qui\",\"Sex\",\"Sáb\"],dayNamesMin:[\"Dom\",\"Seg\",\"Ter\",\"Qua\",\"Qui\",\"Sex\",\"Sáb\"],weekHeader:\"Sm\",dateFormat:\"dd/mm/yy\",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),e.fullCalendar.locale(\"pt-br\",{buttonText:{month:\"Mês\",week:\"Semana\",day:\"Dia\",list:\"Compromissos\"},allDayText:\"dia inteiro\",eventLimitText:function(e){return\"mais +\"+e},noEventsMessage:\"Não há eventos para mostrar\"})}(),function(){!function(){function e(e,a,t){var n={mm:\"minute\",hh:\"ore\",dd:\"zile\",MM:\"luni\",yy:\"ani\"},r=\" \";return(e%100>=20||e>=100&&e%100===0)&&(r=\" de \"),e+r+n[t]}var t=a.defineLocale(\"ro\",{months:\"ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie\".split(\"_\"),monthsShort:\"ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.\".split(\"_\"),monthsParseExact:!0,weekdays:\"duminică_luni_marți_miercuri_joi_vineri_sâmbătă\".split(\"_\"),weekdaysShort:\"Dum_Lun_Mar_Mie_Joi_Vin_Sâm\".split(\"_\"),weekdaysMin:\"Du_Lu_Ma_Mi_Jo_Vi_Sâ\".split(\"_\"),longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY H:mm\",LLLL:\"dddd, D MMMM YYYY H:mm\"},calendar:{sameDay:\"[azi la] LT\",nextDay:\"[mâine la] LT\",nextWeek:\"dddd [la] LT\",lastDay:\"[ieri la] LT\",lastWeek:\"[fosta] dddd [la] LT\",sameElse:\"L\"},relativeTime:{future:\"peste %s\",past:\"%s în urmă\",s:\"câteva secunde\",m:\"un minut\",mm:e,h:\"o oră\",hh:e,d:\"o zi\",dd:e,M:\"o lună\",MM:e,y:\"un an\",yy:e},week:{dow:1,doy:7}});return t}(),e.fullCalendar.datepickerLocale(\"ro\",\"ro\",{closeText:\"Închide\",prevText:\"« Luna precedentă\",nextText:\"Luna următoare »\",currentText:\"Azi\",monthNames:[\"Ianuarie\",\"Februarie\",\"Martie\",\"Aprilie\",\"Mai\",\"Iunie\",\"Iulie\",\"August\",\"Septembrie\",\"Octombrie\",\"Noiembrie\",\"Decembrie\"],monthNamesShort:[\"Ian\",\"Feb\",\"Mar\",\"Apr\",\"Mai\",\"Iun\",\"Iul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],dayNames:[\"Duminică\",\"Luni\",\"Marţi\",\"Miercuri\",\"Joi\",\"Vineri\",\"Sâmbătă\"],dayNamesShort:[\"Dum\",\"Lun\",\"Mar\",\"Mie\",\"Joi\",\"Vin\",\"Sâm\"],dayNamesMin:[\"Du\",\"Lu\",\"Ma\",\"Mi\",\"Jo\",\"Vi\",\"Sâ\"],weekHeader:\"Săpt\",dateFormat:\"dd.mm.yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),e.fullCalendar.locale(\"ro\",{buttonText:{prev:\"precedentă\",next:\"următoare\",month:\"Lună\",week:\"Săptămână\",day:\"Zi\",list:\"Agendă\"},allDayText:\"Toată ziua\",eventLimitText:function(e){return\"+alte \"+e},noEventsMessage:\"Nu există evenimente de afișat\"})}(),function(){!function(){function e(e,a){var t=e.split(\"_\");return a%10===1&&a%100!==11?t[0]:a%10>=2&&a%10<=4&&(a%100<10||a%100>=20)?t[1]:t[2]}function t(a,t,n){var r={mm:t?\"минута_минуты_минут\":\"минуту_минуты_минут\",hh:\"час_часа_часов\",dd:\"день_дня_дней\",MM:\"месяц_месяца_месяцев\",yy:\"год_года_лет\"};return\"m\"===n?t?\"минута\":\"минуту\":a+\" \"+e(r[n],+a)}var n=[/^янв/i,/^фев/i,/^мар/i,/^апр/i,/^ма[йя]/i,/^июн/i,/^июл/i,/^авг/i,/^сен/i,/^окт/i,/^ноя/i,/^дек/i],r=a.defineLocale(\"ru\",{months:{format:\"января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря\".split(\"_\"),standalone:\"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь\".split(\"_\")},monthsShort:{format:\"янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.\".split(\"_\"),standalone:\"янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.\".split(\"_\")},weekdays:{standalone:\"воскресенье_понедельник_вторник_среда_четверг_пятница_суббота\".split(\"_\"),format:\"воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу\".split(\"_\"),isFormat:/\\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\\] ?dddd/},weekdaysShort:\"вс_пн_вт_ср_чт_пт_сб\".split(\"_\"),weekdaysMin:\"вс_пн_вт_ср_чт_пт_сб\".split(\"_\"),monthsParse:n,longMonthsParse:n,shortMonthsParse:n,monthsRegex:/^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,monthsShortRegex:/^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,monthsStrictRegex:/^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,monthsShortStrictRegex:/^(янв\\.|февр?\\.|мар[т.]|апр\\.|ма[яй]|июн[ья.]|июл[ья.]|авг\\.|сент?\\.|окт\\.|нояб?\\.|дек\\.)/i,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D MMMM YYYY г.\",LLL:\"D MMMM YYYY г., HH:mm\",LLLL:\"dddd, D MMMM YYYY г., HH:mm\"},calendar:{sameDay:\"[Сегодня в] LT\",nextDay:\"[Завтра в] LT\",lastDay:\"[Вчера в] LT\",nextWeek:function(e){if(e.week()===this.week())return 2===this.day()?\"[Во] dddd [в] LT\":\"[В] dddd [в] LT\";switch(this.day()){case 0:return\"[В следующее] dddd [в] LT\";case 1:case 2:case 4:return\"[В следующий] dddd [в] LT\";case 3:case 5:case 6:return\"[В следующую] dddd [в] LT\"}},lastWeek:function(e){if(e.week()===this.week())return 2===this.day()?\"[Во] dddd [в] LT\":\"[В] dddd [в] LT\";switch(this.day()){case 0:return\"[В прошлое] dddd [в] LT\";case 1:case 2:case 4:return\"[В прошлый] dddd [в] LT\";case 3:case 5:case 6:return\"[В прошлую] dddd [в] LT\"}},sameElse:\"L\"},relativeTime:{future:\"через %s\",past:\"%s назад\",s:\"несколько секунд\",m:t,mm:t,h:\"час\",hh:t,d:\"день\",dd:t,M:\"месяц\",MM:t,y:\"год\",yy:t},meridiemParse:/ночи|утра|дня|вечера/i,isPM:function(e){return/^(дня|вечера)$/.test(e)},meridiem:function(e,a,t){return e<4?\"ночи\":e<12?\"утра\":e<17?\"дня\":\"вечера\"},ordinalParse:/\\d{1,2}-(й|го|я)/,ordinal:function(e,a){switch(a){case\"M\":case\"d\":case\"DDD\":return e+\"-й\";case\"D\":return e+\"-го\";case\"w\":case\"W\":return e+\"-я\";default:return e}},week:{dow:1,doy:7}});return r}(),e.fullCalendar.datepickerLocale(\"ru\",\"ru\",{closeText:\"Закрыть\",prevText:\"<Пред\",nextText:\"След>\",currentText:\"Сегодня\",monthNames:[\"Январь\",\"Февраль\",\"Март\",\"Апрель\",\"Май\",\"Июнь\",\"Июль\",\"Август\",\"Сентябрь\",\"Октябрь\",\"Ноябрь\",\"Декабрь\"],monthNamesShort:[\"Янв\",\"Фев\",\"Мар\",\"Апр\",\"Май\",\"Июн\",\"Июл\",\"Авг\",\"Сен\",\"Окт\",\"Ноя\",\"Дек\"],dayNames:[\"воскресенье\",\"понедельник\",\"вторник\",\"среда\",\"четверг\",\"пятница\",\"суббота\"],dayNamesShort:[\"вск\",\"пнд\",\"втр\",\"срд\",\"чтв\",\"птн\",\"сбт\"],dayNamesMin:[\"Вс\",\"Пн\",\"Вт\",\"Ср\",\"Чт\",\"Пт\",\"Сб\"],weekHeader:\"Нед\",dateFormat:\"dd.mm.yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),e.fullCalendar.locale(\"ru\",{buttonText:{month:\"Месяц\",week:\"Неделя\",day:\"День\",list:\"Повестка дня\"},allDayText:\"Весь день\",eventLimitText:function(e){return\"+ ещё \"+e},noEventsMessage:\"Нет событий для отображения\"})}(),function(){!function(){function e(e){return e>1&&e<5}function t(a,t,n,r){var s=a+\" \";switch(n){case\"s\":return t||r?\"pár sekúnd\":\"pár sekundami\";case\"m\":return t?\"minúta\":r?\"minútu\":\"minútou\";case\"mm\":return t||r?s+(e(a)?\"minúty\":\"minút\"):s+\"minútami\";case\"h\":return t?\"hodina\":r?\"hodinu\":\"hodinou\";case\"hh\":return t||r?s+(e(a)?\"hodiny\":\"hodín\"):s+\"hodinami\";case\"d\":return t||r?\"deň\":\"dňom\";case\"dd\":return t||r?s+(e(a)?\"dni\":\"dní\"):s+\"dňami\";case\"M\":return t||r?\"mesiac\":\"mesiacom\";case\"MM\":return t||r?s+(e(a)?\"mesiace\":\"mesiacov\"):s+\"mesiacmi\";case\"y\":return t||r?\"rok\":\"rokom\";case\"yy\":return t||r?s+(e(a)?\"roky\":\"rokov\"):s+\"rokmi\"}}var n=\"január_február_marec_apríl_máj_jún_júl_august_september_október_november_december\".split(\"_\"),r=\"jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec\".split(\"_\"),s=a.defineLocale(\"sk\",{months:n,monthsShort:r,weekdays:\"nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota\".split(\"_\"),weekdaysShort:\"ne_po_ut_st_št_pi_so\".split(\"_\"),weekdaysMin:\"ne_po_ut_st_št_pi_so\".split(\"_\"),longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY H:mm\",LLLL:\"dddd D. MMMM YYYY H:mm\"},calendar:{sameDay:\"[dnes o] LT\",nextDay:\"[zajtra o] LT\",nextWeek:function(){switch(this.day()){case 0:return\"[v nedeľu o] LT\";case 1:case 2:return\"[v] dddd [o] LT\";case 3:return\"[v stredu o] LT\";case 4:return\"[vo štvrtok o] LT\";case 5:return\"[v piatok o] LT\";case 6:return\"[v sobotu o] LT\"}},lastDay:\"[včera o] LT\",lastWeek:function(){switch(this.day()){case 0:return\"[minulú nedeľu o] LT\";case 1:case 2:return\"[minulý] dddd [o] LT\";case 3:return\"[minulú stredu o] LT\";case 4:case 5:return\"[minulý] dddd [o] LT\";case 6:return\"[minulú sobotu o] LT\"}},sameElse:\"L\"},relativeTime:{future:\"za %s\",past:\"pred %s\",s:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},ordinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}});return s}(),e.fullCalendar.datepickerLocale(\"sk\",\"sk\",{closeText:\"Zavrieť\",prevText:\"<Predchádzajúci\",nextText:\"Nasledujúci>\",currentText:\"Dnes\",monthNames:[\"január\",\"február\",\"marec\",\"apríl\",\"máj\",\"jún\",\"júl\",\"august\",\"september\",\"október\",\"november\",\"december\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"Máj\",\"Jún\",\"Júl\",\"Aug\",\"Sep\",\"Okt\",\"Nov\",\"Dec\"],dayNames:[\"nedeľa\",\"pondelok\",\"utorok\",\"streda\",\"štvrtok\",\"piatok\",\"sobota\"],dayNamesShort:[\"Ned\",\"Pon\",\"Uto\",\"Str\",\"Štv\",\"Pia\",\"Sob\"],dayNamesMin:[\"Ne\",\"Po\",\"Ut\",\"St\",\"Št\",\"Pia\",\"So\"],weekHeader:\"Ty\",dateFormat:\"dd.mm.yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),e.fullCalendar.locale(\"sk\",{buttonText:{month:\"Mesiac\",week:\"Týždeň\",day:\"Deň\",list:\"Rozvrh\"},allDayText:\"Celý deň\",eventLimitText:function(e){return\"+ďalšie: \"+e},noEventsMessage:\"Žiadne akcie na zobrazenie\"})}(),function(){!function(){function e(e,a,t,n){var r=e+\" \";switch(t){case\"s\":return a||n?\"nekaj sekund\":\"nekaj sekundami\";case\"m\":return a?\"ena minuta\":\"eno minuto\";case\"mm\":return r+=1===e?a?\"minuta\":\"minuto\":2===e?a||n?\"minuti\":\"minutama\":e<5?a||n?\"minute\":\"minutami\":a||n?\"minut\":\"minutami\";case\"h\":return a?\"ena ura\":\"eno uro\";case\"hh\":return r+=1===e?a?\"ura\":\"uro\":2===e?a||n?\"uri\":\"urama\":e<5?a||n?\"ure\":\"urami\":a||n?\"ur\":\"urami\";case\"d\":return a||n?\"en dan\":\"enim dnem\";case\"dd\":return r+=1===e?a||n?\"dan\":\"dnem\":2===e?a||n?\"dni\":\"dnevoma\":a||n?\"dni\":\"dnevi\";case\"M\":return a||n?\"en mesec\":\"enim mesecem\";case\"MM\":return r+=1===e?a||n?\"mesec\":\"mesecem\":2===e?a||n?\"meseca\":\"mesecema\":e<5?a||n?\"mesece\":\"meseci\":a||n?\"mesecev\":\"meseci\";case\"y\":return a||n?\"eno leto\":\"enim letom\";case\"yy\":return r+=1===e?a||n?\"leto\":\"letom\":2===e?a||n?\"leti\":\"letoma\":e<5?a||n?\"leta\":\"leti\":a||n?\"let\":\"leti\"}}var t=a.defineLocale(\"sl\",{months:\"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december\".split(\"_\"),monthsShort:\"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.\".split(\"_\"),monthsParseExact:!0,weekdays:\"nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota\".split(\"_\"),weekdaysShort:\"ned._pon._tor._sre._čet._pet._sob.\".split(\"_\"),weekdaysMin:\"ne_po_to_sr_če_pe_so\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY H:mm\",LLLL:\"dddd, D. MMMM YYYY H:mm\"},calendar:{sameDay:\"[danes ob] LT\",nextDay:\"[jutri ob] LT\",nextWeek:function(){switch(this.day()){case 0:return\"[v] [nedeljo] [ob] LT\";case 3:return\"[v] [sredo] [ob] LT\";case 6:return\"[v] [soboto] [ob] LT\";case 1:case 2:case 4:case 5:return\"[v] dddd [ob] LT\"}},lastDay:\"[včeraj ob] LT\",lastWeek:function(){switch(this.day()){case 0:return\"[prejšnjo] [nedeljo] [ob] LT\";case 3:return\"[prejšnjo] [sredo] [ob] LT\";case 6:return\"[prejšnjo] [soboto] [ob] LT\";case 1:case 2:case 4:case 5:return\"[prejšnji] dddd [ob] LT\"}},sameElse:\"L\"},relativeTime:{future:\"čez %s\",past:\"pred %s\",s:e,m:e,mm:e,h:e,hh:e,d:e,dd:e,M:e,MM:e,y:e,yy:e},ordinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:7}});return t}(),e.fullCalendar.datepickerLocale(\"sl\",\"sl\",{closeText:\"Zapri\",prevText:\"<Prejšnji\",nextText:\"Naslednji>\",currentText:\"Trenutni\",monthNames:[\"Januar\",\"Februar\",\"Marec\",\"April\",\"Maj\",\"Junij\",\"Julij\",\"Avgust\",\"September\",\"Oktober\",\"November\",\"December\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"Maj\",\"Jun\",\"Jul\",\"Avg\",\"Sep\",\"Okt\",\"Nov\",\"Dec\"],dayNames:[\"Nedelja\",\"Ponedeljek\",\"Torek\",\"Sreda\",\"Četrtek\",\"Petek\",\"Sobota\"],dayNamesShort:[\"Ned\",\"Pon\",\"Tor\",\"Sre\",\"Čet\",\"Pet\",\"Sob\"],dayNamesMin:[\"Ne\",\"Po\",\"To\",\"Sr\",\"Če\",\"Pe\",\"So\"],weekHeader:\"Teden\",dateFormat:\"dd.mm.yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),e.fullCalendar.locale(\"sl\",{buttonText:{month:\"Mesec\",week:\"Teden\",day:\"Dan\",list:\"Dnevni red\"},allDayText:\"Ves dan\",eventLimitText:\"več\",noEventsMessage:\"Ni dogodkov za prikaz\"})}(),function(){!function(){var e={words:{m:[\"jedan minut\",\"jedne minute\"],mm:[\"minut\",\"minute\",\"minuta\"],h:[\"jedan sat\",\"jednog sata\"],hh:[\"sat\",\"sata\",\"sati\"],dd:[\"dan\",\"dana\",\"dana\"],MM:[\"mesec\",\"meseca\",\"meseci\"],yy:[\"godina\",\"godine\",\"godina\"]},correctGrammaticalCase:function(e,a){return 1===e?a[0]:e>=2&&e<=4?a[1]:a[2]},translate:function(a,t,n){var r=e.words[n];return 1===n.length?t?r[0]:r[1]:a+\" \"+e.correctGrammaticalCase(a,r)}},t=a.defineLocale(\"sr\",{months:\"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar\".split(\"_\"),monthsShort:\"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.\".split(\"_\"),monthsParseExact:!0,weekdays:\"nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota\".split(\"_\"),weekdaysShort:\"ned._pon._uto._sre._čet._pet._sub.\".split(\"_\"),weekdaysMin:\"ne_po_ut_sr_če_pe_su\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY H:mm\",LLLL:\"dddd, D. MMMM YYYY H:mm\"},calendar:{sameDay:\"[danas u] LT\",nextDay:\"[sutra u] LT\",nextWeek:function(){switch(this.day()){case 0:return\"[u] [nedelju] [u] LT\";case 3:return\"[u] [sredu] [u] LT\";case 6:return\"[u] [subotu] [u] LT\";case 1:case 2:case 4:case 5:return\"[u] dddd [u] LT\"}},lastDay:\"[juče u] LT\",lastWeek:function(){var e=[\"[prošle] [nedelje] [u] LT\",\"[prošlog] [ponedeljka] [u] LT\",\"[prošlog] [utorka] [u] LT\",\"[prošle] [srede] [u] LT\",\"[prošlog] [četvrtka] [u] LT\",\"[prošlog] [petka] [u] LT\",\"[prošle] [subote] [u] LT\"];return e[this.day()]},sameElse:\"L\"},relativeTime:{future:\"za %s\",past:\"pre %s\",s:\"nekoliko sekundi\",m:e.translate,mm:e.translate,h:e.translate,hh:e.translate,d:\"dan\",dd:e.translate,M:\"mesec\",MM:e.translate,y:\"godinu\",yy:e.translate},ordinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:7}});return t}(),e.fullCalendar.datepickerLocale(\"sr\",\"sr\",{closeText:\"Затвори\",prevText:\"<\",nextText:\">\",currentText:\"Данас\",monthNames:[\"Јануар\",\"Фебруар\",\"Март\",\"Април\",\"Мај\",\"Јун\",\"Јул\",\"Август\",\"Септембар\",\"Октобар\",\"Новембар\",\"Децембар\"],monthNamesShort:[\"Јан\",\"Феб\",\"Мар\",\"Апр\",\"Мај\",\"Јун\",\"Јул\",\"Авг\",\"Сеп\",\"Окт\",\"Нов\",\"Дец\"],dayNames:[\"Недеља\",\"Понедељак\",\"Уторак\",\"Среда\",\"Четвртак\",\"Петак\",\"Субота\"],dayNamesShort:[\"Нед\",\"Пон\",\"Уто\",\"Сре\",\"Чет\",\"Пет\",\"Суб\"],dayNamesMin:[\"Не\",\"По\",\"Ут\",\"Ср\",\"Че\",\"Пе\",\"Су\"],weekHeader:\"Сед\",dateFormat:\"dd.mm.yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),e.fullCalendar.locale(\"sr\",{buttonText:{month:\"Месец\",week:\"Недеља\",day:\"Дан\",list:\"Планер\"},allDayText:\"Цео дан\",eventLimitText:function(e){return\"+ још \"+e},noEventsMessage:\"Нема догађаја за приказ\"})}(),function(){!function(){var e={words:{m:[\"један минут\",\"једне минуте\"],mm:[\"минут\",\"минуте\",\"минута\"],h:[\"један сат\",\"једног сата\"],hh:[\"сат\",\"сата\",\"сати\"],dd:[\"дан\",\"дана\",\"дана\"],MM:[\"месец\",\"месеца\",\"месеци\"],yy:[\"година\",\"године\",\"година\"]},correctGrammaticalCase:function(e,a){return 1===e?a[0]:e>=2&&e<=4?a[1]:a[2]},translate:function(a,t,n){var r=e.words[n];return 1===n.length?t?r[0]:r[1]:a+\" \"+e.correctGrammaticalCase(a,r)}},t=a.defineLocale(\"sr-cyrl\",{months:\"јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар\".split(\"_\"),monthsShort:\"јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.\".split(\"_\"),monthsParseExact:!0,weekdays:\"недеља_понедељак_уторак_среда_четвртак_петак_субота\".split(\"_\"),weekdaysShort:\"нед._пон._уто._сре._чет._пет._суб.\".split(\"_\"),weekdaysMin:\"не_по_ут_ср_че_пе_су\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY H:mm\",LLLL:\"dddd, D. MMMM YYYY H:mm\"},calendar:{sameDay:\"[данас у] LT\",nextDay:\"[сутра у] LT\",nextWeek:function(){switch(this.day()){case 0:return\"[у] [недељу] [у] LT\";case 3:return\"[у] [среду] [у] LT\";case 6:return\"[у] [суботу] [у] LT\";case 1:case 2:case 4:case 5:return\"[у] dddd [у] LT\"}},lastDay:\"[јуче у] LT\",lastWeek:function(){var e=[\"[прошле] [недеље] [у] LT\",\"[прошлог] [понедељка] [у] LT\",\"[прошлог] [уторка] [у] LT\",\"[прошле] [среде] [у] LT\",\"[прошлог] [четвртка] [у] LT\",\"[прошлог] [петка] [у] LT\",\"[прошле] [суботе] [у] LT\"];return e[this.day()]},sameElse:\"L\"},relativeTime:{future:\"за %s\",past:\"пре %s\",s:\"неколико секунди\",m:e.translate,mm:e.translate,h:e.translate,hh:e.translate,d:\"дан\",dd:e.translate,M:\"месец\",MM:e.translate,y:\"годину\",yy:e.translate},ordinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:7}});return t}(),e.fullCalendar.datepickerLocale(\"sr-cyrl\",\"sr\",{closeText:\"Затвори\",prevText:\"<\",nextText:\">\",currentText:\"Данас\",monthNames:[\"Јануар\",\"Фебруар\",\"Март\",\"Април\",\"Мај\",\"Јун\",\"Јул\",\"Август\",\"Септембар\",\"Октобар\",\"Новембар\",\"Децембар\"],monthNamesShort:[\"Јан\",\"Феб\",\"Мар\",\"Апр\",\"Мај\",\"Јун\",\"Јул\",\"Авг\",\"Сеп\",\"Окт\",\"Нов\",\"Дец\"],dayNames:[\"Недеља\",\"Понедељак\",\"Уторак\",\"Среда\",\"Четвртак\",\"Петак\",\"Субота\"],dayNamesShort:[\"Нед\",\"Пон\",\"Уто\",\"Сре\",\"Чет\",\"Пет\",\"Суб\"],dayNamesMin:[\"Не\",\"По\",\"Ут\",\"Ср\",\"Че\",\"Пе\",\"Су\"],weekHeader:\"Сед\",dateFormat:\"dd.mm.yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),e.fullCalendar.locale(\"sr-cyrl\",{buttonText:{month:\"Месец\",week:\"Недеља\",day:\"Дан\",list:\"Планер\"},allDayText:\"Цео дан\",eventLimitText:function(e){return\"+ још \"+e},noEventsMessage:\"Нема догађаја за приказ\"})}(),function(){!function(){var e=a.defineLocale(\"sv\",{months:\"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december\".split(\"_\"),monthsShort:\"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec\".split(\"_\"),weekdays:\"söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag\".split(\"_\"),weekdaysShort:\"sön_mån_tis_ons_tor_fre_lör\".split(\"_\"),weekdaysMin:\"sö_må_ti_on_to_fr_lö\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"YYYY-MM-DD\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY [kl.] HH:mm\",LLLL:\"dddd D MMMM YYYY [kl.] HH:mm\",lll:\"D MMM YYYY HH:mm\",llll:\"ddd D MMM YYYY HH:mm\"},calendar:{sameDay:\"[Idag] LT\",nextDay:\"[Imorgon] LT\",lastDay:\"[Igår] LT\",nextWeek:\"[På] dddd LT\",lastWeek:\"[I] dddd[s] LT\",sameElse:\"L\"},relativeTime:{future:\"om %s\",past:\"för %s sedan\",s:\"några sekunder\",m:\"en minut\",mm:\"%d minuter\",h:\"en timme\",hh:\"%d timmar\",d:\"en dag\",dd:\"%d dagar\",M:\"en månad\",MM:\"%d månader\",y:\"ett år\",yy:\"%d år\"},ordinalParse:/\\d{1,2}(e|a)/,ordinal:function(e){var a=e%10,t=1===~~(e%100/10)?\"e\":1===a?\"a\":2===a?\"a\":\"e\";return e+t},week:{dow:1,doy:4}});return e}(),e.fullCalendar.datepickerLocale(\"sv\",\"sv\",{closeText:\"Stäng\",prevText:\"«Förra\",nextText:\"Nästa»\",currentText:\"Idag\",monthNames:[\"Januari\",\"Februari\",\"Mars\",\"April\",\"Maj\",\"Juni\",\"Juli\",\"Augusti\",\"September\",\"Oktober\",\"November\",\"December\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"Maj\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Okt\",\"Nov\",\"Dec\"],dayNamesShort:[\"Sön\",\"Mån\",\"Tis\",\"Ons\",\"Tor\",\"Fre\",\"Lör\"],dayNames:[\"Söndag\",\"Måndag\",\"Tisdag\",\"Onsdag\",\"Torsdag\",\"Fredag\",\"Lördag\"],dayNamesMin:[\"Sö\",\"Må\",\"Ti\",\"On\",\"To\",\"Fr\",\"Lö\"],weekHeader:\"Ve\",dateFormat:\"yy-mm-dd\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),e.fullCalendar.locale(\"sv\",{buttonText:{month:\"Månad\",week:\"Vecka\",day:\"Dag\",list:\"Program\"},allDayText:\"Heldag\",eventLimitText:\"till\",noEventsMessage:\"Inga händelser att visa\"})}(),function(){!function(){var e=a.defineLocale(\"th\",{months:\"มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม\".split(\"_\"),monthsShort:\"ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.\".split(\"_\"),monthsParseExact:!0,weekdays:\"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์\".split(\"_\"),weekdaysShort:\"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์\".split(\"_\"),weekdaysMin:\"อา._จ._อ._พ._พฤ._ศ._ส.\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"YYYY/MM/DD\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY เวลา H:mm\",LLLL:\"วันddddที่ D MMMM YYYY เวลา H:mm\"},meridiemParse:/ก่อนเที่ยง|หลังเที่ยง/,isPM:function(e){return\"หลังเที่ยง\"===e},meridiem:function(e,a,t){return e<12?\"ก่อนเที่ยง\":\"หลังเที่ยง\"},calendar:{sameDay:\"[วันนี้ เวลา] LT\",nextDay:\"[พรุ่งนี้ เวลา] LT\",nextWeek:\"dddd[หน้า เวลา] LT\",lastDay:\"[เมื่อวานนี้ เวลา] LT\",lastWeek:\"[วัน]dddd[ที่แล้ว เวลา] LT\",sameElse:\"L\"},relativeTime:{future:\"อีก %s\",past:\"%sที่แล้ว\",s:\"ไม่กี่วินาที\",m:\"1 นาที\",mm:\"%d นาที\",h:\"1 ชั่วโมง\",hh:\"%d ชั่วโมง\",d:\"1 วัน\",dd:\"%d วัน\",M:\"1 เดือน\",MM:\"%d เดือน\",y:\"1 ปี\",yy:\"%d ปี\"\n}});return e}(),e.fullCalendar.datepickerLocale(\"th\",\"th\",{closeText:\"ปิด\",prevText:\"« ย้อน\",nextText:\"ถัดไป »\",currentText:\"วันนี้\",monthNames:[\"มกราคม\",\"กุมภาพันธ์\",\"มีนาคม\",\"เมษายน\",\"พฤษภาคม\",\"มิถุนายน\",\"กรกฎาคม\",\"สิงหาคม\",\"กันยายน\",\"ตุลาคม\",\"พฤศจิกายน\",\"ธันวาคม\"],monthNamesShort:[\"ม.ค.\",\"ก.พ.\",\"มี.ค.\",\"เม.ย.\",\"พ.ค.\",\"มิ.ย.\",\"ก.ค.\",\"ส.ค.\",\"ก.ย.\",\"ต.ค.\",\"พ.ย.\",\"ธ.ค.\"],dayNames:[\"อาทิตย์\",\"จันทร์\",\"อังคาร\",\"พุธ\",\"พฤหัสบดี\",\"ศุกร์\",\"เสาร์\"],dayNamesShort:[\"อา.\",\"จ.\",\"อ.\",\"พ.\",\"พฤ.\",\"ศ.\",\"ส.\"],dayNamesMin:[\"อา.\",\"จ.\",\"อ.\",\"พ.\",\"พฤ.\",\"ศ.\",\"ส.\"],weekHeader:\"Wk\",dateFormat:\"dd/mm/yy\",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),e.fullCalendar.locale(\"th\",{buttonText:{month:\"เดือน\",week:\"สัปดาห์\",day:\"วัน\",list:\"แผนงาน\"},allDayText:\"ตลอดวัน\",eventLimitText:\"เพิ่มเติม\",noEventsMessage:\"ไม่มีกิจกรรมที่จะแสดง\"})}(),function(){!function(){var e={1:\"'inci\",5:\"'inci\",8:\"'inci\",70:\"'inci\",80:\"'inci\",2:\"'nci\",7:\"'nci\",20:\"'nci\",50:\"'nci\",3:\"'üncü\",4:\"'üncü\",100:\"'üncü\",6:\"'ncı\",9:\"'uncu\",10:\"'uncu\",30:\"'uncu\",60:\"'ıncı\",90:\"'ıncı\"},t=a.defineLocale(\"tr\",{months:\"Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık\".split(\"_\"),monthsShort:\"Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara\".split(\"_\"),weekdays:\"Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi\".split(\"_\"),weekdaysShort:\"Paz_Pts_Sal_Çar_Per_Cum_Cts\".split(\"_\"),weekdaysMin:\"Pz_Pt_Sa_Ça_Pe_Cu_Ct\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd, D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[bugün saat] LT\",nextDay:\"[yarın saat] LT\",nextWeek:\"[haftaya] dddd [saat] LT\",lastDay:\"[dün] LT\",lastWeek:\"[geçen hafta] dddd [saat] LT\",sameElse:\"L\"},relativeTime:{future:\"%s sonra\",past:\"%s önce\",s:\"birkaç saniye\",m:\"bir dakika\",mm:\"%d dakika\",h:\"bir saat\",hh:\"%d saat\",d:\"bir gün\",dd:\"%d gün\",M:\"bir ay\",MM:\"%d ay\",y:\"bir yıl\",yy:\"%d yıl\"},ordinalParse:/\\d{1,2}'(inci|nci|üncü|ncı|uncu|ıncı)/,ordinal:function(a){if(0===a)return a+\"'ıncı\";var t=a%10,n=a%100-t,r=a>=100?100:null;return a+(e[t]||e[n]||e[r])},week:{dow:1,doy:7}});return t}(),e.fullCalendar.datepickerLocale(\"tr\",\"tr\",{closeText:\"kapat\",prevText:\"<geri\",nextText:\"ileri>\",currentText:\"bugün\",monthNames:[\"Ocak\",\"Şubat\",\"Mart\",\"Nisan\",\"Mayıs\",\"Haziran\",\"Temmuz\",\"Ağustos\",\"Eylül\",\"Ekim\",\"Kasım\",\"Aralık\"],monthNamesShort:[\"Oca\",\"Şub\",\"Mar\",\"Nis\",\"May\",\"Haz\",\"Tem\",\"Ağu\",\"Eyl\",\"Eki\",\"Kas\",\"Ara\"],dayNames:[\"Pazar\",\"Pazartesi\",\"Salı\",\"Çarşamba\",\"Perşembe\",\"Cuma\",\"Cumartesi\"],dayNamesShort:[\"Pz\",\"Pt\",\"Sa\",\"Ça\",\"Pe\",\"Cu\",\"Ct\"],dayNamesMin:[\"Pz\",\"Pt\",\"Sa\",\"Ça\",\"Pe\",\"Cu\",\"Ct\"],weekHeader:\"Hf\",dateFormat:\"dd.mm.yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),e.fullCalendar.locale(\"tr\",{buttonText:{next:\"ileri\",month:\"Ay\",week:\"Hafta\",day:\"Gün\",list:\"Ajanda\"},allDayText:\"Tüm gün\",eventLimitText:\"daha fazla\",noEventsMessage:\"Herhangi bir etkinlik görüntülemek için\"})}(),function(){!function(){function e(e,a){var t=e.split(\"_\");return a%10===1&&a%100!==11?t[0]:a%10>=2&&a%10<=4&&(a%100<10||a%100>=20)?t[1]:t[2]}function t(a,t,n){var r={mm:t?\"хвилина_хвилини_хвилин\":\"хвилину_хвилини_хвилин\",hh:t?\"година_години_годин\":\"годину_години_годин\",dd:\"день_дні_днів\",MM:\"місяць_місяці_місяців\",yy:\"рік_роки_років\"};return\"m\"===n?t?\"хвилина\":\"хвилину\":\"h\"===n?t?\"година\":\"годину\":a+\" \"+e(r[n],+a)}function n(e,a){var t={nominative:\"неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота\".split(\"_\"),accusative:\"неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу\".split(\"_\"),genitive:\"неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи\".split(\"_\")},n=/(\\[[ВвУу]\\]) ?dddd/.test(a)?\"accusative\":/\\[?(?:минулої|наступної)? ?\\] ?dddd/.test(a)?\"genitive\":\"nominative\";return t[n][e.day()]}function r(e){return function(){return e+\"о\"+(11===this.hours()?\"б\":\"\")+\"] LT\"}}var s=a.defineLocale(\"uk\",{months:{format:\"січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня\".split(\"_\"),standalone:\"січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень\".split(\"_\")},monthsShort:\"січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд\".split(\"_\"),weekdays:n,weekdaysShort:\"нд_пн_вт_ср_чт_пт_сб\".split(\"_\"),weekdaysMin:\"нд_пн_вт_ср_чт_пт_сб\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D MMMM YYYY р.\",LLL:\"D MMMM YYYY р., HH:mm\",LLLL:\"dddd, D MMMM YYYY р., HH:mm\"},calendar:{sameDay:r(\"[Сьогодні \"),nextDay:r(\"[Завтра \"),lastDay:r(\"[Вчора \"),nextWeek:r(\"[У] dddd [\"),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return r(\"[Минулої] dddd [\").call(this);case 1:case 2:case 4:return r(\"[Минулого] dddd [\").call(this)}},sameElse:\"L\"},relativeTime:{future:\"за %s\",past:\"%s тому\",s:\"декілька секунд\",m:t,mm:t,h:\"годину\",hh:t,d:\"день\",dd:t,M:\"місяць\",MM:t,y:\"рік\",yy:t},meridiemParse:/ночі|ранку|дня|вечора/,isPM:function(e){return/^(дня|вечора)$/.test(e)},meridiem:function(e,a,t){return e<4?\"ночі\":e<12?\"ранку\":e<17?\"дня\":\"вечора\"},ordinalParse:/\\d{1,2}-(й|го)/,ordinal:function(e,a){switch(a){case\"M\":case\"d\":case\"DDD\":case\"w\":case\"W\":return e+\"-й\";case\"D\":return e+\"-го\";default:return e}},week:{dow:1,doy:7}});return s}(),e.fullCalendar.datepickerLocale(\"uk\",\"uk\",{closeText:\"Закрити\",prevText:\"<\",nextText:\">\",currentText:\"Сьогодні\",monthNames:[\"Січень\",\"Лютий\",\"Березень\",\"Квітень\",\"Травень\",\"Червень\",\"Липень\",\"Серпень\",\"Вересень\",\"Жовтень\",\"Листопад\",\"Грудень\"],monthNamesShort:[\"Січ\",\"Лют\",\"Бер\",\"Кві\",\"Тра\",\"Чер\",\"Лип\",\"Сер\",\"Вер\",\"Жов\",\"Лис\",\"Гру\"],dayNames:[\"неділя\",\"понеділок\",\"вівторок\",\"середа\",\"четвер\",\"п’ятниця\",\"субота\"],dayNamesShort:[\"нед\",\"пнд\",\"вів\",\"срд\",\"чтв\",\"птн\",\"сбт\"],dayNamesMin:[\"Нд\",\"Пн\",\"Вт\",\"Ср\",\"Чт\",\"Пт\",\"Сб\"],weekHeader:\"Тиж\",dateFormat:\"dd.mm.yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),e.fullCalendar.locale(\"uk\",{buttonText:{month:\"Місяць\",week:\"Тиждень\",day:\"День\",list:\"Порядок денний\"},allDayText:\"Увесь день\",eventLimitText:function(e){return\"+ще \"+e+\"...\"},noEventsMessage:\"Немає подій для відображення\"})}(),function(){!function(){var e=a.defineLocale(\"vi\",{months:\"tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12\".split(\"_\"),monthsShort:\"Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12\".split(\"_\"),monthsParseExact:!0,weekdays:\"chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy\".split(\"_\"),weekdaysShort:\"CN_T2_T3_T4_T5_T6_T7\".split(\"_\"),weekdaysMin:\"CN_T2_T3_T4_T5_T6_T7\".split(\"_\"),weekdaysParseExact:!0,meridiemParse:/sa|ch/i,isPM:function(e){return/^ch$/i.test(e)},meridiem:function(e,a,t){return e<12?t?\"sa\":\"SA\":t?\"ch\":\"CH\"},longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM [năm] YYYY\",LLL:\"D MMMM [năm] YYYY HH:mm\",LLLL:\"dddd, D MMMM [năm] YYYY HH:mm\",l:\"DD/M/YYYY\",ll:\"D MMM YYYY\",lll:\"D MMM YYYY HH:mm\",llll:\"ddd, D MMM YYYY HH:mm\"},calendar:{sameDay:\"[Hôm nay lúc] LT\",nextDay:\"[Ngày mai lúc] LT\",nextWeek:\"dddd [tuần tới lúc] LT\",lastDay:\"[Hôm qua lúc] LT\",lastWeek:\"dddd [tuần rồi lúc] LT\",sameElse:\"L\"},relativeTime:{future:\"%s tới\",past:\"%s trước\",s:\"vài giây\",m:\"một phút\",mm:\"%d phút\",h:\"một giờ\",hh:\"%d giờ\",d:\"một ngày\",dd:\"%d ngày\",M:\"một tháng\",MM:\"%d tháng\",y:\"một năm\",yy:\"%d năm\"},ordinalParse:/\\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}});return e}(),e.fullCalendar.datepickerLocale(\"vi\",\"vi\",{closeText:\"Đóng\",prevText:\"<Trước\",nextText:\"Tiếp>\",currentText:\"Hôm nay\",monthNames:[\"Tháng Một\",\"Tháng Hai\",\"Tháng Ba\",\"Tháng Tư\",\"Tháng Năm\",\"Tháng Sáu\",\"Tháng Bảy\",\"Tháng Tám\",\"Tháng Chín\",\"Tháng Mười\",\"Tháng Mười Một\",\"Tháng Mười Hai\"],monthNamesShort:[\"Tháng 1\",\"Tháng 2\",\"Tháng 3\",\"Tháng 4\",\"Tháng 5\",\"Tháng 6\",\"Tháng 7\",\"Tháng 8\",\"Tháng 9\",\"Tháng 10\",\"Tháng 11\",\"Tháng 12\"],dayNames:[\"Chủ Nhật\",\"Thứ Hai\",\"Thứ Ba\",\"Thứ Tư\",\"Thứ Năm\",\"Thứ Sáu\",\"Thứ Bảy\"],dayNamesShort:[\"CN\",\"T2\",\"T3\",\"T4\",\"T5\",\"T6\",\"T7\"],dayNamesMin:[\"CN\",\"T2\",\"T3\",\"T4\",\"T5\",\"T6\",\"T7\"],weekHeader:\"Tu\",dateFormat:\"dd/mm/yy\",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),e.fullCalendar.locale(\"vi\",{buttonText:{month:\"Tháng\",week:\"Tuần\",day:\"Ngày\",list:\"Lịch biểu\"},allDayText:\"Cả ngày\",eventLimitText:function(e){return\"+ thêm \"+e},noEventsMessage:\"Không có sự kiện để hiển thị\"})}(),function(){!function(){var e=a.defineLocale(\"zh-cn\",{months:\"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月\".split(\"_\"),monthsShort:\"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月\".split(\"_\"),weekdays:\"星期日_星期一_星期二_星期三_星期四_星期五_星期六\".split(\"_\"),weekdaysShort:\"周日_周一_周二_周三_周四_周五_周六\".split(\"_\"),weekdaysMin:\"日_一_二_三_四_五_六\".split(\"_\"),longDateFormat:{LT:\"Ah点mm分\",LTS:\"Ah点m分s秒\",L:\"YYYY-MM-DD\",LL:\"YYYY年MMMD日\",LLL:\"YYYY年MMMD日Ah点mm分\",LLLL:\"YYYY年MMMD日ddddAh点mm分\",l:\"YYYY-MM-DD\",ll:\"YYYY年MMMD日\",lll:\"YYYY年MMMD日Ah点mm分\",llll:\"YYYY年MMMD日ddddAh点mm分\"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,a){return 12===e&&(e=0),\"凌晨\"===a||\"早上\"===a||\"上午\"===a?e:\"下午\"===a||\"晚上\"===a?e+12:e>=11?e:e+12},meridiem:function(e,a,t){var n=100*e+a;return n<600?\"凌晨\":n<900?\"早上\":n<1130?\"上午\":n<1230?\"中午\":n<1800?\"下午\":\"晚上\"},calendar:{sameDay:function(){return 0===this.minutes()?\"[今天]Ah[点整]\":\"[今天]LT\"},nextDay:function(){return 0===this.minutes()?\"[明天]Ah[点整]\":\"[明天]LT\"},lastDay:function(){return 0===this.minutes()?\"[昨天]Ah[点整]\":\"[昨天]LT\"},nextWeek:function(){var e,t;return e=a().startOf(\"week\"),t=this.diff(e,\"days\")>=7?\"[下]\":\"[本]\",0===this.minutes()?t+\"dddAh点整\":t+\"dddAh点mm\"},lastWeek:function(){var e,t;return e=a().startOf(\"week\"),t=this.unix()=11?e:e+12:\"下午\"===a||\"晚上\"===a?e+12:void 0},meridiem:function(e,a,t){var n=100*e+a;return n<600?\"凌晨\":n<900?\"早上\":n<1130?\"上午\":n<1230?\"中午\":n<1800?\"下午\":\"晚上\"},calendar:{sameDay:\"[今天]LT\",nextDay:\"[明天]LT\",nextWeek:\"[下]ddddLT\",lastDay:\"[昨天]LT\",lastWeek:\"[上]ddddLT\",sameElse:\"L\"},ordinalParse:/\\d{1,2}(日|月|週)/,ordinal:function(e,a){switch(a){case\"d\":case\"D\":case\"DDD\":return e+\"日\";case\"M\":return e+\"月\";case\"w\":case\"W\":return e+\"週\";default:return e}},relativeTime:{future:\"%s內\",past:\"%s前\",s:\"幾秒\",m:\"1 分鐘\",mm:\"%d 分鐘\",h:\"1 小時\",hh:\"%d 小時\",d:\"1 天\",dd:\"%d 天\",M:\"1 個月\",MM:\"%d 個月\",y:\"1 年\",yy:\"%d 年\"}});return e}(),e.fullCalendar.datepickerLocale(\"zh-tw\",\"zh-TW\",{closeText:\"關閉\",prevText:\"<上月\",nextText:\"下月>\",currentText:\"今天\",monthNames:[\"一月\",\"二月\",\"三月\",\"四月\",\"五月\",\"六月\",\"七月\",\"八月\",\"九月\",\"十月\",\"十一月\",\"十二月\"],monthNamesShort:[\"一月\",\"二月\",\"三月\",\"四月\",\"五月\",\"六月\",\"七月\",\"八月\",\"九月\",\"十月\",\"十一月\",\"十二月\"],dayNames:[\"星期日\",\"星期一\",\"星期二\",\"星期三\",\"星期四\",\"星期五\",\"星期六\"],dayNamesShort:[\"周日\",\"周一\",\"周二\",\"周三\",\"周四\",\"周五\",\"周六\"],dayNamesMin:[\"日\",\"一\",\"二\",\"三\",\"四\",\"五\",\"六\"],weekHeader:\"周\",dateFormat:\"yy/mm/dd\",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:\"年\"}),e.fullCalendar.locale(\"zh-tw\",{buttonText:{month:\"月\",week:\"週\",day:\"天\",list:\"待辦事項\"},allDayText:\"全天\",eventLimitText:\"更多\",noEventsMessage:\"没有事件显示\"})}(),a.locale(\"en\"),e.fullCalendar.locale(\"en\"),e.datepicker&&e.datepicker.setDefaults(e.datepicker.regional[\"\"])});","/**\n * Grouped Categories v1.0.13 (2016-01-13)\n *\n * (c) 2012-2016 Black Label\n *\n * License: Creative Commons Attribution (CC)\n */\n(function(HC){\n/*jshint expr:true, boss:true */\nvar UNDEFINED = void 0,\n mathRound = Math.round,\n mathMin = Math.min,\n mathMax = Math.max,\n merge = HC.merge,\n pick = HC.pick,\n // #74, since Highcharts 4.1.10 HighchartsAdapter is only provided by the Highcharts Standalone Framework\n inArray = (window.HighchartsAdapter && window.HighchartsAdapter.inArray) || HC.inArray,\n\n // cache prototypes\n axisProto = HC.Axis.prototype,\n tickProto = HC.Tick.prototype,\n\n // cache original methods\n _axisInit = axisProto.init,\n _axisRender = axisProto.render,\n _axisSetCategories = axisProto.setCategories,\n _tickGetLabelSize = tickProto.getLabelSize,\n _tickAddLabel = tickProto.addLabel,\n _tickDestroy = tickProto.destroy,\n _tickRender = tickProto.render;\n\n\nfunction Category(obj, parent) {\n this.userOptions = deepClone(obj);\n this.name = obj.name || obj;\n this.parent = parent;\n\n return this;\n}\n\nCategory.prototype.toString = function () {\n var parts = [],\n cat = this;\n\n while (cat) {\n parts.push(cat.name);\n cat = cat.parent;\n }\n\n return parts.join(', ');\n};\n\n\n// Highcharts methods\nfunction defined(obj) {\n return obj !== UNDEFINED && obj !== null;\n}\n\n// returns sum of an array\nfunction sum(arr) {\n var l = arr.length,\n x = 0;\n\n while (l--)\n x += arr[l];\n\n return x;\n}\n\n\n// Builds reverse category tree\nfunction buildTree(cats, out, options, parent, depth) {\n var len = cats.length,\n cat;\n\n depth || (depth = 0);\n options.depth || (options.depth = 0);\n\n while (len--) {\n cat = cats[len];\n\n\n if (parent)\n cat.parent = parent;\n\n\n if (cat.categories)\n buildTree(cat.categories, out, options, cat, depth + 1);\n\n else\n addLeaf(out, cat, parent);\n }\n\n options.depth = mathMax(options.depth, depth);\n}\n\n// Adds category leaf to array\nfunction addLeaf(out, cat, parent) {\n out.unshift(new Category(cat, parent));\n\n while (parent) {\n parent.leaves++ || (parent.leaves = 1);\n parent = parent.parent;\n }\n}\n\n// Pushes part of grid to path\nfunction addGridPart(path, d, width) {\n // Based on crispLine from HC (#65)\n if (d[0] === d[2]) {\n d[0] = d[2] = mathRound(d[0]) - (width % 2 / 2);\n }\n if (d[1] === d[3]) {\n d[1] = d[3] = mathRound(d[1]) + (width % 2 / 2);\n }\n \n path.push(\n 'M',\n d[0], d[1],\n 'L',\n d[2], d[3]\n );\n}\n\n// Destroys category groups\nfunction cleanCategory(category) {\n var tmp;\n\n while (category) {\n tmp = category.parent;\n\n if (category.label)\n category.label.destroy();\n\n delete category.parent;\n delete category.label;\n\n category = tmp;\n }\n}\n\n// Returns tick position\nfunction tickPosition(tick, pos) {\n return tick.getPosition(tick.axis.horiz, pos, tick.axis.tickmarkOffset);\n}\n\nfunction walk(arr, key, fn) {\n var l = arr.length,\n children;\n\n while (l--) {\n children = arr[l][key];\n\n if (children)\n walk(children, key, fn);\n\n fn(arr[l]);\n }\n}\n\nfunction deepClone(thing) {\n return JSON.parse(JSON.stringify(thing));\n}\n\n//\n// Axis prototype\n//\n\naxisProto.init = function (chart, options) {\n // default behaviour\n _axisInit.call(this, chart, options);\n\n if (typeof options === 'object' && options.categories)\n this.setupGroups(options);\n};\n\n// setup required axis options\naxisProto.setupGroups = function (options) {\n var categories,\n reverseTree = [],\n stats = {};\n \n categories = deepClone(options.categories);;\n\n // build categories tree\n buildTree(categories, reverseTree, stats);\n\n // set axis properties\n this.categoriesTree = categories;\n this.categories = reverseTree;\n this.isGrouped = stats.depth !== 0;\n this.labelsDepth = stats.depth;\n this.labelsSizes = [];\n this.labelsGridPath = [];\n this.tickLength = options.tickLength || this.tickLength || null;\n // #66: tickWidth for x axis defaults to 1, for y to 0\n this.tickWidth = pick(options.tickWidth, this.isXAxis ? 1 : 0);\n this.directionFactor = [-1, 1, 1, -1][this.side];\n\n this.options.lineWidth = pick(options.lineWidth, 1);\n};\n\n\naxisProto.render = function () {\n // clear grid path\n if (this.isGrouped)\n this.labelsGridPath = [];\n\n // cache original tick length\n if (this.originalTickLength === UNDEFINED)\n this.originalTickLength = this.options.tickLength;\n\n // use default tickLength for not-grouped axis\n // and generate grid on grouped axes,\n // use tiny number to force highcharts to hide tick\n this.options.tickLength = this.isGrouped ? 0.001 : this.originalTickLength;\n\n _axisRender.call(this);\n\n\n if (!this.isGrouped) {\n if (this.labelsGrid)\n this.labelsGrid.attr({visibility: 'hidden'});\n return;\n }\n\n var axis = this,\n options = axis.options,\n top = axis.top,\n left = axis.left,\n right = left + axis.width,\n bottom = top + axis.height,\n visible = axis.hasVisibleSeries || axis.hasData,\n depth = axis.labelsDepth,\n grid = axis.labelsGrid,\n horiz = axis.horiz,\n d = axis.labelsGridPath,\n i = options.drawHorizontalBorders === false ? depth+1 : 0,\n offset = axis.opposite ? (horiz ? top : right) : (horiz ? bottom : left),\n tickWidth = axis.tickWidth,\n part;\n\n if (axis.userTickLength)\n depth -= 1;\n\n // render grid path for the first time\n if (!grid) {\n grid = axis.labelsGrid = axis.chart.renderer.path()\n .attr({\n // #58: use tickWidth/tickColor instead of lineWidth/lineColor: \n strokeWidth: tickWidth, // < 4.0.3\n 'stroke-width': tickWidth, // 4.0.3+ #30\n stroke: options.tickColor\n })\n .add(axis.axisGroup);\n }\n\n // go through every level and draw horizontal grid line\n while (i <= depth) {\n offset += axis.groupSize(i);\n\n part = horiz ?\n [left, offset, right, offset] :\n [offset, top, offset, bottom];\n\n addGridPart(d, part, tickWidth);\n i++;\n }\n\n // draw grid path\n grid.attr({\n d: d,\n visibility: visible ? 'visible' : 'hidden'\n });\n\n axis.labelGroup.attr({\n visibility: visible ? 'visible' : 'hidden'\n });\n\n\n walk(axis.categoriesTree, 'categories', function (group) {\n var tick = group.tick;\n\n if (!tick)\n return;\n\n if (tick.startAt + tick.leaves - 1 < axis.min || tick.startAt > axis.max) {\n tick.label.hide();\n tick.destroyed = 0;\n }\n else\n\t tick.label.attr({\n\t\tvisibility: visible ? 'visible' : 'hidden'\n\t });\n });\n};\n\naxisProto.setCategories = function (newCategories, doRedraw) {\n if (this.categories)\n this.cleanGroups();\n\n this.setupGroups({\n categories: newCategories\n });\n this.categories = this.userOptions.categories = newCategories;\n _axisSetCategories.call(this, this.categories, doRedraw);\n};\n\n// cleans old categories\naxisProto.cleanGroups = function () {\n var ticks = this.ticks,\n n;\n\n for (n in ticks)\n if (ticks[n].parent)\n delete ticks[n].parent;\n\n walk(this.categoriesTree, 'categories', function (group) {\n var tick = group.tick,\n n;\n\n if (!tick)\n return;\n\n tick.label.destroy();\n\n for (n in tick)\n delete tick[n];\n\n delete group.tick;\n });\n this.labelsGrid = null;\n};\n\n// keeps size of each categories level\naxisProto.groupSize = function (level, position) {\n var positions = this.labelsSizes,\n direction = this.directionFactor,\n groupedOptions = this.options.labels.groupedOptions ? this.options.labels.groupedOptions[level-1] : false,\n userXY = 0;\n \n if(groupedOptions) {\n \tif(direction == -1) {\n \t\tuserXY = groupedOptions.x ? groupedOptions.x : 0;\n \t} else {\n \t\tuserXY = groupedOptions.y ? groupedOptions.y : 0;\n \t}\n } \t\n \n if (position !== UNDEFINED)\n positions[level] = mathMax(positions[level] || 0, position + 10 + Math.abs(userXY));\n \n if (level === true)\n return sum(positions) * direction;\n\n else if (positions[level])\n return positions[level] * direction;\n\n return 0;\n};\n\n\n\n//\n// Tick prototype\n//\n\n// Override methods prototypes\ntickProto.addLabel = function () {\n var category;\n\n _tickAddLabel.call(this);\n\n if (!this.axis.categories ||\n !(category = this.axis.categories[this.pos]))\n return;\n\n // set label text - but applied after formatter #46\n if (this.label)\n this.label.attr('text', this.axis.labelFormatter.call({\n\t\t\taxis: this.axis,\n\t\t\tchart: this.axis.chart,\n\t\t\tisFirst: this.isFirst,\n\t\t\tisLast: this.isLast,\n\t\t\tvalue: category.name\n\t\t}));\n\n // create elements for parent categories\n if (this.axis.isGrouped && this.axis.options.labels.enabled)\n this.addGroupedLabels(category);\n};\n\n// render ancestor label\ntickProto.addGroupedLabels = function (category) {\n var tick = this,\n axis = this.axis,\n chart = axis.chart,\n options = axis.options.labels,\n useHTML = options.useHTML,\n css = options.style,\n userAttr= options.groupedOptions,\n attr = { align: 'center' , rotation: options.rotation, x: 0, y: 0 },\n size = axis.horiz ? 'height' : 'width',\n depth = 0,\n label;\n\n\n while (tick) {\n if (depth > 0 && !category.tick) {\n // render label element\n this.value = category.name;\n var name = options.formatter ? options.formatter.call(this, category) : category.name,\n \t hasOptions = userAttr && userAttr[depth-1],\n \t mergedAttrs = hasOptions ? merge(attr, userAttr[depth-1] ) : attr,\n \t mergedCSS = hasOptions && userAttr[depth-1].style ? merge(css, userAttr[depth-1].style ) : css;\n\n //#63: style is passed in CSS and not as an attribute\n delete mergedAttrs.style;\n \t \n label = chart.renderer.text(name, 0, 0, useHTML)\n .attr(mergedAttrs)\n .css(mergedCSS)\n .add(axis.labelGroup);\n\n // tick properties\n tick.startAt = this.pos;\n tick.childCount = category.categories.length;\n tick.leaves = category.leaves;\n tick.visible = this.childCount;\n tick.label = label;\n tick.labelOffsets = {\n \t\tx: mergedAttrs.x,\n \t\ty: mergedAttrs.y\n };\n\n // link tick with category\n category.tick = tick;\n }\n\n // set level size\n axis.groupSize(depth, tick.label.getBBox()[size]);\n\n // go up to the parent category\n category = category.parent;\n\n if (category)\n tick = tick.parent = category.tick || {};\n else\n tick = null;\n\n depth++;\n }\n};\n\n// set labels position & render categories grid\ntickProto.render = function (index, old, opacity) {\n _tickRender.call(this, index, old, opacity);\n\n var treeCat = this.axis.categories[this.pos];\n \n if (!this.axis.isGrouped || !treeCat || this.pos > this.axis.max)\n return;\n\n var tick = this,\n group = tick,\n axis = tick.axis,\n tickPos = tick.pos,\n isFirst = tick.isFirst,\n max = axis.max,\n min = axis.min,\n horiz = axis.horiz,\n cat = axis.categories[tickPos],\n grid = axis.labelsGridPath,\n size = axis.groupSize(0),\n tickLen = axis.tickLength || size,\n tickWidth = axis.tickWidth,\n factor = axis.directionFactor,\n xy = tickPosition(tick, tickPos),\n start = horiz ? xy.y : xy.x,\n baseLine= axis.chart.renderer.fontMetrics(axis.options.labels.style.fontSize).b,\n depth = 1,\n\t // adjust grid lines for edges\n reverseCrisp = ((horiz && xy.x === axis.pos + axis.len) || (!horiz && xy.y === axis.pos)) ? -1 : 0,\n gridAttrs,\n lvlSize,\n minPos,\n maxPos,\n attrs,\n bBox;\n\n // render grid for \"normal\" categories (first-level), render left grid line only for the first category\n if (isFirst) {\n \t\n gridAttrs = horiz ?\n [axis.left, xy.y, axis.left, xy.y + axis.groupSize(true)] :\n axis.isXAxis ?\n [xy.x, axis.top, xy.x + axis.groupSize(true), axis.top] :\n [xy.x, axis.top + axis.len, xy.x + axis.groupSize(true), axis.top + axis.len];\n\n addGridPart(grid, gridAttrs, tickWidth);\n }\n\n \n\tif(horiz && axis.left < xy.x) {\n\t\t\taddGridPart(grid, [xy.x - reverseCrisp, xy.y, xy.x - reverseCrisp, xy.y + size], tickWidth);\n\t} else if(!horiz && axis.top <= xy.y){\n\t\t\taddGridPart(grid, [xy.x, xy.y + reverseCrisp, xy.x + size, xy.y + reverseCrisp], tickWidth);\n\t}\n\n size = start + size;\n\n function fixOffset(group, treeCat, tick){\n \t\tvar ret = 0;\n\t\t\tif(isFirst) {\n\t\t\t\t\tret = inArray(treeCat.name, treeCat.parent.categories);\n\t\t\t\t\tret = ret < 0 ? 0 : ret;\n\t\t\t\t\treturn ret;\n\t\t\t} \n\t\t\treturn ret;\n }\n\n\n while (group = group.parent) {\n \tvar fix = fixOffset(group, treeCat, tick),\n \t\t\tuserX = group.labelOffsets.x,\n \t\t\tuserY = group.labelOffsets.y;\n \t\n minPos = tickPosition(tick, mathMax(group.startAt - 1, min - 1));\n maxPos = tickPosition(tick, mathMin(group.startAt + group.leaves - 1 - fix, max));\n bBox = group.label.getBBox(true);\n lvlSize = axis.groupSize(depth);\n // check if on the edge to adjust\n reverseCrisp = ((horiz && maxPos.x === axis.pos + axis.len) || (!horiz && maxPos.y === axis.pos)) ? -1 : 0;\n\t\n attrs = horiz ? {\n x: (minPos.x + maxPos.x) / 2 + userX,\n y: size + lvlSize / 2 + baseLine - bBox.height / 2 - 4 + userY / 2\n } : {\n\t\t\tx: size + lvlSize / 2 + userX,\n\t\t\ty: (minPos.y + maxPos.y - bBox.height) / 2 + baseLine + userY\n\t\t};\n\n\t\tif(!isNaN(attrs.x) && !isNaN(attrs.y)){ \n\t\t\tgroup.label.attr(attrs);\n\t\n\t\t\tif (grid) {\n\t\t\t\tif(horiz && axis.left < maxPos.x) {\n\t\t\t\t\t\taddGridPart(grid, [maxPos.x - reverseCrisp, size, maxPos.x - reverseCrisp, size + lvlSize], tickWidth);\n\t\t\t\t} else if(!horiz && axis.top <= maxPos.y){\n\t\t\t\t\t\taddGridPart(grid, [size, maxPos.y + reverseCrisp, size + lvlSize, maxPos.y + reverseCrisp], tickWidth);\n\t\t\t\t}\n\t\t\t}\n }\n\n size += lvlSize;\n depth++;\n }\n};\n\ntickProto.destroy = function () {\n var group = this;\n\n while (group = group.parent)\n group.destroyed++ || (group.destroyed = 1);\n\n _tickDestroy.call(this);\n};\n\n// return size of the label (height for horizontal, width for vertical axes)\ntickProto.getLabelSize = function () {\n if (this.axis.isGrouped === true) {\n // #72, getBBox might need recalculating when chart is tall\n var size = _tickGetLabelSize.call(this) + 10,\n topLabelSize = this.axis.labelsSizes[0];\n if (topLabelSize < size) {\n this.axis.labelsSizes[0] = size;\n }\n\n return sum(this.axis.labelsSizes);\n } else\n return _tickGetLabelSize.call(this);\n};\n\n}(Highcharts));\n","/*\n Highcharts JS v7.2.1 (2019-10-31)\n\n (c) 2009-2018 Torstein Honsi\n\n License: www.highcharts.com/license\n*/\n(function(u){\"object\"===typeof module&&module.exports?(u[\"default\"]=u,module.exports=u):\"function\"===typeof define&&define.amd?define(\"highcharts/highcharts-more\",[\"highcharts\"],function(B){u(B);u.Highcharts=B;return u}):u(\"undefined\"!==typeof Highcharts?Highcharts:void 0)})(function(u){function B(b,a,h,g){b.hasOwnProperty(a)||(b[a]=g.apply(null,h))}u=u?u._modules:{};B(u,\"parts-more/Pane.js\",[u[\"parts/Globals.js\"],u[\"parts/Utilities.js\"]],function(b,a){function h(e,c){this.init(e,c)}var g=a.extend,\nm=a.splat,n=b.CenteredSeriesMixin,q=b.merge;g(h.prototype,{coll:\"pane\",init:function(e,c){this.chart=c;this.background=[];c.pane.push(this);this.setOptions(e)},setOptions:function(e){this.options=q(this.defaultOptions,this.chart.angular?{background:{}}:void 0,e)},render:function(){var e=this.options,c=this.options.background,a=this.chart.renderer;this.group||(this.group=a.g(\"pane-group\").attr({zIndex:e.zIndex||0}).add());this.updateCenter();if(c)for(c=m(c),e=Math.max(c.length,this.background.length||\n0),a=0;a-Math.PI/2&&p-Math.PI&&0>p||p>Math.PI?-10:10)}return a},getPlotLinePath:function(c){var d=this,k=d.center,r=d.chart,w=c.value;c=c.reverse;var l=d.getPosition(w),a=d.pane.options.background?d.pane.options.background[0]||d.pane.options.background:{},e=a.innerRadius||\"0%\",p=a.outerRadius||\"100%\";a=k[0]+r.plotLeft;k=k[1]+r.plotTop;var v=l.x;l=l.y;var t,f;if(d.isCircular){r=\"string\"===typeof e?b.relativeLength(e,\n1):e/Math.sqrt(Math.pow(v-a,2)+Math.pow(l-k,2));c=\"string\"===typeof p?b.relativeLength(p,1):p/Math.sqrt(Math.pow(v-a,2)+Math.pow(l-k,2));var g=[\"M\",a+r*(v-a),k-r*(k-l),\"L\",v-(1-c)*(v-a),l+(1-c)*(k-l)]}else\"circle\"===d.options.gridLineInterpolation?(w=d.translate(w),g=d.getLinePath(0,w)):(r.xAxis.forEach(function(k){k.pane===d.pane&&(t=k)}),g=[],w=d.translate(w),r=t.tickPositions,t.autoConnect&&(r=r.concat([r[0]])),c&&(r=[].concat(r).reverse()),r.forEach(function(d,k){f=t.getPosition(d,w);g.push(k?\n\"L\":\"M\",f.x,f.y)}));return g},getTitlePosition:function(){var c=this.center,d=this.chart,k=this.options.title;return{x:d.plotLeft+c[0]+(k.x||0),y:d.plotTop+c[1]-{high:.5,middle:.25,low:0}[k.align]*c[2]+(k.y||0)}},createLabelCollector:function(){var c=this;return function(){if(c.isRadial&&c.tickPositions&&!0!==c.options.labels.allowOverlap)return c.tickPositions.map(function(d){return c.ticks[d]&&c.ticks[d].label}).filter(function(d){return!!d})}}};a(n,\"init\",function(c){var d=this.chart,k=d.angular,\nr=d.polar,w=this.isXAxis,a=k&&w,l,e=d.options;c=c.userOptions.pane||0;c=this.pane=d.pane&&d.pane[c];if(\"colorAxis\"===this.coll)this.isRadial=!1;else{if(k){if(h(this,a?x:z),l=!w)this.defaultRadialOptions=this.defaultRadialGaugeOptions}else r&&(h(this,z),this.defaultRadialOptions=(l=w)?this.defaultRadialXOptions:q(this.defaultYAxisOptions,this.defaultRadialYOptions));k||r?(this.isRadial=!0,d.inverted=!1,e.chart.zoomType=null,this.labelCollector||(this.labelCollector=this.createLabelCollector()),this.labelCollector&&\nd.labelCollectors.push(this.labelCollector)):this.isRadial=!1;c&&l&&(c.axis=this);this.isCircular=l}});a(n,\"afterInit\",function(){var c=this.chart,d=this.options,k=this.pane,r=k&&k.options;c.angular&&this.isXAxis||!k||!c.angular&&!c.polar||(this.angleRad=(d.angle||0)*Math.PI/180,this.startAngleRad=(r.startAngle-90)*Math.PI/180,this.endAngleRad=(g(r.endAngle,r.startAngle+360)-90)*Math.PI/180,this.offset=d.offset||0)});a(n,\"autoLabelAlign\",function(c){this.isRadial&&(c.align=void 0,c.preventDefault())});\na(n,\"destroy\",function(){if(this.chart&&this.chart.labelCollectors){var c=this.chart.labelCollectors.indexOf(this.labelCollector);0<=c&&this.chart.labelCollectors.splice(c,1)}});a(c,\"afterGetPosition\",function(c){this.axis.getPosition&&h(c.pos,this.axis.getPosition(this.pos))});a(c,\"afterGetLabelPosition\",function(c){var d=this.axis,k=this.label,r=k.getBBox(),w=d.options.labels,a=w.y,l=20,e=w.align,v=(d.translate(this.pos)+d.startAngleRad+Math.PI/2)/Math.PI*180%360,p=Math.round(v),t=\"end\",f=0>p?p+\n360:p,m=f,h=0,n=0,z=null===w.y?.3*-r.height:0;if(d.isRadial){var x=d.getPosition(this.pos,d.center[2]/2+b.relativeLength(g(w.distance,-25),d.center[2]/2,-d.center[2]/2));\"auto\"===w.rotation?k.attr({rotation:v}):null===a&&(a=d.chart.renderer.fontMetrics(k.styles&&k.styles.fontSize).b-r.height/2);null===e&&(d.isCircular?(r.width>d.len*d.tickInterval/(d.max-d.min)&&(l=0),e=v>l&&v<180-l?\"left\":v>180+l&&v<360-l?\"right\":\"center\"):e=\"center\",k.attr({align:e}));if(\"auto\"===e&&2===d.tickPositions.length&&\nd.isCircular){90f?f=180-f:270=f&&(f=540-f);180=m&&(m=360-m);if(d.pane.options.startAngle===p||d.pane.options.startAngle===p+360||d.pane.options.startAngle===p-360)t=\"start\";e=-90<=p&&90>=p||-360<=p&&-270>=p||270<=p&&360>=p?\"start\"===t?\"right\":\"left\":\"start\"===t?\"left\":\"right\";70m&&(e=\"center\");15>f||180<=f&&195>f?h=.3*r.height:15<=f&&35>=f?h=\"start\"===t?0:.75*r.height:195<=f&&215>=f?h=\"start\"===t?.75*r.height:0:35=f?h=\"start\"===t?.25*-r.height:r.height:215=f&&(h=\"start\"===t?r.height:.25*-r.height);15>m?n=\"start\"===t?.15*-r.height:.15*r.height:165=m&&(n=\"start\"===t?.15*r.height:.15*-r.height);k.attr({align:e});k.translate(n,h+z)}c.pos.x=x.x+w.x;c.pos.y=x.y+a}});f(p,\"getMarkPath\",function(c,d,k,r,w,a,e){var l=this.axis;l.isRadial?(c=l.getPosition(this.pos,l.center[2]/2+r),d=[\"M\",d,k,\"L\",c.x,c.y]):d=c.call(this,d,k,r,w,a,e);return d})});B(u,\"parts-more/AreaRangeSeries.js\",[u[\"parts/Globals.js\"],u[\"parts/Utilities.js\"]],function(b,a){var h=\na.defined,g=a.extend,m=a.isArray,n=a.isNumber,q=a.pick;a=b.seriesType;var e=b.seriesTypes,c=b.Series.prototype,f=b.Point.prototype;a(\"arearange\",\"area\",{lineWidth:1,threshold:null,tooltip:{pointFormat:'\\u25cf {series.name}: {point.low} - {point.high}
'},trackByArea:!0,dataLabels:{align:null,verticalAlign:null,xLow:0,xHigh:0,yLow:0,yHigh:0}},{pointArrayMap:[\"low\",\"high\"],pointValKey:\"low\",deferTranslatePolar:!0,toYData:function(c){return[c.low,\nc.high]},highToXY:function(c){var a=this.chart,e=this.xAxis.postTranslate(c.rectPlotX,this.yAxis.len-c.plotHigh);c.plotHighX=e.x-a.plotLeft;c.plotHigh=e.y-a.plotTop;c.plotLowX=c.plotX},translate:function(){var c=this,a=c.yAxis,p=!!c.modifyValue;e.area.prototype.translate.apply(c);c.points.forEach(function(e){var f=e.high,l=e.plotY;e.isNull?e.plotY=null:(e.plotLow=l,e.plotHigh=a.translate(p?c.modifyValue(f,e):f,0,1,0,1),p&&(e.yBottom=e.plotHigh))});this.chart.polar&&this.points.forEach(function(a){c.highToXY(a);\na.tooltipPos=[(a.plotHighX+a.plotLowX)/2,(a.plotHigh+a.plotLow)/2]})},getGraphPath:function(c){var a=[],p=[],f,g=e.area.prototype.getGraphPath;var l=this.options;var d=this.chart.polar&&!1!==l.connectEnds,k=l.connectNulls,r=l.step;c=c||this.points;for(f=c.length;f--;){var w=c[f];w.isNull||d||k||c[f+1]&&!c[f+1].isNull||p.push({plotX:w.plotX,plotY:w.plotY,doCurve:!1});var F={polarPlotY:w.polarPlotY,rectPlotX:w.rectPlotX,yBottom:w.yBottom,plotX:q(w.plotHighX,w.plotX),plotY:w.plotHigh,isNull:w.isNull};\np.push(F);a.push(F);w.isNull||d||k||c[f-1]&&!c[f-1].isNull||p.push({plotX:w.plotX,plotY:w.plotY,doCurve:!1})}c=g.call(this,c);r&&(!0===r&&(r=\"left\"),l.step={left:\"right\",center:\"center\",right:\"left\"}[r]);a=g.call(this,a);p=g.call(this,p);l.step=r;l=[].concat(c,a);this.chart.polar||\"M\"!==p[0]||(p[0]=\"L\");this.graphPath=l;this.areaPath=c.concat(p);l.isArea=!0;l.xMap=c.xMap;this.areaPath.xMap=c.xMap;return l},drawDataLabels:function(){var a=this.points,e=a.length,f,b=[],h=this.options.dataLabels,l,d=\nthis.chart.inverted;if(m(h))if(1l.plotLow;l.y=l.high;l._plotY=l.plotY;l.plotY=l.plotHigh;b[f]=l.dataLabel;l.dataLabel=l.dataLabelUpper;l.below=w;d?k.align||(k.align=w?\"right\":\"left\"):k.verticalAlign||(k.verticalAlign=w?\"top\":\"bottom\")}this.options.dataLabels=k;c.drawDataLabels&&\nc.drawDataLabels.apply(this,arguments);for(f=e;f--;)if(l=a[f])l.dataLabelUpper=l.dataLabel,l.dataLabel=b[f],delete l.dataLabels,l.y=l.low,l.plotY=l._plotY}if(r.enabled||this._hasPointLabels){for(f=e;f--;)if(l=a[f])w=r.inside?l.plotHighl.plotLow,l.below=!w,d?r.align||(r.align=w?\"left\":\"right\"):r.verticalAlign||(r.verticalAlign=w?\"bottom\":\"top\");this.options.dataLabels=r;c.drawDataLabels&&c.drawDataLabels.apply(this,arguments)}if(k.enabled)for(f=e;f--;)if(l=a[f])l.dataLabels=[l.dataLabelUpper,\nl.dataLabel].filter(function(d){return!!d});this.options.dataLabels=h},alignDataLabel:function(){e.column.prototype.alignDataLabel.apply(this,arguments)},drawPoints:function(){var a=this.points.length,e;c.drawPoints.apply(this,arguments);for(e=0;ee&&(e*=-1,w-=e);n?(m=d.barX+g,d.shapeType=\"path\",d.shapeArgs={d:a.polarArc(w+e,w,m,m+d.pointWidth)}):(k.height=e,k.y=w,d.tooltipPos=b.inverted?[c.len+c.pos-b.plotLeft-w-e/2,f.len+f.pos-b.plotTop-k.x-k.width/2,e]:[f.left-b.plotLeft+k.x+k.width/2,c.pos-b.plotTop+w+e/2,e])})},directTouch:!0,trackerGroups:[\"group\",\"dataLabelsGroup\"],drawGraph:m,getSymbol:m,crispCol:function(){return q.crispCol.apply(this,arguments)},drawPoints:function(){return q.drawPoints.apply(this,\narguments)},drawTracker:function(){return q.drawTracker.apply(this,arguments)},getColumnMetrics:function(){return q.getColumnMetrics.apply(this,arguments)},pointAttribs:function(){return q.pointAttribs.apply(this,arguments)},animate:function(){return q.animate.apply(this,arguments)},polarArc:function(){return q.polarArc.apply(this,arguments)},translate3dPoints:function(){return q.translate3dPoints.apply(this,arguments)},translate3dShapes:function(){return q.translate3dShapes.apply(this,arguments)}},\n{setState:q.pointClass.prototype.setState});\"\"});B(u,\"parts-more/ColumnPyramidSeries.js\",[u[\"parts/Globals.js\"],u[\"parts/Utilities.js\"]],function(b,a){var h=a.pick;a=b.seriesType;var g=b.seriesTypes.column.prototype;a(\"columnpyramid\",\"column\",{},{translate:function(){var a=this,b=a.chart,q=a.options,e=a.dense=2>a.closestPointRange*a.xAxis.transA;e=a.borderWidth=h(q.borderWidth,e?0:1);var c=a.yAxis,f=q.threshold,v=a.translatedThreshold=c.getThreshold(f),t=h(q.minPointLength,5),p=a.getColumnMetrics(),\nx=p.width,z=a.barW=Math.max(x,1+2*e),l=a.pointXOffset=p.offset;b.inverted&&(v-=.5);q.pointPadding&&(z=Math.ceil(z));g.translate.apply(a);a.points.forEach(function(d){var k=h(d.yBottom,v),r=999+Math.abs(k),w=Math.min(Math.max(-r,d.plotY),c.len+r);r=d.plotX+l;var e=z/2,C=Math.min(w,k);k=Math.max(w,k)-C;d.barX=r;d.pointWidth=x;d.tooltipPos=b.inverted?[c.len+c.pos-b.plotLeft-w,a.xAxis.len-r-e,k]:[r+e,w+c.pos-b.plotTop,k];w=f+(d.total||d.y);\"percent\"===q.stacking&&(w=f+(0>d.y)?-100:100);w=c.toPixels(w,\n!0);var g=b.plotHeight-w-(b.plotHeight-v);var m=e*(C-w)/g;var p=e*(C+k-w)/g;g=r-m+e;m=r+m+e;var n=r+p+e;p=r-p+e;var E=C-t;var D=C+k;0>d.y&&(E=C,D=C+k+t);b.inverted&&(n=b.plotWidth-C,g=w-(b.plotWidth-v),m=e*(w-n)/g,p=e*(w-(n-k))/g,g=r+e+m,m=g-2*m,n=r-p+e,p=r+p+e,E=C,D=C+k-t,0>d.y&&(D=C+k+t));d.shapeType=\"path\";d.shapeArgs={x:g,y:E,width:m-g,height:k,d:[\"M\",g,E,\"L\",m,E,n,D,p,D,\"Z\"]}})}});\"\"});B(u,\"parts-more/GaugeSeries.js\",[u[\"parts/Globals.js\"],u[\"parts/Utilities.js\"]],function(b,a){var h=a.isNumber,\ng=a.pick,m=a.pInt,n=b.merge,q=b.Series;a=b.seriesType;var e=b.TrackerMixin;a(\"gauge\",\"line\",{dataLabels:{borderColor:\"#cccccc\",borderRadius:3,borderWidth:1,crop:!1,defer:!1,enabled:!0,verticalAlign:\"top\",y:15,zIndex:2},dial:{},pivot:{},tooltip:{headerFormat:\"\"},showInLegend:!1},{angular:!0,directTouch:!0,drawGraph:b.noop,fixedBox:!0,forceDL:!0,noSharedTooltip:!0,trackerGroups:[\"group\",\"dataLabelsGroup\"],translate:function(){var c=this.yAxis,a=this.options,e=c.center;this.generatePoints();this.points.forEach(function(f){var b=\nn(a.dial,f.dial),v=m(g(b.radius,\"80%\"))*e[2]/200,t=m(g(b.baseLength,\"70%\"))*v/100,l=m(g(b.rearLength,\"10%\"))*v/100,d=b.baseWidth||3,k=b.topWidth||1,r=a.overshoot,w=c.startAngleRad+c.translate(f.y,null,null,null,!0);h(r)?(r=r/180*Math.PI,w=Math.max(c.startAngleRad-r,Math.min(c.endAngleRad+r,w))):!1===a.wrap&&(w=Math.max(c.startAngleRad,Math.min(c.endAngleRad,w)));w=180*w/Math.PI;f.shapeType=\"path\";f.shapeArgs={d:b.path||[\"M\",-l,-d/2,\"L\",t,-d/2,v,-k/2,v,k/2,t,d/2,-l,d/2,\"z\"],translateX:e[0],translateY:e[1],\nrotation:w};f.plotX=e[0];f.plotY=e[1]})},drawPoints:function(){var c=this,a=c.chart,e=c.yAxis.center,b=c.pivot,m=c.options,h=m.pivot,q=a.renderer;c.points.forEach(function(e){var d=e.graphic,k=e.shapeArgs,r=k.d,w=n(m.dial,e.dial);d?(d.animate(k),k.d=r):e.graphic=q[e.shapeType](k).attr({rotation:k.rotation,zIndex:1}).addClass(\"highcharts-dial\").add(c.group);if(!a.styledMode)e.graphic[d?\"animate\":\"attr\"]({stroke:w.borderColor||\"none\",\"stroke-width\":w.borderWidth||0,fill:w.backgroundColor||\"#000000\"})});\nb?b.animate({translateX:e[0],translateY:e[1]}):(c.pivot=q.circle(0,0,g(h.radius,5)).attr({zIndex:2}).addClass(\"highcharts-pivot\").translate(e[0],e[1]).add(c.group),a.styledMode||c.pivot.attr({\"stroke-width\":h.borderWidth||0,stroke:h.borderColor||\"#cccccc\",fill:h.backgroundColor||\"#000000\"}))},animate:function(c){var a=this;c||(a.points.forEach(function(c){var e=c.graphic;e&&(e.attr({rotation:180*a.yAxis.startAngleRad/Math.PI}),e.animate({rotation:c.shapeArgs.rotation},a.options.animation))}),a.animate=\nnull)},render:function(){this.group=this.plotGroup(\"group\",\"series\",this.visible?\"visible\":\"hidden\",this.options.zIndex,this.chart.seriesGroup);q.prototype.render.call(this);this.group.clip(this.chart.clipRect)},setData:function(c,a){q.prototype.setData.call(this,c,!1);this.processData();this.generatePoints();g(a,!0)&&this.chart.redraw()},hasData:function(){return!!this.points.length},drawTracker:e&&e.drawTrackerPoint},{setState:function(c){this.state=c}});\"\"});B(u,\"parts-more/BoxPlotSeries.js\",[u[\"parts/Globals.js\"],\nu[\"parts/Utilities.js\"]],function(b,a){var h=a.pick;a=b.noop;var g=b.seriesType,m=b.seriesTypes;g(\"boxplot\",\"column\",{threshold:null,tooltip:{pointFormat:'\\u25cf {series.name}
Maximum: {point.high}
Upper quartile: {point.q3}
Median: {point.median}
Lower quartile: {point.q1}
Minimum: {point.low}
'},whiskerLength:\"50%\",fillColor:\"#ffffff\",lineWidth:1,medianWidth:2,whiskerWidth:2},{pointArrayMap:[\"low\",\"q1\",\"median\",\"q3\",\"high\"],\ntoYData:function(a){return[a.low,a.q1,a.median,a.q3,a.high]},pointValKey:\"high\",pointAttribs:function(){return{}},drawDataLabels:a,translate:function(){var a=this.yAxis,b=this.pointArrayMap;m.column.prototype.translate.apply(this);this.points.forEach(function(e){b.forEach(function(c){null!==e[c]&&(e[c+\"Plot\"]=a.translate(e[c],0,1,0,1))})})},drawPoints:function(){var a=this,b=a.options,e=a.chart,c=e.renderer,f,g,m,p,x,z,l=0,d,k,r,w,F=!1!==a.doQuartiles,C,H=a.options.whiskerLength;a.points.forEach(function(A){var v=\nA.graphic,t=v?\"animate\":\"attr\",n=A.shapeArgs,q={},G={},y={},I={},u=A.color||a.color;void 0!==A.plotY&&(d=n.width,k=Math.floor(n.x),r=k+d,w=Math.round(d/2),f=Math.floor(F?A.q1Plot:A.lowPlot),g=Math.floor(F?A.q3Plot:A.lowPlot),m=Math.floor(A.highPlot),p=Math.floor(A.lowPlot),v||(A.graphic=v=c.g(\"point\").add(a.group),A.stem=c.path().addClass(\"highcharts-boxplot-stem\").add(v),H&&(A.whiskers=c.path().addClass(\"highcharts-boxplot-whisker\").add(v)),F&&(A.box=c.path(void 0).addClass(\"highcharts-boxplot-box\").add(v)),\nA.medianShape=c.path(void 0).addClass(\"highcharts-boxplot-median\").add(v)),e.styledMode||(G.stroke=A.stemColor||b.stemColor||u,G[\"stroke-width\"]=h(A.stemWidth,b.stemWidth,b.lineWidth),G.dashstyle=A.stemDashStyle||b.stemDashStyle,A.stem.attr(G),H&&(y.stroke=A.whiskerColor||b.whiskerColor||u,y[\"stroke-width\"]=h(A.whiskerWidth,b.whiskerWidth,b.lineWidth),A.whiskers.attr(y)),F&&(q.fill=A.fillColor||b.fillColor||u,q.stroke=b.lineColor||u,q[\"stroke-width\"]=b.lineWidth||0,A.box.attr(q)),I.stroke=A.medianColor||\nb.medianColor||u,I[\"stroke-width\"]=h(A.medianWidth,b.medianWidth,b.lineWidth),A.medianShape.attr(I)),z=A.stem.strokeWidth()%2/2,l=k+w+z,A.stem[t]({d:[\"M\",l,g,\"L\",l,m,\"M\",l,f,\"L\",l,p]}),F&&(z=A.box.strokeWidth()%2/2,f=Math.floor(f)+z,g=Math.floor(g)+z,k+=z,r+=z,A.box[t]({d:[\"M\",k,g,\"L\",k,f,\"L\",r,f,\"L\",r,g,\"L\",k,g,\"z\"]})),H&&(z=A.whiskers.strokeWidth()%2/2,m+=z,p+=z,C=/%$/.test(H)?w*parseFloat(H)/100:H/2,A.whiskers[t]({d:[\"M\",l-C,m,\"L\",l+C,m,\"M\",l-C,p,\"L\",l+C,p]})),x=Math.round(A.medianPlot),z=A.medianShape.strokeWidth()%\n2/2,x+=z,A.medianShape[t]({d:[\"M\",k,x,\"L\",r,x]}))})},setStackedPoints:a});\"\"});B(u,\"parts-more/ErrorBarSeries.js\",[u[\"parts/Globals.js\"]],function(b){var a=b.noop,h=b.seriesType,g=b.seriesTypes;h(\"errorbar\",\"boxplot\",{color:\"#000000\",grouping:!1,linkedTo:\":previous\",tooltip:{pointFormat:'\\u25cf {series.name}: {point.low} - {point.high}
'},whiskerWidth:null},{type:\"errorbar\",pointArrayMap:[\"low\",\"high\"],toYData:function(a){return[a.low,a.high]},\npointValKey:\"high\",doQuartiles:!1,drawDataLabels:g.arearange?function(){var a=this.pointValKey;g.arearange.prototype.drawDataLabels.call(this);this.data.forEach(function(b){b.y=b[a]})}:a,getColumnMetrics:function(){return this.linkedParent&&this.linkedParent.columnMetrics||g.column.prototype.getColumnMetrics.call(this)}});\"\"});B(u,\"parts-more/WaterfallSeries.js\",[u[\"parts/Globals.js\"],u[\"parts/Utilities.js\"]],function(b,a){var h=a.arrayMax,g=a.arrayMin,m=a.isNumber,n=a.objectEach,q=a.pick,e=b.correctFloat;\na=b.addEvent;var c=b.Axis,f=b.Chart,v=b.Point,t=b.Series,p=b.StackItem,x=b.seriesType,z=b.seriesTypes;a(c,\"afterInit\",function(){this.isXAxis||(this.waterfallStacks={changed:!1})});a(f,\"beforeRedraw\",function(){for(var a=this.axes,d=this.series,k=d.length;k--;)d[k].options.stacking&&(a.forEach(function(d){d.isXAxis||(d.waterfallStacks.changed=!0)}),k=0)});a(c,\"afterRender\",function(){var a=this.options.stackLabels;a&&a.enabled&&this.waterfallStacks&&this.renderWaterfallStackTotals()});c.prototype.renderWaterfallStackTotals=\nfunction(){var a=this.waterfallStacks,d=this.stackTotalGroup,k=new p(this,this.options.stackLabels,!1,0,void 0);this.dummyStackItem=k;n(a,function(a){n(a,function(a){k.total=a.stackTotal;a.label&&(k.label=a.label);p.prototype.render.call(k,d);a.label=k.label;delete k.label})});k.total=null};x(\"waterfall\",\"column\",{dataLabels:{inside:!0},lineWidth:1,lineColor:\"#333333\",dashStyle:\"Dot\",borderColor:\"#333333\",states:{hover:{lineWidthPlus:0}}},{pointValKey:\"y\",showLine:!0,generatePoints:function(){var a;\nz.column.prototype.generatePoints.apply(this);var d=0;for(a=this.points.length;dn.height&&(n.y+=n.height,n.height*=-1);p.plotY=n.y=Math.round(n.y)-this.borderWidth%2/2;n.height=Math.max(Math.round(n.height),.001);p.yBottom=n.y+n.height;n.height<=c&&!p.isNull?(n.height=c,n.y-=e,p.plotY=n.y,p.minPointLengthOffset=\n0>p.y?-e:e):(p.isNull&&(n.width=0),p.minPointLengthOffset=0);n=p.plotY+(p.negative?n.height:0);this.chart.inverted?p.tooltipPos[0]=d.len-n:p.tooltipPos[1]=n}},processData:function(a){var d=this.options,k=this.yData,c=d.data,w=k.length,f=d.threshold||0,l,b,g,m,h;for(h=b=l=g=m=0;hv.y&&!b||0=a&&this.renderRange(d)},this);this.legendSymbol.add(this.legendItem);this.legendItem.add(this.legendGroup);this.hideOverlappingLabels()},\nrenderRange:function(d){var a=this.options,c=a.labels,k=this.chart.renderer,e=this.symbols,f=e.labels,b=d.center,g=Math.abs(d.radius),l=a.connectorDistance,h=c.align,m=c.style.fontSize;l=this.legend.options.rtl||\"left\"===h?-l:l;c=a.connectorWidth;var p=this.ranges[0].radius,v=b-g-a.borderWidth/2+c/2;m=m/2-(this.fontMetrics.h-m)/2;var t=k.styledMode;\"center\"===h&&(l=0,a.connectorDistance=0,d.labelStyle.align=\"center\");h=v+a.labels.y;var n=p+l+a.labels.x;e.bubbleItems.push(k.circle(p,b+((v%1?1:.5)-\n(c%2?0:.5)),g).attr(t?{}:d.bubbleStyle).addClass((t?\"highcharts-color-\"+this.options.seriesIndex+\" \":\"\")+\"highcharts-bubble-legend-symbol \"+(a.className||\"\")).add(this.legendSymbol));e.connectors.push(k.path(k.crispLine([\"M\",p,v,\"L\",p+l,v],a.connectorWidth)).attr(t?{}:d.connectorStyle).addClass((t?\"highcharts-color-\"+this.options.seriesIndex+\" \":\"\")+\"highcharts-bubble-legend-connectors \"+(a.connectorClassName||\"\")).add(this.legendSymbol));d=k.text(this.formatLabel(d),n,h+m).attr(t?{}:d.labelStyle).addClass(\"highcharts-bubble-legend-labels \"+\n(a.labels.className||\"\")).add(this.legendSymbol);f.push(d);d.placed=!0;d.alignAttr={x:n,y:h+m}},getMaxLabelSize:function(){var d,a;this.symbols.labels.forEach(function(c){a=c.getBBox(!0);d=d?a.width>d.width?a:d:a});return d||{}},formatLabel:function(d){var a=this.options,c=a.labels.formatter;return(a=a.labels.format)?b.format(a,d):c?c.call(d):p(d.value,1)},hideOverlappingLabels:function(){var d=this.chart,a=this.symbols;!this.options.labels.allowOverlap&&a&&(d.hideOverlappingLabels(a.labels),a.labels.forEach(function(d,\nc){d.newOpacity?d.newOpacity!==d.oldOpacity&&a.connectors[c].show():a.connectors[c].hide()}))},getRanges:function(){var d=this.legend.bubbleLegend,a=d.options.ranges,c,e=Number.MAX_VALUE,f=-Number.MAX_VALUE;d.chart.series.forEach(function(d){d.isBubble&&!d.ignoreSeries&&(c=d.zData.filter(m),c.length&&(e=q(d.options.zMin,Math.min(e,Math.max(g(c),!1===d.options.displayNegative?d.options.zThreshold:-Number.MAX_VALUE))),f=q(d.options.zMax,Math.max(f,h(c)))))});var b=e===f?[{value:f}]:[{value:e},{value:(e+\nf)/2},{value:f,autoRanges:!0}];a.length&&a[0].radius&&b.reverse();b.forEach(function(d,c){a&&a[c]&&(b[c]=x(!1,a[c],d))});return b},predictBubbleSizes:function(){var d=this.chart,a=this.fontMetrics,c=d.legend.options,e=\"horizontal\"===c.layout,f=e?d.legend.lastLineHeight:0,b=d.plotSizeX,g=d.plotSizeY,l=d.series[this.options.seriesIndex];d=Math.ceil(l.minPxSize);var h=Math.ceil(l.maxPxSize);l=l.options.maxSize;var m=Math.min(g,b);if(c.floating||!/%$/.test(l))a=h;else if(l=parseFloat(l),a=(m+f-a.h/2)*\nl/100/(l/100+1),e&&g-a>=b||!e&&b-a>=g)a=h;return[d,Math.ceil(a)]},updateRanges:function(d,a){var c=this.legend.options.bubbleLegend;c.minSize=d;c.maxSize=a;c.ranges=this.getRanges()},correctSizes:function(){var d=this.legend,a=this.chart.series[this.options.seriesIndex];1b.height&&(b.height=d[f].itemHeight);b.step=e}return a};e.prototype.retranslateItems=function(d){var a,c,e,k=this.options.rtl,f=0;this.allItems.forEach(function(b,r){a=b.legendGroup.translateX;c=b._legendItemPos[1];if((e=b.movementX)||k&&b.ranges)e=k?a-b.options.maxSize/2:a+e,b.legendGroup.attr({translateX:e});\nr>d[f].step&&f++;b.legendGroup.attr({translateY:Math.round(c+d[f].height/2)});b._legendItemPos[1]=c+d[f].height/2})};f(a,\"legendItemClick\",function(){var d=this.chart,a=this.visible,c=this.chart.legend;c&&c.bubbleLegend&&(this.visible=!a,this.ignoreSeries=a,d=0<=d.getVisibleBubbleSeriesIndex(),c.bubbleLegend.visible!==d&&(c.update({bubbleLegend:{enabled:d}}),c.bubbleLegend.visible=d),this.visible=a)});v(c.prototype,\"drawChartBox\",function(d,a,c){var e=this.legend,k=0<=this.getVisibleBubbleSeriesIndex();\nif(e&&e.options.enabled&&e.bubbleLegend&&e.options.bubbleLegend.autoRanges&&k){var f=e.bubbleLegend.options;k=e.bubbleLegend.predictBubbleSizes();e.bubbleLegend.updateRanges(k[0],k[1]);f.placed||(e.group.placed=!1,e.allItems.forEach(function(d){d.legendGroup.translateY=null}));e.render();this.getMargins();this.axes.forEach(function(d){d.visible&&d.render();f.placed||(d.setScale(),d.updateNames(),n(d.ticks,function(d){d.isNew=!0;d.isNewLabel=!0}))});f.placed=!0;this.getMargins();d.call(this,a,c);e.bubbleLegend.correctSizes();\ne.retranslateItems(e.getLinesHeights())}else d.call(this,a,c),e&&e.options.enabled&&e.bubbleLegend&&(e.render(),e.retranslateItems(e.getLinesHeights()))})});B(u,\"parts-more/BubbleSeries.js\",[u[\"parts/Globals.js\"],u[\"parts/Utilities.js\"]],function(b,a){var h=a.arrayMax,g=a.arrayMin,m=a.extend,n=a.isNumber,q=a.pick,e=a.pInt;a=b.Axis;var c=b.color,f=b.noop,v=b.Point,t=b.Series,p=b.seriesType,x=b.seriesTypes;p(\"bubble\",\"scatter\",{dataLabels:{formatter:function(){return this.point.z},inside:!0,verticalAlign:\"middle\"},\nanimationLimit:250,marker:{lineColor:null,lineWidth:1,fillOpacity:.5,radius:null,states:{hover:{radiusPlus:0}},symbol:\"circle\"},minSize:8,maxSize:\"20%\",softThreshold:!1,states:{hover:{halo:{size:5}}},tooltip:{pointFormat:\"({point.x}, {point.y}), Size: {point.z}\"},turboThreshold:0,zThreshold:0,zoneAxis:\"z\"},{pointArrayMap:[\"y\",\"z\"],parallelArrays:[\"x\",\"y\",\"z\"],trackerGroups:[\"group\",\"dataLabelsGroup\"],specialGroup:\"group\",bubblePadding:!0,zoneAxis:\"z\",directTouch:!0,isBubble:!0,pointAttribs:function(a,\ne){var d=this.options.marker.fillOpacity;a=t.prototype.pointAttribs.call(this,a,e);1!==d&&(a.fill=c(a.fill).setOpacity(d).get(\"rgba\"));return a},getRadii:function(a,c,d){var e=this.zData,f=this.yData,b=d.minPxSize,g=d.maxPxSize,l=[];var h=0;for(d=e.length;h=this.minPxSize/2?(e.marker=m(e.marker,{radius:f,width:2*f,height:2*f}),e.dlBox={x:e.plotX-f,y:e.plotY-f,width:2*f,height:2*f}):e.shapeArgs=e.plotY=e.dlBox=void 0}},alignDataLabel:x.column.prototype.alignDataLabel,buildKDTree:f,applyZones:f},{haloPath:function(a){return v.prototype.haloPath.call(this,0===a?0:(this.marker?this.marker.radius||0:0)+a)},ttBelow:!1});a.prototype.beforePadding=\nfunction(){var a=this,c=this.len,d=this.chart,f=0,b=c,m=this.isXAxis,p=m?\"xData\":\"yData\",t=this.min,v={},x=Math.min(d.plotWidth,d.plotHeight),u=Number.MAX_VALUE,B=-Number.MAX_VALUE,E=this.max-t,D=c/E,G=[];this.series.forEach(function(c){var f=c.options;!c.bubblePadding||!c.visible&&d.options.chart.ignoreHiddenSeries||(a.allowZoomOutside=!0,G.push(c),m&&([\"minSize\",\"maxSize\"].forEach(function(d){var a=f[d],c=/%$/.test(a);a=e(a);v[d]=c?x*a/100:a}),c.minPxSize=v.minSize,c.maxPxSize=Math.max(v.maxSize,\nv.minSize),c=c.zData.filter(n),c.length&&(u=q(f.zMin,Math.min(u,Math.max(g(c),!1===f.displayNegative?f.zThreshold:-Number.MAX_VALUE))),B=q(f.zMax,Math.max(B,h(c))))))});G.forEach(function(d){var c=d[p],e=c.length;m&&d.getRadii(u,B,d);if(0a?1:0)},barycenter:function(){var a=this.options.gravitationalConstant,b=this.barycenter.xFactor,g=this.barycenter.yFactor;b=(b-(this.box.left+this.box.width)/2)*a;g=(g-(this.box.top+this.box.height)/2)*a;this.nodes.forEach(function(a){a.fixedPosition||\n(a.plotX-=b/a.mass/a.degree,a.plotY-=g/a.mass/a.degree)})},repulsive:function(a,b,g){b=b*this.diffTemperature/a.mass/a.degree;a.fixedPosition||(a.plotX+=g.x*b,a.plotY+=g.y*b)},attractive:function(a,b,g){var h=a.getMass(),n=-g.x*b*this.diffTemperature;b=-g.y*b*this.diffTemperature;a.fromNode.fixedPosition||(a.fromNode.plotX-=n*h.fromNode/a.fromNode.degree,a.fromNode.plotY-=b*h.fromNode/a.fromNode.degree);a.toNode.fixedPosition||(a.toNode.plotX+=n*h.toNode/a.toNode.degree,a.toNode.plotY+=b*h.toNode/\na.toNode.degree)},integrate:function(a,b){var g=-a.options.friction,m=a.options.maxSpeed,h=(b.plotX+b.dispX-b.prevX)*g;g*=b.plotY+b.dispY-b.prevY;var q=Math.abs,e=q(h)/(h||1);q=q(g)/(g||1);h=e*Math.min(m,Math.abs(h));g=q*Math.min(m,Math.abs(g));b.prevX=b.plotX+b.dispX;b.prevY=b.plotY+b.dispY;b.plotX+=h;b.plotY+=g;b.temperature=a.vectorLength({x:h,y:g})},getK:function(a){return Math.pow(a.box.width*a.box.height/a.nodes.length,.5)}},euler:{attractiveForceFunction:function(a,b){return a*a/b},repulsiveForceFunction:function(a,\nb){return b*b/a},barycenter:function(){var a=this.options.gravitationalConstant,b=this.barycenter.xFactor,g=this.barycenter.yFactor;this.nodes.forEach(function(m){if(!m.fixedPosition){var h=m.getDegree();h*=1+h/2;m.dispX+=(b-m.plotX)*a*h/m.degree;m.dispY+=(g-m.plotY)*a*h/m.degree}})},repulsive:function(a,b,g,m){a.dispX+=g.x/m*b/a.degree;a.dispY+=g.y/m*b/a.degree},attractive:function(a,b,g,m){var h=a.getMass(),q=g.x/m*b;b*=g.y/m;a.fromNode.fixedPosition||(a.fromNode.dispX-=q*h.fromNode/a.fromNode.degree,\na.fromNode.dispY-=b*h.fromNode/a.fromNode.degree);a.toNode.fixedPosition||(a.toNode.dispX+=q*h.toNode/a.toNode.degree,a.toNode.dispY+=b*h.toNode/a.toNode.degree)},integrate:function(a,b){b.dispX+=b.dispX*a.options.friction;b.dispY+=b.dispY*a.options.friction;var g=b.temperature=a.vectorLength({x:b.dispX,y:b.dispY});0!==g&&(b.plotX+=b.dispX/g*Math.min(Math.abs(b.dispX),a.temperature),b.plotY+=b.dispY/g*Math.min(Math.abs(b.dispY),a.temperature))},getK:function(a){return Math.pow(a.box.width*a.box.height/\na.nodes.length,.3)}}}});B(u,\"modules/networkgraph/QuadTree.js\",[u[\"parts/Globals.js\"],u[\"parts/Utilities.js\"]],function(b,a){a=a.extend;var h=b.QuadTreeNode=function(a){this.box=a;this.boxSize=Math.min(a.width,a.height);this.nodes=[];this.body=this.isInternal=!1;this.isEmpty=!0};a(h.prototype,{insert:function(a,b){this.isInternal?this.nodes[this.getBoxPosition(a)].insert(a,b-1):(this.isEmpty=!1,this.body?b?(this.isInternal=!0,this.divideBox(),!0!==this.body&&(this.nodes[this.getBoxPosition(this.body)].insert(this.body,\nb-1),this.body=!0),this.nodes[this.getBoxPosition(a)].insert(a,b-1)):(b=new h({top:a.plotX,left:a.plotY,width:.1,height:.1}),b.body=a,b.isInternal=!1,this.nodes.push(b)):(this.isInternal=!1,this.body=a))},updateMassAndCenter:function(){var a=0,b=0,h=0;this.isInternal?(this.nodes.forEach(function(g){g.isEmpty||(a+=g.mass,b+=g.plotX*g.mass,h+=g.plotY*g.mass)}),b/=a,h/=a):this.body&&(a=this.body.mass,b=this.body.plotX,h=this.body.plotY);this.mass=a;this.plotX=b;this.plotY=h},divideBox:function(){var a=\nthis.box.width/2,b=this.box.height/2;this.nodes[0]=new h({left:this.box.left,top:this.box.top,width:a,height:b});this.nodes[1]=new h({left:this.box.left+a,top:this.box.top,width:a,height:b});this.nodes[2]=new h({left:this.box.left+a,top:this.box.top+b,width:a,height:b});this.nodes[3]=new h({left:this.box.left,top:this.box.top+b,width:a,height:b})},getBoxPosition:function(a){var b=a.plotY\nMath.abs(this.systemTemperature-this.prevSystemTemperature)||0>=this.temperature},getSystemTemperature:function(){return this.nodes.reduce(function(a,c){return a+c.temperature},0)},vectorLength:function(a){return Math.sqrt(a.x*a.x+a.y*a.y)},getDistR:function(a,c){a=this.getDistXY(a,c);return this.vectorLength(a)},getDistXY:function(a,c){var b=a.plotX-c.plotX;a=a.plotY-c.plotY;return{x:b,y:a,absX:Math.abs(b),absY:Math.abs(a)}}});a(q,\"predraw\",function(){this.graphLayoutsLookup&&this.graphLayoutsLookup.forEach(function(a){a.stop()})});\na(q,\"render\",function(){function a(a){a.maxIterations--&&isFinite(a.temperature)&&!a.isStable()&&!a.options.enableSimulation&&(a.beforeStep&&a.beforeStep(),a.step(),b=!1,c=!0)}var c=!1;if(this.graphLayoutsLookup){n(!1,this);for(this.graphLayoutsLookup.forEach(function(a){a.start()});!b;){var b=!0;this.graphLayoutsLookup.forEach(a)}c&&this.series.forEach(function(a){a&&a.layout&&a.render()})}})});B(u,\"modules/networkgraph/draggable-nodes.js\",[u[\"parts/Globals.js\"]],function(b){var a=b.Chart,h=b.addEvent;\nb.dragNodesMixin={onMouseDown:function(a,b){b=this.chart.pointer.normalize(b);a.fixedPosition={chartX:b.chartX,chartY:b.chartY,plotX:a.plotX,plotY:a.plotY};a.inDragMode=!0},onMouseMove:function(a,b){if(a.fixedPosition&&a.inDragMode){var g=this.chart,h=g.pointer.normalize(b);b=a.fixedPosition.chartX-h.chartX;h=a.fixedPosition.chartY-h.chartY;if(5b&&(d.degree+=.01,d.neighbours++,c=a.repulsiveForce(-b/Math.sqrt(d.neighbours),a.k,d,k)),a.force(\"repulsive\",d,c*k.mass,e,k,b))})})},\napplyLimitBox:function(a){if(this.options.splitSeries&&!a.isParentNode&&this.options.parentNodeLimit){var d=this.getDistXY(a,a.series.parentNode);var c=a.series.parentNodeRadius-a.marker.radius-this.vectorLength(d);0>c&&c>-2*a.marker.radius&&(a.plotX-=.01*d.x,a.plotY-=.01*d.y)}x.prototype.applyLimitBox.apply(this,arguments)},isStable:function(){return.00001>Math.abs(this.systemTemperature-this.prevSystemTemperature)||0>=this.temperature||0this.systemTemperature/this.nodes.length&&\nthis.enableSimulation}});a(\"packedbubble\",\"bubble\",{minSize:\"10%\",maxSize:\"50%\",sizeBy:\"area\",zoneAxis:\"y\",tooltip:{pointFormat:\"Value: {point.value}\"},draggable:!0,useSimulation:!0,dataLabels:{formatter:function(){return this.point.value},parentNodeFormatter:function(){return this.name},parentNodeTextPath:{enabled:!0},padding:0},layoutAlgorithm:{initialPositions:\"circle\",initialPositionRadius:20,bubblePadding:5,parentNodeLimit:!1,seriesInteraction:!0,dragBetweenSeries:!1,parentNodeOptions:{maxIterations:400,\ngravitationalConstant:.03,maxSpeed:50,initialPositionRadius:100,seriesInteraction:!0,marker:{fillColor:null,fillOpacity:1,lineWidth:1,lineColor:null,symbol:\"circle\"}},enableSimulation:!0,type:\"packedbubble\",integration:\"packedbubble\",maxIterations:1E3,splitSeries:!1,maxSpeed:5,gravitationalConstant:.01,friction:-.981}},{hasDraggableNodes:!0,forces:[\"barycenter\",\"repulsive\"],pointArrayMap:[\"value\"],pointValKey:\"value\",isCartesian:!1,axisTypes:[],noSharedTooltip:!0,accumulateAllPoints:function(a){var d=\na.chart,c=[],b,e;for(b=0;bMath.sqrt(d*d+b*b)-Math.abs(a[2]+c[2])},positionBubble:function(a,c,b){var d=Math.sqrt,e=Math.asin,f=Math.acos,k=Math.pow,h=Math.abs;d=d(k(a[0]-c[0],2)+\nk(a[1]-c[1],2));f=f((k(d,2)+k(b[2]+c[2],2)-k(b[2]+a[2],2))/(2*(b[2]+c[2])*d));e=e(h(a[0]-c[0])/d);a=(0>a[1]-c[1]?0:Math.PI)+f+e*(0>(a[0]-c[0])*(a[1]-c[1])?1:-1);return[c[0]+(c[2]+b[2])*Math.sin(a),c[1]-(c[2]+b[2])*Math.cos(a),b[2],b[3],b[4]]},placeBubbles:function(a){var c=this.checkOverlap,d=this.positionBubble,b=[],e=1,f=0,h=0;var g=[];var l;a=a.sort(function(a,c){return c[2]-a[2]});if(a.length){b.push([[0,0,a[0][2],a[0][3],a[0][4]]]);if(1e&&(e=a),ad&&(f.series.addPoint(b.merge(a.options,{plotX:a.plotX,plotY:a.plotY}),\n!1),e.removeElementFromCollection(a,e.nodes),a.remove()))});l.onMouseUp.apply(this,arguments)}},destroy:function(){this.chart.graphLayoutsLookup&&this.chart.graphLayoutsLookup.forEach(function(a){a.removeElementFromCollection(this,a.series)},this);this.parentNode&&(this.parentNodeLayout.removeElementFromCollection(this.parentNode,this.parentNodeLayout.nodes),this.parentNode.dataLabel&&(this.parentNode.dataLabel=this.parentNode.dataLabel.destroy()));b.Series.prototype.destroy.apply(this,arguments)},\nalignDataLabel:b.Series.prototype.alignDataLabel},{destroy:function(){this.series.layout&&this.series.layout.removeElementFromCollection(this,this.series.layout.nodes);return c.prototype.destroy.apply(this,arguments)}});f(t,\"beforeRedraw\",function(){this.allDataPoints&&delete this.allDataPoints});\"\"});B(u,\"parts-more/Polar.js\",[u[\"parts/Globals.js\"],u[\"parts/Utilities.js\"]],function(b,a){var h=a.pick,g=a.splat,m=b.Series,n=b.seriesTypes;a=b.wrap;var q=m.prototype,e=b.Pointer.prototype;q.searchPointByAngle=\nfunction(a){var c=this.chart,b=this.xAxis.pane.center;return this.searchKDTree({clientX:180+-180/Math.PI*Math.atan2(a.chartX-b[0]-c.plotLeft,a.chartY-b[1]-c.plotTop)})};q.getConnectors=function(a,b,e,h){var c=h?1:0;var f=0<=b&&b<=a.length-1?b:0>b?a.length-1+b:0;b=0>f-1?a.length-(1+c):f-1;c=f+1>a.length-1?c:f+1;var g=a[b];c=a[c];var l=g.plotX;g=g.plotY;var d=c.plotX;var k=c.plotY;c=a[f].plotX;f=a[f].plotY;l=(1.5*c+l)/2.5;g=(1.5*f+g)/2.5;d=(1.5*c+d)/2.5;var t=(1.5*f+k)/2.5;k=Math.sqrt(Math.pow(l-c,\n2)+Math.pow(g-f,2));var m=Math.sqrt(Math.pow(d-c,2)+Math.pow(t-f,2));l=Math.atan2(g-f,l-c);t=Math.PI/2+(l+Math.atan2(t-f,d-c))/2;Math.abs(l-t)>Math.PI/2&&(t-=Math.PI);l=c+Math.cos(t)*k;g=f+Math.sin(t)*k;d=c+Math.cos(Math.PI+t)*m;t=f+Math.sin(Math.PI+t)*m;c={rightContX:d,rightContY:t,leftContX:l,leftContY:g,plotX:c,plotY:f};e&&(c.prevPointCont=this.getConnectors(a,b,!1,h));return c};q.toXY=function(a){var c=this.chart,b=a.plotX;var e=a.plotY;a.rectPlotX=b;a.rectPlotY=e;e=this.xAxis.postTranslate(a.plotX,\nthis.yAxis.len-e);a.plotX=a.polarPlotX=e.x-c.plotLeft;a.plotY=a.polarPlotY=e.y-c.plotTop;this.kdByAngle?(c=(b/Math.PI*180+this.xAxis.pane.options.startAngle)%360,0>c&&(c+=360),a.clientX=c):a.clientX=a.plotX};n.spline&&(a(n.spline.prototype,\"getPointSpline\",function(a,b,e,g){this.chart.polar?g?(a=this.getConnectors(b,g,!0,this.connectEnds),a=[\"C\",a.prevPointCont.rightContX,a.prevPointCont.rightContY,a.leftContX,a.leftContY,a.plotX,a.plotY]):a=[\"M\",e.plotX,e.plotY]:a=a.call(this,b,e,g);return a}),n.areasplinerange&&\n(n.areasplinerange.prototype.getPointSpline=n.spline.prototype.getPointSpline));b.addEvent(m,\"afterTranslate\",function(){var a=this.chart,e;if(a.polar&&this.xAxis){(this.kdByAngle=a.tooltip&&a.tooltip.shared)?this.searchPoint=this.searchPointByAngle:this.options.findNearestPointBy=\"xy\";if(!this.preventPostTranslate){var g=this.points;for(e=g.length;e--;)this.toXY(g[e]),!a.hasParallelCoordinates&&!this.yAxis.reversed&&g[e].yb.center[1]}}}),a(n,\"alignDataLabel\",function(a,\nb,e,g,h,m){this.chart.polar?(a=b.rectPlotX/Math.PI*180,null===g.align&&(g.align=20a?\"left\":200a?\"right\":\"center\"),null===g.verticalAlign&&(g.verticalAlign=45>a||315a?\"top\":\"middle\"),q.alignDataLabel.call(this,b,e,g,h,m)):a.call(this,b,e,g,h,m)}));a(e,\"getCoordinates\",function(a,b){var c=this.chart,e={xAxis:[],yAxis:[]};c.polar?c.axes.forEach(function(a){var f=a.isXAxis,g=a.center;if(\"colorAxis\"!==a.coll){var h=b.chartX-g[0]-c.plotLeft;g=b.chartY-g[1]-c.plotTop;\ne[f?\"xAxis\":\"yAxis\"].push({axis:a,value:a.translate(f?Math.PI-Math.atan2(h,g):Math.sqrt(Math.pow(h,2)+Math.pow(g,2)),!0)})}}):e=a.call(this,b);return e});b.SVGRenderer.prototype.clipCircle=function(a,e,g){var c=b.uniqueKey(),f=this.createElement(\"clipPath\").attr({id:c}).add(this.defs);a=this.circle(a,e,g).add(f);a.id=c;a.clipPath=f;return a};b.addEvent(b.Chart,\"getAxes\",function(){this.pane||(this.pane=[]);g(this.options.pane).forEach(function(a){new b.Pane(a,this)},this)});b.addEvent(b.Chart,\"afterDrawChartBox\",\nfunction(){this.pane.forEach(function(a){a.render()})});a(b.Chart.prototype,\"get\",function(a,e){return b.find(this.pane,function(a){return a.options.id===e})||a.call(this,e)})});B(u,\"masters/highcharts-more.src.js\",[],function(){})});\n//# sourceMappingURL=highcharts-more.js.map","/*\n Highcharts JS v6.1.4 (2018-09-25)\n\n Support for parallel coordinates in Highcharts\n\n (c) 2010-2017 Pawel Fus\n\n License: www.highcharts.com/license\n*/\n(function(e){\"object\"===typeof module&&module.exports?module.exports=e:\"function\"===typeof define&&define.amd?define(function(){return e}):e(Highcharts)})(function(e){(function(b){function e(a){var c=this.series&&this.series.chart,k=a.apply(this,Array.prototype.slice.call(arguments,1)),f,e,d;c&&c.hasParallelCoordinates&&!n(k.formattedValue)&&(d=c.yAxis[this.x],f=d.options,c=(e=r(f.tooltipValueFormat,f.labels.format))?b.format(e,p(this,{value:this.y}),c.time):d.isDatetimeAxis?c.time.dateFormat(f.dateTimeLabelFormats[d.tickPositions.info.unitName],\n this.y):f.categories?f.categories[this.y]:this.y,k.formattedValue=k.point.formattedValue=c);return k}var t=b.Axis,q=b.Chart,y=b.Series.prototype,z=q.prototype,u=b.Axis.prototype,l=b.addEvent,r=b.pick,g=b.each,v=b.wrap,m=b.merge,A=b.erase,w=b.splat,p=b.extend,n=b.defined,B=b.arrayMin,C=b.arrayMax,x={lineWidth:0,tickLength:0,opposite:!0,type:\"category\"};b.setOptions({chart:{parallelCoordinates:!1,parallelAxes:{lineWidth:1,title:{text:\"\",reserveSpace:!1},labels:{x:0,y:4,align:\"center\",reserveSpace:!1},\n offset:0}}});l(q,\"init\",function(a){a=a.args[0];var c=w(a.yAxis||{}),k=c.length,b=[];if(this.hasParallelCoordinates=a.chart&&a.chart.parallelCoordinates){for(this.setParallelInfo(a);k<=this.parallelInfo.counter;k++)b.push({});a.legend||(a.legend={});void 0===a.legend.enabled&&(a.legend.enabled=!1);m(!0,a,{boost:{seriesThreshold:Number.MAX_SAFE_INTEGER},plotOptions:{series:{boostThreshold:Number.MAX_SAFE_INTEGER}}});a.yAxis=c.concat(b);a.xAxis=m(x,w(a.xAxis||{})[0])}});l(q,\"update\",function(a){a=a.options;\n a.chart&&(n(a.chart.parallelCoordinates)&&(this.hasParallelCoordinates=a.chart.parallelCoordinates),this.hasParallelCoordinates&&a.chart.parallelAxes&&(this.options.chart.parallelAxes=m(this.options.chart.parallelAxes,a.chart.parallelAxes),g(this.yAxis,function(a){a.update({},!1)})))});p(z,{setParallelInfo:function(a){var c=this;a=a.series;c.parallelInfo={counter:0};g(a,function(a){a.data&&(c.parallelInfo.counter=Math.max(c.parallelInfo.counter,a.data.length-1))})}});u.keepProps.push(\"parallelPosition\");\n l(t,\"afterSetOptions\",function(a){var c=this.chart,b=[\"left\",\"width\",\"height\",\"top\"];c.hasParallelCoordinates&&(c.inverted&&(b=b.reverse()),this.isXAxis?this.options=m(this.options,x,a.userOptions):(this.options=m(this.options,this.chart.options.chart.parallelAxes,a.userOptions),this.parallelPosition=r(this.parallelPosition,c.yAxis.length),this.setParallelPosition(b,this.options)))});l(t,\"getSeriesExtremes\",function(a){if(this.chart&&this.chart.hasParallelCoordinates&&!this.isXAxis){var c=this.parallelPosition,\n b=[];g(this.series,function(a){n(a.yData[c])&&b.push(a.yData[c])});this.dataMin=B(b);this.dataMax=C(b);a.preventDefault()}});p(u,{setParallelPosition:function(a,c){var b=(this.parallelPosition+.5)/(this.chart.parallelInfo.counter+1);this.chart.polar?c.angle=360*b:(c[a[0]]=100*b+\"%\",this[a[1]]=c[a[1]]=0,this[a[2]]=c[a[2]]=null,this[a[3]]=c[a[3]]=null)}});v(y,\"bindAxes\",function(a){if(this.chart.hasParallelCoordinates){var b=this;g(this.chart.axes,function(a){b.insert(a.series);a.isDirty=!0});b.xAxis=\n this.chart.xAxis[0];b.yAxis=this.chart.yAxis[0]}else a.apply(this,Array.prototype.slice.call(arguments,1))});l(b.Series,\"afterTranslate\",function(){var a=this.chart,b=this.points,e=b&&b.length,f=Number.MAX_VALUE,g,d,h;if(this.chart.hasParallelCoordinates){for(h=0;h #wrapper\").height() - 61;\n $(\".sidebard-panel\").css(\"min-height\", heightWithoutNavbar + \"px\");\n\n var navbarHeigh = $('nav.navbar-default').height();\n var wrapperHeigh = $('#page-wrapper').height();\n\n if(navbarHeigh > wrapperHeigh){\n $('#page-wrapper').css(\"min-height\", navbarHeigh + \"px\");\n }\n\n if(navbarHeigh < wrapperHeigh){\n $('#page-wrapper').css(\"min-height\", $(window).height() + \"px\");\n }\n\n if ($('body').hasClass('fixed-nav')) {\n if (navbarHeigh > wrapperHeigh) {\n $('#page-wrapper').css(\"min-height\", navbarHeigh - 60 + \"px\");\n } else {\n $('#page-wrapper').css(\"min-height\", $(window).height() - 60 + \"px\");\n }\n }\n\n }\n\n $(window).bind(\"load resize scroll\", function() {\n if(!$(\"body\").hasClass('body-small')) {\n fix_height();\n }\n })\n\n // Move right sidebar top after scroll\n $(window).scroll(function(){\n if ($(window).scrollTop() > 0 && !$('body').hasClass('fixed-nav') ) {\n $('#right-sidebar').addClass('sidebar-top');\n } else {\n $('#right-sidebar').removeClass('sidebar-top');\n }\n });\n\n setTimeout(function(){\n fix_height();\n });\n\n});\n\nfunction animationHover(element, animation) {\n element = $(element);\n element.hover(\n function () {\n element.addClass('animated ' + animation);\n },\n function () {\n //wait for animation to finish before removing classes\n window.setTimeout(function () {\n element.removeClass('animated ' + animation);\n }, 2000);\n });\n}\n\n// Minimalize menu when screen is less than 768px\n$(function() {\n $(window).bind(\"load resize\", function() {\n if ($(document).width() < 769) {\n $('body').addClass('body-small')\n } else {\n $('body').removeClass('body-small')\n }\n })\n})\n","!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e(require(\"angular\")):\"function\"==typeof define&&define.amd?define([\"angular\"],e):\"object\"==typeof exports?exports[\"ng-table\"]=e(require(\"angular\")):t[\"ng-table\"]=e(t.angular)}(this,function(t){return function(t){function e(r){if(n[r])return n[r].exports;var a=n[r]={i:r,l:!1,exports:{}};return t[r].call(a.exports,a,a.exports,e),a.l=!0,a.exports}var n={};return e.m=t,e.c=n,e.i=function(t){return t},e.d=function(t,n,r){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:r})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,\"a\",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p=\"\",e(e.s=51)}([function(e,n){e.exports=t},function(t,e,n){\"use strict\";function r(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}var a=n(0),i=n(3),s=n(37),o=n(7),l=n(10),u=n(9),c=n(8),p=a.module(\"ngTable-core\",[]).provider(\"ngTableDefaultGetData\",i.NgTableDefaultGetDataProvider).factory(\"ngTableDefaultGetGroups\",s.ngTableDefaultGetGroups).value(\"ngTableDefaults\",o.ngTableDefaults).service(\"ngTableEventsChannel\",c.NgTableEventsChannel).service(\"ngTableSettings\",l.NgTableSettings).run(u.NgTableParams.init);e.ngTableCoreModule=p,p.value(\"NgTableParams\",u.NgTableParams);var g=n(7);e.IDefaults=g.IDefaults,r(n(8));var f=n(10);e.ISettings=f.ISettings,r(n(9)),r(n(3)),r(n(36)),r(n(39)),r(n(40)),r(n(41))},function(t,e,n){\"use strict\";function r(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}var a=n(0),i=n(13),s=n(14),o=n(15),l=n(16);e.NgTableController=l.NgTableController;var u=n(17),c=n(18);e.NgTableFilterConfigProvider=c.NgTableFilterConfigProvider,e.NgTableFilterConfig=c.NgTableFilterConfig;var p=n(19),g=n(20),f=n(21),h=n(22),m=n(23),d=n(24),b=n(25),v=n(26);n(43),n(45),n(44),n(46),n(49),n(48);var $=a.module(\"ngTable-browser\",[]).directive(\"ngTable\",i.ngTable).service(\"ngTableColumn\",s.NgTableColumn).directive(\"ngTableColumnsBinding\",o.ngTableColumnsBinding).controller(\"ngTableController\",l.NgTableController).directive(\"ngTableDynamic\",u.ngTableDynamic).provider(\"ngTableFilterConfig\",c.NgTableFilterConfigProvider).directive(\"ngTableFilterRow\",p.ngTableFilterRow).controller(\"ngTableFilterRowController\",g.NgTableFilterRowController).directive(\"ngTableGroupRow\",f.ngTableGroupRow).controller(\"ngTableGroupRowController\",h.NgTableGroupRowController).directive(\"ngTablePagination\",m.ngTablePagination).directive(\"ngTableSelectFilterDs\",d.ngTableSelectFilterDs).directive(\"ngTableSorterRow\",b.ngTableSorterRow).controller(\"ngTableSorterRowController\",v.NgTableSorterRowController);e.ngTableBrowserModule=$,r(n(27))},function(t,e,n){\"use strict\";function r(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}r(n(28)),r(n(29)),r(n(30)),r(n(31)),r(n(32))},function(t,e){\"use strict\"},function(t,e){\"use strict\"},function(t,e){\"use strict\"},function(t,e){\"use strict\";e.ngTableDefaults={params:{},settings:{}}},function(t,e,n){\"use strict\";var r=n(0),a=function(){function t(t){this.$rootScope=t;var e=this;e=this.addTableParamsEvent(\"afterCreated\",e),e=this.addTableParamsEvent(\"afterReloadData\",e),e=this.addTableParamsEvent(\"datasetChanged\",e),e=this.addTableParamsEvent(\"pagesChanged\",e),e=this.addTableParamsEvent(\"afterDataFiltered\",e),e=this.addTableParamsEvent(\"afterDataSorted\",e)}return t.prototype.addTableParamsEvent=function(t,e){var n=t.charAt(0).toUpperCase()+t.substring(1),a=(i={},i[\"on\"+n]=this.createEventSubscriptionFn(t),i[\"publish\"+n]=this.createPublishEventFn(t),i);return r.extend(e,a);var i},t.prototype.createPublishEventFn=function(t){var e=this;return function(){for(var n=[],r=0;r1){l.push({type:\"prev\",number:Math.max(1,t-1),active:t>1}),l.push({type:\"first\",number:1,active:t>1,current:1===t}),i=Math.round((this._settings.paginationMaxBlocks-this._settings.paginationMinBlocks)/2),s=Math.max(2,t-i),a=Math.min(o-1,t+2*i-(t-s)),s=Math.max(2,s-(2*i-(a-s)));for(var u=s;u<=a;)u===s&&2!==u||u===a&&u!==o-1?l.push({type:\"more\",active:!1}):l.push({type:\"page\",number:u,active:t!==u,current:t===u}),u++;l.push({type:\"last\",number:o,active:t!==o,current:t===o}),l.push({type:\"next\",number:Math.min(o,t+1),active:t0},t.prototype.hasFilterChanges=function(){var t=this.prevParamsMemento&&this.prevParamsMemento.params.filter;return!a.equals(this._params.filter,t)||this.hasGlobalSearchFieldChanges()},t.prototype.hasGroup=function(t,e){return null==t?i.isGroupingFun(this._params.group)||Object.keys(this._params.group).length>0:i.isGroupingFun(t)?null==e?this._params.group===t:this._params.group===t&&t.sortDirection===e:null==e?Object.keys(this._params.group).indexOf(t)!==-1:this._params.group[t]===e},t.prototype.isDataReloadRequired=function(){return!this.isCommittedDataset||!a.equals(this.createComparableParams(),this.prevParamsMemento)||this.hasGlobalSearchFieldChanges()},t.prototype.isSortBy=function(t,e){return void 0!==e?void 0!==this._params.sorting[t]&&this._params.sorting[t]==e:void 0!==this._params.sorting[t]},t.prototype.orderBy=function(){return i.convertSortToOrderBy(this._params.sorting)},t.prototype.page=function(t){return void 0!==t?this.parameters({page:t}):this._params.page},t.prototype.parameters=function(t,e){if(e=e||!1,void 0!==typeof t){for(var n in t){var i=t[n];if(e&&n.indexOf(\"[\")>=0){for(var s=n.split(/\\[(.*)\\]/).reverse(),o=\"\",l=0,u=s.length;l',this.$document),this.$element.prepend(t));var n=r.element('
',this.$document);this.$element.after(n),t&&this.$compile(t)(this.$scope),this.$compile(n)(this.$scope)}},t.prototype.loadFilterData=function(t){function e(t){return t&&\"object\"==typeof t&&\"function\"==typeof t.then}var n=this;r.forEach(t,function(t){var a=t.filterData(n.$scope);return a?e(a)?(delete t.filterData,a.then(function(e){r.isArray(e)||r.isFunction(e)||r.isObject(e)||(e=[]),t.data=e})):t.data=a:void delete t.filterData})},t.prototype.buildColumns=function(t){var e=this,n=[];return(t||[]).forEach(function(t){n.push(e.ngTableColumn.buildColumn(t,e.$scope,n))}),n},t.prototype.parseNgTableDynamicExpr=function(t){if(!t||t.indexOf(\" with \")>-1){var e=t.split(/\\s+with\\s+/);return{tableParams:e[0],columns:e[1]}}throw new Error(\"Parse error (expected example: ng-table-dynamic='tableParams with cols')\")},t.prototype.setupBindingsToInternalScope=function(t){var e=this;this.$scope.$watch(t,function(t){void 0!==t&&(e.$scope.params=t)},!1),this.setupFilterRowBindingsToInternalScope(),this.setupGroupRowBindingsToInternalScope()},t.prototype.setupFilterRowBindingsToInternalScope=function(){var t=this;this.$attrs.showFilter?this.$scope.$parent.$watch(this.$attrs.showFilter,function(e){t.$scope.show_filter=e}):this.$scope.$watch(function(){return t.hasVisibleFilterColumn},function(e){t.$scope.show_filter=e}),this.$attrs.disableFilter&&this.$scope.$parent.$watch(this.$attrs.disableFilter,function(e){t.$scope.$filterRow.disabled=e})},t.prototype.setupGroupRowBindingsToInternalScope=function(){var t=this;if(this.$scope.$groupRow={show:!1},this.$attrs.showGroup){var e=this.$parse(this.$attrs.showGroup);this.$scope.$parent.$watch(e,function(e){t.$scope.$groupRow.show=e}),e.assign&&this.$scope.$watch(\"$groupRow.show\",function(n){e.assign(t.$scope.$parent,n)})}else this.$scope.$watch(\"params.hasGroup()\",function(e){t.$scope.$groupRow.show=e})},t.prototype.getVisibleColumns=function(){var t=this;return(this.$scope.$columns||[]).filter(function(e){return e.show(t.$scope)})},t.prototype.subscribeToTableEvents=function(){var t=this;this.$scope.$watch(\"params.isDataReloadRequired()\",function(e){t.onDataReloadStatusChange(e)}),this.ngTableEventsChannel.onAfterReloadData(function(e,n){var r=t.getVisibleColumns();e.hasGroup()?(t.$scope.$groups=n||[],t.$scope.$groups.visibleColumnCount=r.length):(t.$scope.$data=n||[],t.$scope.$data.visibleColumnCount=r.length)},this.$scope,function(e){return t.$scope.params===e}),this.ngTableEventsChannel.onPagesChanged(function(e,n){t.$scope.pages=n},this.$scope,function(e){return t.$scope.params===e})},t.prototype.some=function(t,e){for(var n=!1,r=0;r
',e);i.append(s),t(s)(r)}})}}}var a=n(0);r.$inject=[\"$compile\",\"$document\",\"ngTableEventsChannel\"],e.ngTablePagination=r},function(t,e){\"use strict\";function n(){var t={restrict:\"A\",controller:r};return t}n.$inject=[],e.ngTableSelectFilterDs=n;var r=function(){function t(t,e,n,r){var a=this;this.$scope=t,this.$attrs=n,this.$q=r,this.$column=e(n.ngTableSelectFilterDs)(t),t.$watch(function(){return a.$column&&a.$column.data},function(){a.bindDataSource()})}return t.prototype.bindDataSource=function(){var t=this;this.getSelectListData(this.$column).then(function(e){e&&!t.hasEmptyOption(e)&&e.unshift({id:\"\",title:\"\"}),e=e||[],t.$scope.$selectData=e})},t.prototype.hasEmptyOption=function(t){for(var e,n=0;n
',i=n(0);i.module(\"ng\").run([\"$templateCache\",function(t){t.put(r,a)}]),t.exports=r},function(t,e,n){var r=\"ng-table/filters/number.html\",a=' ',i=n(0);i.module(\"ng\").run([\"$templateCache\",function(t){t.put(r,a)}]),t.exports=r},function(t,e,n){var r=\"ng-table/filters/select-multiple.html\",a=' ',i=n(0);i.module(\"ng\").run([\"$templateCache\",function(t){t.put(r,a)}]),t.exports=r},function(t,e,n){var r=\"ng-table/filters/select.html\",a=' ',i=n(0);i.module(\"ng\").run([\"$templateCache\",function(t){\nt.put(r,a)}]),t.exports=r},function(t,e,n){var r=\"ng-table/filters/text.html\",a=' ',i=n(0);i.module(\"ng\").run([\"$templateCache\",function(t){t.put(r,a)}]),t.exports=r},function(t,e,n){var r=\"ng-table/groupRow.html\",a=' {{$selGroupTitle}} ',i=n(0);i.module(\"ng\").run([\"$templateCache\",function(t){t.put(r,a)}]),t.exports=r},function(t,e,n){var r=\"ng-table/header.html\",a=\" \",i=n(0);i.module(\"ng\").run([\"$templateCache\",function(t){t.put(r,a)}]),t.exports=r},function(t,e,n){var r=\"ng-table/pager.html\",a=' ',i=n(0);i.module(\"ng\").run([\"$templateCache\",function(t){t.put(r,a)}]),t.exports=r},function(t,e,n){var r=\"ng-table/sorterRow.html\",a=\"
\",i=n(0);i.module(\"ng\").run([\"$templateCache\",function(t){t.put(r,a)}]),t.exports=r},function(t,e,n){\"use strict\";function r(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}var a=n(0),i=n(1),s=n(2),o=a.module(\"ngTable\",[i.ngTableCoreModule.name,s.ngTableBrowserModule.name]);e.ngTableModule=o,r(n(1)),r(n(2))}])});\n//# sourceMappingURL=ng-table.min.js.map","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-table\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-table\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_0__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmory imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmory exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 51);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/* unknown exports provided */\n/* all exports used */\n/*!**************************!*\\\n !*** external \"angular\" ***!\n \\**************************/\n/***/ function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_0__;\n\n/***/ },\n/* 1 */\n/* unknown exports provided */\n/* all exports used */\n/*!***************************!*\\\n !*** ./src/core/index.ts ***!\n \\***************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\"use strict\";\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nvar angular = __webpack_require__(/*! angular */ 0);\nvar data_1 = __webpack_require__(/*! ./data */ 3);\nvar grouping_1 = __webpack_require__(/*! ./grouping */ 37);\nvar ngTableDefaults_1 = __webpack_require__(/*! ./ngTableDefaults */ 7);\nvar ngTableSettings_1 = __webpack_require__(/*! ./ngTableSettings */ 10);\nvar ngTableParams_1 = __webpack_require__(/*! ./ngTableParams */ 9);\nvar ngTableEventsChannel_1 = __webpack_require__(/*! ./ngTableEventsChannel */ 8);\nvar ngTableCoreModule = angular.module('ngTable-core', [])\n .provider('ngTableDefaultGetData', data_1.NgTableDefaultGetDataProvider)\n .factory('ngTableDefaultGetGroups', grouping_1.ngTableDefaultGetGroups)\n .value('ngTableDefaults', ngTableDefaults_1.ngTableDefaults)\n .service('ngTableEventsChannel', ngTableEventsChannel_1.NgTableEventsChannel)\n .service('ngTableSettings', ngTableSettings_1.NgTableSettings)\n .run(ngTableParams_1.NgTableParams.init);\nexports.ngTableCoreModule = ngTableCoreModule;\n// note: if you are using ES6 or typescript prefer:\n// import { NgTableParams } from 'ng-table';\nngTableCoreModule.value('NgTableParams', ngTableParams_1.NgTableParams);\nvar ngTableDefaults_2 = __webpack_require__(/*! ./ngTableDefaults */ 7);\nexports.IDefaults = ngTableDefaults_2.IDefaults;\n__export(__webpack_require__(/*! ./ngTableEventsChannel */ 8));\nvar ngTableSettings_2 = __webpack_require__(/*! ./ngTableSettings */ 10);\nexports.ISettings = ngTableSettings_2.ISettings;\n__export(__webpack_require__(/*! ./ngTableParams */ 9));\n__export(__webpack_require__(/*! ./data */ 3));\n__export(__webpack_require__(/*! ./filtering */ 36));\n__export(__webpack_require__(/*! ./grouping/publicExports */ 39));\n__export(__webpack_require__(/*! ./paging */ 40));\n__export(__webpack_require__(/*! ./sorting */ 41));\n\n\n/***/ },\n/* 2 */\n/* unknown exports provided */\n/* all exports used */\n/*!******************************!*\\\n !*** ./src/browser/index.ts ***!\n \\******************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\"use strict\";\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nvar angular = __webpack_require__(/*! angular */ 0);\nvar ngTable_directive_1 = __webpack_require__(/*! ./ngTable.directive */ 13);\nvar ngTableColumn_1 = __webpack_require__(/*! ./ngTableColumn */ 14);\nvar ngTableColumnsBinding_directive_1 = __webpack_require__(/*! ./ngTableColumnsBinding.directive */ 15);\nvar ngTableController_1 = __webpack_require__(/*! ./ngTableController */ 16);\nexports.NgTableController = ngTableController_1.NgTableController;\nvar ngTableDynamic_directive_1 = __webpack_require__(/*! ./ngTableDynamic.directive */ 17);\nvar ngTableFilterConfig_1 = __webpack_require__(/*! ./ngTableFilterConfig */ 18);\nexports.NgTableFilterConfigProvider = ngTableFilterConfig_1.NgTableFilterConfigProvider;\nexports.NgTableFilterConfig = ngTableFilterConfig_1.NgTableFilterConfig;\nvar ngTableFilterRow_directive_1 = __webpack_require__(/*! ./ngTableFilterRow.directive */ 19);\nvar ngTableFilterRowController_1 = __webpack_require__(/*! ./ngTableFilterRowController */ 20);\nvar ngTableGroupRow_directive_1 = __webpack_require__(/*! ./ngTableGroupRow.directive */ 21);\nvar ngTableGroupRowController_1 = __webpack_require__(/*! ./ngTableGroupRowController */ 22);\nvar ngTablePagination_directive_1 = __webpack_require__(/*! ./ngTablePagination.directive */ 23);\nvar ngTableSelectFilterDs_directive_1 = __webpack_require__(/*! ./ngTableSelectFilterDs.directive */ 24);\nvar ngTableSorterRow_directive_1 = __webpack_require__(/*! ./ngTableSorterRow.directive */ 25);\nvar ngTableSorterRowController_1 = __webpack_require__(/*! ./ngTableSorterRowController */ 26);\n__webpack_require__(/*! ./filters/number.html */ 43);\n__webpack_require__(/*! ./filters/select.html */ 45);\n__webpack_require__(/*! ./filters/select-multiple.html */ 44);\n__webpack_require__(/*! ./filters/text.html */ 46);\n__webpack_require__(/*! ./pager.html */ 49);\n__webpack_require__(/*! ./header.html */ 48);\nvar ngTableBrowserModule = angular.module('ngTable-browser', [])\n .directive('ngTable', ngTable_directive_1.ngTable)\n .service('ngTableColumn', ngTableColumn_1.NgTableColumn)\n .directive('ngTableColumnsBinding', ngTableColumnsBinding_directive_1.ngTableColumnsBinding)\n .controller('ngTableController', ngTableController_1.NgTableController)\n .directive('ngTableDynamic', ngTableDynamic_directive_1.ngTableDynamic)\n .provider('ngTableFilterConfig', ngTableFilterConfig_1.NgTableFilterConfigProvider)\n .directive('ngTableFilterRow', ngTableFilterRow_directive_1.ngTableFilterRow)\n .controller('ngTableFilterRowController', ngTableFilterRowController_1.NgTableFilterRowController)\n .directive('ngTableGroupRow', ngTableGroupRow_directive_1.ngTableGroupRow)\n .controller('ngTableGroupRowController', ngTableGroupRowController_1.NgTableGroupRowController)\n .directive('ngTablePagination', ngTablePagination_directive_1.ngTablePagination)\n .directive('ngTableSelectFilterDs', ngTableSelectFilterDs_directive_1.ngTableSelectFilterDs)\n .directive('ngTableSorterRow', ngTableSorterRow_directive_1.ngTableSorterRow)\n .controller('ngTableSorterRowController', ngTableSorterRowController_1.NgTableSorterRowController);\nexports.ngTableBrowserModule = ngTableBrowserModule;\n__export(__webpack_require__(/*! ./public-interfaces */ 27));\n\n\n/***/ },\n/* 3 */\n/* unknown exports provided */\n/* all exports used */\n/*!********************************!*\\\n !*** ./src/core/data/index.ts ***!\n \\********************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\"use strict\";\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\n__export(__webpack_require__(/*! ./dataSettings */ 28));\n__export(__webpack_require__(/*! ./getData */ 29));\n__export(__webpack_require__(/*! ./interceptor */ 30));\n__export(__webpack_require__(/*! ./ngTableDefaultGetData */ 31));\n__export(__webpack_require__(/*! ./results */ 32));\n\n\n/***/ },\n/* 4 */\n/* unknown exports provided */\n/* all exports used */\n/*!***************************************!*\\\n !*** ./src/core/grouping/getGroup.ts ***!\n \\***************************************/\n/***/ function(module, exports) {\n\n\"use strict\";\n\"use strict\";\n\n\n/***/ },\n/* 5 */\n/* unknown exports provided */\n/* all exports used */\n/*!********************************************!*\\\n !*** ./src/core/grouping/groupSettings.ts ***!\n \\********************************************/\n/***/ function(module, exports) {\n\n\"use strict\";\n\"use strict\";\n\n\n/***/ },\n/* 6 */\n/* unknown exports provided */\n/* all exports used */\n/*!*******************************************!*\\\n !*** ./src/core/grouping/groupingFunc.ts ***!\n \\*******************************************/\n/***/ function(module, exports) {\n\n\"use strict\";\n\"use strict\";\n\n\n/***/ },\n/* 7 */\n/* unknown exports provided */\n/* all exports used */\n/*!*************************************!*\\\n !*** ./src/core/ngTableDefaults.ts ***!\n \\*************************************/\n/***/ function(module, exports) {\n\n\"use strict\";\n/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\"use strict\";\n/**\n * Default values for ngTable\n */\nexports.ngTableDefaults = {\n params: {},\n settings: {}\n};\n\n\n/***/ },\n/* 8 */\n/* unknown exports provided */\n/* all exports used */\n/*!******************************************!*\\\n !*** ./src/core/ngTableEventsChannel.ts ***!\n \\******************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\"use strict\";\nvar ng1 = __webpack_require__(/*! angular */ 0);\nvar NgTableEventsChannel = (function () {\n function NgTableEventsChannel($rootScope) {\n this.$rootScope = $rootScope;\n var events = this;\n events = this.addTableParamsEvent('afterCreated', events);\n events = this.addTableParamsEvent('afterReloadData', events);\n events = this.addTableParamsEvent('datasetChanged', events);\n events = this.addTableParamsEvent('pagesChanged', events);\n events = this.addTableParamsEvent('afterDataFiltered', events);\n events = this.addTableParamsEvent('afterDataSorted', events);\n }\n NgTableEventsChannel.prototype.addTableParamsEvent = function (eventName, target) {\n var fnName = eventName.charAt(0).toUpperCase() + eventName.substring(1);\n var event = (_a = {},\n _a['on' + fnName] = this.createEventSubscriptionFn(eventName),\n _a['publish' + fnName] = this.createPublishEventFn(eventName),\n _a\n );\n return ng1.extend(target, event);\n var _a;\n };\n NgTableEventsChannel.prototype.createPublishEventFn = function (eventName) {\n var _this = this;\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i - 0] = arguments[_i];\n }\n (_a = _this.$rootScope).$broadcast.apply(_a, ['ngTable:' + eventName].concat(args));\n var _a;\n };\n };\n NgTableEventsChannel.prototype.createEventSubscriptionFn = function (eventName) {\n var _this = this;\n return function (handler, eventSelectorOrScope, eventSelector) {\n var actualEvtSelector;\n var scope = _this.$rootScope;\n if (isScopeLike(eventSelectorOrScope)) {\n scope = eventSelectorOrScope;\n actualEvtSelector = createEventSelectorFn(eventSelector);\n }\n else {\n actualEvtSelector = createEventSelectorFn(eventSelectorOrScope);\n }\n return scope.$on('ngTable:' + eventName, function (event, params) {\n var eventArgs = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n eventArgs[_i - 2] = arguments[_i];\n }\n // don't send events published by the internal NgTableParams created by ngTableController\n if (params.isNullInstance)\n return;\n var fnArgs = [params].concat(eventArgs);\n if (actualEvtSelector.apply(this, fnArgs)) {\n handler.apply(this, fnArgs);\n }\n });\n };\n function createEventSelectorFn(eventSelector) {\n if (!eventSelector) {\n return function (publisher) { return true; };\n }\n else if (isEventSelectorFunc(eventSelector)) {\n return eventSelector;\n }\n else {\n // shorthand for subscriber to only receive events from a specific publisher instance\n return function (publisher) { return publisher === eventSelector; };\n }\n }\n function isEventSelectorFunc(val) {\n return typeof val === 'function';\n }\n function isScopeLike(val) {\n return val && typeof val.$new === 'function';\n }\n };\n NgTableEventsChannel.$inject = ['$rootScope'];\n return NgTableEventsChannel;\n}());\nexports.NgTableEventsChannel = NgTableEventsChannel;\n\n\n/***/ },\n/* 9 */\n/* unknown exports provided */\n/* all exports used */\n/*!***********************************!*\\\n !*** ./src/core/ngTableParams.ts ***!\n \\***********************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\"use strict\";\nvar ng1 = __webpack_require__(/*! angular */ 0);\nvar util_1 = __webpack_require__(/*! ./util */ 11);\n/**\n * @private\n */\nfunction isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n}\n/**\n * Parameters manager for an ngTable directive\n */\nvar NgTableParams = (function () {\n function NgTableParams(baseParameters, baseSettings) {\n var _this = this;\n /**\n * The page of data rows currently being displayed in the table\n */\n this.data = [];\n this.defaultSettings = NgTableParams.ngTableSettings.createDefaults();\n this.isCommittedDataset = false;\n this.initialEvents = [];\n this._params = {\n page: 1,\n count: 10,\n filter: {},\n sorting: {},\n group: {}\n };\n this._settings = this.defaultSettings;\n // the ngTableController \"needs\" to create a dummy/null instance and it's important to know whether an instance\n // is one of these\n if (typeof baseParameters === \"boolean\") {\n this.isNullInstance = true;\n }\n this.reloadPages = (function () {\n var currentPages;\n return function () {\n var oldPages = currentPages;\n var newPages = _this.generatePagesArray(_this.page(), _this.total(), _this.count());\n if (!ng1.equals(oldPages, newPages)) {\n currentPages = newPages;\n NgTableParams.ngTableEventsChannel.publishPagesChanged(_this, newPages, oldPages);\n }\n };\n })();\n ng1.extend(this._params, NgTableParams.ngTableDefaults.params);\n this.settings(baseSettings);\n this.parameters(baseParameters, true);\n NgTableParams.ngTableEventsChannel.publishAfterCreated(this);\n // run events during construction after the initial create event. That way a consumer\n // can subscribe to all events for a table without \"dropping\" an event\n ng1.forEach(this.initialEvents, function (event) {\n event();\n });\n this.initialEvents = null;\n }\n NgTableParams.prototype.count = function (count) {\n // reset to first page because can be blank page\n return count !== undefined ? this.parameters({\n 'count': count,\n 'page': 1\n }) : this._params.count;\n };\n NgTableParams.prototype.filter = function (filter) {\n if (filter != null && typeof filter === 'object') {\n return this.parameters({\n 'filter': filter,\n 'page': 1\n });\n }\n else if (filter === true) {\n var keys = Object.keys(this._params.filter);\n var significantFilter = {};\n for (var i = 0; i < keys.length; i++) {\n var filterValue = this._params.filter[keys[i]];\n if (filterValue != null && filterValue !== '') {\n significantFilter[keys[i]] = filterValue;\n }\n }\n return significantFilter;\n }\n else {\n return this._params.filter;\n }\n };\n /**\n * Generate array of pages.\n * When no arguments supplied, the current parameter state of this `NgTableParams` instance will be used\n * @param currentPage Which page must be active\n * @param totalItems Total quantity of items\n * @param pageSize Quantity of items on page\n * @param maxBlocks Quantity of blocks for pagination\n * @returns Array of pages\n */\n NgTableParams.prototype.generatePagesArray = function (currentPage, totalItems, pageSize, maxBlocks) {\n if (!arguments.length) {\n currentPage = this.page();\n totalItems = this.total();\n pageSize = this.count();\n }\n var maxPage, maxPivotPages, minPage, numPages;\n maxBlocks = maxBlocks && maxBlocks < 6 ? 6 : maxBlocks;\n var pages = [];\n numPages = Math.ceil(totalItems / pageSize);\n if (numPages > 1) {\n pages.push({\n type: 'prev',\n number: Math.max(1, currentPage - 1),\n active: currentPage > 1\n });\n pages.push({\n type: 'first',\n number: 1,\n active: currentPage > 1,\n current: currentPage === 1\n });\n maxPivotPages = Math.round((this._settings.paginationMaxBlocks - this._settings.paginationMinBlocks) / 2);\n minPage = Math.max(2, currentPage - maxPivotPages);\n maxPage = Math.min(numPages - 1, currentPage + maxPivotPages * 2 - (currentPage - minPage));\n minPage = Math.max(2, minPage - (maxPivotPages * 2 - (maxPage - minPage)));\n var i = minPage;\n while (i <= maxPage) {\n if ((i === minPage && i !== 2) || (i === maxPage && i !== numPages - 1)) {\n pages.push({\n type: 'more',\n active: false\n });\n }\n else {\n pages.push({\n type: 'page',\n number: i,\n active: currentPage !== i,\n current: currentPage === i\n });\n }\n i++;\n }\n pages.push({\n type: 'last',\n number: numPages,\n active: currentPage !== numPages,\n current: currentPage === numPages\n });\n pages.push({\n type: 'next',\n number: Math.min(numPages, currentPage + 1),\n active: currentPage < numPages\n });\n }\n return pages;\n };\n NgTableParams.prototype.group = function (group, sortDirection) {\n if (group === undefined) {\n return this._params.group;\n }\n var newParameters = {\n page: 1\n };\n if (util_1.isGroupingFun(group) && sortDirection !== undefined) {\n group.sortDirection = sortDirection;\n newParameters.group = group;\n }\n else if (typeof group === 'string' && sortDirection !== undefined) {\n newParameters.group = (_a = {}, _a[group] = sortDirection, _a);\n }\n else {\n newParameters.group = group;\n }\n this.parameters(newParameters);\n return this;\n var _a;\n };\n /**\n * Returns true when an attempt to `reload` the current `parameter` values have resulted in a failure.\n * This method will continue to return true until the `reload` is successfully called or when the\n * `parameter` values have changed\n */\n NgTableParams.prototype.hasErrorState = function () {\n return !!(this.errParamsMemento && ng1.equals(this.errParamsMemento, this.createComparableParams()));\n };\n /**\n * Returns true if `filter` has significant filter value(s) (any value except null, undefined, or empty string),\n * otherwise false\n */\n NgTableParams.prototype.hasFilter = function () {\n return Object.keys(this.filter(true)).length > 0;\n };\n /**\n * Return true when a change to `filters` require the `reload` method\n * to be run so as to ensure the data presented to the user reflects these filters\n */\n NgTableParams.prototype.hasFilterChanges = function () {\n var previousFilter = (this.prevParamsMemento && this.prevParamsMemento.params.filter);\n return !ng1.equals((this._params.filter), previousFilter) || this.hasGlobalSearchFieldChanges();\n };\n NgTableParams.prototype.hasGroup = function (group, sortDirection) {\n if (group == null) {\n return util_1.isGroupingFun(this._params.group) || Object.keys(this._params.group).length > 0;\n }\n if (util_1.isGroupingFun(group)) {\n if (sortDirection == null) {\n return this._params.group === group;\n }\n else {\n return this._params.group === group && group.sortDirection === sortDirection;\n }\n }\n else {\n if (sortDirection == null) {\n return Object.keys(this._params.group).indexOf(group) !== -1;\n }\n else {\n return this._params.group[group] === sortDirection;\n }\n }\n };\n /**\n * Return true when a change to this instance should require the `reload` method\n * to be run so as to ensure the data rows presented to the user reflects the current state.\n *\n * Note that this method will return false when the `reload` method has run but fails. In this case\n * `hasErrorState` will return true.\n *\n * The built-in `ngTable` directives will watch for when this function returns true and will then call\n * the `reload` method to load its data rows\n */\n NgTableParams.prototype.isDataReloadRequired = function () {\n // note: using != as want to treat null and undefined the same\n return !this.isCommittedDataset || !ng1.equals(this.createComparableParams(), this.prevParamsMemento)\n || this.hasGlobalSearchFieldChanges();\n };\n /**\n * Returns true if sorting by the field supplied. Where direction supplied\n * the field must also be sorted by that direction to return true\n */\n NgTableParams.prototype.isSortBy = function (field, direction) {\n if (direction !== undefined) {\n return this._params.sorting[field] !== undefined && this._params.sorting[field] == direction;\n }\n else {\n return this._params.sorting[field] !== undefined;\n }\n };\n /**\n * Returns sorting values in a format that can be consumed by the angular `$orderBy` filter service\n */\n NgTableParams.prototype.orderBy = function () {\n return util_1.convertSortToOrderBy(this._params.sorting);\n };\n NgTableParams.prototype.page = function (page) {\n return page !== undefined ? this.parameters({\n 'page': page\n }) : this._params.page;\n };\n NgTableParams.prototype.parameters = function (newParameters, parseParamsFromUrl) {\n parseParamsFromUrl = parseParamsFromUrl || false;\n if (typeof newParameters !== undefined) {\n for (var key in newParameters) {\n var value = newParameters[key];\n if (parseParamsFromUrl && key.indexOf('[') >= 0) {\n var keys = key.split(/\\[(.*)\\]/).reverse();\n var lastKey = '';\n for (var i = 0, len = keys.length; i < len; i++) {\n var name = keys[i];\n if (name !== '') {\n var v = value;\n value = {};\n value[lastKey = name] = (isNumber(v) ? parseFloat(v) : v);\n }\n }\n if (lastKey === 'sorting') {\n this._params[lastKey] = {};\n }\n this._params[lastKey] = ng1.extend(this._params[lastKey] || {}, value[lastKey]);\n }\n else {\n if (key === 'group') {\n this._params[key] = this.parseGroup(newParameters[key]);\n }\n else {\n this._params[key] = (isNumber(newParameters[key]) ? parseFloat(newParameters[key]) : newParameters[key]);\n }\n }\n }\n this.log('ngTable: set parameters', this._params);\n return this;\n }\n return this._params;\n };\n /**\n * Trigger a reload of the data rows\n */\n NgTableParams.prototype.reload = function () {\n var _this = this;\n var pData = null;\n this._settings.$loading = true;\n this.prevParamsMemento = ng1.copy(this.createComparableParams());\n this.isCommittedDataset = true;\n if (this.hasGroup()) {\n pData = this.runInterceptorPipeline(NgTableParams.$q.when(this._settings.getGroups(this)));\n }\n else {\n var fn = this._settings.getData;\n pData = this.runInterceptorPipeline(NgTableParams.$q.when(fn(this)));\n }\n this.log('ngTable: reload data');\n var oldData = this.data;\n return pData.then(function (data) {\n _this._settings.$loading = false;\n _this.errParamsMemento = null;\n _this.data = data;\n // note: I think it makes sense to publish this event even when data === oldData\n // subscribers can always set a filter to only receive the event when data !== oldData\n NgTableParams.ngTableEventsChannel.publishAfterReloadData(_this, data, oldData);\n _this.reloadPages();\n return data;\n }).catch(function (reason) {\n _this.errParamsMemento = _this.prevParamsMemento;\n // \"rethrow\"\n return NgTableParams.$q.reject(reason);\n });\n };\n NgTableParams.prototype.settings = function (newSettings) {\n var _this = this;\n if (ng1.isDefined(newSettings)) {\n var settings = NgTableParams.ngTableSettings.merge(this._settings, newSettings);\n var originalDataset_1 = this._settings.dataset;\n this._settings = settings;\n // note: using != as want null and undefined to be treated the same\n var hasDatasetChanged = newSettings.hasOwnProperty('dataset') && (newSettings.dataset != originalDataset_1);\n if (hasDatasetChanged) {\n if (this.isCommittedDataset) {\n this.page(1); // reset page as a new dataset has been supplied\n }\n this.isCommittedDataset = false;\n var fireEvent = function () {\n NgTableParams.ngTableEventsChannel.publishDatasetChanged(_this, newSettings.dataset, originalDataset_1);\n };\n if (this.initialEvents) {\n this.initialEvents.push(fireEvent);\n }\n else {\n fireEvent();\n }\n }\n this.log('ngTable: set settings', this._settings);\n return this;\n }\n return this._settings;\n };\n NgTableParams.prototype.sorting = function (sorting, direction) {\n if (typeof sorting === 'string') {\n this.parameters({\n 'sorting': (_a = {}, _a[sorting] = direction, _a)\n });\n return this;\n }\n return sorting !== undefined ? this.parameters({\n 'sorting': sorting\n }) : this._params.sorting;\n var _a;\n };\n NgTableParams.prototype.total = function (total) {\n return total !== undefined ? this.settings({\n 'total': total\n }) : this._settings.total;\n };\n /**\n * Returns the current parameter values uri-encoded. Set `asString` to\n * true for the parameters to be returned as an array of strings of the form 'paramName=value'\n * otherwise parameters returned as a key-value object\n */\n NgTableParams.prototype.url = function (asString) {\n // this function is an example of Typescript gone bad!!\n asString = asString || false;\n var pairs = (asString ? [] : {});\n for (var key in this._params) {\n if (this._params.hasOwnProperty(key)) {\n var item = this._params[key], name = encodeURIComponent(key);\n if (typeof item === \"object\") {\n for (var subkey in item) {\n if (isSignificantValue(item[subkey], key)) {\n var pname = name + \"[\" + encodeURIComponent(subkey) + \"]\";\n collectValue(item[subkey], pname);\n }\n }\n }\n else if (!ng1.isFunction(item) && isSignificantValue(item, key)) {\n collectValue(item, name);\n }\n }\n }\n return pairs;\n function collectValue(value, key) {\n if (isArray(pairs)) {\n pairs.push(key + \"=\" + encodeURIComponent(value));\n }\n else {\n pairs[key] = encodeURIComponent(value);\n }\n }\n function isArray(pairs) {\n return asString;\n }\n function isSignificantValue(value, key) {\n return key === \"group\" ? true : typeof value !== undefined && value !== \"\";\n }\n };\n NgTableParams.prototype.createComparableParams = function () {\n var group = this._params.group;\n return {\n params: this._params,\n groupSortDirection: util_1.isGroupingFun(group) ? group.sortDirection : undefined\n };\n };\n NgTableParams.prototype.hasGlobalSearchFieldChanges = function () {\n var currentVal = (this._params.filter && this._params.filter['$']);\n var previousVal = (this.prevParamsMemento && this.prevParamsMemento.params.filter && this.prevParamsMemento.params.filter['$']);\n return !ng1.equals(currentVal, previousVal);\n };\n NgTableParams.prototype.log = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i - 0] = arguments[_i];\n }\n if (this._settings.debugMode && NgTableParams.$log.debug) {\n (_a = NgTableParams.$log).debug.apply(_a, args);\n }\n var _a;\n };\n NgTableParams.prototype.parseGroup = function (group) {\n var defaultSort = this._settings.groupOptions && this._settings.groupOptions.defaultSort;\n if (!group) {\n return group;\n }\n else if (util_1.isGroupingFun(group)) {\n if (group.sortDirection == null) {\n group.sortDirection = defaultSort;\n }\n return group;\n }\n else if (typeof group === 'object') {\n for (var key in group) {\n if (group[key] == null) {\n group[key] = defaultSort;\n }\n }\n return group;\n }\n else {\n return (_a = {},\n _a[group] = defaultSort,\n _a\n );\n }\n var _a;\n };\n NgTableParams.prototype.runInterceptorPipeline = function (fetchedData) {\n var _this = this;\n var interceptors = this._settings.interceptors || [];\n return interceptors.reduce(function (result, interceptor) {\n var thenFn = (interceptor.response && interceptor.response.bind(interceptor)) || NgTableParams.$q.when;\n var rejectFn = (interceptor.responseError && interceptor.responseError.bind(interceptor)) || NgTableParams.$q.reject;\n return result.then(function (data) {\n return thenFn(data, _this);\n }, function (reason) {\n return rejectFn(reason, _this);\n });\n }, fetchedData);\n };\n NgTableParams.init = function ($q, $log, ngTableDefaults, ngTableEventsChannel, ngTableSettings) {\n NgTableParams.$q = $q;\n NgTableParams.$log = $log;\n NgTableParams.ngTableDefaults = ngTableDefaults;\n NgTableParams.ngTableEventsChannel = ngTableEventsChannel;\n NgTableParams.ngTableSettings = ngTableSettings;\n };\n return NgTableParams;\n}());\nexports.NgTableParams = NgTableParams;\nNgTableParams.init.$inject = ['$q', '$log', 'ngTableDefaults', 'ngTableEventsChannel', 'ngTableSettings'];\n\n\n/***/ },\n/* 10 */\n/* unknown exports provided */\n/* all exports used */\n/*!*************************************!*\\\n !*** ./src/core/ngTableSettings.ts ***!\n \\*************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\"use strict\";\nvar ng1 = __webpack_require__(/*! angular */ 0);\n/**\n * @private\n */\nvar NgTableSettings = (function () {\n function NgTableSettings(ngTableDefaults, ngTableDefaultGetData, ngTableDefaultGetGroups) {\n var _this = this;\n this.ngTableDefaults = ngTableDefaults;\n this.ngTableDefaultGetData = ngTableDefaultGetData;\n this.ngTableDefaultGetGroups = ngTableDefaultGetGroups;\n this.defaults = {\n $loading: false,\n dataset: null,\n total: 0,\n defaultSort: 'desc',\n counts: [10, 25, 50, 100],\n filterOptions: {\n filterComparator: undefined,\n filterDelay: 500,\n filterDelayThreshold: 10000,\n filterFilterName: undefined,\n filterFn: undefined,\n filterLayout: 'stack'\n },\n getData: function (params) {\n return _this.ngTableDefaultGetData(params.settings().dataset, params);\n },\n getGroups: this.ngTableDefaultGetGroups,\n groupOptions: {\n defaultSort: 'asc',\n isExpanded: true\n },\n interceptors: [],\n paginationMaxBlocks: 11,\n paginationMinBlocks: 5,\n sortingIndicator: 'span'\n };\n }\n NgTableSettings.prototype.createDefaults = function () {\n return this.merge(this.defaults, this.ngTableDefaults.settings);\n };\n NgTableSettings.prototype.merge = function (existing, newSettings) {\n newSettings = ng1.extend({}, newSettings);\n if (newSettings.filterOptions) {\n newSettings.filterOptions = ng1.extend({}, existing.filterOptions || {}, newSettings.filterOptions);\n }\n if (newSettings.groupOptions) {\n newSettings.groupOptions = ng1.extend({}, existing.groupOptions || {}, newSettings.groupOptions);\n }\n if (ng1.isArray(newSettings.dataset)) {\n //auto-set the total from passed in dataset\n newSettings.total = newSettings.dataset.length;\n }\n var results = ng1.extend({}, existing, newSettings);\n if (ng1.isArray(newSettings.dataset)) {\n this.optimizeFilterDelay(results);\n }\n return ng1.extend({}, existing, newSettings);\n };\n NgTableSettings.prototype.optimizeFilterDelay = function (settings) {\n // don't debounce by default filter input when working with small synchronous datasets\n if (settings.filterOptions.filterDelay === this.defaults.filterOptions.filterDelay &&\n settings.total <= settings.filterOptions.filterDelayThreshold &&\n settings.getData === this.defaults.getData) {\n settings.filterOptions.filterDelay = 0;\n }\n };\n NgTableSettings.$inject = ['ngTableDefaults', 'ngTableDefaultGetData', 'ngTableDefaultGetGroups'];\n return NgTableSettings;\n}());\nexports.NgTableSettings = NgTableSettings;\n\n\n/***/ },\n/* 11 */\n/* unknown exports provided */\n/* all exports used */\n/*!**************************!*\\\n !*** ./src/core/util.ts ***!\n \\**************************/\n/***/ function(module, exports) {\n\n\"use strict\";\n\"use strict\";\n/**\n * @private\n */\nfunction convertSortToOrderBy(sorting) {\n var result = [];\n for (var column in sorting) {\n result.push((sorting[column] === \"asc\" ? \"+\" : \"-\") + column);\n }\n return result;\n}\nexports.convertSortToOrderBy = convertSortToOrderBy;\n/**\n * @private\n */\nfunction isGroupingFun(val) {\n return typeof val === 'function';\n}\nexports.isGroupingFun = isGroupingFun;\n\n\n/***/ },\n/* 12 */,\n/* 13 */\n/* unknown exports provided */\n/* all exports used */\n/*!******************************************!*\\\n !*** ./src/browser/ngTable.directive.ts ***!\n \\******************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\"use strict\";\nvar ng1 = __webpack_require__(/*! angular */ 0);\nngTable.$inject = ['$q', '$parse'];\n/**\n * Directive that instantiates {@link NgTableController NgTableController}.\n * @ngdoc directive\n * @name ngTable\n * @example\n *\n * ```html\n * \n * \n * \n * \n * \n *
\n * {{user.name}}\n * \n * {{user.age}}\n *
\n * ```\n */\nfunction ngTable($q, $parse) {\n return {\n restrict: 'A',\n priority: 1001,\n scope: true,\n controller: 'ngTableController',\n compile: function (element) {\n var columns = [], i = 0, dataRow, groupRow;\n var rows = [];\n ng1.forEach(element.find('tr'), function (tr) {\n rows.push(ng1.element(tr));\n });\n dataRow = rows.filter(function (tr) { return !tr.hasClass('ng-table-group'); })[0];\n groupRow = rows.filter(function (tr) { return tr.hasClass('ng-table-group'); })[0];\n if (!dataRow) {\n return undefined;\n }\n ng1.forEach(dataRow.find('td'), function (item) {\n var el = ng1.element(item);\n if (el.attr('ignore-cell') && 'true' === el.attr('ignore-cell')) {\n return;\n }\n var getAttrValue = function (attr) {\n return el.attr('x-data-' + attr) || el.attr('data-' + attr) || el.attr(attr);\n };\n var setAttrValue = function (attr, value) {\n if (el.attr('x-data-' + attr)) {\n el.attr('x-data-' + attr, value);\n }\n else if (el.attr('data' + attr)) {\n el.attr('data' + attr, value);\n }\n else {\n el.attr(attr, value);\n }\n };\n var parsedAttribute = function (attr) {\n var expr = getAttrValue(attr);\n if (!expr) {\n return undefined;\n }\n var localValue;\n var getter = function (context) {\n if (localValue !== undefined) {\n return localValue;\n }\n return $parse(expr)(context);\n };\n getter.assign = function ($scope, value) {\n var parsedExpr = $parse(expr);\n if (parsedExpr.assign) {\n // we should be writing back to the parent scope as this is where the expression\n // came from\n parsedExpr.assign($scope.$parent, value);\n }\n else {\n localValue = value;\n }\n };\n return getter;\n };\n var titleExpr = getAttrValue('title-alt') || getAttrValue('title');\n if (titleExpr) {\n el.attr('data-title-text', '{{' + titleExpr + '}}'); // this used in responsive table\n }\n // NOTE TO MAINTAINERS: if you add extra fields to a $column be sure to extend ngTableColumn with\n // a corresponding \"safe\" default\n columns.push({\n id: i++,\n title: parsedAttribute('title'),\n titleAlt: parsedAttribute('title-alt'),\n headerTitle: parsedAttribute('header-title'),\n sortable: parsedAttribute('sortable'),\n 'class': parsedAttribute('header-class'),\n filter: parsedAttribute('filter'),\n groupable: parsedAttribute('groupable'),\n headerTemplateURL: parsedAttribute('header'),\n filterData: parsedAttribute('filter-data'),\n show: el.attr(\"ng-if\") ? parsedAttribute('ng-if') : undefined\n });\n if (groupRow || el.attr(\"ng-if\")) {\n // change ng-if to bind to our column definition which we know will be writable\n // because this will potentially increase the $watch count, only do so if we already have an\n // ng-if or when we definitely need to change visibility of the columns.\n // currently only ngTableGroupRow directive needs to change visibility\n setAttrValue('ng-if', '$columns[' + (columns.length - 1) + '].show(this)');\n }\n });\n return function (scope, element, attrs, controller) {\n scope.$columns = columns = controller.buildColumns(columns);\n controller.setupBindingsToInternalScope(attrs.ngTable);\n controller.loadFilterData(columns);\n controller.compileDirectiveTemplates();\n };\n }\n };\n}\nexports.ngTable = ngTable;\n\n\n/***/ },\n/* 14 */\n/* unknown exports provided */\n/* all exports used */\n/*!**************************************!*\\\n !*** ./src/browser/ngTableColumn.ts ***!\n \\**************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\"use strict\";\nvar ng1 = __webpack_require__(/*! angular */ 0);\n/**\n * @private\n */\nfunction isScopeLike(object) {\n return object != null && ng1.isFunction(object.$new);\n}\n/**\n * @private\n * Service to construct a $column definition used by {@link ngTable ngTable} directive\n */\nvar NgTableColumn = (function () {\n function NgTableColumn() {\n }\n /**\n * Creates a $column for use within a header template\n *\n * @param column the initial definition for $column to build\n * @param defaultScope the $scope to supply to the $column getter methods when not supplied by caller\n * @param columns a reference to the $columns array to make available on the context supplied to the\n * $column getter methods\n */\n NgTableColumn.prototype.buildColumn = function (column, defaultScope, columns) {\n // note: we're not modifying the original column object. This helps to avoid unintended side affects\n var extendedCol = Object.create(column);\n var defaults = this.createDefaults();\n var _loop_1 = function(prop) {\n if (extendedCol[prop] === undefined) {\n extendedCol[prop] = defaults[prop];\n }\n if (!ng1.isFunction(extendedCol[prop])) {\n // wrap raw field values with \"getter\" functions\n // - this is to ensure consistency with how ngTable.compile builds columns\n // - note that the original column object is being \"proxied\"; this is important\n // as it ensure that any changes to the original object will be returned by the \"getter\"\n var getterSetter = function getterSetter() {\n if (arguments.length === 1 && !isScopeLike(arguments[0])) {\n getterSetter.assign(null, arguments[0]);\n }\n else {\n return column[prop];\n }\n };\n getterSetter.assign = function ($scope, value) {\n column[prop] = value;\n };\n extendedCol[prop] = getterSetter;\n }\n // satisfy the arguments expected by the function returned by parsedAttribute in the ngTable directive\n var getterFn = extendedCol[prop];\n extendedCol[prop] = function () {\n if (arguments.length === 1 && !isScopeLike(arguments[0])) {\n getterFn.assign(defaultScope, arguments[0]);\n }\n else {\n var scope = arguments[0] || defaultScope;\n var context = Object.create(scope);\n ng1.extend(context, {\n $column: extendedCol,\n $columns: columns\n });\n return getterFn.call(column, context);\n }\n };\n if (getterFn.assign) {\n extendedCol[prop].assign = getterFn.assign;\n }\n else {\n var wrappedGetterFn_1 = extendedCol[prop];\n var localValue_1;\n var getterSetter = function getterSetter() {\n if (arguments.length === 1 && !isScopeLike(arguments[0])) {\n getterSetter.assign(null, arguments[0]);\n }\n else {\n return localValue_1 != undefined ? localValue_1 : wrappedGetterFn_1.apply(extendedCol, arguments);\n }\n };\n getterSetter.assign = function ($scope, value) {\n localValue_1 = value;\n };\n extendedCol[prop] = getterSetter;\n }\n };\n for (var prop in defaults) {\n _loop_1(prop);\n }\n return extendedCol;\n };\n NgTableColumn.prototype.createDefaults = function () {\n return {\n 'class': this.createGetterSetter(''),\n filter: this.createGetterSetter(false),\n groupable: this.createGetterSetter(false),\n filterData: ng1.noop,\n headerTemplateURL: this.createGetterSetter(false),\n headerTitle: this.createGetterSetter(''),\n sortable: this.createGetterSetter(false),\n show: this.createGetterSetter(true),\n title: this.createGetterSetter(''),\n titleAlt: this.createGetterSetter('')\n };\n };\n NgTableColumn.prototype.createGetterSetter = function (initialValue) {\n var value = initialValue;\n var getterSetter = function getterSetter() {\n if (arguments.length === 1 && !isScopeLike(arguments[0])) {\n getterSetter.assign(null, arguments[0]);\n }\n else {\n return value;\n }\n };\n getterSetter.assign = function ($scope, newValue) {\n value = newValue;\n };\n return getterSetter;\n };\n NgTableColumn.$inject = [];\n return NgTableColumn;\n}());\nexports.NgTableColumn = NgTableColumn;\n\n\n/***/ },\n/* 15 */\n/* unknown exports provided */\n/* all exports used */\n/*!********************************************************!*\\\n !*** ./src/browser/ngTableColumnsBinding.directive.ts ***!\n \\********************************************************/\n/***/ function(module, exports) {\n\n\"use strict\";\n/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\"use strict\";\nngTableColumnsBinding.$inject = [\"$parse\"];\n/**\n * One-way data binds the $columns array generated by ngTable/ngTableDynamic to the specified\n * expression.\n * This allows the $columns array created for the table to be accessed outside of the html table\n * markup.\n *\n * @ngdoc directive\n *\n * @example\n * ```html\n * \n * ```\n */\nfunction ngTableColumnsBinding($parse) {\n var directive = {\n restrict: 'A',\n link: linkFn\n };\n return directive;\n function linkFn($scope, $element, $attrs) {\n var setter = $parse($attrs.ngTableColumnsBinding).assign;\n if (setter) {\n $scope.$watch('$columns', function (newColumns) {\n var shallowClone = (newColumns || []).slice(0);\n setter($scope, shallowClone);\n });\n }\n }\n}\nexports.ngTableColumnsBinding = ngTableColumnsBinding;\n\n\n/***/ },\n/* 16 */\n/* unknown exports provided */\n/* all exports used */\n/*!******************************************!*\\\n !*** ./src/browser/ngTableController.ts ***!\n \\******************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\"use strict\";\nvar ng1 = __webpack_require__(/*! angular */ 0);\nvar core_1 = __webpack_require__(/*! ../core */ 1);\n/**\n * The controller for the {@link ngTable ngTable} and {@link ngTableDynamic ngTableDynamic} directives\n */\nvar NgTableController = (function () {\n function NgTableController($scope, $timeout, $parse, $compile, $attrs, $element, $document, ngTableColumn, ngTableEventsChannel) {\n this.$scope = $scope;\n this.$parse = $parse;\n this.$compile = $compile;\n this.$attrs = $attrs;\n this.$element = $element;\n this.$document = $document;\n this.ngTableColumn = ngTableColumn;\n this.ngTableEventsChannel = ngTableEventsChannel;\n var isFirstTimeLoad = true;\n $scope.$filterRow = { disabled: false };\n $scope.$loading = false;\n // until such times as the directive uses an isolated scope, we need to ensure that the check for\n // the params field only consults the \"own properties\" of the $scope. This is to avoid seeing the params\n // field on a $scope higher up in the prototype chain\n if (!$scope.hasOwnProperty(\"params\")) {\n $scope.params = new core_1.NgTableParams(true);\n }\n this.delayFilter = (function () {\n var timer;\n return function (callback, ms) {\n $timeout.cancel(timer);\n timer = $timeout(callback, ms);\n };\n })();\n // watch for when a new NgTableParams is bound to the scope\n // CRITICAL: the watch must be for reference and NOT value equality; this is because NgTableParams maintains\n // the current data page as a field. Checking this for value equality would be terrible for performance\n // and potentially cause an error if the items in that array has circular references\n this.$scope.$watch('params', function (newParams, oldParams) {\n if (newParams === oldParams || !newParams) {\n return;\n }\n newParams.reload();\n }, false);\n this.subscribeToTableEvents();\n }\n Object.defineProperty(NgTableController.prototype, \"hasVisibleFilterColumn\", {\n get: function () {\n var _this = this;\n if (!this.$scope.$columns)\n return false;\n return this.some(this.$scope.$columns, function ($column) {\n return $column.show(_this.$scope) && !!$column.filter(_this.$scope);\n });\n },\n enumerable: true,\n configurable: true\n });\n NgTableController.prototype.onDataReloadStatusChange = function (newStatus /*, oldStatus*/) {\n if (!newStatus || this.$scope.params.hasErrorState()) {\n return;\n }\n var currentParams = this.$scope.params;\n var filterOptions = currentParams.settings().filterOptions;\n if (currentParams.hasFilterChanges()) {\n var applyFilter = function () {\n currentParams.page(1);\n currentParams.reload();\n };\n if (filterOptions.filterDelay) {\n this.delayFilter(applyFilter, filterOptions.filterDelay);\n }\n else {\n applyFilter();\n }\n }\n else {\n currentParams.reload();\n }\n };\n NgTableController.prototype.compileDirectiveTemplates = function () {\n if (!this.$element.hasClass('ng-table')) {\n this.$scope.templates = {\n header: (this.$attrs.templateHeader ? this.$attrs.templateHeader : 'ng-table/header.html'),\n pagination: (this.$attrs.templatePagination ? this.$attrs.templatePagination : 'ng-table/pager.html')\n };\n this.$element.addClass('ng-table');\n var headerTemplate = null;\n // $element.find('> thead').length === 0 doesn't work on jqlite\n var theadFound_1 = false;\n ng1.forEach(this.$element.children(), function (e) {\n if (e.tagName === 'THEAD') {\n theadFound_1 = true;\n }\n });\n if (!theadFound_1) {\n headerTemplate = ng1.element('', this.$document);\n this.$element.prepend(headerTemplate);\n }\n var paginationTemplate = ng1.element('
', this.$document);\n this.$element.after(paginationTemplate);\n if (headerTemplate) {\n this.$compile(headerTemplate)(this.$scope);\n }\n this.$compile(paginationTemplate)(this.$scope);\n }\n };\n NgTableController.prototype.loadFilterData = function ($columns) {\n var _this = this;\n ng1.forEach($columns, function ($column) {\n var result = $column.filterData(_this.$scope);\n if (!result) {\n delete $column.filterData;\n return undefined;\n }\n if (isPromiseLike(result)) {\n delete $column.filterData;\n return result.then(function (data) {\n // our deferred can eventually return arrays, functions and objects\n if (!ng1.isArray(data) && !ng1.isFunction(data) && !ng1.isObject(data)) {\n // if none of the above was found - we just want an empty array\n data = [];\n }\n $column.data = data;\n });\n }\n else {\n return $column.data = result;\n }\n });\n function isPromiseLike(val) {\n return val && typeof val === 'object' && typeof val.then === 'function';\n }\n };\n NgTableController.prototype.buildColumns = function (columns) {\n var _this = this;\n // todo: use strictNullChecks and remove guard clause\n var result = [];\n (columns || []).forEach(function (col) {\n result.push(_this.ngTableColumn.buildColumn(col, _this.$scope, result));\n });\n return result;\n };\n NgTableController.prototype.parseNgTableDynamicExpr = function (attr) {\n if (!attr || attr.indexOf(\" with \") > -1) {\n var parts = attr.split(/\\s+with\\s+/);\n return {\n tableParams: parts[0],\n columns: parts[1]\n };\n }\n else {\n throw new Error('Parse error (expected example: ng-table-dynamic=\\'tableParams with cols\\')');\n }\n };\n NgTableController.prototype.setupBindingsToInternalScope = function (tableParamsExpr) {\n // note: this we're setting up watches to simulate angular's isolated scope bindings\n var _this = this;\n // note: is REALLY important to watch for a change to the ngTableParams *reference* rather than\n // $watch for value equivalence. This is because ngTableParams references the current page of data as\n // a field and it's important not to watch this\n this.$scope.$watch(tableParamsExpr, function (params) {\n if (params === undefined) {\n return;\n }\n _this.$scope.params = params;\n }, false);\n this.setupFilterRowBindingsToInternalScope();\n this.setupGroupRowBindingsToInternalScope();\n };\n NgTableController.prototype.setupFilterRowBindingsToInternalScope = function () {\n var _this = this;\n if (this.$attrs.showFilter) {\n this.$scope.$parent.$watch(this.$attrs.showFilter, function (value) {\n _this.$scope.show_filter = value;\n });\n }\n else {\n this.$scope.$watch(function () { return _this.hasVisibleFilterColumn; }, function (value) {\n _this.$scope.show_filter = value;\n });\n }\n if (this.$attrs.disableFilter) {\n this.$scope.$parent.$watch(this.$attrs.disableFilter, function (value) {\n _this.$scope.$filterRow.disabled = value;\n });\n }\n };\n NgTableController.prototype.setupGroupRowBindingsToInternalScope = function () {\n var _this = this;\n this.$scope.$groupRow = { show: false };\n if (this.$attrs.showGroup) {\n var showGroupGetter_1 = this.$parse(this.$attrs.showGroup);\n this.$scope.$parent.$watch(showGroupGetter_1, function (value) {\n _this.$scope.$groupRow.show = value;\n });\n if (showGroupGetter_1.assign) {\n // setup two-way databinding thus allowing ngTableGrowRow to assign to the showGroup expression\n this.$scope.$watch('$groupRow.show', function (value) {\n showGroupGetter_1.assign(_this.$scope.$parent, value);\n });\n }\n }\n else {\n this.$scope.$watch('params.hasGroup()', function (newValue) {\n _this.$scope.$groupRow.show = newValue;\n });\n }\n };\n NgTableController.prototype.getVisibleColumns = function () {\n var _this = this;\n return (this.$scope.$columns || []).filter(function (c) {\n return c.show(_this.$scope);\n });\n };\n NgTableController.prototype.subscribeToTableEvents = function () {\n var _this = this;\n this.$scope.$watch('params.isDataReloadRequired()', function (newStatus /*, oldStatus*/) {\n _this.onDataReloadStatusChange(newStatus);\n });\n this.ngTableEventsChannel.onAfterReloadData(function (params, newDatapage) {\n var visibleColumns = _this.getVisibleColumns();\n if (params.hasGroup()) {\n _this.$scope.$groups = (newDatapage || []);\n _this.$scope.$groups.visibleColumnCount = visibleColumns.length;\n }\n else {\n _this.$scope.$data = (newDatapage || []);\n _this.$scope.$data.visibleColumnCount = visibleColumns.length;\n }\n }, this.$scope, function (publisher) { return _this.$scope.params === publisher; });\n this.ngTableEventsChannel.onPagesChanged(function (params, newPages) {\n _this.$scope.pages = newPages;\n }, this.$scope, function (publisher) { return _this.$scope.params === publisher; });\n };\n NgTableController.prototype.some = function (array, predicate) {\n var found = false;\n for (var i = 0; i < array.length; i++) {\n var obj = array[i];\n if (predicate(obj)) {\n found = true;\n break;\n }\n }\n return found;\n };\n NgTableController.$inject = [\n '$scope', '$timeout', '$parse', '$compile', '$attrs', '$element', '$document', 'ngTableColumn', 'ngTableEventsChannel'\n ];\n return NgTableController;\n}());\nexports.NgTableController = NgTableController;\n\n\n/***/ },\n/* 17 */\n/* unknown exports provided */\n/* all exports used */\n/*!*************************************************!*\\\n !*** ./src/browser/ngTableDynamic.directive.ts ***!\n \\*************************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\"use strict\";\nvar ng1 = __webpack_require__(/*! angular */ 0);\nngTableDynamic.$inject = [];\n/**\n * A dynamic version of the {@link ngTable ngTable} directive that accepts a dynamic list of columns\n * definitions to render\n * @ngdoc directive\n *\n * @example\n * ```html\n *
\n * \n * \n * \n *
{{row[col.field]}}
\n * ```\n */\nfunction ngTableDynamic() {\n return {\n restrict: 'A',\n priority: 1001,\n scope: true,\n controller: 'ngTableController',\n compile: function (tElement) {\n var row;\n // IE 8 fix :not(.ng-table-group) selector\n ng1.forEach(tElement.find('tr'), function (tr) {\n tr = ng1.element(tr);\n if (!tr.hasClass('ng-table-group') && !row) {\n row = tr;\n }\n });\n if (!row) {\n return undefined;\n }\n ng1.forEach(row.find('td'), function (item) {\n var el = ng1.element(item);\n var getAttrValue = function (attr) {\n return el.attr('x-data-' + attr) || el.attr('data-' + attr) || el.attr(attr);\n };\n // this used in responsive table\n var titleExpr = getAttrValue('title');\n if (!titleExpr) {\n el.attr('data-title-text', '{{$columns[$index].titleAlt(this) || $columns[$index].title(this)}}');\n }\n var showExpr = el.attr('ng-if');\n if (!showExpr) {\n el.attr('ng-if', '$columns[$index].show(this)');\n }\n });\n return function (scope, element, attrs, controller) {\n var expr = controller.parseNgTableDynamicExpr(attrs.ngTableDynamic);\n controller.setupBindingsToInternalScope(expr.tableParams);\n controller.compileDirectiveTemplates();\n scope.$watchCollection(expr.columns, function (newCols /*, oldCols*/) {\n scope.$columns = controller.buildColumns(newCols);\n controller.loadFilterData(scope.$columns);\n });\n };\n }\n };\n}\nexports.ngTableDynamic = ngTableDynamic;\n\n\n/***/ },\n/* 18 */\n/* unknown exports provided */\n/* all exports used */\n/*!********************************************!*\\\n !*** ./src/browser/ngTableFilterConfig.ts ***!\n \\********************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\"use strict\";\nvar ng1 = __webpack_require__(/*! angular */ 0);\n/**\n * The angular provider used to configure the behaviour of the `NgTableFilterConfig` service.\n */\nvar NgTableFilterConfigProvider = (function () {\n function NgTableFilterConfigProvider($injector) {\n var _this = this;\n this.defaultConfig = {\n defaultBaseUrl: 'ng-table/filters/',\n defaultExt: '.html',\n aliasUrls: {}\n };\n this.$get = function () {\n return $injector.instantiate(NgTableFilterConfig, { config: ng1.copy(_this.config) });\n };\n this.$get.$inject = [];\n this.resetConfigs();\n }\n /**\n * Reset back to factory defaults the config values that `NgTableFilterConfig` service will use\n */\n NgTableFilterConfigProvider.prototype.resetConfigs = function () {\n this.config = this.defaultConfig;\n };\n /**\n * Set the config values used by `NgTableFilterConfig` service\n */\n NgTableFilterConfigProvider.prototype.setConfig = function (customConfig) {\n var mergeConfig = ng1.extend({}, this.config, customConfig);\n mergeConfig.aliasUrls = ng1.extend({}, this.config.aliasUrls, customConfig.aliasUrls);\n this.config = mergeConfig;\n };\n NgTableFilterConfigProvider.$inject = ['$injector'];\n return NgTableFilterConfigProvider;\n}());\nexports.NgTableFilterConfigProvider = NgTableFilterConfigProvider;\n/**\n * Exposes configuration values and methods used to return the location of the html\n * templates used to render the filter row of an ng-table directive\n */\nvar NgTableFilterConfig = (function () {\n function NgTableFilterConfig(\n /**\n * Readonly copy of the final values used to configure the service.\n */\n config) {\n this.config = config;\n }\n /**\n * Return the url of the html filter template registered with the alias supplied\n */\n NgTableFilterConfig.prototype.getUrlForAlias = function (aliasName, filterKey) {\n return this.config.aliasUrls[aliasName] || this.config.defaultBaseUrl + aliasName + this.config.defaultExt;\n };\n /**\n * Return the url of the html filter template for the supplied definition and key.\n * For more information see the documentation for {@link IFilterTemplateMap}\n */\n NgTableFilterConfig.prototype.getTemplateUrl = function (filterDef, filterKey) {\n var filterName;\n if (typeof filterDef !== 'string') {\n filterName = filterDef.id;\n }\n else {\n filterName = filterDef;\n }\n if (filterName.indexOf('/') !== -1) {\n return filterName;\n }\n return this.getUrlForAlias(filterName, filterKey);\n };\n NgTableFilterConfig.$inject = ['config'];\n return NgTableFilterConfig;\n}());\nexports.NgTableFilterConfig = NgTableFilterConfig;\n\n\n/***/ },\n/* 19 */\n/* unknown exports provided */\n/* all exports used */\n/*!***************************************************!*\\\n !*** ./src/browser/ngTableFilterRow.directive.ts ***!\n \\***************************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\"use strict\";\nvar templateUrl = __webpack_require__(/*! ./filterRow.html */ 42);\nngTableFilterRow.$inject = [];\n/**\n * directive that renders the filter header row for a table\n * @ngdoc directive\n * @example\n * ```html\n * \n * ```\n */\nfunction ngTableFilterRow() {\n var directive = {\n restrict: 'E',\n replace: true,\n templateUrl: templateUrl,\n scope: true,\n controller: 'ngTableFilterRowController',\n controllerAs: '$ctrl'\n };\n return directive;\n}\nexports.ngTableFilterRow = ngTableFilterRow;\n\n\n/***/ },\n/* 20 */\n/* unknown exports provided */\n/* all exports used */\n/*!***************************************************!*\\\n !*** ./src/browser/ngTableFilterRowController.ts ***!\n \\***************************************************/\n/***/ function(module, exports) {\n\n\"use strict\";\n/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\"use strict\";\n/**\n * Controller for the {@link ngTableFilterRow ngTableFilterRow} directive\n */\nvar NgTableFilterRowController = (function () {\n function NgTableFilterRowController($scope, ngTableFilterConfig) {\n this.config = ngTableFilterConfig;\n // todo: stop doing this. Why?\n // * scope inheritance makes it hard to know how supplies functions\n // * scope is not a concept in angular 2\n // make function available to filter templates\n $scope.getFilterPlaceholderValue = this.getFilterPlaceholderValue.bind(this);\n }\n NgTableFilterRowController.prototype.getFilterCellCss = function (filter, layout) {\n if (layout !== 'horizontal') {\n return 's12';\n }\n var size = Object.keys(filter).length;\n var width = parseInt((12 / size).toString(), 10);\n return 's' + width;\n };\n NgTableFilterRowController.prototype.getFilterPlaceholderValue = function (filterDef, filterKey) {\n if (typeof filterDef === 'string') {\n return '';\n }\n else {\n return filterDef.placeholder;\n }\n };\n NgTableFilterRowController.$inject = ['$scope', 'ngTableFilterConfig'];\n return NgTableFilterRowController;\n}());\nexports.NgTableFilterRowController = NgTableFilterRowController;\n\n\n/***/ },\n/* 21 */\n/* unknown exports provided */\n/* all exports used */\n/*!**************************************************!*\\\n !*** ./src/browser/ngTableGroupRow.directive.ts ***!\n \\**************************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\"use strict\";\nvar templateUrl = __webpack_require__(/*! ./groupRow.html */ 47);\nngTableGroupRow.$inject = [];\n/**\n * directive that renders the group header row for a table\n * @ngdoc directive\n * @example\n * ```html\n * \n * ```\n */\nfunction ngTableGroupRow() {\n var directive = {\n restrict: 'E',\n replace: true,\n templateUrl: templateUrl,\n scope: true,\n controller: 'ngTableGroupRowController',\n controllerAs: '$ctrl'\n };\n return directive;\n}\nexports.ngTableGroupRow = ngTableGroupRow;\n\n\n/***/ },\n/* 22 */\n/* unknown exports provided */\n/* all exports used */\n/*!**************************************************!*\\\n !*** ./src/browser/ngTableGroupRowController.ts ***!\n \\**************************************************/\n/***/ function(module, exports) {\n\n\"use strict\";\n/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\"use strict\";\n/**\n * Controller for the {@link ngTableGroupRow ngTableGroupRow} directive\n */\nvar NgTableGroupRowController = (function () {\n function NgTableGroupRowController($scope) {\n var _this = this;\n this.$scope = $scope;\n this.groupFns = [];\n $scope.$watch('params.group()', function (newGrouping) {\n _this.setGroup(newGrouping);\n }, true);\n }\n NgTableGroupRowController.prototype.getGroupables = function () {\n var _this = this;\n var groupableCols = this.$scope.$columns.filter(function ($column) { return !!$column.groupable(_this.$scope); });\n return this.groupFns.concat(groupableCols);\n };\n NgTableGroupRowController.prototype.getGroupTitle = function (group) {\n return this.isGroupingFunc(group) ? group.title : group.title(this.$scope);\n };\n NgTableGroupRowController.prototype.getVisibleColumns = function () {\n var _this = this;\n return this.$scope.$columns.filter(function ($column) { return $column.show(_this.$scope); });\n };\n NgTableGroupRowController.prototype.groupBy = function (group) {\n if (this.isSelectedGroup(group)) {\n this.changeSortDirection();\n }\n else {\n if (this.isGroupingFunc(group)) {\n this.$scope.params.group(group);\n }\n else {\n // it's OK, we know that groupable will return a string\n // this is guaranteed by getGroupables returning only\n // columns that return (truthy) strings\n this.$scope.params.group(group.groupable(this.$scope));\n }\n }\n };\n NgTableGroupRowController.prototype.isSelectedGroup = function (group) {\n if (this.isGroupingFunc(group)) {\n return group === this.$scope.$selGroup;\n }\n else {\n return group.groupable(this.$scope) === this.$scope.$selGroup;\n }\n };\n NgTableGroupRowController.prototype.toggleDetail = function () {\n this.$scope.params.settings().groupOptions.isExpanded = !this.$scope.params.settings().groupOptions.isExpanded;\n return this.$scope.params.reload();\n };\n NgTableGroupRowController.prototype.changeSortDirection = function () {\n var newDirection;\n if (this.$scope.params.hasGroup(this.$scope.$selGroup, 'asc')) {\n newDirection = 'desc';\n }\n else if (this.$scope.params.hasGroup(this.$scope.$selGroup, 'desc')) {\n newDirection = '';\n }\n else {\n newDirection = 'asc';\n }\n this.$scope.params.group(this.$scope.$selGroup, newDirection);\n };\n NgTableGroupRowController.prototype.findGroupColumn = function (groupKey) {\n var _this = this;\n return this.$scope.$columns.filter(function ($column) { return $column.groupable(_this.$scope) === groupKey; })[0];\n };\n NgTableGroupRowController.prototype.isGroupingFunc = function (val) {\n return typeof val === 'function';\n };\n NgTableGroupRowController.prototype.setGroup = function (grouping) {\n var existingGroupCol = this.findGroupColumn(this.$scope.$selGroup);\n if (existingGroupCol && existingGroupCol.show.assign) {\n existingGroupCol.show.assign(this.$scope, true);\n }\n if (this.isGroupingFunc(grouping)) {\n this.groupFns = [grouping];\n this.$scope.$selGroup = grouping;\n this.$scope.$selGroupTitle = grouping.title;\n }\n else {\n // note: currently only one group is implemented\n var groupKey = Object.keys(grouping || {})[0];\n var groupedColumn = this.findGroupColumn(groupKey);\n if (groupedColumn) {\n this.$scope.$selGroupTitle = groupedColumn.title(this.$scope);\n this.$scope.$selGroup = groupKey;\n if (groupedColumn.show.assign) {\n groupedColumn.show.assign(this.$scope, false);\n }\n }\n }\n };\n NgTableGroupRowController.$inject = ['$scope'];\n return NgTableGroupRowController;\n}());\nexports.NgTableGroupRowController = NgTableGroupRowController;\n\n\n/***/ },\n/* 23 */\n/* unknown exports provided */\n/* all exports used */\n/*!****************************************************!*\\\n !*** ./src/browser/ngTablePagination.directive.ts ***!\n \\****************************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\"use strict\";\nvar ng1 = __webpack_require__(/*! angular */ 0);\nngTablePagination.$inject = ['$compile', '$document', 'ngTableEventsChannel'];\n/**\n * Directive that renders the table pagination controls\n * @ngdoc directive\n */\nfunction ngTablePagination($compile, $document, ngTableEventsChannel) {\n return {\n restrict: 'A',\n scope: {\n 'params': '=ngTablePagination',\n 'templateUrl': '='\n },\n replace: false,\n link: function (scope, element /*, attrs*/) {\n ngTableEventsChannel.onAfterReloadData(function (pubParams) {\n scope.pages = pubParams.generatePagesArray();\n }, scope, function (pubParams) {\n return pubParams === scope.params;\n });\n scope.$watch('templateUrl', function (templateUrl) {\n if (templateUrl === undefined) {\n return;\n }\n var template = ng1.element('
', $document);\n element.append(template);\n $compile(template)(scope);\n });\n }\n };\n}\nexports.ngTablePagination = ngTablePagination;\n\n\n/***/ },\n/* 24 */\n/* unknown exports provided */\n/* all exports used */\n/*!********************************************************!*\\\n !*** ./src/browser/ngTableSelectFilterDs.directive.ts ***!\n \\********************************************************/\n/***/ function(module, exports) {\n\n\"use strict\";\n/**\n * ngTable: Table + Angular JS\n *\n * @author Vitalii Savchuk \n * @url https://github.com/esvit/ng-table/\n * @license New BSD License \n */\n\"use strict\";\nngTableSelectFilterDs.$inject = [];\n/**\n * Takes the array returned by $column.filterData and makes it available as `$selectData` on the `$scope`.\n *\n * The resulting `$selectData` array will contain an extra item that is suitable to represent the user\n * \"deselecting\" an item from a `\\n\";\nvar angular = __webpack_require__(/*! angular */ 0);\nangular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]);\nmodule.exports = path;\n\n/***/ },\n/* 44 */\n/* unknown exports provided */\n/* all exports used */\n/*!**************************************************!*\\\n !*** ./src/browser/filters/select-multiple.html ***!\n \\**************************************************/\n/***/ function(module, exports, __webpack_require__) {\n\nvar path = 'ng-table/filters/select-multiple.html';\nvar html = \"\\n\";\nvar angular = __webpack_require__(/*! angular */ 0);\nangular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]);\nmodule.exports = path;\n\n/***/ },\n/* 45 */\n/* unknown exports provided */\n/* all exports used */\n/*!*****************************************!*\\\n !*** ./src/browser/filters/select.html ***!\n \\*****************************************/\n/***/ function(module, exports, __webpack_require__) {\n\nvar path = 'ng-table/filters/select.html';\nvar html = \"\\n\";\nvar angular = __webpack_require__(/*! angular */ 0);\nangular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]);\nmodule.exports = path;\n\n/***/ },\n/* 46 */\n/* unknown exports provided */\n/* all exports used */\n/*!***************************************!*\\\n !*** ./src/browser/filters/text.html ***!\n \\***************************************/\n/***/ function(module, exports, __webpack_require__) {\n\nvar path = 'ng-table/filters/text.html';\nvar html = \"\\n\";\nvar angular = __webpack_require__(/*! angular */ 0);\nangular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]);\nmodule.exports = path;\n\n/***/ },\n/* 47 */\n/* unknown exports provided */\n/* all exports used */\n/*!***********************************!*\\\n !*** ./src/browser/groupRow.html ***!\n \\***********************************/\n/***/ function(module, exports, __webpack_require__) {\n\nvar path = 'ng-table/groupRow.html';\nvar html = \"\\n \\n \\n {{$selGroupTitle}}\\n \\n \\n \\n \\n \\n\\n\";\nvar angular = __webpack_require__(/*! angular */ 0);\nangular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]);\nmodule.exports = path;\n\n/***/ },\n/* 48 */\n/* unknown exports provided */\n/* all exports used */\n/*!*********************************!*\\\n !*** ./src/browser/header.html ***!\n \\*********************************/\n/***/ function(module, exports, __webpack_require__) {\n\nvar path = 'ng-table/header.html';\nvar html = \"\\n\\n\\n\";\nvar angular = __webpack_require__(/*! angular */ 0);\nangular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]);\nmodule.exports = path;\n\n/***/ },\n/* 49 */\n/* unknown exports provided */\n/* all exports used */\n/*!********************************!*\\\n !*** ./src/browser/pager.html ***!\n \\********************************/\n/***/ function(module, exports, __webpack_require__) {\n\nvar path = 'ng-table/pager.html';\nvar html = \"
\\n
\\n \\n
\\n
    \\n
  • \\n «\\n \\n \\n \\n \\n »\\n
  • \\n
\\n
\\n\";\nvar angular = __webpack_require__(/*! angular */ 0);\nangular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]);\nmodule.exports = path;\n\n/***/ },\n/* 50 */\n/* unknown exports provided */\n/* all exports used */\n/*!************************************!*\\\n !*** ./src/browser/sorterRow.html ***!\n \\************************************/\n/***/ function(module, exports, __webpack_require__) {\n\nvar path = 'ng-table/sorterRow.html';\nvar html = \"\\n \\n
\\n \\n
\\n
\\n \\n\\n\";\nvar angular = __webpack_require__(/*! angular */ 0);\nangular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]);\nmodule.exports = path;\n\n/***/ },\n/* 51 */\n/* unknown exports provided */\n/* all exports used */\n/*!******************!*\\\n !*** ./index.ts ***!\n \\******************/\n/***/ function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\"use strict\";\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nvar ng1 = __webpack_require__(/*! angular */ 0);\nvar core_1 = __webpack_require__(/*! ./src/core */ 1);\nvar browser_1 = __webpack_require__(/*! ./src/browser */ 2);\nvar ngTableModule = ng1.module('ngTable', [core_1.ngTableCoreModule.name, browser_1.ngTableBrowserModule.name]);\nexports.ngTableModule = ngTableModule;\n__export(__webpack_require__(/*! ./src/core */ 1));\n__export(__webpack_require__(/*! ./src/browser */ 2));\n\n\n/***/ }\n/******/ ]);\n});\n//# sourceMappingURL=ng-table.js.map","/*! ngImgCrop v0.3.2 License: MIT */!function(){\"use strict\";var e=angular.module(\"ngImgCrop\",[]);e.factory(\"cropAreaCircle\",[\"cropArea\",function(e){var t=function(){e.apply(this,arguments),this._boxResizeBaseSize=20,this._boxResizeNormalRatio=.9,this._boxResizeHoverRatio=1.2,this._iconMoveNormalRatio=.9,this._iconMoveHoverRatio=1.2,this._boxResizeNormalSize=this._boxResizeBaseSize*this._boxResizeNormalRatio,this._boxResizeHoverSize=this._boxResizeBaseSize*this._boxResizeHoverRatio,this._posDragStartX=0,this._posDragStartY=0,this._posResizeStartX=0,this._posResizeStartY=0,this._posResizeStartSize=0,this._boxResizeIsHover=!1,this._areaIsHover=!1,this._boxResizeIsDragging=!1,this._areaIsDragging=!1};return t.prototype=new e,t.prototype._calcCirclePerimeterCoords=function(e){var t=this._size/2,i=e*(Math.PI/180),r=this._x+t*Math.cos(i),s=this._y+t*Math.sin(i);return[r,s]},t.prototype._calcResizeIconCenterCoords=function(){return this._calcCirclePerimeterCoords(-45)},t.prototype._isCoordWithinArea=function(e){return Math.sqrt((e[0]-this._x)*(e[0]-this._x)+(e[1]-this._y)*(e[1]-this._y))t[0]-i&&e[0]t[1]-i&&e[1]a?this._posResizeStartSize+2*a:this._posResizeStartSize+2*o,this._size=Math.max(this._minSize,s),this._boxResizeIsHover=!0,r=!0,this._events.trigger(\"area-resize\")}else this._isCoordWithinBoxResize([e,t])?(i=\"nesw-resize\",this._areaIsHover=!1,this._boxResizeIsHover=!0,r=!0):this._isCoordWithinArea([e,t])&&(i=\"move\",this._areaIsHover=!0,r=!0);return this._dontDragOutside(),angular.element(this._ctx.canvas).css({cursor:i}),r},t.prototype.processMouseDown=function(e,t){this._isCoordWithinBoxResize([e,t])?(this._areaIsDragging=!1,this._areaIsHover=!1,this._boxResizeIsDragging=!0,this._boxResizeIsHover=!0,this._posResizeStartX=e,this._posResizeStartY=t,this._posResizeStartSize=this._size,this._events.trigger(\"area-resize-start\")):this._isCoordWithinArea([e,t])&&(this._areaIsDragging=!0,this._areaIsHover=!0,this._boxResizeIsDragging=!1,this._boxResizeIsHover=!1,this._posDragStartX=e-this._x,this._posDragStartY=t-this._y,this._events.trigger(\"area-move-start\"))},t.prototype.processMouseUp=function(){this._areaIsDragging&&(this._areaIsDragging=!1,this._events.trigger(\"area-move-end\")),this._boxResizeIsDragging&&(this._boxResizeIsDragging=!1,this._events.trigger(\"area-resize-end\")),this._areaIsHover=!1,this._boxResizeIsHover=!1,this._posDragStartX=0,this._posDragStartY=0},t}]),e.factory(\"cropAreaSquare\",[\"cropArea\",function(e){var t=function(){e.apply(this,arguments),this._resizeCtrlBaseRadius=10,this._resizeCtrlNormalRatio=.75,this._resizeCtrlHoverRatio=1,this._iconMoveNormalRatio=.9,this._iconMoveHoverRatio=1.2,this._resizeCtrlNormalRadius=this._resizeCtrlBaseRadius*this._resizeCtrlNormalRatio,this._resizeCtrlHoverRadius=this._resizeCtrlBaseRadius*this._resizeCtrlHoverRatio,this._posDragStartX=0,this._posDragStartY=0,this._posResizeStartX=0,this._posResizeStartY=0,this._posResizeStartSize=0,this._resizeCtrlIsHover=-1,this._areaIsHover=!1,this._resizeCtrlIsDragging=-1,this._areaIsDragging=!1};return t.prototype=new e,t.prototype._calcSquareCorners=function(){var e=this._size/2;return[[this._x-e,this._y-e],[this._x+e,this._y-e],[this._x-e,this._y+e],[this._x+e,this._y+e]]},t.prototype._calcSquareDimensions=function(){var e=this._size/2;return{left:this._x-e,top:this._y-e,right:this._x+e,bottom:this._y+e}},t.prototype._isCoordWithinArea=function(e){var t=this._calcSquareDimensions();return e[0]>=t.left&&e[0]<=t.right&&e[1]>=t.top&&e[1]<=t.bottom},t.prototype._isCoordWithinResizeCtrl=function(e){for(var t=this._calcSquareCorners(),i=-1,r=0,s=t.length;s>r;r++){var o=t[r];if(e[0]>o[0]-this._resizeCtrlHoverRadius&&e[0]o[1]-this._resizeCtrlHoverRadius&&e[1]i;i++){var s=t[i];this._cropCanvas.drawIconResizeCircle(s,this._resizeCtrlBaseRadius,this._resizeCtrlIsHover===i?this._resizeCtrlHoverRatio:this._resizeCtrlNormalRatio)}},t.prototype.processMouseMove=function(e,t){var i=\"default\",r=!1;if(this._resizeCtrlIsHover=-1,this._areaIsHover=!1,this._areaIsDragging)this._x=e-this._posDragStartX,this._y=t-this._posDragStartY,this._areaIsHover=!0,i=\"move\",r=!0,this._events.trigger(\"area-move\");else if(this._resizeCtrlIsDragging>-1){var s,o;switch(this._resizeCtrlIsDragging){case 0:s=-1,o=-1,i=\"nwse-resize\";break;case 1:s=1,o=-1,i=\"nesw-resize\";break;case 2:s=-1,o=1,i=\"nesw-resize\";break;case 3:s=1,o=1,i=\"nwse-resize\"}var a,n=(e-this._posResizeStartX)*s,h=(t-this._posResizeStartY)*o;a=n>h?this._posResizeStartSize+h:this._posResizeStartSize+n;var c=this._size;this._size=Math.max(this._minSize,a);var l=(this._size-c)/2;this._x+=l*s,this._y+=l*o,this._resizeCtrlIsHover=this._resizeCtrlIsDragging,r=!0,this._events.trigger(\"area-resize\")}else{var u=this._isCoordWithinResizeCtrl([e,t]);if(u>-1){switch(u){case 0:i=\"nwse-resize\";break;case 1:i=\"nesw-resize\";break;case 2:i=\"nesw-resize\";break;case 3:i=\"nwse-resize\"}this._areaIsHover=!1,this._resizeCtrlIsHover=u,r=!0}else this._isCoordWithinArea([e,t])&&(i=\"move\",this._areaIsHover=!0,r=!0)}return this._dontDragOutside(),angular.element(this._ctx.canvas).css({cursor:i}),r},t.prototype.processMouseDown=function(e,t){var i=this._isCoordWithinResizeCtrl([e,t]);i>-1?(this._areaIsDragging=!1,this._areaIsHover=!1,this._resizeCtrlIsDragging=i,this._resizeCtrlIsHover=i,this._posResizeStartX=e,this._posResizeStartY=t,this._posResizeStartSize=this._size,this._events.trigger(\"area-resize-start\")):this._isCoordWithinArea([e,t])&&(this._areaIsDragging=!0,this._areaIsHover=!0,this._resizeCtrlIsDragging=-1,this._resizeCtrlIsHover=-1,this._posDragStartX=e-this._x,this._posDragStartY=t-this._y,this._events.trigger(\"area-move-start\"))},t.prototype.processMouseUp=function(){this._areaIsDragging&&(this._areaIsDragging=!1,this._events.trigger(\"area-move-end\")),this._resizeCtrlIsDragging>-1&&(this._resizeCtrlIsDragging=-1,this._events.trigger(\"area-resize-end\")),this._areaIsHover=!1,this._resizeCtrlIsHover=-1,this._posDragStartX=0,this._posDragStartY=0},t}]),e.factory(\"cropArea\",[\"cropCanvas\",function(e){var t=function(t,i){this._ctx=t,this._events=i,this._minSize=80,this._cropCanvas=new e(t),this._image=new Image,this._x=0,this._y=0,this._size=200};return t.prototype.getImage=function(){return this._image},t.prototype.setImage=function(e){this._image=e},t.prototype.getX=function(){return this._x},t.prototype.setX=function(e){this._x=e,this._dontDragOutside()},t.prototype.getY=function(){return this._y},t.prototype.setY=function(e){this._y=e,this._dontDragOutside()},t.prototype.getSize=function(){return this._size},t.prototype.setSize=function(e){this._size=Math.max(this._minSize,e),this._dontDragOutside()},t.prototype.getMinSize=function(){return this._minSize},t.prototype.setMinSize=function(e){this._minSize=e,this._size=Math.max(this._minSize,this._size),this._dontDragOutside()},t.prototype._dontDragOutside=function(){var e=this._ctx.canvas.height,t=this._ctx.canvas.width;this._size>t&&(this._size=t),this._size>e&&(this._size=e),this._xt-this._size/2&&(this._x=t-this._size/2),this._ye-this._size/2&&(this._y=e-this._size/2)},t.prototype._drawArea=function(){},t.prototype.draw=function(){this._cropCanvas.drawCropArea(this._image,[this._x,this._y],this._size,this._drawArea)},t.prototype.processMouseMove=function(){},t.prototype.processMouseDown=function(){},t.prototype.processMouseUp=function(){},t}]),e.factory(\"cropCanvas\",[function(){var e=[[-.5,-2],[-3,-4.5],[-.5,-7],[-7,-7],[-7,-.5],[-4.5,-3],[-2,-.5]],t=[[.5,-2],[3,-4.5],[.5,-7],[7,-7],[7,-.5],[4.5,-3],[2,-.5]],i=[[-.5,2],[-3,4.5],[-.5,7],[-7,7],[-7,.5],[-4.5,3],[-2,.5]],r=[[.5,2],[3,4.5],[.5,7],[7,7],[7,.5],[4.5,3],[2,.5]],s=[[-1.5,-2.5],[-1.5,-6],[-5,-6],[0,-11],[5,-6],[1.5,-6],[1.5,-2.5]],o=[[-2.5,-1.5],[-6,-1.5],[-6,-5],[-11,0],[-6,5],[-6,1.5],[-2.5,1.5]],a=[[-1.5,2.5],[-1.5,6],[-5,6],[0,11],[5,6],[1.5,6],[1.5,2.5]],n=[[2.5,-1.5],[6,-1.5],[6,-5],[11,0],[6,5],[6,1.5],[2.5,1.5]],h={areaOutline:\"#fff\",resizeBoxStroke:\"#fff\",resizeBoxFill:\"#444\",resizeBoxArrowFill:\"#fff\",resizeCircleStroke:\"#fff\",resizeCircleFill:\"#444\",moveIconFill:\"#fff\"};return function(c){var l=function(e,t,i){return[i*e[0]+t[0],i*e[1]+t[1]]},u=function(e,t,i,r){c.save(),c.fillStyle=t,c.beginPath();var s,o=l(e[0],i,r);c.moveTo(o[0],o[1]);for(var a in e)a>0&&(s=l(e[a],i,r),c.lineTo(s[0],s[1]));c.lineTo(o[0],o[1]),c.fill(),c.closePath(),c.restore()};this.drawIconMove=function(e,t){u(s,h.moveIconFill,e,t),u(o,h.moveIconFill,e,t),u(a,h.moveIconFill,e,t),u(n,h.moveIconFill,e,t)},this.drawIconResizeCircle=function(e,t,i){var r=t*i;c.save(),c.strokeStyle=h.resizeCircleStroke,c.lineWidth=2,c.fillStyle=h.resizeCircleFill,c.beginPath(),c.arc(e[0],e[1],r,0,2*Math.PI),c.fill(),c.stroke(),c.closePath(),c.restore()},this.drawIconResizeBoxBase=function(e,t,i){var r=t*i;c.save(),c.strokeStyle=h.resizeBoxStroke,c.lineWidth=2,c.fillStyle=h.resizeBoxFill,c.fillRect(e[0]-r/2,e[1]-r/2,r,r),c.strokeRect(e[0]-r/2,e[1]-r/2,r,r),c.restore()},this.drawIconResizeBoxNESW=function(e,r,s){this.drawIconResizeBoxBase(e,r,s),u(t,h.resizeBoxArrowFill,e,s),u(i,h.resizeBoxArrowFill,e,s)},this.drawIconResizeBoxNWSE=function(t,i,s){this.drawIconResizeBoxBase(t,i,s),u(e,h.resizeBoxArrowFill,t,s),u(r,h.resizeBoxArrowFill,t,s)},this.drawCropArea=function(e,t,i,r){var s=e.width/c.canvas.width,o=e.height/c.canvas.height,a=t[0]-i/2,n=t[1]-i/2;c.save(),c.strokeStyle=h.areaOutline,c.lineWidth=2,c.beginPath(),r(c,t,i),c.stroke(),c.clip(),i>0&&c.drawImage(e,a*s,n*o,i*s,i*o,a,n,i,i),c.beginPath(),r(c,t,i),c.stroke(),c.clip(),c.restore()}}}]),e.service(\"cropEXIF\",[function(){function e(e){return!!e.exifdata}function t(e,t){t=t||e.match(/^data\\:([^\\;]+)\\;base64,/im)[1]||\"\",e=e.replace(/^data\\:([^\\;]+)\\;base64,/gim,\"\");for(var i=atob(e),r=i.length,s=new ArrayBuffer(r),o=new Uint8Array(s),a=0;r>a;a++)o[a]=i.charCodeAt(a);return s}function i(e,t){var i=new XMLHttpRequest;i.open(\"GET\",e,!0),i.responseType=\"blob\",i.onload=function(){(200==this.status||0===this.status)&&t(this.response)},i.send()}function r(e,r){function a(t){var i=s(t),a=o(t);e.exifdata=i||{},e.iptcdata=a||{},r&&r.call(e)}if(e.src)if(/^data\\:/i.test(e.src)){var n=t(e.src);a(n)}else if(/^blob\\:/i.test(e.src)){var h=new FileReader;h.onload=function(e){a(e.target.result)},i(e.src,function(e){h.readAsArrayBuffer(e)})}else{var c=new XMLHttpRequest;c.onload=function(){if(200!=this.status&&0!==this.status)throw\"Could not load image\";a(c.response),c=null},c.open(\"GET\",e.src,!0),c.responseType=\"arraybuffer\",c.send(null)}else if(window.FileReader&&(e instanceof window.Blob||e instanceof window.File)){var h=new FileReader;h.onload=function(e){u&&console.log(\"Got file of length \"+e.target.result.byteLength),a(e.target.result)},h.readAsArrayBuffer(e)}}function s(e){var t=new DataView(e);if(u&&console.log(\"Got file of length \"+e.byteLength),255!=t.getUint8(0)||216!=t.getUint8(1))return u&&console.log(\"Not a valid JPEG\"),!1;for(var i,r=2,s=e.byteLength;s>r;){if(255!=t.getUint8(r))return u&&console.log(\"Not a valid marker at offset \"+r+\", found: \"+t.getUint8(r)),!1;if(i=t.getUint8(r+1),u&&console.log(i),225==i)return u&&console.log(\"Found 0xFFE1 marker\"),l(t,r+4,t.getUint16(r+2)-2);r+=2+t.getUint16(r+2)}}function o(e){var t=new DataView(e);if(u&&console.log(\"Got file of length \"+e.byteLength),255!=t.getUint8(0)||216!=t.getUint8(1))return u&&console.log(\"Not a valid JPEG\"),!1;for(var i=2,r=e.byteLength,s=function(e,t){return 56===e.getUint8(t)&&66===e.getUint8(t+1)&&73===e.getUint8(t+2)&&77===e.getUint8(t+3)&&4===e.getUint8(t+4)&&4===e.getUint8(t+5)};r>i;){if(s(t,i)){var o=t.getUint8(i+7);o%2!==0&&(o+=1),0===o&&(o=4);var n=i+8+o,h=t.getUint16(i+6+o);return a(e,n,h)}i++}}function a(e,t,i){for(var r,s,o,a,n,h=new DataView(e),l={},u=t;t+i>u;)28===h.getUint8(u)&&2===h.getUint8(u+1)&&(a=h.getUint8(u+2),a in _&&(o=h.getInt16(u+3),n=o+5,s=_[a],r=c(h,u+5,o),l.hasOwnProperty(s)?l[s]instanceof Array?l[s].push(r):l[s]=[l[s],r]:l[s]=r)),u++;return l}function n(e,t,i,r,s){var o,a,n,c=e.getUint16(i,!s),l={};for(n=0;c>n;n++)o=i+12*n+2,a=r[e.getUint16(o,!s)],!a&&u&&console.log(\"Unknown tag: \"+e.getUint16(o,!s)),l[a]=h(e,o,t,i,s);return l}function h(e,t,i,r,s){var o,a,n,h,l,u,g=e.getUint16(t+2,!s),d=e.getUint32(t+4,!s),f=e.getUint32(t+8,!s)+i;switch(g){case 1:case 7:if(1==d)return e.getUint8(t+8,!s);for(o=d>4?f:t+8,a=[],h=0;d>h;h++)a[h]=e.getUint8(o+h);return a;case 2:return o=d>4?f:t+8,c(e,o,d-1);case 3:if(1==d)return e.getUint16(t+8,!s);for(o=d>2?f:t+8,a=[],h=0;d>h;h++)a[h]=e.getUint16(o+2*h,!s);return a;case 4:if(1==d)return e.getUint32(t+8,!s);for(a=[],h=0;d>h;h++)a[h]=e.getUint32(f+4*h,!s);return a;case 5:if(1==d)return l=e.getUint32(f,!s),u=e.getUint32(f+4,!s),n=new Number(l/u),n.numerator=l,n.denominator=u,n;for(a=[],h=0;d>h;h++)l=e.getUint32(f+8*h,!s),u=e.getUint32(f+4+8*h,!s),a[h]=new Number(l/u),a[h].numerator=l,a[h].denominator=u;return a;case 9:if(1==d)return e.getInt32(t+8,!s);for(a=[],h=0;d>h;h++)a[h]=e.getInt32(f+4*h,!s);return a;case 10:if(1==d)return e.getInt32(f,!s)/e.getInt32(f+4,!s);for(a=[],h=0;d>h;h++)a[h]=e.getInt32(f+8*h,!s)/e.getInt32(f+4+8*h,!s);return a}}function c(e,t,i){for(var r=\"\",s=t;t+i>s;s++)r+=String.fromCharCode(e.getUint8(s));return r}function l(e,t){if(\"Exif\"!=c(e,t,4))return u&&console.log(\"Not valid EXIF data! \"+c(e,t,4)),!1;var i,r,s,o,a,h=t+6;if(18761==e.getUint16(h))i=!1;else{if(19789!=e.getUint16(h))return u&&console.log(\"Not valid TIFF data! (no 0x4949 or 0x4D4D)\"),!1;i=!0}if(42!=e.getUint16(h+2,!i))return u&&console.log(\"Not valid TIFF data! (no 0x002A)\"),!1;var l=e.getUint32(h+4,!i);if(8>l)return u&&console.log(\"Not valid TIFF data! (First offset less than 8)\",e.getUint32(h+4,!i)),!1;if(r=n(e,h,h+l,d,i),r.ExifIFDPointer){o=n(e,h,h+r.ExifIFDPointer,g,i);for(s in o){switch(s){case\"LightSource\":case\"Flash\":case\"MeteringMode\":case\"ExposureProgram\":case\"SensingMethod\":case\"SceneCaptureType\":case\"SceneType\":case\"CustomRendered\":case\"WhiteBalance\":case\"GainControl\":case\"Contrast\":case\"Saturation\":case\"Sharpness\":case\"SubjectDistanceRange\":case\"FileSource\":o[s]=p[s][o[s]];break;case\"ExifVersion\":case\"FlashpixVersion\":o[s]=String.fromCharCode(o[s][0],o[s][1],o[s][2],o[s][3]);break;case\"ComponentsConfiguration\":o[s]=p.Components[o[s][0]]+p.Components[o[s][1]]+p.Components[o[s][2]]+p.Components[o[s][3]]}r[s]=o[s]}}if(r.GPSInfoIFDPointer){a=n(e,h,h+r.GPSInfoIFDPointer,f,i);for(s in a){switch(s){case\"GPSVersionID\":a[s]=a[s][0]+\".\"+a[s][1]+\".\"+a[s][2]+\".\"+a[s][3]}r[s]=a[s]}}return r}var u=!1,g=this.Tags={36864:\"ExifVersion\",40960:\"FlashpixVersion\",40961:\"ColorSpace\",40962:\"PixelXDimension\",40963:\"PixelYDimension\",37121:\"ComponentsConfiguration\",37122:\"CompressedBitsPerPixel\",37500:\"MakerNote\",37510:\"UserComment\",40964:\"RelatedSoundFile\",36867:\"DateTimeOriginal\",36868:\"DateTimeDigitized\",37520:\"SubsecTime\",37521:\"SubsecTimeOriginal\",37522:\"SubsecTimeDigitized\",33434:\"ExposureTime\",33437:\"FNumber\",34850:\"ExposureProgram\",34852:\"SpectralSensitivity\",34855:\"ISOSpeedRatings\",34856:\"OECF\",37377:\"ShutterSpeedValue\",37378:\"ApertureValue\",37379:\"BrightnessValue\",37380:\"ExposureBias\",37381:\"MaxApertureValue\",37382:\"SubjectDistance\",37383:\"MeteringMode\",37384:\"LightSource\",37385:\"Flash\",37396:\"SubjectArea\",37386:\"FocalLength\",41483:\"FlashEnergy\",41484:\"SpatialFrequencyResponse\",41486:\"FocalPlaneXResolution\",41487:\"FocalPlaneYResolution\",41488:\"FocalPlaneResolutionUnit\",41492:\"SubjectLocation\",41493:\"ExposureIndex\",41495:\"SensingMethod\",41728:\"FileSource\",41729:\"SceneType\",41730:\"CFAPattern\",41985:\"CustomRendered\",41986:\"ExposureMode\",41987:\"WhiteBalance\",41988:\"DigitalZoomRation\",41989:\"FocalLengthIn35mmFilm\",41990:\"SceneCaptureType\",41991:\"GainControl\",41992:\"Contrast\",41993:\"Saturation\",41994:\"Sharpness\",41995:\"DeviceSettingDescription\",41996:\"SubjectDistanceRange\",40965:\"InteroperabilityIFDPointer\",42016:\"ImageUniqueID\"},d=this.TiffTags={256:\"ImageWidth\",257:\"ImageHeight\",34665:\"ExifIFDPointer\",34853:\"GPSInfoIFDPointer\",40965:\"InteroperabilityIFDPointer\",258:\"BitsPerSample\",259:\"Compression\",262:\"PhotometricInterpretation\",274:\"Orientation\",277:\"SamplesPerPixel\",284:\"PlanarConfiguration\",530:\"YCbCrSubSampling\",531:\"YCbCrPositioning\",282:\"XResolution\",283:\"YResolution\",296:\"ResolutionUnit\",273:\"StripOffsets\",278:\"RowsPerStrip\",279:\"StripByteCounts\",513:\"JPEGInterchangeFormat\",514:\"JPEGInterchangeFormatLength\",301:\"TransferFunction\",318:\"WhitePoint\",319:\"PrimaryChromaticities\",529:\"YCbCrCoefficients\",532:\"ReferenceBlackWhite\",306:\"DateTime\",270:\"ImageDescription\",271:\"Make\",272:\"Model\",305:\"Software\",315:\"Artist\",33432:\"Copyright\"},f=this.GPSTags={0:\"GPSVersionID\",1:\"GPSLatitudeRef\",2:\"GPSLatitude\",3:\"GPSLongitudeRef\",4:\"GPSLongitude\",5:\"GPSAltitudeRef\",6:\"GPSAltitude\",7:\"GPSTimeStamp\",8:\"GPSSatellites\",9:\"GPSStatus\",10:\"GPSMeasureMode\",11:\"GPSDOP\",12:\"GPSSpeedRef\",13:\"GPSSpeed\",14:\"GPSTrackRef\",15:\"GPSTrack\",16:\"GPSImgDirectionRef\",17:\"GPSImgDirection\",18:\"GPSMapDatum\",19:\"GPSDestLatitudeRef\",20:\"GPSDestLatitude\",21:\"GPSDestLongitudeRef\",22:\"GPSDestLongitude\",23:\"GPSDestBearingRef\",24:\"GPSDestBearing\",25:\"GPSDestDistanceRef\",26:\"GPSDestDistance\",27:\"GPSProcessingMethod\",28:\"GPSAreaInformation\",29:\"GPSDateStamp\",30:\"GPSDifferential\"},p=this.StringValues={ExposureProgram:{0:\"Not defined\",1:\"Manual\",2:\"Normal program\",3:\"Aperture priority\",4:\"Shutter priority\",5:\"Creative program\",6:\"Action program\",7:\"Portrait mode\",8:\"Landscape mode\"},MeteringMode:{0:\"Unknown\",1:\"Average\",2:\"CenterWeightedAverage\",3:\"Spot\",4:\"MultiSpot\",5:\"Pattern\",6:\"Partial\",255:\"Other\"},LightSource:{0:\"Unknown\",1:\"Daylight\",2:\"Fluorescent\",3:\"Tungsten (incandescent light)\",4:\"Flash\",9:\"Fine weather\",10:\"Cloudy weather\",11:\"Shade\",12:\"Daylight fluorescent (D 5700 - 7100K)\",13:\"Day white fluorescent (N 4600 - 5400K)\",14:\"Cool white fluorescent (W 3900 - 4500K)\",15:\"White fluorescent (WW 3200 - 3700K)\",17:\"Standard light A\",18:\"Standard light B\",19:\"Standard light C\",20:\"D55\",21:\"D65\",22:\"D75\",23:\"D50\",24:\"ISO studio tungsten\",255:\"Other\"},Flash:{0:\"Flash did not fire\",1:\"Flash fired\",5:\"Strobe return light not detected\",7:\"Strobe return light detected\",9:\"Flash fired, compulsory flash mode\",13:\"Flash fired, compulsory flash mode, return light not detected\",15:\"Flash fired, compulsory flash mode, return light detected\",16:\"Flash did not fire, compulsory flash mode\",24:\"Flash did not fire, auto mode\",25:\"Flash fired, auto mode\",29:\"Flash fired, auto mode, return light not detected\",31:\"Flash fired, auto mode, return light detected\",32:\"No flash function\",65:\"Flash fired, red-eye reduction mode\",69:\"Flash fired, red-eye reduction mode, return light not detected\",71:\"Flash fired, red-eye reduction mode, return light detected\",73:\"Flash fired, compulsory flash mode, red-eye reduction mode\",77:\"Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected\",79:\"Flash fired, compulsory flash mode, red-eye reduction mode, return light detected\",89:\"Flash fired, auto mode, red-eye reduction mode\",93:\"Flash fired, auto mode, return light not detected, red-eye reduction mode\",95:\"Flash fired, auto mode, return light detected, red-eye reduction mode\"},SensingMethod:{1:\"Not defined\",2:\"One-chip color area sensor\",3:\"Two-chip color area sensor\",4:\"Three-chip color area sensor\",5:\"Color sequential area sensor\",7:\"Trilinear sensor\",8:\"Color sequential linear sensor\"},SceneCaptureType:{0:\"Standard\",1:\"Landscape\",2:\"Portrait\",3:\"Night scene\"},SceneType:{1:\"Directly photographed\"},CustomRendered:{0:\"Normal process\",1:\"Custom process\"},WhiteBalance:{0:\"Auto white balance\",1:\"Manual white balance\"},GainControl:{0:\"None\",1:\"Low gain up\",2:\"High gain up\",3:\"Low gain down\",4:\"High gain down\"},Contrast:{0:\"Normal\",1:\"Soft\",2:\"Hard\"},Saturation:{0:\"Normal\",1:\"Low saturation\",2:\"High saturation\"},Sharpness:{0:\"Normal\",1:\"Soft\",2:\"Hard\"},SubjectDistanceRange:{0:\"Unknown\",1:\"Macro\",2:\"Close view\",3:\"Distant view\"},FileSource:{3:\"DSC\"},Components:{0:\"\",1:\"Y\",2:\"Cb\",3:\"Cr\",4:\"R\",5:\"G\",6:\"B\"}},_={120:\"caption\",110:\"credit\",25:\"keywords\",55:\"dateCreated\",80:\"byline\",85:\"bylineTitle\",122:\"captionWriter\",105:\"headline\",116:\"copyright\",15:\"category\"};this.getData=function(t,i){return(t instanceof Image||t instanceof HTMLImageElement)&&!t.complete?!1:(e(t)?i&&i.call(t):r(t,i),!0)},this.getTag=function(t,i){return e(t)?t.exifdata[i]:void 0},this.getAllTags=function(t){if(!e(t))return{};var i,r=t.exifdata,s={};for(i in r)r.hasOwnProperty(i)&&(s[i]=r[i]);return s},this.pretty=function(t){if(!e(t))return\"\";var i,r=t.exifdata,s=\"\";for(i in r)r.hasOwnProperty(i)&&(s+=\"object\"==typeof r[i]?r[i]instanceof Number?i+\" : \"+r[i]+\" [\"+r[i].numerator+\"/\"+r[i].denominator+\"]\\r\\n\":i+\" : [\"+r[i].length+\" values]\\r\\n\":i+\" : \"+r[i]+\"\\r\\n\");return s},this.readFromBinaryFile=function(e){return s(e)}}]),e.factory(\"cropHost\",[\"$document\",\"cropAreaCircle\",\"cropAreaSquare\",\"cropEXIF\",function(e,t,i,r){var s=function(e){var t=e.getBoundingClientRect(),i=document.body,r=document.documentElement,s=window.pageYOffset||r.scrollTop||i.scrollTop,o=window.pageXOffset||r.scrollLeft||i.scrollLeft,a=r.clientTop||i.clientTop||0,n=r.clientLeft||i.clientLeft||0,h=t.top+s-a,c=t.left+o-n;return{top:Math.round(h),left:Math.round(c)}};return function(o,a,n){function h(){c.clearRect(0,0,c.canvas.width,c.canvas.height),null!==l&&(c.drawImage(l,0,0,c.canvas.width,c.canvas.height),c.save(),c.fillStyle=\"rgba(0, 0, 0, 0.65)\",c.fillRect(0,0,c.canvas.width,c.canvas.height),c.restore(),u.draw())}var c=null,l=null,u=null,g=[100,100],d=[300,300],f=200,p=\"image/png\",_=null,m=function(){if(null!==l){u.setImage(l);var e=[l.width,l.height],t=l.width/l.height,i=e;i[0]>d[0]?(i[0]=d[0],i[1]=i[0]/t):i[0]d[1]?(i[1]=d[1],i[0]=i[1]*t):i[1]\")[0],e=t.getContext(\"2d\"),t.width=f,t.height=f,null!==l&&e.drawImage(l,(u.getX()-u.getSize()/2)*(l.width/c.canvas.width),(u.getY()-u.getSize()/2)*(l.height/c.canvas.height),u.getSize()*(l.width/c.canvas.width),u.getSize()*(l.height/c.canvas.height),0,0,f,f),null!==_?t.toDataURL(p,_):t.toDataURL(p)},this.setNewImageSource=function(e){if(l=null,m(),n.trigger(\"image-updated\"),e){var t=new Image;\"http\"===e.substring(0,4).toLowerCase()&&(t.crossOrigin=\"anonymous\"),t.onload=function(){n.trigger(\"load-done\"),r.getData(t,function(){var e=r.getTag(t,\"Orientation\");if([3,6,8].indexOf(e)>-1){var i=document.createElement(\"canvas\"),s=i.getContext(\"2d\"),o=t.width,a=t.height,h=0,c=0,u=0;switch(e){case 3:h=-t.width,c=-t.height,u=180;break;case 6:o=t.height,a=t.width,c=-t.height,u=90;break;case 8:o=t.height,a=t.width,h=-t.width,u=270}i.width=o,i.height=a,s.rotate(u*Math.PI/180),s.drawImage(t,h,c),l=new Image,l.src=i.toDataURL(\"image/png\")}else l=t;m(),n.trigger(\"image-updated\")})},t.onerror=function(){n.trigger(\"load-error\")},n.trigger(\"load-start\"),t.src=e}},this.setMaxDimensions=function(e,t){if(d=[e,t],null!==l){var i=c.canvas.width,r=c.canvas.height,s=[l.width,l.height],a=l.width/l.height,n=s;n[0]>d[0]?(n[0]=d[0],n[1]=n[0]/a):n[0]d[1]?(n[1]=d[1],n[0]=n[1]*a):n[1]=0&&1>=e&&(_=e)},this.setAreaType=function(e){var r=u.getSize(),s=u.getMinSize(),o=u.getX(),a=u.getY(),g=t;\"square\"===e&&(g=i),u=new g(c,n),u.setMinSize(s),u.setSize(r),u.setX(o),u.setY(a),null!==l&&u.setImage(l),h()},c=o[0].getContext(\"2d\"),u=new t(c,n),e.on(\"mousemove\",S),o.on(\"mousedown\",z),e.on(\"mouseup\",I),e.on(\"touchmove\",S),o.on(\"touchstart\",z),e.on(\"touchend\",I),this.destroy=function(){e.off(\"mousemove\",S),o.off(\"mousedown\",z),e.off(\"mouseup\",S),e.off(\"touchmove\",S),o.off(\"touchstart\",z),e.off(\"touchend\",S),o.remove()}}}]),e.factory(\"cropPubSub\",[function(){return function(){var e={};this.on=function(t,i){return t.split(\" \").forEach(function(t){e[t]||(e[t]=[]),e[t].push(i)}),this},this.trigger=function(t,i){return angular.forEach(e[t],function(e){e.call(null,i)}),this}}}]),e.directive(\"imgCrop\",[\"$timeout\",\"cropHost\",\"cropPubSub\",function(e,t,i){return{restrict:\"E\",scope:{image:\"=\",resultImage:\"=\",changeOnFly:\"=\",areaType:\"@\",areaMinSize:\"=\",resultImageSize:\"=\",resultImageFormat:\"@\",resultImageQuality:\"=\",onChange:\"&\",onLoadBegin:\"&\",onLoadDone:\"&\",onLoadError:\"&\"},template:\"\",controller:[\"$scope\",function(e){e.events=new i}],link:function(i,r){var s,o=i.events,a=new t(r.find(\"canvas\"),{},o),n=function(e){var t=a.getResultImageDataURI();s!==t&&(s=t,angular.isDefined(e.resultImage)&&(e.resultImage=t),e.onChange({$dataURI:e.resultImage}))},h=function(t){return function(){e(function(){i.$apply(function(e){t(e)})})}};o.on(\"load-start\",h(function(e){e.onLoadBegin({})})).on(\"load-done\",h(function(e){e.onLoadDone({})})).on(\"load-error\",h(function(e){e.onLoadError({})})).on(\"area-move area-resize\",h(function(e){e.changeOnFly&&n(e)})).on(\"area-move-end area-resize-end image-updated\",h(function(e){n(e)})),i.$watch(\"image\",function(){a.setNewImageSource(i.image)}),i.$watch(\"areaType\",function(){a.setAreaType(i.areaType),n(i)}),i.$watch(\"areaMinSize\",function(){a.setAreaMinSize(i.areaMinSize),n(i)}),i.$watch(\"resultImageSize\",function(){a.setResultImageSize(i.resultImageSize),n(i)}),i.$watch(\"resultImageFormat\",function(){a.setResultImageFormat(i.resultImageFormat),n(i)}),i.$watch(\"resultImageQuality\",function(){a.setResultImageQuality(i.resultImageQuality),n(i)}),i.$watch(function(){return[r[0].clientWidth,r[0].clientHeight]},function(e){a.setMaxDimensions(e[0],e[1]),n(i)},!0),i.$on(\"$destroy\",function(){a.destroy()})}}}])}();","var OrgChart=function(t,e){var r=this;if(this.element=t,this.config={lazyLoading:!0,enableDragDrop:!1,enableSearch:!0,enableTouch:!1,miniMap:!1,nodeMenu:null,nodeContextMenu:null,menu:null,toolbar:!1,sticky:!0,nodeMouseClick:OrgChart.action.details,nodeMouseDbClick:OrgChart.none,mouseScrool:OrgChart.action.zoom,showXScroll:OrgChart.none,showYScroll:OrgChart.none,template:\"ana\",tags:{},min:!1,nodeBinding:{},linkBinding:{},searchFields:[],searchDisplayField:null,searchFieldsWeight:null,nodes:[],clinks:[],slinks:[],levelSeparation:60,siblingSeparation:20,subtreeSeparation:40,mixedHierarchyNodesSeparation:15,assistantSeparation:100,minPartnerSeparation:50,partnerChildrenSplitSeparation:20,partnerNodeSeparation:15,columns:10,padding:30,orientation:OrgChart.orientation.top,layout:OrgChart.normal,scaleInitial:1,scaleMin:.1,scaleMax:5,orderBy:null,editUI:null,searchUI:null,xScrollUI:null,yScrollUI:null,nodeMenuUI:null,nodeContextMenuUI:null,toolbarUI:null,notifierUI:null,menuUI:null,exportUrl:\"https://balkan.app/export\",collapse:{},expand:{},align:OrgChart.CENTER,UI:null,anim:{func:OrgChart.anim.outPow,duration:200},zoom:{speed:120,smooth:12},roots:null,state:null},e)for(var i in this.config)\"object\"!=typeof e[i]||Array.isArray(e[i])?void 0!==e[i]&&(this.config[i]=e[i]):this.config[i]=OrgChart._mergeObject(this.config[i],e[i]);if(this._layoutConfigs={base:{orientation:this.config.orientation,levelSeparation:this.config.levelSeparation,mixedHierarchyNodesSeparation:this.config.mixedHierarchyNodesSeparation,assistantSeparation:this.config.assistantSeparation,subtreeSeparation:this.config.subtreeSeparation,siblingSeparation:this.config.siblingSeparation,layout:this.config.layout,columns:this.config.columns,collapse:this.config.collapse,partnerNodeSeparation:this.config.partnerNodeSeparation}},this.config.tags)for(var a in this.config.tags){var n=this.config.tags[a];null!=n.subTreeConfig&&(this._layoutConfigs[a]={orientation:null!=n.subTreeConfig.orientation?n.subTreeConfig.orientation:this.config.orientation,levelSeparation:null!=n.subTreeConfig.levelSeparation?n.subTreeConfig.levelSeparation:this.config.levelSeparation,mixedHierarchyNodesSeparation:null!=n.subTreeConfig.mixedHierarchyNodesSeparation?n.subTreeConfig.mixedHierarchyNodesSeparation:this.config.mixedHierarchyNodesSeparation,assistantSeparation:null!=n.subTreeConfig.assistantSeparation?n.subTreeConfig.assistantSeparation:this.config.assistantSeparation,subtreeSeparation:null!=n.subTreeConfig.subtreeSeparation?n.subTreeConfig.subtreeSeparation:this.config.subtreeSeparation,siblingSeparation:null!=n.subTreeConfig.siblingSeparation?n.subTreeConfig.siblingSeparation:this.config.siblingSeparation,layout:null!=n.subTreeConfig.layout?n.subTreeConfig.layout:this.config.layout,columns:null!=n.subTreeConfig.columns?n.subTreeConfig.columns:this.config.columns,collapse:null!=n.subTreeConfig.collapse?n.subTreeConfig.collapse:this.config.collapse,partnerNodeSeparation:null!=n.subTreeConfig.partnerNodeSeparation?n.subTreeConfig.partnerNodeSeparation:this.config.partnerNodeSeparation})}if(this._event_id=OrgChart._guid(),!this.config.searchFields.length&&this.config.nodeBinding)for(var o in this.config.nodeBinding)-1==o.indexOf(\"img\")&&\"function\"!=typeof this.config.nodeBinding[o]&&this.config.searchFields.push(this.config.nodeBinding[o]);OrgChart._validateConfig(this.config)&&(this.server=null,this._vScroll={},this.config.ui||(this.ui=OrgChart.ui),this.config.editUI?this.editUI=this.config.editUI:this.editUI=new OrgChart.editUI,this.editUI.init(this),null===this.server&&(this.server=new OrgChart.server(this.config,this._layoutConfigs)),this.config.searchUI?this.searchUI=this.config.searchUI:this.searchUI=new OrgChart.searchUI,this.searchUI.init(this),this.config.nodeMenuUI?this.nodeMenuUI=this.config.nodeMenuUI:this.nodeMenuUI=new OrgChart.menuUI,this.nodeMenuUI.init(this,this.config.nodeMenu),this.config.nodeContextMenuUI?this.nodeContextMenuUI=this.config.nodeContextMenuUI:this.nodeContextMenuUI=new OrgChart.menuUI,this.nodeContextMenuUI.init(this,this.config.nodeContextMenu),this.config.toolbarUI?this.toolbarUI=this.config.toolbarUI:this.toolbarUI=new OrgChart.toolbarUI,this.config.notifierUI?this.notifierUI=this.config.notifierUI:this.notifierUI=new OrgChart.notifierUI,this.notifierUI.init(this),this.config.menuUI?this.menuUI=this.config.menuUI:this.menuUI=new OrgChart.menuUI,this.menuUI.init(this,this.config.menu),this.config.xScrollUI||(this.xScrollUI=new OrgChart.xScrollUI(this.element,this.config,function(){return{boundary:r.response.boundary,scale:r.getScale(),viewBox:r.getViewBox(),padding:r.config.padding}},function(t){r.setViewBox(t)},function(){r._draw(!0,OrgChart.action.xScroll)})),this.config.yScrollUI||(this.yScrollUI=new OrgChart.yScrollUI(this.element,this.config,function(){return{boundary:r.response.boundary,scale:r.getScale(),viewBox:r.getViewBox(),padding:r.config.padding}},function(t){r.setViewBox(t)},function(){r._draw(!0,OrgChart.action.xScroll)})),this._gragStartedId=null,this._timeout=null,this._touch=null,this._initialized=!1,this._moveInterval=null,this._movePosition=null,this.response=null,this.nodes=null,this._setInitialSizeIfNotSet(),0OrgChart.TEXT_THRESHOLD)for(var r=0;rOrgChart.IMAGES_THRESHOLD)for(r=0;rOrgChart.LINKS_THRESHOLD)for(r=0;rOrgChart.EXPCOLL_THRESHOLD)for(r=0;r',OrgChart.linkOpenTag='',OrgChart.expcollOpenTag='',OrgChart.linkFieldsOpenTag='',OrgChart.grCloseTag=\"\",OrgChart.IT_IS_LONELY_HERE='{link}',OrgChart.RES={},OrgChart.RES.IT_IS_LONELY_HERE_LINK=\"It's lonely here, add your first node\",OrgChart.FIRE_DRAG_NOT_CLICK_IF_MOVE=3,OrgChart.STRING_TAGS=!1,OrgChart.MAX_NODES_MESS=\"The trial has expired or 200 nodes limit was reached!
See more\",OrgChart.OFFLINE_MESS=\"The evaluation version requires internet connection!
See more\",OrgChart.SEARCH_PLACEHOLDER=\"Search\",OrgChart.IMPORT_MESSAGE=\"Choose the columns (fields) in your data file that contain the required information.\",OrgChart.FIXED_POSITION_ON_CLICK=!1,OrgChart.ADD_NEW_FIELD=\"Add new field\",OrgChart.ASSISTANT=\"Assistant\",OrgChart.A4w=595,OrgChart.A4h=842,OrgChart.A3w=842,OrgChart.A3h=1191,OrgChart.A2w=1191,OrgChart.A2h=1684,OrgChart.A1w=1684,OrgChart.A1h=2384,OrgChart.Letterw=612,OrgChart.Letterh=791,OrgChart.Legalw=612,OrgChart.Legalh=1009,OrgChart.LINK_ROUNDED_CORNERS=8,OrgChart.MOVE_STEP=5,OrgChart.MOVE_INTERVAL=25,OrgChart.MIXED_LAYOUT_ALL_NODES=!0,OrgChart.CLINK_CURVE=1,OrgChart.SEARCH_RESULT_LIMIT=10,\"undefined\"!=typeof module&&(module.exports=OrgChart),OrgChart.input=function(t,e,r,i,a,n){null==i&&(i=!1);var o=document.createElement(\"div\"),l=document.createElement(\"div\"),s=document.createElement(\"input\"),h=document.createElement(\"hr\"),d=document.createElement(\"button\");if(d.innerHTML=\"Upload\",d.style.position=\"absolute\",d.style.right=0,o.style.margin=\"14px 14px 7px 14px\",o.style.textAlign=\"left\",o.style.position=\"relative\",o.setAttribute(\"data-field-name\",t),h.style.border=\"1px solid #d7d7d7\",h.style.backgroundColor=\"#d7d7d7\",h.style.display=\"block\",h.style.width=\"100%\",l.style.color=\"#bcbcbc\",s.style.border=\"none\",s.style.outline=\"none\",s.style.width=\"100%\",s.setAttribute(\"val\",\"\"),a&&(s.style.width=\"80%\"),s.style.fontSize=\"16px\",s.readOnly=i,null!=e&&null!=e&&(s.value=e),null!=r&&null!=r&&(s.placeholder=r),null!=t&&null!=t&&(l.innerHTML=t),l.setAttribute(\"lbl\",\"\"),s.style.color=\"#7a7a7a\",i||s.addEventListener(\"focus\",function(){var t=this.parentNode.getElementsByTagName(\"hr\")[0];t.style.border=\"1px solid #039BE5\",OrgChart.anim(t,{width:10},{width:o.clientWidth},250,OrgChart.anim.inOutSin)}),d.addEventListener(\"click\",function(){var e=this,t=document.createElement(\"INPUT\");t.setAttribute(\"type\",\"file\"),t.style.display=\"none\",t.onchange=function(){var t=this.files[0];OrgChart.events.publish(\"imageuploaded\",[n,t,e.parentNode.querySelector(\"input\")])},document.body.appendChild(t),t.click()}),s.addEventListener(\"blur\",function(){this.parentNode.getElementsByTagName(\"hr\")[0].style.border=\"1px solid #d7d7d7\"}),o.appendChild(l),o.appendChild(s),a&&o.appendChild(d),o.appendChild(h),OrgChart.addValidation){var c={wrapper:o,label:l,input:s,hr:h};OrgChart.addValidation(t,e,c)}return o},OrgChart._intersects=function(t,e,r){var i=t.x-r.siblingSeparation/4,a=t.y,n=t.x+t.w+r.siblingSeparation/4,o=t.y;switch(r.orientation){case OrgChart.orientation.right:case OrgChart.orientation.right_top:case OrgChart.orientation.left:case OrgChart.orientation.left_top:i=t.x,a=t.y-r.siblingSeparation/4,n=t.x,o=t.y+t.h+r.siblingSeparation/4}var l,s,h,d=e.p,c=e.q,g=e.r,p=e.s;return 0!=(l=(n-i)*(p-c)-(g-d)*(o-a))&&(s=((a-o)*(g-i)+(n-i)*(p-a))/l,0<(h=((p-c)*(g-i)+(d-g)*(p-a))/l)&&h<1&&0',Object.assign(a.style,{cursor:\"pointer\",width:\"34px\",height:\"34px\",position:\"absolute\",top:\"7px\",right:\"7px\"}),Object.assign(n.style,{\"overflow-x\":\"hidden\",\"overflow-y\":\"auto\"}),Object.assign(i.style,{\"background-color\":\"#039BE5\",\"min-height\":\"50px\",textAlign:\"center\",position:\"relative\"}),Object.assign(o.style,{margin:\"12px\"}),this.wrapperElement.appendChild(e),e.appendChild(i),e.appendChild(n),n.appendChild(o),i.appendChild(a),OrgChart.htmlRipple(i);for(var l=this.fields,s=this.obj._get(t.id),h=0;h',this.wrapperElement.id=\"bgEditForm\",Object.assign(a.style,{cursor:\"pointer\",width:\"34px\",height:\"34px\",position:\"absolute\",top:\"7px\",right:\"7px\"}),Object.assign(o.style,{\"overflow-x\":\"hidden\",\"overflow-y\":\"auto\"}),Object.assign(r.style,{\"background-color\":\"#039BE5\",\"min-height\":\"50px\",textAlign:\"center\",position:\"relative\"}),Object.assign(n.style,{margin:\"14px 14px 7px\",color:\"#4285F4\",cursor:\"pointer\"}),Object.assign(l.style,{margin:\"14px 14px 7px\",color:\"rgb(188, 188, 188)\"}),n.innerHTML=OrgChart.ADD_NEW_FIELD;var s=OrgChart._arrayContains(this.node.tags,\"assistant\")?\"checked\":\"\";l.setAttribute(\"data-field-name\",\"isAssistant\"),l.innerHTML='
'+OrgChart.ASSISTANT+'
',this.wrapperElement.appendChild(e),e.appendChild(r),e.appendChild(o),r.appendChild(a),OrgChart.htmlRipple(r);for(var h=this.fields,d=this.obj._get(t.id),c=0;c'+h+\"  \"+d+\"
\"}if(\"\"!=r){if(this.wrapper=document.createElement(\"div\"),Object.assign(this.wrapper.style,{opacity:0,\"background-color\":\"#FFFEFF\",\"box-shadow\":\"#DCDCDC 0px 1px 2px 0px\",display:\"inline-block\",border:\"1px solid #D7D7D7;border-radius:5px\",\"z-index\":1e3,position:\"absolute\",\"text-align\":\"left\",\"user-select\":\"none\"}),this.wrapper.className=\"chart-menu\",this.wrapper.style.left=\"-99999px\",this.wrapper.style.top=\"-99999px\",this.wrapper.innerHTML=r,this.obj.element.appendChild(this.wrapper),null==e){var c=OrgChart._menuPosition(t,this.wrapper,this.obj.getSvg());t=c.x,e=c.y}var g=t+45;this.wrapper.style.left=g+\"px\",this.wrapper.style.top=e+\"px\",this.wrapper.style.left=g-this.wrapper.offsetWidth+\"px\";var p=t-this.wrapper.offsetWidth;OrgChart.anim(this.wrapper,{opacity:0,left:g-this.wrapper.offsetWidth},{opacity:1,left:p},300,OrgChart.anim.inOutPow);for(var f=this.wrapper.getElementsByTagName(\"div\"),u=0;u',OrgChart.toolbarUI.fitIcon='',OrgChart.toolbarUI.openFullScreenIcon='',OrgChart.toolbarUI.closeFullScreenIcon='',OrgChart.toolbarUI.zoomInIcon='',OrgChart.toolbarUI.zoomOutIcon='',OrgChart.toolbarUI.layoutIcon='',OrgChart.toolbarUI.prototype.init=function(t,e){if(e){this.obj=t,this.toolbar=e,this._visible=!1,this.div=document.createElement(\"div\"),this.div.classList.add(\"bg-toolbar-container\"),Object.assign(this.div.style,{position:\"absolute\",padding:\"3px\",right:this.obj.config.padding+\"px\",bottom:this.obj.config.padding+\"px\"}),e.expandAll&&(this.div.innerHTML+='
'+OrgChart.toolbarUI.expandAllIcon+\"
\"),e.fit&&(this.div.innerHTML+='
'+OrgChart.toolbarUI.fitIcon+\"
\"),e.zoom&&(this.div.innerHTML+='
'+OrgChart.toolbarUI.zoomInIcon+\"
\",this.div.innerHTML+='
'+OrgChart.toolbarUI.zoomOutIcon+\"
\"),e.layout&&(this.div.innerHTML+='
'+OrgChart.toolbarUI.layoutIcon+\"
\",this.layouts=document.createElement(\"div\"),this.layouts.innerHTML='',this.obj.element.appendChild(this.layouts),Object.assign(this.layouts.style,{position:\"absolute\",width:\"100%\",left:\"0\",bottom:\"-145px\",\"box-shadow\":\"0px 1px 4px rgba(0,0,0,0.3)\",\"background-color\":\"#f9f9f9\",height:\"123px\",\"padding-top\":\"20px\",\"border-top\":\"1px solid #cacaca\"})),e.fullScreen&&(this.div.innerHTML+='
'+OrgChart.toolbarUI.openFullScreenIcon+\"
\"),this.obj.element.appendChild(this.div),this.layoutBtn=this.div.querySelector('[data-tlbr=\"layout\"]');var r=this.div.querySelector('[data-tlbr=\"plus\"]'),i=this.div.querySelector('[data-tlbr=\"minus\"]'),a=this.div.querySelector('[data-tlbr=\"fit\"]'),n=this.div.querySelector('[data-tlbr=\"fullScreen\"]'),o=this.div.querySelector('[data-tlbr=\"expand\"]'),l=this;r&&r.addEventListener(\"click\",function(){l.obj.zoom(!0,null,!0)}),i&&i.addEventListener(\"click\",function(){l.obj.zoom(!1,null,!0)}),a&&a.addEventListener(\"click\",function(){l.obj.fit()}),n&&n.addEventListener(\"click\",function(){l.obj.toggleFullScreen()}),o&&o.addEventListener(\"click\",function(){l.obj.expand(null,\"all\")}),this.layoutBtn&&this.layoutBtn.addEventListener(\"click\",function(){l._visible?l.hideLayout():l.showLayout()}),this.layouts&&this.layouts.addEventListener(\"click\",function(t){for(var e=t.target;e;){if(e.hasAttribute&&e.hasAttribute(\"data-layout\")){e=e.getAttribute(\"data-layout\"),l.obj.setLayout(OrgChart[e]);break}e=e.parentNode}})}},OrgChart.toolbarUI.prototype.showLayout=function(){this._visible=!0,this.layoutBtn.style.transform=\"rotate(180deg) translateX(0px) translateY(0px)\",OrgChart.anim(this.div,{bottom:this.obj.config.padding},{bottom:this.obj.config.padding+145},this.obj.config.anim.duration,this.obj.config.anim.func),OrgChart.anim(this.layouts,{bottom:-145},{bottom:0},this.obj.config.anim.duration,this.obj.config.anim.func)},OrgChart.toolbarUI.prototype.hideLayout=function(){this._visible=!1,this.layoutBtn.style.transform=\"rotate(0deg) translateX(0px) translateY(0px)\",OrgChart.anim(this.div,{bottom:this.obj.config.padding+145},{bottom:this.obj.config.padding},this.obj.config.anim.duration,this.obj.config.anim.func),OrgChart.anim(this.layouts,{bottom:0},{bottom:-145},this.obj.config.anim.duration,this.obj.config.anim.func)},OrgChart.notifierUI=function(){},OrgChart.notifierUI.prototype.init=function(t){this.obj=t},OrgChart.notifierUI.prototype.show=function(t,e){if(null!=t){1==t&&(t=OrgChart.MAX_NODES_MESS,e=\"#FFCA28\"),2==t&&(t=OrgChart.OFFLINE_MESS,e=\"#FFCA28\");var r=document.createElement(\"div\");r.innerHTML=t,Object.assign(r.style,{position:\"absolute\",\"background-color\":e,color:\"#ffffff\",padding:\"15px\",\"border-radius\":\"40px\",opacity:0,overflow:\"hidden\",\"white-space\":\"nowrap\",\"text-align\":\"center\"}),this.obj.element.appendChild(r);var i=this.obj.width()/2-r.offsetWidth/2,a=this.obj.height()/2-r.offsetHeight/2;r.style.left=i+\"px\",r.style.top=a+\"px\";var n=r.offsetWidth;r.style.width=\"20px\",OrgChart.anim(r,{opacity:0,width:10},{opacity:1,width:n},this.obj.config.anim.duration,this.obj.config.anim.func)}},OrgChart.icon={},OrgChart.icon.png=function(t,e,r){return''},OrgChart.icon.pdf=function(t,e,r){return''},OrgChart.icon.svg=function(t,e,r){return''},OrgChart.icon.csv=function(t,e,r){return''},OrgChart.icon.excel=function(t,e,r){return''},OrgChart.icon.edit=function(t,e,r){return''},OrgChart.icon.details=function(t,e,r){return''},OrgChart.icon.remove=function(t,e,r){return''},OrgChart.icon.add=function(t,e,r){return''},OrgChart.icon.search=function(t,e,r){return''},OrgChart.icon.xml=function(t,e,r){return''},OrgChart.prototype.exportPDF=function(t,e){t=this._defaultExportOptions(t,\"pdf\"),this._export(t,e)},OrgChart.prototype.exportPNG=function(t,e){t=this._defaultExportOptions(t,\"png\"),this._export(t,e)},OrgChart.prototype.exportSVG=function(t,e){t=this._defaultExportOptions(t,\"svg\"),this._export(t,e)},OrgChart.prototype._defaultExportOptions=function(t,e){return null==t&&(t={}),\"svg\"==e?(t.ext=\"svg\",t.mime=\"image/svg+xml\"):\"pdf\"==e?(t.mime=\"application/pdf\",t.ext=\"pdf\"):\"png\"==e&&(t.mime=\"image/png\",t.ext=\"png\"),null==t.margin&&(t.margin=[50,40,50,40]),null==t.padding&&(t.padding=0),null==t.landscape&&(t.landscape=!1),null==t.filename&&(t.filename=\"OrgChart.\"+t.ext),null==t.scale&&(t.scale=\"fit\"),null==t.format&&(t.format=\"fit\"),null==t.header&&(t.header=\"\"),null==t.footer&&(t.footer=\"Page {current-page} of {total-pages}\"),null==t.openInNewTab&&(t.openInNewTab=!1),t},OrgChart.prototype._export=function(o,l){var s=this,t={id:o.nodeId,expandChildren:o.expandChildren};o.margin&&o.margin[0]<2&&(o.margin[0]=2),o.margin&&o.margin[1]<2&&(o.margin[1]=2),o.margin&&o.margin[2]<2&&(o.margin[2]=2),o.margin&&o.margin[3]<2&&(o.margin[3]=2),this._draw(!1,OrgChart.action.exporting,t,function(t){var r=document.createElement(\"div\");if(r.innerHTML=t,0a[0]/10)return;if(l>a[1]/10)return}}else if(-1!=e.type.indexOf(\"touch\")&&null==this._touch)return;for(var s=e.target;s!=t;){if(s.hasAttribute(\"control-expcoll-id\")){var h=s.getAttribute(\"control-expcoll-id\"),d=this.getNode(h);return void this._expCollHandler(d.id)}if(s.hasAttribute(\"node-id\")){h=s.getAttribute(\"node-id\"),d=this.getNode(h);return void this._nodeClickHandler(d.id,e)}if(s.hasAttribute(\"control-node-menu-id\")){h=s.getAttribute(\"control-node-menu-id\"),d=this.getNode(h);return void this._nodeMenuClickHandler(d.id,s,e)}if(s.hasAttribute(\"control-add\"))return void this._lonelyButtonHandler();s=s.parentNode}},OrgChart.prototype._globalContextHandler=function(t,e){for(var r=e.target;r!=t;){if(r.hasAttribute(\"node-id\")){var i=r.getAttribute(\"node-id\"),a=this.getNode(i);return void this._nodeContextHandler(a.id,e)}r=r.parentNode}},OrgChart.prototype._nodeContextHandler=function(t,e){e.preventDefault(),this.searchUI.hide(),this.nodeMenuUI.hide(),this.nodeContextMenuUI.hide(),this.menuUI.hide();var r=this.get(t),i=null;if(null!=r&&Array.isArray(r.tags))for(var a=0;aOrgChart.FIRE_DRAG_NOT_CLICK_IF_MOVE||Math.abs(e.y-_.y)>OrgChart.FIRE_DRAG_NOT_CLICK_IF_MOVE))!1===OrgChart.events.publish(\"drag\",[b,c])&&N(),O._dragEventFired=!0;L.setAttribute(\"transform\",\"matrix(\"+k.toString()+\")\")}}},N=function(t){if(b.stopMove(),w.classList&&(w.classList.remove(\"cursor-grab\"),w.classList.remove(\"cursor-move\"),w.classList.remove(\"cursor-nodrop\"),w.classList.remove(\"cursor-copy\")),w.removeEventListener(i.move,a),w.removeEventListener(i.up,N),i.leave&&w.removeEventListener(i.leave,N),y.id==x||null==x)return w.removeChild(L),void(b._gragStartedId=null);var e=b.getNode(x);if(!1===OrgChart.events.publish(\"drop\",[b,y.id,e.id]))return E(x,v),w.removeChild(L),void(b._gragStartedId=null);if(b._canUpdateLink(y.id,x)){var r=b.get(y.id);r.pid=x,r.stpid=null,b.updateNode(r,null,!0)}else w.removeChild(L),E(x,v);b._gragStartedId=null};w.addEventListener(i.move,a),w.addEventListener(i.up,N),i.leave&&w.addEventListener(i.leave,N)}},OrgChart.prototype._resizeHandler=function(t,e){var r=this.getViewBox(),i=this.getSvg(),a=i.getAttribute(\"width\"),n=i.getAttribute(\"height\"),o=a/r[2],l=n/r[3],s=lp&&t.children[p].isPartner;)p++;OrgChart.local._secondWalk(t.children[p],e+1,r+t._modifier,i+l+g,a,n,o)}}var f=OrgChart.local._getRightSibling(t);null!=f&&OrgChart.local._secondWalk(f,e,r,i,a,n,o)}else OrgChart.local.nodeIsPartnerPosition(t,o,a,e)},OrgChart.local._lastWalk=function(t,e,r,i,a){t.x+=e+a[3]-i.minX,t.y+=r+a[0]-i.minY;for(var n=t.children.length,o=0;or&&(r=a.w)}return r&&(r+=t.partnerSeparation),r;case OrgChart.orientation.right:case OrgChart.orientation.right_top:case OrgChart.orientation.left:case OrgChart.orientation.left_top:for(i=0;ir&&(r=a.w)}return r&&(r+=t.partnerSeparation),r;case OrgChart.orientation.right:case OrgChart.orientation.right_top:case OrgChart.orientation.left:case OrgChart.orientation.left_top:for(i=0;ir&&(r=a.h)}return r&&(r+=t.partnerSeparation),r}},OrgChart.local._getPartnerLeftPanelHeight=function(t,e){if(!t.hasPartners)return 0;var r=0;switch(e.orientation){case OrgChart.orientation.top:case OrgChart.orientation.top_left:case OrgChart.orientation.bottom:case OrgChart.orientation.bottom_left:for(var i=0;ir&&(r=a.h)}return r&&(r+=t.partnerSeparation),r}},OrgChart.local._fChild=function(t){for(var e=0;e=OrgChart.SEARCH_RESULT_LIMIT);l++){var s=a[l],h=\"\";if(n){var d=this.obj._get(s.id);\"function\"==typeof n?h=n(this.obj,this.obj.getNode(s.id),d):d[n]&&(h=d[n]),h&&(h='')}var c=\"\",g=\"\";this.obj.config.searchDisplayField==s.__searchField?c=s.__searchMarks:this.obj.config.searchDisplayField?(c=s[this.obj.config.searchDisplayField],OrgChart.isNullOrEmpty(c)&&(c=\"\"),g=s.__searchMarks):c=s.__searchMarks,o+=OrgChart.searchUI.createItem(h,s.id,c,g)}r.innerHTML=o;var p=i.querySelectorAll(\"[data-search-item-id]\");for(l=0;l
'+OrgChart.icon.search(32,32,\"#757575\")+'
'},OrgChart.searchUI.createItem=function(t,e,r,i){return'
'+t+'
'+r+'
'+i+'
'},OrgChart.searchUI.createSearchIcon=function(t){return'
'+OrgChart.icon.search(32,32,\"#757575\")+\"
\"},void 0===OrgChart&&(OrgChart={}),OrgChart.server=function(t,e){this.config=t,this.layoutConfigs=e,this.visibleNodeIds=[],this.viewBox=null,this.action=null,this.actionParams=null,this.nodes={},this.oldNodes={},this.maxX=null,this.maxY=null,this.minX=null,this.minY=null,this.bordersByRootIdAndLevel=null,this.roots=null,this.state=null,this.vbIsInitializedFromState=!1},OrgChart.server.prototype.read=function(h,d,c,g,p,f,u,C){var m=this;OrgChart.state._get(this.config.state,d,c,function(t){m.state=t,m.action=p,m.actionParams=f,p==OrgChart.action.init&&m.state?(m.viewBox=m.state.vb,m.vbIsInitializedFromState=!0):(m.viewBox=g,m.vbIsInitializedFromState=!1);var r=m.maxX,i=m.maxY,a=m.minX,n=m.minY,o=m.bordersByRootIdAndLevel,l=m.roots,s=m.nodes;if(h){var e=OrgChart.server._getResponse(d,c,m.visibleNodeIds,m.config,r,i,a,n,m.viewBox,l,m.action,m.actionParams,s,m.oldNodes,m.vbIsInitializedFromState);p!=OrgChart.action.exporting&&(m.maxX=r,m.maxY=i,m.minX=a,m.minY=n,m.roots=l,m.nodes=s,m.visibleNodeIds=e.visibleNodeIds),e.bordersByRootIdAndLevel=o,e.roots=l,e.adjustify={x:0,y:0},m.state&&(e.adjustify=m.state.adjustify),u(e)}else m.oldNodes=s||null,m._read(function(t){r=t.maxX,i=t.maxY,a=t.minX,n=t.minY,o=t.bordersByRootIdAndLevel,l=t.roots,s=t.nodes;var e=OrgChart.server._getResponse(d,c,m.visibleNodeIds,m.config,r,i,a,n,m.viewBox,l,m.action,m.actionParams,s,m.oldNodes,m.vbIsInitializedFromState);e.notif=t.limit,e.roots=l,e.bordersByRootIdAndLevel=o,e.adjustify=t.adjustify,p!=OrgChart.action.exporting&&(m.maxX=r,m.maxY=i,m.minX=a,m.minY=n,m.roots=l,m.nodes=s,m.visibleNodeIds=e.visibleNodeIds,m.bordersByRootIdAndLevel=o),u(e)},C)})},OrgChart.server.prototype._read=function(n,t){var o=this,e=OrgChart.server._createNodes(o.config,o.layoutConfigs,o.action,o.actionParams,o.oldNodes,o.state);t(e);var l=e.nodes,s=e.roots,r=OrgChart.remote;null==r&&(r=OrgChart.local),r._setPositions(s,o.layoutConfigs,function(t){var e=OrgChart.server._doNotChangePositionOfClickedNodeIfAny(s,l,o.action,o.actionParams,o.oldNodes,o.config.orientation);o.state&&o.action==OrgChart.action.init&&(e=o.state.adjustify);for(var r={minX:null,minY:null,maxX:null,maxY:null},i={},a=0;a=e.collapse.level-1&&-1==i.indexOf(t.id):a!=OrgChart.action.centerNode&&a!=OrgChart.action.insert||-1!=i.indexOf(t.id)&&(t.collapsed=!1)},OrgChart.server._initNode=function(t,e,r,i,a,n,o,l,s,h,d){var c=n[r||\"base\"];null==t.parent&&OrgChart.server._setCollpasedProperty(t,c,s,l,a,i-1,d);for(var g=0;gi.sl&&(i=e);for(var r=0;r=a-o)switch(_=(a+o)/2-b/2,i.orientation){case OrgChart.orientation.right:case OrgChart.orientation.right_top:_=(o-a)/2-b/2}else switch(_=u.x-b/2+OrgChart.server._getNodeWidth(u,i)/2,i.orientation){case OrgChart.orientation.right:case OrgChart.orientation.right_top:(_=-(b/2-(o-a)/2))-i.padding&&(_=-i.padding)}if(w-2*i.padding>=n-l)switch(k=(n+l)/2-w/2,i.orientation){case OrgChart.orientation.bottom:case OrgChart.orientation.bottom_left:k=(l-n)/2-w/2}else switch((k=-(w/2-(n-l)/2))>-i.padding&&(k=-i.padding),i.orientation){case OrgChart.orientation.bottom:case OrgChart.orientation.bottom_left:(k=-(w/2-(l-n)/2))m.right?m.right:m.left),s[0]>m.right&&s[0]>m.left&&(s[0]=m.left>m.right?m.left:m.right),s[1]m.bottom?m.bottom:m.top),s[1]>m.bottom&&s[1]>m.top&&(s[1]=m.top>m.bottom?m.top:m.bottom))}if(d==OrgChart.action.centerNode||d==OrgChart.action.maximize){var S=g[c.id];1==c.options.horizontal&&(s[0]=S.x+S.w/2-s[2]/2),1==c.options.vertical&&(s[1]=S.y+S.h/2-s[3]/2),i.sticky&&(s[0]m.right?m.right:m.left),s[0]>m.right&&s[0]>m.left&&(s[0]=m.left>m.right?m.left:m.right),s[1]m.bottom?m.bottom:m.top),s[1]>m.bottom&&s[1]>m.top&&(s[1]=m.top>m.bottom?m.top:m.bottom))}if(d==OrgChart.action.insert||d==OrgChart.action.expand||d==OrgChart.action.collapse||d==OrgChart.action.update||d==OrgChart.action.centerNode||d==OrgChart.action.maximize){var I=null;if(d==OrgChart.action.insert&&c&&null!=c.insertedNodeId&&null!=c.insertedNodeId)I=g[c.insertedNodeId];else if(d==OrgChart.action.update&&c&&null!=c.visId&&null!=c.visId)I=g[c.visId];else if(d!=OrgChart.action.expand&&d!=OrgChart.action.collapse&&d!=OrgChart.action.maximize||!c||null==c.id||null==c.id){if(d==OrgChart.action.centerNode||d==OrgChart.action.maximize){switch(i.orientation){case OrgChart.orientation.top:case OrgChart.orientation.top_left:case OrgChart.orientation.bottom:case OrgChart.orientation.bottom_left:c.options.vertical||(I=g[c.id]);break;case OrgChart.orientation.right:case OrgChart.orientation.right_top:case OrgChart.orientation.left:case OrgChart.orientation.left_top:c.options.horizontal||(I=g[c.id])}I&&(I=OrgChart.server._getMostDeepChild(I,g))}}else I=g[c.id],I=OrgChart.server._getMostDeepChild(I,g);if(!OrgChart.FIXED_POSITION_ON_CLICK&&I)switch(i.orientation){case OrgChart.orientation.top:case OrgChart.orientation.top_left:var A=I.y+I.h-s[3]+i.padding;s[1]A&&(s[1]=A);break;case OrgChart.orientation.right:case OrgChart.orientation.right_top:A=I.x-i.padding;s[0]>A&&(s[0]=A);break;case OrgChart.orientation.left:case OrgChart.orientation.left_top:A=I.x+I.w-s[2]+i.padding;s[0]',svg:'{content}',link:'',pointer:'',node:'',plus:'',minus:'',nodeMenuButton:'',exportMenuButton:'



',img_0:'',link_field_0:'{val}'},OrgChart.templates.ana={defs:\"\",size:[250,120],linkAdjuster:{fromX:0,fromY:0,toX:0,toY:0},ripple:{radius:0,color:\"#e6e6e6\",rect:null},expandCollapseSize:30,svg:'{content}',link:'',assistanseLink:'',pointer:'',node:'',plus:'',minus:'',nodeMenuButton:'',exportMenuButton:'



',img_0:'',link_field_0:'{val}',field_0:'{val}',field_1:'{val}',padding:[50,20,35,20]},OrgChart.templates.split=Object.assign({},OrgChart.templates.ana),OrgChart.templates.split.size=[10,10],OrgChart.templates.split.node='',OrgChart.templates.group=Object.assign({},OrgChart.templates.ana),OrgChart.templates.group.size=[250,120],OrgChart.templates.group.node='',OrgChart.templates.group.link='',OrgChart.templates.group.nodeMenuButton='',OrgChart.templates.group.field_0='{val}',OrgChart.templates.group.field_1=\"\",OrgChart.templates.group.ripple={radius:50,color:\"#aeaeae\"},OrgChart.templates.invisibleGroup=Object.assign({},OrgChart.templates.group),OrgChart.templates.invisibleGroup.node=\"\",OrgChart.templates.invisibleGroup.padding=[0,0,0,0],OrgChart.templates.invisibleGroup.field_0=\"\",OrgChart.templates.invisibleGroup.nodeMenuButton=\"\",OrgChart.templates.mirror={linkAdjuster:{},link:\"\",node:\"\",nodeMenuButton:\"\",size:[0,0]},OrgChart.templates.ula=Object.assign({},OrgChart.templates.ana),OrgChart.templates.ula.field_0='{val}',OrgChart.templates.ula.field_1='{val}',OrgChart.templates.ula.node='',OrgChart.templates.ula.img_0='',OrgChart.templates.ula.menu='',OrgChart.templates.ula.nodeMenuButton='',OrgChart.templates.olivia=Object.assign({},OrgChart.templates.ana),OrgChart.templates.olivia.field_0='{val}',OrgChart.templates.olivia.field_1='{val}',OrgChart.templates.olivia.defs='',OrgChart.templates.olivia.node='',OrgChart.templates.olivia.img_0='',OrgChart.templates.olivia.nodeMenuButton='',OrgChart.templates.belinda=Object.assign({},OrgChart.templates.ana),OrgChart.templates.belinda.size=[180,180],OrgChart.templates.belinda.ripple={radius:90,color:\"#e6e6e6\",rect:null},OrgChart.templates.belinda.node='',OrgChart.templates.belinda.img_0='',OrgChart.templates.belinda.field_0='{val}',OrgChart.templates.belinda.field_1='{val}',OrgChart.templates.belinda.link='',OrgChart.templates.belinda.nodeMenuButton='',OrgChart.templates.rony=Object.assign({},OrgChart.templates.ana),OrgChart.templates.rony.svg='{content}',OrgChart.templates.rony.defs='',OrgChart.templates.rony.size=[180,250],OrgChart.templates.rony.ripple={color:\"#F57C00\",radius:5,rect:null},OrgChart.templates.rony.img_0='',OrgChart.templates.rony.node='',OrgChart.templates.rony.field_0='{val}',OrgChart.templates.rony.field_1='{val}',OrgChart.templates.rony.field_2='{val}',OrgChart.templates.rony.link='',OrgChart.templates.rony.plus='',OrgChart.templates.rony.minus='',OrgChart.templates.rony.nodeMenuButton='',OrgChart.templates.mery=Object.assign({},OrgChart.templates.ana),OrgChart.templates.mery.ripple={color:\"#e6e6e6\",radius:50,rect:null},OrgChart.templates.mery.node='',OrgChart.templates.mery.link='',OrgChart.templates.mery.img_0='',OrgChart.templates.mery.field_0='{val}',OrgChart.templates.mery.field_1='{val}',OrgChart.templates.mery.nodeMenuButton='',OrgChart.templates.polina=Object.assign({},OrgChart.templates.ana),OrgChart.templates.polina.size=[300,80],OrgChart.templates.polina.ripple={color:\"#e6e6e6\",radius:40,rect:null},OrgChart.templates.polina.node='',OrgChart.templates.polina.img_0='',OrgChart.templates.polina.field_0='{val}',OrgChart.templates.polina.field_1='{val}',OrgChart.templates.polina.link='',OrgChart.templates.polina.nodeMenuButton='',OrgChart.templates.mila=Object.assign({},OrgChart.templates.ana),OrgChart.templates.mila.node='',OrgChart.templates.mila.img_0='',OrgChart.templates.mila.field_0='{val}',OrgChart.templates.mila.nodeMenuButton='',OrgChart.templates.diva=Object.assign({},OrgChart.templates.ana),OrgChart.templates.diva.size=[200,170],OrgChart.templates.diva.node='',OrgChart.templates.diva.img_0='',OrgChart.templates.diva.field_0='{val}',OrgChart.templates.diva.field_1='{val}',OrgChart.templates.diva.pointer='',OrgChart.templates.diva.nodeMenuButton='',OrgChart.templates.luba=Object.assign({},OrgChart.templates.ana),OrgChart.templates.luba.svg='{content}',OrgChart.templates.luba.defs='',OrgChart.templates.luba.node='',OrgChart.templates.luba.img_0='',OrgChart.templates.luba.nodeMenuButton='',OrgChart.templates.luba.field_0='{val}',OrgChart.templates.luba.field_1='{val}',OrgChart.templates.luba.plus='',OrgChart.templates.luba.minus='',OrgChart.templates.luba.expandCollapseSize=36,OrgChart.templates.derek=Object.assign({},OrgChart.templates.ana),OrgChart.templates.derek.link='',OrgChart.templates.derek.field_0='{val}',OrgChart.templates.derek.field_1='{val}',OrgChart.templates.derek.node='',OrgChart.templates.derek.defs=' ',OrgChart.templates.derek.img_0='',OrgChart.templates.derek.minus='',OrgChart.templates.derek.plus='',OrgChart.templates.derek.nodeMenuButton='',OrgChart.templates.isla=Object.assign({},OrgChart.templates.ana),OrgChart.templates.isla.defs='',OrgChart.templates.isla.size=[180,120],OrgChart.templates.isla.node='',OrgChart.templates.isla.field_0='{val}',OrgChart.templates.isla.field_1='{val}',OrgChart.templates.isla.img_0='',OrgChart.templates.isla.minus='',OrgChart.templates.isla.plus='',OrgChart.templates.isla.nodeMenuButton='',OrgChart.templates.isla.ripple={radius:0,color:\"#F57C00\",rect:{x:0,y:20,width:180,height:100}},OrgChart.templates.deborah=Object.assign({},OrgChart.templates.polina),OrgChart.templates.deborah.size=[150,150],OrgChart.templates.deborah.node='',OrgChart.templates.deborah.img_0='',OrgChart.templates.deborah.field_0='{val}',OrgChart.templates.deborah.field_1='{val}',OrgChart.templates.deborah.nodeMenuButton='',OrgChart.templates.subLevel=Object.assign({},OrgChart.templates.base),OrgChart.templates.subLevel.size=[0,0],OrgChart.templates.subLevel.node=\"\",OrgChart.templates.subLevel.plus=\"\",OrgChart.templates.subLevel.minus=\"\",OrgChart.templates.subLevel.nodeMenuButton=\"\",OrgChart.ui={_defsIds:{},defs:function(t){var e=\"\";for(var r in OrgChart.templates){var i=OrgChart.templates[r];i.defs?(OrgChart.ui._defsIds[r]=OrgChart.randomId(),e+=i.defs.replace(\"{randId}\",OrgChart.ui._defsIds[r])):e+=i.defs}return\"\"+e+t+\"\"},css:function(){return''},lonely:function(t){return t.nodes&&t.nodes.length?\"\":OrgChart.IT_IS_LONELY_HERE.replace(\"{link}\",OrgChart.RES.IT_IS_LONELY_HERE_LINK)},pointer:function(t,e,r){return e===OrgChart.action.exporting?\"\":OrgChart.t(t.template,!1,r).pointer},node:function(t,e,r,i,a,n,o,l,s,h){var d=OrgChart.t(t.templateName,t.min,s),c=d.node.replaceAll(\"{w}\",t.w).replaceAll(\"{h}\",t.h);for(var g in d.defs&&(c=c.replace(\"{randId}\",OrgChart.ui._defsIds[t.templateName])),null==o&&(o=i.nodeBinding),o){var p=o[g];if(e){var f=e[p];if(\"function\"==typeof p&&(f=p(h,t,e)),null!=f&&null!=f&&null!=d[g])c+=(OrgChart._lblIsImg(i,g)||\"string\"!=typeof f||(f=OrgChart.wrapText(f,d[g])),d[g].replace(\"{val}\",f)).replaceAll(\"{ew}\",t.w-(t.padding?t.padding[1]:0)).replaceAll(\"{cw}\",t.w/2).replaceAll(\"{randId}\",OrgChart.randomId()).replaceAll(\"{randId2}\",OrgChart.randomId())}}var u=OrgChart._getPosition(r,t,a,n),C=\"node\";Array.isArray(t.tags)&&t.tags.length&&(C+=\" \"+t.tags.join(\" \")),t.layout&&(C+=\" tree-layout\");var m=\"\";t.lcn&&(m='lcn=\"'+t.lcn+'\"');var O=OrgChart.nodeOpenTag.replace(\"{lcn}\",m).replace(\"{id}\",t.id).replace(\"{class}\",C).replace(\"{sl}\",t.sl).replace(\"{level}\",t.level).replace(\"{x}\",u.x).replace(\"{y}\",u.y),y=OrgChart._getOpacity(r,t);(O=O.replace(\"{opacity}\",y),null!=i.nodeMenu&&\"split\"!=t.templateName&&l!==OrgChart.action.exporting)&&(c+=d.nodeMenuButton.replace(\"{id}\",t.id).replace(\"{cw}\",t.w/2).replace(\"{ew}\",t.w-(t.padding?t.padding[1]:0)));return c=O+c+OrgChart.grCloseTag},expandCollapseBtn:function(t,e,r,i,a){var n=\"\";if(i!==OrgChart.action.exporting&&0t.firstRight.x+t.firstRight.w/2?ot.firstRight.y+t.firstRight.h/2?or.right?r.right:r.left),e[0]>r.right&&e[0]>r.left&&(a[0]=r.left>r.right?r.left:r.right),e[1]r.bottom?r.bottom:r.top),e[1]>r.bottom&&e[1]>r.top&&(a[1]=r.top>r.bottom?r.top:r.bottom),e[0]!==a[0]||e[1]!==a[1]?OrgChart.anim(t,{viewBox:e},{viewBox:a},300,OrgChart.anim.outPow,function(){i&&i()}):i&&i()},OrgChart.randomId=function(){return Math.random().toString(36).substring(2,15)+Math.random().toString(36).substring(2,15)},OrgChart._getClientXY=function(t){return-1==t.type.indexOf(\"touch\")?{x:t.clientX,y:t.clientY}:t.changedTouches.length?{x:t.changedTouches[0].clientX,y:t.changedTouches[0].clientY}:void 0},OrgChart._getClientTouchesXY=function(t,e){return-1!=t.type.indexOf(\"touch\")?t.touches.lengtha.top+a.height&&(l-=n.height),i.left-n.width\"+t+\"\",e.querySelector(\"text\").getBoundingClientRect()},OrgChart.wrapText=function(t,e){if(-1==e.indexOf(\"\"+e+\"\";var i=(new DOMParser).parseFromString(e,\"text/xml\").getElementsByTagName(\"text\")[0],a=parseFloat(i.getAttribute(\"x\")),n=parseFloat(i.getAttribute(\"y\")),o=i.getAttribute(\"text-anchor\"),l=i.getAttribute(\"width\"),s=i.getAttribute(\"text-overflow\"),h=\"http://www.w3.org/2000/svg\",d=r.getElementsByTagName(\"svg\")[0].getElementsByTagName(\"text\")[0],c=parseFloat(i.getAttribute(\"text-overflow-lines\"));if(c||(c=0),!l)return t;if(l=parseFloat(l),a||(a=0),n||(n=0),a||(o=\"start\"),s||(s=\"ellipsis\"),\"ellipsis\"==s){d.removeChild(d.firstChild),d.textContent=t;for(var g=d.getComputedTextLength(),p=2;l\"+t+\"\"+d.textContent:t}if(\"multiline\"==s){var f=t.split(\" \"),u=d.getBBox().height;d.textContent=\"\";var C=document.createElementNS(h,\"tspan\"),m=document.createTextNode(f[0]);C.setAttributeNS(null,\"x\",a),C.setAttributeNS(null,\"y\",n),C.setAttributeNS(null,\"text-anchor\",o),C.appendChild(m),d.appendChild(C);p=1;for(var O=1,y=1;yl){if(C.firstChild.data=C.firstChild.data.slice(0,x),O++,0!==c&&c'+(new XMLSerializer).serializeToString(e.documentElement)},OrgChart._xml2json=function(t){for(var e=(new DOMParser).parseFromString(t,\"text/xml\").getElementsByTagName(\"node\"),r=[],i=0;ie.maxX)&&(e.maxX=t.x+t.w),(null==e.maxY||null!=t.y&&t.y+t.h>e.maxY)&&(e.maxY=t.y+t.h)},OrgChart.getStParentNodes=function(t,e){for(e||(e=[]);t.parent;)t=t.parent;return t.stParent&&(e.push(t.stParent),OrgChart.getStParentNodes(t.stParent,e)),e},OrgChart.getRootOf=function(t){for(;t&&t.parent;)t=t.parent;return t},OrgChart._getViewBox=function(t){var e=null;return t?(e=(e=\"[\"+(e=t.getAttribute(\"viewBox\"))+\"]\").replace(/\\ /g,\",\"),e=JSON.parse(e)):null},OrgChart.isNullOrEmpty=function(t){return null==t||\"\"===t},OrgChart.xScrollUI=function(t,e,r,i,a){this.element=t,this.requestParams=r,this.config=e,this.onSetViewBoxCallback=i,this.onDrawCallback=a,this.pos=0},OrgChart.xScrollUI.prototype.addListener=function(t){var o=this;if((this.config.mouseScrool==OrgChart.action.xScroll||this.config.mouseScrool==OrgChart.action.scroll)&&this.bar){var e=OrgChart._getScrollSensitivity();!function(t,i,e){var a=!1;function n(){a=!0;var t=(o.pos-o.bar.scrollLeft)/e;if(0r&&(o.pos=r),a||n()},{passive:!0});var r=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){setTimeout(t,20)}}(t,e.speed,e.smooth)}},OrgChart.xScrollUI.prototype.create=function(t){if(this.config.showXScroll===OrgChart.scroll.visible||this.config.mouseScrool===OrgChart.action.scroll||this.config.mouseScrool===OrgChart.action.xScroll){var a=this;this.bar&&this.bar.parentNode.removeChild(this.bar),this.bar=document.createElement(\"div\"),this.config.showXScroll!==OrgChart.scroll.visible&&(this.bar.style.visibility=\"hidden\"),this.innerBar=document.createElement(\"div\");this.requestParams();this.innerBar.innerHTML=\" \",Object.assign(this.bar.style,{position:\"absolute\",left:0,bottom:0,width:t+\"px\",\"overflow-x\":\"scroll\",height:\"20px\"}),this.element.appendChild(this.bar),this.bar.appendChild(this.innerBar),this.bar.addEventListener(\"scroll\",function(){if(this.ignore)this.ignore=!1;else{var t=a.requestParams(),e=(parseFloat(a.innerBar.clientWidth)-parseFloat(a.bar.clientWidth))/100,r=this.scrollLeft/e,i=(t.boundary.right-t.boundary.left)/100;t.viewBox[0]=r*i+t.boundary.left,a.onSetViewBoxCallback(t.viewBox),clearTimeout(this._timeout),this._timeout=setTimeout(function(){a.onDrawCallback()},500)}})}},OrgChart.xScrollUI.prototype.setPosition=function(){if(this.bar){var t=this.requestParams(),e=Math.abs(t.boundary.maxX-t.boundary.minX)*t.scale;switch(this.config.orientation){case OrgChart.orientation.bottom:case OrgChart.orientation.bottom_left:innerHeight=Math.abs(t.boundary.minY*t.scale);break;case OrgChart.orientation.right:case OrgChart.orientation.right_top:e=Math.abs(t.boundary.minX*t.scale)}this.innerBar.style.width=e+\"px\";var r=(t.boundary.right-t.boundary.left)/100,i=(t.viewBox[0]-t.boundary.left)/r;i<0?i=0:100r&&(o.pos=r),a||n()},{passive:!0});var r=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){setTimeout(t,20)}}(t,e.speed,e.smooth)}},OrgChart.yScrollUI.prototype.create=function(t){if(this.config.showYScroll===OrgChart.scroll.visible||this.config.mouseScrool===OrgChart.action.scroll||this.config.mouseScrool===OrgChart.action.yScroll){var a=this;this.bar&&this.bar.parentNode.removeChild(this.bar),this.bar=document.createElement(\"div\"),this.config.showYScroll!==OrgChart.scroll.visible&&(this.bar.style.visibility=\"hidden\"),this.innerBar=document.createElement(\"div\"),this.innerBar.innerHTML=\" \",Object.assign(this.bar.style,{position:\"absolute\",right:0,bottom:0,height:t+\"px\",\"overflow-y\":\"scroll\",width:\"20px\"}),this.element.appendChild(this.bar),this.bar.appendChild(this.innerBar),this.bar.addEventListener(\"scroll\",function(){if(this.ignore)this.ignore=!1;else{var t=a.requestParams(),e=(parseFloat(a.innerBar.clientHeight)-parseFloat(a.bar.clientHeight))/100,r=this.scrollTop/e,i=(t.boundary.bottom-t.boundary.top)/100;t.viewBox[1]=r*i+t.boundary.top,a.onSetViewBoxCallback(t.viewBox),clearTimeout(this._timeout),this._timeout=setTimeout(function(){a.onDrawCallback()},500)}})}},OrgChart.yScrollUI.prototype.setPosition=function(){if(this.bar){var t=this.requestParams(),e=t.boundary.maxY*t.scale;switch(this.config.orientation){case OrgChart.orientation.bottom:case OrgChart.orientation.bottom_left:e=Math.abs(t.boundary.minY*t.scale);break;case OrgChart.orientation.right:case OrgChart.orientation.right_top:innerWidth=Math.abs(t.boundary.minX*t.scale)}this.innerBar.style.height=e+\"px\";var r=(t.boundary.bottom-t.boundary.top)/100,i=(t.viewBox[1]-t.boundary.top)/Math.abs(r);i<0?i=0:100this.config.scaleMin||0!=t&&1!=t&&lthis.config.scaleMin){this._hideBeforeAnimation();var s=this;r?(clearTimeout(s._timeout),OrgChart.anim(this.getSvg(),{viewbox:this.getViewBox()},{viewbox:i},this.config.anim.duration,this.config.anim.func,function(){clearTimeout(s._timeout),s._timeout=setTimeout(function(){s._draw(!0,OrgChart.action.zoom)},500)})):(this.setViewBox(i),clearTimeout(s._timeout),s._timeout=setTimeout(function(){s._draw(!0,OrgChart.action.zoom)},500))}},OrgChart.loading={},OrgChart.loading.show=function(t){var e=document.createElement(\"div\");e.id=\"bg-loading\",e.innerHTML='
',t.element.appendChild(e)},OrgChart.loading.hide=function(t){var e=t.element.querySelector(\"#bg-loading\");e&&e.parentNode.removeChild(e)},OrgChart.pdfPrevUI={},OrgChart.loc||(OrgChart.loc={}),OrgChart.loc.ppdfCmdTitle=\"PDF Preview\",OrgChart.loc.ppdfSave=\"Save\",OrgChart.loc.ppdfCancel=\"Cancel\",OrgChart.loc.ppdfFormat=\"Format\",OrgChart.loc.ppdfFitToDrwaing=\"Fit\",OrgChart.loc.ppdfA4=\"A4\",OrgChart.loc.ppdfA3=\"A3\",OrgChart.loc.ppdfA2=\"A2\",OrgChart.loc.ppdfA1=\"A1\",OrgChart.loc.ppdfLetter=\"Letter\",OrgChart.loc.ppdfLegal=\"Legal\",OrgChart.loc.ppdfLayout=\"Layout\",OrgChart.loc.ppdfPortrait=\"Portrait\",OrgChart.loc.ppdfLandscape=\"Landscape\",OrgChart.loc.ppdfFittopagewidth=\"Fit to page width\",OrgChart.loc.ppdfMargin=\"Margin\",OrgChart.loc.ppdfHeader=\"Header\",OrgChart.loc.ppdfFooter=\"Footer\",OrgChart.loc.ppdfScale=\"Scale\",OrgChart.pdfPrevUI.show=function(r,i){i=r._defaultExportOptions(i,\"pdf\");var t=document.createElement(\"div\");t.id=\"bg-ppdf-btns\",Object.assign(t.style,{position:\"absolute\",top:0,left:0,\"background-color\":\"#fff\",\"z-index\":5,margin:\"0 0 0 -250px\",\"box-shadow\":\"0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19)\",width:\"250px\",height:\"100%\",\"font-family\":\"Roboto,Helvetica\",color:\"#757575\",\"text-align\":\"right\",padding:\"10px\"}),r.element.appendChild(t),t.innerHTML=\"

\"+OrgChart.loc.ppdfCmdTitle+'

 
';var e=document.createElement(\"div\");e.id=\"bg-ppdf-wrapper\",Object.assign(e.style,{\"overflow-y\":\"scroll\",position:\"absolute\",top:0,left:\"270px\",\"background-color\":\"#eee\",width:r.width()-270+\"px\",height:\"100%\"}),r.element.appendChild(e),e.innerHTML='
';var a,n,o,l=r.element.querySelector(\"#bg-ppdf-size\"),s=r.element.querySelector(\"#bg-ppdf-layout\"),h=r.element.querySelector(\"#bg-ppdf-scale\"),d=r.element.querySelector(\"#bg-ppdf-margin\"),c=r.element.querySelector(\"#bg-ppdf-header\"),g=r.element.querySelector(\"#bg-ppdf-footer\");l.value=i.format,s.value=i.landscape,h.value=i.scale,d.value=i.margin,c.value=i.header,g.value=i.footer,OrgChart.anim(r.element.querySelector(\"#bg-ppdf-btns\"),{margin:[0,0,0,-250]},{margin:[0,0,0,0]},300,OrgChart.anim.outSin,function(){r.exportPDF(i,OrgChart.pdfPrevUI._handler)}),r.element.querySelector(\"#bg-prev-cancel\").addEventListener(\"click\",function(){OrgChart.pdfPrevUI.hide(r)}),r.element.querySelector(\"#bg-prev-save\").addEventListener(\"click\",function(){r.exportPDF(i),OrgChart.pdfPrevUI.hide(r)}),OrgChart.pdfPrevUI._showHide(l,s,h),l.addEventListener(\"change\",function(){OrgChart.anim(r.element.querySelector(\"#bg-ppdf-content\"),{opacity:1},{opacity:0},300,OrgChart.anim.inSin,function(){r.element.querySelector(\"#bg-ppdf-content\").innerHTML=\"\",i.format=l.value,r.exportPDF(i,OrgChart.pdfPrevUI._handler),OrgChart.pdfPrevUI._showHide(l,s,h)})}),s.addEventListener(\"change\",function(){OrgChart.anim(r.element.querySelector(\"#bg-ppdf-content\"),{opacity:1},{opacity:0},300,OrgChart.anim.inSin,function(){r.element.querySelector(\"#bg-ppdf-content\").innerHTML=\"\",i.landscape=\"true\"==s.value,r.exportPDF(i,OrgChart.pdfPrevUI._handler),OrgChart.pdfPrevUI._showHide(l,s,h)})}),h.addEventListener(\"change\",function(){OrgChart.anim(r.element.querySelector(\"#bg-ppdf-content\"),{opacity:1},{opacity:0},300,OrgChart.anim.inSin,function(){r.element.querySelector(\"#bg-ppdf-content\").innerHTML=\"\",i.scale=h.value,r.exportPDF(i,OrgChart.pdfPrevUI._handler),OrgChart.pdfPrevUI._showHide(l,s,h)})}),d.addEventListener(\"keyup\",function(){clearTimeout(a),a=setTimeout(function(){OrgChart.anim(r.element.querySelector(\"#bg-ppdf-content\"),{opacity:1},{opacity:0},300,OrgChart.anim.inSin,function(){r.element.querySelector(\"#bg-ppdf-content\").innerHTML=\"\";var t=d.value.split(\",\");if(4==t.length){for(var e=0;e';return a&&(s+='
'+a+\"
\"),s+=t,n&&(s+='
'+n+\"
\"),s+=\"
\",s+=\"\"},OrgChart.pdfPrevUI.hide=function(e){var r=e.element.querySelector(\"#bg-ppdf-wrapper\");r&&OrgChart.anim(r,{opacity:1},{opacity:0},300,OrgChart.anim.inSin,function(){r.parentNode.removeChild(r);var t=e.element.querySelector(\"#bg-ppdf-btns\");OrgChart.anim(t,{margin:[0,0,0,0]},{margin:[0,0,0,-280]},300,OrgChart.anim.inSin,function(){t.parentNode.removeChild(t)})})},void 0===OrgChart&&(OrgChart={}),OrgChart.events.on(\"renderdefs\",function(t,e){for(var r=0;r'.replace(\"{from}\",d.id).replace(\"{to}\",c.id)+k.link.replaceAll(\"{d}\",\"M{a.x},{a.y} C{a.x},{a.y} {c.x},{c.y} {b.x},{b.y}\").replaceAll(\"{b.x}\",m.x).replaceAll(\"{b.y}\",m.y).replaceAll(\"{a.x}\",C.x).replaceAll(\"{a.y}\",C.y).replaceAll(\"{c.x}\",w.x).replaceAll(\"{c.y}\",w.y);var S=(r=C,a=w,void 0,n=((i=m).x-r.x)/2+r.x,o=(i.y-r.y)/2+r.y,{x:(n-a.x)/2+a.x,y:(o-a.y)/2+a.y});h.label&&(l+=k.label.replace(\"{x}\",S.x).replace(\"{y}\",S.y).replace(\"{val}\",h.label)),l+=OrgChart.grCloseTag}function I(t,e,r){null==r&&(r=1);var i=e.x-t.x,a=e.y-t.y,n=Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))/3;return n=n/(Math.sqrt(i*i+a*a)*r)*OrgChart.CLINK_CURVE,{x:t.x+i/2-a*n,y:t.y+a/2+i*n}}}e.content+=l},OrgChart.prototype.addClink=function(t,e,r,i){return this.removeClink(t,e),this.config.clinks.push({from:t,to:e,label:r,template:i}),this},OrgChart.prototype.removeClink=function(t,e){for(var r=this.config.clinks.length-1;0<=r;r--){var i=this.config.clinks[r];i.from==t&&i.to==e&&this.config.clinks.splice(r,1)}return this},OrgChart.clinkTemplates={},OrgChart.clinkTemplates.orange={defs:' ',link:'',label:'{val}'},OrgChart.clinkTemplates.blue={defs:' ',link:'',label:'{val}'},OrgChart.clinkTemplates.yellow={defs:' ',link:'',label:'{val}'},void 0===OrgChart&&(OrgChart={}),OrgChart.events.on(\"renderdefs\",function(t,e){for(var r=0;rt.x&&(n=\"right\");break;case OrgChart.orientation.left:case OrgChart.orientation.left_top:case OrgChart.orientation.right:case OrgChart.orientation.right_top:n=\"top\",e.y>t.y&&(n=\"bottom\")}var s=OrgChart.t(t.templateName,t.min,L),h=l.levelSeparation;(t.parent&&t.parent.layout==OrgChart.mixed||t.parent&&t.parent.layout==OrgChart.tree)&&(h=l.mixedHierarchyNodesSeparation);var d={p:t.x+t.w/2+s.expandCollapseSize,q:t.y,r:t.x+t.w/2+s.expandCollapseSize,s:E.minY+h};if(t.level==e.level)switch(a=e,l.orientation){case OrgChart.orientation.top:case OrgChart.orientation.top_left:i.push([d.p,d.q]),i.push([d.p,d.q-h/3]),s=OrgChart.t(a.templateName,a.min,L),i.push([a.x+a.w/2+s.expandCollapseSize,i[i.length-1][1]]),i.push([i[i.length-1][0],a.y]);break;case OrgChart.orientation.bottom:case OrgChart.orientation.bottom_left:d.q=t.y+t.h,d.s=E.maxY-h,i.push([d.p,d.q]),i.push([d.r,t.y+t.h+h/3]),s=OrgChart.t(a.templateName,a.min,L),i.push([a.x+a.w/2+s.expandCollapseSize,i[i.length-1][1]]),i.push([i[i.length-1][0],a.y+a.h]);break;case OrgChart.orientation.left:case OrgChart.orientation.left_top:d.p=t.x,d.q=t.y+t.h/2+s.expandCollapseSize,d.r=E.minX-h,d.s=t.y+t.h/2+s.expandCollapseSize,i.push([d.p,d.q]),i.push([t.x-h/3,d.q]),s=OrgChart.t(a.templateName,a.min,L),i.push([i[i.length-1][0],a.y+a.h/2+s.expandCollapseSize]),i.push([a.x,i[i.length-1][1]]);break;case OrgChart.orientation.right:case OrgChart.orientation.right_top:d.p=t.x+t.w,d.q=t.y+t.h/2+s.expandCollapseSize,d.r=E.maxX+h,d.s=t.y+t.h/2+s.expandCollapseSize,i.push([d.p,d.q]),i.push([t.x+t.w+h/3,d.q]),s=OrgChart.t(a.templateName,a.min,L),i.push([i[i.length-1][0],a.y+a.h/2+s.expandCollapseSize]),i.push([a.x+a.w,i[i.length-1][1]])}else{switch(l.orientation){case OrgChart.orientation.top:case OrgChart.orientation.top_left:i.push([d.p,d.q]),i.push([d.r,t.y-h/3]);break;case OrgChart.orientation.bottom:case OrgChart.orientation.bottom_left:d.q=t.y+t.h,d.s=E.maxY-h,i.push([d.p,d.q]),i.push([d.r,t.y+t.h+h/3]);break;case OrgChart.orientation.left:case OrgChart.orientation.left_top:d.p=t.x,d.q=t.y+t.h/2+s.expandCollapseSize,d.r=E.minX-h,d.s=t.y+t.h/2+s.expandCollapseSize,i.push([d.p,d.q]),i.push([t.x-h/3,d.q]);break;case OrgChart.orientation.right:case OrgChart.orientation.right_top:d.p=t.x+t.w,d.q=t.y+t.h/2+s.expandCollapseSize,d.r=E.maxX+h,d.s=t.y+t.h/2+s.expandCollapseSize,i.push([d.p,d.q]),i.push([t.x+t.w+h/3,d.q])}for(var c=t;null==a;){var g=!1,p=c.parent,f=p.leftNeighbor,u=p.rightNeighbor;if(p.id==e.id?a=p:OrgChart._intersects(p,d,S.config)&&(d=OrgChart._addPoint(p,i,S.config,d,n),g=!0),p.id!=e.id){for(;f;){if(f.id==e.id){a=f;break}OrgChart._intersects(f,d,S.config)&&(d=OrgChart._addPoint(f,i,S.config,d,n),g=!0),f=f.leftNeighbor}for(;u;){if(u.id==e.id){a=u;break}OrgChart._intersects(u,d,S.config)&&(d=OrgChart._addPoint(u,i,S.config,d,n),g=!0),u=u.rightNeighbor}}if(!g){var C=i[i.length-1][0],m=0;if(p.parent)switch(h=l.levelSeparation,p.parent.layout!=OrgChart.mixed&&p.parent.layout!=OrgChart.tree||(h=l.mixedHierarchyNodesSeparation),l.orientation){case OrgChart.orientation.top:case OrgChart.orientation.top_left:m=p.parent.y+p.parent.h+h*(2/3);break;case OrgChart.orientation.bottom:case OrgChart.orientation.bottom_left:m=p.parent.y-h*(2/3);break;case OrgChart.orientation.left:case OrgChart.orientation.left_top:C=p.parent.x+p.parent.w+h*(2/3),m=i[i.length-1][1];break;case OrgChart.orientation.right:case OrgChart.orientation.right_top:C=p.parent.x-h*(2/3),m=i[i.length-1][1]}i.push([C,m])}c=p}switch(s=OrgChart.t(a.templateName,a.min,L),i.splice(i.length-1,1),l.orientation){case OrgChart.orientation.top:case OrgChart.orientation.top_left:i.push([a.x+a.w/2+s.expandCollapseSize,i[i.length-1][1]]),i.push([i[i.length-1][0],a.y+a.h]);break;case OrgChart.orientation.bottom:case OrgChart.orientation.bottom_left:i.push([a.x+a.w/2+s.expandCollapseSize,i[i.length-1][1]]),i.push([i[i.length-1][0],a.y]);break;case OrgChart.orientation.left:case OrgChart.orientation.left_top:i.push([i[i.length-1][0],a.y+a.h/2+s.expandCollapseSize]),i.push([a.x+a.w,i[i.length-1][1]]);break;case OrgChart.orientation.right:case OrgChart.orientation.right_top:i.push([i[i.length-1][0],a.y+a.h/2+s.expandCollapseSize]),i.push([a.x,i[i.length-1][1]])}}var O=N.template;O||(O=\"orange\");var y=null;switch((s=OrgChart.slinkTemplates[O]).labelPosition){case\"start\":y={x:i[1][0],y:i[1][1]};break;case\"middle\":var x=Math.ceil(i.length/2);y=function(t,e){return{x:(t[0]+e[0])/2,y:(t[1]+e[1])/2}}(i[x],i[x-1]);break;case\"end\":y={x:i[i.length-2][0],y:i[i.length-2][1]}}r&&(i=i.reverse()),i[0]=\"M\"+i[0].join(\",\");for(var v=1;v=i.level?t(r,i,!1):t(i,r,!0)}}},OrgChart.prototype.addSlink=function(t,e,r,i){return this.removeClink(t,e),this.config.slinks.push({from:t,to:e,label:r,template:i}),this},OrgChart.prototype.removeSlink=function(t,e){for(var r=this.config.slinks.length-1;0<=r;r--){var i=this.config.slinks[r];i.from==t&&i.to==e&&this.config.slinks.splice(r,1)}return this},OrgChart.slinkTemplates={},OrgChart.slinkTemplates.orange={defs:' ',link:'',label:'{val}',labelPosition:\"middle\"},OrgChart.slinkTemplates.blue={defs:' ',link:'',label:'{val}',labelPosition:\"middle\"},OrgChart.slinkTemplates.yellow={defs:' ',link:'',label:'{val}',labelPosition:\"middle\"},OrgChart.events.on(\"redraw\",function(t,e){if(t.config.miniMap){var r=OrgChart.miniMap._getCanvas(t),a=r.getContext(\"2d\");r.width=r.width,r.height=r.height;var i=t.response.boundary.maxX-t.response.boundary.minX,n=t.response.boundary.maxY-t.response.boundary.minY,o=Math.min(r.width/i,r.height/n),l=(r.width-i*o)/2,s=(r.height-n*o)/2;a.clearRect(0,0,r.width,r.height),a.translate(-t.response.boundary.minX*o+l,-t.response.boundary.minY*o+s),a.scale(o,o);var h=0;drawnNodes=[],checkedLevel=[],function t(e,r){if(Array.isArray(r))for(var i=0;ie.__score?-1:0}),o},OrgChart._search.addNodeToResult=function(t,e,r,i,a,n){var o={};o.id=r.id,OrgChart.isNullOrEmpty(r[n])||(o[n]=r[n]);for(var l=0;ln[d].start){h=0;break}}var c=0;0!=l&&(c=l/o);var g=0e.start?1:0});var u=e;for(d=n.length-1;0<=d;d--)u=(u=u.insert(n[d].start+n[d].length,\"\")).insert(n[d].start,\"\");return{__searchMarks:u,__score:f}},OrgChart._search.searchIndexesOf=function(t,e){var l=[];if(!OrgChart.isNullOrEmpty(t))for(var r=0;re.length?-1:t.starte.start?1:0}),l=l.filter(function(t){for(var e=!1,r=0;ri?n=s(h.min(e,0)):p=s(h.max(c,0)):o=1;o=p-n;0==o&&(o=1,0\").insertAfter(this.element),this.options.singleField=!0,this.options.singleFieldNode=this.element,this.element.addClass(\"tagit-hidden-field\")):this.tagList=this.element.find(\"ul, ol\").addBack().last();this.tagInput=b('').addClass(\"ui-widget-content\");this.options.readOnly&&this.tagInput.attr(\"disabled\",\"disabled\");this.options.tabIndex&&this.tagInput.attr(\"tabindex\",this.options.tabIndex);this.options.placeholderText&&this.tagInput.attr(\"placeholder\",\nthis.options.placeholderText);this.options.autocomplete.source||(this.options.autocomplete.source=function(a,e){var d=a.term.toLowerCase(),c=b.grep(this.options.availableTags,function(a){return 0===a.toLowerCase().indexOf(d)});this.options.allowDuplicates||(c=this._subtractArray(c,this.assignedTags()));e(c)});this.options.showAutocompleteOnFocus&&(this.tagInput.focus(function(b,d){a._showAutocomplete()}),\"undefined\"===typeof this.options.autocomplete.minLength&&(this.options.autocomplete.minLength=\n0));b.isFunction(this.options.autocomplete.source)&&(this.options.autocomplete.source=b.proxy(this.options.autocomplete.source,this));b.isFunction(this.options.tagSource)&&(this.options.tagSource=b.proxy(this.options.tagSource,this));this.tagList.addClass(\"tagit\").addClass(\"ui-widget ui-widget-content ui-corner-all\").append(b('
  • ').append(this.tagInput)).click(function(d){var c=b(d.target);c.hasClass(\"tagit-label\")?(c=c.closest(\".tagit-choice\"),c.hasClass(\"removed\")||a._trigger(\"onTagClicked\",\nd,{tag:c,tagLabel:a.tagLabel(c)})):a.tagInput.focus()});var c=!1;if(this.options.singleField)if(this.options.singleFieldNode){var d=b(this.options.singleFieldNode),f=d.val().split(this.options.singleFieldDelimiter);d.val(\"\");b.each(f,function(b,d){a.createTag(d,null,!0);c=!0})}else this.options.singleFieldNode=b(''),this.tagList.after(this.options.singleFieldNode);c||this.tagList.children(\"li\").each(function(){b(this).hasClass(\"tagit-new\")||\n(a.createTag(b(this).text(),b(this).attr(\"class\"),!0),b(this).remove())});this.tagInput.keydown(function(c){if(c.which==b.ui.keyCode.BACKSPACE&&\"\"===a.tagInput.val()){var d=a._lastTag();!a.options.removeConfirmation||d.hasClass(\"remove\")?a.removeTag(d):a.options.removeConfirmation&&d.addClass(\"remove ui-state-highlight\")}else a.options.removeConfirmation&&a._lastTag().removeClass(\"remove ui-state-highlight\");if(c.which===b.ui.keyCode.COMMA&&!1===c.shiftKey||c.which===b.ui.keyCode.ENTER||c.which==\nb.ui.keyCode.TAB&&\"\"!==a.tagInput.val()||c.which==b.ui.keyCode.SPACE&&!0!==a.options.allowSpaces&&('\"'!=b.trim(a.tagInput.val()).replace(/^s*/,\"\").charAt(0)||'\"'==b.trim(a.tagInput.val()).charAt(0)&&'\"'==b.trim(a.tagInput.val()).charAt(b.trim(a.tagInput.val()).length-1)&&0!==b.trim(a.tagInput.val()).length-1))c.which===b.ui.keyCode.ENTER&&\"\"===a.tagInput.val()||c.preventDefault(),a.options.autocomplete.autoFocus&&a.tagInput.data(\"autocomplete-open\")||(a.tagInput.autocomplete(\"close\"),a.createTag(a._cleanedInput()))}).blur(function(b){a.tagInput.data(\"autocomplete-open\")||\na.createTag(a._cleanedInput())});if(this.options.availableTags||this.options.tagSource||this.options.autocomplete.source)d={select:function(b,c){a.createTag(c.item.value);return!1}},b.extend(d,this.options.autocomplete),d.source=this.options.tagSource||d.source,this.tagInput.autocomplete(d).bind(\"autocompleteopen.tagit\",function(b,c){a.tagInput.data(\"autocomplete-open\",!0)}).bind(\"autocompleteclose.tagit\",function(b,c){a.tagInput.data(\"autocomplete-open\",!1)}),this.tagInput.autocomplete(\"widget\").addClass(\"tagit-autocomplete\")},\ndestroy:function(){b.Widget.prototype.destroy.call(this);this.element.unbind(\".tagit\");this.tagList.unbind(\".tagit\");this.tagInput.removeData(\"autocomplete-open\");this.tagList.removeClass(\"tagit ui-widget ui-widget-content ui-corner-all tagit-hidden-field\");this.element.is(\"input\")?(this.element.removeClass(\"tagit-hidden-field\"),this.tagList.remove()):(this.element.children(\"li\").each(function(){b(this).hasClass(\"tagit-new\")?b(this).remove():(b(this).removeClass(\"tagit-choice ui-widget-content ui-state-default ui-state-highlight ui-corner-all remove tagit-choice-editable tagit-choice-read-only\"),\nb(this).text(b(this).children(\".tagit-label\").text()))}),this.singleFieldNode&&this.singleFieldNode.remove());return this},_cleanedInput:function(){return b.trim(this.tagInput.val().replace(/^\"(.*)\"$/,\"$1\"))},_lastTag:function(){return this.tagList.find(\".tagit-choice:last:not(.removed)\")},_tags:function(){return this.tagList.find(\".tagit-choice:not(.removed)\")},assignedTags:function(){var a=this,c=[];this.options.singleField?(c=b(this.options.singleFieldNode).val().split(this.options.singleFieldDelimiter),\n\"\"===c[0]&&(c=[])):this._tags().each(function(){c.push(a.tagLabel(this))});return c},_updateSingleTagsField:function(a){b(this.options.singleFieldNode).val(a.join(this.options.singleFieldDelimiter)).trigger(\"change\")},_subtractArray:function(a,c){for(var d=[],f=0;f=this.options.tagLimit)return this._trigger(\"onTagLimitExceeded\",null,{duringInitialization:d}),!1;var g=b(this.options.onTagClicked?'':'').text(a),e=b(\"
  • \").addClass(\"tagit-choice ui-widget-content ui-state-default ui-corner-all\").addClass(c).append(g);\nthis.options.readOnly?e.addClass(\"tagit-choice-read-only\"):(e.addClass(\"tagit-choice-editable\"),c=b(\"\").addClass(\"ui-icon ui-icon-close\"),c=b('\\u00d7').addClass(\"tagit-close\").append(c).click(function(a){f.removeTag(e)}),e.append(c));this.options.singleField||(g=g.html(),e.append(''));!1!==this._trigger(\"beforeTagAdded\",null,{tag:e,tagLabel:this.tagLabel(e),\nduringInitialization:d})&&(this.options.singleField&&(g=this.assignedTags(),g.push(a),this._updateSingleTagsField(g)),this._trigger(\"onTagAdded\",null,e),this.tagInput.val(\"\"),this.tagInput.parent().before(e),this._trigger(\"afterTagAdded\",null,{tag:e,tagLabel:this.tagLabel(e),duringInitialization:d}),this.options.showAutocompleteOnFocus&&!d&&setTimeout(function(){f._showAutocomplete()},0))},removeTag:function(a,c){c=\"undefined\"===typeof c?this.options.animate:c;a=b(a);this._trigger(\"onTagRemoved\",\nnull,a);if(!1!==this._trigger(\"beforeTagRemoved\",null,{tag:a,tagLabel:this.tagLabel(a)})){if(this.options.singleField){var d=this.assignedTags(),f=this.tagLabel(a),d=b.grep(d,function(a){return a!=f});this._updateSingleTagsField(d)}if(c){a.addClass(\"removed\");var d=this._effectExists(\"blind\")?[\"blind\",{direction:\"horizontal\"},\"fast\"]:[\"fast\"],g=this;d.push(function(){a.remove();g._trigger(\"afterTagRemoved\",null,{tag:a,tagLabel:g.tagLabel(a)})});a.fadeOut(\"fast\").hide.apply(a,d).dequeue()}else a.remove(),\nthis._trigger(\"afterTagRemoved\",null,{tag:a,tagLabel:this.tagLabel(a)})}},removeTagByLabel:function(a,b){var d=this._findTagByLabel(a);if(!d)throw\"No such tag exists with the name '\"+a+\"'\";this.removeTag(d,b)},removeAll:function(){var a=this;this._tags().each(function(b,d){a.removeTag(d,!1)})}})})(jQuery);\n","var map = {\n\t\"./animations/heart/heartAnimation.html\": 74425,\n\t\"./components/A3/a3-display-views/a3_attachment_added.html\": 78296,\n\t\"./components/A3/a3-display-views/a3_attachment_deleted.html\": 9455,\n\t\"./components/A3/a3-display-views/a3_category_changed.html\": 11163,\n\t\"./components/A3/a3-display-views/a3_goal_changed.html\": 39868,\n\t\"./components/A3/a3-display-views/a3_new.html\": 68780,\n\t\"./components/A3/a3-display-views/a3_owner_changed.html\": 6606,\n\t\"./components/A3/a3-display-views/a3_participant_group_updated.html\": 96691,\n\t\"./components/A3/a3-display-views/a3_project_info_updated.html\": 28958,\n\t\"./components/A3/a3-display-views/a3_project_milestone_created.html\": 72045,\n\t\"./components/A3/a3-display-views/a3_project_milestone_deleted.html\": 19788,\n\t\"./components/A3/a3-display-views/a3_project_milestone_updated.html\": 70498,\n\t\"./components/A3/a3-display-views/a3_status_updated.html\": 65910,\n\t\"./components/A3/a3-display-views/a3_step_approved.html\": 16478,\n\t\"./components/A3/a3-display-views/a3_step_commented_on.html\": 33301,\n\t\"./components/A3/a3-display-views/a3_step_updated.html\": 91182,\n\t\"./components/A3/a3-display-views/a3_title_changed.html\": 3323,\n\t\"./components/A3/a3-display-views/a3_updated.html\": 75513,\n\t\"./components/A3/a3-display-views/a3_version.html\": 21486,\n\t\"./components/A3/a3.html\": 44998,\n\t\"./components/A3/a3ActionList/a3ActionList.html\": 81445,\n\t\"./components/A3/a3ActionList/a3SmartActionList.html\": 87368,\n\t\"./components/A3/a3Participants/a3Participants.html\": 79905,\n\t\"./components/A3/a3StepDescription/a3StepDescriptionForm.html\": 39105,\n\t\"./components/A3/a3Table/a3Table.html\": 64519,\n\t\"./components/A3/a3Table/a3selector/a3SelectorModal.html\": 16503,\n\t\"./components/A3/a3Table/taskList/a3TaskListForm.html\": 29978,\n\t\"./components/A3/a3Table/templates/a3EndDateCell/a3EndDateCell.html\": 35140,\n\t\"./components/A3/a3Table/templates/a3GoalCell/a3GoalCell.html\": 87032,\n\t\"./components/A3/a3Table/templates/a3LinkToPreviewCell/a3LinkToPreviewCell.html\": 99904,\n\t\"./components/A3/a3Table/templates/a3OwnerCell/a3OwnerCell.html\": 25144,\n\t\"./components/A3/a3Table/templates/a3ParticipantsCell/a3ParticipantModal.html\": 998,\n\t\"./components/A3/a3Table/templates/a3ParticipantsCell/a3ParticipantsCell.html\": 50106,\n\t\"./components/A3/a3Table/templates/a3ProgressTasksCell/a3ProgressTasksCell.html\": 63672,\n\t\"./components/A3/a3Table/templates/a3StatusCell/a3StatusCell.html\": 31682,\n\t\"./components/A3/a3Table/templates/a3TasksCell/a3TasksCell.html\": 44064,\n\t\"./components/A3/a3Table/templates/a3TitleCell/a3TitleCell.html\": 40948,\n\t\"./components/A3/a3milestones/a3milestones.html\": 5363,\n\t\"./components/A3/a3wizard.html\": 93729,\n\t\"./components/A3/cards/a3Card.html\": 69936,\n\t\"./components/A3/comments/a3Comments.html\": 55229,\n\t\"./components/A3/designer/a3designer.html\": 69695,\n\t\"./components/A3/links/a3Links.html\": 24351,\n\t\"./components/A3/newA3/newA3Form.html\": 16773,\n\t\"./components/A3/preview/a3info/a3info.html\": 8038,\n\t\"./components/A3/preview/a3preview.html\": 82147,\n\t\"./components/A3/preview/a3step/a3step.html\": 27862,\n\t\"./components/A3/preview/a3stepActionPlan/a3stepActionPlan.html\": 20896,\n\t\"./components/A3/preview/cost/cost.html\": 73840,\n\t\"./components/A3/reports/a3reports.html\": 57135,\n\t\"./components/A3/reports/aggregatedrealized/initiativesaggregatedrealized.html\": 52698,\n\t\"./components/A3/reports/aggregatedrealized/initiativesaggregatedtimerealized.html\": 43911,\n\t\"./components/A3/reports/benefitsRealization.html\": 98724,\n\t\"./components/A3/reports/monthlyrealized/initiativesmonthlyrealized.html\": 64896,\n\t\"./components/A3/reports/monthlyrealized/timeinitiativesmonthlyrealized.html\": 817,\n\t\"./components/A3/reports/timeBenefitsRealization.html\": 50303,\n\t\"./components/A3/slideshow/a3slideshow.html\": 23399,\n\t\"./components/A3/templates/a3templates.html\": 35983,\n\t\"./components/A3/templates/layout/a3info/a3infoTemplate.html\": 41996,\n\t\"./components/A3/templates/layout/a3step/a3stepTemplate.html\": 90588,\n\t\"./components/A3/templates/layout/a3stepActionPlan/a3stepActionPlanTemplate.html\": 6422,\n\t\"./components/A3/templates/layout/a3templateLayout.html\": 47443,\n\t\"./components/A3/templates/layout/cost/costTemplate.html\": 85062,\n\t\"./components/A3/templates/preview/a3TemplatePreview.html\": 77049,\n\t\"./components/A3/templates/store/a3templateStore.html\": 80657,\n\t\"./components/actionlist/a3/actionlistA3.html\": 88805,\n\t\"./components/actionlist/a3tasks/actionlistA3tasks.html\": 93931,\n\t\"./components/actionlist/actionlist.html\": 72158,\n\t\"./components/actionlist/boards/actionlistBoards.html\": 54143,\n\t\"./components/actionlist/boardtasks/actionlistBoardtasks.html\": 30141,\n\t\"./components/actionlist/deviation/actionlistDeviation.html\": 27327,\n\t\"./components/actionlist/deviationtasks/actionlistDeviationtasks.html\": 59891,\n\t\"./components/actionlist/improvement/actionlistImprovement.html\": 55731,\n\t\"./components/actionlist/improvementtasks/actionlistImprovementtasks.html\": 60825,\n\t\"./components/actionlist/newtasktoactionlist.html\": 93458,\n\t\"./components/admin/a3/a3Admin.html\": 8883,\n\t\"./components/admin/apiclients/apiClients.html\": 11646,\n\t\"./components/admin/apiclients/editApiClientForm.html\": 77285,\n\t\"./components/admin/apiclients/newApiClientForm.html\": 23545,\n\t\"./components/admin/area/area.html\": 13580,\n\t\"./components/admin/assets/assetEdit.html\": 78589,\n\t\"./components/admin/assets/assetParticipantsForm.html\": 44541,\n\t\"./components/admin/assets/assets.html\": 10580,\n\t\"./components/admin/boards/boardSettings.html\": 4172,\n\t\"./components/admin/boards/flexiboardAdmin.html\": 66784,\n\t\"./components/admin/boards/flexiboardContainerAdmin.html\": 79389,\n\t\"./components/admin/boards/flexiboardTemplateAdmin.html\": 8398,\n\t\"./components/admin/changepassword/changePassword.html\": 39272,\n\t\"./components/admin/contactlist/contactlist.html\": 3268,\n\t\"./components/admin/contactlist/newContactPersonForm.html\": 60563,\n\t\"./components/admin/customers/allowedModulesDialog.html\": 87572,\n\t\"./components/admin/customers/customerOrderDialog.html\": 56029,\n\t\"./components/admin/customers/customers.html\": 2368,\n\t\"./components/admin/customers/deployCustomerDialog.html\": 96726,\n\t\"./components/admin/customers/disableCustomerDialog.html\": 30457,\n\t\"./components/admin/customers/invoices.html\": 27229,\n\t\"./components/admin/customers/invoicing.html\": 34081,\n\t\"./components/admin/customers/payingCustomers.html\": 822,\n\t\"./components/admin/customers/supportUserDialog.html\": 62753,\n\t\"./components/admin/customers/trials.html\": 54460,\n\t\"./components/admin/data/dataAdmin.html\": 99907,\n\t\"./components/admin/data/dataSource.html\": 99671,\n\t\"./components/admin/data/datasourceTrend/datasourceTrendReport.html\": 96537,\n\t\"./components/admin/data/datasourceValues.html\": 27697,\n\t\"./components/admin/data/excel/multipleDataSourcesImport.html\": 57731,\n\t\"./components/admin/data/excel/singleDataSourceImport.html\": 41726,\n\t\"./components/admin/data/excelImport.html\": 57398,\n\t\"./components/admin/data/lists/customerAdmin.html\": 73413,\n\t\"./components/admin/data/lists/datalist.html\": 59744,\n\t\"./components/admin/data/lists/datalists.html\": 96111,\n\t\"./components/admin/data/lists/editDataList.html\": 71948,\n\t\"./components/admin/data/lists/newDataList.html\": 10236,\n\t\"./components/admin/data/manualKpiIdentifier/dataVisualizationType.html\": 84132,\n\t\"./components/admin/data/manualKpiIdentifier/manualKpiIdentifierAdmin.html\": 40252,\n\t\"./components/admin/data/newdatasource/newDataSource.html\": 91127,\n\t\"./components/admin/data/registrationtarget/registrationtarget.html\": 2817,\n\t\"./components/admin/deviations/categoryAdmin.html\": 85239,\n\t\"./components/admin/deviations/causeAdmin.html\": 20216,\n\t\"./components/admin/deviations/consequenceAdmin.html\": 61862,\n\t\"./components/admin/deviations/deviationAdmin.html\": 8848,\n\t\"./components/admin/deviations/deviationCustomFieldAdmin/deviationCustomFieldAdmin.html\": 26535,\n\t\"./components/admin/deviations/deviationTypeAdmin.html\": 43568,\n\t\"./components/admin/deviations/deviationTypeCategories/deviationTypeCategories.html\": 23591,\n\t\"./components/admin/deviations/deviationTypeCauses/deviationTypeCauses.html\": 12959,\n\t\"./components/admin/deviations/deviationTypeConsequences/deviationTypeConsequences.html\": 15463,\n\t\"./components/admin/deviations/deviationTypeDetails/deviationTypeDetails.html\": 58059,\n\t\"./components/admin/deviations/deviationTypeSetting/deviationTypeSetting.html\": 38335,\n\t\"./components/admin/deviations/editDeviationType/editDeviationType.html\": 10815,\n\t\"./components/admin/deviations/editDeviationTypePermission/editDeviationTypePermission.html\": 49775,\n\t\"./components/admin/deviations/newDeviationType/newDeviationType.html\": 6287,\n\t\"./components/admin/improvement/improvementAdmin.html\": 67109,\n\t\"./components/admin/integrations/connectors/connectorAdmin.html\": 79328,\n\t\"./components/admin/integrations/connectors/newConnector.html\": 25947,\n\t\"./components/admin/integrations/integrationsAdmin.html\": 1089,\n\t\"./components/admin/integrations/jobs/jobAdmin.html\": 33740,\n\t\"./components/admin/integrations/jobs/jobScheduleDialog.html\": 82650,\n\t\"./components/admin/integrations/jobs/newJob.html\": 11559,\n\t\"./components/admin/language/languageLabelAdmin.html\": 23039,\n\t\"./components/admin/learning/designer/learningDesigner.html\": 6407,\n\t\"./components/admin/learning/designer/learningFrontPage.html\": 59772,\n\t\"./components/admin/learning/designer/learningPage.html\": 51857,\n\t\"./components/admin/learning/designer/learningSummary.html\": 17592,\n\t\"./components/admin/learning/designer/sections/diagramSection.html\": 22847,\n\t\"./components/admin/learning/designer/sections/fileSection.html\": 1158,\n\t\"./components/admin/learning/designer/sections/imageSection.html\": 91771,\n\t\"./components/admin/learning/designer/sections/summarySection.html\": 84224,\n\t\"./components/admin/learning/designer/sections/textSection.html\": 56789,\n\t\"./components/admin/learning/designer/sections/videoSection.html\": 96213,\n\t\"./components/admin/learning/editLearningMaterial/editLearningMaterial.html\": 95325,\n\t\"./components/admin/learning/learningAdmin.html\": 67571,\n\t\"./components/admin/learning/newLearningMaterial/newLearningMaterial.html\": 88377,\n\t\"./components/admin/learning/stats/learningMaterialStats.html\": 64068,\n\t\"./components/admin/organization/accountSetup/accountSetup.html\": 29774,\n\t\"./components/admin/organization/billing/businessunitAccount.html\": 61260,\n\t\"./components/admin/organization/billing/customerAccountForm.html\": 57382,\n\t\"./components/admin/organization/billing/organizationBillingAdmin.html\": 33546,\n\t\"./components/admin/organization/messagecenter/mailsender.html\": 69678,\n\t\"./components/admin/organization/messagecenter/messageSender.html\": 5332,\n\t\"./components/admin/organization/messagecenter/newmessage/newMessageModal.html\": 45384,\n\t\"./components/admin/organization/messagecenter/pushNotificationSender.html\": 32942,\n\t\"./components/admin/organization/organizationAdmin.html\": 79945,\n\t\"./components/admin/organization/organizationSettings.html\": 21373,\n\t\"./components/admin/projects/projectAdmin.html\": 35704,\n\t\"./components/admin/projects/projectListAdmin.html\": 23812,\n\t\"./components/admin/projects/projectPortfolioAdmin.html\": 88592,\n\t\"./components/admin/projects/projectRoleAdmin.html\": 44920,\n\t\"./components/admin/users/userAccessForm.html\": 23289,\n\t\"./components/admin/users/userEdit.html\": 20825,\n\t\"./components/admin/users/userListResult.html\": 88056,\n\t\"./components/admin/users/users.html\": 26544,\n\t\"./components/board/assetMessage/assetMessage.html\": 36599,\n\t\"./components/board/board.html\": 35784,\n\t\"./components/board/boardDesigner/boardCategoryDetails.html\": 76866,\n\t\"./components/board/boardDesigner/boardDesigner.html\": 48515,\n\t\"./components/board/boardTask/boardTask.html\": 76915,\n\t\"./components/board/boardTask/boardtask-display-views/task-duration-updated.html\": 77258,\n\t\"./components/board/boardTask/boardtask-display-views/task-history-archived.html\": 15285,\n\t\"./components/board/boardTask/boardtask-display-views/task-history-assigned.html\": 81039,\n\t\"./components/board/boardTask/boardtask-display-views/task-history-cell-updated.html\": 41417,\n\t\"./components/board/boardTask/boardtask-display-views/task-history-cloned.html\": 12492,\n\t\"./components/board/boardTask/boardtask-display-views/task-history-comment-deleted.html\": 68790,\n\t\"./components/board/boardTask/boardtask-display-views/task-history-comments.html\": 87501,\n\t\"./components/board/boardTask/boardtask-display-views/task-history-create-repeated.html\": 22974,\n\t\"./components/board/boardTask/boardtask-display-views/task-history-created-to-action-list.html\": 13057,\n\t\"./components/board/boardTask/boardtask-display-views/task-history-delete-attachment.html\": 2344,\n\t\"./components/board/boardTask/boardtask-display-views/task-history-deviation-created.html\": 84025,\n\t\"./components/board/boardTask/boardtask-display-views/task-history-moved-from-action-list-to-board.html\": 7198,\n\t\"./components/board/boardTask/boardtask-display-views/task-history-moved-from-archive.html\": 97818,\n\t\"./components/board/boardTask/boardtask-display-views/task-history-moved.html\": 90556,\n\t\"./components/board/boardTask/boardtask-display-views/task-history-new-attachment.html\": 34595,\n\t\"./components/board/boardTask/boardtask-display-views/task-history-new.html\": 52277,\n\t\"./components/board/boardTask/boardtask-display-views/task-history-repeated.html\": 94085,\n\t\"./components/board/boardTask/boardtask-display-views/task-history-status-updated.html\": 75679,\n\t\"./components/board/boardTask/boardtask-display-views/task-history-updated.html\": 29256,\n\t\"./components/board/boardTask/boardtask-display-views/task-start-date-updated.html\": 70285,\n\t\"./components/board/boardTask/newBoardTask.html\": 12255,\n\t\"./components/board/boardTask/subtask/subtaskStatus.html\": 45763,\n\t\"./components/board/boardactionform.html\": 51848,\n\t\"./components/board/boardcontent.html\": 62391,\n\t\"./components/board/boardresolver/boardDesignerResolver.html\": 83786,\n\t\"./components/board/boardresolver/boardresolver.html\": 6259,\n\t\"./components/board/cloneInfo/cloneInfo.html\": 20943,\n\t\"./components/board/clonetask/clonedelete.html\": 43085,\n\t\"./components/board/clonetask/clonetask.html\": 57435,\n\t\"./components/board/connectedusers/connectedUsers.html\": 43415,\n\t\"./components/board/moveOrCloneSelector/moveOrCloneSelector.html\": 49187,\n\t\"./components/board/movetask/movetask.html\": 48841,\n\t\"./components/board/newBoard/boardtypes/dashboard/dashboardPreview.html\": 92220,\n\t\"./components/board/newBoard/boardtypes/projectBoard/projectBoardPreview.html\": 74068,\n\t\"./components/board/newBoard/boardtypes/smartactionlist/smartActionListPreview.html\": 46876,\n\t\"./components/board/newBoard/boardtypes/weeklyBoard/weeklyBoardPreview.html\": 61096,\n\t\"./components/board/newBoard/boardtypes/yearlyBoard/yearlyBoardPreview.html\": 15068,\n\t\"./components/board/newBoard/newBoardFromTemplate.html\": 13391,\n\t\"./components/board/parenttaskInfo/parenttaskInfo.html\": 64471,\n\t\"./components/board/personal/personalTaskCard.html\": 7606,\n\t\"./components/board/personal/personalboard.html\": 93769,\n\t\"./components/board/personal/personalboardFilter.html\": 22247,\n\t\"./components/board/postits/postitHub.html\": 90061,\n\t\"./components/board/postits/postitPredefinedTags.html\": 29951,\n\t\"./components/board/postits/timeboardPostits.html\": 4322,\n\t\"./components/board/productionboard/production.html\": 12791,\n\t\"./components/board/productionboard/productionBoard.html\": 71343,\n\t\"./components/board/productionboard/productionBoardApp.html\": 44684,\n\t\"./components/board/productionboard/productionBoardMandatoryFields.html\": 6065,\n\t\"./components/board/productionboard/productionBoardRowConfiguration.html\": 76357,\n\t\"./components/board/repeatInfo/repeatInfo.html\": 32955,\n\t\"./components/board/repeattask/repeatdelete.html\": 44195,\n\t\"./components/board/repeattask/repeattask.html\": 409,\n\t\"./components/board/selector/memberBoardSelector.html\": 57827,\n\t\"./components/board/selector/threeCBoardSelector.html\": 64090,\n\t\"./components/board/smartKanban/smartKanban.html\": 54055,\n\t\"./components/board/smartKanban/smartKanbanCard.html\": 1497,\n\t\"./components/board/taskattachments/taskattachment.html\": 4876,\n\t\"./components/board/taskattachments/taskattachments.html\": 97395,\n\t\"./components/board/tasktoactionlist/tasktoactionlist.html\": 52093,\n\t\"./components/board/template/newFlexiboardTemplate.html\": 51933,\n\t\"./components/board/template/newboardtemplate.html\": 60111,\n\t\"./components/board/yearlyboard/tasks/newYearlyTask.html\": 23625,\n\t\"./components/board/yearlyboard/tasks/yearlyTask.html\": 55545,\n\t\"./components/board/yearlyboard/yearlyboard.html\": 19919,\n\t\"./components/board/yearlyboard/yearlyboardDesigner.html\": 83522,\n\t\"./components/common/access/boardAccessChecker.html\": 45087,\n\t\"./components/common/confirmationDialog/confirmationDialogForm.html\": 30204,\n\t\"./components/common/members/membersSelector.html\": 42135,\n\t\"./components/common/numericInput/numericInput.html\": 74078,\n\t\"./components/customer/customerLookup.html\": 48272,\n\t\"./components/dashboard/activitycount/activitycount.html\": 27935,\n\t\"./components/dashboard/barchart/barchart.html\": 74099,\n\t\"./components/dashboard/customerfeedback/changestatus.html\": 38198,\n\t\"./components/dashboard/customerfeedback/customerfeedback.html\": 60067,\n\t\"./components/dashboard/customermonitoring/customermonitoring.html\": 11217,\n\t\"./components/dashboard/customermonitoring/licenses/licensesChanges.html\": 94389,\n\t\"./components/dashboard/customermonitoring/notifications/notificationsOverview.html\": 61603,\n\t\"./components/dashboard/dailyfeed/dailyfeed.html\": 93571,\n\t\"./components/dashboard/dailyfeed/dailyfeedActivitySelector.html\": 13575,\n\t\"./components/dashboard/dailyfeed/feed-display-views/a3-commented-on.html\": 7206,\n\t\"./components/dashboard/dailyfeed/feed-display-views/a3-created.html\": 626,\n\t\"./components/dashboard/dailyfeed/feed-display-views/a3-deleted.html\": 52623,\n\t\"./components/dashboard/dailyfeed/feed-display-views/a3-project-info-updated.html\": 31114,\n\t\"./components/dashboard/dailyfeed/feed-display-views/a3-step-updated.html\": 92236,\n\t\"./components/dashboard/dailyfeed/feed-display-views/a3-updated.html\": 89241,\n\t\"./components/dashboard/dailyfeed/feed-display-views/a3-version-created.html\": 72623,\n\t\"./components/dashboard/dailyfeed/feed-display-views/board-deleted.html\": 4323,\n\t\"./components/dashboard/dailyfeed/feed-display-views/boardcreation.html\": 13166,\n\t\"./components/dashboard/dailyfeed/feed-display-views/deletedtask.html\": 15499,\n\t\"./components/dashboard/dailyfeed/feed-display-views/deviation-attachment-added.html\": 96291,\n\t\"./components/dashboard/dailyfeed/feed-display-views/deviation-attachment-deleted.html\": 99844,\n\t\"./components/dashboard/dailyfeed/feed-display-views/deviation-comment.html\": 69868,\n\t\"./components/dashboard/dailyfeed/feed-display-views/deviation-deleted.html\": 31380,\n\t\"./components/dashboard/dailyfeed/feed-display-views/deviation-new.html\": 81055,\n\t\"./components/dashboard/dailyfeed/feed-display-views/deviation-problem-reason-changed.html\": 65670,\n\t\"./components/dashboard/dailyfeed/feed-display-views/deviation-responsible-changed.html\": 55196,\n\t\"./components/dashboard/dailyfeed/feed-display-views/deviation-severity-changed.html\": 11451,\n\t\"./components/dashboard/dailyfeed/feed-display-views/deviation-status-updated.html\": 81949,\n\t\"./components/dashboard/dailyfeed/feed-display-views/deviation-to-a3.html\": 35281,\n\t\"./components/dashboard/dailyfeed/feed-display-views/deviation-update.html\": 72504,\n\t\"./components/dashboard/dailyfeed/feed-display-views/deviation_due_date-changed.html\": 77497,\n\t\"./components/dashboard/dailyfeed/feed-display-views/improvement-attachment-added.html\": 8422,\n\t\"./components/dashboard/dailyfeed/feed-display-views/improvement-attachment-deleted.html\": 52253,\n\t\"./components/dashboard/dailyfeed/feed-display-views/improvement-category-updated.html\": 60638,\n\t\"./components/dashboard/dailyfeed/feed-display-views/improvement-comment.html\": 9359,\n\t\"./components/dashboard/dailyfeed/feed-display-views/improvement-deleted.html\": 88107,\n\t\"./components/dashboard/dailyfeed/feed-display-views/improvement-due-date-changed.html\": 63904,\n\t\"./components/dashboard/dailyfeed/feed-display-views/improvement-like.html\": 24487,\n\t\"./components/dashboard/dailyfeed/feed-display-views/improvement-new.html\": 84728,\n\t\"./components/dashboard/dailyfeed/feed-display-views/improvement-priority-changed.html\": 71261,\n\t\"./components/dashboard/dailyfeed/feed-display-views/improvement-responsible-changed.html\": 70175,\n\t\"./components/dashboard/dailyfeed/feed-display-views/improvement-status-updated.html\": 37720,\n\t\"./components/dashboard/dailyfeed/feed-display-views/improvement-to-a3.html\": 92194,\n\t\"./components/dashboard/dailyfeed/feed-display-views/improvement-update-suggestion.html\": 73550,\n\t\"./components/dashboard/dailyfeed/feed-display-views/newtask.html\": 60384,\n\t\"./components/dashboard/dailyfeed/feed-display-views/task-attachment-added.html\": 84125,\n\t\"./components/dashboard/dailyfeed/feed-display-views/task-attachment-deleted.html\": 85694,\n\t\"./components/dashboard/dailyfeed/feed-display-views/task-comment.html\": 31014,\n\t\"./components/dashboard/dailyfeed/feed-display-views/task-updated.html\": 68888,\n\t\"./components/dashboard/dailyfeed/feed-display-views/taskassigned.html\": 6354,\n\t\"./components/dashboard/dailyfeed/feed-display-views/taskcloned.html\": 85101,\n\t\"./components/dashboard/dailyfeed/feed-display-views/taskcreatedtoactionlist.html\": 83311,\n\t\"./components/dashboard/dailyfeed/feed-display-views/taskdeviationcreated.html\": 5147,\n\t\"./components/dashboard/dailyfeed/feed-display-views/taskmoved.html\": 95191,\n\t\"./components/dashboard/dailyfeed/feed-display-views/taskmovedfromactionlisttoboard.html\": 16042,\n\t\"./components/dashboard/dailyfeed/feed-display-views/taskmovedtoactionlist.html\": 70012,\n\t\"./components/dashboard/dailyfeed/feed-display-views/taskrepeated.html\": 82096,\n\t\"./components/dashboard/dailyfeed/feed-display-views/taskstatusupdated.html\": 50857,\n\t\"./components/dashboard/delete/widgetDeleteConfirmation.html\": 39750,\n\t\"./components/dashboard/designer/appstore/3cTable/cells/threeCDateCell.html\": 53857,\n\t\"./components/dashboard/designer/appstore/3cTable/cells/threeCOwnerCell.html\": 30058,\n\t\"./components/dashboard/designer/appstore/3cTable/cells/threeCStatusCell.html\": 60023,\n\t\"./components/dashboard/designer/appstore/3cTable/cells/threeCTextCell.html\": 50202,\n\t\"./components/dashboard/designer/appstore/3cTable/threeCTable.html\": 86315,\n\t\"./components/dashboard/designer/appstore/3cTable/threeCTableApp.html\": 46368,\n\t\"./components/dashboard/designer/appstore/a3table/a3tableApp.html\": 73115,\n\t\"./components/dashboard/designer/appstore/a3viewer/a3Viewer.html\": 59468,\n\t\"./components/dashboard/designer/appstore/a3viewer/a3ViewerApp.html\": 7761,\n\t\"./components/dashboard/designer/appstore/actionList/actionListApp.html\": 61125,\n\t\"./components/dashboard/designer/appstore/actionList/actionListEditTask.html\": 34945,\n\t\"./components/dashboard/designer/appstore/actionList/actionListNewTask.html\": 37865,\n\t\"./components/dashboard/designer/appstore/appstore.html\": 12813,\n\t\"./components/dashboard/designer/appstore/calendar/personalcalendar.html\": 24492,\n\t\"./components/dashboard/designer/appstore/calendar/teamcalendar.html\": 60205,\n\t\"./components/dashboard/designer/appstore/comparechart/comparechart.html\": 51350,\n\t\"./components/dashboard/designer/appstore/dailyKPI/daily-kpi-date.html\": 29270,\n\t\"./components/dashboard/designer/appstore/dailyKPI/fiveS.html\": 58322,\n\t\"./components/dashboard/designer/appstore/dailyKPIA/aLetter.html\": 64685,\n\t\"./components/dashboard/designer/appstore/dailyKPIC/cLetter.html\": 36681,\n\t\"./components/dashboard/designer/appstore/dailyKPID/dLetter.html\": 73925,\n\t\"./components/dashboard/designer/appstore/dailyKPIDynamic/dailyKpiDynamic.html\": 67206,\n\t\"./components/dashboard/designer/appstore/dailyKPII/iLetter.html\": 49229,\n\t\"./components/dashboard/designer/appstore/dailyKPIK/kLetter.html\": 49241,\n\t\"./components/dashboard/designer/appstore/dailyKPIL/lLetter.html\": 49077,\n\t\"./components/dashboard/designer/appstore/dailyKPIP/pLetter.html\": 19845,\n\t\"./components/dashboard/designer/appstore/dailyKPIQ/qLetter.html\": 9837,\n\t\"./components/dashboard/designer/appstore/datasourceValuesList/datasourceValuesList.html\": 69894,\n\t\"./components/dashboard/designer/appstore/daycounter/daycounter.html\": 97840,\n\t\"./components/dashboard/designer/appstore/debug/debugApp.html\": 19823,\n\t\"./components/dashboard/designer/appstore/deviationCategorySummary/deviationCategorySummary.html\": 46894,\n\t\"./components/dashboard/designer/appstore/deviationactions/deviationActionListResult.html\": 63572,\n\t\"./components/dashboard/designer/appstore/gantt/gantt.html\": 77226,\n\t\"./components/dashboard/designer/appstore/greencross/greencross-date.html\": 92403,\n\t\"./components/dashboard/designer/appstore/greencross/greencross.html\": 45018,\n\t\"./components/dashboard/designer/appstore/greencross/greencrossStatusForm.html\": 95230,\n\t\"./components/dashboard/designer/appstore/greencross/kpiMonthSelector.html\": 96789,\n\t\"./components/dashboard/designer/appstore/imagedisplayer/imagedisplayer.html\": 75284,\n\t\"./components/dashboard/designer/appstore/kanbanboard/kanbanBoard.html\": 59186,\n\t\"./components/dashboard/designer/appstore/livetrend/livetrend.html\": 77314,\n\t\"./components/dashboard/designer/appstore/messagedisplayer/messagedisplayer.html\": 34164,\n\t\"./components/dashboard/designer/appstore/minmaxchart/minmaxchart.html\": 5638,\n\t\"./components/dashboard/designer/appstore/multichart/graphConfiguration.html\": 91567,\n\t\"./components/dashboard/designer/appstore/multichart/multichart.html\": 8390,\n\t\"./components/dashboard/designer/appstore/myA3s/myA3s.html\": 43414,\n\t\"./components/dashboard/designer/appstore/myCompetenceBalls/myCompetenceBalls.html\": 61126,\n\t\"./components/dashboard/designer/appstore/myprojects/myprojects.html\": 72060,\n\t\"./components/dashboard/designer/appstore/pareto/paretochart.html\": 70108,\n\t\"./components/dashboard/designer/appstore/pdfDisplayer/pdfDisplayerAppNg.html\": 34108,\n\t\"./components/dashboard/designer/appstore/performanceboard/configuration/performanceboardConfig.html\": 41229,\n\t\"./components/dashboard/designer/appstore/performanceboard/configuration/performanceboardConfigController.html\": 82725,\n\t\"./components/dashboard/designer/appstore/performanceboard/performanceboard.html\": 88880,\n\t\"./components/dashboard/designer/appstore/performanceboard/performanceboardContainer.html\": 46321,\n\t\"./components/dashboard/designer/appstore/piechart/piechart.html\": 23900,\n\t\"./components/dashboard/designer/appstore/powerBI/powerBIDashboard.html\": 57852,\n\t\"./components/dashboard/designer/appstore/projectboard/projectboardApp.html\": 88751,\n\t\"./components/dashboard/designer/appstore/projectnextmilestone/projectNextMilestone.html\": 59512,\n\t\"./components/dashboard/designer/appstore/quickIncidentRegistration/quickIncidentRegistrationApp.html\": 13195,\n\t\"./components/dashboard/designer/appstore/quickIncidentRegistration/quickIncidentRegistrationConfiguration.html\": 56650,\n\t\"./components/dashboard/designer/appstore/register/register.html\": 90290,\n\t\"./components/dashboard/designer/appstore/registration/registration.html\": 57962,\n\t\"./components/dashboard/designer/appstore/registration/registrationDialog.html\": 1894,\n\t\"./components/dashboard/designer/appstore/singlevalue/singlevalue.html\": 55486,\n\t\"./components/dashboard/designer/appstore/singlevalueregistration/singlevalueregistration.html\": 91622,\n\t\"./components/dashboard/designer/appstore/singlevaluetarget/singlevaluetarget.html\": 95150,\n\t\"./components/dashboard/designer/appstore/smartActionList/smartActionListApp.html\": 91975,\n\t\"./components/dashboard/designer/appstore/smartActionList/taskActions/taskActions.html\": 12158,\n\t\"./components/dashboard/designer/appstore/smartActionList/templates/dateCell/smartactionlistDateCell.html\": 90537,\n\t\"./components/dashboard/designer/appstore/smartActionList/templates/dueDateCell/smartActionListDueDateCell.html\": 1313,\n\t\"./components/dashboard/designer/appstore/smartActionList/templates/lastModifiedDatecell/smartactionlistLastModifiedDateCell.html\": 43169,\n\t\"./components/dashboard/designer/appstore/smartActionList/templates/linkCell/smartactionlistLinkCell.html\": 32841,\n\t\"./components/dashboard/designer/appstore/smartActionList/templates/numberCell/smartactionlistNumberCell.html\": 83681,\n\t\"./components/dashboard/designer/appstore/smartActionList/templates/numberCellAggregate/smartactionlistNumberCellAggregate.html\": 3841,\n\t\"./components/dashboard/designer/appstore/smartActionList/templates/numberCellAutomatic/smartactionlistNumberCellAutomatic.html\": 75657,\n\t\"./components/dashboard/designer/appstore/smartActionList/templates/personCell/smartactionlistPersonCell.html\": 90917,\n\t\"./components/dashboard/designer/appstore/smartActionList/templates/progressCell/smartactionlistProgressCell.html\": 80881,\n\t\"./components/dashboard/designer/appstore/smartActionList/templates/progressCellSubTasks/smartactionlistProgressCellSubTasks.html\": 26281,\n\t\"./components/dashboard/designer/appstore/smartActionList/templates/responsibleCell/smartactionlistResponsibleCell.html\": 65049,\n\t\"./components/dashboard/designer/appstore/smartActionList/templates/smartActionListTaskdescriptionCell/smartActionListTaskdescriptionCell.html\": 36956,\n\t\"./components/dashboard/designer/appstore/smartActionList/templates/smartActionListTitleCell/smartActionListTitleCell.html\": 21054,\n\t\"./components/dashboard/designer/appstore/smartActionList/templates/smartactionlistStatusCell/smartactionlistStatusCell.html\": 47402,\n\t\"./components/dashboard/designer/appstore/smartActionList/templates/smartactionlistTargetCell/smartactionlistTargetCell.html\": 85422,\n\t\"./components/dashboard/designer/appstore/smartActionList/templates/startDateCell/smartactionlistStartDateCell.html\": 67945,\n\t\"./components/dashboard/designer/appstore/smartActionList/templates/subTasksCell/subTasksCell.html\": 248,\n\t\"./components/dashboard/designer/appstore/smartActionList/templates/textCell/smartactionlistTextCell.html\": 14709,\n\t\"./components/dashboard/designer/appstore/smartCommon/commonCellSelection.html\": 28891,\n\t\"./components/dashboard/designer/appstore/smartCommon/smartCheckCell/smartCheckCell.html\": 9229,\n\t\"./components/dashboard/designer/appstore/smartCommon/smartColumnWidthConfig/smartColumnWidthConfig.html\": 44241,\n\t\"./components/dashboard/designer/appstore/smartCommon/smartDateCell/smartDateCell.html\": 16629,\n\t\"./components/dashboard/designer/appstore/smartCommon/smartIconCell/predefinedIcons.html\": 6333,\n\t\"./components/dashboard/designer/appstore/smartCommon/smartIconCell/smartIconCell.html\": 2837,\n\t\"./components/dashboard/designer/appstore/smartCommon/smartLinkCell/smartLinkCell.html\": 97853,\n\t\"./components/dashboard/designer/appstore/smartCommon/smartNumberCell/smartCommonNumberCell.html\": 62344,\n\t\"./components/dashboard/designer/appstore/smartCommon/smartNumberCellAggregate/smartCommonNumberCellAggregate.html\": 48154,\n\t\"./components/dashboard/designer/appstore/smartCommon/smartNumberCellAutomatic/smartCommonNumberCellAutomatic.html\": 53778,\n\t\"./components/dashboard/designer/appstore/smartCommon/smartPersonCell/smartPersonCell.html\": 373,\n\t\"./components/dashboard/designer/appstore/smartCommon/smartProgressCell/smartProgressCell.html\": 77745,\n\t\"./components/dashboard/designer/appstore/smartCommon/smartRatingCell/smartRatingCell.html\": 40145,\n\t\"./components/dashboard/designer/appstore/smartCommon/smartRiskCell/smartRiskCell.html\": 54797,\n\t\"./components/dashboard/designer/appstore/smartCommon/smartRowNoCell/smartRowNoCell.html\": 52931,\n\t\"./components/dashboard/designer/appstore/smartCommon/smartTargetCell/smartTargetCell.html\": 21833,\n\t\"./components/dashboard/designer/appstore/smartCommon/smartTextCell/smartCommonTextCell.html\": 61568,\n\t\"./components/dashboard/designer/appstore/smarttable/smarttableApp.html\": 46239,\n\t\"./components/dashboard/designer/appstore/smarttable/templates/customerCell/smarttableCustomerCell.html\": 41999,\n\t\"./components/dashboard/designer/appstore/smarttable/templates/dateCell/smarttableDateCell.html\": 3863,\n\t\"./components/dashboard/designer/appstore/smarttable/templates/endDateCell/smarttableEndDateCell.html\": 73143,\n\t\"./components/dashboard/designer/appstore/smarttable/templates/linkCell/smarttableLinkCell.html\": 12159,\n\t\"./components/dashboard/designer/appstore/smarttable/templates/numberCell/smarttableNumberCell.html\": 34145,\n\t\"./components/dashboard/designer/appstore/smarttable/templates/numberCellAggregate/smarttableNumberCellAggregate.html\": 583,\n\t\"./components/dashboard/designer/appstore/smarttable/templates/numberCellAutomatic/smarttableNumberCellAutomatic.html\": 68063,\n\t\"./components/dashboard/designer/appstore/smarttable/templates/ownerCell/smarttableOwnerCell.html\": 93983,\n\t\"./components/dashboard/designer/appstore/smarttable/templates/personCell/smarttablePersonCell.html\": 56365,\n\t\"./components/dashboard/designer/appstore/smarttable/templates/smarttableNameCell/smarttableNameCell.html\": 62084,\n\t\"./components/dashboard/designer/appstore/smarttable/templates/smarttableTargetCell/smarttableTargetCell.html\": 11228,\n\t\"./components/dashboard/designer/appstore/smarttable/templates/startDateCell/smarttableStartDateCell.html\": 35891,\n\t\"./components/dashboard/designer/appstore/smarttable/templates/textCell/smarttableTextCell.html\": 82973,\n\t\"./components/dashboard/designer/appstore/smileyApp/smileyApp.html\": 14738,\n\t\"./components/dashboard/designer/appstore/splitPackedBubbleChart/splitPackedBubbleChart.html\": 37192,\n\t\"./components/dashboard/designer/appstore/stackedHorizontalBarChart/stackedHorizontalBarChart.html\": 39166,\n\t\"./components/dashboard/designer/appstore/strategyMapChartApp/strategyMapChartApp.html\": 15014,\n\t\"./components/dashboard/designer/appstore/targetgraph/targetgraph.html\": 60862,\n\t\"./components/dashboard/designer/appstore/teamtasks/teamTaskConfiguration.html\": 88249,\n\t\"./components/dashboard/designer/appstore/teamtasks/teamtasks.html\": 69362,\n\t\"./components/dashboard/designer/appstore/texteditor/texteditor.html\": 97588,\n\t\"./components/dashboard/designer/appstore/timeboard/timeboard.html\": 10566,\n\t\"./components/dashboard/designer/appstore/trendbarchart/trendbarchart.html\": 65418,\n\t\"./components/dashboard/designer/appstore/usersonline/usersonline.html\": 9614,\n\t\"./components/dashboard/designer/appstore/webviewer/webviewer.html\": 49406,\n\t\"./components/dashboard/designer/appstore/weeklyboard/weekSelector.html\": 59394,\n\t\"./components/dashboard/designer/appstore/weeklyboard/weeklyboard.html\": 64146,\n\t\"./components/dashboard/designer/common/appHeaderTitle/appHeaderTitle.html\": 71833,\n\t\"./components/dashboard/designer/dashboardDesigner.html\": 11781,\n\t\"./components/dashboard/designer/widget/widget.html\": 44073,\n\t\"./components/dashboard/greencross/colorlabelConfiguration.html\": 51047,\n\t\"./components/dashboard/greencross/datasourceDailyKPITarget.html\": 81291,\n\t\"./components/dashboard/mydigiLeanfeedback/mydigileanfeedback.html\": 13633,\n\t\"./components/dashboard/radarchart/radarchart.html\": 96421,\n\t\"./components/dashboard/radarchart/radarchartRegistrationDialog.html\": 3004,\n\t\"./components/dashboard/smartlogic/cellCloneConfigForm.html\": 73645,\n\t\"./components/dashboard/smartlogic/cellCloneInfo/cellCloneInfo.html\": 5975,\n\t\"./components/dashboard/smarttable/templates/progressCell/smarttableProgressCell.html\": 11394,\n\t\"./components/dashboard/smarttable/templates/progressCell/smarttableProgressbar.html\": 55785,\n\t\"./components/dashboard/systemactivity/systemactivityfeed.html\": 83385,\n\t\"./components/dashboard/systemdashboard.html\": 50747,\n\t\"./components/dashboard/teamdashboard/teamdashboard.html\": 66847,\n\t\"./components/data/dataSourceSearchFilter.html\": 54813,\n\t\"./components/data/dataseriesselector/a3selectors/a3categoryselector/a3categoryselector.html\": 8219,\n\t\"./components/data/dataseriesselector/a3selectors/a3templateselector/a3templateselector.html\": 13699,\n\t\"./components/data/dataseriesselector/areaselector/areaselector.html\": 39696,\n\t\"./components/data/dataseriesselector/assetselector/assetselector.html\": 80338,\n\t\"./components/data/dataseriesselector/boardselector/boardselector.html\": 51718,\n\t\"./components/data/dataseriesselector/boardselectors/boardstatusselector/boardstatusselector.html\": 75755,\n\t\"./components/data/dataseriesselector/boolselector/boolselector.html\": 18266,\n\t\"./components/data/dataseriesselector/businessunitSelector/businessunitSelector.html\": 29782,\n\t\"./components/data/dataseriesselector/consequenceSelector/consequenceSelector.html\": 85186,\n\t\"./components/data/dataseriesselector/dataSourceFilter.html\": 61330,\n\t\"./components/data/dataseriesselector/datalistselector/datalistselector.html\": 91458,\n\t\"./components/data/dataseriesselector/dataseriesselectorForm.html\": 30755,\n\t\"./components/data/dataseriesselector/dataseriesselectorSteps.html\": 16586,\n\t\"./components/data/dataseriesselector/deviationselectors/deviationseverityselector/deviationseverityselector.html\": 96974,\n\t\"./components/data/dataseriesselector/deviationselectors/deviationtypeselector/deviationtypeselector.html\": 97810,\n\t\"./components/data/dataseriesselector/deviationselectors/problemcategoryselector/problemcategoryselector.html\": 9770,\n\t\"./components/data/dataseriesselector/deviationselectors/problemreasonselector/problemreasonselector.html\": 59406,\n\t\"./components/data/dataseriesselector/improvementselectors/improvementcategoryselector/improvementcategoryselector.html\": 7551,\n\t\"./components/data/dataseriesselector/improvementselectors/prioritystatusselector/prioritystatusselector.html\": 21599,\n\t\"./components/data/dataseriesselector/numberselector/numberselector.html\": 11148,\n\t\"./components/data/dataseriesselector/projectSelector/projectSelector.html\": 39866,\n\t\"./components/data/dataseriesselector/strategygoalSelector/strategygoalSelector.html\": 1434,\n\t\"./components/data/dataseriesselector/stringselector/stringselector.html\": 7823,\n\t\"./components/data/dataseriesselector/tasktagselector/tasktagselector.html\": 84238,\n\t\"./components/data/dataseriesselector/unitSelector/unitSelector.html\": 5706,\n\t\"./components/data/dataseriesselector/userselector/userselector.html\": 39328,\n\t\"./components/data/datavaluesList/datavaluesListForm.html\": 65171,\n\t\"./components/data/definitions/datasourceTarget/datasourceTarget.html\": 71784,\n\t\"./components/data/definitions/datasourcegroup/dataSourceGroupSelector.html\": 85775,\n\t\"./components/data/definitions/datasourcesingle/dataSourceSingleSelector.html\": 33183,\n\t\"./components/data/definitions/datasourcestackedgroup/dataSourceStackedGroupSelector.html\": 88947,\n\t\"./components/data/excelImport/excelImportValues.html\": 4425,\n\t\"./components/data/excelImport/excelImporter.html\": 18688,\n\t\"./components/data/latestValue/latestDataValue.html\": 55263,\n\t\"./components/data/timeframeSelector/timeframeSelector.html\": 91079,\n\t\"./components/data/timeframeSelector/timeframeSelectorModal.html\": 53138,\n\t\"./components/data/unitLabel/unitLabel.html\": 27131,\n\t\"./components/deviation/deviation-display-views/deviation_a3.html\": 31967,\n\t\"./components/deviation/deviation-display-views/deviation_action_item_added.html\": 86674,\n\t\"./components/deviation/deviation-display-views/deviation_action_item_deleted.html\": 16193,\n\t\"./components/deviation/deviation-display-views/deviation_area_changed.html\": 27473,\n\t\"./components/deviation/deviation-display-views/deviation_attachment_added.html\": 57587,\n\t\"./components/deviation/deviation-display-views/deviation_attachment_deleted.html\": 49908,\n\t\"./components/deviation/deviation-display-views/deviation_category_changed.html\": 63540,\n\t\"./components/deviation/deviation-display-views/deviation_comments.html\": 34441,\n\t\"./components/deviation/deviation-display-views/deviation_consequences_changed.html\": 96282,\n\t\"./components/deviation/deviation-display-views/deviation_custom_field_updated.html\": 24011,\n\t\"./components/deviation/deviation-display-views/deviation_due_date_changed.html\": 18943,\n\t\"./components/deviation/deviation-display-views/deviation_evaluation_changed.html\": 51838,\n\t\"./components/deviation/deviation-display-views/deviation_incident_date_changed.html\": 29395,\n\t\"./components/deviation/deviation-display-views/deviation_new.html\": 27889,\n\t\"./components/deviation/deviation-display-views/deviation_problem_reason_changed.html\": 84752,\n\t\"./components/deviation/deviation-display-views/deviation_project_changed.html\": 41765,\n\t\"./components/deviation/deviation-display-views/deviation_responsible_changed.html\": 84640,\n\t\"./components/deviation/deviation-display-views/deviation_severity_changed.html\": 51235,\n\t\"./components/deviation/deviation-display-views/deviation_status_updated.html\": 78345,\n\t\"./components/deviation/deviation-display-views/deviation_text_changed.html\": 87351,\n\t\"./components/deviation/deviation-display-views/deviation_title_changed.html\": 53850,\n\t\"./components/deviation/deviation-display-views/deviation_updated.html\": 13396,\n\t\"./components/deviation/deviationActionList/deviationActionList.html\": 71972,\n\t\"./components/deviation/deviationCategories/deviationCategoriesSelector.html\": 99437,\n\t\"./components/deviation/deviationFilter/deviationFilter.html\": 74436,\n\t\"./components/deviation/deviationList/deviationListForm.html\": 96422,\n\t\"./components/deviation/deviationSearchList/deviationList.html\": 22132,\n\t\"./components/deviation/deviationSearchList/deviationListFilter.html\": 378,\n\t\"./components/deviation/deviationSearchList/deviationListResult.html\": 91457,\n\t\"./components/deviation/evaluation/deviationCauseSummary/deviationCauseSummary.html\": 90797,\n\t\"./components/deviation/evaluation/deviationConsequenceSummary/deviationConsequenceSummary.html\": 86637,\n\t\"./components/deviation/evaluation/deviationEvaluation.html\": 33023,\n\t\"./components/deviation/evaluation/deviationEvaluationList/deviationEvaluationList.html\": 52225,\n\t\"./components/deviation/fullDeviation/fullDeviation.html\": 49836,\n\t\"./components/deviation/hub/deviationHub.html\": 20993,\n\t\"./components/deviation/mydeviations/mydeviations.html\": 26178,\n\t\"./components/deviation/newDeviation.html\": 81746,\n\t\"./components/deviation/newDeviation/newDeviationButton.html\": 32612,\n\t\"./components/deviation/ongoing/deviationColumn.html\": 51728,\n\t\"./components/deviation/ongoing/deviationsOngoing.html\": 11440,\n\t\"./components/deviation/ongoing/ongoingDeviation-delete.html\": 41089,\n\t\"./components/deviation/ongoing/ongoingDeviation.html\": 557,\n\t\"./components/deviation/ongoing/ongoingDeviationApp.html\": 51310,\n\t\"./components/deviation/projectStatus/deviationProjectStatus.html\": 62625,\n\t\"./components/deviation/projectStatus/deviationProjectStatusPdfButton/deviationProjectStatusPdfButton.html\": 74028,\n\t\"./components/deviation/projectStatus/stackedDeviationHorizontalBarChart/stackedDeviationHorizontalBarChart.html\": 92068,\n\t\"./components/deviation/search/deviationSearch.html\": 40839,\n\t\"./components/deviation/status/deviationStatus.html\": 44619,\n\t\"./components/deviation/status/leadtimeDeviation.html\": 8636,\n\t\"./components/deviation/status/monthlyStatusDeviationArea.html\": 41363,\n\t\"./components/deviation/status/monthlyStatusDeviationSeverity.html\": 30341,\n\t\"./components/deviation/status/monthlystatusDeviation.html\": 7146,\n\t\"./components/diagram/DiagramEditorFullscreen.html\": 27072,\n\t\"./components/diagram/DiagramTemplateSelector.html\": 20251,\n\t\"./components/diagram/DigileanDiagramApp.html\": 99946,\n\t\"./components/document/fileinfo/fileinfo.html\": 68224,\n\t\"./components/document/imagefileinfo/imagefileinfo.html\": 48270,\n\t\"./components/document/videofileinfo/videofileinfo.html\": 17622,\n\t\"./components/flexiboard/flexiboard.html\": 20578,\n\t\"./components/flexiboard/flexiboardCards/customerKSCard.html\": 12082,\n\t\"./components/flexiboard/flexiboardCards/dashboardCard.html\": 76186,\n\t\"./components/flexiboard/flexiboardCards/defaultBoardCard.html\": 85947,\n\t\"./components/flexiboard/flexiboardCards/mySpaceCard.html\": 84142,\n\t\"./components/flexiboard/flexiboardCards/performanceBoardCard.html\": 43290,\n\t\"./components/flexiboard/flexiboardCards/personalKanbanCard.html\": 98995,\n\t\"./components/flexiboard/flexiboardCards/smartActionlistCard.html\": 84509,\n\t\"./components/flexiboard/flexiboardCards/taskSearchCard.html\": 40989,\n\t\"./components/flexiboard/flexiboardCards/teamSpaceCard.html\": 63971,\n\t\"./components/flexiboard/flexiboardCards/weeklyBoardCard.html\": 59971,\n\t\"./components/flexiboard/flexiboardCards/yearlyBoardCard.html\": 44364,\n\t\"./components/flexiboard/flexiboardPage/pageWidget.html\": 48599,\n\t\"./components/flexiboard/flexiboards.html\": 7521,\n\t\"./components/flexiboard/flexiboardtemplates/emptyFlexiboardPreview/emptyFlexiboardPreview.html\": 73619,\n\t\"./components/flexiboard/newFlexiboard/newFlexiboard.html\": 34281,\n\t\"./components/flexiboard/newFlexiboard/newFlexiboardConfiguration.html\": 56335,\n\t\"./components/helpSearch/helpSearch.html\": 18124,\n\t\"./components/hours/hoursRegistration.html\": 40669,\n\t\"./components/hours/hub/hoursHub.html\": 91585,\n\t\"./components/hours/invoiceReport/invoiceReport.html\": 55704,\n\t\"./components/hours/invoiceReport/invoiceReportPage.html\": 2547,\n\t\"./components/hours/myhours.html\": 62994,\n\t\"./components/improvement/feed/improvementFeed.html\": 33037,\n\t\"./components/improvement/fullImprovementInfoForm.html\": 99645,\n\t\"./components/improvement/hub/improvementHub.html\": 27801,\n\t\"./components/improvement/improvement-display-views/improvement_a3.html\": 17958,\n\t\"./components/improvement/improvement-display-views/improvement_asset_changed.html\": 56535,\n\t\"./components/improvement/improvement-display-views/improvement_category_updated.html\": 90958,\n\t\"./components/improvement/improvement-display-views/improvement_comments.html\": 64392,\n\t\"./components/improvement/improvement-display-views/improvement_delete_attachment.html\": 56945,\n\t\"./components/improvement/improvement-display-views/improvement_due_date_changed.html\": 60614,\n\t\"./components/improvement/improvement-display-views/improvement_evaluation_changed.html\": 57379,\n\t\"./components/improvement/improvement-display-views/improvement_likes.html\": 15476,\n\t\"./components/improvement/improvement-display-views/improvement_new.html\": 63498,\n\t\"./components/improvement/improvement-display-views/improvement_new_attachment.html\": 43636,\n\t\"./components/improvement/improvement-display-views/improvement_priority_changed.html\": 33889,\n\t\"./components/improvement/improvement-display-views/improvement_project_changed.html\": 62738,\n\t\"./components/improvement/improvement-display-views/improvement_responsible_changed.html\": 14551,\n\t\"./components/improvement/improvement-display-views/improvement_roi_changed.html\": 57701,\n\t\"./components/improvement/improvement-display-views/improvement_status_updated.html\": 41092,\n\t\"./components/improvement/improvement-display-views/improvement_text_changed.html\": 67974,\n\t\"./components/improvement/improvement-display-views/improvement_time_changed.html\": 99968,\n\t\"./components/improvement/improvement-display-views/improvement_title_changed.html\": 4113,\n\t\"./components/improvement/improvement-display-views/new_suggestion.html\": 58672,\n\t\"./components/improvement/improvement.html\": 98240,\n\t\"./components/improvement/improvementActionList/improvementActionList.html\": 33903,\n\t\"./components/improvement/improvementFilter/improvementFilter.html\": 77811,\n\t\"./components/improvement/improvementList/improvementList.html\": 95195,\n\t\"./components/improvement/improvementList/improvementListFilter.html\": 65449,\n\t\"./components/improvement/improvementList/improvementListResult.html\": 7070,\n\t\"./components/improvement/improvementPriorityFilter/improvementPriorityFilter.html\": 46087,\n\t\"./components/improvement/improvementreports/teammemberimprovement.html\": 4259,\n\t\"./components/improvement/improvementsearch.html\": 62140,\n\t\"./components/improvement/improvementstatus.html\": 13238,\n\t\"./components/improvement/initiativeRealizationPerGroup/initiativeRealizationPerGroup.html\": 85603,\n\t\"./components/improvement/initiativeRealizationPerGroup/initiativeTimeRealizationPerGroup.html\": 21648,\n\t\"./components/improvement/leadtimeImprovement/leadtimeImprovement.html\": 55191,\n\t\"./components/improvement/likes/likes.html\": 39935,\n\t\"./components/improvement/monthlystatusImprovement/monthlystatusImprovement.html\": 74855,\n\t\"./components/improvement/mymessages/myMessages.html\": 2829,\n\t\"./components/improvement/newFeedbackForm.html\": 11951,\n\t\"./components/improvement/newSuggestionForm.html\": 78736,\n\t\"./components/improvement/ongoingimprovement/improvementColumn.html\": 77404,\n\t\"./components/improvement/ongoingimprovement/ongoingImprovement.html\": 63795,\n\t\"./components/improvement/ongoingimprovement/ongoingImprovementApp.html\": 56600,\n\t\"./components/improvement/ongoingimprovements.html\": 71200,\n\t\"./components/improvement/priorityMatrix/priorityMatrix.html\": 35631,\n\t\"./components/improvement/priorityMatrix/priorityMatrixApp.html\": 28524,\n\t\"./components/improvement/rangeImprovement/rangeImprovement.html\": 29663,\n\t\"./components/improvement/roiperassetImprovement/roiperassetImprovement.html\": 44215,\n\t\"./components/improvement/status/feedbackstatus.html\": 83754,\n\t\"./components/improvement/suggestionList/suggestionListForm.html\": 78479,\n\t\"./components/improvement/topImprovementInitiatives/topImprovementInitiatives.html\": 76019,\n\t\"./components/improvement/topImprovementInitiatives/topTimeImprovementInitiatives.html\": 60026,\n\t\"./components/improvement/wheelImprovement/wheelImprovement.html\": 59063,\n\t\"./components/improvement/widgetImprovementStatus/widgetImprovementStatus.html\": 12999,\n\t\"./components/learning/comments/learningPageCommentModal.html\": 7230,\n\t\"./components/learning/comments/learningPageComments.html\": 99894,\n\t\"./components/learning/evaluation/learningPageEvaluation.html\": 94734,\n\t\"./components/learning/evaluation/learningPageEvaluationStatus.html\": 70780,\n\t\"./components/learning/favorites/myFavoritePages.html\": 18522,\n\t\"./components/learning/learning.html\": 7590,\n\t\"./components/learning/pdf/PrintDialog.html\": 29124,\n\t\"./components/learning/pdf/learningPagePdfExport.html\": 38800,\n\t\"./components/learning/viewer/learningSummaryViewer.html\": 38417,\n\t\"./components/learning/viewer/learningViewer.html\": 6101,\n\t\"./components/login/forgotPassword/forgotPasswordForm.html\": 15102,\n\t\"./components/monitoring/integrations/connectorMonitor.html\": 4153,\n\t\"./components/monitoring/integrations/integrationsMonitor.html\": 55883,\n\t\"./components/monitoring/integrations/jobLogs.html\": 99812,\n\t\"./components/monitoring/monitoringAll.html\": 22803,\n\t\"./components/profile/inbox/inbox.html\": 64962,\n\t\"./components/profile/inbox/inboxNotifications.html\": 67624,\n\t\"./components/profile/inbox/notificationMessages/deviationComment/deviationCommentMessage.html\": 84590,\n\t\"./components/profile/inbox/notificationMessages/improvementChangedStatus/improvementChangedStatusMessage.html\": 45962,\n\t\"./components/profile/inbox/notificationMessages/improvementComment/improvementCommentMessage.html\": 18284,\n\t\"./components/profile/inbox/notificationMessages/licensesChanged/licensesChangedMessage.html\": 27796,\n\t\"./components/profile/inbox/notificationMessages/newDeviation/newDeviationMessage.html\": 79540,\n\t\"./components/profile/inbox/notificationMessages/pageCommentAdded/pageCommentAddedMessage.html\": 2630,\n\t\"./components/profile/inbox/notificationMessages/projectMessageAdded/projectMessageAdded.html\": 74275,\n\t\"./components/profile/inbox/notificationMessages/taskAssigned/taskAssignedMessage.html\": 75748,\n\t\"./components/profile/inbox/notificationMessages/taskComment/taskCommentMessage.html\": 79076,\n\t\"./components/profile/inbox/notificationMessages/updatedResponsibleDeviation/updatedResponsibleDeviationMessage.html\": 95352,\n\t\"./components/profile/inbox/notificationMessages/updatedResponsibleSuggestion/updatedResponsibleSuggestionMessage.html\": 90276,\n\t\"./components/profile/myRegisteredIncidents/myRegisteredIncidents.html\": 45622,\n\t\"./components/profile/myRegisteredIncidents/myRegisteredIncidentsForm.html\": 75472,\n\t\"./components/profile/myRegisteredSuggestions/myRegisteredSuggestions.html\": 26414,\n\t\"./components/profile/myRegisteredSuggestions/myRegisteredSuggestionsForm.html\": 54472,\n\t\"./components/profile/myprofile.html\": 19686,\n\t\"./components/profile/myprofilephoto.html\": 26492,\n\t\"./components/profile/notifications/myMessageNotifications.html\": 33823,\n\t\"./components/profile/notifications/myNotifications.html\": 23940,\n\t\"./components/profile/profileImage.html\": 91751,\n\t\"./components/profile/profileSettings/notificationSettings.html\": 49698,\n\t\"./components/profile/profileSettings/profileInfoSettings.html\": 67202,\n\t\"./components/profile/profileSettings/profileSettings.html\": 99066,\n\t\"./components/profile/taskThisWeek/taskThisWeek.html\": 2078,\n\t\"./components/project/attachments/projectAttachments.html\": 19695,\n\t\"./components/project/customerstatus.html\": 62427,\n\t\"./components/project/hub/projectHub.html\": 37889,\n\t\"./components/project/links/projectLinks.html\": 11985,\n\t\"./components/project/messages/projectMessages.html\": 12495,\n\t\"./components/project/milestones/milestones.html\": 63178,\n\t\"./components/project/newProject/newProject.html\": 16282,\n\t\"./components/project/project.html\": 57404,\n\t\"./components/project/projectDelete/projectDeleteModal.html\": 16933,\n\t\"./components/project/projectGrid/projectDetails.html\": 12422,\n\t\"./components/project/projectGrid/projectGrid.html\": 7130,\n\t\"./components/project/projectGrid/projectMilestone/projectMilestoneListForm.html\": 9522,\n\t\"./components/project/projectGrid/projectMilestoneSummary/projectMilestoneSummary.html\": 50416,\n\t\"./components/project/projectGrid/projectOnTime/projectOnTime.html\": 61888,\n\t\"./components/project/projectImprovementSummary/projectImprovementSummary.html\": 28818,\n\t\"./components/project/projectIncidentSummary/projectIncidentSummary.html\": 82738,\n\t\"./components/project/projectParticipants/projectParticipants.html\": 54026,\n\t\"./components/project/projectResourceLinks/projectResourceLinks.html\": 30764,\n\t\"./components/project/projectTarget/projectTarget.html\": 59066,\n\t\"./components/project/projectTask/newtasktoprojecttasklist.html\": 18918,\n\t\"./components/project/projectboard/cellcloneselector/cellCloneSelectorForm.html\": 14368,\n\t\"./components/project/projectboard/projectCellSelection.html\": 61224,\n\t\"./components/project/projectboard/projectboard.html\": 77018,\n\t\"./components/project/projectboard/projectselector/projectNewModal.html\": 60944,\n\t\"./components/project/projectboard/projectselector/projectSelectorModal.html\": 29545,\n\t\"./components/project/projectboard/targetVisualizationSelector/targetProjectVisualizationForm.html\": 72670,\n\t\"./components/project/projectboard/targetVisualizationSelector/targetVisualizationSelectorForm.html\": 58556,\n\t\"./components/project/projectboard/templates/contactPersonCell/projectContactPersonCell.html\": 76969,\n\t\"./components/project/projectboard/templates/customerCell/projectCustomerCell.html\": 33787,\n\t\"./components/project/projectboard/templates/dateCell/projectDateCell.html\": 10488,\n\t\"./components/project/projectboard/templates/endDateCell/projectEndDateCell.html\": 19141,\n\t\"./components/project/projectboard/templates/linkCell/projectLinkCell.html\": 50523,\n\t\"./components/project/projectboard/templates/milestoneCell/projectMilestoneCell.html\": 90527,\n\t\"./components/project/projectboard/templates/milestoneCell/projectNextMilestoneCell.html\": 40388,\n\t\"./components/project/projectboard/templates/numberCell/numberCell.html\": 58670,\n\t\"./components/project/projectboard/templates/numberCellAggregate/numberCellAggregate.html\": 68670,\n\t\"./components/project/projectboard/templates/numberCellAutomatic/numberCellAutomatic.html\": 92822,\n\t\"./components/project/projectboard/templates/ownerCell/ownerCell.html\": 33394,\n\t\"./components/project/projectboard/templates/personCell/projectPersonCell.html\": 36371,\n\t\"./components/project/projectboard/templates/progressCell/progressbar.html\": 34273,\n\t\"./components/project/projectboard/templates/progressCell/projectProgressCell.html\": 43407,\n\t\"./components/project/projectboard/templates/progressTasksCell/projectProgressTasksCell.html\": 82009,\n\t\"./components/project/projectboard/templates/projectDescriptionCell/projectDescriptionCell.html\": 93934,\n\t\"./components/project/projectboard/templates/projectLinkToHubCell/projectLinkToHubCell.html\": 32570,\n\t\"./components/project/projectboard/templates/projectNameCell/projectNameCell.html\": 83866,\n\t\"./components/project/projectboard/templates/projectNumberCell/projectNumberCell.html\": 75630,\n\t\"./components/project/projectboard/templates/projectParticipantsCell/projectParticipantModal.html\": 11070,\n\t\"./components/project/projectboard/templates/projectParticipantsCell/projectParticipantsCell.html\": 66594,\n\t\"./components/project/projectboard/templates/projectStatusCell/projectStatusCell.html\": 73970,\n\t\"./components/project/projectboard/templates/projectTargetCell/projectTargetCell.html\": 34562,\n\t\"./components/project/projectboard/templates/projectTasksCell/projectTasksCell.html\": 65846,\n\t\"./components/project/projectboard/templates/startDateCell/projectStartDateCell.html\": 61247,\n\t\"./components/project/projectboard/templates/targetFromAppCell/targetFromAppCell.html\": 31094,\n\t\"./components/project/projectboard/templates/textCell/predefinedLabels.html\": 97192,\n\t\"./components/project/projectboard/templates/textCell/projectTextCell.html\": 78339,\n\t\"./components/project/projectboard/templates/textFromAppCell/textFromAppCell.html\": 80262,\n\t\"./components/project/projectportfolio/newProjectPortfolioConfiguration.html\": 16412,\n\t\"./components/project/projectportfolio/projectPortfolio.html\": 59514,\n\t\"./components/project/projectportfolio/projectportfolioTimeview.html\": 91594,\n\t\"./components/project/selectedProject.html\": 69251,\n\t\"./components/project/status/projectPercentPlanComplete.html\": 25240,\n\t\"./components/selectors/groupselector/groupSelector.html\": 91089,\n\t\"./components/start/inbox/inboxButton.html\": 95763,\n\t\"./components/start/myFavorites/myFavorites.html\": 23311,\n\t\"./components/start/newButtons/newButtons.html\": 30771,\n\t\"./components/start/newButtons/newCompetence.html\": 71409,\n\t\"./components/start/start.html\": 91896,\n\t\"./components/strategy/attachments/strategyAttachments.html\": 12017,\n\t\"./components/strategy/goalCreate/goalCreate.html\": 29866,\n\t\"./components/strategy/goalCreate/goalCreatePopup.html\": 60954,\n\t\"./components/strategy/goalDetails.html\": 52278,\n\t\"./components/strategy/goalEdit/goalEdit.html\": 3202,\n\t\"./components/strategy/goalEdit/goalEditPopup.html\": 35826,\n\t\"./components/strategy/goalKanban/goalKanban.html\": 47768,\n\t\"./components/strategy/goalKanban/goalKanbanCard.html\": 47694,\n\t\"./components/strategy/goalSelector/goalSelector.html\": 27660,\n\t\"./components/strategy/links/strategyLinks.html\": 3681,\n\t\"./components/strategy/strategy-display-views/strategy_goal_asset_changed.html\": 44682,\n\t\"./components/strategy/strategy-display-views/strategy_goal_color_changed.html\": 65189,\n\t\"./components/strategy/strategy-display-views/strategy_goal_deleted.html\": 93568,\n\t\"./components/strategy/strategy-display-views/strategy_goal_description_changed.html\": 92808,\n\t\"./components/strategy/strategy-display-views/strategy_goal_end_date_changed.html\": 48464,\n\t\"./components/strategy/strategy-display-views/strategy_goal_name_changed.html\": 50582,\n\t\"./components/strategy/strategy-display-views/strategy_goal_name_changed.html.html\": 50582,\n\t\"./components/strategy/strategy-display-views/strategy_goal_new.html\": 13803,\n\t\"./components/strategy/strategy-display-views/strategy_goal_start_date_changed.html\": 65788,\n\t\"./components/strategy/strategy.html\": 37236,\n\t\"./components/strategy/strategyGoalResources/strategyGoalResourceLinks.html\": 81898,\n\t\"./components/strategy/strategyKPI/strategyBowlerChart.html\": 17325,\n\t\"./components/strategy/strategyKPI/strategyBowlerMonthlyActual.html\": 97434,\n\t\"./components/strategy/strategyKPI/strategyBowlerMonthlyPlan.html\": 33403,\n\t\"./components/strategy/strategyKPI/strategyBowlerTitle.html\": 90759,\n\t\"./components/strategy/strategyKPI/strategyFlexibleBowlerChart.html\": 90056,\n\t\"./components/strategy/strategyKPI/strategyKPIConfiguration.html\": 37714,\n\t\"./components/strategy/strategyMap/cards/strategyCardPopup.html\": 56228,\n\t\"./components/strategy/strategyMap/cards/strategyGoalCard.html\": 82947,\n\t\"./components/strategy/strategyMap/strategyMap.html\": 9030,\n\t\"./components/strategy/strategyMap/strategyMapChart/strategyMapChart.html\": 95816,\n\t\"./components/strategy/strategyMap/strategyviewer.html\": 38944,\n\t\"./components/strategy/strategyTaskList/strategyTaskList.html\": 28224,\n\t\"./components/strategy/strategyTaskList/strategyTaskListResult.html\": 12525,\n\t\"./components/strategy/strategyTaskList/strategyTaskUrl.html\": 23559,\n\t\"./components/strategy/strategyboard/assetCell/assetCell.html\": 33738,\n\t\"./components/strategy/strategyboard/breakthroughNewModal.html\": 1578,\n\t\"./components/strategy/strategyboard/strategyBoard.html\": 18802,\n\t\"./components/strategy/strategyboard/strategyDescriptionCell/strategyDescriptionCell.html\": 88010,\n\t\"./components/strategy/strategyboard/strategyEndDateCell/strategyEndDateCell.html\": 54754,\n\t\"./components/strategy/strategyboard/strategyNameCell/strategyNameCell.html\": 47184,\n\t\"./components/strategy/strategyboard/strategyStartDateCell/strategyStartDateCell.html\": 65054,\n\t\"./components/strategy/strategyboard/strategySubGoalCell/strategySubGoalCell.html\": 59554,\n\t\"./components/strategy/teamGoalsTable/goalKpiTable/goalKpiTable.html\": 11896,\n\t\"./components/strategy/teamGoalsTable/teamGoalsTable.html\": 18718,\n\t\"./components/tasks/info/taskInfo.html\": 11338,\n\t\"./components/tasks/myTasks.html\": 87654,\n\t\"./components/tasks/personal/3Ctask.html\": 39424,\n\t\"./components/tasks/personal/a3task.html\": 7762,\n\t\"./components/tasks/personal/deviationtask.html\": 87077,\n\t\"./components/tasks/personal/improvementtask.html\": 41118,\n\t\"./components/tasks/personal/personaltask.html\": 83086,\n\t\"./components/tasks/personal/strategytask.html\": 67727,\n\t\"./components/tasks/personal/subtask.html\": 45936,\n\t\"./components/tasks/personal/task.html\": 54894,\n\t\"./components/tasks/personaltasklist.html\": 98073,\n\t\"./components/tasks/subtasks/moveSubTask.html\": 79367,\n\t\"./components/tasks/subtasks/newSubTaskList.html\": 4554,\n\t\"./components/tasks/subtasks/subTaskList.html\": 90204,\n\t\"./components/tasks/subtasks/taskBoardSelector.html\": 31069,\n\t\"./components/tasks/subtasks/taskUserSelector.html\": 13068,\n\t\"./components/tasks/taskList/projectTaskList.html\": 53346,\n\t\"./components/tasks/taskList/taskListForm.html\": 45287,\n\t\"./components/tasks/taskSearch/taskList.html\": 46377,\n\t\"./components/tasks/taskSearch/taskListFilter.html\": 32167,\n\t\"./components/tasks/taskSearch/taskListResult.html\": 15204,\n\t\"./components/tasks/taskSearch/taskSearch.html\": 46917,\n\t\"./components/tasks/tasks.html\": 70332,\n\t\"./components/tasks/taskstatus/animationTaskStatus.html\": 3625,\n\t\"./components/tasks/taskstatus/personalTaskStatus.html\": 96369,\n\t\"./components/tasks/team/teamKanban.html\": 72266,\n\t\"./components/tasks/team/teamKanbanCard.html\": 41344,\n\t\"./components/tasks/team/teammember.html\": 84595,\n\t\"./components/tasks/team/teamspace.html\": 70887,\n\t\"./components/teams/config.html\": 18582,\n\t\"./components/teams/configTab.html\": 80323,\n\t\"./components/teams/settings.html\": 62633,\n\t\"./components/testTemplate.html\": 44157,\n\t\"./components/users/userBadge.html\": 15326,\n\t\"./shared/comments/replyableComment.html\": 20200,\n\t\"./shared/comments/topLevelComment.html\": 32889,\n\t\"./shared/htmlTextArea/htmlTextArea.html\": 71445,\n\t\"./shared/layout/assetMultiSelector/assetMultiSelectorForm.html\": 40722,\n\t\"./shared/layout/assetSelector/assetSelectorDropdown.html\": 41983,\n\t\"./shared/layout/assetSelector/assetSelectorModal.html\": 99661,\n\t\"./shared/layout/boardTaskSelector/boardTaskSelectorDropdown.html\": 92043,\n\t\"./shared/layout/clock/clock.html\": 71626,\n\t\"./shared/layout/clock/countdown.html\": 57699,\n\t\"./shared/layout/content.html\": 47164,\n\t\"./shared/layout/favorites/favorites.html\": 18902,\n\t\"./shared/layout/footer.html\": 27790,\n\t\"./shared/layout/fullscreen/fullscreen.html\": 49018,\n\t\"./shared/layout/ibox/iboxExpandButton.html\": 21683,\n\t\"./shared/layout/ibox_tools.html\": 39549,\n\t\"./shared/layout/inTrialInfo/inTrialInfo.html\": 65478,\n\t\"./shared/layout/navigation.html\": 96656,\n\t\"./shared/layout/navnewa3/navnewa3.html\": 13010,\n\t\"./shared/layout/navnewbubble/navnewbubble.html\": 80450,\n\t\"./shared/layout/navnewsuggestion/navnewsuggestion.html\": 74390,\n\t\"./shared/layout/navnewtask/navnewtask.html\": 5176,\n\t\"./shared/layout/projectSelector/projectSelectorDropdown.html\": 50615,\n\t\"./shared/layout/topnavbar.html\": 22040,\n\t\"./shared/layout/userSelector/userSelectorDropdown.html\": 62329,\n\t\"./shared/logs/logMessageViewer.html\": 62093,\n\t\"./shared/messages/message.html\": 11924,\n\t\"./shared/messages/messageAttachment.html\": 3589,\n\t\"./shared/messages/messageRepliesDialog.html\": 55262,\n\t\"./shared/messages/replyableMessage.html\": 93292,\n\t\"./shared/messages/simpleReply.html\": 34485,\n\t\"./shared/modal/fullscreen/fullscreenWidget.html\": 81411,\n\t\"./shared/modal/modal.html\": 26025,\n\t\"./shared/paging/pager.html\": 5488,\n\t\"./shared/tasks/taskStatus.html\": 67284,\n\t\"./shared/zoom/zoomSelector.html\": 55460\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 81671;","// Module\nvar code = \"
    \";\n// Exports\nexport default code;","// Module\nvar code = \"
    {{item.activityPerformer}}
    {{item.occured}}

    {{item.activityOwner}}

    : {{item.payLoad.FileInfo.Name}}

    \";\n// Exports\nexport default code;","// Module\nvar code = \"
    {{item.activityPerformer}}
    {{item.occured}}

    {{item.activityOwner}}

    : {{item.payLoad.FileInfo.Name}}

    \";\n// Exports\nexport default code;","// Module\nvar code = \"
    {{item.activityPerformer}}
    {{item.occured}}

    : {{item.payLoad.Category}}

    \";\n// Exports\nexport default code;","// Module\nvar code = \"
    {{item.activityPerformer}}
    {{item.occured}}

    {{item.payLoad.Goal}}

    \";\n// Exports\nexport default code;","// Module\nvar code = \"
    {{item.activityPerformer}}
    {{item.occured}}

    {{item.activityOwner}}

    : {{item.description}}.

    \";\n// Exports\nexport default code;","// Module\nvar code = \"
    {{item.activityPerformer}}
    {{item.occured}}

    : {{item.payLoad.FullName}}

    \";\n// Exports\nexport default code;","// Module\nvar code = \"
    {{item.activityPerformer}}
    {{item.occured}}

    {{user.FullName}}
    \";\n// Exports\nexport default code;","// Module\nvar code = \"
    {{item.activityPerformer}}
    {{item.occured}}

    {{item.payLoad.EstimatedEndDate | date: 'mediumDate'}}

    {{item.payLoad.EndDate | date: 'mediumDate'}}

    {{item.payLoad.EstimatedSavings}}

    {{item.payLoad.EstimatedTotalCost}}

    {{item.payLoad.ActualSavings}}

    {{item.payLoad.ActualTotalCost}}

    \";\n// Exports\nexport default code;","// Module\nvar code = \"
    {{item.activityPerformer}}
    {{item.occured}}

    {{item.activityOwner}}

    : {{item.payLoad.Name}}

    \";\n// Exports\nexport default code;","// Module\nvar code = \"
    {{item.activityPerformer}}
    {{item.occured}}

    {{item.activityOwner}}

    : {{item.payLoad.Name}}

    \";\n// Exports\nexport default code;","// Module\nvar code = \"
    {{item.activityPerformer}}
    {{item.occured}}

    {{item.payLoad.Name}}

    {{item.payLoad.PlannedDate | date: 'mediumDate'}}

    {{item.payLoad.ActualDate | date: 'mediumDate'}}

    \";\n// Exports\nexport default code;","// Module\nvar code = \"
    {{item.activityPerformer}}
    {{item.occured}}

    : : : : : :

    \";\n// Exports\nexport default code;","// Module\nvar code = \"
    {{item.activityPerformer}}
    {{item.occured}}

    \";\n// Exports\nexport default code;","// Module\nvar code = \"
    {{item.activityPerformer}}
    {{item.occured}}

    : {{item.description}}

    \";\n// Exports\nexport default code;","// Module\nvar code = \"
    {{item.activityPerformer}}
    {{item.occured}}

    : {{item.description}}

    \";\n// Exports\nexport default code;","// Module\nvar code = \"
    {{item.activityPerformer}}
    {{item.occured}}

    : {{item.payLoad.Title}}

    \";\n// Exports\nexport default code;","// Module\nvar code = \"
    {{item.activityPerformer}}
    {{item.occured}}

    {{activity.description}}

    \";\n// Exports\nexport default code;","// Module\nvar code = \"
    {{item.activityPerformer}}
    {{item.occured}}

    {{activity.description}}

    \";\n// Exports\nexport default code;","// Module\nvar code = \"

    {{a3.title}}
    {{a3.lastModified | date: 'mediumDate'}}
    {{a3.a3TemplateName}}

    {{a3.assetName}}

    {{a3.assetName}}

    {{a3.category}}

    {{a3.goal}}
    \";\n// Exports\nexport default code;","// Module\nvar code = \"
    {{item.title}}
    {{item.title}}
    {{item.user.fullName}}
    • {{user.displayName}}
      {{user.firstName}} {{user.lastName}}
      {{user.firstName}} {{user.lastName}}
    \";\n// Exports\nexport default code;","// Module\nvar code = \"
    {{col.name}}
    {{col.name}}
    {{col.name}}
    {{col.name}}
    {{col.name}}
    {{col.name}}
    {{col.name}}
    4\\\">
    \";\n// Exports\nexport default code;","// Module\nvar code = \"
    • {{user.displayName}}
      {{user.displayName}}

    {{user.firstName}} {{user.lastName}} {{user.screenName}}

    {{participants.length}}
    {{user.firstName}} {{user.lastName}} {{user.screenName}}
    \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"
    {{title}}
    {{col.name}}
    {{col.name}}
    {{col.name}}
    {{col.name}}
    {{col.name}}
    {{col.name}}
    {{col.name}}
    {{col.name}}
    {{col.name}}
    {{col.name}}
    \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"
    \";\n// Exports\nexport default code;","// Module\nvar code = \"
    {{date.estimatedEndDate | date: 'mediumDate'}}
    {{date.estimatedEndDate | date: 'mediumDate'}}
    {{date.estimatedEndDate | date: 'mediumDate'}}
    0\\\" uib-tooltip=\\\"{{'PROJECT_ESTIMATED_DATE' |translate}}: {{date.estimatedEndDate | date: 'mediumDate'}} (+{{date.diffPlannedVSActual}} {{'COMMON_DAYS' |translate}})\\\"> {{date.endDate | date: 'mediumDate'}} {{date.endDate | date: 'mediumDate'}} {{date.endDate | date: 'mediumDate'}} {{date.endDate | date: 'mediumDate'}}
    \";\n// Exports\nexport default code;","// Module\nvar code = \"
    {{goal}}
    {{goal}}
    \";\n// Exports\nexport default code;","// Module\nvar code = \"
    \";\n// Exports\nexport default code;","// Module\nvar code = \"
    {{user.displayName}}
    • {{user.displayName}}
      {{user.firstName}} {{user.lastName}}
      {{user.firstName}} {{user.lastName}}
    {{user.displayName}}
    \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"
    \";\n// Exports\nexport default code;","// Module\nvar code = \"
    • {{status.translated}}
      {{status.translated}}
    \";\n// Exports\nexport default code;","// Module\nvar code = \"
    0\\\" class=\\\"text-center\\\"> {{taskCompletedCount}} / {{taskCount}}
    \";\n// Exports\nexport default code;","// Module\nvar code = \"
    {{title}}
    {{title}}
    \";\n// Exports\nexport default code;","// Module\nvar code = \"
    \";\n// Exports\nexport default code;","// Module\nvar code = \"
    1. A3
    2. A3
    A3 - {{a3.title}}
    {{goal.name}}
    0 && (modifyGoal || subgoal.selected)\\\" ng-repeat=\\\"subgoal in goal.childGoals\\\" style=\\\"margin-left:30px;margin-top:10px\\\"> {{subgoal.name}}
    0\\\">{{participants.length}}
    & 0\\\">{{fileAndLinkCount}}

    {{currency}}
    {{currency}}

    {{currency}}
    {{currency}}
    :

    {{a3.createdDate | date: 'mediumDate'}}


    A3
    • {{$index+1}}. {{step.title}}
    {{userEditingStep.fullName}}      
    \";\n// Exports\nexport default code;","// Module\nvar code = \"

    {{title}}

    {{goal}}
    \";\n// Exports\nexport default code;","// Module\nvar code = \"

    {{comment.commentedByDisplayName}} {{comment.occured}}
    {{comment.comment}}
    \";\n// Exports\nexport default code;","// Module\nvar code = \"
    A3
    {{step.sortOrder}}. {{step.name}}
    0\\\">

    \";\n// Exports\nexport default code;","// Module\nvar code = \"

    \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"

    {{model.title}}

    {{model.goal}}
    {{model.owner}}
    {{user.fullName}},
    {{model.versionNumber}}
    {{model.createdDate | date: 'mediumDate'}}
    {{model.lastModified | date: 'mediumDate'}}
    \";\n// Exports\nexport default code;","// Module\nvar code = \"
    1. A3
    2. A3
    3. A3
    A3
    {{'A3_SELECT_STEP' | translate}}
    {{zoom * 100 | number :1 }}%
    \";\n// Exports\nexport default code;","// Module\nvar code = \"

    \";\n// Exports\nexport default code;","// Module\nvar code = \"

    \";\n// Exports\nexport default code;","// Module\nvar code = \"

    {{currency}}
    {{currency}}
    {{currency}}
    {{currency}}
    \";\n// Exports\nexport default code;","// Module\nvar code = \"
    {{a3.title}} {{a3.owner}} {{a3.assetName}} {{a3.actualSavings | currency:\\\" \\\": 0}}
    ( : {{a3.estimatedSavings | currency:\\\" \\\": 0}})
    {{a3.actualTotalCost | currency:\\\" \\\": 0}}
    ( : {{a3.estimatedTotalCost | currency:\\\" \\\": 0}})
    {{a3.realized | currency:\\\" \\\": 0}}
    ( : {{a3.estimated | currency:\\\" \\\": 0}})
    {{a3.endDate | date: 'mediumDate'}}
    ( : {{a3.estimatedEndDate | date: 'mediumDate'}})
    {{milestone.name}}

    {{milestone.plannedDate | date: 'mediumDate'}} {{milestone.actualDate | date: 'mediumDate'}}
    \";\n// Exports\nexport default code;","// Module\nvar code = \"
    \";\n// Exports\nexport default code;","// Module\nvar code = \"
    \";\n// Exports\nexport default code;","// Module\nvar code = \"

    {{realized | number:fractionSize}} {{currency}}

    {{estimated | number:fractionSize}} {{currency}}

    \";\n// Exports\nexport default code;","// Module\nvar code = \"
    \";\n// Exports\nexport default code;","// Module\nvar code = \"
    \";\n// Exports\nexport default code;","// Module\nvar code = \"

    {{realized | number:fractionSize}}

    {{estimated | number:fractionSize}}

    \";\n// Exports\nexport default code;","// Module\nvar code = \"

    A3 slideshow

    Barebones Presentation

    This example contains the bare minimum includes and markup required to run a reveal.js presentation.

    No Theme

    There's no theme included, so it will fall back on browser defaults.

    \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"

    {{model.name}}

    {{model.goal}}
    {{model.owner}}
    {{user.fullName}}
    {{model.versionNumber}}
    {{model.createdDate | date: 'mediumDate'}}
    {{model.lastModified | date: 'mediumDate'}}
    \";\n// Exports\nexport default code;","// Module\nvar code = \"

    \";\n// Exports\nexport default code;","// Module\nvar code = \"

    \";\n// Exports\nexport default code;","// Module\nvar code = \"
    {{zoom * 100 | number :1 }}%
    \";\n// Exports\nexport default code;","// Module\nvar code = \"

    {{currency}}
    {{currency}}
    {{currency}}
    {{currency}}
    \";\n// Exports\nexport default code;","// Module\nvar code = \"
    \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"
    \";\n// Exports\nexport default code;","// Module\nvar code = \"

    0\\\"> {{a3.title}}
    {{a3taskCount}} 0\\\">, {{a3taskOverdueCount}}

    • {{task.boardDate | date: 'mediumDate'}} {{task.title}}

      {{task.responsibleDisplayName}}

    \";\n// Exports\nexport default code;","// Module\nvar code = \"

    0\\\">

    \";\n// Exports\nexport default code;","// Module\nvar code = \"
    \";\n// Exports\nexport default code;","// Module\nvar code = \"

    0\\\"> {{board.name}}
    {{taskCount}} 0\\\">, {{taskOverdueCount}}

    • {{task.boardDate | date: 'mediumDate'}} {{task.title}}

      {{task.responsibleDisplayName}}

    \";\n// Exports\nexport default code;","// Module\nvar code = \"
    \";\n// Exports\nexport default code;","// Module\nvar code = \"

    0\\\"> {{deviation.title}}
    {{deviationtaskCount}} 0\\\">, {{deviationtaskOverdueCount}}

    • {{task.boardDate | date: 'mediumDate'}} {{task.title}}

      {{task.responsibleDisplayName}}

    \";\n// Exports\nexport default code;","// Module\nvar code = \"
    \";\n// Exports\nexport default code;","// Module\nvar code = \"

    0\\\"> {{improvement.title}}
    {{improvementtaskCount}} 0\\\">, {{improvementtaskOverdueCount}}

    • {{task.boardDate | date: 'mediumDate'}} {{task.title}}

      {{task.responsibleDisplayName}}

    \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"

    {{actionTitle}}
    {{message}}
    {{item.name}}
    \";\n// Exports\nexport default code;","// Module\nvar code = \"

    API clients

    Client Id Name Customer Scopes
    {{client.clientId}} {{client.clientName}} {{client.customerName}} {{scope}}
    no access
    \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"

    {{item.name}}
    \";\n// Exports\nexport default code;","// Module\nvar code = \"



    {{displayAssetType(asset)}}

     
    \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"

    \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"
     

    {{item.name}}
    {{item.description}}
    {{item.name}}
    {{item.description}}
    {{item.name}}
    {{item.description}}
    {{item.name}}
    {{item.description}}
    {{item.name}}
    {{item.description}}
    {{item.name}}
    {{item.description}}


    {{item.owner}}

    {{item.assetName}}
    \";\n// Exports\nexport default code;","// Module\nvar code = \"

    \";\n// Exports\nexport default code;","// Module\nvar code = \"
    {{template.boardType}}
    {{template.name}}
    {{template.description}}

    {{template.createdByUser}}

    {{template.createdDate | date: 'mediumDate'}}
    \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \"

    * *
    {{item.firstName}}
    {{item.lastName}}
    {{item.email}}
    {{item.phoneNumber}}
    {{item.companyName}}
    {{item.title}}
    \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"

    Gratis kontoer

    {{freeaccounts}}

    I oppsigelse

    {{resignation}}

    {{actionTitle}}

    Infrastructure

    (only by request)

    Bulk +10
    Bulk +10

    Order

    Order by Customized Price
    {{item.productName}}
    {{item.startDate | date: 'mediumDate'}}
    {{item.endDate | date: 'mediumDate'}}
    {{item.createdByUser}}
    {{item.customPriceExVat}}

    Operations

    {{message}}
    AD
    {{customerinfo.customer.id}}
    {{customerinfo.customer.name}}
    {{customerinfo.customer.name}} ({{customerinfo.account.endDate | date: 'mediumDate'}})
    {{customerinfo.customer.userLicensesUsed}} / {{customerinfo.account.userLicenses + customerinfo.account.mobileLicenses}} {{customerinfo.account.subscription}}
    {{customerinfo.account.billing}}
    {{customerinfo.account.billing}}
    Not deployed
    0\\\">({{closedAccounts.length}})
    AD
    {{customerinfo.customer.id}}
    {{customerinfo.customer.name}}
    {{customerinfo.customer.userLicensesUsed}} / {{customerinfo.account.userLicenses + customerinfo.account.mobileLicenses}} {{customerinfo.customer.customDomain}}
    \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"
    {{timePeriod.from | date: 'dd.MM.yyyy'}} - {{timePeriod.to | date: 'dd.MM.yyyy'}}
    Fakturert ({{invoices.length}})
    FakturaNr KundeNr Kunde Fakturadato Frist Status Valuta Sum eks mva Sum ink mva
    {{invoice.invoiceNumber}} {{invoice.customer.customerNumber}} {{invoice.customerName}} {{invoice.invoiceDate}} {{invoice.paymentDueDate}} {{invoice.statusCode}} {{invoice.currency}} {{invoice.taxExlusiveAmountCurrency | number : 2}} {{invoice.taxInclusiveAmountCurrency| number : 2}}
    ProduktNr Product Enhet Antall Rabatt % Pris Pris ink mva Sum ex mva Sum inc mva
    \";\n// Exports\nexport default code;","// Module\nvar code = \"
    {{timePeriod.from | date: 'dd.MM.yyyy'}} - {{timePeriod.to | date: 'dd.MM.yyyy'}}
    Failed ({{summary.result.invoicesFailed.length}})
    CustomerId Name ProjectId InvoiceType Reason
    {{failed.customerId}} {{failed.customerName}} {{failed.projectId}} {{failed.invoiceType}} {{failed.reason}}
    Skipped ({{summary.result.invoicesSkipped.length}})
    CustomerId Name ProjectId InvoiceType Reason
    {{skipped.customerId}} {{skipped.customerName}} {{skipped.projectId}} {{skipped.invoiceType}} {{skipped.reason}}
    Valid ({{summary.result.invoicesCreated.length}})
    Id Kunde KundeNr Epost Fakturadato Frist Valuta Sum eks mva Sum ink mva
    {{invoice.customerId}} {{invoice.customerName}} {{invoice.customerNumber}} {{invoice.emailAddress}} {{invoice.invoiceDate}} {{invoice.paymentDueDate}} {{invoice.currency}} {{invoice.sumExTax | number : 2}} {{invoice.sumIncTax| number : 2}}
    Invoiced
    {{invoice.invoiced.sumInvoiced | number : 2}}
    ProduktNr Product Enhet Antall Rabatt % Pris Pris ink mva Sum ex mva Sum inc mva
    \";\n// Exports\nexport default code;","// Module\nvar code = \"

    Betalende kunder

    Start dato Neste betaling Endret betalingsinfo # Aktive brukere # Brukere logget inn # Oppgaver # Visninger læringsmateriell
    {{account.customerId}} {{account.startDate | date: 'mediumDate'}} {{account.name}}
    {{account.subscription}}
    {{account.billing}}
    {{account.due}} dager
    {{account.regnumber}} {{account.contactFirstName}} {{account.contactLastName}} {{account.email}} {{account.address}}
    {{account.zip}} {{account.city}}
    {{account.country}} {{account.other}} {{account.lastModifiedBillingDate | date: 'mediumDate'}} {{account.userCount}} {{account.userLoginCount}} {{account.taskCount}} {{account.learningCount}}
    \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"

    Trials

    Konverterte trials

    {{trialinfo.converted}}

    Aktive trials

    {{trialinfo.active}}

    Totale trials

    {{trialinfo.total}}

    \\\"Døde\\\" signups

    {{trialinfo.dead}}

    Signup dato Email Selskap # Brukere # Brukere logget inn # Tavler # Oppgaver # Visninger læringsmateriell
    {{trial.signupDate | date: 'mediumDate'}} {{trial.firstName}} {{trial.lastName}} {{trial.email}} {{trial.name}}
    {{trial.language}}
    Konvertert
    Aktiv
    \\\"Død\\\"
    0\\\" class=\\\"label label-warning\\\">Må godkjenne betalingsinfo
    {{trial.userCount}} {{trial.userLoginCount}} {{trial.boardCount}} {{trial.taskCount}} {{trial.learningCount}}
    Type Navn Beskrivelse Eier
    {{board.boardType}} {{board.name}} {{board.description}} {{board.ownerDisplayName}}
    \";\n// Exports\nexport default code;","// Module\nvar code = \"
    {{dataSource.title}}
    {{dataSource.description}}
    {{dataSource.title}}
    {{dataSource.description}}
    {{dataSource.valueElement.unit}} {{dataSource.displayUnitOfTime}} {{dataSource.id}}
    \";\n// Exports\nexport default code;","// Module\nvar code = \"
    1. {{dataSource.title}}
    • {{$index+1}}. {{step.title}}
      0\\\" style=\\\"margin-left:20px\\\">
      {{element.type}} {{element.isMandatory}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      0\\\" class=\\\"table pull-right\\\" style=\\\"width:300px;margin-bottom:0\\\">
      {{column.title}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{'COMMON_IMPORT' | translate}}

      {{data.fileName}}

      {{'ADMIN_DATA_SHEET_NAME' | translate}}: {{data.series[0].name}}

      {{'COMMON_VALUES' | translate}}: {{data.series[0].rows.length}}
      {{header}}
      {{col}}

      {{'ADMIN_DATA_DATASOURCES_NEW' | translate}}



      {{'ADMIN_DATA_DATASOURCES' | translate}}: {{sources.length}}

      {{'COMMON_NAME' | translate}} {{'ADMIN_DATA_DATASOURCE_UNIT' | translate}} {{'COMMON_DESCRIPTION' | translate}} {{'COMMON_EXISTS' | translate}}
      {{source.name}} {{source.unit}} {{source.description}}
      0\\\">

      {{source.title}}

      {{'COMMON_VALUES' | translate}}: {{source.existingValues.length}}
      {{'COMMON_DATE' | translate}} {{'COMMON_VALUE' | translate}} {{'COMMON_ASSET' | translate}} {{'COMMON_AREA' | translate}} {{'COMMON_PROJECT' | translate}} {{'COMMON_DIMENSION' | translate}} {{'COMMON_DIMENSION2' | translate}} {{'COMMON_DIMENSION3' | translate}} {{'COMMON_DIMENSION4' | translate}}
      {{convertToLocal(value.valueDate)}} {{value.value}} {{value.assetId}} {{value.areaId}} {{value.projectNumber}} {{value.dimension}} {{value.dimension2}} {{value.dimension3}} {{value.dimension4}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{'COMMON_IMPORT' | translate}}

      {{data.fileName}}

      {{'ADMIN_DATA_SHEET_NAME' | translate}}: {{data.series[0].name}}

      {{'COMMON_VALUES' | translate}}: {{data.series[0].rows.length}}
      {{header}}
      {{col}}

      {{'ADMIN_DATA_DATASOURCE_NEW' | translate}}

      {{existingDataSource.title}}

      {{'COMMON_VALUES' | translate}}: {{existingValues.length}}
      {{'COMMON_DATE' | translate}} {{'COMMON_VALUE' | translate}} {{'COMMON_ASSET' | translate}} {{'COMMON_AREA' | translate}} {{'COMMON_PROJECT' | translate}} {{'COMMON_DIMENSION' | translate}} {{'COMMON_DIMENSION2' | translate}} {{'COMMON_DIMENSION3' | translate}} {{'COMMON_DIMENSION4' | translate}}
      {{convertToLocal(value.valueDate)}} {{value.value}} {{value.assetId}} {{value.areaId}} {{value.projectNumber}} {{value.dimension}} {{value.dimension2}} {{value.dimension3}} {{value.dimension4}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{item.name}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      1. {{list.name}}

      * {{selectedLanguage.languageLabel}}
      {{item.identifier}}
      {{item.name}}
      {{item.customLanguageLabel.label}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"




      {{list.name}}
      {{list.description}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"
      1. {{visualizationType}}
      {{column.title}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{dataSource.valueElement.unit}}
      {{yellowDescription}}
      {{dataSource.valueElement.unit}}
      {{target.validFrom | date: 'mediumDate'}} {{target.greenOperator}} {{target.greenValue}} {{target.yellowDescription}} {{target.redOperator}} {{target.redValue}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{registration.title}}
      {{registration.description}}
      {{message}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{cause.title}}
      {{actionTitle}}
      {{registration.title}}
      {{registration.description}}
      {{message}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.title}}
      {{actionTitle}}
      {{registration.title}}
      {{registration.description}}
      {{message}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      0\\\" class=\\\"table table-striped\\\">
      {{selectedLanguage.languageLabel}}
      {{item.label}}
      {{item.customLanguageLabel.label}}
      {{item.typelabel}} ({{item.dataListName}})
      {{message}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{type.title}}
      {{type.description}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      - {{deviationTypeTitle}}

      {{item.title}} 0\\\" class=\\\"label label-warning-light\\\" uib-tooltip=\\\"{{ 'COMMON_SUB_CATEGORY' | translate }}\\\">{{item.children.length}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      - {{deviationTypeTitle}}

      {{item.title}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      - {{deviationTypeTitle}}

      {{item.title}} []

      - {{deviationTypeTitle}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      1. {{title}}
      • {{$index+1}}. {{step.title}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      - {{deviationTypeTitle}}

      {{item.label}}

      0\\\" class=\\\"table table-striped\\\">
      {{item.label}}
      {{item.typelabel}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{item.name}}
      {{actionTitle}}
      {{message}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      1. {{$ctrl.connector.name}}

      adjust by {{$ctrl.timezone}}
      {{job.name}} {{job.description}} {{job.dataSourceId}} {{job.jobType.name}}
      Values
      • {{value.valueDate | date:'dd.MM.yyyy HH:mm:ss'}} : {{value.value}} {{value.dataSource.valueUnit}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"

      Customer Id
      {{connector.name}} {{connector.customerId}} {{connector.jobs.length}} {{connector.lastModified | date: 'dd.MM.yyyy HH:mm:ss'}} {{connector.id}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      1. '{{$ctrl.job.connectorName}}'
      2. {{$ctrl.job.name}}

      {{$ctrl.job.name}}

      Cron gen
      Job parts
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{language.languageLabel}} Web Backend Mobile Translate
      {{item.labelCode}}
      {{label.label}}
      {{currentPage+1}}/{{numberOfPages()}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      1. {{material.title}}
      2. {{selectedPage.title}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{material.title}}

      {{material.description}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{page.title}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{$ctrl.description}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"
      0\\\" class=\\\"image-description\\\"> {{description}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.title}} {{item.title}} {{item.totalVisits}} {{item.uniqueUsers}} {{item.likes}} {{item.dislikes}} {{item.numberOfComments}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{unit.name}}
      0\\\">{{unit.userLicenses}}
      {{unit.activeUserLicenses}}
      0\\\" class=\\\"col-md-12 alert alert-danger\\\">
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{account.subscription}}
      {{account.userLicenses}}
      0\\\" style=\\\"color:grey;font-style:italic\\\">{{account.mobileLicenses}}
      {{account.endDate | date: 'mediumDate'}}
      {{item.itemText}}

      {{item.itemText}}
      {{currency}} {{item.priceExVatCurrency}} /

      {{currency}} {{totalFee}}

      {{descNewSubscription}}

      {{currency}} {{licenseFeePerMonth}}
      0\\\" style=\\\"color:grey;font-style:italic\\\">{{currency}} {{mobileLicenseFeePerMonth}}

      {{currency}} {{totalFee}}

      Free

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{errormessage}}
      {{msg.sendTime | date: 'dd.MM.yyyy hh:mm'}} {{msg.senderName}} {{msg.title}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{'COMMON_SELECT_ALL' | translate}}
      {{user.fullName}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      (Kaizen only)

      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      Refresh {{module.startUsing}}

      {{module.desc}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{project.projectNumber}} {{project.name}} {{project.projectCustomerName}} {{project.owner}} {{project.startDate | date: 'mediumDate'}} {{project.endDate | date: 'mediumDate'}}
      {{milestone.name}}

      {{milestone.plannedDate | date: 'mediumDate'}} {{milestone.actualDate | date: 'mediumDate'}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{board.name}}
      {{board.description}}

      {{board.assetName}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{actionTitle}}
      {{message}}
      {{item.name}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{message}}
      {{maxUserLicencesText}}
      {{maxMobileUserLicencesText}}
      {{warning}}

      {{registration.firstName}} {{registration.lastName}}

      0 || mobileLicenses > 0\\\" class=\\\"form-group\\\">

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.firstName}} {{item.lastName}} ({{item.screenName}})
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{admincount}}
      {{businessunitadmincount}}
      {{dataadmincount}}
      {{messagewritercount}}
      {{boarddesignercount}}
      {{improvementadmincount}}
      {{deviationadmincount}}
      {{projectadmincount}}
      {{athreeadmincount}}
      {{strategyadmincount}}
      {{learningadmincount}}
      ({{numberOfUsers}} / {{userLicenses}} ) 0 || mobileLicenses > 0\\\"> - ({{numberOfMobileUsers}} / {{mobileLicenses}} )
      {{numberOfUsers}} (: {{availableBusinessUnitLicenses}})

       
      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{message.text}}
       {{message.replies.length}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{assetName}}

      {{weekNumberTranslation}} {{weekNumber}}

      {{week.startDate | date: 'mediumDate'}} {{week.endDate | date: 'mediumDate'}}

      • {{tag.tag}}
        {{tag.tasks.length}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{category.name}}
      {{category.name}}

      Kamishibai

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.activityPerformer}}
      {{item.occured}}

      : {{item.payLoad.StartTime | date: 'mediumDate' }}

      : {{item.payLoad.EndTime | date: 'mediumDate' }}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.activityPerformer}}
      {{item.occured}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.activityPerformer}}
      {{item.occured}}

      : {{item.activityOwner}}.

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.activityPerformer}}
      {{item.occured}}

      : {{item.parentDescription}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.activityPerformer}}
      {{item.occured}}

      : {{item.parentDescription}}.

      : {{item.description}}.

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.activityPerformer}}
      {{item.occured}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.activityPerformer}}
      {{item.occured}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.activityPerformer}}
      {{item.occured}}

      : {{item.parentDescription}}.

      : {{item.description}}.

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.activityPerformer}}
      {{item.occured}}

      {{item.parentDescription}} .

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.activityPerformer}}
      {{item.occured}}

      {{item.payLoad.fileInfo.name}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.activityPerformer}}
      {{item.occured}}

      : {{item.parentDescription}}.

      : {{item.description}}.

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.activityPerformer}}
      {{item.occured}}

      {{item.parentDescription}}.

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.activityPerformer}}
      {{item.occured}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.activityPerformer}}
      {{item.occured}}

      {{item.title}}

      : {{item.payLoad.BoardDate | date: 'mediumDate' }}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.activityPerformer}}
      {{item.occured}}

      {{item.payLoad.fileInfo.name}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.activityPerformer}}
      {{item.occured}}

      : {{item.parentDescription}}

      : {{item.description}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.activityPerformer}}
      {{item.occured}}

      : {{item.description}}.

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.activityPerformer}}
      {{item.occured}}

      : {{item.title}}.

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.activityPerformer}}
      {{item.occured}}

      : {{item.parentDescription}}

      :

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.activityPerformer}}
      {{item.occured}}

      : {{item.payLoad.StartTime | date: 'mediumDate' }}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \" 0\\\">{{ task.subTaskCompletedCount }} / {{task.subTaskCount}}\";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      1. {{boardData.board.name}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"
      • {{user.displayName}}
        {{user.displayName}}
      • {{user.displayName}}
        {{user.displayName}}
        • {{user.displayName}}
          {{user.displayName}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{col.name}}
      {{task.title}} ... 0\\\" class=\\\"m-l-md\\\"> {{task.attachmentCount}} 0\\\" class=\\\"m-l-md\\\"> {{task.taskcommentCount}}
      {{task.startTime | date: 'mediumDate'}}
      {{task.boardDate | date: 'mediumDate'}}
      0 %
      0 %
      0\\\" class=\\\"text-center\\\">
      0 / {{task.subTaskCount}}
      {{task.responsibleUser}}
      {{rowIndex + 1}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{week.startDate | date: 'mediumDate'}} {{week.endDate | date: 'mediumDate'}}

      {{col.name}}
      {{row.name}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{col.name}}
      {{row.name}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{ task.boardDate | date:\\\"dd\\\" }}
      {{ task.boardDate | date:\\\"MMM\\\" }}
      0\\\">

      {{task.title}}

      {{task.contentDescription}} {{task.contentDescription}}

      0\\\" class=\\\"info\\\"> {{task.commentCount}} 0\\\" class=\\\"info\\\"> {{task.attachmentCount}} 0\\\" ng-click=\\\"openTask(task.id, 'SubTasks');$event.stopPropagation();\\\"> {{task.subTaskCompletedCount}} / {{task.subTaskCount}} 0\\\" uib-tooltip=\\\"{{'COMMON_PARENT_TASK_INFO' | translate}}\\\" tooltip-append-to-body=\\\"true\\\" ng-click=\\\"openTask(task.parentId, 'Info');$event.stopPropagation();\\\">
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{selectedWeek.startDate | date: 'd MMM'}} - {{selectedWeek.endDate | date: 'd MMM'}}
      {{selectedYear}}

      {{day.date | date: 'd'}}

      {{day.date | date: 'EEEE' }}

      {{day.date | date: 'MMM'}}
      {{row.name}}
      {{day.plannedTotal}}
      {{day.plannedTotal}}
      • {{row.name}}

        {{day.day.date | date: 'EEEE' }}, {{ day.day.date | date: 'd'}} {{day.day.date | date: 'MMM'}}
        0\\\" class=\\\"m-t-xl table table-bordered\\\">
        {{registration.registrationDate | date: 'd'}} {{registration.registrationDate | date: 'MMM'}} {{registration.registrationDate | date: 'hh'}}:{{registration.registrationDate | date: 'mm'}} {{registration.value}}
      {{day.producedTotal}}
      • {{row.name}} {{row.activity.name}}

        {{day.day.date | date: 'EEEE' }}, {{ day.day.date | date: 'd'}} {{day.day.date | date: 'MMM'}}
        0\\\" class=\\\"m-t-xl table table-bordered\\\">
        {{registration.registrationDate | date: 'd'}} {{registration.registrationDate | date: 'MMM'}} {{registration.registrationDate | date: 'hh'}}:{{registration.registrationDate | date: 'mm'}} {{registration.value}}
      {{row.plannedTotal}}
      {{row.producedTotal}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{column.title}}
      0\\\" class=\\\"task-count pull-left\\\"> {{column.tasks.length}}
      +

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{task.description}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{selectedWeek.number}} - {{selectedMonth.fullName}} {{selectedYear}}

      {{selectedYear}}

      {{month.name}}

      {{selectedMonth.fullName}}

      {{week.startDate | date: 'd MMM'}}
      {{week.number}}
      {{week.endDate | date: 'd MMM'}}
      {{selectedWeek.startDate | date: 'd MMM'}} - {{selectedWeek.endDate | date: 'd MMM'}}

      {{day.date | date: 'd'}}

      {{day.date | date: 'EEEE' }}

      {{day.date | date: 'MMM'}}
      {{row.name}}
      {{row.name}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{month.name}}
      {{category.name}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      :

      {{accessInfo.asset.name}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{title}}

      {{text}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{user.displayName}}


      {{user.fullName}}

      {{user.fullName}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      • {{customer.name}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      Action Count Last Modified
      {{activity.action}} {{activity.count}} {{activity.occured}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{suggestion.status}} {{suggestion.suggestedBy}} {{suggestion.customer}} {{suggestion.title}} {{suggestion.suggestionDate | date:'dd.MM.yyyy HH:mm'}} {{suggestion.lastModified | date:'dd.MM.yyyy HH:mm'}}

      {{ comment.commentedBy }}

      {{comment.comment}}

      {{comment.commentDate | date: 'mediumDate'}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{usersOnline}}

      ({{customersOnline.length}})
      {{item.name}}
      • {{client.userName}}
      Unique users {{usersOnline}}
      Total connections {{totalConnections}}
      Teams connections {{totalTeamsUsersOnline}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      0\\\" class=\\\"ibox float-e-margins\\\">
      {{activity.name}} {{activity.lastModified | date: 'mediumDate'}} 0\\\">
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      Last 30 d
      Notifications
      0
      {{total}}
      0
      {{emailCount}}
      0
      {{mobileCount}}
      Action Email Push
      {{activity.action}} {{activity.emailCount}} {{activity.mobileCount}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{activity.occured}} {{activity.activityPerformer}} {{activity.activityOwner}}

      \\\"{{activity.description}}\\\"

      {{activity.parentDescription}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{activity.occured}} {{activity.activityPerformer}}

      {{activity.description}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{activity.occured}} {{activity.activityPerformer}}

      {{activity.description}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{activity.occured}} {{activity.activityPerformer}}
      \\\"{{activity.payLoad.ParentDescription}}\\\"

      {{activity.description}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{activity.occured}} {{activity.activityPerformer}} : {{activity.description}}

      {{activity.parentDescription}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{activity.occured}} {{activity.activityPerformer}}

      {{activity.description}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{activity.occured}} {{activity.activityPerformer}}

      {{activity.parentDescription}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{activity.occured}} {{activity.activityPerformer}}

      {{activity.description}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{activity.occured}} {{activity.activityPerformer}}

      {{activity.description}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{activity.occured}} {{activity.activityPerformer}}
      ({{activity.parentDescription}})

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{activity.occured}} {{activity.activityPerformer}}

      {{activity.payLoad.FileInfo.Name}}

      {{activity.description}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{activity.occured}} {{activity.activityPerformer}}

      {{activity.payLoad.FileInfo.Name}}

      {{activity.description}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{activity.occured}} {{activity.activityPerformer}} {{activity.activityOwner}}


      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{activity.occured}} {{activity.activityPerformer}}

      {{activity.description}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{activity.occured}} {{activity.activityPerformer}}

      {{activity.description}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{activity.occured}} {{activity.activityPerformer}}

      {{reason.title}}

      {{activity.description}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{activity.occured}} {{activity.activityPerformer}}

      : {{activity.payLoad.newResponsible}}

      {{activity.description}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{activity.occured}} {{activity.activityPerformer}}

      : : : : :

      {{activity.description}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{activity.occured}} {{activity.activityPerformer}}

      : : : : :

      {{activity.description}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{activity.occured}} {{activity.activityPerformer}}

      {{activity.description}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{activity.occured}} {{activity.activityPerformer}}

      {{activity.description}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{activity.occured}} {{activity.activityPerformer}}

      : {{activity.payLoad.newDueDate | date: 'mediumDate'}}


      {{activity.description}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{activity.occured}} {{activity.activityPerformer}}

      {{activity.payLoad.fileInfo.name}}

      {{activity.description}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{activity.occured}} {{activity.activityPerformer}}

      {{activity.payLoad.fileInfo.name}}

      {{activity.description}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{activity.occured}} {{activity.activityPerformer}}

      : {{activity.payLoad.categoryName}}


      {{activity.description}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{activity.occured}} {{activity.activityPerformer}} {{activity.activityOwner}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{activity.occured}} {{activity.activityPerformer}}

      {{activity.description}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{activity.occured}} {{activity.activityPerformer}}

      : {{activity.payLoad.NewDueDate | date: 'mediumDate' }}

      {{activity.description}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{activity.occured}} {{activity.activityPerformer}} {{activity.activityOwner}}

      {{activity.description}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{activity.occured}} {{activity.activityPerformer}} {{activity.activityOwner}}

      {{activity.description}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{activity.occured}} {{activity.activityPerformer}}

      : : : : : :

      {{activity.description}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{activity.occured}} {{activity.activityPerformer}}

      : {{activity.payLoad.newResponsible}}

      {{activity.description}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{activity.occured}} {{activity.activityPerformer}}

      : : : : : :

      {{activity.description}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{activity.occured}} {{activity.activityPerformer}}

      {{activity.description}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{activity.occured}} {{activity.activityPerformer}}

      {{activity.description}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{activity.occured}} {{activity.activityPerformer}}
      ({{activity.parentDescription}})

      {{activity.description}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{activity.occured}} {{activity.activityPerformer}}
      ({{activity.parentDescription}})

      {{activity.payLoad.fileInfo.name}}

      {{activity.description}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{activity.occured}} {{activity.activityPerformer}}
      ({{activity.parentDescription}})

      {{activity.payLoad.fileInfo.name}}

      {{activity.description}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{activity.occured}} {{activity.activityPerformer}}
      ({{activity.parentDescription}})

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{activity.occured}} {{activity.activityPerformer}}
      ({{activity.parentDescription}})

      {{activity.description}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{activity.occured}} {{activity.activityPerformer}} {{activity.activityOwner}}
      ({{activity.parentDescription}})

      {{activity.description}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{activity.occured}} {{activity.activityPerformer}}
      ({{activity.parentDescription}})

      {{activity.description}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{activity.occured}} {{activity.activityPerformer}}
      ({{activity.parentDescription}})

      {{activity.description}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{activity.occured}} {{activity.activityPerformer}}
      ({{activity.parentDescription}})

      {{activity.description}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{activity.occured}} {{activity.activityPerformer}}
      ({{activity.parentDescription}})

      {{activity.description}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{activity.occured}} {{activity.activityPerformer}}
      {{activity.parentDescription}}

      {{activity.description}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{activity.occured}} {{activity.activityPerformer}}
      ({{activity.parentDescription}})

      {{activity.description}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{activity.occured}} {{activity.activityPerformer}}
      ({{activity.parentDescription}})

      {{activity.description}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{activity.occured}} {{activity.activityPerformer}}
      ({{activity.parentDescription}})

      {{activity.description}}

      {{activity.occured}} {{activity.activityPerformer}}
      ({{activity.parentDescription}})

      {{activity.description}}

      {{activity.occured}} {{activity.activityPerformer}}
      ({{activity.parentDescription}})

      {{activity.description}}

      {{activity.occured}} {{activity.activityPerformer}}
      ({{activity.parentDescription}})

      {{activity.description}}

      {{activity.occured}} {{activity.activityPerformer}}
      ({{activity.parentDescription}})

      {{activity.description}}

      {{activity.occured}} {{activity.activityPerformer}}
      ({{activity.parentDescription}})

      {{activity.description}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{date | date: 'MMM d'}}
      {{date | date: 'MMM d'}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{col.name}}
      {{col.subHeader}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"
      A3
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{task.title}}
      {{tag.tag}}
      {{task.responsibleUser}}
      {{task.boardDate | date: 'mediumDate'}}
      {{task.title}}
      {{tag.tag}}
      {{task.responsibleUser}}
      {{task.boardDate | date: 'mediumDate'}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{identificationName}} {{identificationName}}
      =31\\\">
      =30\\\">
      =29\\\">
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{identificationName}} {{identificationName}}
      =29\\\">
      =30\\\">
      =31\\\">
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{identificationName}} {{identificationName}}
      =29\\\">
      =30\\\">
      =31\\\">
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{identificationName}} {{identificationName}}
      =31\\\">
      =30\\\">
      =29\\\">
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{identificationName}} {{identificationName}}
      =29\\\">
      =30\\\">
      =31\\\">
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{identificationName}} {{identificationName}}
      =29\\\">
      =30\\\">
      =31\\\">
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{identificationName}} {{identificationName}}
      =29\\\">
      =30\\\">
      =31\\\">
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{identificationName}} {{identificationName}}
      =29\\\">
      =30\\\">
      =31\\\">
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{identificationName}} {{identificationName}}
      =31\\\">
      =30\\\">
      =29\\\">
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{identificationName}} {{identificationName}}
      =29\\\">
      =30\\\">
      =31\\\">
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      • 0\\\" class=\\\"divider\\\">
      0\\\" class=\\\"table pull-right\\\" style=\\\"width:300px;margin-bottom:0\\\">
      {{column.title}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{title}}

      • Option1
      • Option2
      Content here
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{title}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{column.title}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{title}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{identificationName}} {{identificationName}}
      =29\\\">
      =30\\\">
      =31\\\">
      \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{$ctrl.selectedMonth}} {{$ctrl.selectedYear}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      0\\\" style=\\\"margin:6px;display:inline-block\\\">
      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{currentValue.value}}
      {{valueChange.change}}

      {{dataSource.valueElement.unit}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{title}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{a3.lastModified | date: 'mediumDate'}} {{a3.lastModifiedByUser}}
      0\\\">{{a3.tasksCompleted}}
      {{a3.tasksCompleted}}
      0\\\">{{a3.tasksInComplete}}
      {{a3.tasksInComplete}}
      0\\\">{{a3.tasksOpen}}
      {{a3.tasksOpen}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{project.projectNumber}}
      +{{project.nextMilestone.days}} -{{project.nextMilestone.days}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      Pareto

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.title}}
      {{item.title}}
      {{item.description}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{model.board.name}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"
        • {{message}}
      •  
         
        {{cons.title}}
         
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{dataSource.period}}
      {{dataSource.valueElement.unit}}
      {{item.user.displayName}}
      {{item.user.firstName}} {{item.user.lastName}}
      {{item.user.firstName}} {{item.user.lastName}}
      • {{user.displayName}}
        {{user.firstName}} {{user.lastName}}
        {{user.firstName}} {{user.lastName}}
      {{ (item.value ? item.value.length : 0) }} / 255
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"

      0

      {{dataSource.valueElement.unit}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{dataSource.valueElement.unit}}
      • {{dataSource.valueElement.unit}}
      • {{ (item.value ? item.value.length : 0) }} / 255
      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      0

      {{dataSource.valueElement.unit}}

      :{{targetDescription}} {{dataSource.valueElement.unit}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      0\\\" class=\\\"m-md\\\" translate=\\\"COMMON_OR\\\">
      0\\\" style=\\\"margin:6px;display:inline-block\\\">
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{value | date: 'mediumDate'}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{dateModel.date | date: 'mediumDate'}}
      {{dateModel.date | date: 'mediumDate'}} diffToPlannedDate\\\" class=\\\"date-before\\\">{{dateModel.date | date: 'mediumDate'}} diffToPlannedDate)\\\">{{dateModel.date | date: 'mediumDate'}}
      {{dateModel.date | date: 'mediumDate'}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{value | date: 'mediumDate'}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{unit}} {{number | number: fractionSize}} {{unit}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{unit}} {{numberCellAggregateValue | number: fractionSize}} {{unit}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{unit}} {{number| number: fractionSize}} {{unit}}
      {{unit}} {{number | number: fractionSizer}} {{unit}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      • {{user.displayName}}
        {{user.firstName}} {{user.lastName}}
        {{user.firstName}} {{user.lastName}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \"
      • {{user.displayName}}
        {{user.firstName}} {{user.lastName}}
        {{user.firstName}} {{user.lastName}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{title}} ... 0\\\" class=\\\"m-l-sm\\\" ng-click=\\\"openTask(model.task.id,'Attachments'); $event.stopPropagation();\\\"> {{attachmentCount}} 0\\\" class=\\\"m-l-sm\\\" ng-click=\\\"openTask(model.task.id,'Comments'); $event.stopPropagation();\\\"> {{commentCount}}
      {{title}} ... 0\\\" class=\\\"m-l-md\\\"> {{attachmentCount}} 0\\\" class=\\\"m-l-md\\\"> {{commentCount}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{date | date: 'mediumDate'}}
      {{date | date: 'mediumDate'}} diffToPlannedDate\\\" class=\\\"date-before\\\">{{date | date: 'mediumDate'}} diffToPlannedDate)\\\">{{date | date: 'mediumDate'}}
      {{date | date: 'mediumDate'}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      0\\\" class=\\\"text-center\\\"> {{subTaskCompletedCount}} / {{subTaskCount}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{text}}
      {{text}}
      • {{postIt.title}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{col.settings.width}}px
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{value | date: 'mediumDate'}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"
      • {{postIt.title}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{unit}} {{number | number: fractionSize}} {{unit}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{unit}} {{ numberCellAggregateValue | number: fractionSize}} {{unit}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{unit}} {{number | number: fractionSize}} {{unit}}
      {{unit}} {{number | number: fractionSize}} {{unit}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{user.displayName}}
      • {{user.displayName}}
        {{user.firstName}} {{user.lastName}}
        {{user.firstName}} {{user.lastName}}
      {{user.displayName}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{number}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{text}}
      {{text}}
      • {{postIt.title}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{title}}
      {{col.name}}
      {{col.name}}
      {{col.name}}
      {{col.name}}
      {{col.name}}
      {{col.name}}
      {{col.name}}
      {{col.name}}
      {{col.name}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{customer.name}}
      • {{customer.name}}
        {{customer.name}}
      {{customer.name}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{value | date: 'mediumDate'}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{date.estimatedEndDate | date: 'mediumDate'}}
      {{date.estimatedEndDate | date: 'mediumDate'}}
      {{date.estimatedEndDate | date: 'mediumDate'}}
      0\\\" uib-tooltip=\\\"{{'PROJECT_ESTIMATED_DATE' |translate}}: {{date.estimatedEndDate | date: 'mediumDate'}} (+{{date.diffPlannedVSActual}} {{'COMMON_DAYS' |translate}})\\\"> {{date.endDate | date: 'mediumDate'}} {{date.endDate | date: 'mediumDate'}} {{date.endDate | date: 'mediumDate'}} {{date.endDate | date: 'mediumDate'}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{unit}} {{number| number: fractionSize}} {{unit}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{unit}} {{numberCellAggregateValue| number: fractionSize}} {{unit}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{unit}} {{number | number: fractionSize}} {{unit}}
      {{unit}} {{number | number: fractionSize}} {{unit}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{user.displayName}}
      • {{user.displayName}}
        {{user.firstName}} {{user.lastName}}
        {{user.firstName}} {{user.lastName}}
      {{user.displayName}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{user.displayName}}
      • {{user.displayName}}
        {{user.firstName}} {{user.lastName}}
        {{user.firstName}} {{user.lastName}}
      {{user.displayName}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{name}}
      {{name}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{date.estimatedStartDate | date: 'mediumDate'}}
      {{date.estimatedStartDate | date: 'mediumDate'}}
      {{date.estimatedStartDate | date: 'mediumDate'}}
      0\\\" uib-tooltip=\\\"{{'PROJECT_ESTIMATED_DATE' |translate}}: {{date.estimatedStartDate | date: 'mediumDate'}} (+{{date.diffPlannedVSActual}} {{'COMMON_DAYS' |translate}})\\\"> {{date.startDate | date: 'mediumDate'}} {{date.startDate | date: 'mediumDate'}} {{date.startDate | date: 'mediumDate'}} {{date.startDate | date: 'mediumDate'}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{text}}
      • {{postIt.title}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{comment}}

      {{selectedSmiley.commentDate | date: 'mediumDate' }}
      • {{selectedSmiley.commentDate | date: 'mediumDate'}} {{selectedSmiley.lastmodifiedBy}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{title}}
      {{identificationName}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"
      ({{selectedBoard.name}})
      0\\\" style=\\\"margin:6px;display:inline-block\\\">
      \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \"
      0\\\" style=\\\"margin:6px;display:inline-block\\\">
      \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \"

      0

      {{item.customer.name}}
      • {{client}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{weekNumber}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      0\\\" style=\\\"margin:6px;display:inline-block\\\">
      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{$ctrl.titleEdit ? $ctrl.titleEdit : ' '}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{currentDashboard.title}}

      {{currentPage.title}}

      {{currentDashboard.title}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      Component: {{component}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{target.operator.dbCode}} {{target.targetValue}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{fb.title}}

      {{fb.lastModified | date: 'dd.MM.yyyy'}} {{fb.lastModifiedByUser}}

      {{ comment.commentedBy }}

      {{comment.commentDate | date: 'mediumDate'}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{progress}} %
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{activity.customer}}
      {{activity.occured}} {{activity.activityPerformerUserId}} {{activity.action}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      • {{tag.tag}}
        {{tag.dataSources.length}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.name}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.name}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{area.name}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{asset.name}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.name}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.label}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{unit.name}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{consequence.title}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{element.label}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.name}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"
      • {{$index+1}}. {{step.title}}
      ()
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.label}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.title}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.title}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.title}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.name}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.label}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{project.name}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{goal.name}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{unit.name}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{user.fullName}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"

      1.

      2.

      {{dataSource.targetDataSource.title}} 0\\\" class=\\\"m-l fa fa-filter\\\" uib-tooltip=\\\"{{ 'COMMON_FILTER' | translate }}\\\" tooltip-placement=\\\"bottom\\\">

      3.

      :
      {{dataSource.title}}
      :
      {{dataSource.targetDataSource.title}}

      {{dataSource.valueElement.unit}}
      {{yellowDescription}}
      {{dataSource.valueElement.unit}}

      2. :

      2. :

      0\\\" class=\\\"table\\\" style=\\\"width:100%\\\">
      {{target.validFrom | date: 'mediumDate'}} {{target.greenOperator}} {{target.greenValue}}
      {{target.yellowDescription}}
      {{target.redOperator}} {{target.redValue}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"

      - {{selectedDataSource.title}}

      • {{$index+1}}. {{step.title}}

      :

      {{selectedDataSource.title}}

      # {{dataSources.list.length}}
      {{filtered.length}} / {{dataSources.list.length}}

      DigiLEAN

      {{datasource.title}}
      {{datasource.description}}

      {{datasource.valueElement.unit}}



      {{datasource.owner}}
      0\\\" class=\\\"alert alert-warning bold\\\">
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{dataSource.title}}

      Ok
      0\\\"> 0\\\"> 0\\\">
      Id Date Value
      Added values ({{result.results.newValues.length}})
      {{value.id}} {{value.valueDate | date: 'shortDate'}} {{value.value}}
      Changed values ({{result.results.changedValues.length}})
      {{value.id}} {{value.valueDate | date: 'shortDate'}} {{value.value}}
      Deleted values ({{result.results.deletedValues.length}})
      {{value.id}} {{value.valueDate | date: 'shortDate'}} {{value.value}}
      Validation error

      {{result.statusMessage}}

      • {{error.message}}
      Server error

      {{result.statusMessage}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{value.value}}

      {{value.valueDate | date: 'mediumDate'}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \" {{unitcode}} \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.activityPerformer}}
      {{item.occured}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.activityPerformer}}
      {{item.occured}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.activityPerformer}}
      {{item.occured}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.activityPerformer}}
      {{item.occured}}

      : {{ item.payLoad.NewAreaName}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.activityPerformer}}
      {{item.occured}}

      {{item.payLoad.FileInfo.Name}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.activityPerformer}}
      {{item.occured}}

      {{item.payLoad.FileInfo.Name}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.activityPerformer}}
      {{item.occured}}

      :

      {{category.ProblemCategory.title}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.activityPerformer}}
      {{item.occured}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.activityPerformer}}
      {{item.occured}}

      :

      {{consequence.LossType.Title}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.activityPerformer}}
      {{item.occured}}

      {{item.payLoad.DeviationTypeField.Label}} : {{item.description}} {{item.payLoad.Value}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.activityPerformer}}
      {{item.occured}}

      : {{ item.payLoad.NewDate | date: 'mediumDate'}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.activityPerformer}}
      {{item.occured}}

      {{item.payLoad.NewEvaluationText}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.activityPerformer}}
      {{item.occured}}

      : {{ item.payLoad.OldIncidentDate | date: 'mediumDate'}}

      : {{ item.payLoad.NewIncidentDate | date: 'mediumDate'}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.activityPerformer}}
      {{item.occured}}

      {{item.activityOwner}}

      : {{item.description}}.

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.activityPerformer}}
      {{item.occured}}

      :

      {{reason.title}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.activityPerformer}}
      {{item.occured}}

      : {{ item.payLoad.OldProject}}

      : {{ item.payLoad.NewProject}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.activityPerformer}}
      {{item.occured}}

      : {{ item.payLoad.OldResponsible}}

      : {{ item.payLoad.NewResponsible}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.activityPerformer}}
      {{item.occured}}

      : {{ item.payLoad.oldSeverity | deviationSeverityTranslation }}.

      : {{ item.payLoad.newSeverity | deviationSeverityTranslation }}.

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.activityPerformer}}
      {{item.occured}}
      : : : :
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.activityPerformer}}
      {{item.occured}}

      :

      :

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.activityPerformer}}
      {{item.occured}}

      : {{ item.payLoad.OldText}}

      : {{ item.payLoad.NewText}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.activityPerformer}}
      {{item.occured}}

      {{item.description}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{task.title}}
      {{task.title}}
      0\\\" class=\\\"m-r-sm text-muted\\\" ng-click=\\\"openTask('Attachments',task)\\\"> {{task.attachmentCount}} 0\\\" class=\\\"m-t-sm text-muted\\\" ng-click=\\\"openTask('Comments',task)\\\"> {{task.commentCount}}
      0\\\">
      {{task.board.name}}
      {{task.user.fullName}}
      • {{user.displayName}}
        {{user.firstName}} {{user.lastName}}
        {{user.firstName}} {{user.lastName}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      *
      0\\\" ng-repeat=\\\"subcategory in category.children\\\" style=\\\"margin-left:30px\\\">
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{totalMatchingRecords}} / {{totalValues}}
      {{column.title}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      - {{settings.title}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      - {{settings.title}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{smile}} %

      {{evaluation.smile}}/{{evaluation.total}}

      {{meh}} %

      {{evaluation.meh}}/{{evaluation.total}}

      {{frown}} %

      {{evaluation.frown}}/{{evaluation.total}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      -
      - {{settings.title}}
      {{rowdata.count}} {{rowdata.category}} {{rowdata.cause}} {{rowdata.lossType}} 0\\\">{{rowdata.amount}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{deviation.lastModified | date: 'dd.MM.yyyy'}} {{deviation.lastModifiedByUser}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{$ctrl.labelText}}

      • {{item.title}}

        0\\\">
        {{ item.incidentDate | date: 'mediumDate'}}
        {{category.problemCategoryTitle}}
        0\\\">
        {{consequence.lossTypeTitle}} : {{consequence.amount}} {{consequence.unit}}
        0 || item.evaluationStatus !== null\\\" class=\\\"agile-detail row no-padding\\\" style=\\\"border-top:1px solid var(--digilean-quaternary-text);margin-left:-2px;margin-right:-2px\\\">
        {{ item.dueDate | date: 'mediumDate' }} 0\\\" class=\\\"p-w-xs\\\"> {{item.actionListCount}}
        {{item.owner}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{new.filteredList.length}} / {{new.list.length}}

      • {{item.title}}

        0\\\">
        {{ item.incidentDate | date: 'mediumDate'}}
        {{category.problemCategory.title}}
        0\\\">
        {{consequence.lossType.title}} : {{consequence.amount}} {{consequence.unit}}
        0\\\" class=\\\"agile-detail row no-padding\\\" style=\\\"border-top:1px solid var(--digilean-quaternary-text);margin-left:-2px;margin-right:-2px\\\">
        {{ item.dueDate | date: 'mediumDate' }} 0\\\" class=\\\"p-w-xs\\\"> {{item.actionListCount}}
        {{item.owner}}

      {{inprogress.filteredList.length}} / {{inprogress.list.length}}

      • {{item.title}}

        0\\\">
        {{category.problemCategory.title}} 0\\\" class=\\\"pull-right btn-xs\\\">
        0\\\">
        {{consequence.lossType.title}} : {{consequence.amount}} {{consequence.unit}}
        0\\\" class=\\\"agile-detail row no-padding\\\" style=\\\"border-top:1px solid var(--digilean-quaternary-text);margin-left:-2px;margin-right:-2px\\\">
        {{ item.dueDate | date: 'mediumDate' }} 0\\\" class=\\\"p-w-xs\\\"> {{item.actionListCount}}
        {{item.owner}}

      {{implemented.filteredList.length}} / {{implemented.list.length}}
      • {{item.title}}

      • {{item.title}}

        0\\\">
        {{category.problemCategory.title}} 0\\\" class=\\\"pull-right btn-xs\\\">
        0\\\">
        {{consequence.lossType.title}} : {{consequence.amount}} {{consequence.unit}}
        0\\\" class=\\\"agile-detail row no-padding\\\" style=\\\"border-top:1px solid var(--digilean-quaternary-text);margin-left:-2px;margin-right:-2px\\\">
        {{item.owner}} 0\\\" class=\\\"p-w-xs\\\"> {{item.actionListCount}}

      {{rejected.filteredList.length}} / {{rejected.list.length}}
      • {{item.title}}

      • {{item.title}}

        0\\\">
        {{category.problemCategory.title}} 0\\\" class=\\\"pull-right btn-xs\\\">
        0\\\">
        {{consequence.lossType.title}} : {{consequence.amount}} {{consequence.unit}}
        0\\\" class=\\\"agile-detail row no-padding\\\" style=\\\"border-top:1px solid var(--digilean-quaternary-text);margin-left:-2px;margin-right:-2px\\\">
        {{item.owner}} 0\\\" class=\\\"p-w-xs\\\"> {{item.actionListCount}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{totalItems}} / {{totalNumberOfDeviations}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      -
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{fileClone.fileSizeInKb}} kB
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      1. {{currentDashboard.title}}

      {{currentDashboard.title}}

      • . {{layoutStatus.maxHeight}}. '{{error.title}}' {{error.height}} .

      • \\\"{{customBackground}}\\\"

      • {{opacity}}

      {{currentDashboard.title}}

      1 || isAdminMode)\\\">
      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      Kundemonitorering

      Oversikt over kundeaktivitet og kundehenvendelser
      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{board.name}}

      {{board.asset.name}}
      {{board.project.displayName}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{board.name}}

      {{board.description}}
      {{board.asset.name}}
      {{board.project.displayName}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{board.name}}

      {{board.description}}
      {{board.asset.name}}
      {{board.project.displayName}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{board.name}}

      {{board.description}}
      {{board.asset.name}}
      {{board.project.displayName}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{board.name}}

      {{board.description}}
      {{board.asset.name}}
      {{board.project.displayName}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{board.name}}

      {{board.description}}
      {{board.asset.name}}
      {{board.project.displayName}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      x={{widgetOptions.x}} y={{widgetOptions.y}} w={{widgetOptions.w}} h={{widgetOptions.h}} id={{widgetOptions.id}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      System

      {{folder.name}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"


      {{selectedTemplate.name}}

      {{selectedTemplate.description}}
      {{message}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"

      Hi {{$ctrl.userName}}, how can we help?

      {{resultEl}}
      {{article.title}} ({{article.similarityPercentage}}%)
      {{footerEl}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{selectedWeek.startDate | date: 'd MMM'}} - {{selectedWeek.endDate | date: 'd MMM'}}
      {{selectedYear}}

      {{day.date | date: 'd'}}

      {{day.date | date: 'EEEE' }}

      {{day.date | date: 'MMM'}}
      Totalt
      {{row.project.displayName}}
      0\\\"> {{row.activity.name}}
      0}\\\" uib-dropdown dropdown-append-to-body>
      0\\\">{{day.hoursTotal}}
      • {{row.project.displayName}}

        {{day.day.date | date: 'EEEE' }}, {{ day.day.date | date: 'd'}} {{day.day.date | date: 'MMM'}}
        Timer *
        Beskrivelse
        Fakturerbart
        Beskrivelse Timer Fakturerbart
        {{registration.description}} {{registration.hours}} {{registration.isInvoiceable}} Slett
      0\\\" class=\\\"small\\\">{{row.invoiceHours}} / {{row.hoursTotal}}
      0\\\"> {{day.hoursTotal}} 0\\\" class=\\\"small\\\">{{table.invoiceHours}} / {{table.hoursTotal}}

      Feriedager i år

      {{totalHolidayDays}}

      Flexitid hittil i år

      {{flexitimeYTDSum}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"

      Fakturering timeoversikt

      {{option.timeframe}} 0\\\">
      Prosjekt Kunde Timer Fakturerbar PDF
      {{project.projectName}} {{project.customer}} {{project.hours}} {{project.invoiceHours}}
      Dato Aktivitet Ansvarlig Beskrivelse Timer Fakturerbar Godkjent
      {{ value.valueDate | date: 'mediumDate' }} {{value.activity}} {{value.responsible}} {{value.description}} {{value.value}} {{value.value}} {{value.dimension4}}
      {{sumHours}} {{invoiceHours}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      1. Fakturering timeoversikt
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{item.timeElapsed}}
      {{item.suggestedBy}}

      {{item.title}}

      0\\\">
      {{item.comments.length}} {{item.likes.length}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.activityPerformer}}
      {{item.occured}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.activityPerformer}}
      {{item.occured}}

      : {{ item.payLoad.OldAsset}}

      : {{ item.payLoad.NewAsset}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.activityPerformer}}
      {{item.occured}}

      : {{item.payLoad.categoryName}}.

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.activityPerformer}}
      {{item.occured}}

      {{item.payLoad.SuggestedBy}}

      : .

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.activityPerformer}}
      {{item.occured}}

      {{item.payLoad.fileInfo.name}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.activityPerformer}}
      {{item.occured}}

      : {{ item.payLoad.NewDueDate | date: 'mediumDate'}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.activityPerformer}}
      {{item.occured}}

      {{item.payLoad.NewEvaluationText}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.activityPerformer}}
      {{item.occured}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.activityPerformer}}
      {{item.occured}}

      {{item.payLoad.SuggestedBy}}

      : {{item.description}}.

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.activityPerformer}}
      {{item.occured}}

      {{item.payLoad.fileInfo.name}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.activityPerformer}}
      {{item.occured}}
      -1\\\" class=\\\"col-xs-7 content\\\">

      : {{ item.payLoad.OldPriority | improvementPriorityTranslation }}.

      : {{ item.payLoad.NewPriority | improvementPriorityTranslation }}.

      -1\\\" class=\\\"col-xs-7 content\\\">

      : {{ item.payLoad.oldPriority | improvementPriorityTranslation }}.

      : {{ item.payLoad.newPriority | improvementPriorityTranslation }}.

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.activityPerformer}}
      {{item.occured}}

      : {{ item.payLoad.OldProject}}

      : {{ item.payLoad.NewProject}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.activityPerformer}}
      {{item.occured}}

      : {{ item.payLoad.OldResponsible}}

      : {{ item.payLoad.NewResponsible}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.activityPerformer}}
      {{item.occured}}

      {{item.payLoad.NewEstimatedCostOfInvestment}}

      {{item.payLoad.NewCostOfInvestment}}

      {{item.payLoad.NewEstimatedGainOfInvestment}}

      {{item.payLoad.NewGainOfInvestment}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.activityPerformer}}
      {{item.occured}}

      : : : : : : : : : : : :

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.activityPerformer}}
      {{item.occured}}

      :

      :

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.activityPerformer}}
      {{item.occured}}

      {{item.payLoad.NewEstimatedCostOfInvestmentHours}}

      {{item.payLoad.NewCostOfInvestmentHours}}

      {{item.payLoad.NewEstimatedGainOfInvestmentHours}}

      {{item.payLoad.NewGainOfInvestmentHours}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.activityPerformer}}
      {{item.occured}}

      : {{ item.payLoad.OldText}}

      : {{ item.payLoad.NewText}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.activityPerformer}}
      {{item.occured}}

      {{item.activityOwner}}

      : {{item.description}}.

      \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{task.title}}
      {{task.title}}
      0\\\" class=\\\"m-r-sm text-muted\\\" ng-click=\\\"openTask('Attachments',task)\\\"> {{task.attachmentCount}} 0\\\" class=\\\"m-t-sm text-muted\\\" ng-click=\\\"openTask('Comments',task)\\\"> {{task.commentCount}}
      0\\\">
      {{task.user.fullName}}
      • {{user.displayName}}
        {{user.firstName}} {{user.lastName}}
        {{user.firstName}} {{user.lastName}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{totalMatchingRecords}} / {{totalValues}}
      {{column.title}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{user.fullName}}
      ( {{improvementOverdueCount}} | {{improvementTodayCount}} | {{improvementFutureCount}} )
      • {{task.boardDate | date: 'mediumDate'}} {{task.title}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      -
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{$ctrl.labelText}}

      • {{ item.dueDate | date:\\\"dd\\\" }}
        {{ item.dueDate | date:\\\"MMM\\\" }}
        0\\\">

        {{item.title}}

        {{item.assetName}}

        {{item.responsibleDisplayName}} 0\\\" class=\\\"info\\\"> {{item.actionListCount}} 0\\\" class=\\\"info\\\"> {{item.commentCount}} 0\\\" class=\\\"info\\\"> {{item.attachmentCount}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{totalItems}} / {{totalNumberOfImprovements}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \"
      1. ({{new.filteredList.length}}) {{new.filteredList.length}} / {{new.list.length}}
      • {{ suggestion.title }}
        {{ suggestion.suggestedBy}} {{suggestion.suggestionDate | date: 'mediumDate'}}
      2.

      ({{suggestionStatus2.filteredList.length}}) {{suggestionStatus2.filteredList.length}} / {{suggestionStatus2.list.length}}

      • {{ suggestion2.title }}

      ({{suggestionStatus1.filteredList.length}}) {{suggestionStatus1.filteredList.length}} / {{suggestionStatus1.list.length}}

      • {{ suggestion1.title }}

      ({{suggestionStatus4.filteredList.length}}) {{suggestionStatus4.filteredList.length}} / {{suggestionStatus4.list.length}}

      • {{ suggestion4.title }}

      ({{suggestionStatus3.filteredList.length}}) {{suggestionStatus3.filteredList.length}} / {{suggestionStatus3.list.length}}

      • {{ suggestion3.title }}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"
      • {{result.implementedCount}} 0}\\\"> {{$index + 1}} {{result.assetName}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{suggestion.title}}
      {{suggestion.suggestionDate | date: 'mediumDate'}}

      {{suggestion.assetName}}

      {{suggestion.responsibleDisplayName}}

      {{ suggestion.dueDate | date: 'mediumDate' }}

      {{suggestion.category}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{selectedFilter}}
      • {{asset.name}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{noNew}}

      {{noPlanned}}

      {{noInProgress}}

      {{noImplemented}}

      {{noEvaluated}}

      {{noArchived}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"

      ({{total}})

      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{message}}
      {{errormessage}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      1. Monitoring
      2. {{$ctrl.data.name}}

      {{$ctrl.data.name}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{$ctrl.company.name}}

      {{connector.name}} {{connector.jobsCount}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      1. Monitoring
      2. {{$ctrl.connectorName}}
      3. {{$ctrl.job.name}}

      {{$ctrl.job.name}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"
      1. {{selectedPage.title}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{notification.performerUser}}
      {{notification.title}}
      {{notification.action}}

      {{notification.payLoadText}}

      {{notification.timeElapsed}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{deviation.title}}
      0\\\">
      {{ deviation.createdDate | date: 'mediumDate'}}
      {{category.problemCategory.title}}
      0\\\">
      {{consequence.lossType.title}} : {{consequence.amount}} {{consequence.unit}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{suggestion.title}}

      {{ suggestion.dueDate | date:\\\"dd\\\" }}
      {{ suggestion.dueDate | date:\\\"MMM\\\" }}
      0\\\">
      {{category.problemCategory.title}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{suggestion.title}}
      {{ suggestion.dueDate | date:\\\"dd\\\" }}
      {{ suggestion.dueDate | date:\\\"MMM\\\" }}
      0\\\">
      {{suggestion.dueDate | date: 'mediumDate'}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{info.title}}

      {{activity.name}} {{activity.lastModified | date: 'mediumDate'}} 0\\\">
      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{deviation.title}}
      0\\\">
      {{ deviation.createdDate | date: 'mediumDate'}}
      {{category.problemCategory.title}}
      0\\\">
      {{consequence.lossType.title}} : {{consequence.amount}} {{consequence.unit}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{page.title}}

      {{learningMaterial.title}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{projectName}}

      {{message}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{task.title}}
      {{task.boardDate | date: 'mediumDate'}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{deviation.title}}

      0\\\">
      {{ deviation.createdDate | date: 'mediumDate'}}
      {{category.problemCategory.title}}
      0\\\">
      {{consequence.lossType.title}} : {{consequence.amount}} {{consequence.unit}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{suggestion.title}}

      {{ suggestion.dueDate | date:\\\"dd\\\" }}
      {{ suggestion.dueDate | date:\\\"MMM\\\" }}
      0\\\">
      {{ suggestion.createdDate | date: 'mediumDate'}}
      {{category.problemCategory.title}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"
      \\\"image\\\"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{event.translation}}
      {{event.translation}}
      {{event.translation}}
      {{event.translation}}
      {{event.translation}}
      {{event.translation}}
      {{event.translation}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \\\"profile\\\"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      1. {{selectedPage.title}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{customers.length}}

      {{percentOnTime}} %

      {{totalSuggestions}}

      {{totalDeviations}}

      {{item.name}} {{item.totalProjects}} {{item.percentOnTime}} % {{item.totalSuggestions}} {{item.totalDeviations}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      \";\n// Exports\nexport default code;","// Module\nvar code = \"


      {{message.senderName}}
      {{message.timeElapsed}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{project.name}}
      {{project.projectNumber}}
      {{project.projectCustomer.name}} Liv R {{project.endDate | date: 'mediumDate'}} 0, 'btn-warning': project.realized === 0, 'digilean-btn-danger': project.realized < 0}\\\">
      {{milestone.name}}

      {{milestone.plannedDate | date: 'mediumDate'}} {{milestone.actualDate | date: 'mediumDate'}}
      ({{boardPlans.length}})
      {{plan.name}}
      10.05.2016
      0\\\" class=\\\"project-status\\\"> 0\\\" class=\\\"project-title\\\"> {{plan.name}}
      01.05.2016
      {{plan.total}}
      {{plan.completed}}
      {{plan.rejected}}
      {{plan.open}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \"
      1. {{project.name}}

      - {{project.name}}
      {{project.projectNumber}}

      {{user.displayName}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{openSuggestions}}
      {{noImplementedSuggestions}}
      {{noEvaluatedSuggestions}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{openDeviations}}
      {{noResolvedDeviations}}
      {{noRejectedDeviations}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{user.firstName}} {{user.lastName}} {{user.screenName}}
      {{participants.length}}
      {{user.firstName}} {{user.lastName}} {{user.screenName}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{task.user.displayName}}
      {{task.user.firstName}} {{task.user.lastName}}
      {{task.user.firstName}} {{task.user.lastName}}
      • {{user.displayName}}
        {{user.firstName}} {{user.lastName}}
        {{user.firstName}} {{user.lastName}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{title}}

      {{col.name}}
      {{col.name}}
      {{col.name}}
      {{col.name}}
      {{col.name}}
      {{col.name}}
      {{col.name}}
      {{col.name}}
      {{col.name}}
      {{col.name}}
      {{col.name}}
      {{col.name}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{contact.fullName}}
      • {{contact.fullName}}

        {{contact.email}}

        {{contact.phoneNumber}}

      • {{contact.fullName}} - {{contact.companyName}}
      {{contact.fullName}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{customer.name}}
      • {{customer.name}}
        {{customer.name}}
      {{customer.name}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{value | date: 'mediumDate'}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{date.estimatedEndDate | date: 'mediumDate'}}
      {{date.estimatedEndDate | date: 'mediumDate'}} date.diffToPlannedDate\\\" class=\\\"date-before\\\">{{date.estimatedEndDate | date: 'mediumDate'}} date.diffToPlannedDate)\\\">{{date.estimatedEndDate | date: 'mediumDate'}}
      {{date.estimatedEndDate | date: 'mediumDate'}}
      0\\\" uib-tooltip=\\\"{{'PROJECT_ESTIMATED_DATE' |translate}}: {{date.estimatedEndDate | date: 'mediumDate'}} (+{{date.diffPlannedVSActual}} {{'COMMON_DAYS' |translate}})\\\"> {{date.endDate | date: 'mediumDate'}} {{date.endDate | date: 'mediumDate'}} {{date.endDate | date: 'mediumDate'}} {{date.endDate | date: 'mediumDate'}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{milestone.plannedDate | date: 'mediumDate'}}
      {{milestone.plannedDate | date: 'mediumDate'}} milestone.diffToPlannedDate\\\" class=\\\"date-before\\\">{{milestone.plannedDate | date: 'mediumDate'}} milestone.diffToPlannedDate)\\\">{{milestone.plannedDate | date: 'mediumDate'}}
      {{milestone.plannedDate | date: 'mediumDate'}}
      {{milestone.plannedDate | date: 'mediumDate'}}
      0\\\" uib-tooltip=\\\"{{'PROJECT_ESTIMATED_DATE' |translate}}: {{milestone.plannedDate | date: 'mediumDate'}} (+{{milestone.diffPlannedVSActual}} {{'COMMON_DAYS' |translate}})\\\"> {{milestone.actualDate | date: 'mediumDate'}} {{milestone.actualDate | date: 'mediumDate'}} {{milestone.actualDate | date: 'mediumDate'}} {{milestone.actualDate | date: 'mediumDate'}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{milestone.plannedDate | date: 'mediumDate'}}
      {{milestone.plannedDate | date: 'mediumDate'}} days\\\" class=\\\"date-before\\\">{{milestone.plannedDate | date: 'mediumDate'}} days)\\\">{{milestone.plannedDate | date: 'mediumDate'}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{unit}} {{number | number: fractionSize}} {{unit}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{unit}} {{ numberCellAggregateValue | number: fractionSize}} {{unit}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{unit}} {{number | number: fractionSize}} {{unit}}
      {{unit}} {{number | number: fractionSize}} {{unit}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{user.displayName}}
      • {{user.displayName}}
        {{user.firstName}} {{user.lastName}}
        {{user.firstName}} {{user.lastName}}
      {{user.displayName}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{user.displayName}}
      • {{user.displayName}}
        {{user.firstName}} {{user.lastName}}
        {{user.firstName}} {{user.lastName}}
      {{user.displayName}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{progress}} %
      \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{description}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{projectName}}
      {{projectName}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{projectNumber}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{selectedStatusOption.translatedText}}
      {{selectedStatusOption.translatedText}}
      • {{status.translatedText}}
        {{status.description}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"
      0\\\" class=\\\"text-center\\\"> {{taskCompletedCount}} / {{taskCount}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{date.estimatedStartDate | date: 'mediumDate'}}
      {{date.estimatedStartDate | date: 'mediumDate'}} date.diffToPlannedDate\\\" class=\\\"date-before\\\">{{date.estimatedStartDate | date: 'mediumDate'}} date.diffToPlannedDate)\\\">{{date.estimatedStartDate | date: 'mediumDate'}}
      {{date.estimatedStartDate | date: 'mediumDate'}}
      0\\\" uib-tooltip=\\\"{{'PROJECT_ESTIMATED_DATE' |translate}}: {{date.estimatedStartDate | date: 'mediumDate'}} (+{{date.diffPlannedVSActual}} {{'COMMON_DAYS' |translate}})\\\"> {{date.startDate | date: 'mediumDate'}} {{date.startDate | date: 'mediumDate'}} {{date.startDate | date: 'mediumDate'}} {{date.startDate | date: 'mediumDate'}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{text}}
      {{text}}
      • {{postIt.title}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{text}}
      • {{postIt.title}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{selectedWeek.number}} - {{selectedMonth.fullName}} {{selectedYear}}

      {{selectedYear}}

      {{month.name}}

      {{selectedMonth.fullName}}

      {{week.startDate | date: 'd MMM'}}
      {{week.number}}
      {{week.endDate | date: 'd MMM'}}
      {{selectedWeek.startDate | date: 'd MMM'}} - {{selectedWeek.endDate | date: 'd MMM'}}

      {{day.date | date: 'd'}}

      {{day.day}}

      {{day.date | date: 'MMM'}}
      {{row.name}}
      {{row.name}}
      0\\\" ng-repeat=\\\"taskRow in row.taskRows\\\">
               
               
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      1. {{project.name}}

      - {{project.name}}

      {{customer.name}}
      • {{customer.name}}
        {{customer.name}}
      {{contact.fullName}}
      • {{contact.fullName}} - {{contact.companyName}}
      0\\\">{{participants.length}}

      {{project.createdDate | date: 'mediumDate'}}


      0\\\">{{project.attachments.length}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      %
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      • {{asset.name}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{parentGoal.name}}

      {{asset.name}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"
      1. {{project.name}}
      2. {{selectAsset.name}}
        • {{asset.name}}

      : {{project.name}}

      {{noImprovementImplemented}} {{noImprovementDelayed}} {{noImprovementRemaining}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{column.title}}
      +

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{model.task.title}} ... 0\\\" class=\\\"m-l-md\\\"> {{model.task.attachmentCount}} 0\\\" class=\\\"m-l-md\\\"> {{model.task.commentCount}}
      {{task.description}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.activityPerformer}}
      {{item.occured}}

      : {{ item.payLoad.AssetName}}

      : {{ item.parentDescription}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.activityPerformer}}
      {{item.occured}}

      : {{item.payLoad.Name}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.activityPerformer}}
      {{item.occured}}

      : {{item.payLoad.Name}}.

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.activityPerformer}}
      {{item.occured}}

      : {{ item.description}}

      : {{ item.payLoad.Name}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.activityPerformer}}
      {{item.occured}}

      : {{ item.payLoad.EndDate | date: 'mediumDate'}}

      : {{ item.payLoad.Name}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.activityPerformer}}
      {{item.occured}}

      : {{ item.description}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.activityPerformer}}
      {{item.occured}}

      : {{item.description}}.

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{item.activityPerformer}}
      {{item.occured}}

      : {{ item.payLoad.StartDate | date: 'mediumDate'}}

      : {{ item.payLoad.Name}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{asset.name}}
      • {{asset.name}}
      {{year}}
      0\\\">
      KPI {{column.translated}}
      {{item.name}}
      {{kpi.title}}  
      {{kpi.target}} {{kpi.unit}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{actualformatted}}  
      • 0\\\">
      • 0\\\">

        {{actualformatted}}   {{kpi.unit}}
      {{actualformatted}}  
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      0\\\">
      {{planformatted}}  

      • {{plan}}  {{targetDataSource.valueElement.unit}}
      {{plan}} 
      {{planformatted}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{kpi.title}}  
      -->\\n
      \\n
      \\n
      \\n

      1.

      \\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
      {{dataSource.title}} 0\\\" class=\\\"m-l fa fa-filter\\\" uib-tooltip=\\\"{{ 'COMMON_FILTER' | translate }}\\\" tooltip-placement=\\\"bottom\\\">\\n \\n \\n
      \\n
      \\n
      \\n
      \\n : \\n \\n \\n \\n
        \\n
      • \\n
      • \\n
      \\n
      \\n
      \\n
      \\n
      \\n
      \\n
      \\n

      2.

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

      3.

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

      4.

      \\n \\n
      \\n
      \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n
      \\n
      \\n
      \\n
      \\n \\n
      \\n
      \\n
      \\n
      {{targetDataSource.title}} 0\\\" class=\\\"m-l fa fa-filter\\\" uib-tooltip=\\\"{{ 'COMMON_FILTER' | translate }}\\\" tooltip-placement=\\\"bottom\\\">\\n \\n \\n
      \\n
      \\n
      \\n
      \\n
      \\n
      \\n\\n
      \\n

      5.

      \\n
      \\n
      \\n
      \\n
      \\n \\n
      \\n
      \\n
      \\n
      \\n
      \\n :
      {{dataSource.title}} \\n
      \\n
      \\n \\n
      \\n\\n
      \\n \\n
      \\n
      \\n :
      {{targetDataSource.title}} \\n
      \\n
      \\n \\n
      \\n
      \\n\\n
      \\n

      6.

      \\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// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{selectAsset.name}}
      • {{asset.name}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{column.title}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{asset.name}}
      • {{asset.name}}
      {{asset.name}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{col.name}}
      {{col.name}}
      {{col.name}}
      {{col.name}}
      {{col.name}}
      {{col.name}}
      {{col.name}}
      {{col.name}}
      {{col.name}}
      {{col.name}}
      {{col.name}}
      0\\\" class=\\\"m-t-lg\\\">

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{description}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{value | date: 'mediumDate'}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{projectName}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{value | date: 'mediumDate'}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"0\\\">
      {{kpi.kpiTitle}} {{kpi.lastPlannedValue}} {{kpi.lastActualValue}} {{kpi.ytdPlannedValue}} {{kpi.ytdActualValue}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{col.name}}
      {{goal.parent.name}} {{goal.name}} {{goal.endDate | date: 'mediumDate'}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{title}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      ({{workList.today.length}})

      ({{workList.overdue.length}})
      ({{workList.future.length}})
      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{task.boardDate | date: 'mediumDate'}}

      {{task.title}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{task.boardDate | date: 'mediumDate'}} {{task.title}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{task.boardDate | date: 'mediumDate'}} {{task.title}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{task.boardDate | date: 'mediumDate'}} {{task.title}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{task.boardDate | date: 'mediumDate'}} {{task.title}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{task.boardDate | date: 'mediumDate'}} {{task.title}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{task.title}}
      {{task.title}}
      0\\\">
      {{task.user.fullName}}
      • {{user.displayName}}
        {{user.firstName}} {{user.lastName}}
        {{user.firstName}} {{user.lastName}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{task.title}}
      {{task.title}}
      0\\\" class=\\\"m-r-sm text-muted\\\" ng-click=\\\"openTask('Attachments',task)\\\"> {{task.attachmentCount}} 0\\\" class=\\\"m-t-sm text-muted\\\" ng-click=\\\"openTask('Comments',task)\\\"> {{task.commentCount}}
      0\\\">
      {{task.board.name}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      • {{board.name}} ({{board.assetName}})
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      • {{user.firstName}} {{user.lastName}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      ({{tasks.length}})

      {{task.title}}
      : {{task.boardDate | date: 'mediumDate'}}
      {{task.board.name}} {{task.responsibleUser}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      >
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{column.title}}
      0\\\" class=\\\"task-count pull-left\\\"> {{column.tasks.length}}
      +

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{task.title}}
      A3 {{task.description}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{user.fullName}}
      ( {{workList.overdue.length}} | {{workList.today.length}} | {{workList.future.length}} )

      {{taskCount}} 0\\\">, {{taskOverdueCount}}

      {{improvementCount}} 0\\\">, {{improvementOverdueCount}}

      {{deviationCount}} 0\\\">, {{deviationOverdueCount}}

      {{a3Count}} 0\\\">, {{a3OverdueCount}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{selectedTeam.name}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{board.name}} ({{board.assetName}})
      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{username}}

      {{identityProvider}}

       

       

      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      hello template 1

      {{$ctrl.hello}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{$ctrl.user.displayName}}
      {{$ctrl.user.fullName}}
      \\\"profile
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"
      • {{asset.name}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{task.board.name}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{hours}}:{{minutes}}:{{seconds}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{hours}}:{{minutes}}:{{seconds}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \"
      Copyright DigiLEAN AS © 2020
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{user.firstName}} {{user.lastName}}
      {{user.firstName}} {{user.lastName}}
      • {{user.displayName}}
        {{user.firstName}} {{user.lastName}}
        {{user.firstName}} {{user.lastName}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{$ctrl.headline}}
      • {{log.timestamp | date: 'dd.MM.yyyy HH:mm:ss'}} : {{log.message}}
        {{log.exception}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{$ctrl.msg.senderName}}
      {{$ctrl.msg.timeElapsed}}
      {{$ctrl.msg.type}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{$ctrl.msg.senderName}}
      {{$ctrl.msg.timeElapsed}}
      {{$ctrl.msg.type}}

      1\\\">
      \";\n// Exports\nexport default code;","// Module\nvar code = \"

      \";\n// Exports\nexport default code;","// Module\nvar code = \"
       {{$ctrl.msg.replies.length}}
      \";\n// Exports\nexport default code;","// Module\nvar code = \"
      {{$ctrl.reply.senderName}}
      {{$ctrl.reply.timeElapsed}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"

      {{modalOptions.headerText}}

      {{modalOptions.bodyText}}

      \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"


      \";\n// Exports\nexport default code;","var map = {\n\t\"./af\": 99805,\n\t\"./af.js\": 99805,\n\t\"./ar\": 94449,\n\t\"./ar-dz\": 44468,\n\t\"./ar-dz.js\": 44468,\n\t\"./ar-kw\": 63480,\n\t\"./ar-kw.js\": 63480,\n\t\"./ar-ly\": 64197,\n\t\"./ar-ly.js\": 64197,\n\t\"./ar-ma\": 62180,\n\t\"./ar-ma.js\": 62180,\n\t\"./ar-ps\": 29343,\n\t\"./ar-ps.js\": 29343,\n\t\"./ar-sa\": 50230,\n\t\"./ar-sa.js\": 50230,\n\t\"./ar-tn\": 72808,\n\t\"./ar-tn.js\": 72808,\n\t\"./ar.js\": 94449,\n\t\"./az\": 45865,\n\t\"./az.js\": 45865,\n\t\"./be\": 86627,\n\t\"./be.js\": 86627,\n\t\"./bg\": 60901,\n\t\"./bg.js\": 60901,\n\t\"./bm\": 63179,\n\t\"./bm.js\": 63179,\n\t\"./bn\": 61966,\n\t\"./bn-bd\": 90969,\n\t\"./bn-bd.js\": 90969,\n\t\"./bn.js\": 61966,\n\t\"./bo\": 6317,\n\t\"./bo.js\": 6317,\n\t\"./br\": 46474,\n\t\"./br.js\": 46474,\n\t\"./bs\": 35961,\n\t\"./bs.js\": 35961,\n\t\"./ca\": 77270,\n\t\"./ca.js\": 77270,\n\t\"./cs\": 61564,\n\t\"./cs.js\": 61564,\n\t\"./cv\": 43239,\n\t\"./cv.js\": 43239,\n\t\"./cy\": 92366,\n\t\"./cy.js\": 92366,\n\t\"./da\": 82453,\n\t\"./da.js\": 82453,\n\t\"./de\": 76601,\n\t\"./de-at\": 25027,\n\t\"./de-at.js\": 25027,\n\t\"./de-ch\": 8101,\n\t\"./de-ch.js\": 8101,\n\t\"./de.js\": 76601,\n\t\"./dv\": 96080,\n\t\"./dv.js\": 96080,\n\t\"./el\": 12655,\n\t\"./el.js\": 12655,\n\t\"./en-au\": 46836,\n\t\"./en-au.js\": 46836,\n\t\"./en-ca\": 22086,\n\t\"./en-ca.js\": 22086,\n\t\"./en-gb\": 2103,\n\t\"./en-gb.js\": 2103,\n\t\"./en-ie\": 35964,\n\t\"./en-ie.js\": 35964,\n\t\"./en-il\": 74379,\n\t\"./en-il.js\": 74379,\n\t\"./en-in\": 50765,\n\t\"./en-in.js\": 50765,\n\t\"./en-nz\": 71502,\n\t\"./en-nz.js\": 71502,\n\t\"./en-sg\": 1152,\n\t\"./en-sg.js\": 1152,\n\t\"./eo\": 90050,\n\t\"./eo.js\": 90050,\n\t\"./es\": 43350,\n\t\"./es-do\": 49338,\n\t\"./es-do.js\": 49338,\n\t\"./es-mx\": 51326,\n\t\"./es-mx.js\": 51326,\n\t\"./es-us\": 89947,\n\t\"./es-us.js\": 89947,\n\t\"./es.js\": 43350,\n\t\"./et\": 18231,\n\t\"./et.js\": 18231,\n\t\"./eu\": 28512,\n\t\"./eu.js\": 28512,\n\t\"./fa\": 59083,\n\t\"./fa.js\": 59083,\n\t\"./fi\": 25059,\n\t\"./fi.js\": 25059,\n\t\"./fil\": 32607,\n\t\"./fil.js\": 32607,\n\t\"./fo\": 83369,\n\t\"./fo.js\": 83369,\n\t\"./fr\": 27390,\n\t\"./fr-ca\": 66711,\n\t\"./fr-ca.js\": 66711,\n\t\"./fr-ch\": 6152,\n\t\"./fr-ch.js\": 6152,\n\t\"./fr.js\": 27390,\n\t\"./fy\": 62419,\n\t\"./fy.js\": 62419,\n\t\"./ga\": 3002,\n\t\"./ga.js\": 3002,\n\t\"./gd\": 82533,\n\t\"./gd.js\": 82533,\n\t\"./gl\": 16557,\n\t\"./gl.js\": 16557,\n\t\"./gom-deva\": 48944,\n\t\"./gom-deva.js\": 48944,\n\t\"./gom-latn\": 25387,\n\t\"./gom-latn.js\": 25387,\n\t\"./gu\": 17462,\n\t\"./gu.js\": 17462,\n\t\"./he\": 39237,\n\t\"./he.js\": 39237,\n\t\"./hi\": 49617,\n\t\"./hi.js\": 49617,\n\t\"./hr\": 36544,\n\t\"./hr.js\": 36544,\n\t\"./hu\": 60341,\n\t\"./hu.js\": 60341,\n\t\"./hy-am\": 41388,\n\t\"./hy-am.js\": 41388,\n\t\"./id\": 75251,\n\t\"./id.js\": 75251,\n\t\"./is\": 41146,\n\t\"./is.js\": 41146,\n\t\"./it\": 37891,\n\t\"./it-ch\": 80007,\n\t\"./it-ch.js\": 80007,\n\t\"./it.js\": 37891,\n\t\"./ja\": 73727,\n\t\"./ja.js\": 73727,\n\t\"./jv\": 5198,\n\t\"./jv.js\": 5198,\n\t\"./ka\": 28974,\n\t\"./ka.js\": 28974,\n\t\"./kk\": 37308,\n\t\"./kk.js\": 37308,\n\t\"./km\": 57786,\n\t\"./km.js\": 57786,\n\t\"./kn\": 84807,\n\t\"./kn.js\": 84807,\n\t\"./ko\": 61584,\n\t\"./ko.js\": 61584,\n\t\"./ku\": 61906,\n\t\"./ku-kmr\": 75305,\n\t\"./ku-kmr.js\": 75305,\n\t\"./ku.js\": 61906,\n\t\"./ky\": 79190,\n\t\"./ky.js\": 79190,\n\t\"./lb\": 7396,\n\t\"./lb.js\": 7396,\n\t\"./lo\": 38503,\n\t\"./lo.js\": 38503,\n\t\"./lt\": 33010,\n\t\"./lt.js\": 33010,\n\t\"./lv\": 5192,\n\t\"./lv.js\": 5192,\n\t\"./me\": 51944,\n\t\"./me.js\": 51944,\n\t\"./mi\": 56492,\n\t\"./mi.js\": 56492,\n\t\"./mk\": 2934,\n\t\"./mk.js\": 2934,\n\t\"./ml\": 61463,\n\t\"./ml.js\": 61463,\n\t\"./mn\": 8377,\n\t\"./mn.js\": 8377,\n\t\"./mr\": 78733,\n\t\"./mr.js\": 78733,\n\t\"./ms\": 18030,\n\t\"./ms-my\": 39445,\n\t\"./ms-my.js\": 39445,\n\t\"./ms.js\": 18030,\n\t\"./mt\": 55887,\n\t\"./mt.js\": 55887,\n\t\"./my\": 87228,\n\t\"./my.js\": 87228,\n\t\"./nb\": 48294,\n\t\"./nb.js\": 48294,\n\t\"./ne\": 19559,\n\t\"./ne.js\": 19559,\n\t\"./nl\": 20600,\n\t\"./nl-be\": 78796,\n\t\"./nl-be.js\": 78796,\n\t\"./nl.js\": 20600,\n\t\"./nn\": 9570,\n\t\"./nn.js\": 9570,\n\t\"./oc-lnc\": 5662,\n\t\"./oc-lnc.js\": 5662,\n\t\"./pa-in\": 87101,\n\t\"./pa-in.js\": 87101,\n\t\"./pl\": 56118,\n\t\"./pl.js\": 56118,\n\t\"./pt\": 29198,\n\t\"./pt-br\": 7203,\n\t\"./pt-br.js\": 7203,\n\t\"./pt.js\": 29198,\n\t\"./ro\": 45565,\n\t\"./ro.js\": 45565,\n\t\"./ru\": 33315,\n\t\"./ru.js\": 33315,\n\t\"./sd\": 58473,\n\t\"./sd.js\": 58473,\n\t\"./se\": 11258,\n\t\"./se.js\": 11258,\n\t\"./si\": 98798,\n\t\"./si.js\": 98798,\n\t\"./sk\": 26404,\n\t\"./sk.js\": 26404,\n\t\"./sl\": 7057,\n\t\"./sl.js\": 7057,\n\t\"./sq\": 25718,\n\t\"./sq.js\": 25718,\n\t\"./sr\": 45363,\n\t\"./sr-cyrl\": 20478,\n\t\"./sr-cyrl.js\": 20478,\n\t\"./sr.js\": 45363,\n\t\"./ss\": 37260,\n\t\"./ss.js\": 37260,\n\t\"./sv\": 42231,\n\t\"./sv.js\": 42231,\n\t\"./sw\": 27104,\n\t\"./sw.js\": 27104,\n\t\"./ta\": 47493,\n\t\"./ta.js\": 47493,\n\t\"./te\": 57705,\n\t\"./te.js\": 57705,\n\t\"./tet\": 94457,\n\t\"./tet.js\": 94457,\n\t\"./tg\": 22727,\n\t\"./tg.js\": 22727,\n\t\"./th\": 32206,\n\t\"./th.js\": 32206,\n\t\"./tk\": 33419,\n\t\"./tk.js\": 33419,\n\t\"./tl-ph\": 77243,\n\t\"./tl-ph.js\": 77243,\n\t\"./tlh\": 60016,\n\t\"./tlh.js\": 60016,\n\t\"./tr\": 87020,\n\t\"./tr.js\": 87020,\n\t\"./tzl\": 8026,\n\t\"./tzl.js\": 8026,\n\t\"./tzm\": 78537,\n\t\"./tzm-latn\": 87899,\n\t\"./tzm-latn.js\": 87899,\n\t\"./tzm.js\": 78537,\n\t\"./ug-cn\": 40818,\n\t\"./ug-cn.js\": 40818,\n\t\"./uk\": 48478,\n\t\"./uk.js\": 48478,\n\t\"./ur\": 77893,\n\t\"./ur.js\": 77893,\n\t\"./uz\": 89133,\n\t\"./uz-latn\": 20311,\n\t\"./uz-latn.js\": 20311,\n\t\"./uz.js\": 89133,\n\t\"./vi\": 52179,\n\t\"./vi.js\": 52179,\n\t\"./x-pseudo\": 92455,\n\t\"./x-pseudo.js\": 92455,\n\t\"./yo\": 3310,\n\t\"./yo.js\": 3310,\n\t\"./zh-cn\": 27244,\n\t\"./zh-cn.js\": 27244,\n\t\"./zh-hk\": 40076,\n\t\"./zh-hk.js\": 40076,\n\t\"./zh-mo\": 62305,\n\t\"./zh-mo.js\": 62305,\n\t\"./zh-tw\": 88588,\n\t\"./zh-tw.js\": 88588\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 61738;","import {LitElement, html, css} from \"lit\"\nimport {customElement} from \"lit/decorators.js\"\n\n@customElement('digilean-logo')\nexport class DigiLeanLogo extends LitElement {\n static styles = css`\n :host {\n display: block;\n }\n figure {\n height: var(--digilean-image-height, 3rem);\n width: var(--digilean-image-width, 3rem);\n display: block;\n margin-block-start: 0;\n margin-block-end: 0;\n margin-inline-start: 0;\n margin-inline-end: 0;\n }\n svg {\n height: var(--digilean-image-height, 3rem);\n width: var(--digilean-image-width, 3rem);\n }\n `\n\n render() {\n return html`\n
      \n \n \n \n \n \n \n \n \n
      \n
      \n `\n }\n}\n","import { DigiLeanSettings } from \"@common/model/types\"\n\n///@ts-ignore read on boot\nlet config: DigiLeanSettings = window.envConfig\n\nexport default config","type PageState = DocumentVisibilityState | \"active\" | \"passive\" | \"frozen\" | \"terminated\"\n\nconst getState = (): PageState => {\n if (document.visibilityState === \"hidden\") {\n return \"hidden\"\n }\n if (document.hasFocus()) {\n return \"active\"\n }\n return \"passive\"\n}\n\nlet state = getState()\n\nconst logStateChange = (nextState: PageState) => {\n const prevState = state\n if (nextState !== prevState) {\n // console.log(`DigiLEAN State change: ${prevState} >>> ${nextState}`)\n state = nextState\n }\n}\n\n['pageshow', 'focus', 'blur', 'visibilitychange', 'resume'].forEach(type => {\n window.addEventListener(type, () => logStateChange(getState()), {\n capture: true,\n })\n})\n\nwindow.addEventListener(\n 'freeze',\n (e) => {\n logStateChange(\"frozen\")\n },\n { capture: true }\n)\n\nwindow.addEventListener(\n 'pagehide',\n event => {\n if (event.persisted) {\n logStateChange(\"frozen\")\n } else {\n logStateChange(\"terminated\")\n }\n },\n { capture: true }\n)","const digiLean = angular.module('DigiLean');\r\n\r\n/**\r\n * pageTitle - Directive for set Page title - mata title\r\n */\r\ndigiLean.directive('pageTitle', ['$transitions', '$timeout', function ($transitions, $timeout) {\r\n return {\r\n link: function (scope, element) {\r\n $transitions.onStart( { to: '**' }, function() {\r\n var title = 'DigiLEAN.tools';\r\n $timeout(function () {\r\n element.text(title);\r\n });\r\n });\r\n }\r\n };\r\n}]);\r\n\r\n/**\r\n * sideNavigation - Directive for run metsiMenu on sidebar navigation\r\n */\r\nfunction sideNavigation($timeout) {\r\n return {\r\n restrict: 'A',\r\n link: function (scope, element) {\r\n // Call the metsiMenu plugin and plug it to sidebar navigation\r\n $timeout(function () {\r\n element.metisMenu();\r\n });\r\n }\r\n };\r\n}\r\n\r\n/**\r\n * iboxTools - Directive for iBox tools elements in right corner of ibox\r\n */\r\nfunction iboxTools($timeout) {\r\n return {\r\n restrict: 'A',\r\n scope: true,\r\n templateUrl: 'ibox_tools.html',\r\n controller: ['$scope', '$element', function ($scope, $element) {\r\n // Function for collapse ibox\r\n $scope.showhide = function () {\r\n var ibox = $element.closest('div.ibox');\r\n var icon = $element.find('i:first');\r\n var content = ibox.find('div.ibox-content');\r\n content.slideToggle(200);\r\n // Toggle icon from up to down\r\n icon.toggleClass('fa-chevron-up').toggleClass('fa-chevron-down');\r\n ibox.toggleClass('').toggleClass('border-bottom');\r\n $timeout(function () {\r\n ibox.resize();\r\n ibox.find('[id^=map-]').resize();\r\n }, 50);\r\n },\r\n // Function for close ibox\r\n $scope.closebox = function () {\r\n var ibox = $element.closest('div.ibox');\r\n ibox.remove();\r\n }\r\n }]\r\n };\r\n}\r\n\r\n/**\r\n * iboxTools with full screen - Directive for iBox tools elements in right corner of ibox with full screen option\r\n */\r\nfunction iboxToolsFullScreen($timeout) {\r\n return {\r\n restrict: 'A',\r\n scope: true,\r\n templateUrl: 'ibox_tools_full_screen.html',\r\n controller: ['$scope', '$element', function ($scope, $element) {\r\n // Function for collapse ibox\r\n $scope.showhide = function () {\r\n var ibox = $element.closest('div.ibox');\r\n var icon = $element.find('i:first');\r\n var content = ibox.find('div.ibox-content');\r\n content.slideToggle(200);\r\n // Toggle icon from up to down\r\n icon.toggleClass('fa-chevron-up').toggleClass('fa-chevron-down');\r\n ibox.toggleClass('').toggleClass('border-bottom');\r\n $timeout(function () {\r\n ibox.resize();\r\n ibox.find('[id^=map-]').resize();\r\n }, 50);\r\n };\r\n // Function for close ibox\r\n $scope.closebox = function () {\r\n var ibox = $element.closest('div.ibox');\r\n ibox.remove();\r\n };\r\n // Function for full screen\r\n $scope.fullscreen = function () {\r\n var ibox = $element.closest('div.ibox');\r\n var button = $element.find('i.fa-expand');\r\n $('body').toggleClass('fullscreen-ibox-mode');\r\n button.toggleClass('fa-expand').toggleClass('fa-compress');\r\n ibox.toggleClass('fullscreen');\r\n setTimeout(function () {\r\n $(window).trigger('resize');\r\n }, 100);\r\n }\r\n }]\r\n };\r\n}\r\n\r\n/**\r\n * minimalizaSidebar - Directive for minimalize sidebar\r\n*/\r\nfunction minimalizaSidebar($timeout) {\r\n return {\r\n restrict: 'A',\r\n template: '',\r\n controller: ['$scope', '$element', function ($scope, $element) {\r\n $scope.minimalize = function () {\r\n $(\"body\").toggleClass(\"mini-navbar\");\r\n if (!$('body').hasClass('mini-navbar') || $('body').hasClass('body-small')) {\r\n // Hide menu in order to smoothly turn on when maximize menu\r\n $('#side-menu').hide();\r\n // For smoothly turn on menu\r\n setTimeout(\r\n function () {\r\n $('#side-menu').fadeIn(400);\r\n }, 200);\r\n } else if ($('body').hasClass('fixed-sidebar')) {\r\n $('#side-menu').hide();\r\n setTimeout(\r\n function () {\r\n $('#side-menu').fadeIn(400);\r\n }, 100);\r\n } else {\r\n // Remove all inline style from jquery fadeIn function to reset menu state\r\n $('#side-menu').removeAttr('style');\r\n }\r\n // Adjust floating header on board.\r\n var $table = $(\"table.board\");\r\n $table.trigger('reflow');\r\n\r\n }\r\n }]\r\n };\r\n}\r\n\r\n\r\n\r\ndigiLean\r\n .directive('sideNavigation', ['$timeout', sideNavigation])\r\n .directive('iboxTools', ['$timeout', iboxTools])\r\n .directive('minimalizaSidebar', ['$timeout', minimalizaSidebar])\r\n .directive('iboxToolsFullScreen', ['$timeout', iboxToolsFullScreen])\r\n;\r\n","angular.module(\"DigiLean\").filter('customNumber', function () {\n return function (value) {\n return parseInt(value, 10); //convert to int\n }\n})","var map = {\n\t\"./users/userComponent.html\": 6964\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 80708;","// # common web client files\n\n// External libraries *************************\n\n// jquery\nimport * as jq from 'jquery';\nwindow.$ = window.jQuery = jq;\nimport 'jquery-ui-dist/jquery-ui';\nimport 'jquery-ui-touch-punch/jquery.ui.touch-punch';\n\n// angular\nimport 'angular';\nimport \"@uirouter/angularjs\"\nimport 'angular-bootstrap-lightbox';\nimport 'angular-bootstrap-toggle/dist/angular-bootstrap-toggle.min.js';\nimport 'angularjs-dragula';\nimport 'angular-dynamic-locale';\nimport 'angular-loading-bar';\nimport 'angular-sanitize';\nimport 'angular-translate';\nimport 'angular-ui-bootstrap';\nimport 'angular-ui-sortable';\n\nimport 'angular-material';\nimport '../node_modules/angular-material/angular-material.min.css';\n\nimport 'angular-animate';\nimport '../node_modules/animate.css/animate.compat.css';\n\nimport '@common/thirdparty/ng-table/ng-table-digilean.min'; // Do not upgrade for now, there is webpack problem with tr in filter templates.\nimport '@common/thirdparty/ng-table/ng-table.min.css';\n\n\nimport \"@common/thirdparty/angular-gridster/angular-gridster\"\nimport \"@common/thirdparty/angular-gridster/angular-gridster.css\"\n\n\nimport '../node_modules/ng-sortable/dist/ng-sortable.min.css';\n\nimport 'ng-sortable';\nimport '../node_modules/ng-sortable/dist/ng-sortable.style.css';\nimport '@common/css/ng-sortable-style.css';\n\nimport '@common/thirdparty/peity/angular-peity';\n\n// bootstrap\nimport '@common/thirdparty/bootstrap/js/bootstrap.min';\nimport '@common/thirdparty/bootstrap-colorpicker/bootstrap-colorpicker-module.min';\nimport '@common/thirdparty/bootstrap/css/bootstrap.css';\nimport '@common/thirdparty/bootstrap-colorpicker/colorpicker.min.css';\nimport '../node_modules/angular-bootstrap-toggle/dist/angular-bootstrap-toggle.min.css';\n\n// highcharts\nimport 'highcharts/highstock';\nimport Highcharts from 'highcharts';\nimport pareto from 'highcharts/modules/pareto';\npareto( Highcharts );\nimport exporting from 'highcharts/modules/exporting';\nexporting(Highcharts);\nimport 'highcharts-regression';\nimport '@common/thirdparty/highcharts/parallel-coordinates.js'; //needed together with pareto\nimport '@common/thirdparty/highcharts/grouped-categories.js';\nimport highchartsMore from '@common/thirdparty/highcharts/highcharts-more';\nhighchartsMore(Highcharts)\nimport '@common/css/highcharts-theming.css'\n\n// froala editor\nimport 'froala-editor/js/plugins/align.min';\nimport 'froala-editor/js/plugins/font_family.min';\nimport 'froala-editor/js/plugins/font_size.min';\nimport 'froala-editor/js/plugins/colors.min';\nimport 'froala-editor/js/plugins/draggable.min';\nimport 'froala-editor/js/plugins/emoticons.min';\n// import 'froala-editor/js/plugins/fullscreen.min';\nimport 'froala-editor/js/plugins/image.min';\nimport 'froala-editor/js/plugins/link.min';\nimport 'froala-editor/js/plugins/lists.min';\nimport 'froala-editor/js/plugins/quick_insert.min';\nimport 'froala-editor/js/plugins/quote.min';\nimport 'froala-editor/js/plugins/special_characters.min';\nimport 'froala-editor/js/plugins/table.min';\nimport 'froala-editor/js/plugins/video.min';\nimport 'froala-editor/js/plugins/word_paste.min';\nimport 'froala-editor/js/plugins/paragraph_format.min';\nimport 'froala-editor/js/plugins/code_view.min';\n\nimport '../node_modules/froala-editor/css/froala_editor.css';\nimport '../node_modules/froala-editor/css/froala_editor.pkgd.css';\nimport '../node_modules/froala-editor/css/froala_style.css';\nimport '../node_modules/froala-editor/css/plugins/colors.css';\nimport '../node_modules/froala-editor/css/plugins/table.min.css';\nimport '../node_modules/froala-editor/css/plugins/draggable.css';\nimport '../node_modules/froala-editor/css/plugins/emoticons.css';\n// import '../node_modules/froala-editor/css/plugins/fullscreen.css';\nimport '../node_modules/froala-editor/css/plugins/image.css';\nimport '../node_modules/froala-editor/css/plugins/video.css';\nimport '../node_modules/froala-editor/css/plugins/line_breaker.css';\nimport '../node_modules/froala-editor/css/plugins/special_characters.css';\nimport '../node_modules/froala-editor/css/themes/gray.min.css';\nimport '../node_modules/froala-editor/css/themes/dark.min.css';\n\n// Plugins\nimport '@common/thirdparty/tagit/tag-it.min';\nimport '@common/thirdparty/fullcalendar/fullcalendar.min';\nimport '@common/thirdparty/fullcalendar/locale-all';\nimport '@common/thirdparty/peity/jquery.peity.min';\nimport '@common/thirdparty/countUp/countUp.min';\nimport '@common/thirdparty/ngImgCrop/ng-img-crop';\n\nimport \"lottie-web\"\n\nimport \"sweetalert\"\n\n// CSS\nimport \"dropzone/dist/dropzone.css\";\nimport '@common/thirdparty/fullcalendar/fullcalendar.css';\nimport '../node_modules/angularjs-dragula/dist/dragula.min.css';\n// import '@common/thirdparty/tagit/tag-it.min';\nimport '@common/thirdparty/jquery.tagit.css';\nimport '@common/thirdparty/ngImgCrop/ng-img-crop.css';\nimport '../node_modules/tributejs/dist/tribute.css';\n\n//import '@common/thirdparty/font-awesome/css/all.css'; //loading this as static file","import { ApplicationInsights } from '@microsoft/applicationinsights-web'\nimport envConfig from \"@common/envConfig\"\n\nexport let appInsights: ApplicationInsights | null = null\nif (envConfig.appInsightsConnectionString) {\n appInsights = new ApplicationInsights({\n config: {\n connectionString: envConfig.appInsightsConnectionString,\n disableAjaxTracking: true,\n disableFetchTracking: true\n }\n })\n appInsights.loadAppInsights()\n}\n","import { cloneDeep } from \"lodash\"\r\nimport { map } from \"rxjs/operators\";\r\nimport { BehaviorSubject } from \"rxjs\"\r\n\r\nexport class DlSubject extends BehaviorSubject {\r\n getClonedValue(){\r\n const value = super.getValue()\r\n return value\r\n }\r\n}\r\n\r\n// returns observable with cloned values\r\nexport const clonedObservable = (subject) => {\r\n return subject.pipe(map(data => cloneDeep(data)));\r\n}","import { AssetWithRole } from \"@api\"\n\nexport interface DigiLeanSettings extends Record {\n digiLeanBuildVersion: string\n backendUrl: string\n authServerUrl: string\n websiteUrl: string\n signalrUrl: string\n webApiUrl: string\n fileStoreUrl: string\n diagramsUrl: string\n pdfExportUrl: string\n isTeamsMode: boolean\n teamsAppId?: string\n digiLeanUrl?: string\n appInsightsConnectionString?: string\n disableFeedbackToDigiLean: boolean\n}\n\nexport type DigiLeanRole = \"KaizenAdmin\" | \"Admin\" | \"Support\" | \"BoardDesigner\" | \"A3Admin\" | \"DataAdmin\" | \"DeviationAdmin\" | \"ImprovementAdmin\" | \"ProjectAdmin\" | \"StrategyAdmin\" | \"LearningAdmin\" | \"MessageWriter\"\n\n/*\n RoleArray, just an array with our own constructor that suits the input from user role claims\n*/\nexport class RoleArray extends Array {\n\n constructor(role? : string | string[]) {\n if (role) {\n const roles = Array.isArray(role) ? role : [role]\n super(...roles)\n }\n else\n super()\n }\n\n hasRole(role: DigiLeanRole) {\n let has = false\n if (this.length > 0) {\n ///@ts-ignore\n role = role.trim()\n const roles = this as string[]\n has = roles.includes(role)\n }\n\n return has\n }\n}\n\n\nexport interface DigiLeanAuthUser {\n loggedIn: boolean\n customerId?: number\n userId?: string\n userName?: string\n email?: string\n name?: string\n displayName?: string\n roles: RoleArray\n initials?: string\n photoURL?: string\n token?: string\n tokenExpire?: number \n idToken?: string\n refreshToken?: string\n idp?: string\n language?: string\n}\n\nexport enum DigiLeanAuthRoles {\n KaizenAdmin = \"KaizenAdmin\",\n Admin = \"Admin\",\n Support = \"Support\",\n BoardDesigner = \"BoardDesigner\",\n A3Admin = \"A3Admin\",\n DeviationAdmin = \"DeviationAdmin\",\n ImprovementAdmin = \"ImprovementAdmin\",\n ProjectAdmin = \"ProjectAdmin\",\n StrategyAdmin = \"StrategyAdmin\",\n LearningAdmin = \"LearningAdmin\"\n}\n\nexport interface WidgetSettings {\n title?: string\n content?: string\n theme?: string\n editInViewMode?: boolean\n}\n\nexport interface Theme {\n background: string\n fillColor?: string\n color?: string\n}\n\nexport type DateTimeViewMode = \"regular\" | \"short\" | \"long\"\n\nexport interface AssetChangeInfo {\n asset: AssetWithRole\n model: any\n}\n\nexport interface RectangleObject {\n width: number\n height: number\n}\n\nexport interface UserMention {\n fullName: string\n id: string,\n initials: string,\n imageUrl: string\n}\n\nexport interface DashboardApp {\n name: string\n component: string\n category: string\n imageUrl: string\n previewImageUrl: string\n description: string\n defaultXSize: number\n defaultYSize: number\n}","import { DlSubject } from \"@common/stores/reactive\"\r\nimport { DigiLeanAuthUser, RoleArray } from \"@common/model/types\"\r\nimport type { User, UserFullProfile } from \"@api\"\r\nimport { cloneDeep } from \"lodash\"\r\n\r\n// auth user, when logging in an collecting from token and userinfo\r\nconst authUserSubject = new DlSubject({loggedIn: false, roles: new RoleArray()})\r\nexport function setAuthUser(user: DigiLeanAuthUser) {\r\n authUserSubject.next(user)\r\n}\r\nexport function getAuthUser () {\r\n return authUserSubject.getClonedValue()\r\n}\r\nexport function getAccessToken() {\r\n return getAuthUser().token\r\n}\r\nexport const authUser = authUserSubject.asObservable()\r\n\r\n// full user profile containing modules and roles\r\nconst userFullProfileSubject = new DlSubject({})\r\nexport const userFullProfile = userFullProfileSubject.asObservable()\r\nexport function setFullUserProfile(userProfile: UserFullProfile) {\r\n userFullProfileSubject.next(userProfile)\r\n userFull = cloneDeep(userProfile)\r\n}\r\nexport let userFull: Readonly = {}\r\nexport const getUserFullProfile = () => userFull\r\n\r\n\r\n// simple user profile\r\nconst userProfileSubject = new DlSubject({})\r\nexport const userProfile = userProfileSubject.asObservable()\r\nexport function setUserProfile(userProfile: User) {\r\n userProfileSubject.next(userProfile)\r\n}\r\nexport function getUserProfile() {\r\n const up = userProfileSubject.getClonedValue()\r\n return up\r\n}","import type { AspNetErrorResponse } from \"@common/model/aspNetErrorResponse\"\n\nexport const handleErrorsAspNet = (res: AspNetErrorResponse) => {\n const allErrorMsgs: string[] = []\n if (res.errors) {\n for (let key in res.errors) {\n let errors = res.errors[key]\n if (errors && Array.isArray(errors))\n allErrorMsgs.push(...errors)\n }\n }\n if (res.title)\n allErrorMsgs.push(res.title)\n return allErrorMsgs\n}\n\nexport const handleThrownErrorMsg = (error: Error) => {\n let msgs: string[] = []\n if (error.message) {\n if (error.message.includes(\",\"))\n msgs = error.message.split(\",\")\n else\n msgs.push(error.message)\n }\n else if (error.name) {\n msgs.push(error.name)\n }\n return msgs\n}","import backend from \"@common/services/backendHttp\"\nimport type { CustomerConnectedClients } from \"@api\"\n\nconst resourceUrl = \"hubs/system\"\n\nexport const getAllUsersOnlineRest = async () => {\n const url = `${resourceUrl}/getAllUsersOnline`\n return await backend.get(url)\n}\n\nexport const updateSource = async (connectionId: string, source: string) => {\n const user = {connectionId, source}\n const url = `${resourceUrl}/updateSource`\n await backend.post(url, user)\n}\n\nexport const sendProxyEvent = async (eventKey: string, data?: Object) => {\n const url = `${resourceUrl}/ProxyEvent/${eventKey}`\n if (!data)\n data = {}\n await backend.post(url, data)\n}\n\n\nexport const postConnectionEvent = async (connectionId: string) => {\n const url = `signalruser/${connectionId}`\n await backend.post(url, {connectionId})\n}","import { HubConnectionBuilder, HubConnectionState } from \"@microsoft/signalr\"\nimport envConfig from \"@common/envConfig\"\nimport { authUser } from \"@common/stores/userStore\"\nimport type { DigiLeanAuthUser } from \"@common/model/types\"\nimport { DlSubject } from \"@common/stores/reactive\"\nimport * as systemHubService from \"@common/services/systemHubService\"\n\nconst systemHubUrl = envConfig.signalrUrl + \"/system\"\n\nlet user: DigiLeanAuthUser\nconst systemHubStateSub = new DlSubject(HubConnectionState.Disconnected)\nexport const systemHubState = systemHubStateSub.asObservable()\n\nconst builder = new HubConnectionBuilder()\n\n\nexport function getConnectionId() {\n return systemHub.connectionId ? systemHub.connectionId : \"\"\n}\n\nexport let systemHub = builder.withUrl(systemHubUrl,{\n accessTokenFactory: () => {\n const token = user.token!\n return token\n }\n})\n .withAutomaticReconnect({\n nextRetryDelayInMilliseconds: retryContext => {\n if (retryContext.elapsedMilliseconds < 60000) {\n // If we've been reconnecting for less than 60 seconds so far,\n // wait between 0 and 10 seconds before the next reconnect attempt.\n return 2000\n } else if (retryContext.elapsedMilliseconds > 60000 && retryContext.elapsedMilliseconds < 600000) {\n // If we've been reconnecting for more than 60 seconds so far, stop reconnecting.\n return 10000\n }\n else {\n return null // Stop trying\n }\n }\n })\n .build()\n\nsystemHub.onclose(async (error) => {\n console.log(error)\n systemHubStateSub.next(systemHub.state)\n console.log(\"Disconnected from SystemHub\")\n // Try to reconnect, unless the user is logging out\n if (user.loggedIn) {\n setTimeout(async () => {\n await connectSystemHub()\n }, 5000)\n }\n})\n\nsystemHub.onreconnecting((error) => {\n console.log(error)\n systemHubStateSub.next(systemHub.state)\n console.log('Reconnect to SystemHub')\n})\n\nsystemHub.onreconnected(connectionId => {\n systemHubStateSub.next(systemHub.state)\n console.log(\"systemhub: reconnected, new connectionId\", connectionId)\n onConnected()\n})\n\nconst connectSystemHub = async () => {\n console.log(\"Connecting to SystemHub\")\n await systemHub.start().catch(e => {\n console.error(e)\n systemHubStateSub.next(systemHub.state)\n })\n systemHubStateSub.next(systemHub.state)\n}\n\nconst onConnected = () => {\n let connectionId = systemHub.connectionId!\n console.log(\"systemhub: connected, connectionId\", connectionId)\n systemHubService.sendProxyEvent(\"SendUserConnectedRequest\")\n if (envConfig.isTeamsMode)\n systemHubService.updateSource(connectionId, \"teams\")\n \n if (location.hostname == \"localhost\") {\n systemHubService.postConnectionEvent(connectionId!)\n }\n}\n\nconst connectToSignalR = async () => {\n if (systemHub.state !== HubConnectionState.Disconnected)\n return //already have a hub connection, if it's broken the reconnect logic will kick in\n \n await connectSystemHub()\n\n console.log(\"connected SystemHub, systemHub.state\", systemHub.state)\n onConnected()\n}\n\nauthUser.subscribe(u => {\n user = u\n if (u.loggedIn) {\n connectToSignalR()\n } else {\n systemHub.stop()\n }\n})\n\n","import type { DigiLeanAuthUser } from \"@common/model/types\"\nimport { authUser, getAuthUser } from \"@common/stores/userStore\"\nimport { handleErrorsAspNet } from \"@common/services/error/aspNetErrorHandling\"\nimport digiLeanOidc from \"@common/services/auth/digileanOidc\"\n\nimport envConfig from \"@common/envConfig\"\nimport { AspNetErrorResponse } from \"@common/model/aspNetErrorResponse\"\nimport { getConnectionId } from \"@common/services/systemHub\"\n\nconst baseUrl = envConfig.backendUrl\n\nlet authUserInfo: DigiLeanAuthUser\nauthUser.subscribe(auser => {\n authUserInfo = auser\n})\n\nconst jsonContentType = \"application/json\"\n\nconst get = (url: string) => {\n const req = createRequest(url, \"get\", jsonContentType)\n return http(req)\n}\nconst post = (url: string, data: any) => {\n const req = createRequest(url, \"post\", jsonContentType, data)\n return http(req)\n}\nconst postFile = (url: string, file: Blob) => {\n let fd = new FormData()\n fd.append('file', file)\n return postForm(url, fd)\n}\n\nconst postForm = async (url: string, formData: FormData) => {\n const fullUrl = `${baseUrl}/${url}`\n const bearer = getBearer()\n const connectionId = getConnectionId()\n \n const req: RequestInit = {\n method: \"POST\",\n headers: {\n \"Authorization\": bearer!,\n \"Connectionid\": connectionId\n },\n body: formData,\n }\n \n const res = await fetch(fullUrl, req).catch((error) => {\n let errorFetchMsg = \"Error posting file\"\n console.error(error.message)\n throw new Error(errorFetchMsg)\n })\n return resHandler(res)\n}\n\nconst put = (url: string, data?: any) => {\n const req = createRequest(url, \"put\", jsonContentType, data)\n return http(req)\n}\n\nconst remove = (url: string) => {\n const req = createRequest(url, \"delete\")\n return http(req)\n}\n\nconst createRequest = (url: string, method: string, contentType?: string, data?: any) => {\n const bearer = getBearer()\n const connectionId = getConnectionId()\n const args: RequestInit = {\n method,\n headers: { \"Connectionid\": connectionId }\n }\n if (contentType) {\n if (args.headers)\n args.headers[\"Content-Type\"] = contentType\n }\n if (bearer) {\n if (args.headers)\n args.headers[\"Authorization\"] = bearer\n }\n if (data) {\n if (contentType === jsonContentType)\n args.body = JSON.stringify(data)\n else\n args.body = data\n }\n \n const fullUrl = `${baseUrl}/${url}`\n return new Request(fullUrl, args)\n}\n\nasync function http(request: RequestInfo): Promise {\n let errorFetchMsg\n const res = await fetch(request)\n .catch((error) => {\n errorFetchMsg = \"Error fetching\"\n console.error(error.message)\n throw new Error(errorFetchMsg)\n })\n return resHandler(res)\n}\n\nconst resHandler = async (res: Response) => {\n let errorFetchMsg: string\n if (res.ok) {\n const contentType = res.headers.get(\"content-type\")\n if (res.status === 200 || res.status === 201) {\n \n if (contentType) {\n if (contentType.includes(\"application/json\")) {\n const json = await res.json()\n return json\n }\n // pdf or octet-stream\n if (contentType.includes(\"application/\")) {\n const file = await res.arrayBuffer()\n return file\n }\n }\n const text = await res.text()\n return text\n }\n else {\n return \"\"\n }\n } else {\n console.error(`${res.statusText} (${res.status})`)\n \n errorFetchMsg = \"Server returned error\"\n \n if (res.status == 401) {\n console.error(\"Status 401, token might be expired\")\n digiLeanOidc.silentRenew()\n throw new BackendHttpError(\"Not authorized\", res.status)\n }\n if (res.status >= 400 && res.status < 500) {\n try {\n const pd = await res.json() as AspNetErrorResponse\n console.log(pd)\n const errors = handleErrorsAspNet(pd)\n if (errors && errors.length > 0)\n errorFetchMsg = errors.join(\",\")\n }\n catch (ex) {\n console.debug(ex);\n }\n \n } else {\n const message = await res.text()\n console.log(message)\n }\n \n throw new BackendHttpError(errorFetchMsg, res.status)\n }\n}\n\nconst getBearer = () => {\n if (authUserInfo.token) {\n return `Bearer ${authUserInfo.token}`\n } else { // might be issues on initial load\n authUserInfo = getAuthUser()\n if (authUserInfo.token)\n return `Bearer ${authUserInfo.token}`\n else\n console.error(\"BackendHttp:: No token found\")\n }\n}\n\nexport class BackendHttpError extends Error {\n status = 0\n\n constructor(message: string, status: number) {\n super(message)\n this.status = status\n }\n}\n\nexport default { get, post, postFile, postForm, put, delete: remove }","import type { PreferenceKeyValue, User, UserFullProfile, UserPreference, UserProfileImageInfo } from \"@api\"\nimport envConfig from \"@common/envConfig\"\nimport { DigiLeanAuthUser, RoleArray } from \"@common/model/types\"\nimport backend, { BackendHttpError } from \"@common/services/backendHttp\"\nimport { setAuthUser, authUser, setFullUserProfile, setUserProfile } from \"@common/stores/userStore\"\nimport { User as OidcUser} from \"oidc-client-ts\"\nimport oidc from \"@common/services/auth/digileanOidc\"\n\nconst profileImageContainerUrl = `${envConfig.fileStoreUrl}/profile-images`\nlet resourceUrl = \"api/user\"\n\nauthUser.subscribe(user => {\n if (user && user.loggedIn) {\n loadUserProfile()\n loadUserFullProfile()\n } else {\n setUserProfile({})\n setFullUserProfile({})\n }\n})\n\nexport async function getAllUsers() {\n const all = await backend.get(resourceUrl)\n return all\n}\n\nexport async function loadUserFullProfile() {\n try {\n const fullProfile = await backend.get(`${resourceUrl}/getfullprofile`)\n if (fullProfile.settings && typeof fullProfile.settings.settings === \"string\")\n fullProfile.settings = JSON.parse(fullProfile.settings.settings);\n \n setFullUserProfile(fullProfile)\n return fullProfile\n } catch(err: any) {\n handleGetUserProfileError(err)\n }\n}\n\nexport async function loadUserProfile() {\n try {\n const profile = await backend.get(`${resourceUrl}/getuserprofile`)\n setUserProfile(profile)\n return profile\n } catch (err: any) {\n handleGetUserProfileError(err)\n }\n}\n\nexport async function getUsersProfileImage() {\n const userProfileImage = await backend.get(\"profile/GetUsersWithProfileImage\")\n return userProfileImage\n}\n\nexport function getProfileImageFilestore(imageSize: string, fileName: string) {\n return `${profileImageContainerUrl}/${imageSize}-${fileName}`\n}\n\nexport async function getUserPreference(key: string) {\n const url = `${resourceUrl}/preference/${key}`\n const setting = await backend.get(url)\n if (setting.value && typeof setting.value === \"string\")\n return JSON.parse(setting.value)\n return []\n}\n\nexport async function deleteUserPreference(key: string) {\n const url = `${resourceUrl}/preference/${key}`\n return await backend.delete(url)\n}\n\nexport async function updateUserPreference(key: string, value: PreferenceKeyValue) {\n const url = `${resourceUrl}/preference`\n let valString = \"\"\n if (value && typeof value !== \"string\")\n valString = JSON.stringify(value)\n\n const preference = {\n key: key,\n value: valString\n }\n const setting = await backend.put(url, preference)\n if (setting.value && typeof setting.value === \"string\")\n return JSON.parse(setting.value)\n return []\n}\n\nexport function setAuthUserFromOidc (user: OidcUser) {\n const authUser = convertOidcDigiLeanUser(user)\n setAuthUser(authUser)\n}\n\nfunction handleGetUserProfileError(err: Error) {\n if (err instanceof BackendHttpError) {\n if (err.status === 404) {\n console.log(\"No longer valid/paying user, throw out!\")\n oidc.signOut()\n }\n } else\n console.error(err)\n}\n\nfunction convertOidcDigiLeanUser (user: OidcUser) {\n let authUser: DigiLeanAuthUser = {\n loggedIn: true,\n token: user.access_token,\n idToken: user.id_token,\n roles: new RoleArray()\n }\n \n authUser.customerId = parseInt(user.profile.customer_id as string)\n authUser.userName = user.profile.preferred_username\n authUser.userId = user.profile.sub\n authUser.idp = user.profile.idp as string\n authUser.language = user.profile.locale\n authUser.tokenExpire = user.expires_at\n \n authUser.roles = new RoleArray(user.profile.role as string | string[])\n \n return authUser\n}","\nimport { UserManagerSettings, UserManagerSettingsStore, UserManager, Log, WebStorageStateStore, UserLoadedCallback, UserSignedOutCallback } from \"oidc-client-ts\"\nimport { appInsights } from \"@common/services/webclientErrorLogging\"\nimport { setAuthUser, getAuthUser } from \"@common/stores/userStore\"\nimport envConfig from \"@common/envConfig\"\nimport { setAuthUserFromOidc } from \"@common/services/user/userService\"\nimport { RoleArray } from \"@common/model/types\"\n\nconst logPrefix = \"DigiLeanOIDC::\"\n\nconst rootPath = window.location.origin\nlet oicdConfig: UserManagerSettings = {\n authority: envConfig.authServerUrl,\n client_id: \"webclient\",\n redirect_uri: `${rootPath}/callback.html`,\n response_mode: \"query\",\n response_type: \"code\",\n scope:\"openid profile api.read\",\n loadUserInfo: true,\n post_logout_redirect_uri: rootPath,\n userStore: new WebStorageStateStore({ store: window.sessionStorage }),\n accessTokenExpiringNotificationTimeInSeconds: 60,\n silentRequestTimeoutInSeconds: 20000,\n automaticSilentRenew: false,\n silent_redirect_uri: `${rootPath}/silent-renew.html`,\n monitorSession: true\n}\n\nLog.setLogger(console)\nlet manager = new UserManager(oicdConfig)\n\nfunction addUserLoaded(fn: UserLoadedCallback) {\n manager.events.addUserLoaded(fn)\n}\nfunction addUserSignedOut(fn: UserSignedOutCallback) {\n manager.events.addUserSignedOut(fn)\n}\nlet events = {\n addUserLoaded,\n addUserSignedOut\n}\nfunction setupEvents() {\n manager.events.addUserLoaded((user) => {\n const loadedMsg = `user ${user.profile.sub} loaded`\n logDebug(loadedMsg)\n setAuthUserFromOidc(user)\n })\n manager.events.addUserUnloaded(() => {\n logDebug(\"user unloaded. Session terminated. user: \")\n })\n manager.events.addUserSignedIn(() => {\n logDebug(`user signed in`)\n })\n manager.events.addUserSignedOut(() => {\n logDebug(\"user signed OUT, if it was another tab, we need to do it here as well\")\n setAuthUser({loggedIn: false, roles: new RoleArray()})\n })\n manager.events.addAccessTokenExpiring(() => {\n logDebug(\"access token soon expiring\")\n silentRenew()\n })\n manager.events.addAccessTokenExpired(() => {\n logDebug(\"access token expired. Renew hopefully\")\n })\n manager.events.addSilentRenewError(error => {\n const user = getAuthUser()\n appInsights?.trackException({exception: error, properties: {place: \"oidc\", issue: \"Silent renew Error\", userId: user.userId, customerId: user.customerId}})\n logDebug(`error silent renew ${error.message}`)\n })\n}\nlet isAlreadyRenewing = false\nasync function silentRenew () {\n logDebug(`silentRenew:: manual start, isAlreadyRenewing=${isAlreadyRenewing}`)\n if (isAlreadyRenewing)\n return\n try {\n isAlreadyRenewing = true\n const user = await manager.signinSilent()\n logDebug(\"silentRenew:: renewal successful\")\n if (!user)\n throw new Error(\"User was null!\")\n setAuthUserFromOidc(user)\n return user\n } catch(err: any) {\n const user = getAuthUser()\n appInsights?.trackException({exception: err, properties: {place: \"oidc\", issue: \"Silent renew failed\", userId: user.userId, customerId: user.customerId}})\n logError(`silentRenew:: Error from signinSilent: ${err.message}`)\n }\n finally {\n isAlreadyRenewing = false\n logDebug(\"silentRenew:: renewal done\")\n }\n}\n\nasync function getUser() {\n const user = await manager.getUser()\n return user\n}\n\nasync function getLoggedInUser() {\n const user = await manager.getUser()\n if (!user || user.expired) {\n log(\"DigiLEAN auth:: no user means not logged in\")\n return login()\n }\n else {\n return user\n }\n}\nfunction login() {\n manager.signinRedirect({ \n state: window.location.href\n })\n}\n\n// Must be called initially\nasync function initialize(loggedOutUrl?: string, webStorage?: any) {\n if (loggedOutUrl)\n oicdConfig.post_logout_redirect_uri = loggedOutUrl\n\n if (webStorage)\n oicdConfig.userStore = new WebStorageStateStore({ store: window.localStorage })\n \n if (loggedOutUrl || webStorage)\n manager = new UserManager(oicdConfig)\n \n const user = await manager.getUser()\n if (!user || user.expired) {\n log(\"Not logged in\")\n if (!user)\n log(\"No user\")\n else\n log(`User expired=${user.expired}`)\n return null\n }\n else {\n setAuthUserFromOidc(user)\n return user\n }\n}\nfunction signOut() {\n logDebug(\"sign out of digilean\")\n manager.signoutRedirect()\n}\nfunction log(msg: string) {\n console.log(`${logPrefix} ${msg}`)\n}\nfunction logDebug(msg: string) {\n console.debug(`${logPrefix} ${msg}`)\n}\nfunction logError(msg: string) {\n console.error(`${logPrefix} ${msg}`)\n}\n\nsetupEvents()\n\nexport default { \n initialize,\n events,\n getLoggedInUser,\n getUser,\n login,\n signOut,\n silentRenew\n}","import { DlSubject } from \"@common/stores/reactive\"\n\nexport interface LanguageSelected {\n code: string\n ready: boolean\n}\n\ninterface LangStore {\n code: string\n store: object\n}\n\n//const baseLangUrl = \"language\"\n\nlet loadingPromise: Promise | null\n\nasync function getLang(code: string) {\n if (!code) return\n // rest.get(`${baseLangUrl}/${code}`)\n const res = await fetch(`lang/${code}.json`)\n const json = await res.json()\n return json\n}\n\nfunction loadAllLabelsForLanguage (code: string) {\n let selected = selectedLangStore.getValue()\n\n // language promise is already loading or loaded\n if (loadingPromise && selected.code == code)\n return loadingPromise\n\n selectedLangStore.next({code, ready: false})\n loadingPromise = getLang(code)\n return loadingPromise.then(allLabels => {\n const labelsCount = Object.keys(allLabels).length\n //console.log(`Got labels for '${code}' count=`, labelsCount)\n\n if (allLabels && labelsCount > 10) {\n langLabelsStore = allLabels\n selectedLangStore.next({code, ready: true})\n return langLabelsStore\n }\n else {\n let err = `got no language labels for language: ${code}`\n console.error(err)\n throw new Error(err)\n }\n }).catch(err => {\n selectedLangStore.next({code, ready: false})\n console.error(\"could not load lang:\", code)\n throw err\n })\n}\n\nconst selectedLangStore = new DlSubject({code: \"en\", ready: false})\n\nexport function setAndLoadLang (code: string) {\n console.log(\"setAndLoadLang, code=\", code)\n if (!code)\n code = \"en\" //default for those missing\n return loadAllLabelsForLanguage(code)\n}\n\nexport const selectedLang = selectedLangStore.asObservable()\n\n// store\nlet langLabelsStore = {}\n\n// only use in startup config.js\nexport function getCurrentLang(): LangStore {\n let selected = selectedLangStore.getValue()\n return {\n code: selected.code,\n store: langLabelsStore\n }\n}\n\nfunction getTranslation(label: string) {\n let labelLang = langLabelsStore[label]\n if (!labelLang) {\n return label\n }\n return labelLang\n}\n\nexport async function translateLabel(label: string) {\n let selected = selectedLangStore.getValue()\n\n try { \n if (loadingPromise) {\n await loadingPromise\n //console.log(`translate label: already in promise: lang is ${selected.code}, label is ${label}`)\n return getTranslation(label)\n }\n \n await loadAllLabelsForLanguage(selected.code)\n //console.log(`translate label: initiate loading first: lang is ${selected.code}, label is ${label}`)\n return getTranslation(label)\n }\n catch (e) {\n return label\n }\n}\n\n/**\n * translate label instant\n * @example\n * translateLabelInstant(\"COMMON_USER_SAVED\")\n * @param label try to translate, return self if no translation available\n * @returns \n */\nexport function translateLabelInstant(label: string) {\n return getTranslation(label)\n}","import angular from 'angular';\r\nimport angularDragula from 'angularjs-dragula';\r\nimport digiLeanOidc from \"@common/services/auth/digileanOidc\"\r\nimport { userFullProfile } from \"@common/stores/userStore\"\r\nimport { setAndLoadLang } from \"@common/services/language/DigiLeanLang\"\r\n\r\nvar allModules = [\r\n 'ui.router',\r\n 'ui.bootstrap',\r\n 'ui.tree',\r\n 'ui.toggle',\r\n 'ngFileUpload',\r\n 'ang-drag-drop',\r\n 'ngSanitize',\r\n 'angular-loading-bar',\r\n 'bootstrapLightbox',\r\n 'pascalprecht.translate',\r\n 'colorpicker.module',\r\n 'tmh.dynamicLocale',\r\n 'gridster',\r\n 'as.sortable',\r\n 'ngTable',\r\n 'angular-peity',\r\n 'ui.sortable',\r\n 'angular-cron-gen',\r\n 'ngImgCrop',\r\n angularDragula(angular),\r\n 'ngMaterial'\r\n]\r\nvar DigiLean = angular.module('DigiLean', allModules)\r\n\r\n\r\nDigiLean.factory('moduleCache', ['$cacheFactory', function ($cacheFactory) {\r\n return $cacheFactory('moduleCache')\r\n}])\r\n\r\nDigiLean.run(['$templateCache', function ($templateCache) {\r\n\r\n function requireAll(requireContext) {\r\n return requireContext.keys().map(function (val) {\r\n return {\r\n tpl: requireContext(val),\r\n name: val.split('/').pop()\r\n }\r\n })\r\n }\r\n\r\n let appFiles = requireAll(require.context(\".\", true, /\\.html$/))\r\n appFiles.map(function (val) {\r\n var template = val.tpl\r\n $templateCache.put(val.name, template.default) // latest html-loader use esmodule\r\n })\r\n\r\n let commonFiles = requireAll(require.context(\"../../../common\", true, /\\.html$/))\r\n commonFiles.map(function (val) {\r\n var template = val.tpl\r\n $templateCache.put(val.name, template.default) // latest html-loader use esmodule\r\n })\r\n}])\r\n\r\n// actually loads angular app\r\nasync function bootstrapApp(userProfile) {\r\n // alternative to ng-app in index.html, want to do authentication before bootstrapping\r\n await setAndLoadLang(userProfile.preferredLanguage)\r\n angular.element(function() {\r\n angular.bootstrap(document, ['DigiLean'], {\r\n strictDi: true\r\n })\r\n })\r\n sub.unsubscribe()\r\n}\r\n\r\nlet loginRequest = { \r\n state: `${window.location.origin}${window.location.hash}`,\r\n}\r\nconst params = new URLSearchParams(window.location.search)\r\nif (params.has(\"login_hint\")) {\r\n const loginHint = params.get(\"login_hint\")\r\n console.log(`Login hint Login_hint found='${loginHint}'`)\r\n loginRequest.login_hint = loginHint\r\n}\r\n\r\n\r\ndigiLeanOidc.initialize().then(user => {\r\n if (!user)\r\n digiLeanOidc.login()\r\n})\r\n\r\nlet appBootstrapped = false\r\nconst sub = userFullProfile.subscribe(ufp => {\r\n if (!ufp || !ufp.user || !ufp.user.userId) {\r\n console.log(\"not logged in yet\")\r\n }\r\n else {\r\n //console.log(\"authuser\", user)\r\n if (!appBootstrapped) {\r\n bootstrapApp(ufp.user)\r\n appBootstrapped = true\r\n }\r\n else\r\n console.error(\"app already bootstrapped\")\r\n return ufp\r\n }\r\n})\r\n","import { getCurrentLang } from \"@common/services/language/DigiLeanLang\"\r\n\r\nconst DigiLean = angular.module('DigiLean')\r\nDigiLean.config(['$stateProvider', '$urlRouterProvider', '$locationProvider', '$httpProvider', '$translateProvider', '$compileProvider', 'tmhDynamicLocaleProvider',\r\n function ($stateProvider, $urlRouterProvider, $locationProvider, $httpProvider, $translateProvider, $compileProvider, tmhDynamicLocaleProvider) {\r\n // default route\r\n $urlRouterProvider.otherwise(\"/personaldashboard\");\r\n\r\n $locationProvider.html5Mode(false).hashPrefix('');\r\n\r\n // Setup language and translations\r\n tmhDynamicLocaleProvider.localeLocationPattern('i18n/{{locale}}.js');\r\n \r\n // language async loader\r\n $translateProvider.useLoader('DigiLeanAngularLoader')\r\n // sync load lang should be already loaded\r\n const currLang = getCurrentLang()\r\n \r\n $translateProvider.translations(currLang.code, currLang.store)\r\n\r\n // Routing\r\n $stateProvider \r\n .state('strategymap', {\r\n url: \"/strategymap\",\r\n templateUrl: 'strategyviewer.html',\r\n data: { pageTitle: 'DigiLEAN.tools' }\r\n })\r\n .state('strategyTaskList', {\r\n url: \"/strategyTaskList\",\r\n templateUrl: 'strategyTaskUrl.html',\r\n data: { pageTitle: 'DigiLEAN.tools' }\r\n })\r\n .state('productionboard', {\r\n url: \"/productionboard\",\r\n templateUrl: 'production.html',\r\n data: { pageTitle: 'DigiLEAN.tools' }\r\n })\r\n .state('systemdashboard', {\r\n url: \"/systemdashboard\",\r\n templateUrl: 'systemdashboard.html',\r\n data: { pageTitle: 'DigiLEAN.tools' }\r\n })\r\n .state('dashboard', {\r\n url: \"/dashboard/:id?mode&interval\",\r\n templateUrl: 'dashboardDesigner.html',\r\n data: { pageTitle: 'DigiLEAN.tools' }\r\n })\r\n .state('dashboarddesigner', {\r\n url: \"/dashboarddesigner\",\r\n templateUrl: 'dashboardDesigner.html',\r\n data: { pageTitle: 'DigiLEAN.tools' }\r\n })\r\n .state('personaldashboard', {\r\n url: \"/personaldashboard\",\r\n templateUrl: 'myprofile.html',\r\n data: { pageTitle: 'DigiLEAN.tools' }\r\n })\r\n .state('settings', {\r\n url: \"/settings?tab\",\r\n templateUrl: 'profileSettings.html',\r\n data: { pageTitle: 'DigiLEAN.tools' }\r\n })\r\n .state('teamspace', {\r\n url: \"/teamspace\",\r\n templateUrl: 'teamdashboard.html',\r\n data: { pageTitle: 'DigiLEAN.tools' }\r\n })\r\n .state('myspace', {\r\n url: \"/myspace\",\r\n templateUrl: 'myprofile.html',\r\n data: { pageTitle: 'DigiLEAN.tools' }\r\n })\r\n .state('inbox', {\r\n url: \"/inbox?tab¬ificationid\",\r\n templateUrl: 'inbox.html',\r\n data: { pageTitle: 'DigiLEAN.tools' }\r\n })\r\n .state('hours', {\r\n url: \"/hours\",\r\n templateUrl: 'hoursHub.html',\r\n data: { pageTitle: 'DigiLEAN.tools' }\r\n })\r\n .state('myhours', {\r\n url: \"/myhours\",\r\n templateUrl: 'myhours.html',\r\n data: { pageTitle: 'DigiLEAN.tools' }\r\n })\r\n .state('hoursinvoicereport', {\r\n url: \"/hours/invoicereport\",\r\n templateUrl: 'invoiceReportPage.html',\r\n data: { pageTitle: 'DigiLEAN.tools' }\r\n })\r\n .state('newFlexiboard', {\r\n url: \"/flexiboard/newFlexiboard\",\r\n templateUrl: 'newFlexiboard.html',\r\n params: {\r\n assetid: \"0\",\r\n strategygoalid: \"0\",\r\n source: \"\",\r\n },\r\n data: { pageTitle: 'DigiLEAN.tools' }\r\n })\r\n /*deprecated*/\r\n .state('newboardsetting', {\r\n url: \"/newboard/:id/:destination\",\r\n params: {\r\n id: \"0\",\r\n destination: \"board\",\r\n assetid: \"0\"\r\n },\r\n templateUrl: 'newBoardSetting.html',\r\n data: { pageTitle: 'DigiLEAN.tools' }\r\n })\r\n .state('flexiboards', {\r\n url: \"/flexiboards\",\r\n templateUrl: 'flexiboards.html',\r\n data: { pageTitle: 'DigiLEAN.tools' }\r\n })\r\n .state('flexiboard', {\r\n url: \"/flexiboard/:id?mode&interval\",\r\n templateUrl: 'flexiboard.html',\r\n data: { pageTitle: 'DigiLEAN.tools' }\r\n })\r\n .state('board', {\r\n url: \"/board/:id?mode\",\r\n templateUrl: 'boardresolver.html'\r\n })\r\n .state('tasksearch', {\r\n url: \"/tasksearch\",\r\n templateUrl: 'taskSearch.html',\r\n data: { pageTitle: 'DigiLEAN.tools' }\r\n })\r\n .state('personal', {\r\n url: \"/personal/:id\",\r\n params: {\r\n id: \"\"\r\n },\r\n templateUrl: 'personalboard.html'\r\n })\r\n .state('myprofile', {\r\n url: \"/myprofile\",\r\n templateUrl: 'myprofile.html'\r\n })\r\n .state('boarddesigner', {\r\n url: \"/boarddesigner/:id\",\r\n templateUrl: 'boardDesignerResolver.html',\r\n data: { destination: ':destination' }\r\n })\r\n .state('A3', {\r\n url: \"/A3\",\r\n templateUrl: 'a3.html',\r\n data: { pageTitle: 'DigiLEAN.tools' }\r\n })\r\n .state('a3templates', {\r\n url: \"/a3templates\",\r\n templateUrl: 'a3templates.html',\r\n data: { pageTitle: 'DigiLEAN.tools' }\r\n })\r\n .state('a3templateDesigner', {\r\n url: \"/a3templates/layout/:id\",\r\n templateUrl: 'a3templateLayout.html',\r\n data: { pageTitle: 'DigiLEAN.tools' }\r\n })\r\n .state('a3reports', {\r\n url: \"/a3reports\",\r\n templateUrl: 'a3reports.html',\r\n data: { pageTitle: 'DigiLEAN.tools' }\r\n })\r\n .state('benefitsrealization', { \r\n url: \"/benefitsrealization\",\r\n templateUrl: 'benefitsRealization.html',\r\n data: { pageTitle: 'DigiLEAN.tools' }\r\n })\r\n .state('timebenefitsrealization', { \r\n url: \"/timebenefitsrealization\",\r\n templateUrl: 'timeBenefitsRealization.html',\r\n data: { pageTitle: 'DigiLEAN.tools' }\r\n })\r\n .state('a3designer', {\r\n url: \"/a3designer/:id\",\r\n templateUrl: 'a3designer.html',\r\n data: { pageTitle: 'DigiLEAN.tools' }\r\n })\r\n .state('a3wizard', {\r\n url: \"/A3/:id\",\r\n templateUrl: 'a3wizard.html',\r\n data: { pageTitle: 'DigiLEAN.tools' }\r\n })\r\n\r\n .state('a3PreviewDesigner', {\r\n url: \"/A3/preview/:id/version/:version\",\r\n params: {\r\n id: \"0\",\r\n version: \"0\"\r\n },\r\n templateUrl: 'a3preview.html',\r\n data: { pageTitle: 'DigiLEAN.tools' }\r\n })\r\n .state('deviationstatus', {\r\n url: \"/deviationstatus\",\r\n templateUrl: 'deviationStatus.html',\r\n data: { pageTitle: 'DigiLEAN.tools' }\r\n })\r\n .state('deviationevaluation', {\r\n url: \"/deviationevaluation\",\r\n templateUrl: 'deviationEvaluation.html',\r\n data: { pageTitle: 'DigiLEAN.tools' }\r\n })\r\n .state('deviationprojectstatus', {\r\n url: \"/projectStatus/deviationprojectstatus\",\r\n templateUrl: 'deviationProjectStatus.html',\r\n data: { pageTitle: 'DigiLEAN.tools' }\r\n })\r\n .state('deviationongoing', {\r\n url: \"/deviationongoing/:id\",\r\n params: {\r\n id: \"\"\r\n },\r\n templateUrl: 'deviationsOngoing.html',\r\n data: { pageTitle: 'DigiLEAN.tools' }\r\n })\r\n .state('deviationsearch', {\r\n url: \"/deviationsearch\",\r\n templateUrl: 'deviationSearch.html',\r\n data: { pageTitle: 'DigiLEAN.tools' }\r\n })\r\n .state('newSearchList', {\r\n url: \"/newSearchList\",\r\n templateUrl: 'newSearchList.html',\r\n data: { pageTitle: 'DigiLEAN.tools' }\r\n })\r\n .state('improvement', {\r\n url: \"/improvement\",\r\n templateUrl: 'improvement.html',\r\n data: { pageTitle: 'DigiLEAN.tools' }\r\n })\r\n .state('improvementstatus', {\r\n url: \"/improvementstatus\",\r\n templateUrl: 'improvementstatus.html',\r\n data: { pageTitle: 'DigiLEAN.tools' }\r\n })\r\n .state('improvementongoing', {\r\n url: \"/improvementongoing/:id\",\r\n params: {\r\n id: \"\"\r\n },\r\n templateUrl: 'ongoingimprovements.html',\r\n data: { pageTitle: 'DigiLEAN.tools' }\r\n })\r\n \r\n .state('improvementsearch', {\r\n url: \"/improvementsearch\",\r\n templateUrl: 'improvementsearch.html',\r\n data: { pageTitle: 'DigiLEAN.tools' }\r\n })\r\n .state('project', {\r\n url: \"/project\",\r\n templateUrl: 'project.html',\r\n data: { pageTitle: 'DigiLEAN.tools' }\r\n })\r\n .state('projectgrid', {\r\n url: \"/project/projectGrid\",\r\n templateUrl: 'projectGrid.html',\r\n data: { pageTitle: 'DigiLEAN.tools' }\r\n })\r\n .state('projectportfolio', {\r\n url: \"/project/projectportfolio\",\r\n templateUrl: 'projectPortfolio.html',\r\n data: { pageTitle: 'DigiLEAN.tools' }\r\n })\r\n .state('customerstatus', {\r\n url: \"/customerstatus\",\r\n templateUrl: 'customerstatus.html',\r\n data: { pageTitle: 'DigiLEAN.tools' }\r\n })\r\n .state('projectDetails', {\r\n url: \"/projectDetails/:id\",\r\n templateUrl: 'projectDetails.html',\r\n data: { pageTitle: 'DigiLEAN.tools' }\r\n })\r\n .state('projectboard', {\r\n url: \"/project/board\",\r\n templateUrl: 'projectboard.html',\r\n data: { pageTitle: 'DigiLEAN.tools' }\r\n })\r\n .state('goalDetails', {\r\n url: \"/goalDetails/:id\",\r\n params: {\r\n id: \"0\",\r\n assetid: \"0\"\r\n },\r\n templateUrl: 'goalDetails.html',\r\n data: { pageTitle: 'DigiLEAN.tools' }\r\n })\r\n .state('selectedPlan', {\r\n url: \"/selectedplan\",\r\n templateUrl: 'selectedPlan.html',\r\n data: { pageTitle: 'DigiLEAN.tools' }\r\n })\r\n .state('selectedProject', {\r\n url: \"/selectedproject/:id\",\r\n templateUrl: 'selectedProject.html',\r\n data: { pageTitle: 'DigiLEAN.tools' }\r\n })\r\n .state('teamboardplan', {\r\n url: \"/teamboardplan/:id\",\r\n templateUrl: 'teamboardplan.html'\r\n })\r\n .state('datalist', {\r\n url: \"/admin/data/lists\",\r\n templateUrl: \"datalists.html\"\r\n })\r\n .state('area', {\r\n url: \"/admin/area\",\r\n templateUrl: 'area.html'\r\n })\r\n .state('contactlist', {\r\n url: \"/admin/contactlist\",\r\n templateUrl: 'contactlist.html'\r\n })\r\n .state('assets', {\r\n url: \"/admin/assets\",\r\n templateUrl: 'assets.html'\r\n })\r\n .state('customerAdmin', {\r\n url: \"/admin/data/lists\",\r\n templateUrl: 'customerAdmin.html'\r\n })\r\n .state('customers', { //DigiLEAN customers\r\n url: \"/admin/customers\",\r\n templateUrl: 'customers.html'\r\n })\r\n .state('payingcustomers', { //DigiLEAN paying customers\r\n url: \"/admin/payingcustomers?tab\",\r\n params: {\r\n // pageid: {\r\n // value: \"\",\r\n // dynamic: true\r\n // }\r\n tab: \"billinglist\",\r\n },\r\n templateUrl: 'payingCustomers.html'\r\n })\r\n .state('trials', { //DigiLEAN trials\r\n url: \"/admin/trials\",\r\n templateUrl: 'trials.html'\r\n })\r\n .state('adminorganization', {\r\n url: \"/admin/organization\",\r\n templateUrl: 'organizationAdmin.html'\r\n })\r\n .state('adminflexiboards', {\r\n url: \"/admin/boards\",\r\n templateUrl: 'flexiboardContainerAdmin.html'\r\n })\r\n .state('admindeviations', {\r\n url: \"/admin/deviations\",\r\n templateUrl: 'deviationAdmin.html'\r\n })\r\n .state('deviationType', {\r\n url: \"/admin/deviationtype/:id\",\r\n params: {\r\n id: \"\"\r\n },\r\n templateUrl: 'deviationTypeDetails.html'\r\n })\r\n .state('adminlearning', {\r\n url: \"/admin/learning\",\r\n templateUrl: 'learningAdmin.html'\r\n })\r\n .state('learningdesigner', {\r\n url: \"/admin/learningdesigner/:id?:pageid\",\r\n reloadOnSearch: false,\r\n params: {\r\n id: \"\",\r\n pageid: {\r\n value: \"\",\r\n dynamic: true\r\n }\r\n },\r\n templateUrl: 'learningDesigner.html'\r\n })\r\n .state('learningmaterialstats', {\r\n url: \"/admin/learningmaterialstats/:id\",\r\n reloadOnSearch: false,\r\n params: {\r\n id: \"\",\r\n },\r\n templateUrl: 'learningMaterialStats.html'\r\n })\r\n .state('adminprojects', {\r\n url: \"/admin/projects\",\r\n templateUrl: 'projectAdmin.html'\r\n })\r\n .state('admina3', {\r\n url: \"/admin/a3\",\r\n templateUrl: 'a3Admin.html'\r\n })\r\n .state('adminimprovement', {\r\n url: \"/admin/improvement\",\r\n templateUrl: 'improvementAdmin.html'\r\n })\r\n .state('admindata', {\r\n url: \"/admin/data?tab\",\r\n templateUrl: 'dataAdmin.html'\r\n })\r\n .state('admindatasource', {\r\n url: \"/admin/data/:id\",\r\n templateUrl: 'dataSource.html'\r\n })\r\n .state('adminmanualkpiidentifier', {\r\n url: \"/admin/data/manualKpiIdentifier\",\r\n templateUrl: 'manualKpiIdentifierAdmin.html'\r\n })\r\n .state('dataVisualizationTypeController', {\r\n url: \"/admin/data/manualKpiIdentifier/:type\",\r\n templateUrl: 'dataVisualizationType.html'\r\n })\r\n \r\n .state('admindatalist', {\r\n url: \"/admin/datalist/:id\",\r\n templateUrl: 'datalist.html'\r\n })\r\n \r\n \r\n .state('users', {\r\n url: \"/users\",\r\n templateUrl: 'users.html',\r\n data: { pageTitle: 'DigiLEAN.tools' }\r\n })\r\n .state('strategy', {\r\n url: \"/strategy\",\r\n templateUrl: 'strategy.html',\r\n data: { pageTitle: 'DigiLEAN.tools' }\r\n })\r\n .state('strategyKPI', {\r\n url: \"/strategy/strategyKPI\",\r\n templateUrl: 'strategyBowlerChart.html',\r\n data: { pageTitle: 'DigiLEAN.tools' }\r\n })/* \r\n .state('strategyFlexibleKPI', {\r\n url: \"/strategy/strategyFlexibleKPI\",\r\n templateUrl: 'strategyFlexibleBowlerChart.html',\r\n data: { pageTitle: 'DigiLEAN.tools' }\r\n })*/\r\n .state('learning', {\r\n url: \"/learning\",\r\n templateUrl: 'learning.html',\r\n data: { pageTitle: 'DigiLEAN.tools' }\r\n })\r\n .state('learningexternal', {\r\n url: \"/learning/:location/:id?:pageid\",\r\n reloadOnSearch: false,\r\n params: {\r\n location: {\r\n value: \"internal\"\r\n },\r\n id: {\r\n value: \"\"\r\n },\r\n pageid: {\r\n value: \"\",\r\n dynamic: true\r\n }\r\n },\r\n templateUrl: 'learningViewer.html'\r\n })\r\n .state('apiclients', {\r\n url: \"/admin/apiclients\",\r\n component: 'apiClients',\r\n })\r\n .state('integrations', {\r\n url: \"/admin/integrations\",\r\n component: 'integrationsAdmin'\r\n })\r\n .state('adminconnector', {\r\n url: \"/admin/connector/:id\",\r\n component: 'connectorAdmin',\r\n })\r\n .state('adminjob', {\r\n url: \"/admin/job/:id\",\r\n component: 'jobAdmin',\r\n })\r\n .state('adminJobPart', {\r\n url: \"/admin/jobpart/:id\",\r\n component: 'jobpartAdmin',\r\n })\r\n .state('connectorMonitor', {\r\n url: \"/connector/:id\",\r\n component: 'connectorMonitor',\r\n })\r\n .state('monitoringAdmin', {\r\n url: \"/admin/monitor\",\r\n component: 'monitoringAll',\r\n })\r\n .state('jobLogs', {\r\n url: \"/joblogs/:id\",\r\n component: 'jobLogs'\r\n })\r\n .state('languagelabels', {\r\n url: \"/admin/language\",\r\n templateUrl: 'languageLabelAdmin.html'\r\n })\r\n .state('userdebug', {\r\n url: \"/userdebug\",\r\n component: 'userComponent',\r\n })\r\n\r\n // PERFORMANCE configs!\r\n $compileProvider.debugInfoEnabled(false);\r\n \r\n $httpProvider.useApplyAsync(true);\r\n //\r\n\r\n if (!$httpProvider.defaults.headers.get) {\r\n $httpProvider.defaults.headers.get = {};\r\n }\r\n\r\n $httpProvider.defaults.headers.get['If-Modified-Since'] = 'Mon, 26 Jul 1997 05:00:00 GMT';\r\n $httpProvider.defaults.headers.get['Cache-Control'] = 'no-cache';\r\n $httpProvider.defaults.headers.get['Pragma'] = 'no-cache';\r\n $httpProvider.interceptors.push('authInterceptorService');\r\n\r\n $httpProvider.defaults.useXDomain = true;\r\n delete $httpProvider.defaults.headers.common[\"X-Requested-With\"];\r\n \r\n }]);\r\n\r\nDigiLean.run(['$rootScope', '$state', function ($rootScope, $state) {\r\n $rootScope.$state = $state;\r\n}]);\r\n\r\n// Highcharts\r\nHighcharts.setOptions({\r\n global: {\r\n useUTC: false\r\n }\r\n});","import angular from \"angular\"\nimport { setAndLoadLang } from \"@common/services/language/DigiLeanLang\"\nimport moment from \"moment\"\n\nconst digiLean = angular.module(\"DigiLean\")\n\ndigiLean.factory('DigiLeanLangState', ['$translate', 'tmhDynamicLocale', '$http', function ($translate, tmhDynamicLocale, $http) {\n \n function setLang(code: string) {\n console.log(\"DigiLean Language:: set to:\", code)\n setAndLoadLang(code)\n tmhDynamicLocale.set(code)\n $translate.use(code)\n setRequestHeader(code)\n setMomentLocale(code)\n }\n\n function setRequestHeader(code: string) {\n // Request header\n let locale = code\n if (code == \"en\") {\n if (navigator.language)\n locale = navigator.language\n }\n $http.defaults.headers.common[\"Accept-Language\"] = locale\n }\n return {setLang}\n\n}])\n\ndigiLean.factory('DigiLeanAngularLoader', function () {\n return function (options) {\n return setAndLoadLang(options.key)\n }\n})\n\nconst setMomentLocale = (code: string) => {\n if (code === \"no\") {\n moment.locale(\"nb\")\n } else if (code === \"en\") {\n moment.locale(\"en-gb\") //Use ISO week\n } else moment.locale(code)\n}","import envConfig from \"@common/envConfig\";\n\n\nangular.module(\"DigiLean\").factory('activityService', ['$rootScope', '$http',\n function ($rootScope, $http) {\n function activityService() {\n var resource = \"/activitylog\";\n var resourceUrl = envConfig.webApiUrl + resource;\n\n return {\n \n getLog: function () {\n var url = resourceUrl + \"/getlog\";\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n getDailyFeed: function (filter) {\n var url = resourceUrl + \"/getDailyFeed\";\n return $http.post(url,filter).then(function (result) {\n return result.data;\n });\n },\n getLogForActivity: function (activityRequest) {\n var url = resourceUrl + \"/getLogForActivity\";\n return $http.post(url, activityRequest).then(function (result) {\n return result.data;\n });\n },\n getLogForStrategy: function (activityRequest) {\n var url = resourceUrl + \"/getLogForStrategy\";\n return $http.post(url, activityRequest).then(function (result) {\n return result.data;\n });\n },\n \n getActivityLast24hours: function () {\n var url = resourceUrl + \"/getActivityLast24hours\";\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n add: function (activity) {\n return $http.post(resourceUrl, activity).then(function (result) {\n return result.data;\n });\n }\n\n }\n }\n return activityService;\n }]);\n","import backendHttp from \"./backendHttp\"\n// import { systemHub } from \"@common/services/systemHub\"\n\ninterface CachedPromise {\n promise: Promise\n created: Date\n cacheTimeMinutes: number\n expire: Date\n}\nlet cache = new Map()\n\n// 1. not cache failed requests\n// 2. invalidating after time\n// 3. invalidate on events\n\nexport function cachedGetRequest(url: string, cacheTimeMinutes: number = 60, invalidateEvents: string[] = []): Promise {\n\n if (!cache.has(url)) {\n createCache(url, cacheTimeMinutes)\n }\n \n const cachedPromise = cache.get(url)!\n const expired = checkIfExpired(cachedPromise)\n if (expired) {\n console.log(`Cache for ${url} expired after ${cachedPromise.cacheTimeMinutes}`)\n createCache(url, cacheTimeMinutes)\n }\n\n return cache.get(url)!.promise as Promise\n}\n\nfunction createCache(url: string, cacheTimeMinutes: number) {\n const promise = backendHttp.get(url)\n\n promise.catch(() => {\n cache.delete(url) // cache removed because failed request\n })\n\n const created = new Date()\n const expire = new Date()\n expire.setMinutes(expire.getMinutes() + cacheTimeMinutes)\n cache.set(url, {created, promise, cacheTimeMinutes, expire }) // will overwrite previous cached promise\n}\n\nfunction checkIfExpired(cachedPromise: CachedPromise) {\n if (cachedPromise.cacheTimeMinutes == 0)\n return false\n const now = new Date().getTime()\n const expire = cachedPromise.expire.getTime()\n return now > expire\n}","import { AdminUser, AssetUser, AuthenticationMode, ChangePasswordModel, Company, CountryInfo, CreateCustomer, Customer, CustomerAccount, CustomerLicenseSummary, \n CustomerListModel, CustomerRolesStats, CustomerSetting, CustomerSettingKeys, CustomerStatusInfo, DeployCustomer, DigiMail, Message, PreferenceKeyValue, TableParams, \n TimePeriod, User, UserAsset, UserCheckupResult, UserInfo, UserShortInfo, UsersTableValues, ValuesQueryOptions, BusinessUnit} from \"@api\"\nimport backend from \"@common/services/backendHttp\"\nimport { cachedGetRequest } from \"@common/services/cacheService\"\n\nconst resourceUrl = \"api/customer\"\nconst resourceUrlSettings = \"api/customersettings\"\nconst resourceUrlMessages = \"api/messages\"\n\nexport const getDefaultCurrency = () => \"EUR\"\n\nexport const getDefaultFiscalmonth = () => 1\n\nexport const getCountryList = () => {\n const url = resourceUrl + \"/getCountryList\"\n return backend.get(url)\n}\n\nexport const getCompanySettingServer = (setting: CustomerSettingKeys) => {\n const url = `${resourceUrlSettings}/getsetting/${setting}`\n return backend.get(url)\n}\n\nexport const updateCompanySettingServer = (key: CustomerSettingKeys, value: string) => {\n const keyValue: PreferenceKeyValue = {\n key,\n value\n }\n const url = `${resourceUrlSettings}/updatesetting/${key}`\n return backend.put(url, keyValue)\n}\n\nexport const updateLogo = (logoId: string) => {\n const url = resourceUrl + \"/updateLogo/\" + logoId\n return backend.put(url, null)\n}\n\nexport const getLicenseChange = (id: number) => {\n const url = resourceUrl + \"/GetLicenseChange/\" + id\n return backend.get(url)\n}\n\nexport const getLicensesChanges = (timePeriod: TimePeriod) => {\n const url = resourceUrl + \"/GetLicensesChanges\"\n return backend.post(url, timePeriod)\n}\n\nexport const increaceMobileLicenses = (increasedNumber: number) => {\n const url = resourceUrl + \"/increaceMobileLicenses/\" + increasedNumber\n return backend.put(url, null)\n}\n\nexport const increaceUserLicenses = (increasedNumber: number) => {\n const url = resourceUrl + \"/increaceUserLicenses/\" + increasedNumber\n return backend.put(url, null)\n}\n\nexport const getTableValues = (tableParams: TableParams) => {\n const url = resourceUrl + \"/getTableValues/\"\n return backend.post(url, tableParams)\n}\n\nexport const sendMail = (mail: DigiMail) => {\n const url = resourceUrl + \"/sendmail\"\n return backend.post(url, mail)\n}\n\nexport const sendMessage = (message: Message) => {\n const url = resourceUrlMessages\n return backend.post(url, message)\n}\n\nexport const sendBoardMessage = (message: Message) => {\n const url = resourceUrlMessages + \"/sendBoardMessage\"\n return backend.post(url, message)\n}\n\nexport const updateMessage = (message: Message) => {\n const url = resourceUrlMessages + \"/updateMessage\"\n return backend.post(url, message)\n}\n\nexport const deleteMessage = (id: number) => {\n const url = resourceUrlMessages + \"/deleteMessage/\" + id\n return backend.delete(url)\n}\n\n// TODO: does not exist in backend\n// sendPushNotification: function (push) {\n// var url = webApiUrl + \"/notifications/push\";\n// return $http.post(url, push).then(function (result) {\n// return result.data;\n// });\n// },\n\nexport const getCurrent = () => {\n const url = resourceUrl + \"/getCurrent\"\n return cachedGetRequest(url, 60).then(current => {\n return current\n }) \n}\n\nexport const getAccount = () => {\n const url = resourceUrl + \"/getAccount\"\n return backend.get(url)\n}\n\nexport const getRoleStats = () => {\n const url = resourceUrl + \"/getRoleStats\"\n return backend.get(url)\n}\n\nexport const createCustomer = (customer: CreateCustomer) => {\n return backend.post(resourceUrl, customer)\n}\n\nexport const updateCustomer = (customerData: CreateCustomer) => {\n const url = resourceUrl + \"/\" + customerData.customer?.id\n return backend.put(url, customerData)\n}\n\nexport const deployCustomer = (deployCustomer: DeployCustomer) => {\n const url = resourceUrl + \"/deployCustomer\"\n return backend.post(url, deployCustomer)\n}\n\nexport const createSupportUser = (customerId: number, adminUser: AdminUser) => {\n const url = resourceUrl + \"/CreateSupportUser/\" + customerId\n return backend.post(url, adminUser)\n}\n\n\nexport const getAllUsers = () => {\n const url = resourceUrl + \"/getAllUsers\"\n return cachedGetRequest(url, 60).then(users => {\n return users\n }) // backend.get(url)\n}\n\n\nexport const getAllUsersWithAppInstallations = () => {\n const url = resourceUrl + \"/getAllUsersWithAppInstallations/\"\n return backend.get(url)\n}\n\nexport const getApiKeys = () => {\n const url = resourceUrl + \"/getApiKeys\"\n return backend.get(url)\n}\n\nexport const getMessagesWithOptions = (options: ValuesQueryOptions) => {\n const url = resourceUrlMessages + \"/getMessagesWithOptions/\"\n return backend.post(url, options)\n}\n\nexport const getMessages = () => {\n return backend.get(resourceUrlMessages)\n}\n\nexport const addReply = (messageId: number, reply: Message) => {\n const url = resourceUrlMessages + \"/\" + messageId + \"/reply\"\n return backend.post(url, reply)\n}\n\nexport const getReplies = (messageId: number) => {\n const url = resourceUrlMessages + \"/\" + messageId + \"/getreplies\"\n return backend.get(url)\n}\n\nexport const getAdminMessages = () => {\n const url = resourceUrlMessages + \"/getAdminMessages\"\n return backend.get(url)\n}\n\nexport const getMessagesByAsset = (assetId: number, timePeriod: TimePeriod) => {\n const url = resourceUrlMessages + \"/getMessagesByAsset/\" + assetId\n return backend.post(url, timePeriod)\n}\n\nexport const getUsersForAsset = (assetId: number) => {\n const url = resourceUrl + \"/getUsersForAsset/\" + assetId\n return backend.get(url)\n}\n\nexport const getUsersWithOutAsset = () => {\n const url = resourceUrl + \"/GetUsersWithOutAsset\"\n return backend.get(url)\n}\n\nexport const giveAccessToUsersForAsset = (assetId: number, users: UserAsset[]) => {\n const url = resourceUrl + \"/GiveAccessToUsersForAsset/\" + assetId\n return backend.post(url, users)\n}\n\nexport const giveAccessToUsersForBoard = (boardId: number, users: UserAsset[]) => {\n const url = resourceUrl + \"/GiveAccessToUsersForBoard/\" + boardId\n return backend.post(url, users)\n}\n\nexport const getCustomersForAdmin = () => {\n const url = resourceUrl + \"/getcustomersforadmin\"\n return backend.get(url)\n}\n\nexport const getArcivedCustomersForAdmin = () => {\n const url = resourceUrl + \"/GetArcivedCustomersForAdmin\"\n return backend.get(url)\n}\n\nexport const getCustomerForAdmin = (customerId: number) => {\n const url = resourceUrl + \"/GetOneCustomerForAdmin/\" + customerId\n return backend.get(url)\n}\n\nexport const getCustomersSimpleForAdmin = () => {\n const url = resourceUrl + \"/getcustomerssimpleforadmin\"\n return backend.get(url)\n}\n\nexport const updateMaxBusinessUnitLicenses = (businessUnit: BusinessUnit) => {\n const url = resourceUrl + \"/UpdateMaxBusinessUnitLicenses\"\n return backend.post(url, businessUnit)\n}\n\nexport const getAvailableUserLicensesForBusinessUnit = (businessUnitId: number) => {\n const url = resourceUrl + \"/GetAvailableUserLicensesForBusinessUnit/\" + businessUnitId \n return backend.get(url)\n}\nexport const getActiveUserLicenses = (businessUnitId?: number) => {\n const url = businessUnitId\n ? resourceUrl + \"/getActiveUserLicenses/\" + businessUnitId\n : resourceUrl + \"/getActiveUserLicenses\";\n return backend.get(url)\n}\n\nexport const getActiveMobileLicenses = () => {\n const url = resourceUrl + \"/getActiveMobileLicenses\"\n return backend.get(url)\n}\n\n// Active Directory, password or mixed mode\nexport const getAuthenticationMode = () => {\n const url = resourceUrl + \"/getAuthenticationMode\"\n return backend.get(url)\n}\n\nexport const grantRolePermission = (role: string) => {\n const url = \"api/user/GrantRolePermission\"\n return backend.post(url, { role })\n}\n\nexport const removeRolePermission = (role: string) => {\n const url = \"api/user/RemoveRolePermission\"\n return backend.post(url, { role })\n}\n\nexport const createPasswordToken = (userName: string) => {\n const url = \"api/user/createpasswordtoken\"\n return backend.post(url, { userName: userName })\n}\n\nexport const changePassword = (data: ChangePasswordModel) => {\n const url = \"api/user/changepassword\"\n return backend.post(url, data)\n}\n\nexport const checkExistingUser = (userNameOrEmail: string) => {\n const url = \"api/user/CheckExistingUser/\" + userNameOrEmail\n return backend.post(url, {userNameOrEmail})\n}\n\nexport const getCustomerStatus = () => {\n const url = resourceUrl + \"/GetCustomerStatus\"\n return backend.get(url)\n}\n","import moment from \"moment\"\nimport * as customerService from \"@common/services/customers/customerService\"\nimport { translateLabelInstant } from \"./language/DigiLeanLang\";\n\nexport function getTranslationOptionsForMessage() {\n return {\n month: translateLabelInstant('COMMON_TIMEELAPSED_MONTH'),\n days: translateLabelInstant('COMMON_TIMEELAPSED_DAYS'),\n hours: translateLabelInstant('COMMON_TIMEELAPSED_HOURS'),\n mins: translateLabelInstant('COMMON_TIMEELAPSED_MINUTES'),\n seconds: translateLabelInstant('COMMON_TIMEELAPSED_SECONDS'),\n now: translateLabelInstant('COMMON_TIMEELAPSED_NOW')\n };\n}\n\n\nexport function getTimeElapsed(startTime, options) {\n var then = moment.utc(startTime);\n var now = moment.utc();\n var diff = moment.duration(now.diff(then))._data;\n\n var defaults = {\n month: 'month(s) ago',\n days: 'd ago',\n hours: 'h ago',\n mins: 'm ago',\n seconds: 's ago',\n now: 'now'\n };\n var actual = $.extend({}, defaults, options || {});\n\n if (diff.months > 0 || diff.years > 0) {\n var mth = 0;\n if (diff.years > 0) {\n mth = diff.years * 12;\n }\n return mth + diff.months + \" \" + actual.month;\n }\n if (diff.days > 0) {\n return diff.days + actual.days;\n }\n if (diff.hours > 0) {\n return diff.hours + actual.hours;\n }\n if (diff.minutes > 0) {\n return diff.minutes + actual.mins;\n }\n if (diff.seconds > 0) {\n return diff.seconds + actual.seconds;\n }\n return actual.now;\n}\nexport function getTimeframeLabel(timeframe) {\n switch (timeframe) {\n case \"all\":\n return translateLabelInstant(\"DASHBOARD_SUM_ALL_VALUES\");\n case \"last3years\":\n return translateLabelInstant(\"DASHBOARD_LAST_3_YEARS\");\n case \"lastyear\":\n return translateLabelInstant(\"DASHBOARD_LAST_YEAR\");\n case \"last12mth\":\n return translateLabelInstant(\"DASHBOARD_LAST_12_MONTH\");\n case \"thisvslastyear\":\n return translateLabelInstant(\"DASHBOARD_THIS_YEAR_VS_LAST_YEAR\");\n case \"thisfiscalvslastfiscalyear\":\n return translateLabelInstant(\"DASHBOARD_THIS_FY_VS_LAST_FY\");\n case \"year\":\n return translateLabelInstant(\"DASHBOARD_YTD\");\n case \"fiscalyear\":\n return translateLabelInstant(\"DASHBOARD_FISCAL_YEAR\");\n case \"YTD\":\n return translateLabelInstant(\"DASHBOARD_YTD\");\n case \"YTW\":\n return translateLabelInstant(\"DASHBOARD_YTD\");\n case \"YTM\":\n return translateLabelInstant(\"DASHBOARD_YTD\");\n case \"thisyear\":\n return translateLabelInstant(\"DASHBOARD_THIS_YEAR\");\n case \"previousmonth\":\n return translateLabelInstant(\"DASHBOARD_PREVIOUS_MONTH\");\n case \"30\":\n return translateLabelInstant(\"COMMON_LAST_30_DAYS\");\n case \"month\":\n return translateLabelInstant(\"DASHBOARD_CURRENT_MONTH\");\n case \"nextfourweeks\":\n return translateLabelInstant(\"DASHBOARD_NEXT_FOUR_WEEKS\");\n case \"thisandnextweek\":\n return translateLabelInstant(\"DASHBOARD_THIS_AND_NEXT_WEEK\");\n case \"previousisoweek\":\n return translateLabelInstant(\"DASHBOARD_PREVIOUS_WEEK\");\n case \"isoweek\":\n return translateLabelInstant(\"DASHBOARD_THIS_WEEK\");\n case \"thisweek\":\n return translateLabelInstant(\"DASHBOARD_THIS_WEEK\");\n case \"yesterday\":\n return translateLabelInstant(\"COMMON_YESTERDAY\");\n case \"day\":\n return translateLabelInstant(\"COMMON_TODAY\");\n case \"custom\":\n return translateLabelInstant(\"COMMON_CUSTOM\");\n case \"customStartDate\":\n return translateLabelInstant(\"COMMON_CUSTOM\");\n case \"customEndDate\":\n return translateLabelInstant(\"COMMON_CUSTOM\");\n case \"none\":\n return translateLabelInstant(\"COMMON_NONE\");\n case \"last\":\n return translateLabelInstant(\"COMMON_LAST_VALUE\");\n default:\n return \"\";\n }\n}\n\nexport function globalDatePickerOptions () {\n var dateOptions = {\n startingDay: 1 //ISO week\n };\n return dateOptions;\n}\n\nexport function validateDate(date) {\n if (date && isNaN(date.getTime())) {\n return null;\n } else {\n return date;\n }\n}\n\nexport function getUserTimeZone() {\n var options = Intl.DateTimeFormat().resolvedOptions();\n var timeZone = options.timeZone;\n return timeZone;\n}\n\nexport function getTimeZoneOffset() {\n var timeNow = new Date();\n var hoursOffset = timeNow.getTimezoneOffset() / 60 * (-1);\n return hoursOffset;\n}\n\nexport function getDurationText(seconds) {\n var minutes = seconds / 60;\n var hours = parseInt(minutes / 60);\n var restminutes = minutes % 60;\n var hourText = \"\";\n var minutesText = \"\";\n if (hours > 0) hourText = hours + \" h \";\n if (restminutes > 0) minutesText = restminutes + \" min\";\n return hourText + minutesText;\n}\n\nexport function getUTCDate() {\n return moment.utc().startOf('day');\n}\n\nexport function getMonths () {\n var months = [\n { id: 1 },\n { id: 2 },\n { id: 3 },\n { id: 4 },\n { id: 5 },\n { id: 6 },\n { id: 7 },\n { id: 8 },\n { id: 9 },\n { id: 10 },\n { id: 11 },\n { id: 12 },\n ];\n for (let index = 0; index < months.length; index++) {\n const month = months[index];\n month.name = getMonthLabel(month.id);\n month.fullName = moment.months(index);\n }\n return months;\n}\n\nexport function getMonthLabel(monthNo) {\n switch (monthNo) {\n case 1:\n return translateLabelInstant('COMMON_MONTH_JAN');\n case 2:\n return translateLabelInstant('COMMON_MONTH_FEB');\n case 3:\n return translateLabelInstant('COMMON_MONTH_MAR');\n case 4:\n return translateLabelInstant('COMMON_MONTH_APR');\n case 5:\n return translateLabelInstant('COMMON_MONTH_MAY');\n case 6:\n return translateLabelInstant('COMMON_MONTH_JUN');\n case 7:\n return translateLabelInstant('COMMON_MONTH_JUL');\n case 8:\n return translateLabelInstant('COMMON_MONTH_AUG');\n case 9:\n return translateLabelInstant('COMMON_MONTH_SEP');\n case 10:\n return translateLabelInstant('COMMON_MONTH_OCT');\n case 11:\n return translateLabelInstant('COMMON_MONTH_NOV');\n case 12:\n return translateLabelInstant('COMMON_MONTH_DEC');\n default:\n return translateLabelInstant('COMMON_NOT_SPECIFIED');\n }\n}\n\nexport function getWeeksInMonth(year, monthNumber, locale) {\n if(locale){\n moment.locale(locale);\n }\n var startOfMonth = moment([year, monthNumber - 1]).toDate();\n var endOfMonth = moment(startOfMonth).endOf('month').toDate();\n\n var startWeekNumber = moment(startOfMonth).isoWeek();\n var endWeekNumber = moment(endOfMonth).isoWeek();\n var totalWeeksInMonth = endWeekNumber - startWeekNumber;\n if (endWeekNumber < startWeekNumber) { // If startweek is 52 or 53\n var numberOfWeeks = moment(startOfMonth).isoWeeksInYear();\n if (monthNumber == 1) { // Handle when january, use previous year to calculate\n numberOfWeeks = moment([year - 1, 1]).isoWeeksInYear();\n }\n totalWeeksInMonth = (numberOfWeeks + endWeekNumber) - startWeekNumber;\n }\n var weeks = [];\n var activeWeekNumber = startWeekNumber;\n var activeYear = year;\n for (let index = 0; index <= totalWeeksInMonth; index++) {\n var weekYear = activeYear;\n\n if (monthNumber == 1 && activeWeekNumber >= 52) {\n weekYear = activeYear - 1;\n }\n\n var week = getCurrentWeek(activeWeekNumber, weekYear);\n var startDateYear = moment(week.startDate).year();\n var endDateYear = moment(week.endDate).year();\n var indexNumber = week.weekNumber;\n if (startDateYear > endDateYear) {\n // We need to handle if last week in month is actually\n indexNumber = 0;\n }\n if (endDateYear > startDateYear) {\n // We need to handle if last week in month is actually week 1 the next year, by adding count to the last. But could also be week 53 of current year\n indexNumber = moment(week.startDate).isoWeeksInYear();\n if (indexNumber <= 1) {\n indexNumber += 1;\n }\n }\n if (monthNumber == 1 && activeWeekNumber >= 52) {\n indexNumber = 0;\n }\n\n weeks.push({\n number: activeWeekNumber,\n indexNumber: indexNumber,\n startDate: week.startDate,\n startDateYear: startDateYear,\n endDate: week.endDate,\n endDateYear: endDateYear,\n days: week.weekDays\n });\n // Next week\n var firstDayNextWeek = moment(week.endDate).add(1, 'days');\n activeYear = firstDayNextWeek.isoWeekYear();\n activeWeekNumber = firstDayNextWeek.isoWeek();\n }\n return weeks;\n}\n\nexport function addTimeElapsedForMsg (msg) {\n msg.timeElapsed = getTimeElapsed(msg.sendTime, getTranslationOptionsForMessage());\n}\nexport function getTimeFromFullDate(date) {\n return moment.utc(date).local().format(\"HH:mm\");\n}\nexport function isToday(date) {\n var today = moment();\n var inputDate = moment(date);\n var isSame = today.isSame(inputDate, 'day');\n return isSame;\n}\nexport function isDateInWeek (date, week) {\n date = moment.utc(date).toDate();\n return date >= week.startDate && date <= week.endDate;\n}\nexport function parseTime (s) {\n var c = s.split(':');\n return parseInt(c[0]) * 60 + parseInt(c[1]);\n}\nfunction joinDateAndTime(date, time) {\n var c = time.split(':');\n var momentDate = moment(date).startOf('day');\n momentDate.add(parseInt(c[0]), 'hours');\n momentDate.add(parseInt(c[1]), 'minutes');\n var toDate = momentDate.toDate();\n return toDate;\n\n}\nexport function getDuration(startTime, endTime) {\n var minutes = parseTime(endTime) - parseTime(startTime);\n var seconds = minutes * 60;\n return {\n durationInSeconds: seconds,\n durationText: getDurationText(seconds)\n };\n}\n\n// How many days spans between startTime and endTime. e.g. startTime=01.01.2024, endTime=02.01.2024 returns 2 \nexport function getDurationInDays(startTime, endTime) {\n // Make sure we flatten time when comparing.\n var start = moment(startTime).startOf('day');\n var end = moment(endTime).startOf('day');\n var duration = end.diff(start, 'days', true);\n duration += 1; // Need to include current day\n return duration;\n}\n\nexport function getDateInWeek(weekDay, days) {\n for (var i = 0; i < days.length; ++i) {\n if (weekDay === days[i].day) {\n return days[i].date;\n }\n }\n return null;\n}\n\nexport function getWeekDayNameFromDate (date) {\n if (!date) return null;\n var number = moment(date).format('d');\n // Based on Monday = 1;\n \n switch (parseInt(number)) {\n case 1:\n return \"Monday\";\n case 2:\n return \"Tuesday\";\n case 3:\n return \"Wednesday\"; \n case 4:\n return \"Thursday\";\n case 5:\n return \"Friday\";\n case 6:\n return \"Saturday\";\n case 0:\n return \"Sunday\";\n\n }\n}\n\nexport function getCurrentWeek(weekNumber, year) {\n var startOfWeek, endOfWeek;\n if (weekNumber) {\n startOfWeek = moment().isoWeekYear(year).isoWeek(weekNumber).isoWeekday(1);\n endOfWeek = moment(startOfWeek).endOf('isoweek');\n } else {\n startOfWeek = moment().startOf('isoweek');\n endOfWeek = moment().endOf('isoweek');\n }\n var startDate = startOfWeek\n .hours(0)\n .minutes(0)\n .seconds(0)\n .milliseconds(0).toDate();\n\n var endDate = endOfWeek.hours(23)\n .minutes(59)\n .seconds(59)\n .milliseconds(999).toDate();\n return {\n weekNumber: weekNumber,\n startDate: startDate,\n endDate: endDate,\n weekDays: [\n { number: 1, day: \"Monday\", translated: translateLabelInstant('COMMON_MONDAY'), date: moment(startDate).toDate() },\n { number: 2, day: \"Tuesday\", translated: translateLabelInstant('COMMON_TUESDAY'), date: moment(startDate).add(1, 'days').toDate() },\n { number: 3, day: \"Wednesday\", translated: translateLabelInstant('COMMON_WEDNESDAY'), date: moment(startDate).add(2, 'days').toDate() },\n { number: 4, day: \"Thursday\", translated: translateLabelInstant('COMMON_THURSDAY'), date: moment(startDate).add(3, 'days').toDate() },\n { number: 5, day: \"Friday\", translated: translateLabelInstant('COMMON_FRIDAY'), date: moment(startDate).add(4, 'days').toDate() },\n { number: 6, day: \"Saturday\", translated: translateLabelInstant('COMMON_SATURDAY'), date: moment(startDate).add(5, 'days').toDate() },\n { number: 7, day: \"Sunday\", translated: translateLabelInstant('COMMON_SUNDAY'), date: moment(startDate).add(6, 'days').toDate() }\n ]\n }\n //NB endOfWeek og Sunday har ulike tidspunkter, men skal egentlig representere samme sluttdag. TODO avgjøre om vi skal rydde opp i dette og kjøre et databaseskript som endrer datoer på eksisterende oppgaver\n}\n\n/*\n@period: e.g. 'year', 'month', '30', \n*/\nexport function getTimePeriod(period, fiscalmonthSettings) {\n if(period === \"fiscalyear\"){\n var companyfiscalmonth = customerService.getDefaultFiscalmonth()\n if (fiscalmonthSettings) {\n companyfiscalmonth = fiscalmonthSettings;\n }\n companyfiscalmonth = companyfiscalmonth - 1; //convert to moment month\n\n if(companyfiscalmonth > moment().month()){\n startDate = moment().subtract(1, 'year').month(companyfiscalmonth).startOf(\"month\");\n } else {\n startDate = moment().month(companyfiscalmonth).startOf(\"month\");\n }\n endDate = moment(startDate).add(12, \"month\").subtract(1, 'days').endOf(\"day\");\n var timePeriod = {\n from: startDate.utc().toDate().toJSON(),\n to: endDate.utc().toDate().toJSON()\n };\n return timePeriod;\n } else if(period === \"last3fiscalyears\"){\n var companyfiscalmonth = customerService.getDefaultFiscalmonth()\n if (fiscalmonthSettings) {\n companyfiscalmonth = fiscalmonthSettings;\n }\n companyfiscalmonth = companyfiscalmonth - 1; //convert to moment month\n\n if(companyfiscalmonth > moment().month()){\n startDate = moment().subtract(3, 'year').month(companyfiscalmonth).startOf(\"month\");\n } else {\n startDate = moment().subtract(2, 'year').month(companyfiscalmonth).startOf(\"month\");\n }\n endDate = moment(startDate).add(36, \"month\").subtract(1, 'days').endOf(\"day\");\n var timePeriod = {\n from: startDate.utc().toDate().toJSON(),\n to: endDate.utc().toDate().toJSON()\n };\n return timePeriod;\n } else if(period === \"thisfiscalvslastfiscalyear\"){\n var companyfiscalmonth = customerService.getDefaultFiscalmonth()\n if (fiscalmonthSettings) {\n companyfiscalmonth = fiscalmonthSettings;\n }\n companyfiscalmonth = companyfiscalmonth - 1; //convert to moment month\n\n if(companyfiscalmonth > moment().month()){\n startDate = moment().subtract(2, 'year').month(companyfiscalmonth).startOf(\"month\");\n } else {\n startDate = moment().subtract(1, 'year').month(companyfiscalmonth).startOf(\"month\");\n }\n endDate = moment(startDate).add(24, \"month\").subtract(1, 'days').endOf(\"day\");\n var timePeriod = {\n from: startDate.utc().toDate().toJSON(),\n to: endDate.utc().toDate().toJSON()\n };\n return timePeriod;\n } else {\n var endDate = moment().endOf('day');\n var startDate = moment().startOf('day');\n\n if (period === 'year' || period === 'quarter' || period === 'month' || period === 'isoweek' || period === 'day') {\n startDate = moment().startOf(period);\n endDate = moment(startDate).endOf(period);\n } else if (period === \"YTD\") {\n startDate = moment().startOf('year');\n } else if (period === \"YTW\") {\n startDate = moment().startOf('year');\n endDate = moment().endOf('isoweek');\n } else if (period === \"YTM\") {\n startDate = moment().startOf('year');\n endDate = moment().endOf('month');\n } else if (isNumber(period)) {\n startDate = moment(startDate).subtract(period, 'days');\n } else if (period === \"last3years\") {\n endDate = moment(startDate).endOf(\"year\");\n startDate = moment().subtract(2, 'year').startOf(\"year\");\n } else if (period === \"last12mth\") {\n startDate = moment().subtract(12, 'month').startOf(\"month\");\n } else if (period === \"lastyear\") {\n startDate = moment().subtract(1, 'year').startOf(\"year\");\n endDate = moment(startDate).endOf(\"year\");\n } else if (period === \"month\") {\n startDate = moment().startOf(\"month\");\n endDate = moment(startDate).endOf(\"month\"); \n } else if (period === \"nextfourweeks\") {\n var startOfWeek = moment().startOf(\"isoweek\");\n startDate = startOfWeek.add(7, 'days');\n endDate = moment(startDate).add(3, 'week').endOf(\"isoweek\");\n }else if (period === \"previousisoweek\") {\n var startOfWeek = moment().startOf(\"isoweek\");\n startDate = startOfWeek.subtract(7, 'days');\n endDate = moment(startDate).endOf(\"isoweek\");\n } else if (period === \"thisweek\") {\n startDate = moment().startOf(\"isoweek\");\n endDate = moment(startDate).endOf(\"isoweek\");\n } else if (period === \"thisandnextweek\") {\n startDate = moment().startOf(\"isoweek\");\n endDate = moment(startDate).add(7, 'days').endOf(\"isoweek\");\n } else if (period === \"thisyear\") {\n startDate = moment().startOf(\"year\");\n endDate = moment(startDate).endOf(\"year\");\n } else if (period === \"nextyear\") {\n startDate = moment().startOf(\"year\").add(1, 'year');\n endDate = moment(startDate).endOf(\"year\");\n } else if (period === \"yesterday\") {\n startDate = moment().subtract(1, 'day').startOf(\"day\");\n endDate = moment(startDate).endOf(\"day\");\n } else if (period === \"previousmonth\") {\n startDate = moment().subtract(1, 'month').startOf(\"month\");\n endDate = moment(startDate).endOf(\"month\");\n } else if (period === \"all\") {\n startDate = moment(\"2013-01-01\");\n endDate = moment().add(7, 'year').endOf(\"year\");\n } else if (period === \"nextquarter\") {\n startDate = moment().startOf(\"quarter\").add(1, 'quarter');\n endDate = moment(startDate).endOf(\"quarter\");\n } else if (period === \"thisvslastyear\") {\n endDate = moment(startDate).endOf(\"year\");\n startDate = moment().subtract(1, 'year').startOf(\"year\");\n }\n var timePeriod = {\n from: startDate.utc().toDate().toJSON(),\n to: endDate.utc().toDate().toJSON()\n };\n return timePeriod;\n }\n}\n\nexport function getDateStyle(date) {\n if (!date) return \"\";\n // Overdue check\n\n var overdue = \"\";\n var duration = moment.duration(moment().diff(moment(date)));\n var days = duration.asDays();\n if (days > 1) {\n overdue = \"overdue\";\n }\n return overdue;\n}\n\n/*\n@daysBeforeNow: e.g. '7'\n@daysBeforeNow: e.g. '14' \n*/\nexport function getTimePeriodBeforeAfter(daysBeforeNow, daysAfterNow) {\n var endDate = moment().endOf('day');\n var startDate = moment().startOf('day');\n\n startDate = moment(startDate).subtract(daysBeforeNow, 'days');\n endDate = moment(endDate).add(daysAfterNow, 'days');\n\n var timePeriod = {\n from: startDate.utc().toDate().toJSON(),\n to: endDate.utc().toDate().toJSON()\n };\n return timePeriod;\n}\nexport function isNumber(o) {\n return !isNaN(o - 0) && o !== null && o !== \"\" && o !== false;\n}\n\nexport function isWithinTimePeriod(startTime, endTime, timePeriod){\n var result = false;\n if(startTime && endTime && timePeriod){ //valid input\n var timeperiodfrom = moment(timePeriod.from);\n var timeperiodto = moment(timePeriod.to);\n if(moment(timeperiodfrom).isBefore(startTime)\n && moment(startTime).isBefore(timeperiodto)){\n return true;\n }\n if(moment(timeperiodfrom).isBefore(endTime)\n && moment(endTime).isBefore(timeperiodto)){\n return true;\n }\n if(moment(startTime).isBefore(timeperiodfrom)\n && moment(timeperiodto).isBefore(endTime)){\n return true;\n }\n if(moment(timeperiodfrom).isSame(startTime)){\n return true;\n }\n }\n return result;\n}\n","interface FileExtension {\n type: string\n extension: string\n}\nconst viewerFileExtensions: FileExtension[] = [\n { type: 'image', extension: '.jpg' },\n { type: 'image', extension: '.jpeg' },\n { type: 'image', extension: '.png' },\n { type: 'image', extension: '.jfif' },\n { type: 'pdf', extension: '.pdf' },\n { type: 'excel', extension: '.xlsx' },\n { type: 'excel', extension: '.xls' },\n { type: 'word', extension: '.doc' },\n { type: 'word', extension: '.docx' },\n { type: 'video', extension: '.mp4' },\n { type: 'powerpoint', extension: '.ppt' },\n { type: 'powerpoint', extension: '.pptx' },\n]\n\nexport function getFileType(ext: string) {\n const fileExt = viewerFileExtensions.find(fe => fe.extension === ext.toLocaleLowerCase())\n return fileExt\n}\n\nfunction saveFileAs(data: ArrayBuffer, fileName: string, type: string) {\n const blobData = new Blob([data], {type})\n const objectUrl = window.URL.createObjectURL(blobData)\n \n const anchor = document.createElement('a')\n anchor.href = objectUrl\n anchor.setAttribute('download', fileName)\n document.body.appendChild(anchor)\n anchor.click()\n \n // cleanup\n URL.revokeObjectURL(objectUrl)\n document.body.removeChild(anchor)\n}\n\nexport function saveArrayBufferAsPdf(data: ArrayBuffer, fileName: string) {\n return saveFileAs(data, fileName, \"application/pdf\")\n}\nexport function saveArrayBufferAsExcel(data: ArrayBuffer, fileName: string) {\n return saveFileAs(data, fileName, \"vnd.openxmlformats-officedocument.spreadsheetml.sheet\")\n}","import { getUserProfile } from \"@common/stores/userStore\"\nimport * as timeService from \"@common/services/timeService\"\nimport { saveArrayBufferAsExcel } from \"@common/services/filesService\"\nimport envConfig from \"@common/envConfig\";\n\nangular.module(\"DigiLean\").factory('excelService', ['$http',\n function ($http) {\n function excelService() {\n var resource = \"/excel\"\n var resourceUrl = envConfig.webApiUrl + resource;\n let lang = \"en\"\n const up = getUserProfile()\n if (up.preferredLanguage) {\n lang = up.preferredLanguage\n }\n return {\n exportProjectBoard: function(boardId) {\n const fileName = \"DigiLEAN - project portfolio.xlsx\"\n \n var date = new Date();\n var offset = date.getTimezoneOffset()\n resourceUrl = resourceUrl + \"/CreateProjectPortfolioReport/\" + boardId + \"?timezoneOffsetInMinutes=\" + offset + \"&lang=\" + lang\n $http.post(resourceUrl, null, { responseType: 'arraybuffer' }).then(function(result) {\n saveArrayBufferAsExcel(result.data, fileName)\n })\n },\n exportSmartActionList: function(boardId) {\n const fileName = \"DigiLEAN - Smart Action List.xlsx\"\n var timeZone = timeService.getUserTimeZone(); \n resourceUrl = resourceUrl + \"/CreateSmartActionListReport/\" + boardId + \"?timeZone=\" + timeZone + \"&lang=\" + lang\n $http.post(resourceUrl, null, { responseType: 'arraybuffer' }).then(function(result) {\n saveArrayBufferAsExcel(result.data, fileName)\n })\n },\n exportA3Table: function(boardId) {\n const fileName = \"DigiLEAN - A3 table.xlsx\"\n var timeZone = timeService.getUserTimeZone(); // Which timezone we would like the result to be calculated in.\n resourceUrl = resourceUrl + \"/CreateA3TableReport/\" + boardId + \"?timeZone=\" + timeZone + \"&lang=\" + lang\n $http.post(resourceUrl, null, { responseType: 'arraybuffer' }).then(function(result) {\n saveArrayBufferAsExcel(result.data, fileName)\n })\n },\n exportDataValues: function(dataSourceId) {\n const fileName = \"DigiLEAN - dataValues.xlsx\"\n var timeZone = timeService.getUserTimeZone(); // Which timezone we would like the result to be calculated in.\n resourceUrl = resourceUrl + \"/CreateDataValuesReport/\" + dataSourceId + \"?timeZone=\" + timeZone\n $http.post(resourceUrl, null, { responseType: 'arraybuffer' }).then(function(result) {\n saveArrayBufferAsExcel(result.data, fileName)\n })\n },\n\n exportImprovementValues: function(params) {\n var fileName = \"DigiLEAN - improvements.xlsx\"\n \n var date = new Date();\n var offset = date.getTimezoneOffset()\n resourceUrl = resourceUrl + \"/CreateImprovementReport?timezoneOffsetInMinutes=\" + offset + \"&lang=\" + lang\n $http.post(resourceUrl, params, { responseType: 'arraybuffer' }).then(function(result) {\n saveArrayBufferAsExcel(result.data, fileName)\n })\n },\n exportDeviationValues: function(params) {\n var fileName = \"DigiLEAN - Deviations.xlsx\"\n \n var date = new Date()\n var offset = date.getTimezoneOffset()\n resourceUrl = resourceUrl + \"/CreateDeviationReport?timezoneOffsetInMinutes=\" + offset + \"&lang=\" + lang\n $http.post(resourceUrl, params, { responseType: 'arraybuffer' }).then(function(result) {\n saveArrayBufferAsExcel(result.data, fileName)\n })\n },\n\n }\n }\n return excelService\n }])\n","import envConfig from \"@common/envConfig\";\n\nangular.module(\"DigiLean\").service('navigationService', ['$http', 'moduleCache',\n function ($http, moduleCache) {\n function navigationService() {\n var dashBoardLinks = [\n {\n customerId: 1,\n uiRef: \"systemdashboard\",\n name: \"Customers\"\n },\n {\n customerId: 1,\n uiRef: \"dashboardKS\",\n name: \"Kaizen Solutions\"\n },\n , {\n customerId: 8,\n uiRef: \"dashboardCharts\",\n name: \"Charts\"\n },\n {\n customerId: 8,\n uiRef: \"dashboardtest\",\n name: \"Miscellaneous\"\n },\n {\n customerId: 1,\n uiRef: \"dashboardConnectors\",\n name: \"Connector Monitoring\"\n }\n ];\n\n\n return {\n clearCache: function () {\n moduleCache.removeAll();\n },\n\n updateCache: function (userProfile) {\n moduleCache.put('userAssets', userProfile.assets);\n moduleCache.put('customerModules', userProfile.modules);\n },\n\n hasAccessToAsset: function (assetId) {\n var modules = moduleCache.get('userAssets');\n if (!modules) return false;\n var hasAccess = modules.filter(module => module.id === assetId);\n return hasAccess.length > 0;\n },\n\n isViewer: function (assetId) {\n var modules = moduleCache.get('userAssets');\n if (!modules) return false;\n var hasRole = modules.filter(module => module.id === assetId && module.assetRole === 'Viewer');\n return hasRole.length > 0;\n },\n\n isBoardAdmin: function (boardId) {\n var resourceUrl = envConfig.webApiUrl + \"/user/isBoardAdmin/\" + boardId;\n var url = resourceUrl;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n\n hasModule: function (moduleName) {\n const modules = moduleCache.get('customerModules');\n if (!modules)\n return false\n const hasAccess = modules.some(m => m.name == moduleName)\n return hasAccess\n },\n\n getList: function (customerId) {\n var customerLinks = dashBoardLinks.filter(l => l.customerId == customerId);\n return customerLinks;\n }\n }\n }\n return navigationService;\n }]);","import envConfig from \"@common/envConfig\";\n\nangular.module(\"DigiLean\").service('modulesService', ['$http', '$translate',\n function ($http, $translate) {\n const allModulesConfig = [\n {\n name:\"BOARD\",\n title:\"COMMON_BOARD\",\n icon: \"fal fa-desktop\",\n desc: $translate.instant('COMMON_BOARDS'),\n tooltip: $translate.instant('COMMON_CLICK_INFO'),\n startUsing: $translate.instant('ADMIN_EXTRA_FEATURE_START_USING'),\n learning: { location: \"external\", featureKey: \"HELP_MODULES_OVERVIEW\" }\n },\n {\n name:\"IMPROVEMENT\",\n title: \"COMMON_IMPROVEMENT\",\n icon: \"fal fa-lightbulb\",\n desc: $translate.instant('COMMON_IMPROVEMENT_DESC'),\n tooltip: $translate.instant('COMMON_CLICK_INFO'),\n startUsing: $translate.instant('ADMIN_EXTRA_FEATURE_START_USING'),\n learning: { location: \"external\", featureKey: \"HELP_MODULES_OVERVIEW\" }\n },\n {\n name:\"DEVIATION\",\n title: \"COMMON_DEVIATION\",\n icon: \"fa fa-exclamation-triangle\",\n desc: $translate.instant('COMMON_DEVIATION_DESC'),\n tooltip: $translate.instant('COMMON_CLICK_INFO'),\n startUsing: $translate.instant('ADMIN_EXTRA_FEATURE_START_USING'),\n learning: { location: \"external\", featureKey: \"HELP_MODULES_OVERVIEW\" }\n },\n {\n name:\"PROJECT\",\n title: \"COMMON_PROJECT\",\n icon: \"far fa-calendar-alt\",\n desc: $translate.instant('COMMON_PROJECT_DESC'),\n tooltip: $translate.instant('COMMON_CLICK_INFO'),\n startUsing: $translate.instant('ADMIN_EXTRA_FEATURE_START_USING'),\n learning: { location: \"external\", featureKey: \"HELP_MODULES_OVERVIEW\" }\n },\n {\n name:\"A3\",\n title: \"COMMON_A3\",\n icon: \"far fa-file\",\n desc: $translate.instant('COMMON_A3_DESC'),\n tooltip: $translate.instant('COMMON_CLICK_INFO'),\n startUsing: $translate.instant('ADMIN_EXTRA_FEATURE_START_USING'),\n learning: { location: \"external\", featureKey: \"HELP_MODULES_OVERVIEW\" }\n },\n {\n name:\"STRATEGY\",\n title: \"STRATEGY_STRATEGY\",\n icon: \"fas fa-rocket\",\n desc: $translate.instant(''),\n tooltip: $translate.instant('COMMON_CLICK_INFO'),\n startUsing: $translate.instant('ADMIN_EXTRA_FEATURE_START_USING'),\n learning: { location: \"external\", featureKey: \"HELP_MODULES_OVERVIEW\" }\n },\n {\n name:\"LEARNING\",\n title: \"LEARNING_LEARNING_CENTER\",\n icon: \"fas fa-graduation-cap\",\n desc: $translate.instant('COMMON_LEARNING_DESC'),\n tooltip: $translate.instant('COMMON_CLICK_INFO'),\n startUsing: $translate.instant('ADMIN_EXTRA_FEATURE_START_USING'),\n learning: { location: \"external\", featureKey: \"HELP_MODULES_OVERVIEW\" }\n },\n {\n name: \"COMPETENCEBALL\",\n title: \"NAV_COMPETENCE_BALL\",\n icon: \"fal fa-bowling-ball\",\n desc: $translate.instant('NAV_COMPETENCE_BALL_CONFIGURATION'),\n tooltip: $translate.instant('COMMON_CLICK_INFO'),\n startUsing: $translate.instant('ADMIN_EXTRA_FEATURE_START_USING'),\n learning: { location: \"external\", featureKey: \"HELP_COMPETENCEBALL_MODULE\" }\n },\n {\n name: \"HOURREGISTRATION\",\n title: \"COMMON_HOUR_REGISTRATION\",\n icon: \"fal fa-clock\",\n desc: $translate.instant(''),\n tooltip: $translate.instant('COMMON_HOUR_REGISTRATION'),\n startUsing: $translate.instant('ADMIN_EXTRA_FEATURE_START_USING'),\n learning: { location: \"external\", featureKey: \"HELP_HOURREGISTRATION_MODULE\" }\n },\n {\n name: \"TEAMSPACE\",\n title: \"COMMON_TEAM_SPACE\",\n icon: \"fal fa-users\",\n desc:$translate.instant('ADMIN_EXTRA_FEATURE_TEAM_SPACE_DESC'),\n tooltip: $translate.instant('ADMIN_EXTRA_FEATURE_TEAM_SPACE_DESC'),\n startUsing: $translate.instant('ADMIN_EXTRA_FEATURE_START_USING'),\n learning: { location: \"external\", featureKey: \"HELP_TEAMSPACE_MODULE\" }\n },\n {\n name: \"AZUREAD\",\n title: \"COMMON_AZURE_AD\",\n icon: \"fab fa-windows\",\n desc: $translate.instant(\"ADMIN_EXTRA_FEATURE_AZUREAD_DESC\"),\n tooltip: $translate.instant(\"ADMIN_EXTRA_FEATURE_AZUREAD_DESC\"),\n startUsing: $translate.instant('ADMIN_EXTRA_FEATURE_START_USING'),\n learning: { location: \"external\", featureKey: \"HELP_AZUREAD_MODULE\" }\n },\n {\n name: \"LEARNINGFROMBJARNE\",\n title: \"not supported anymore?\"\n }\n ]\n\n function getCustomerAllowedModules() {\n const url = `${resourceUrl}/getCustomerAllowedModules`\n return $http.get(url).then(function (result) {\n return result.data\n })\n }\n const resourceUrl = envConfig.webApiUrl + \"/CustomerModule\"\n return {\n getAllowedModulesConfig: function() {\n return getCustomerAllowedModules().then(allowed => {\n const allowedModules = allowed.map(m => {\n const config = allModulesConfig.find(a => a.name == m.name)\n if (config) {\n m.title = config.title\n m.icon = config.icon\n m.desc = config.desc\n m.tooltip = config.tooltip\n m.startUsing = config.startUsing\n m.learning = config.learning\n return m\n }\n \n }).reduce((list, module) => {\n if (module)\n list.push(module)\n return list\n },[])\n return allowedModules\n })\n },\n \n \n getModulesSetupForKaizenAdmin: function (customerId) {\n const url = resourceUrl + \"/getModulesSetupForKaizenAdmin/\" + customerId\n return $http.get(url).then(function (result) {\n return result.data\n })\n },\n \n //kaizenadmin allow\n allowModule: function(customerId, feature) {\n const url = `${resourceUrl}/allowModule/${customerId}/${feature}`\n return $http.put(url).then(function (result) {\n return result.data\n })\n },\n //kaizenadmin disallow\n disallowModule: function(customerId, feature) {\n const url = `${resourceUrl}/disallowModule/${customerId}/${feature}`\n return $http.delete(url).then(function (result) {\n return result.data\n })\n },\n getCustomerAllowedModules: getCustomerAllowedModules,\n getCustomerAllowedModulesForCustomer: function(customerId) {\n const url = `${resourceUrl}/getCustomerAllowedModules/${customerId}`\n return $http.get(url).then(function (result) {\n return result.data\n })\n },\n // GetCustomerEnabledModules - not sure if is in use\n getCustomerEnabledModules: function () {\n var cache = moduleCache.get('customerModules');\n if (cache) { // If there’s something in the cache, use it!\n return new Promise(function (resolve, reject) {\n resolve(cache);\n })\n }\n const url = resourceUrl + \"/getCustomerEnabledModules\"\n return $http.get(url).then(function (result) {\n moduleCache.put('customerModules', result.data)\n return result.data\n })\n },\n enableModule: function (feature) {\n const url = resourceUrl + \"/enableModule/\" + feature;\n return $http.put(url).then(function (result) {\n return result.data\n })\n },\n disableModule: function (feature) {\n const url = resourceUrl + \"/disableModule/\" + feature;\n return $http.delete(url).then(function (result) {\n return result.data\n })\n }\n }\n }\n])","import envConfig from \"@common/envConfig\";\n\nangular.module(\"DigiLean\").factory('smartcellService', ['$http',\nfunction ($http) {\n function smartcellService() {\n var resource = \"/smartcell\";\n var resourceUrl = envConfig.webApiUrl + resource;\n return {\n getClonedCellIdentificators: function(type) { \n var url = resourceUrl + \"/getClonedCellIdentificators/\" + type;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n\n get: function (id) {\n var url = resourceUrl + \"/\" + id;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n/*\n getValueForClonedCell: function(id) { \n var url = resourceUrl + \"/getValueForClonedCell/\" + id;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },*/\n getProjectValueForClonedCell: function (visualizationType, projectId) {\n var url = resourceUrl + \"/getProjectValueForClonedCell\";\n var visualizationProjectQuery = {\n visualizationType: visualizationType,\n projectId: projectId\n };\n return $http.post(url, visualizationProjectQuery).then(function (result) {\n return result.data;\n });\n },\n\n updateDateStatus: function (dateStatus) {\n var url = resourceUrl + \"/UpdateDateStatus\";\n return $http.put(url, dateStatus).then(function (result) {\n return result.data;\n });\n },\n\n updateCloneValue: function (update) {\n var url = resourceUrl + \"/UpdateCloneValue\";\n /*var smartCloneCellValue =\n {\n id: update.id,\n name: update.name,\n type: update.type,\n projectId: update.projectId,\n deviationId: update.deviationId,\n value: update.value\n }*/\n update.value = JSON.stringify(update.value);\n return $http.put(url, update).then(function (result) {\n return result.data;\n });\n },\n removeClone: function (boardId, id) {\n var url = resourceUrl + \"/removeClone/\" + id;\n return $http.delete(url, boardId).then(function (result) {\n return result.data;\n });\n },\n }\n }\n return smartcellService;\n}]);","import envConfig from \"@common/envConfig\";\n\nangular.module(\"DigiLean\").factory('a3Service', ['$rootScope', '$http', '$translate',\n function ($rootScope, $http, $translate) {\n function a3Service() {\n\n var resource = \"/a3\";\n var resourceUrl = envConfig.webApiUrl + resource;\n\n return {\n\n canEdit: function (id) {\n resourceUrl = resourceUrl + \"/canedit/\" + id;\n return $http.get(resourceUrl).then(function (result) {\n return result.data;\n });\n },\n\n updateA3Status: function (id, status) {\n var a3Status = {\n a3Id: id,\n status: status\n }\n resourceUrl = resourceUrl + \"/\" + id + \"/updateStatus\";\n return $http.put(resourceUrl, a3Status).then(function (result) {\n return result.data;\n });\n },\n\n get: function (id) {\n resourceUrl = resourceUrl + \"/\" + id;\n return $http.get(resourceUrl).then(function (result) {\n return result.data;\n });\n },\n\n getA3s: function () {\n return $http.get(resourceUrl).then(function (result) {\n return result.data;\n });\n },\n \n getA3MiniInfo: function (){ // id and title\n var url = resourceUrl + \"/GetA3MiniInfo\";\n return $http.get(url).then(function(result){\n return result.data;\n });\n },\n\n getA3forUser: function () { // A3 where current user is owner\n var url = resourceUrl + \"/getA3forUser\";\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n\n getA3ByStatus: function (status) {\n var url = resourceUrl + \"/getbystatus/\" + status;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n\n getPreviewImageUrl: function (id) {\n resourceUrl = resourceUrl + \"/GetPreviewImageUrl/\" + id; \n return $http.get(resourceUrl).then(function (result) {\n return result.data;\n });\n },\n\n deleteA3s: function (a3Ids) {\n var url = resourceUrl + \"/DeleteA3Items\";\n return $http.post(url, a3Ids).then(function (result) {\n return result.data;\n });\n },\n\n addA3: function (a3) {\n return $http.post(resourceUrl, a3).then(function (result) {\n return result.data;\n });\n },\n \n setPrivateStatus: function (a3Id, status) {\n resourceUrl = resourceUrl +\"/\" + a3Id + \"/setPrivateStatus\";\n return $http.put(resourceUrl, status).then(function (result) {\n return result.data;\n });\n },\n updateProjectInfo: function (a3Id, data) {\n resourceUrl = resourceUrl +\"/\" + a3Id + \"/UpdateProjectInfo\";\n return $http.put(resourceUrl, data).then(function (result) {\n return result.data;\n });\n },\n updateOwner: function (data) {\n resourceUrl = resourceUrl + \"/UpdateOwner/\";\n return $http.put(resourceUrl, data).then(function (result) {\n return result.data;\n });\n },\n updateA3Title: function (data) {\n if (!data || !data.title) return;\n resourceUrl = resourceUrl + \"/UpdateA3Title/\";\n return $http.put(resourceUrl, data).then(function (result) {\n return result.data;\n });\n },\n updateA3Goal: function (data) {\n resourceUrl = resourceUrl + \"/UpdateA3Goal/\";\n return $http.put(resourceUrl, data).then(function (result) {\n return result.data;\n });\n },\n\n getMilestonesForA3Project: function (a3ProjectId) {\n var url = resourceUrl + \"/getMilestonesForA3Project/\" + a3ProjectId;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n deleteA3Milestone: function (milestoneId) {\n var url = resourceUrl + \"/deleteA3Milestone/\" + milestoneId;\n return $http.delete(url).then(function (result) {\n return result.data;\n });\n },\n \n createA3Milestone: function (milestone) {\n var url = resourceUrl + \"/createA3Milestone/\";\n return $http.post(url,milestone).then(function (result) {\n return result.data;\n });\n },\n \n updateA3Milestone: function (milestone) {\n var url = resourceUrl + \"/updateA3Milestone/\";\n return $http.put(url,milestone).then(function (result) {\n return result.data;\n });\n },\n getA3ProjectInfo: function (id) {\n var url = resourceUrl + \"/getA3ProjectInfo/\" + id;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n getProjectInfoForA3s: function () {\n var url = resourceUrl + \"/getProjectInfoForA3s/\";\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n getInitiativeMonthlyRealized: function (timePeriod) {\n var url = resourceUrl + \"/GetInitiativeMonthlyRealized/\";\n return $http.post(url, timePeriod).then(function (result) {\n return result.data;\n }); \n },\n\n createA3FromTemplate: function (a3) {\n var url = resourceUrl + \"/CreateA3FromTemplate\";\n return $http.post(url, a3).then(function (result) {\n return result.data;\n });\n },\n\n createA3FromDeviation: function (deviationId) {\n var url = resourceUrl + \"/CreateA3FromDeviation/\" + deviationId;\n return $http.post(url).then(function (result) {\n return result.data;\n });\n },\n\n getDefaultLayout: function (){\n var url = resourceUrl + \"/defaultlayout\";\n return $http.get(url).then(function(result){\n return result.data;\n })\n },\n\n saveLayout: function (a3Versionid, layout) {\n var url = resourceUrl + \"/saveLayout/\" + a3Versionid;\n return $http.put(url, layout).then(function (result) {\n return result.data;\n });\n },\n\n getA3sForAssetWithActionItems: function (assetId) {\n var url = resourceUrl + \"/getA3sForAssetWithActionItems/\" + assetId;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n\n getUserlistForA3: function (a3Id) {\n var url = resourceUrl + \"/getUserListForA3/\" + a3Id;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n getVersion: function (versionId) {\n var url = resourceUrl + \"/getversion/\" + versionId;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n updateParticipants: function (a3Id, a3ParticipantGroup) {\n var url = resourceUrl + \"/\" + a3Id + \"/updateParticipants\";\n return $http.put(url, a3ParticipantGroup).then(function (result) {\n return result.data;\n });\n },\n saveA3Metadata: function (a3) {\n var url = resourceUrl + \"/\" + a3.id;\n return $http.put(url, a3).then(function (result) {\n return result.data;\n });\n },\n saveStep: function (step) {\n var url = resourceUrl + \"/savestep/\" + step.id;\n return $http.put(url, step).then(function (result) {\n return result.data;\n });\n },\n\n approveStep: function (stepid, status) {\n var url = resourceUrl + \"/approvestep/\" + stepid;\n return $http.put(url, status).then(function (result) {\n return result.data;\n });\n },\n\n getActionList: function (stepid) {\n var url = resourceUrl + \"/GetActionList/\" + stepid;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n\n assignActionListItemUser: function (stepItemId, user) {\n var url = resourceUrl + \"/assignActionListItemUser/\" + stepItemId;\n return $http.put(url, user).then(function (result) {\n return result.data;\n });\n },\n\n deleteActionListItem: function (itemId) {\n var url = resourceUrl + \"/DeleteActionListItem/\" + itemId;\n return $http.delete(url).then(function (result) {\n return result.data;\n });\n },\n\n saveItemDescription: function (itemId, desc) {\n var url = resourceUrl + \"/saveItemDescription/\" + itemId;\n return $http.put(url, desc).then(function (result) {\n return result.data;\n });\n },\n\n updateStatus: function (status) {\n var url = resourceUrl + \"/updateStatus/\" + status.taskId;\n return $http.put(url, status).then(function (result) {\n return result.data;\n });\n },\n\n // DEPRECATED refactor to one dateupdate method for all actionlist task\n updateItemActionDate: function (actionDate) {\n var url = resourceUrl + \"/updateItemActionDate/\" + actionDate.taskId;\n return $http.put(url, actionDate).then(function (result) {\n return result.data;\n });\n },\n\n createActionItem: function (a3id, stepid) {\n var url = resourceUrl + \"/\" + a3id + \"/CreateActionItem/\" + stepid;\n return $http.post(url).then(function (result) {\n return result.data;\n });\n },\n\n getCommentsOnStep: function (stepid) {\n var url = resourceUrl + \"/getCommentsOnStep/\" + stepid;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n\n addCommentToStep: function (a3id, stepid, comment) {\n var url = resourceUrl + \"/\" + a3id + \"/AddCommentToStep/\" + stepid;\n return $http.post(url, comment).then(function (result) {\n return result.data;\n });\n },\n \n getStrategyGoals: function(a3Id) {\n var url = resourceUrl + \"/GetStrategyGoals/\" + a3Id;\n return $http.get(url).then(function(result){\n return result.data;\n });\n },\n addStrategyGoalToA3: function (a3Id, strategyGoalId) {\n var url = resourceUrl + \"/\" + a3Id + \"/addStrategyGoalToA3\";\n return $http.post(url, strategyGoalId).then(function (result) {\n return result.data;\n });\n },\n removeStrategyGoalFromA3: function (a3Id, strategyGoalId) {\n var url = resourceUrl + \"/\" + a3Id + \"/removeStrategyGoalFromA3/\" + strategyGoalId;\n return $http.delete(url).then(function (result) {\n return result.data;\n });\n },\n getLinks: function(a3Id) {\n var url = resourceUrl + \"/getLinks/\" + a3Id;\n return $http.get(url).then(function(result){\n return result.data;\n });\n },\n addLink: function (a3Id, link) {\n var url = resourceUrl + \"/\" + a3Id + \"/addLink\";\n return $http.post(url, link).then(function (result) {\n return result.data;\n });\n },\n deleteLink: function (a3Id, linkId) {\n var url = resourceUrl + \"/\" + a3Id + \"/deleteLink/\" + linkId;\n return $http.delete(url).then(function (result) {\n return result.data;\n });\n },\n getAttachments: function(a3Id) {\n var url = resourceUrl + \"/getAttachments/\" + a3Id;\n return $http.get(url).then(function(result){\n return result.data;\n });\n },\n addAttachment: function (a3Id, fileInfo) {\n var url = resourceUrl + \"/\" + a3Id + \"/addAttachment\";\n return $http.post(url, fileInfo).then(function (result) {\n return result.data;\n });\n },\n\n deleteAttachment: function (a3Id, attachmentId) {\n var url = resourceUrl + \"/\" + a3Id + \"/deleteAttachment/\" + attachmentId;\n return $http.delete(url).then(function (result) {\n return result.data;\n });\n },\n getCategories: function () {\n var url = resourceUrl + \"/getCategories\";\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n\n createCategory: function (category) {\n var url = envConfig.webApiUrl + \"/a3admin/addCategory\";\n return $http.post(url, category).then(function (result) {\n return result.data;\n });\n },\n updateCategory: function (category) {\n var url = envConfig.webApiUrl + \"/a3admin/updateCategory\";\n return $http.put(url, category).then(function (result) {\n return result.data;\n });\n },\n deleteCategory: function (id) {\n var url = envConfig.webApiUrl + \"/a3admin/deleteCategory/\" + id;\n return $http.delete(url).then(function (result) {\n return result.data;\n });\n },\n getImprovementStatus:function(a3status){\n switch (a3status) {\n case 'New':\n return \"Suggested\";\n case 'Plan':\n return \"Planned\";\n case 'Do':\n return \"InProgress\";\n case 'Check':\n return \"Implemented\";\n case 'Act':\n return \"Evaluated\";\n case 'Closed':\n return \"Evaluated\";\n default:\n return null;\n }\n },\n getStatus: function () {\n return [\n { sortorder: 1,\n statusDB: \"New\",\n translated: $translate.instant('COMMON_NEW'),\n cssClass: \"new\",\n pie: {\n data: [0, 0, 0, 0],\n options: {\n radius: 18,\n fill: [\"#f3f3f4\"],\n }\n }\n },\n { sortorder: 2,\n statusDB: \"Plan\",\n translated: $translate.instant('A3_PLAN'),\n cssClass: \"plan\",\n pie: {\n data: [1, 1, 1, 1],\n options: {\n radius: 18,\n fill: [\"#5cb85c\", \"#f3f3f4\", \"#f3f3f4\", \"#f3f3f4\"],\n }\n }\n },\n { sortorder: 3,\n statusDB: \"Do\",\n translated: $translate.instant('COMMON_DO'),\n cssClass: \"do\",\n pie: {\n data: [1, 1, 1, 1],\n options: {\n radius: 18,\n fill: [\"#5cb85c\", \"#5cb85c\", \"#f3f3f4\", \"#f3f3f4\"],\n }\n } \n },\n { sortorder: 4,\n statusDB: \"Check\",\n translated: $translate.instant('COMMON_CHECK'),\n cssClass: \"check\",\n pie: {\n data: [1, 1, 1, 1],\n options: {\n radius: 18,\n fill: [\"#5cb85c\", \"#5cb85c\", \"#5cb85c\", \"#f3f3f4\"],\n }\n }\n },\n {\n sortorder: 5,\n statusDB: \"Act\",\n translated: $translate.instant('COMMON_ACT'),\n cssClass: \"act\",\n pie: {\n data: [1, 1, 1, 1],\n options: {\n radius: 18,\n fill: [\"#5cb85c\", \"#5cb85c\", \"#5cb85c\", \"#5cb85c\"]\n }\n }\n },\n {\n sortorder: 6,\n statusDB: \"Closed\",\n translated: $translate.instant('DEVIATION_CLOSED'),\n }\n ];\n },\n }\n }\n return a3Service;\n }]);\n","import envConfig from \"@common/envConfig\";\n\nangular.module(\"DigiLean\").factory('areaService', ['$http',\n function ($http) {\n function areaService() {\n var resource = \"/area\";\n var resourceUrl = envConfig.webApiUrl + resource;\n return {\n getList: function (useCache) {\n if (!useCache) useCache = false;\n return $http.get(resourceUrl, { cache: useCache }).then(function (result) {\n return result.data;\n });\n },\n getAreasWithDeviation: function () {\n var url = resourceUrl + \"/getAreasWithDeviation\";\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n\n getById: function (assetId) {\n var url = resourceUrl + \"/getById/\" + assetId;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n\n add: function (asset) {\n return $http.post(resourceUrl, asset).then(function (result) {\n return result.data;\n });\n },\n update: function (asset) {\n return $http.put(resourceUrl, asset).then(function (result) {\n return result.data;\n });\n },\n delete: function (id) {\n var url = resourceUrl + \"/deletearea/\" + id;\n return $http.delete(url).then(function (result) {\n return result.data;\n });\n }\n }\n }\n return areaService;\n }]);","import envConfig from \"@common/envConfig\";\n\nangular.module(\"DigiLean\").factory('contactlistService', ['$http',\n function ($http) {\n function contactlistService() {\n var resource = \"/person\";\n var resourceUrl = envConfig.webApiUrl + resource;\n return {\n getList: function(useCache) { \n if (!useCache) useCache = false;\n return $http.get(resourceUrl, { cache: useCache}).then(function (result) {\n return result.data;\n });\n },\n getById: function (id) {\n var url = resourceUrl + \"/get/\" + id;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n\n add: function (person) {\n return $http.post(resourceUrl, person).then(function (result) {\n return result.data;\n });\n },\n update: function (person) {\n return $http.put(resourceUrl, person).then(function (result) {\n return result.data;\n });\n },\n delete: function (id) {\n var url = resourceUrl + \"/delete/\" + id;\n return $http.delete(url).then(function (result) {\n return result.data;\n });\n },\n updateProjectContactPerson: function (personId, projectId) {\n resourceUrl = resourceUrl + \"/UpdateProjectContactPerson/\" + personId;\n return $http.put(resourceUrl, projectId).then(function (result) {\n return result.data;\n });\n },\n deleteProjectContactPerson: function (projectId) {\n resourceUrl = resourceUrl + \"/DeleteProjectContactPerson/\" + projectId;\n return $http.delete(resourceUrl).then(function (result) {\n return result.data;\n });\n },\n getProjectContactPerson: function (projectId) {\n resourceUrl = resourceUrl + \"/GetProjectContactPerson/\" + projectId;\n return $http.get(resourceUrl).then(function (result) {\n return result.data;\n });\n },\n }\n }\n return contactlistService;\n }]);","import envConfig from \"@common/envConfig\";\n\nangular.module(\"DigiLean\").factory('folderService', ['$http',\nfunction ($http) {\n function folderService() {\n var resource = \"/folder\";\n var resourceUrl = envConfig.webApiUrl + resource;\n return {\n getList: function() { \n return $http.get(resourceUrl).then(function (result) {\n return result.data;\n });\n },\n\n getFlexiBoards: function() { \n var url = resourceUrl + \"/GetFlexiBoards\";\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n getBoardsInfo: function() { // id, name, boardType\n var url = resourceUrl + \"/GetBoardsInfo\";\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n \n getFlexiBoardsForAdmin: function() { \n var url = resourceUrl + \"/GetFlexiBoardsForAdmin\";\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n\n \n\n\n add: function (folder) {\n return $http.post(resourceUrl, folder).then(function (result) {\n return result.data;\n });\n },\n update: function (folder) {\n return $http.put(resourceUrl, folder).then(function (result) {\n return result.data;\n });\n },\n delete: function (id) {\n var url = resourceUrl + \"/DeleteFolder/\" + id;\n return $http.delete(url).then(function (result) {\n return result.data;\n });\n }\n }\n }\n return folderService;\n}]);","import envConfig from \"@common/envConfig\";\n\nangular.module(\"DigiLean\").factory('notificationService', ['$http',\n function ($http) {\n function notificationService() {\n var resource = \"/notifications\";\n var resourceUrl = envConfig.webApiUrl + resource;\n return {\n getNotificationActions: function() {\n return [\n { action: \"TaskAssigned\", actionSymbol: \"fad fa-user-tag\", translateLabel: \"NOTIFICATION_TASK_ASSIGNED\" },\n { action: \"TaskComment\", actionSymbol: \"fad fa-comment-lines\", translateLabel: \"NOTIFICATION_TASK_COMMENT\" },\n { action: \"TaskCommentReply\",actionSymbol: \"fad fa-reply\", translateLabel: \"NOTIFICATION_TASK_COMMENT_REPLY\" },\n { action: \"TaskCommentMention\", actionSymbol: \"fad fa-at\", translateLabel: \"NOTIFICATION_TASK_COMMENT_MENTION\" },\n { action: \"UpdatedResponsibleDeviation\",actionSymbol: \"fad fa-user-tag\", translateLabel: \"NOTIFICATION_UPDATED_RESPONSIBLE_DEVIATION\" },\n { action: \"NewDeviation\",actionSymbol: \"fad fa-exclamation-triangle\", translateLabel: \"NOTIFICATION_DEVIATION_NEW\" },\n { action: \"DeviationComment\",actionSymbol: \"fad fa-comment-lines\", translateLabel: \"NOTIFICATION_DEVIATION_COMMENT\" },\n { action: \"DeviationCommentReply\",actionSymbol: \"fad fa-reply\", translateLabel: \"NOTIFICATION_DEVIATION_COMMENT_REPLY\" },\n { action: \"DeviationCommentMention\",actionSymbol: \"fad fa-at\", translateLabel: \"NOTIFICATION_DEVIATION_COMMENT_MENTION\" },\n { action: \"UpdatedResponsibleSuggestion\", actionSymbol: \"fad fa-user-tag\", translateLabel: \"NOTIFICATION_UPDATED_RESPONSIBLE_IMPROVEMENT\" },\n { action: \"ImprovementCommentMention\",actionSymbol: \"fad fa-at\", translateLabel: \"NOTIFICATION_IMPROVEMENT_COMMENT_MENTION\" },\n { action: \"ImprovementCommentReply\",actionSymbol: \"fad fa-reply\", translateLabel: \"NOTIFICATION_IMPROVEMENT_COMMENT_REPLY\" },\n { action: \"ImprovementComment\",actionSymbol: \"fad fa-comment-lines\", translateLabel: \"NOTIFICATION_IMPROVEMENT_COMMENT\" },\n { action: \"ImprovementChangedStatus\",actionSymbol: \"fad fa-sync-alt\", translateLabel: \"IMPROVEMENT_NOTIFICATION_SUGGESTION_STATUS\" },\n { action: \"PageCommentAdded\", actionSymbol: \"fad fa-comment-lines\", translateLabel: \"NOTIFICATION_PAGE_COMMENT\" },\n { action: \"ProjectMessageAdded\", actionSymbol: \"fad fa-calendar-alt\", translateLabel: \"PROJECT_NOTIFICATION_MESSAGE_ADDED\" },\n { action: \"LicensesChanged\", actionSymbol: \"fad fa-money-check-edit-alt\", translateLabel: \"NOTIFICATION_CUSTOMER_LICENSE_CHANGE\" },\n \n ]\n },\n archiveNotification: function (id) {\n var url = resourceUrl + \"/archiveNotification/\" + id;\n return $http.put(url).then(function (result) {\n return result.data;\n });\n },\n seenNotification: function (id) {\n var url = resourceUrl + \"/seenNotification/\" + id;\n return $http.put(url).then(function (result) {\n return result.data;\n });\n },\n markAllAsSeen: function (id) {\n var url = resourceUrl + \"/markAllAsSeen\";\n return $http.put(url).then(function (result) {\n return result.data;\n });\n },\n getUnseenNotificationsCount: function () {\n var url = resourceUrl + \"/getUnseenNotificationsCount\";\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n getMyNotifications: function (options) {\n var url = resourceUrl + \"/getMyNotifications\";\n return $http.post(url, options).then(function (result) {\n return result.data;\n });\n },\n getMyLatestNotifications: function (numberOfValues) {\n var url = resourceUrl + \"/getMyLatestNotifications/\" + numberOfValues;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n getActivityForNotification: function (activityLogItemId) {\n var url = resourceUrl + \"/getActivityForNotification/\" + activityLogItemId;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n getNotificationsOverview: function () {\n var url = resourceUrl + \"/getNotificationsOverview\";\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n\n getMyNotificationSettings: function () {\n var url = resourceUrl + \"/getMyNotificationSettings\";\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n\n addNotificationSettings: function (list) {\n var url = resourceUrl + \"/addNotificationSettings\";\n return $http.post(url, list).then(function (result) {\n return result.data;\n });\n },\n\n deleteNotificationSettings: function () {\n var url = resourceUrl + \"/deleteNotificationSettings/\";\n return $http.delete(url).then(function (result) {\n return result.data;\n });\n },\n }\n }\n return notificationService;\n }]);","import envConfig from \"@common/envConfig\";\n\nangular.module(\"DigiLean\").factory('favoriteService', ['$http',\nfunction ($http) {\n function favoriteService() {\n var resource = \"/favorite\";\n var resourceUrl = envConfig.webApiUrl + resource;\n return {\n hasPageAsFavorite: function(pageId) { \n var url = resourceUrl + \"/hasPageAsFavorite/\" + pageId;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n getMyFavoritePages: function() { \n var url = resourceUrl + \"/getMyFavoritePages\";\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n getPageFavoriteStatus: function(pageId) { \n var url = resourceUrl + \"/getPageFavoriteStatus/\" + pageId;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n addPageAsFavorite: function (source, pageId) {\n var url = resourceUrl + \"/addPageAsFavorite/\" + source + \"/\" + pageId;\n return $http.put(url).then(function (result) {\n return result.data;\n });\n },\n removePageAsFavorite: function (source, pageId) {\n var url = resourceUrl + \"/removePageAsFavorite/\" + source + \"/\" + pageId;\n return $http.delete(url).then(function (result) {\n return result.data;\n });\n },\n }\n }\n return favoriteService;\n}]);","import envConfig from \"@common/envConfig\";\n\n\nangular.module(\"DigiLean\").factory('smarttableService', ['$http', '$translate',\n function ($http, $translate) {\n function smarttableService() {\n var resource = \"/smarttable\";\n var resourceUrl = envConfig.webApiUrl + resource;\n\n return {\n getIcons: function () {\n return [\n {\n id:0,\n icon: \"fa-long-arrow-alt-up\",\n title: $translate.instant('COMMON_UP'), // green\n color: \"#8CC152\",\n },\n {\n id:1,\n icon: \"fa-long-arrow-alt-right\",\n title: $translate.instant('COMMON_FLAT'), // orange \n color: \"#fcbb42\",\n },\n {\n id:2,\n icon: \"fa-long-arrow-alt-down\",\n title: $translate.instant('COMMON_DOWN'), // red\n color: \"#E9573F\",\n }\n ];\n },\n createSmartTable: function(smartTableTemplate) {\n var url = resourceUrl + \"/createSmartTable/\";\n return $http.post(url, smartTableTemplate).then(function (result) {\n return result.data;\n });\n },\n get: function (id) {\n var url = resourceUrl + \"/\" + id;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n \n addRow: function (row) {\n var url = resourceUrl + \"/addRow/\";\n return $http.post(url, row).then(function (result) {\n return result.data;\n });\n },\n deleteRow: function(id) {\n var url = resourceUrl + \"/deleteRow/\" + id;\n return $http.delete(url).then(function (result) {\n return result.data;\n });\n },\n addColumn: function (column) {\n var url = resourceUrl + \"/addColumn/\";\n return $http.post(url, column).then(function (result) {\n return result.data;\n });\n },\n \n deleteColumn: function(id) {\n var url = resourceUrl + \"/deleteColumn/\" + id;\n return $http.delete(url).then(function (result) {\n return result.data;\n });\n },\n updateColumnSortOrder: function (boardId, sortOrder) {\n var url = resourceUrl + \"/UpdateColumnSortOrder/\" + boardId ;\n return $http.put(url, sortOrder).then(function (result) {\n return result.data;\n });\n },\n updateRowSortOrder: function (boardId, sortOrder) {\n var url = resourceUrl + \"/UpdateRowSortOrder/\" + boardId ;\n return $http.put(url, sortOrder).then(function (result) {\n return result.data;\n });\n },\n updateCell: function (cell) {\n var url = resourceUrl + \"/updateCell/\";\n return $http.put(url, cell).then(function (result) {\n return result.data;\n });\n },\n updateName: function (id, name) {\n var row = {\n id: id,\n name: name\n }\n var url = resourceUrl + \"/updateRowName/\";\n return $http.put(url,row).then(function (result) {\n return result.data;\n });\n },\n updateStartTime: function (id, startTime) {\n var row = {\n id: id,\n startTime: startTime\n }\n var url = resourceUrl + \"/updateRowStartTime/\";\n return $http.put(url,row).then(function (result) {\n return result.data;\n });\n },\n updateEndTime: function (id, endTime) {\n var row = {\n id: id,\n endTime: endTime\n }\n var url = resourceUrl + \"/updateRowEndTime/\";\n return $http.put(url,row).then(function (result) {\n return result.data;\n });\n },\n updateColumn: function (col) {\n var updated = {\n id: col.id,\n name: col.name,\n boardId: col.boardId\n }\n if (col.settings) { \n updated.settings = JSON.stringify(col.settings);\n }\n var url = resourceUrl + \"/updateColumn/\";\n return $http.put(url, updated).then(function (result) {\n return result.data;\n });\n },\n updateOwner: function (rowId, user) {\n var row = {\n id: rowId,\n owner: user.fullName,\n ownerUserId : user.userId,\n ownerDisplayName: user.displayName\n }\n var url = resourceUrl + \"/updateOwner/\";\n return $http.put(url,row).then(function (result) {\n return result.data;\n });\n },\n getPostIts: function () {\n return [\n {\n title: \"default\",\n fillColor: \"#ffffff\",\n background: \"#E6E9ED\"\n },\n {\n title: \"four\", // orange\n // fillColor: \"#FFCE54\",\n fillColor: \"#FFF6DF\",\n background: \"#FCBB42\"\n },\n {\n title: \"three\", // green\n // fillColor: \"#A0D468\",\n fillColor: \"#EDF7E3\",\n background: \"#8CC152\"\n },\n {\n title: \"two\", //blue\n // fillColor: \"#4FC1E9\",\n fillColor: \"#DFF3FB\",\n background: \"#3BAFDA\"\n },\n {\n title: \"one\", // red\n // fillColor: \"#FC6E51\",\n fillColor: \"#FEE4DF\",\n background: \"#E9573F\"\n },\n {\n title: \"five\", // pink\n // fillColor: \"#EC87C0\",\n fillColor: \"#FBE9F3\", \n background: \"#D770AD\"\n }\n\n ];\n },\n };\n }\n return smarttableService;\n }]);","import * as timeService from \"@common/services/timeService\"\nimport envConfig from \"@common/envConfig\";\n\nvar DigiLean = angular.module('DigiLean');\nDigiLean.factory('boardTaskService', ['$http',\n function ($http) {\n function boardTaskService() {\n var resource = \"/task\";\n var resourceUrl = envConfig.webApiUrl + resource;\n\n return {\n get: function (id) {\n var url = resourceUrl + \"/\" + id;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n getInfo: function (id) {\n var url = resourceUrl + \"/getinfo/\" + id;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n }, \n getRepeatInfo: function (id) {\n var url = resourceUrl + \"/getRepeatInfo/\" + id;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n }, \n getTaskInfoBoardName: function (id) {\n var url = resourceUrl + \"/getTaskInfoBoardName/\" + id;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n canEdit: function (id) {\n var url = resourceUrl + \"/canedit/\" + id;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n getMyTasks: function (timeperiod) {\n var url = resourceUrl + \"/mytasks\";\n return $http.post(url, timeperiod).then(function (result) {\n return result.data;\n });\n },\n\n getTagCount: function () {\n var url = resourceUrl + \"/getTagCount/\";\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n getModifiedInfo: function (taskId) {\n var url = resourceUrl + \"/getModifiedInfo/\" + taskId;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n getTableValues: function (tableParams) {\n var url = resourceUrl + \"/getTableValues/\";\n return $http.post(url, tableParams).then(function (result) {\n return result.data;\n });\n },\n\n getTotalNumberOfTasks: function () {\n var url = resourceUrl + \"/getTotalNumberOfTasks/\";\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n getTotalNumberOfBoardTasks: function () {\n var url = resourceUrl + \"/getTotalNumberOfBoardTasks/\";\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n\n getListForCurrentUser: function () {\n var url = resourceUrl + \"/getmytasks\";\n var timeZoneOffset = {\n offset: timeService.getTimeZoneOffset()\n }\n return $http.post(url, timeZoneOffset).then(function (result) {\n return result.data;\n });\n },\n\n getMyTasksByStatus: function (status, timePeriod) {\n var url = resourceUrl + \"/GetMyTasksByStatus/\" + status;\n\n return $http.post(url, timePeriod).then(function (result) {\n return result.data;\n });\n },\n\n getUserTasks: function (userId) {\n var url = resourceUrl + \"/getUserTasks/\" + userId;\n var timeZoneOffset = {\n offset: timeService.getTimeZoneOffset()\n }\n return $http.post(url, timeZoneOffset).then(function (result) {\n return result.data;\n });\n },\n getSubTasks: function (parentId) {\n var url = resourceUrl + \"/getSubTasks/\" + parentId;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n\n getSiblings: function (siblingId) {\n var url = resourceUrl + \"/getsiblings/\" + siblingId;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n getBoardInfo: function (id) {\n var url = resourceUrl + \"/getboardinfo/\" + id;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n getComments: function (taskId) {\n var url = resourceUrl + \"/getComments/\" + taskId;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n getCommentWithReplies: function (taskId) {\n var url = resourceUrl + \"/getCommentWithReplies/\" + taskId;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n getAttachments: function (taskId) {\n var url = resourceUrl + \"/getAttachments/\" + taskId;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n getBoardStatus: function (id, period) {\n var url = envConfig.webApiUrl + \"/board/getboardstatus/\" + id;\n return $http.post(url, period).then(function (result) {\n return result.data;\n });\n },\n getNoA3TaskPerStatus: function (a3Id) {\n var url = envConfig.webApiUrl + \"/task/getNoA3TaskPerStatus/\" + a3Id;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n getTasksByA3: function (a3Id) {\n var url = envConfig.webApiUrl + \"/task/getTasksByA3/\" + a3Id;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n getNoProjectTaskPerStatus: function (projectId) {\n var url = envConfig.webApiUrl + \"/task/getNoProjectTaskPerStatus/\" + projectId;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n getTasksByProject: function (projectId) {\n var url = envConfig.webApiUrl + \"/task/getTasksByProject/\" + projectId;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n getProjectPortfolioTasksForPeriod: function (boardId, period) {\n var url = envConfig.webApiUrl + \"/task/GetProjectPortfolioTasksForPeriod/\" + boardId;\n return $http.post(url, period).then(function (result) {\n return result.data;\n });\n },\n \n addTask: function (task) {\n return $http.post(resourceUrl, task).then(function (result) {\n return result.data;\n });\n },\n\n addSubTask: function (parentId, task) {\n var url = envConfig.webApiUrl + \"/task/addSubTask/\" + parentId;\n return $http.post(url, task).then(function (result) {\n return result.data;\n });\n },\n\n addBoardTask: function (task) {\n var url = resourceUrl + \"/addBoardTask\";\n return $http.post(url, task).then(function (result) {\n return result.data;\n });\n },\n\n updateTask: function (task) {\n var url = resourceUrl + \"/\" + task.id;\n return $http.put(url, task).then(function (result) {\n return result.data;\n });\n },\n\n updateProgressStatus: function (id, status) {\n var url = resourceUrl + \"/\" + id + \"/changeProgressStatus\";\n return $http.put(url, status).then(function (result) {\n return result.data;\n });\n },\n updatePriorityStatus: function (id, status) {\n var url = resourceUrl + \"/\" + id + \"/changePriorityStatus\";\n return $http.put(url, status).then(function (result) {\n return result.data;\n });\n },\n\n updateStatus: function (id, status) {\n var url = resourceUrl + \"/\" + id + \"/changeStatus\";\n return $http.put(url, status).then(function (result) {\n return result.data;\n });\n },\n\n updateTitle: function (id, title) {\n var url = resourceUrl + \"/\" + id + \"/updateTitle\";\n return $http.put(url, title).then(function (result) {\n return result.data;\n });\n },\n updateBoard: function (id, taskboard) {\n var url = resourceUrl + \"/\" + id + \"/updateBoard\";\n return $http.put(url, taskboard).then(function (result) {\n return result.data;\n });\n },\n clearSubTaskBoard: function (id, taskboard) {\n var url = resourceUrl + \"/\" + id + \"/clearSubTaskBoard\";\n return $http.put(url, taskboard).then(function (result) {\n return result.data;\n });\n },\n \n\n updateDate: function (id, date) {\n var url = resourceUrl + \"/\" + id + \"/updateDate\";\n var day = moment(date).isoWeekday();\n console.log(day);\n var dateOptions = {\n date: date,\n dayOfWeek: day\n }\n return $http.put(url, dateOptions).then(function (result) {\n return result.data;\n });\n },\n\n updateSortOrderForSubtasks: function(taskId, sortOrders) {\n var url = resourceUrl + \"/\" + taskId + \"/UpdateSortOrderForSubtasks\";\n return $http.put(url, sortOrders).then(function (result) {\n return result.data;\n });\n },\n\n updateactionItemstatus: function (id, status) {\n var url = resourceUrl + \"/\" + id + \"/updateactionItemstatus\";\n return $http.put(url, status).then(function (result) {\n return result.data;\n });\n },\n\n deleteTask: function (id) {\n var url = resourceUrl + \"/\" + id;\n return $http.delete(url).then(function () {\n return;\n });\n },\n deleteFutureRepeatingTask: function (id) {\n var url = resourceUrl + \"/deletefuturerepeatingtask/\" + id;\n return $http.delete(url).then(function (result) {\n return result.data;\n });\n },\n deleteRepeatingTask: function (id) {\n var url = resourceUrl + \"/deleterepeatingtask/\" + id;\n return $http.delete(url).then(function (result) {\n return result.data;\n });\n },\n\n deleteClonedTask: function (id) {\n var url = resourceUrl + \"/deleteClonedTask/\" + id;\n return $http.delete(url).then(function (result) {\n return result.data;\n });\n },\n\n deleteAClonedTask: function (id) {\n var url = resourceUrl + \"/deleteAClonedTask/\" + id;\n return $http.delete(url).then(function () {\n return;\n });\n },\n\n\n moveTask: function (options) {\n var url = resourceUrl + \"/\" + options.taskId + \"/updateposition\";\n var day = moment(options.boardDate).isoWeekday();\n var dateOptions = {\n date: options.boardDate,\n dayOfWeek: day\n }\n options.dateOptions = dateOptions;\n return $http.put(url, options).then(function () {\n return;\n });\n },\n moveTaskToPersonalBoard: function (id) {\n var url = resourceUrl + \"/\" + id + \"/MoveTaskToPersonalBoard\";\n return $http.put(url).then(function (result) {\n return result.data;\n });\n },\n moveActionItemToTask: function (options) {\n options.timeZoneOffset = timeService.getTimeZoneOffset();\n var url = resourceUrl + \"/\" + options.id + \"/moveActionItemToTask\";\n return $http.put(url, options).then(function (result) {\n return result.data;\n });\n },\n moveTaskToActionItem: function (options) {\n var url = resourceUrl + \"/\" + options.id + \"/moveTaskToActionItem\";\n return $http.put(url, options).then(function (result) {\n return result.data;\n });\n },\n moveTaskToArchive: function (id) {\n var url = resourceUrl + \"/\" + id + \"/moveTaskToArchive\";\n return $http.put(url).then(function (result) {\n return result.data;\n });\n },\n moveTaskFromArchive: function (id) {\n var url = resourceUrl + \"/\" + id + \"/moveTaskFromArchive\";\n return $http.put(url).then(function (result) {\n return result.data;\n });\n },\n updateActionListItem: function (options) {\n var url = resourceUrl + \"/\" + options.id + \"/updateActionListItem\";\n return $http.put(url, options).then(function (result) {\n return result.data;\n });\n },\n\n createActionListItem: function (item) {\n var url = resourceUrl + \"/\" + item.id + \"/createActionListItem\";\n return $http.put(url, item).then(function (result) {\n return result.data;\n });\n },\n\n assignUser: function (options) {\n var url = resourceUrl + \"/\" + options.taskId + \"/assignuser\";\n return $http.put(url, options.user).then(function () {\n return;\n });\n },\n\n updateDuration: function (id, taskDuration) {\n var url = resourceUrl + \"/\" + id + \"/updateduration\";\n return $http.put(url, taskDuration).then(function () {\n return;\n });\n },\n updateStartDate: function (id, startDate) {\n var url = resourceUrl + \"/\" + id + \"/updateStartDate\";\n var taskStartDate = {\n taskId: id,\n startTime: startDate\n }\n return $http.put(url, taskStartDate).then(function () {\n return;\n });\n },\n updateRowPosition: function (rowPosition) {\n var url = resourceUrl + \"/\" + rowPosition.taskId + \"/updateRowPosition\";\n return $http.put(url, rowPosition).then(function () {\n return;\n });\n },\n\n cloneTask: function (taskId, options) {\n var url = resourceUrl + \"/\" + taskId + \"/clonetask\";\n return $http.post(url, options).then(function (result) {\n return result.data;\n });\n },\n\n copyTask: function (taskId) {\n var url = resourceUrl + \"/\" + taskId + \"/copyTask\";\n return $http.post(url).then(function (result) {\n return result.data;\n });\n },\n\n repeatTask: function (taskId, repeatOption) {\n var url = resourceUrl + \"/\" + taskId + \"/repeatTask\";\n return $http.post(url, repeatOption).then(function (result) {\n return result.data;\n });\n },\n\n addComment: function (options) {\n var url = resourceUrl + \"/\" + options.boardTaskId + \"/addcomment\";\n return $http.post(url, options).then(function (result) {\n return result.data; // comment object is returned\n });\n },\n deleteComment: function (taskId, commentId) {\n var url = resourceUrl + \"/\" + taskId + \"/deleteComment/\" + commentId;\n return $http.delete(url).then(function (result) {\n return result.data;\n });\n },\n addAttachment: function (taskId, fileInfo) {\n var url = resourceUrl + \"/\" + taskId + \"/addAttachment\";\n return $http.post(url, fileInfo).then(function (result) {\n return result.data;\n });\n },\n\n deleteAttachment: function (taskId, attachmentId) {\n var url = resourceUrl + \"/\" + taskId + \"/deleteAttachment/\" + attachmentId;\n return $http.delete(url).then(function (result) {\n return result.data;\n });\n },\n\n }\n }\n return boardTaskService;\n }]);","import * as timeService from \"@common/services/timeService\"\nimport envConfig from \"@common/envConfig\";\n\nangular.module(\"DigiLean\").factory('dataService', ['$http',\n function ($http) {\n function dataService() {\n var resource = \"/values\";\n var resourceUrl = envConfig.webApiUrl + resource;\n\n return {\n add: function (id, value) {\n var url = resourceUrl + \"/Add/\" + id;\n return $http.post(url, value).then(function (result) {\n return result.data;\n });\n },\n\n addList: function (id, values) {\n var url = resourceUrl + \"/AddList/\" + id;\n return $http.post(url, values).then(function (result) {\n return result.data;\n });\n },\n\n update: function (id, value) {\n var url = resourceUrl + \"/update/\" + id;\n return $http.put(url, value).then(function (result) {\n return result.data;\n });\n },\n\n delete: function (id) {\n var url = resourceUrl + \"/Delete/\" + id;\n return $http.delete(url).then(function (result) {\n return result.data;\n });\n },\n\n deleteAllValues: function (id) {\n var url = resourceUrl + \"/DeleteAllValues/\" + id;\n return $http.delete(url).then(function (result) {\n return result.data;\n });\n },\n\n getLatestValues: function (id, options) {\n var url = resourceUrl + \"/GetLatestValues/\" + id;\n return $http.post(url, options).then(function (result) {\n return result.data;\n });\n },\n\n getTableValues: function (id, tableParams) {\n var url = resourceUrl + \"/getTableValues/\" + id;\n return $http.post(url, tableParams).then(function (result) {\n return result.data;\n });\n },\n\n getValuesForPeriod: function (id, options) {\n var url = resourceUrl + \"/GetValuesForPeriod/\" + id;\n return $http.post(url, options).then(function (result) {\n return result.data;\n });\n },\n\n getSumForPeriod: function (id, options) {\n var url = resourceUrl + \"/getSumForPeriod/\" + id;\n return $http.post(url, options).then(function (result) {\n return result.data;\n });\n },\n\n getNumberOfValuesForPeriod: function (id, options) {\n var url = resourceUrl + \"/getNumberOfValuesForPeriod/\" + id;\n return $http.post(url, options).then(function (result) {\n return result.data;\n });\n },\n\n getGroupedSumForPeriod: function (id, options) {\n var url = resourceUrl + \"/GetGroupedSumForPeriod/\" + id;\n return $http.post(url, options).then(function (result) {\n return result.data;\n });\n },\n\n getStackedGroupedSum: function (id, options) {\n var url = resourceUrl + \"/getStackedGroupedSum/\" + id;\n return $http.post(url, options).then(function (result) {\n return result.data;\n });\n },\n\n getTargetValuesForPeriod: function(id, options){\n var url = resourceUrl + \"/GetTargetValuesForPeriod/\" + id;\n return $http.post(url, options).then(function (result) {\n return result.data;\n });\n },\n\n getManualTargetValuesForPeriod: function(id, options){\n var url = resourceUrl + \"/GetManualTargetValuesForPeriod/\" + id;\n return $http.post(url, options).then(function (result) {\n return result.data;\n });\n },\n\n getFirstDate: function (id, timePeriod, filter) {\n var url = resourceUrl + \"/GetFirstDate/\" + id;\n var query = {\n timeZone: timeService.getUserTimeZone(), // Which timezone we would like the result to be calculated in.\n timePeriod: timePeriod,\n filters: filter\n }\n return $http.post(url, query).then(function (result) {\n return result.data;\n });\n },\n\n getLastDate: function (id, timePeriod, filter) {\n var url = resourceUrl + \"/getLastDate/\" + id;\n var query = {\n timeZone: timeService.getUserTimeZone(), // Which timezone we would like the result to be calculated in.\n timePeriod: timePeriod,\n filters: filter\n }\n return $http.post(url, query).then(function (result) {\n return result.data;\n });\n },\n \n getAverageForPeriod: function (id, timePeriod) {\n var url = resourceUrl + \"/getAverageForPeriod/\" + id;\n return $http.post(url, timePeriod).then(function (result) {\n return result.data;\n });\n }\n\n\n }\n }\n return dataService;\n }]);","import envConfig from \"@common/envConfig\";\nimport { getUserProfile } from \"@common/stores/userStore\"\n\nangular.module(\"DigiLean\").factory('dataListService', ['$filter', '$http',\n function ($filter, $http) {\n function dataListService() {\n var resource = \"/dataList\";\n var resourceUrl = envConfig.webApiUrl + resource;\n\n let lang = \"en\"\n const up = getUserProfile()\n if (up.preferredLanguage)\n lang = up.preferredLanguage\n\n return {\n get: function (id) {\n var url = resourceUrl + \"/get/\" + id;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n\n getFeatureList: function (feature, options) {\n var url = resourceUrl + \"/getFeatureList/\" + feature;\n return $http.post(url, options).then(function (result) {\n return result.data;\n });\n },\n\n getLists: function () {\n var url = resourceUrl + \"/getLists\";\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n\n getItems: function (listId, options) {\n options.LanguageCode = lang;\n var url = resourceUrl + \"/GetItems/\" + listId;\n return $http.post(url, options).then(function (result) {\n return result.data;\n });\n },\n\n createList: function (list) {\n var url = resourceUrl + \"/createList\";\n return $http.post(url, list).then(function (result) {\n return result.data;\n });\n },\n updateItemsSortOrder: function (id, listSorting) {\n var url = resourceUrl + \"/updateItemsSortOrder/\" + id;\n return $http.put(url, listSorting).then(function (result) {\n return result.data;\n });\n },\n\n updateList: function (id, list) {\n var url = resourceUrl + \"/updateList/\" + id;\n return $http.put(url, list).then(function (result) {\n return result.data;\n });\n },\n\n deleteList: function (id) {\n var url = resourceUrl + \"/deleteList/\" + id;\n return $http.delete(url).then(function (result) {\n return result.data;\n });\n },\n\n addItemToList: function (listId, item) {\n var url = resourceUrl + \"/addItemToList/\" + listId;\n return $http.post(url, item).then(function (result) {\n return result.data;\n });\n },\n updateDataListItem: function (listId, item) {\n var url = resourceUrl + \"/UpdateDataListItem/\" + listId;\n return $http.put(url, item).then(function (result) {\n return result.data;\n });\n }, \n deleteDataListItem: function (id) {\n var url = resourceUrl + \"/DeleteDataListItem/\" + id;\n return $http.delete(url).then(function (result) {\n return result.data;\n });\n },\n updateTranslationLabel: function (listId, item) {\n var url = resourceUrl + \"/updateTranslationLabel/\" + listId;\n return $http.put(url, item).then(function (result) {\n return result.data;\n });\n },\n listInUse: function (listId) {\n var url = resourceUrl + \"/ListInUse/\" + listId;\n return $http.post(url).then(function (result) {\n return result.data;\n });\n },\n }\n }\n return dataListService;\n }]);","import * as customerService from \"@common/services/customers/customerService\"\nimport envConfig from \"@common/envConfig\";\n\nangular.module(\"DigiLean\").factory('dataSourceService', ['$http', '$translate', 'navigationService',\n function ($http, $translate, navigationService) {\n function dataService() {\n var resource = \"/datasources\";\n var resourceUrl = envConfig.webApiUrl + resource;\n\n function createModuleList(currencySetting, limited) {\n var currency = customerService.getDefaultCurrency();\n if (currencySetting) {\n currency = currencySetting;\n }\n var list = [];\n var hasBoard = navigationService().hasModule(\"BOARD\");\n var hasImprovement = navigationService().hasModule(\"IMPROVEMENT\");\n var hasDeviation = navigationService().hasModule(\"DEVIATION\");\n var hasA3 = navigationService().hasModule(\"A3\");\n var hasProject = navigationService().hasModule(\"PROJECT\");\n var hasStrategy = navigationService().hasModule(\"STRATEGY\");\n var translationNumber = $translate.instant('COMMON_NUMBER');\n \n if (hasBoard && !limited) {\n var boardGroupElements = [\n {label: $translate.instant('COMMON_ASSET'), sourceColumn: \"assetId\", type: \"asset\"},\n {label: $translate.instant('COMMON_CREATED_BY'), sourceColumn: \"createdByUserId\", type: \"user\"},\n {label: $translate.instant('COMMON_OWNER'), sourceColumn: \"ownerUserId\", type: \"user\"}\n ];\n var newboards = {\n id: \"NewBoard\",\n title: $translate.instant('COMMON_TEAM_BOARDS'),\n description: $translate.instant('DASHBOARD_BOARD_NEW_DESC'),\n valueElement: {unit: translationNumber, label: translationNumber},\n objectSource: 'internal',\n ownerUserDisplayName: 'DigiLEAN',\n elements: boardGroupElements\n };\n list.push(newboards);\n }\n \n if (hasImprovement) {\n var elements = [\n {label: $translate.instant('COMMON_ASSET'), sourceColumn: \"assetId\", type: \"asset\"},\n {label: $translate.instant('COMMON_CATEGORY'), sourceColumn: \"categoryId\", type: \"improvementcategory\"},\n {label: $translate.instant('COMMON_SUGGESTED_BY'), sourceColumn: \"suggestedByUserId\", type: \"user\"},\n {label: $translate.instant('IMPROVEMENT_PRIORITY'), sourceColumn: \"priorityStatus\", type: \"prioritystatus\"}\n ];\n \n var newElements = [elements[0], elements[1], elements[2]];\n \n if (hasProject) {\n elements.push({label: $translate.instant('PROJECT_PROJECT'), sourceColumn: \"projectId\", type: \"project\"});\n newElements.push({label: $translate.instant('PROJECT_PROJECT'), sourceColumn: \"projectId\", type: \"project\"});\n }\n \n if (hasStrategy) {\n elements.unshift({label: $translate.instant('COMMON_GOAL'), sourceColumn: \"strategyGoalId\", type: \"strategygoal\"});\n newElements.unshift({label: $translate.instant('COMMON_GOAL'), sourceColumn: \"strategyGoalId\", type: \"strategygoal\"});\n }\n \n var improvementSuggestionCompleted = {\n id: \"ImprovementSuggestionCompleted\",\n title: $translate.instant('DASHBOARD_COMPLETED_IMPROVEMENTS'),\n description: $translate.instant('DASHBOARD_IMPROVEMENT_SUGGESTION_COMPLETED_DESC'),\n valueElement: {unit: translationNumber, label: translationNumber},\n objectSource: 'internal',\n ownerUserDisplayName: 'DigiLEAN',\n elements: elements\n };\n var improvementSuggestionNew = {\n id: \"ImprovementSuggestionNew\",\n title: $translate.instant('IMPROVEMENT_NEW_SUGGESTIONS'),\n description: $translate.instant('DASHBOARD_IMPROVEMENT_SUGGESTION_NEW_DESC'),\n valueElement: {unit: translationNumber, label: translationNumber},\n objectSource: 'internal',\n ownerUserDisplayName: 'DigiLEAN',\n elements: newElements\n };\n list.push(improvementSuggestionNew);\n list.push(improvementSuggestionCompleted);\n }\n \n if (hasDeviation) {\n var deviationGroupElements = [\n {label: $translate.instant('COMMON_REPORTED_BY_GROUP'), sourceColumn: \"assetId\", type: \"asset\"},\n {label: $translate.instant('COMMON_REPORTED_BY'), sourceColumn: \"createdByUserId\", type: \"user\"},\n {label: $translate.instant('DEVIATION_FOLLOW_UP_GROUP'), sourceColumn: \"followUpAssetId\", type: \"followupasset\"},\n {label: $translate.instant('COMMON_OWNER'), sourceColumn: \"ownerUserId\", type: \"user\"},\n {label: $translate.instant('COMMON_AREA'), sourceColumn: \"areaId\", type: \"area\"},\n {label: $translate.instant('COMMON_CATEGORY'), sourceColumn: \"problemCategoryId\", type: \"problemcategory\"},\n {label: $translate.instant('DEVIATION_SEVERITY'), sourceColumn: \"severity\", type: \"deviationseverity\"},\n {label: $translate.instant('COMMON_DEVIATION_TYPES'), sourceColumn: \"deviationTypeId\", type: \"deviationtype\"}\n ];\n if (hasProject) {\n deviationGroupElements.push({label: $translate.instant('PROJECT_PROJECT'), sourceColumn: \"projectId\", type: \"project\"});\n }\n \n var deviationCompleted = {\n id: \"DeviationCompleted\",\n title: $translate.instant('DASHBOARD_COMPLETED_DEVIATIONS'),\n description: $translate.instant('DASHBOARD_DEVIATION_COMPLETED_DESC'),\n valueElement: {unit: translationNumber, label: translationNumber},\n objectSource: 'internal',\n ownerUserDisplayName: 'DigiLEAN',\n elements: deviationGroupElements\n };\n var deviationNew = {\n id: \"DeviationNew\",\n title: $translate.instant('DEVIATION_NEW_DEVIATIONS'),\n description: $translate.instant('DASHBOARD_DEVIATION_NEW_DESC'),\n valueElement: {unit: translationNumber, label: translationNumber},\n objectSource: 'internal',\n ownerUserDisplayName: 'DigiLEAN',\n elements: deviationGroupElements\n };\n list.push(deviationNew);\n list.push(deviationCompleted);\n }\n \n if (hasA3 && !limited) {\n var a3GroupElements = [\n {label: $translate.instant('COMMON_ASSET'), sourceColumn: \"assetId\", type: \"asset\"},\n {label: $translate.instant('COMMON_CATEGORY'), sourceColumn: \"categoryId\", type: \"a3category\"},\n {label: $translate.instant('COMMON_TEMPLATE'), sourceColumn: \"a3TemplateId\", type: \"a3template\"},\n {label: $translate.instant('COMMON_CREATED_BY'), sourceColumn: \"createdByUserId\", type: \"user\"},\n {label: $translate.instant('COMMON_OWNER'), sourceColumn: \"ownerUserId\", type: \"user\"}\n ];\n \n var a3Completed = {\n id: \"A3Completed\",\n title: $translate.instant('DASHBOARD_A3_COMPLETED'),\n description: $translate.instant('DASHBOARD_A3_COMPLETED_DESC'),\n valueElement: {unit: translationNumber, label: translationNumber},\n objectSource: 'internal',\n ownerUserDisplayName: 'DigiLEAN',\n elements: a3GroupElements\n };\n var a3New = {\n id: \"A3New\",\n title: $translate.instant('A3_NEW_A3'),\n description: $translate.instant('DASHBOARD_A3_NEW_DESC'),\n valueElement: {unit: translationNumber, label: translationNumber},\n objectSource: 'internal',\n ownerUserDisplayName: 'DigiLEAN',\n elements: a3GroupElements\n };\n var a3ROI = {\n id: \"A3ROI\",\n title: $translate.instant('IMPROVEMENT_ROI') + \" A3\",\n description: $translate.instant('DASHBOARD_ROI_DESC'),\n valueElement: {unit: \"%\", label: \"ROI\"},\n objectSource: 'internal',\n ownerUserDisplayName: 'DigiLEAN',\n elements: a3GroupElements\n };\n var a3Gains = {\n id: \"A3INVESTMENTGAINS\",\n title: $translate.instant('A3_MONEY_GAINS'),\n description: $translate.instant('DASHBOARD_A3_MONEY_GAINS_DESC'),\n valueElement: {unit: currency, label: \"Gains\"},\n objectSource: 'internal',\n ownerUserDisplayName: 'DigiLEAN',\n elements: a3GroupElements\n };\n var a3PotentialGains = {\n id: \"A3POTENTIALINVESTMENTGAINS\",\n title: $translate.instant('A3_POTENTIAL_GAINS'),\n description: $translate.instant('DASHBOARD_A3_POTENTIAL_GAINS_DESC'),\n valueElement: {unit: currency, label: \"Gains\"},\n objectSource: 'internal',\n ownerUserDisplayName: 'DigiLEAN',\n elements: a3GroupElements\n };\n list.push(a3New);\n list.push(a3Completed);\n list.push(a3ROI);\n list.push(a3Gains);\n list.push(a3PotentialGains);\n }\n return list;\n }\n\n return {\n add: function (value) {\n var url = resourceUrl + \"/Add\";\n return $http.post(url, value).then(function (result) {\n return result.data;\n });\n },\n\n addTarget: function (id, value) {\n var url = resourceUrl + \"/\" + id + \"/addTarget\";\n return $http.post(url, value).then(function (result) {\n return result.data;\n });\n },\n deleteTarget: function (id) {\n var url = resourceUrl + \"/deleteDataSourceTarget/\" + id;\n return $http.delete(url).then(function (result) {\n return result.data;\n });\n },\n update: function (id, value) {\n var url = resourceUrl + \"/Update/\" + id;\n return $http.put(url, value).then(function (result) {\n return result.data;\n });\n },\n delete: function (id) {\n var url = resourceUrl + \"/deleteDataSource/\" + id;\n return $http.delete(url).then(function (result) {\n return result.data;\n });\n },\n get: function (id) {\n var url = resourceUrl + \"/get/\" + id;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n getFeatureSource: function (feature) {\n var url = resourceUrl + \"/getFeatureSource/\" + feature;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n match: function (model) {\n var url = resourceUrl + \"/Match\";\n return $http.post(url, model).then(function (result) {\n return result.data;\n });\n },\n getAllTags: function () {\n var url = resourceUrl + \"/getAllTags/\";\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n addTag: function (id, value) {\n var url = resourceUrl + \"/\" + id + \"/addTag\";\n return $http.post(url, value).then(function (result) {\n return result.data;\n });\n },\n deleteTag: function (datasourceid, tagid) {\n var url = resourceUrl + \"/\" + datasourceid + \"/deleteTag/\" + tagid;\n return $http.delete(url).then(function (result) {\n return result.data;\n });\n },\n getTargets: function (id) {\n var url = resourceUrl + \"/getTargets/\" + id;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n getTargetSumForPeriod: function (id, options) {\n var url = resourceUrl + \"/getTargetSumForPeriod/\" + id;\n return $http.post(url, options).then(function (result) {\n return result.data;\n });\n },\n\n getList: function () {\n var url = resourceUrl + \"/getlist\";\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n \n getLimitedModuleList: function (currencySetting) {\n return createModuleList(currencySetting, true);\n },\n \n getModuleList: function (currencySetting) {\n return createModuleList(currencySetting, false);\n },\n\n addElement: function (id, value) {\n var url = resourceUrl + \"/\" + id + \"/AddElement\";\n return $http.post(url, value).then(function (result) {\n return result.data;\n });\n },\n\n updateElement: function (id, value) {\n var url = resourceUrl + \"/UpdateElement/\" + id;\n return $http.put(url, value).then(function (result) {\n return result.data;\n });\n },\n deleteElement: function (id) {\n var url = resourceUrl + \"/DeleteElement/\" + id;\n return $http.delete(url).then(function (result) {\n return result.data;\n });\n },\n\n }\n }\n return dataService;\n }]);","import { CustomerSettingKeys } from \"@api\"\nimport { getCompanySettingServer, updateCompanySettingServer} from \"@common/services/customers/customerService\"\n\ntype CompanySettings = { \n [k in CustomerSettingKeys]?: string | null\n}\n\nconst companySettingsCache: CompanySettings = {\n \"dateFormat\": null,\n \"currency\": null,\n \"language\": null\n}\n\n/**\n * Gets cached company setting as string\n * \n * @param {CompanySettingsString} keyStr - the company settings key\n */\nexport async function getCompanySetting (keystr: `${CustomerSettingKeys}`) {\n const key = keystr as CustomerSettingKeys\n\n const value = companySettingsCache[key]\n // check specifically for not null/undefined. Empty string is valid since not all settings are set for a customer\n if (value !== null && value !== undefined) {\n const value = companySettingsCache[key] as string\n return value\n }\n \n // Setting ${key} was not cached. Get from server\n let valueFromServer = \"\"\n const setting = await getCompanySettingServer(key)\n if (setting && setting.value) {\n valueFromServer = setting.value\n }\n \n // Caching ${key}='${valueFromServer}' from server\n updateSettingInCache(key, valueFromServer)\n return valueFromServer\n}\n\nexport async function saveCompanySetting(key: CustomerSettingKeys, value: string) {\n await updateCompanySettingServer(key, value)\n // update cache\n updateSettingInCache(key, value)\n}\n\nfunction updateSettingInCache(key: CustomerSettingKeys, value: string | null | undefined) {\n companySettingsCache[key] = value\n}\n","import { getCompanySetting } from \"@common/stores/companySettingsStore\"\nimport * as customerService from \"@common/services/customers/customerService\"\nimport * as timeService from \"@common/services/timeService\"\n\nconst DigiLean = angular.module('DigiLean')\nDigiLean.directive(\"timeframeSelector\", ['$translate',\n function ($translate) {\n return {\n templateUrl: 'timeframeSelector.html',\n restrict: 'E',\n scope: {\n 'options': '<',\n 'periodChanged': '&',\n 'globalTimePeriod': '@'\n },\n link: function (scope, elem, attrs) {\n scope.timePeriod = null;\n scope.toDayStartDate = false;\n scope.toDayEndDate = false;\n scope.timeframe = null;\n scope.timeframes = null;\n var companyfiscalmonth = customerService.getDefaultFiscalmonth()\n scope.hasCustomTimeframe = false;\n scope.numberDays = 7;\n \n\n var defaultTimeframes = ['all', 'lastyear', 'last12mth', 'thisyear','fiscalyear', 'YTD', \n '30', 'previousmonth', 'month', 'nextfourweeks','previousisoweek', 'thisandnextweek', 'isoweek', \n 'yesterday','day', 'number','custom'];\n\n /* also defined in timeService.js */\n scope.timeFrameMapping = {\n all: ['COMMON_ALL', 'digilean-label-dark', 0], //translation key, css-class, sort index\n last3years: ['DASHBOARD_LAST_3_YEARS', 'digilean-label-historical', 1],\n last3fiscalyears: ['DASHBOARD_LAST_3_FISCAL_YEAR', 'digilean-label-historical', 2],\n lastyear: ['DASHBOARD_LAST_YEAR', 'digilean-label-historical', 3],\n last12mth: ['DASHBOARD_LAST_12_MONTH', 'label-primary', 4],\n thisvslastyear: ['DASHBOARD_THIS_YEAR_VS_LAST_YEAR', 'label-primary', 5], \n thisfiscalvslastfiscalyear: ['DASHBOARD_THIS_FY_VS_LAST_FY', 'label-primary',6],\n year: ['DASHBOARD_YTD', 'label-primary', 7],\n fiscalyear: ['DASHBOARD_FISCAL_YEAR', 'label-primary', 8],\n YTD: ['DASHBOARD_YTD', 'label-primary', 9],\n YTW: ['DASHBOARD_YTD', 'label-primary', 10],\n YTM: ['DASHBOARD_YTD', 'label-primary', 11],\n thisyear: ['DASHBOARD_THIS_YEAR', 'label-primary', 12], \n previousmonth: ['DASHBOARD_PREVIOUS_MONTH', 'digilean-label-historical', 13],\n 30: ['COMMON_LAST_30_DAYS', 'label-info', 14],\n month: ['DASHBOARD_CURRENT_MONTH', 'label-info', 15], \n nextfourweeks: ['DASHBOARD_NEXT_FOUR_WEEKS', 'label-info', 16], \n thisandnextweek: ['DASHBOARD_THIS_AND_NEXT_WEEK', 'label-info-light-digilean', 17],\n previousisoweek: ['DASHBOARD_PREVIOUS_WEEK', 'digilean-label-historical', 18],\n isoweek: ['DASHBOARD_THIS_WEEK', 'label-danger', 19],\n thisweek: ['DASHBOARD_THIS_WEEK', 'label-danger', 20],\n yesterday: ['COMMON_YESTERDAY', 'digilean-label-historical', 21],\n day: ['COMMON_TODAY', 'label-warning', 22],\n custom: ['COMMON_CUSTOM', '', 23],\n customStartDate: ['COMMON_CUSTOM', '', 24],\n customEndDate: ['COMMON_CUSTOM', '', 25],\n none: ['COMMON_NONE', '', 26],\n number: ['', 'digilean-label-historical', 27],\n/* numberDays: ['', 'digilean-label-historical', 28],*/\n };\n\n scope.mappings = function () {\n var array = valuesToArray(scope.timeFrameMapping);\n var sorted = array.sort((a, b) => {\n return a.value[2] - b.value[2];\n });\n var keys = sorted.map(x => x.name);\n keys.splice(keys.indexOf('custom'), 1);\n return keys;\n };\n\n function valuesToArray(obj) {\n return Object.keys(obj).map(function (key) { return { name: key, value: obj[key] }; });\n }\n\n scope.getTimeframeClass = function (timeframe) {\n if (scope.timeFrameMapping && timeframe && scope.timeFrameMapping[timeframe])\n return scope.timeFrameMapping[timeframe][1];\n };\n\n scope.toggleToDayStartDate = function () {\n scope.toDayStartDate = !scope.toDayStartDate;\n updateHandler();\n }\n scope.toggleToDayEndDate = function () {\n scope.toDayEndDate = !scope.toDayEndDate;\n updateHandler();\n }\n\n\n function updateHandler() {\n \n if (scope.hasCustomTimeframe) {\n var from = moment(scope.fromDate).startOf('day');\n var to = moment(scope.toDate).endOf('day');\n if (scope.toDayStartDate) {\n from = moment().startOf('day');\n scope.timeframe = \"customEndDate\";\n }\n if (scope.toDayEndDate) {\n to = moment().endOf('day');\n scope.timeframe = \"customStartDate\";\n }\n\n scope.timePeriod = {\n from: from.utc().toDate().toJSON(),\n to: to.utc().toDate().toJSON(),\n //lastModified: new Date().toJSON() // need this for later comparison to check if the timePeriod has been changed helperLib.isObjectEqual\n }\n } else if(scope.hasNumberTimeframe){\n scope.timePeriod = timeService.getTimePeriod(scope.numberDays);\n scope.timePeriod.days = scope.numberDays;\n } else if(scope.hasFiscalyear){\n scope.timePeriod = timeService.getTimePeriod(scope.timeframe,companyfiscalmonth);\n \n } else {\n scope.timePeriod = timeService.getTimePeriod(scope.timeframe);\n \n }\n \n scope.fromDate = moment(scope.timePeriod.from).toDate();\n scope.toDate = moment(scope.timePeriod.to).toDate();\n \n scope.periodChanged({\n timePeriod: {\n period: scope.timePeriod,\n timeframe: scope.timeframe,\n timeframes: scope.timeframes\n }\n });\n }\n\n scope.$watch('options', function (options) {\n if (options && options.timePeriod) {\n getCompanySetting(\"fiscalmonth\").then(function (setting) {\n if (setting) {\n companyfiscalmonth = parseInt(setting)\n }\n \n scope.timeframe= options.timePeriod.timeframe;\n if (options.timePeriod.timeframe === \"number\") {\n scope.hasNumberTimeframe = true;\n if(options.timePeriod.period.days){\n scope.numberDays = options.timePeriod.period.days;\n }\n var period = timeService.getTimePeriod(scope.numberDays);\n scope.fromDate = moment(period.from).toDate();\n scope.toDate = moment(period.to).toDate();\n } else if (options.timePeriod.timeframe === \"custom\") {\n scope.hasCustomTimeframe = true;\n var period = options.timePeriod.period;\n scope.fromDate = moment(period.from).toDate();\n scope.toDate = moment(period.to).toDate();\n } else if (options.timePeriod.timeframe === \"customStartDate\") { // manual start date and current day as end date\n scope.hasCustomTimeframe = true;\n scope.toDayEndDate = true;\n var period = options.timePeriod.period;\n scope.fromDate = moment(period.from).toDate();\n scope.toDate = moment().toDate();\n } else if (options.timePeriod.timeframe === \"customEndDate\") { // current day as start date and manual day as end date\n scope.hasCustomTimeframe = true;\n scope.toDayStartDate = true;\n var period = options.timePeriod.period;\n scope.fromDate = moment().toDate();\n scope.toDate = moment(period.to).toDate();\n } else if (options.timePeriod.timeframe === \"fiscalyear\" || \n options.timePeriod.timeframe === \"thisfiscalvslastfiscalyear\" ||\n options.timePeriod.timeframe === \"last3fiscalyears\") { \n scope.hasFiscalyear = true;\n }\n if (options.timePeriod.useDefaultTimeframes || !options.timePeriod.timeframes || options.timePeriod.timeframes.length === 0) {\n scope.timeframes = defaultTimeframes;\n } else {\n scope.timeframes = options.timePeriod.timeframes;\n }\n \n scope.updateDisplayPeriod(scope.timeframe);\n })\n }\n });\n\n scope.displayTimeframe = function (timeframe) {\n return scope.timeframes && scope.timeframes.includes(timeframe);\n };\n\n \n scope.updateNumberDays = function (days) {\n scope.numberDays = days;\n scope.updateDisplayPeriod(\"number\");\n updateHandler()\n }\n\n \n scope.selectNumberPeriod = function () {\n scope.hasNumberTimeframe = true;\n scope.updateDisplayPeriod(\"number\");\n $event.preventDefault();\n }\n\n scope.selectCustomPeriod = function ($event) {\n scope.hasCustomTimeframe = true;\n scope.updateDisplayPeriod(\"custom\");\n $event.preventDefault();\n }\n\n scope.fromDateChanged = function ($event) {\n const date = $event.originalEvent.detail\n scope.fromDate = date\n updateHandler()\n }\n scope.toDateChanged = function ($event) {\n const date = $event.originalEvent.detail\n scope.toDate = date\n updateHandler()\n }\n\n var showOption = function (name) {\n if (scope.timeFrameMapping[name]) {\n scope.displayPeriod = scope.timeFrameMapping[name][0];\n updateHandler();\n }\n };\n\n scope.getTranslationKey = function (timeframe) {\n if (!timeframe) return null;\n return scope.timeFrameMapping[timeframe][0];\n };\n\n scope.updateDisplayPeriod = function (timeframe) {\n if (!timeframe) return;\n scope.hasCustomTimeframe = false;\n scope.hasNumberTimeframe = false;\n scope.hasFiscalyear = false;\n if (timeframe === \"custom\" || timeframe === \"customStartDate\" || timeframe === \"customEndDate\")\n scope.hasCustomTimeframe = true;\n scope.timeframe = timeframe;\n if(timeframe === \"number\"){\n scope.hasNumberTimeframe = true;\n scope.displayPeriod = $translate.instant('COMMON_LAST_X_DAYS', {days: scope.numberDays}); // \"Last \" + + \"days\";\n updateHandler();\n } else if (timeframe === \"last\") {\n scope.displayPeriod = $translate.instant(\"COMMON_LAST_VALUE\");\n updateHandler()\n } else if (timeframe === \"fiscalyear\" || timeframe === 'thisfiscalvslastfiscalyear'\n || timeframe === \"last3fiscalyears\") {\n scope.hasFiscalyear = true;\n scope.displayPeriod = $translate.instant(scope.timeFrameMapping[timeframe][0])\n showOption(timeframe)\n } else {\n scope.displayPeriod = $translate.instant(scope.timeFrameMapping[timeframe][0])\n showOption(timeframe)\n } \n }\n \n\n if (scope.timeframe) {\n scope.updateDisplayPeriod(scope.timeframe);\n }\n }\n }\n }]);\n","import { getCompanySetting } from \"@common/stores/companySettingsStore\"\n\nangular\n .module('DigiLean')\n .directive(\"dataseriesselectorSteps\", ['$rootScope', '$translate', '$filter', 'dataSourceService',\n function ($rootScope, $translate, $filter, dataSourceService) {\n return {\n templateUrl: 'dataseriesselectorSteps.html',\n restrict: 'E',\n scope: {\n 'serie': '='\n },\n link: function (scope, elem, attrs) {\n scope.steps = [];\n scope.currentStep = {};\n scope.dataSources = null;\n\n\n function loadDataSources(){\n dataSourceService().getList().then(function(list) {\n scope.dataSources = list;\n getCompanySetting(\"currency\").then(function (setting) {\n var currency = null;\n if (setting) {\n currency = setting\n }\n var internalDataSources = dataSourceService().getModuleList(currency);\n scope.dataSources = scope.dataSources.concat(internalDataSources);\n scope.dataSources = scope.dataSources.sort((a,b) => {\n if (a.title > b.title) return 1;\n if (a.title < b.title) return -1;\n return 0;\n });\n });\n \n });\n }\n loadDataSources();\n\n\n scope.$watch('serie', function () {\n reset();\n if (scope.serie && scope.serie.datasource) {\n setFormula(scope.serie);\n setGraphWidth(scope.serie);\n if(!scope.dataSources) loadDataSources();\n var validDataSource = $filter('filter')(scope.dataSources, { id: scope.serie.datasource.id });\n if (validDataSource.length > 0) {\n scope.serie.datasource = validDataSource[0];\n }\n }\n });\n\n function setFormula(serie) {\n serie.formula = \"sum\";\n if(serie.average){\n serie.formula = \"average\";\n } else if(serie.accumulated){\n serie.formula = \"accumulated\";\n }\n }\n\n function setGraphWidth(serie) {\n if(serie.width > 0){\n serie.widthType = \"input\";\n } else {\n serie.widthType = \"manual\";\n }\n }\n\n \n\n function reset() {\n angular.forEach(scope.dataSources, function (dataSource) {\n angular.forEach(dataSource.elements, function (element) {\n element.filter = null;\n });\n });\n scope.currentStep = scope.steps[0];\n }\n\n $translate(['DASHBOARD_DATA_SOURCE', 'COMMON_FILTER', 'COMMON_LAYOUT', 'COMMON_PREVIEW']).then(function (translations) {\n scope.steps.push({ id: 'DASHBOARD_DATA_SOURCE', title: translations.DASHBOARD_DATA_SOURCE });\n scope.steps.push({ id: 'COMMON_FILTER', title: translations.COMMON_FILTER });\n scope.steps.push({ id: 'COMMON_LAYOUT', title: translations.COMMON_LAYOUT });\n //scope.steps.push({ id: 'COMMON_PREVIEW', title: translations.COMMON_PREVIEW }); TO BE IMPLEMENTED\n scope.currentStep = scope.steps[0];\n });\n $rootScope.$on('$translateChangeSuccess', function () {\n scope.steps[0].title = $translate.instant('DASHBOARD_DATA_SOURCE');\n scope.steps[1].title = $translate.instant('COMMON_FILTER');\n scope.steps[2].title = $translate.instant('COMMON_LAYOUT');\n //scope.steps[3].title = $translate.instant('COMMON_PREVIEW'); TO BE IMPLEMENTED\n });\n scope.selectStep = function (step) {\n scope.currentStep = step;\n }\n scope.nextStep = function () {\n var currentIndex = scope.steps.indexOf(scope.currentStep);\n if ((currentIndex + 1) < scope.steps.length) {\n scope.selectStep(scope.steps[currentIndex + 1]);\n }\n }\n scope.previousStep = function () {\n var currentIndex = scope.steps.indexOf(scope.currentStep);\n if (currentIndex > 0) {\n scope.selectStep(scope.steps[currentIndex - 1]);\n }\n }\n\n scope.setSerie = function (datasource) {\n scope.serie.name = datasource.title;\n scope.serie.formula = \"sum\"; //default configuration\n }\n\n scope.changeGraphWidth= function(){ \n scope.serie.width = 0;\n }\n\n scope.changeFormula= function(serie){ \n if(serie.formula == 'average'){\n scope.serie.average = true;\n scope.serie.accumulated = false;\n } else if(serie.formula == 'accumulated'){\n scope.serie.average = false;\n scope.serie.accumulated = true;\n } else {\n scope.serie.average = false;\n scope.serie.accumulated = false;\n }\n }\n\n scope.filterChangedHandler = function (filters) {\n };\n }\n }\n }]);","import { getCompanySetting } from \"@common/stores/companySettingsStore\"\n\nvar DigiLean = angular.module('DigiLean');\nDigiLean.controller('dataSourceSingleSelector', ['$scope', '$rootScope', '$filter', '$uibModalInstance', '$translate', 'dataSourceService', 'hasDataSerie', 'dataSource', 'filters', 'withTarget', 'type', 'externalOnly', 'deviationService', \n function ($scope, $rootScope, $filter, $uibModalInstance, $translate, dataSourceService, hasDataSerie, dataSource, filters, withTarget, type, externalOnly, deviationService) { \n $scope.selectedFilters = filters;\n $scope.steps = [];\n $scope.hasDataSerie = hasDataSerie;\n\n $scope.data = {\n query: null\n };\n $scope.targetNeeded = false;\n\n $scope.datasourcefilters = null;\n $scope.dataSources = {\n list: [],\n filteredList: []\n };\n\n $rootScope.$on('$translateChangeSuccess', function () {\n $scope.steps[0].title = $translate.instant('DASHBOARD_DATA_SOURCE');\n $scope.steps[1].title = $translate.instant('COMMON_FILTER');\n $scope.currentStep = $scope.steps[0];\n });\n\n function init() {\n dataSourceService().getList().then(function (list) {\n $scope.dataSources = list;\n\n getCompanySetting(\"currency\").then(function (setting) {\n var currency = null;\n if (setting) {\n currency = setting\n }\n var internalDataSources = [];\n if (externalOnly == false) \n {\n internalDataSources = dataSourceService().getModuleList(currency);\n }\n else if (externalOnly === \"limitedInternal\") \n {\n internalDataSources = dataSourceService().getLimitedModuleList(currency);\n }\n\n var allDataSources = $scope.dataSources.concat(internalDataSources);\n $scope.dataSources = filterDataSourceByType(allDataSources);\n $scope.resultList = $scope.dataSources.sort((a, b) => {\n if (a.title > b.title) return 1;\n if (a.title < b.title) return -1;\n return 0;\n });\n // map selectedDataSource to updated source\n if (dataSource) {\n var id = dataSource.id;\n if (!isNaN(dataSource.id) && parseInt(dataSource.id) != \"NaN\") {\n id = parseInt(dataSource.id);\n }\n var updatedSource = $filter('filter')($scope.dataSources, { id: id }, true);\n if (updatedSource.length > 0) {\n if(dataSource.elements && dataSource.elements.length > 0) {\n updatedSource[0].elements = dataSource.elements;\n }\n $scope.selectedDataSource = updatedSource[0];\n } else {\n $scope.selectedDataSource = dataSource;\n }\n // If internal, we need to sync targets from settings\n if (!$scope.selectedDataSource.targets && dataSource.targets) {\n $scope.selectedDataSource.targets = dataSource.targets;\n $scope.selectedDataSource.unitOfTime = dataSource.unitOfTime;\n } else if (!$scope.selectedDataSource.targetDataSource && dataSource.targetDataSource) { // if target from another datasource, we need to sync it\n $scope.selectedDataSource.targetDataSource = dataSource.targetDataSource;\n $scope.selectedDataSource.targetFilters = dataSource.targetFilters;\n $scope.selectedDataSource.targetGreenOperator = dataSource.targetGreenOperator;\n $scope.selectedDataSource.unitOfTime = dataSource.unitOfTime;\n }\n\n }\n $scope.dataSources.list = $scope.dataSources;\n $scope.dataSources.filteredList = $scope.dataSources;\n });\n });\n\n $translate(['DASHBOARD_DATA_SOURCE', 'COMMON_FILTER']).then(function (translations) {\n $scope.steps.push({ id: 'DASHBOARD_DATA_SOURCE', title: translations.DASHBOARD_DATA_SOURCE });\n $scope.steps.push({ id: 'COMMON_FILTER', title: translations.COMMON_FILTER });\n $scope.currentStep = $scope.steps[0];\n if (withTarget) {\n addTarget();\n if (hasDataSerie) {\n $scope.registrationSettings = {\n dataSource: dataSource\n }\n }\n }\n });\n }\n init();\n\n function filterDataSourceByType(allDataSources) {\n var filtered = [];\n if (type) {\n if (type === \"PROJECT\") {\n for (var i = 0; i < allDataSources.length; i++) {\n for (var e = 0; e < allDataSources[i].elements.length; e++) {\n var dimention = allDataSources[i].elements[e];\n if (dimention.sourceColumn === \"projectId\") {\n filtered.push(allDataSources[i]);\n break;\n }\n }\n }\n return filtered;\n } \n if (type === \"DAY\") {\n for (var y = 0; y < allDataSources.length; y++) {\n if(allDataSources[y].unitOfTime === 'DAY') {\n filtered.push(allDataSources[y]); \n }\n else if(allDataSources[y].id === 'DeviationCompleted' || allDataSources[y].id === 'DeviationNew' \n || allDataSources[y].id === 'ImprovementSuggestionNew' || allDataSources[y].id === 'ImprovementSuggestionCompleted') {\n filtered.push(allDataSources[y]);\n }\n }\n return filtered;\n }\n }\n return allDataSources;\n }\n\n $scope.$watch('data.query', function (q, old) {\n if (q !== null)\n $scope.searchQuery = angular.copy(q);\n });\n\n function addTarget() {\n $scope.steps.push({ id: 'ADMIN_DATA_DATASOURCE_TARGETS', title: $translate.instant('ADMIN_DATA_DATASOURCE_TARGETS') });\n }\n\n $scope.selectStep = function (step) {\n $scope.currentStep = step;\n };\n $scope.nextStep = function () {\n var currentIndex = $scope.steps.indexOf($scope.currentStep);\n if ((currentIndex + 1) < $scope.steps.length) {\n $scope.selectStep($scope.steps[currentIndex + 1]);\n }\n };\n $scope.previousStep = function () {\n var currentIndex = $scope.steps.indexOf($scope.currentStep);\n if (currentIndex > 0) {\n $scope.selectStep($scope.steps[currentIndex - 1]);\n }\n };\n $scope.selectGroupedBy = function (element) {\n $scope.selectedGroupedBy = element.sourceColumn;\n };\n\n $scope.selectDataSource = function (dataSource) {\n $scope.targetNeeded = false;\n $scope.hasDataSerie = true;\n $scope.selectedFilters = [];\n $scope.currentStep = $scope.steps[1];\n \n if (dataSource.id === 'DeviationConsequence' ||\n dataSource.id === 'DeviationNew' ||\n dataSource.id === 'DeviationCompleted') {\n \n if (dataSource.elements.some(element => element.customFieldId != null)) {\n // Custom fields already exist, do nothing\n } else {\n deviationService().getAllCustomFields().then(function (list) {\n list.forEach(customField => {\n dataSource.elements.push({\n label: customField.label,\n type: customField.type,\n customFieldId: customField.id,\n sourceColumn: \"customField-\" + customField.id,\n dataListId: customField.dataListId\n });\n });\n $scope.selectedDataSource = dataSource;\n $scope.registrationSettings = {\n dataSource: dataSource\n };\n });\n }\n } else {\n $scope.selectedDataSource = dataSource;\n $scope.registrationSettings = {\n dataSource: dataSource\n };\n }\n };\n\n function arrayUniqueElements(array) {\n var a = array.concat();\n for (var i = 0; i < a.length; ++i) {\n for (var j = i + 1; j < a.length; ++j) {\n if (a[i].label.toUpperCase() === a[j].label.toUpperCase() && a[i].type.toUpperCase() === a[j].type.toUpperCase())\n a.splice(j--, 1);\n }\n }\n\n return a;\n }\n\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n\n $scope.ok = function () {\n if (withTarget) {\n if(!$scope.selectedDataSource.unitOfTime) {\n $scope.missingUnitOfTime = true; \n return;\n }\n if ($scope.selectedDataSource && !$scope.selectedDataSource.targetDataSource && ($scope.selectedDataSource.targets && $scope.selectedDataSource.targets.length == 0)) {\n $scope.targetNeeded = true;\n return;\n }\n \n }\n var result = {\n dataSource: $scope.selectedDataSource,\n filters: $scope.selectedFilters\n };\n $uibModalInstance.close(result);\n };\n\n $scope.filterChangedHandler = function (filters) {\n };\n\n }]);","import { getCompanySetting } from \"@common/stores/companySettingsStore\"\n\nvar DigiLean = angular.module('DigiLean');\nDigiLean.controller('dataSourceGroupSelector', ['$scope', '$rootScope', '$filter', '$uibModalInstance', '$translate', 'dataSourceService', 'hasDataSerie', 'dataSource', 'groupedBy', 'groupingIntervall','filters', 'deviationService',\n function ($scope, $rootScope, $filter, $uibModalInstance, $translate, dataSourceService, hasDataSerie, dataSource, groupedBy, groupingIntervall,filters, deviationService) {\n $scope.selectedDataSource = dataSource;\n $scope.selectedGroupedBy = groupedBy;\n if(groupingIntervall){\n $scope.selectedGroupingIntervall = groupingIntervall.toUpperCase();\n }/* else {\n $scope.selectedGroupingIntervall = 'month';\n }*/\n $scope.selectedFilters = filters;\n $scope.steps = [];\n $scope.hasDataSerie = hasDataSerie;\n\n $scope.data = {\n query: null\n };\n\n $scope.datasourcefilters = null;\n $scope.dataSources = {\n list: [],\n filteredList: []\n };\n\n function init() {\n dataSourceService().getList().then(function (list) {\n $scope.dataSources = list;\n \n getCompanySetting(\"currency\").then(function (setting) {\n var currency = null;\n if (setting) {\n currency = setting\n }\n var internalDataSources = dataSourceService().getModuleList(currency);\n var allDataSources = $scope.dataSources.concat(internalDataSources);\n $scope.dataSources = removeNonGroupable(allDataSources);\n $scope.resultList = $scope.dataSources.sort((a, b) => {\n if (a.title > b.title) return 1;\n if (a.title < b.title) return -1;\n return 0;\n });\n\n // map selectedDataSource to updated source\n if (dataSource) {\n var id = dataSource.id;\n if (!isNaN(dataSource.id) && parseInt(dataSource.id) != \"NaN\") {\n id = parseInt(dataSource.id);\n }\n var updatedSource = $filter('filter')($scope.dataSources, { id: id }, true);\n if (updatedSource.length > 0) {\n $scope.selectedDataSource = updatedSource[0];\n } else {\n $scope.selectedDataSource = dataSource;\n }\n // If internal, we need to sync targets from settings\n if (!$scope.selectedDataSource.targets && dataSource.targets) {\n $scope.selectedDataSource.targets = dataSource.targets;\n }\n }\n $scope.dataSources.list = $scope.dataSources;\n $scope.dataSources.filteredList = $scope.dataSources;\n });\n });\n }\n init();\n\n $scope.$watch('data.query', function (q, old) {\n if (q !== null)\n $scope.searchQuery = angular.copy(q);\n });\n\n\n function removeNonGroupable(datasources) {\n var groupable = [];\n for (var i = 0; i < datasources.length; i++) {\n if (datasources[i].elements && datasources[i].elements.length > 0) {\n groupable.push(datasources[i]);\n }\n }\n return groupable;\n }\n\n $translate(['DASHBOARD_DATA_SOURCE', 'COMMON_FILTER', 'DASHBOARD_DATA_GROUPING']).then(function (translations) {\n $scope.steps.push({ id: 'DASHBOARD_DATA_SOURCE', title: translations.DASHBOARD_DATA_SOURCE });\n $scope.steps.push({ id: 'DASHBOARD_DATA_GROUPING', title: translations.DASHBOARD_DATA_GROUPING });\n $scope.steps.push({ id: 'COMMON_FILTER', title: translations.COMMON_FILTER });\n $scope.currentStep = $scope.steps[0];\n });\n $rootScope.$on('$translateChangeSuccess', function () {\n $scope.steps[0].title = $translate.instant('DASHBOARD_DATA_SOURCE');\n $scope.steps[1].title = $translate.instant('DASHBOARD_DATA_GROUPING');\n $scope.steps[2].title = $translate.instant('COMMON_FILTER');\n $scope.currentStep = $scope.steps[0];\n });\n\n $scope.selectStep = function (step) {\n $scope.currentStep = step;\n }\n $scope.nextStep = function () {\n var currentIndex = $scope.steps.indexOf($scope.currentStep);\n if ((currentIndex + 1) < $scope.steps.length) {\n $scope.selectStep($scope.steps[currentIndex + 1]);\n }\n }\n $scope.previousStep = function () {\n var currentIndex = $scope.steps.indexOf($scope.currentStep);\n if (currentIndex > 0) {\n $scope.selectStep($scope.steps[currentIndex - 1]);\n }\n }\n $scope.selectGroupedBy = function (element) {\n $scope.selectedGroupedBy = element.sourceColumn;\n };\n $scope.selectGroupingIntervall = function (timeintervall) {\n $scope.selectedGroupingIntervall = timeintervall;\n };\n \n\n $scope.selectDataSource = function (dataSource) {\n $scope.selectedDataSource = dataSource;\n $scope.selectedGroupedBy = \"\";\n if($scope.selectedDataSource && $scope.selectedDataSource.elements && $scope.selectedDataSource.elements.length >0){\n $scope.selectedGroupedBy = $scope.selectedDataSource.elements[0].sourceColumn;\n }\n $scope.selectedFilters = [];\n $scope.currentStep = $scope.steps[1];\n // Since the grouping interval already is set then we want to update this to new datasource\n if ($scope.selectedGroupingIntervall && $scope.selectedDataSource.unitOfTime != null) {\n $scope.selectedGroupingIntervall = $scope.selectedDataSource.unitOfTime;\n }\n };\n\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n\n $scope.ok = function () {\n if ($scope.selectedDataSource.id == 'DeviationConsequence' ||\n $scope.selectedDataSource.id == 'DeviationNew' ||\n $scope.selectedDataSource.id == 'DeviationCompleted') {\n deviationService().getAllCustomFields().then(function (list) {\n $scope.selectedDataSource.elements = $scope.selectedDataSource.elements.concat(list);\n $scope.selectedDataSource.elements = arrayUniqueElements($scope.selectedDataSource.elements);\n var result = {\n dataSource: $scope.selectedDataSource,\n groupedBy: $scope.selectedGroupedBy,\n groupingIntervall: $scope.selectedGroupingIntervall,\n filters: $scope.selectedFilters\n };\n $uibModalInstance.close(result);\n });\n } else {\n var result = {\n dataSource: $scope.selectedDataSource,\n groupedBy: $scope.selectedGroupedBy,\n groupingIntervall: $scope.selectedGroupingIntervall,\n filters: $scope.selectedFilters\n };\n $uibModalInstance.close(result);\n }\n\n };\n\n\n\n\n\n function arrayUniqueElements(array) {\n var a = array.concat();\n for (var i = 0; i < a.length; ++i) {\n for (var j = i + 1; j < a.length; ++j) {\n if (a[i].label.toUpperCase() === a[j].label.toUpperCase() && a[i].type.toUpperCase() === a[j].type.toUpperCase())\n a.splice(j--, 1);\n }\n }\n\n return a;\n }\n\n $scope.filterChangedHandler = function (filters) {\n };\n }]);","import { getCompanySetting } from \"@common/stores/companySettingsStore\"\n\nvar DigiLean = angular.module('DigiLean');\nDigiLean.controller('dataSourceStackedGroupSelector', ['$scope', '$rootScope', '$filter', '$uibModalInstance', '$translate', 'dataSourceService', 'hasDataSerie', 'dataSource', 'groupedBy', 'stackedColumn', 'filters', \n function ($scope, $rootScope, $filter, $uibModalInstance, $translate, dataSourceService, hasDataSerie, dataSource, groupedBy, stackedColumn, filters) {\n $scope.selectedDataSource = dataSource;\n $scope.selectedGroupedBy = groupedBy;\n $scope.selectedStackedColumn = stackedColumn;\n\n $scope.selectedFilters = filters;\n $scope.steps = [];\n $scope.hasDataSerie = hasDataSerie;\n\n\n $scope.includeValue = false;\n checkDataSource(dataSource);\n $scope.valueElement = {\n sourceColumn: 'value',\n id: 0\n };\n\n $scope.data = {\n query: null\n };\n\n $scope.datasourcefilters = null;\n $scope.dataSources = {\n list: [],\n filteredList: []\n };\n\n function checkDataSource(source) {\n if (source && source.objectSource != \"internal\") {\n $scope.includeValue = true;\n } else {\n $scope.includeValue = false;\n }\n }\n\n function init() {\n dataSourceService().getList().then(function (list) {\n $scope.dataSources = list;\n getCompanySetting(\"currency\").then(function (setting) {\n var currency = null;\n if (setting) {\n currency = setting\n }\n var internalDataSources = dataSourceService().getModuleList(currency);\n var allDataSources = $scope.dataSources.concat(internalDataSources);\n $scope.dataSources = removeNonGroupable(allDataSources);\n $scope.resultList = $scope.dataSources.sort((a, b) => {\n if (a.title > b.title) return 1;\n if (a.title < b.title) return -1;\n return 0;\n });\n // map selectedDataSource to updated source\n if (dataSource) {\n var id = dataSource.id;\n if (!isNaN(dataSource.id) && parseInt(dataSource.id) != \"NaN\") {\n id = parseInt(dataSource.id);\n }\n var updatedSource = $filter('filter')($scope.dataSources, { id: id }, true);\n if (updatedSource.length > 0) {\n $scope.selectedDataSource = updatedSource[0];\n } else {\n $scope.selectedDataSource = dataSource;\n }\n // If internal, we need to sync targets from settings\n if (!$scope.selectedDataSource.targets && dataSource.targets) {\n $scope.selectedDataSource.targets = dataSource.targets;\n }\n }\n $scope.dataSources.list = $scope.dataSources;\n $scope.dataSources.filteredList = $scope.dataSources;\n });\n\n });\n }\n init();\n\n $scope.$watch('data.query', function (q, old) {\n if (q !== null)\n $scope.searchQuery = angular.copy(q);\n });\n\n\n function removeNonGroupable(datasources) {\n var groupable = [];\n for (var i = 0; i < datasources.length; i++) {\n if (datasources[i].elements && datasources[i].elements.length > 0) {\n groupable.push(datasources[i]);\n }\n }\n return groupable;\n }\n\n $translate(['DASHBOARD_DATA_SOURCE', 'COMMON_FILTER', 'DASHBOARD_DATA_GROUPING']).then(function (translations) {\n $scope.steps.push({ id: 'DASHBOARD_DATA_SOURCE', title: translations.DASHBOARD_DATA_SOURCE });\n $scope.steps.push({ id: 'DASHBOARD_DATA_GROUPING', title: translations.DASHBOARD_DATA_GROUPING });\n $scope.steps.push({ id: 'COMMON_FILTER', title: translations.COMMON_FILTER });\n $scope.currentStep = $scope.steps[0];\n });\n $rootScope.$on('$translateChangeSuccess', function () {\n $scope.steps[0].title = $translate.instant('DASHBOARD_DATA_SOURCE');\n $scope.steps[1].title = $translate.instant('DASHBOARD_DATA_GROUPING');\n $scope.steps[2].title = $translate.instant('COMMON_FILTER');\n $scope.currentStep = $scope.steps[0];\n });\n\n $scope.selectStep = function (step) {\n $scope.currentStep = step;\n }\n $scope.nextStep = function () {\n var currentIndex = $scope.steps.indexOf($scope.currentStep);\n if ((currentIndex + 1) < $scope.steps.length) {\n $scope.selectStep($scope.steps[currentIndex + 1]);\n }\n }\n $scope.previousStep = function () {\n var currentIndex = $scope.steps.indexOf($scope.currentStep);\n if (currentIndex > 0) {\n $scope.selectStep($scope.steps[currentIndex - 1]);\n }\n }\n $scope.selectGroupedBy = function (element) {\n $scope.selectedGroupedBy = element.sourceColumn;\n };\n $scope.selectStackedColumn = function (element) {\n $scope.selectedStackedColumn = element.sourceColumn;\n };\n $scope.selectDataSource = function (dataSource) {\n $scope.selectedDataSource = dataSource;\n checkDataSource(dataSource);\n $scope.selectedGroupedBy = \"\";\n $scope.selectedStackedColumn = \"\";\n $scope.selectedFilters = [];\n $scope.currentStep = $scope.steps[1];\n };\n\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n\n $scope.ok = function () {\n var result = {\n dataSource: $scope.selectedDataSource,\n groupedBy: $scope.selectedGroupedBy,\n stackedColumn: $scope.selectedStackedColumn,\n filters: $scope.selectedFilters\n };\n $uibModalInstance.close(result);\n };\n\n $scope.filterChangedHandler = function (filters) {\n };\n }]);","\nimport { BehaviorSubject } from \"rxjs\"\nimport { ToastMaster } from \"./toastMaster\"\nimport { translateLabelInstant } from \"@common/services/language/DigiLeanLang\"\n\nexport type ToastType = \"info\" | \"success\" | \"error\" | \"warning\" \nexport type ToastSize = \"normal\" | \"big\"\n\nexport function getTimestampId() {\n const random = Math.floor(Math.random() * 1000)\n return `T${Date.now()}${random}`\n}\n\nexport class Toast {\n /**\n * @constructor\n * @param type Toast type\n * @param content Content, can be HTML\n * @param {number} [seconds=10] Time in seconds when the toast will destroy. 0 will disable auto destroy\n */\n constructor(type: ToastType, content: string, seconds: number = 10) {\n this.id = getTimestampId() // random id to keep track\n this.type = type\n this.content = content\n this.setDestroyTime(seconds)\n }\n id: string\n type: ToastType\n\n private _content = \"\"\n /**\n * Change content after toast is created\n */\n set content(c: string) {\n this._content = c\n this.changedCallback ? this.changedCallback() : null\n }\n get content() {\n return this._content\n }\n\n customIcon = \"\"\n\n private destroyTimer = 0\n private destroyTimeSeconds = 10\n /**\n * Set new destroy time, 0 will disable auto destroy\n * @param seconds \n */\n setDestroyTime(seconds: number) {\n if (this.destroyTimer)\n window.clearTimeout(this.destroyTimer)\n\n if (seconds) {\n this.destroyTimeSeconds = seconds\n this.destroyTimer = window.setTimeout(() => {\n this.destroyCallback ? this.destroyCallback() : null\n }, this.destroyTimeSeconds * 1000);\n }\n }\n /**\n * Destroy the toast now\n */\n async destroyNow() {\n if (this.destroyCallback)\n return this.destroyCallback()\n }\n destroyCallback?: () => Promise\n\n size: ToastSize = \"normal\"\n \n changedCallback?: Function\n}\n\nexport class ToastService {\n /**\n * Create a new Toast type Info\n * @example\n * toaster.info(\"ADMIN_MESSAGE_ASSET_DELETED\") // will translate\n * toaster.info(\"header in bold
      more text\", 5) // bold header\n * @param msg labelkey, plain text or HTML.\n * @param seconds time before toast destroys in seconds. Default is 10\n */\n info(msg: string, seconds: number = 10) {\n return this.addToast(\"info\", msg, seconds)\n }\n /**\n * Create a new Toast type Error\n * @example\n * toaster.error(\"Error occured
      missing field\", 15)\n * @param msg labelkey,plain text or HTML.\n * @param seconds time before toast destroys in seconds. Default is 20\n */\n error(msg: string, seconds: number = 20) {\n return this.addToast(\"error\", msg, seconds)\n }\n /**\n * Create a new Toast type Success\n * @example\n * toaster.success(\"COMMON_USER_SAVED\") // will translate\n * toaster.success(\"Success
      Created task\")\n * toaster.success(\"PDF created\")\n * @param msg labelkey, plain text or HTML.\n * @param seconds time before toast destroys in seconds. Default is 10\n */\n success(msg: string, seconds: number = 10) {\n return this.addToast(\"success\", msg, seconds)\n }\n /**\n * Create a new Toast type Warning\n * @example\n * const toast = toaster.warning(\"This is a warning\")\n * @param msg labelkey, plain text or HTML.\n * @param seconds time before toast destroys in seconds. Default is 10. 0 means no self destroy\n */\n warning(msg: string, seconds: number = 10) {\n return this.addToast(\"warning\", msg, seconds)\n }\n /**\n * Create a new Toast type Loading with a loading animated icon\n * @example\n * const toast = toaster.loading(\"PDF is creating\")\n * toast.destroyNow()\n * @param msg labelkey, plain text or HTML.\n * @param seconds time before toast destroys in seconds. Default 0 (No self destroy)\n */\n loading(msg: string) {\n const toast = this.addToast(\"info\", msg, 100)\n toast.customIcon = \"\"\n return toast\n }\n /**\n * Create a new Toast \n * @example\n * const toast = toaster.addToast(\"error\", \"This is a toast\", 10)\n * @param msg labelkey, plain text or HTML.\n * @param seconds time before toast destroys in seconds.\n */\n addToast(type: ToastType, content: string, seconds: number) {\n const translated = translateLabelInstant(content)\n const toast = new Toast(type, translated, seconds)\n toastStore.add(toast)\n return toast\n }\n /**\n * Removes the toast from the internal list.\n * To remove toast properly use @see {@link Toast.destroyNow}\n * @param id the autogenerated id of a toast\n */\n removeToast(id: string) {\n toastStore.remove(id)\n }\n}\n\nclass ToastListStore extends BehaviorSubject {\n\n /**\n *\n */\n constructor(value:any) {\n super(value)\n this.toastMaster = document.createElement(\"toast-master\") as ToastMaster\n document.body.appendChild(this.toastMaster)\n this.toastMaster.setAttribute(\"popover\", \"manual\")\n }\n\n toastMaster: ToastMaster\n\n showToastMaster() {\n const isShowing = this.toastMaster.matches(\":popover-open\")\n if (!isShowing)\n this.toastMaster.showPopover()\n }\n hideToastMaster() {\n const isShowing = this.toastMaster.matches(\":popover-open\")\n if (isShowing)\n this.toastMaster.hidePopover()\n }\n add(toast:Toast) {\n const list = this.getValue()\n list.push(toast)\n this.next(list)\n this.showToastMaster()\n }\n\n remove(id: string) {\n const list = this.getValue()\n const index = list.findIndex(t => t.id == id)\n if (index > -1) {\n list.splice(index, 1)\n this.next(list)\n }\n if (list.length === 0)\n this.hideToastMaster()\n }\n\n reset(){\n this.next([])\n }\n}\n\nexport const toastStore = new ToastListStore([])\n","import { ToastService, toastStore } from \"./toastService\"\n\nexport const toasts = toastStore.asObservable()\nexport { Toast } from \"./toastService\"\nexport default new ToastService()\n","import toaster from \"@common/components/toast\"\n\nangular\n .module('DigiLean')\n .directive(\"datasourceTarget\", ['dataSourceService', '$uibModal','$translate',\n function (dataSourceService, $uibModal, $translate) {\n return {\n templateUrl: 'datasourceTarget.html',\n restrict: 'E',\n scope: {\n 'datasource': '=',\n 'settingsChangeHandler': '&',\n 'isAdminMode': '='\n },\n link: function (scope, elem, attrs) {\n\n scope.operators = [\n { dbCode: \">=\", html: \">=\" },\n { dbCode: \">\", html: \">\" },\n { dbCode: \"<=\", html: \"<=\" },\n { dbCode: \"<\", html: \"<\" },\n ];\n\n scope.redoperators = [\n { dbCode: \">=\", html: \">=\" },\n { dbCode: \">\", html: \">\" },\n { dbCode: \"<=\", html: \"<=\" },\n { dbCode: \"<\", html: \"<\" },\n ];\n\n scope.showRegistration = false;\n scope.selectedGreenOperator = null;\n scope.selectedRedOperator = null;\n\n scope.greenvalue = null;\n scope.redvalue = null;\n scope.yellowDescription = \"\";\n\n scope.notValidExpression = false;\n scope.notValidDate = false;\n\n scope.targets = [];\n \n scope.selectedDate = moment().startOf('day').toDate();\n scope.value = null;\n scope.selectedItemForUpdate = null;\n scope.isProcessing = false;\n\n function resetTargets(){\n scope.targets = [];\n scope.datasource.targets = null;\n scope.datasource.targetDataSource = null;\n scope.datasource.targetFilters = null;\n scope.datasource.targetGreenOperator = null;\n }\n\n scope.$watch('datasource', function (datasource) {\n if (datasource) {\n scope.setDataSource(datasource);\n setTargetSettings(datasource);\n }\n });\n\n function setTargetSettings(dataSource) {\n scope.targetsource = \"targetdatasource\"; //default value\n if (dataSource.targets && dataSource.targets.length > 0) { //manual targets are defined\n scope.targetsource = \"manual\";\n setInternalTargets(dataSource);\n } else if (dataSource.targetDataSource){ //another datasource as target is defined\n scope.targetsource = \"targetdatasource\";\n if(dataSource.targetGreenOperator){\n scope.greenOperator = scope.operators.find(o => o.dbCode == dataSource.targetGreenOperator)\n }\n } else {\n if(dataSource.objectSource =='internal'){ //internal datasource must have manual targets\n scope.targetsource = \"manual\";\n } else {\n scope.targetsource = \"datasource\"; //if no targets are defined use the targets defined for this datasource\n getTargets(dataSource.id);\n }\n }\n \n }\n\n scope.selectDataSource = function () {\n var hasDataSerie = false;\n if (scope.dataSource.targetDataSource) {\n hasDataSerie = true;\n }\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'dataSourceSingleSelector.html',\n controller: 'dataSourceSingleSelector',\n windowClass: 'newdeviation-modal-window',\n resolve: {\n hasDataSerie: function () {\n return hasDataSerie;\n },\n dataSource: function () {\n return scope.dataSource.targetDataSource;\n },\n filters: function () {\n return scope.dataSource.targetFilters;\n },\n withTarget: function () {\n return false;\n },\n type: function () {\n return null;\n },\n externalOnly: function () {\n return true;\n }\n }\n });\n \n modalInstance.result.then(function (result) {\n scope.dataSource.targetDataSource = result.dataSource;\n scope.dataSource.targetFilters = result.filters;\n });\n };\n\n scope.setCurrentDatasourceTarget = function() {\n scope.targetsource = \"datasource\";\n resetTargets();\n getTargets(scope.dataSource.id);\n }\n\n scope.setManual = function() {\n scope.targetsource = \"manual\";\n scope.targets = [];\n scope.notValidExpression = false;\n scope.notValidDate = false;\n }\n\n scope.setOtherDatasourceAsTarget = function() {\n scope.targetsource = \"targetdatasource\";\n if(scope.dataSource.targetDataSource == null || scope.dataSource.targetDataSource == undefined){\n resetTargets(); \n scope.greenOperatorChanged(scope.operators[0]);\n scope.selectDataSource();\n } \n }\n\n scope.greenOperatorChanged = function (operator){\n scope.greenOperator = operator;\n scope.dataSource.targetGreenOperator = operator.dbCode;\n };\n\n function setInternalTargets(dataSource){\n processTargets(dataSource.targets);\n }\n scope.registration = function () {\n if(scope.dataSource.unitOfTime == null || scope.dataSource.unitOfTime == undefined) return;\n scope.showRegistration = true;\n }\n\n scope.setDataSource = function (dataSource) { \n scope.dataSource = dataSource;\n var componentSettings = {\n dataSource: dataSource\n };\n scope.settingsChangeHandler({ settings: componentSettings });\n // Add value property for element\n angular.forEach(scope.dataSource.elements, function (element) {\n element.value = null;\n });\n }\n\n function getTargets(dataSourceId) {\n dataSourceService().getTargets(dataSourceId).then(function (targets) {\n processTargets(targets);\n });\n }\n\n function processTargets(targets){\n if(targets){\n angular.forEach(targets, function (registration) {\n if (registration.greenOperator && registration.greenValue) {\n registration.yellowDescription = getYellowOperator(registration.greenOperator) + \" \" + registration.greenValue;\n if (registration.redOperator && registration.redvalue) {\n registration.yellowDescription += \" and \";\n }\n }\n if (registration.redOperator && registration.redValue) {\n registration.yellowDescription += getYellowOperator(registration.redOperator) + \" \" + registration.redValue;\n }\n var validFromDate = moment(registration.validFrom);\n if (validFromDate.isSame(scope.selectedDate)) {\n scope.notValidDate = true;\n }\n });\n scope.targets = targets;\n }\n }\n\n scope.toDate = moment().toDate();\n\n scope.selectedDateChangedEvent = function ($event) {\n if ($event && $event.originalEvent) {\n const date = $event.originalEvent.detail\n selectedDateChanged(date)\n } \n }\n\n const selectedDateChanged = function (date) {\n scope.selectedDate = date\n scope.notValidDate = false\n angular.forEach(scope.targets, function (target) {\n var validFromDate = moment(target.validFrom)\n if (validFromDate.isSame(scope.selectedDate)) {\n scope.notValidDate = true\n }\n })\n }\n\n scope.greenChanged = function (selectedGreenOperator) {\n scope.selectedGreenOperator = selectedGreenOperator;\n if (scope.selectedGreenOperator) {\n setAvailableRedOperator(scope.selectedGreenOperator.dbCode);\n }\n setYellowText();\n validateExpression();\n }\n\n scope.greenValueChanged = function (value) {\n scope.greenvalue = value;\n setYellowText();\n validateExpression();\n }\n\n function validateExpression() {\n if (scope.selectedGreenOperator && scope.greenvalue &&\n scope.selectedRedOperator && scope.redvalue) {\n scope.greenvalue = scope.greenvalue.toString().replace(',', '.');\n scope.redvalue = scope.redvalue.toString().replace(',', '.');\n if (scope.selectedGreenOperator.dbCode === \">=\" || scope.selectedGreenOperator.dbCode === \">\") {\n if (Number(scope.greenvalue) < Number(scope.redvalue)) {\n scope.notValidExpression = true;\n return;\n }\n } else {\n if (Number(scope.greenvalue) > Number(scope.redvalue)) {\n scope.notValidExpression = true;\n return;\n }\n }\n }\n scope.notValidExpression = false;\n }\n\n function setYellowText() {\n if (scope.selectedGreenOperator && scope.selectedGreenOperator.dbCode && scope.greenvalue) {\n scope.yellowDescription = getYellowOperator(scope.selectedGreenOperator.dbCode) + \" \" + scope.greenvalue;\n if (scope.selectedRedOperator && scope.redvalue) {\n scope.yellowDescription += \" and \";\n }\n }\n if (scope.selectedRedOperator && scope.selectedRedOperator.dbCode && scope.redvalue) {\n scope.yellowDescription += getYellowOperator(scope.selectedRedOperator.dbCode) + \" \" + scope.redvalue;\n }\n }\n\n scope.redChanged = function (operator) {\n scope.selectedRedOperator = operator;\n setYellowText();\n validateExpression();\n }\n scope.redValueChanged = function (value) {\n scope.redvalue = value;\n setYellowText();\n validateExpression();\n }\n\n function setAvailableRedOperator(greenoperator) {\n var newRedOperators;\n switch (greenoperator) {\n case \">=\":\n newRedOperators = [\n { dbCode: \"<=\", html: \"<=\" },\n { dbCode: \"<\", html: \"<\" }\n ];\n break;\n case \">\":\n newRedOperators = [\n { dbCode: \"<=\", html: \"<=\" },\n { dbCode: \"<\", html: \"<\" }\n ];\n break;\n case \"<=\":\n newRedOperators = [\n { dbCode: \">=\", html: \">=\" },\n { dbCode: \">\", html: \">\" }\n ];\n break;\n case \"<\":\n newRedOperators = [\n { dbCode: \">=\", html: \">=\" },\n { dbCode: \">\", html: \">\" }\n ];\n break;\n }\n if (!(scope.redoperators && scope.redoperators[0].dbCode === newRedOperators[0].dbCode && scope.redoperators.length === newRedOperators.length)) {\n scope.redoperators = newRedOperators;\n }\n }\n\n function getYellowOperator(operator) {\n switch (operator) {\n case \">=\":\n return \"<\";\n case \">\":\n return \"<=\";\n case \"<=\":\n return \">\";\n case \"<\":\n return \">=\";\n }\n }\n\n scope.setUnitOfTime = function (unit) {\n scope.datasource.unitOfTime = unit; \n }\n\n scope.save = function () {\n scope.isProcessing = true;\n var utcDate = moment.utc(scope.selectedDate).format();\n var redOperator = null;\n if (scope.selectedRedOperator) {\n redOperator = scope.selectedRedOperator.dbCode;\n }\n\n if(scope.targetsource == \"manual\"){\n scope.targets.push({dataSourceId:scope.dataSource.id,\n greenOperator: scope.selectedGreenOperator.dbCode,\n greenValue: scope.greenvalue,\n redOperator: redOperator,\n redValue: scope.redvalue,\n validFrom: utcDate\n });\n scope.datasource.targets = scope.targets; \n $translate('COMMON_CREATED').then(function (msg) {\n toaster.success(msg);\n });\n processTargets(scope.targets);\n clearRegistration(); \n } else {\n var registration = {\n datasourceid: scope.dataSource.id,\n validFrom: utcDate,\n greenvalue: scope.greenvalue,\n greenoperator: scope.selectedGreenOperator.dbCode,\n redvalue: scope.redvalue,\n redoperator: redOperator,\n }\n \n dataSourceService().addTarget(scope.dataSource.id, registration).then(function (savedRegistration) {\n $translate('COMMON_CREATED').then(function (msg) {\n toaster.success(msg);\n });\n clearRegistration();\n getTargets(scope.dataSource.id);\n });\n }\n }\n\n scope.delete = function (target) {\n if(scope.targetsource == \"targetdatasource\") return //should not be able to delete targetdatasource targets\n if(scope.targetsource == \"manual\"){\n //Remove target from targets\n var index = scope.targets.indexOf(target);\n if (index > -1) {\n scope.targets.splice(index, 1);\n }\n } else { \n dataSourceService().deleteTarget(target.id).then(function (result) {\n //Remove target from targets\n var index = scope.targets.indexOf(target);\n if (index > -1) {\n scope.targets.splice(index, 1);\n }\n });\n }\n }\n\n\n function clearRegistration() {\n scope.isProcessing = false;\n selectedDateChanged(moment().startOf('day').toDate());\n\n /*scope.selectedGreenOperator = null;\n scope.selectedRedOperator = null;\n\n scope.greenvalue = null;\n scope.redvalue = null;\n scope.yellowDescription = \"\";*/\n scope.showRegistration = false;\n scope.notValidExpression = false;\n }\n\n }\n\n }\n }]);","import envConfig from \"@common/envConfig\";\n\n\nangular.module(\"DigiLean\").factory('importExportService', ['$rootScope', '$filter', '$http',\n function ($rootScope, $filter, $http) {\n function dataService() {\n var resource = \"/importexport\";\n var resourceUrl = envConfig.webApiUrl + resource;\n\n return {\n parse: function (file) {\n // var url = resourceUrl + \"/parse\";\n // return $http.post(url, value).then(function (result) {\n // return result.data;\n // });\n\n var fd = new FormData();\n fd.append('file', file);\n fd.append('title', file.name);\n return $http({\n url: resourceUrl + \"/parse\",\n method: 'POST',\n data: fd,\n headers: {'Content-Type': undefined },\n transformRequest: angular.identity,\n }).then(function(result){\n return result.data;\n });\n\n },\n\n }\n }\n return dataService;\n }]);","import { UserProfileImageInfo, ProfileImage, User, FileInfo, UserInfo } from \"@api\"\nimport backend from \"@common/services/backendHttp\"\nimport { cachedGetRequest } from \"@common/services/cacheService\"\nconst resourceUrl = \"api/profile\"\n\n \nexport function getUsersWithProfileImage() {\n const url = resourceUrl + \"/GetUsersWithProfileImage/\"\n return cachedGetRequest(url, 60)\n}\n\nexport function getProfileImage(userId: string) {\n const url = resourceUrl + \"/getProfileImage/\" + userId\n return backend.get(url)\n}\nexport function getMyProfile() {\n const url = resourceUrl + \"/getMyProfile/\"\n return backend.get(url)\n}\nexport function updateProfileInfo(profileInfo: UserInfo) {\n var url = resourceUrl + \"/updateProfileInfo/\"\n return backend.put(url, profileInfo)\n}\nexport function updateProfileImage(imageId: string) {\n var url = resourceUrl + \"/updateProfileImage/\" + imageId\n return backend.put(url, {nothing: \"\"})\n}\n\nexport function uploadProfileImage(formData: FormData) {\n var url = resourceUrl + \"/uploadProfileImage\"\n return backend.postForm(url, formData)\n}\n","import * as profileService from \"@common/services/user/profileService\"\n\nvar DigiLean = angular.module('DigiLean'); \nDigiLean.controller('excelImporterController', ['$scope', '$uibModalInstance', 'dataSourceId',\n function ($scope, $uibModalInstance, dataSourceId) {\n \n $scope.fileUrl = \"\";\n $scope.dataSourceId = dataSourceId;\n $scope.uploadedFiles = []; // For uploading new attachments, will be connected to dropzone.\n $scope.fileUploaded = function (file) {\n $scope.fileUrl = \"\";\n profileService.updateProfileImage(file.id).then(function (profile) {\n getProfile();\n });\n };\n\n $scope.isProcessing = false;\n $scope.ok = function () {\n $scope.isProcessing = true;\n $uibModalInstance.close('ok');\n };\n\n\n\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n }]);","import { Asset, AssetBusinessTree, AssetBusinessUnit,AssetAssociatedData, AssetInfo, AssetLeaf, AssetWithRole, CustomizedBoardAsset, GroupType, Participant, UserAssetAccess } from \"@api\"\nimport backend from \"@common/services/backendHttp\"\n\nconst resourceUrl = \"api/asset\"\n\nexport const getList = () => {\n return backend.get(resourceUrl)\n}\n\nexport const getAssetsByType = (type: GroupType) => {\n const url = resourceUrl + \"/GetAssetsByType/\" + type\n return backend.get(url)\n}\n\nexport const getMyProjectAssets = () => {\n const url = resourceUrl + \"/getMyProjectAssets/\"\n return backend.get(url)\n}\n\nexport const getProjectAssets = () => {\n const url = resourceUrl + \"/getProjectAssets/\"\n return backend.get(url)\n}\n\nexport const getAllUserAssets = () => {\n const url = resourceUrl + \"/getAllUserAssets\"\n return backend.get(url)\n}\n\nexport const getAssetsWithDeviation = () => {\n const url = resourceUrl + \"/getAssetsWithDeviation\"\n return backend.get(url)\n}\n\nexport const getAssetAssociatedData = (assetId: number) => {\n const url = resourceUrl + \"/getAssetAssociatedData/\" + assetId\n return backend.get(url)\n}\nexport const getAllAssets = (useCache?: boolean) => {\n if (!useCache)\n useCache = false\n const url = resourceUrl + \"/getAllAssets\"\n return backend.get(url)\n}\n\nexport const getAssetsForBusinessUnit = (businessUnitId?: number) => {\n const url = businessUnitId\n ? resourceUrl + \"/GetAssetsForBusinessUnit/\" + businessUnitId\n : resourceUrl + \"/GetAssetsForBusinessUnit\";\n return backend.get(url)\n}\n\nexport const getAllAssetsIncludingSystem = () => { //only id and name\n const url = resourceUrl + \"/GetAllAssetsIncludingSystem\";\n return backend.get(url)\n}\n\nexport const getById = (assetId: number) => {\n const url = resourceUrl + \"/getById/\" + assetId\n return backend.get(url)\n}\n\n// for Admin-module\nexport const getUserAssets = (id: number) => {\n const url = resourceUrl + \"/getUserAssets/\" + id\n return backend.get(url)\n}\n\nexport const saveUserAssets = (userId: string, tree: UserAssetAccess) => {\n const url = resourceUrl + \"/saveUserAssets/\" + userId\n return backend.post(url, tree)\n}\n\nexport const getAssetBusinessTree = (businessUnitId?: number) => {\n const url = businessUnitId\n ? resourceUrl + \"/getassetbusinesstree/\" + businessUnitId\n : resourceUrl + \"/getassetbusinesstree\";\n return backend.get(url)\n}\n\nexport const saveAssetBusinessTree = (businessUnitId?: number) => {\n const url = businessUnitId\n ? resourceUrl + \"/saveassetbusinesstree/\" + businessUnitId\n : resourceUrl + \"/saveassetbusinesstree\";\n return backend.get(url)\n}\n\nexport const createCustomAsset = (asset: CustomizedBoardAsset) => {\n const url = resourceUrl + \"/createCustomAsset\"\n return backend.post(url, asset)\n}\n\nexport const updateCustomAssetMembers = (assetId: number, participants: Participant[]) => {\n const url = resourceUrl + \"/updateCustomAssetMembers/\" + assetId\n return backend.put(url, participants)\n}\n\nexport const add = (asset: AssetBusinessUnit) => {\n return backend.post(resourceUrl, asset)\n}\n\nexport const update = (asset: AssetBusinessUnit) => {\n return backend.put(resourceUrl, asset)\n}\n\nexport const remove = (id: number) => {\n const url = resourceUrl + \"/deleteasset/\" + id\n return backend.delete(url)\n}\n\nexport const updateAssetOrder = (asset: AssetLeaf) => {\n const url = resourceUrl + \"/updateassetorder\"\n return backend.post(url, asset)\n}","import * as assetService from \"@common/services/assetService\"\n\nangular\n .module('DigiLean')\n .directive(\"assetSelector\", ['$filter', 'authService',\n function ($filter,authService) {\n return {\n templateUrl: 'assetselector.html',\n restrict: 'E',\n scope: {\n 'filters': '=',\n 'source': '=',\n 'filterChangeHandler': '&'\n },\n link: function (scope, elem, attrs) {\n scope.includeAll = true;\n var sourceColumn = \"assetId\"; //default source column\n\n function getAssetList() {\n if(authService.hasRole(\"Admin\")){\n assetService.getAllAssets(true).then(function (assets) {\n scope.assets = assets;\n for (var k = 0; k < scope.assets.length; k++) {\n scope.assets[k].cssLevel = \"level-\" + scope.assets[k].level; \n }\n applyFilter(); \n });\n } else {\n assetService.getList().then(function (assets) {\n scope.assets = assets;\n for (var k = 0; k < scope.assets.length; k++) {\n scope.assets[k].cssLevel = \"level-\" + scope.assets[k].level; \n }\n applyFilter(); \n });\n }\n };\n getAssetList();\n\n scope.$watch('source', function () {\n if(scope.source && scope.source === 'followUpAssetId'){\n sourceColumn = \"followUpAssetId\";\n }\n applyFilter();\n });\n\n scope.$watch('filters', function () {\n applyFilter();\n });\n\n function applyFilter(){\n if (scope.filters && scope.filters.length > 0 && scope.assets) {\n\n var identifiers = [];\n var selectedFilter = scope.filters[0];\n if (selectedFilter && selectedFilter.items.length > 0) {\n\n selectedFilter.items.forEach(item => {\n identifiers.push(parseInt(item));\n });\n selectedFilter.items = identifiers;\n }\n \n for (var k = 0; k < scope.assets.length; k++) {\n if(selectedFilter.items.length > 0 ){\n // Set asset as filter if exists\n var exists = false;\n selectedFilter.items.forEach(item => {\n if (parseInt(item) == scope.assets[k].id) {\n exists = true;\n }\n });\n scope.assets[k].include = exists;\n } else {\n scope.assets[k].include = false; \n }\n \n }\n\n var selected = $filter('filter')(scope.assets, { include: true });\n if (selected.length === scope.assets.length && selected.length === 0) {\n scope.includeAll = true;\n } else {\n scope.includeAll = false;\n }\n } else if (scope.assets) {\n for (var i = 0; i < scope.assets.length; i++) {\n scope.assets[i].include = true; \n }\n }\n }\n\n scope.toggleAll = function (include) {\n for (var k = 0; k < scope.assets.length; k++) {\n scope.assets[k].include = include; \n }\n if(include){\n scope.modifyFilter();\n } \n };\n\n scope.modifyFilter = function(){\n var selected = $filter('filter')(scope.assets, { include: true });\n if(selected.length == 0){ //if no items are selected then all item should be included. It is not possible to filter zero items\n scope.includeAll = true;\n scope.filters = null;\n for (var k = 0; k < scope.assets.length; k++) {\n scope.assets[k].include = true; \n }\n } else if(selected.length === scope.assets.length){ \n scope.includeAll = true;\n scope.filters = null;\n } else {\n scope.includeAll = false;\n var selectedItems = [];\n for(var i=0; i < selected.length; i++){\n selectedItems.push(selected[i].id);\n }\n scope.filters = [{\n sourceColumn: sourceColumn,\n operator: \"InList\",\n items: selectedItems\n }];\n }\n scope.filterChangeHandler({ updatedSourceColumn: sourceColumn, filter: scope.filters });\n };\n\n }\n }\n }]);\n","import { BusinessUnit, User } from \"@api\"\nimport backend from \"@common/services/backendHttp\"\nimport { cachedGetRequest } from \"@common/services/cacheService\"\n\nconst resourceUrl = \"api/BusinessUnit\"\nlet unitsCached: BusinessUnit[] | null = null\n\nexport const getAllUnits = () => {\n const url = resourceUrl\n return cachedGetRequest(url, 60).then(units => {\n return units\n })\n}\n\nexport const getAllUnitsCached = async () => {\n if (!unitsCached) {\n const units = await getAllUnits()\n unitsCached = units ? units : []\n }\n return unitsCached\n}\n\nexport const getBusinessUnitUsers = (id: number) => {\n const url = `${resourceUrl}/${id}/members`\n return backend.get(url)\n}","import { getAllUnitsCached } from \"@common/services/businessUnitService\"\nangular\n .module('DigiLean')\n .directive(\"businessunitSelector\", ['$filter', \n function ($filter) {\n return {\n templateUrl: 'businessunitSelector.html',\n restrict: 'E',\n scope: {\n 'filters': '=',\n 'source': '=',\n 'filterChangeHandler': '&'\n },\n link: function (scope, elem, attrs) {\n scope.includeAll = true;\n\n scope.units = []\n getAllUnitsCached().then(units => {\n scope.units.push(...units)\n })\n\n scope.$watch('source', function () {\n applyFilter();\n });\n\n\n function applyFilter(){\n if (scope.filters && scope.filters.length > 0 && scope.units) {\n \n var identifiers = [];\n var selectedFilter = scope.filters[0];\n if (selectedFilter && selectedFilter.items.length > 0) {\n\n selectedFilter.items.forEach(item => {\n identifiers.push(parseInt(item));\n });\n selectedFilter.items = identifiers;\n }\n for (var k = 0; k < scope.units.length; k++) {\n var index = -1;\n if(selectedFilter.items.length > 0 ){\n index = selectedFilter.items.indexOf(scope.units[k].id);\n }\n if (index > -1){\n scope.units[k].include = true;\n } else {\n scope.units[k].include = false;\n } \n }\n\n var selected = $filter('filter')(scope.units, { include: true });\n if (selected.length === scope.units.length && selected.length === 0) {\n scope.includeAll = true;\n } else {\n scope.includeAll = false;\n }\n } else if (scope.units) {\n for (var i = 0; i < scope.units.length; i++) {\n scope.units[i].include = true; \n }\n }\n }\n\n scope.deselectAll = function (include) {\n for (var k = 0; k < scope.units.length; k++) {\n scope.units[k].include = include; \n }\n scope.modifyFilter();\n };\n\n scope.modifyFilter = function(){\n var selected = $filter('filter')(scope.units, { include: true });\n if(selected.length == 0 && !scope.includeAll){\n scope.filters = [{\n sourceColumn: \"businessUnitId\",\n operator: \"IsNull\",\n items: []\n }];\n }\n else if(selected.length === scope.units.length){\n scope.includeAll = true;\n scope.filters = null;\n } else {\n scope.includeAll = false;\n var selectedItems = [];\n for(var i=0; i < selected.length; i++){\n selectedItems.push(selected[i].id);\n }\n scope.filters = [{\n sourceColumn: \"businessUnitId\",\n operator: \"InList\",\n items: selectedItems\n }];\n }\n scope.filterChangeHandler({ updatedSourceColumn: \"businessUnitId\", filter: scope.filters });\n };\n\n }\n }\n }]);\n","import * as customerService from \"@common/services/customers/customerService\"\n\nangular\n.module('DigiLean')\n.directive(\"userSelector\", ['$filter', \n function ($filter) {\n return {\n templateUrl: 'userselector.html',\n restrict: 'E',\n scope: {\n 'filters': '=',\n 'source': '=',\n 'filterChangeHandler': '&'\n },\n link: function (scope, elem, attrs) {\n scope.includeAll = true;\n\n function getUserList() {\n customerService.getAllUsers().then(function (users) {\n scope.users = users;\n applyFilter(); \n });\n }\n getUserList();\n\n scope.$watch('filters', function () {\n applyFilter();\n });\n\n function applyFilter(){\n if (scope.filters && scope.users) {\n var identifiers = [];\n var selectedFilter = scope.filters[0];\n \n for (var k = 0; k < scope.users.length; k++) {\n var index = -1;\n if(selectedFilter.items.length > 0 ){\n index = selectedFilter.items.indexOf(scope.users[k].userId);\n }\n if (index > -1){\n scope.users[k].include = true;\n } else {\n scope.users[k].include = false;\n } \n }\n\n var selected = $filter('filter')(scope.users, { include: true });\n if (selected.length === scope.users.length && selected.length === 0) {\n scope.includeAll = true;\n } else {\n scope.includeAll = false;\n }\n } else if (scope.users) {\n for (var k = 0; k < scope.users.length; k++) {\n scope.users[k].include = true; \n }\n }\n }\n\n scope.deselectAll = function (include) {\n for (var k = 0; k < scope.users.length; k++) {\n scope.users[k].include = include; \n }\n scope.modifyFilter();\n };\n\n scope.modifyFilter = function(){\n var selected = $filter('filter')(scope.users, { include: true });\n if(selected.length === scope.users.length){\n scope.includeAll = true;\n scope.filters = null;\n } else {\n scope.includeAll = false;\n var selectedItems = [];\n for(var i=0; i < selected.length; i++){\n selectedItems.push(selected[i].userId);\n }\n scope.filters = [{\n sourceColumn: scope.source,//\"UserId\",\n operator: \"InList\",\n items: selectedItems\n }];\n }\n //scope.filterChangeHandler({ updatedSourceColumn: \"UserId\", filter: scope.filters });\n scope.filterChangeHandler({ updatedSourceColumn: scope.source, filter: scope.filters });\n };\n\n }\n }\n }]);\n","import { translateLabelInstant } from \"./language/DigiLeanLang\"\nimport swal from 'sweetalert';\n\nexport function showFullScreen() {\n // IE 11 fix\n $(\".overlay\").hide();\n //---------------------\n var isInFullScreen = (document.fullScreenElement && document.fullScreenElement !== null) || // alternative standard method \n (document.mozFullScreen || document.webkitIsFullScreen);\n\n if (typeof isInFullScreen === 'undefined') {\n isInFullScreen = document.msFullscreenElement != null;\n }\n\n if (isInFullScreen) return;\n //var docElm = document.getElementById(\"wrapper\");\n var docElm = document.body;\n if (docElm.requestFullscreen) {\n docElm.requestFullscreen();\n } else if (docElm.mozRequestFullScreen) {\n docElm.mozRequestFullScreen();\n } else if (docElm.webkitRequestFullScreen) {\n docElm.webkitRequestFullScreen();\n }\n else if (docElm.msRequestFullscreen) {\n docElm.msRequestFullscreen();\n }\n}\nexport function hideFullScreen() {\n // IE 11 fix\n $(\".overlay\").show();\n //---------------------\n var isInFullScreen = (document.fullScreenElement && document.fullScreenElement !== null) || // alternative standard method \n (document.mozFullScreen || document.webkitIsFullScreen);\n\n if (typeof isInFullScreen === 'undefined') {\n isInFullScreen = document.msFullscreenElement != null;\n }\n if (!isInFullScreen) return;\n //var docElm = document.getElementById(\"wrapper\");\n var docElm = document.body;\n\n\n if (document.exitFullscreen) {\n document.exitFullscreen();\n } else if (document.msExitFullscreen) {\n document.msExitFullscreen();\n } else if (document.mozCancelFullScreen) {\n document.mozCancelFullScreen();\n } else if (document.webkitExitFullscreen) {\n document.webkitExitFullscreen();\n }\n\n}\nexport function showNoAccessPopup() {\n swal({\n title: translateLabelInstant(\"COMMON_NO_ACCESS\"),\n text: translateLabelInstant(\"COMMON_REQUIRED_GROUP_MEMBERSHIP\"),\n icon: \"warning\",\n button: {\n text: translateLabelInstant(\"COMMON_OK\"),\n closeModal: true,\n closeOnClickOutside: true,\n closeOnEsc: true\n },\n dangerMode: true,\n closeOnClickOutside: true,\n closeOnEsc: true\n });\n}\nexport function showSystemProjectBoardPopup() {\n swal({\n title: translateLabelInstant(\"COMMON_NO_ACCESS\"),\n text: translateLabelInstant(\"PROJECT_CAN_NOT_DELETE_BOARD\"),\n icon: \"warning\",\n button: {\n text: translateLabelInstant(\"COMMON_OK\"),\n closeModal: true,\n closeOnClickOutside: true,\n closeOnEsc: true\n },\n dangerMode: true,\n closeOnClickOutside: true,\n closeOnEsc: true\n });\n}","\nimport backend, { BackendHttpError } from \"@common/services/backendHttp\"\nimport * as timeService from \"@common/services/timeService\"\nimport * as displayService from \"@common/services/displayService\"\nimport { translateLabelInstant } from \"./language/DigiLeanLang\"\nimport { BoardCategories, BoardInfoSimple, TableParams, BoardsTableValues } from \"@api\"\n\n\nconst resourceUrl = \"api/board\"\n\nconst resourceAdminUrl = \"api/boardadmin\"\n\nexport function create (board) {\n return backend.post(resourceUrl, board)\n}\nexport function createFromTemplate(id, options) {\n const url = resourceUrl + \"/createFromTemplate/\" + id;\n return backend.post(url, options)\n}\nexport function createTemplate(boardId, templateInfo) {\n const url = resourceUrl + \"/createTemplate/\" + boardId;\n return backend.post(url, templateInfo)\n}\nexport function get(boardId) {\n const url = resourceUrl + \"/\" + boardId;\n return backend.get(url)\n}\n \n/*kaizen admin */\nexport function getBoardsByCustomer(customerId) {\n const url = resourceUrl + \"/getBoardsByCustomer/\" + customerId;\n return backend.get(url)\n}\n\nexport function canEdit(boardId) {\n const url = resourceUrl + \"/canedit/\" + boardId;\n return backend.get(url)\n}\n\nexport function getRequiredAccess(boardId) {\n const url = resourceUrl + \"/getRequiredAccess/\" + boardId;\n return backend.get(url)\n}\n\nexport function checkAccess(boardId) {\n const url = resourceUrl + \"/checkAccess/\" + boardId;\n return backend.get(url)\n}\n\nexport function moveUncompletedTasks(boardId, week) {\n const url = resourceUrl + \"/moveUncompletedTasks/\" + boardId;\n // var day = moment(options.boardDate).isoWeekday();\n var timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;\n var weekOptions = {\n fromWeek: {\n startTime: week.startDate.toJSON(),\n endTime: week.endDate.toJSON(),\n },\n numberOfDays: 7,\n timeZoneOffset: {\n offset: timeService.getTimeZoneOffset()\n },\n timeZone: timeZone\n // dayOfWeek: day\n }\n return backend.put(url, weekOptions)\n}\n\nexport function getTemplates(filter) {\n if(!filter){\n filter = [];\n }\n const url = resourceUrl + \"/getTemplates\";\n return backend.post(url,filter)\n}\nexport function getTemplate(id) {\n const url = resourceUrl + \"/getTemplate/\" + id;\n return backend.get(url)\n}\nexport function deleteTemplate(id) {\n const url = resourceUrl + \"/deleteTemplate/\" + id;\n return backend.delete(url)\n}\n\nexport const getTableValues = (tableParams: TableParams) => {\n const url = resourceAdminUrl + \"/getTableValues/\"\n return backend.post(url, tableParams)\n}\n\nexport const getDashboardTableValues = (tableParams: TableParams) => {\n const url = resourceAdminUrl + \"/getDashboardTableValues/\"\n return backend.post(url, tableParams)\n}\n\n\nexport function getAll() {\n return backend.get(resourceUrl)\n}\nexport async function deleteBoard (id) {\n const url = resourceUrl + \"/\" + id;\n try {\n const res = await backend.delete(url)\n return res\n }\n catch (error: any) {\n if (error instanceof BackendHttpError && error.status === 400)\n return displayService.showSystemProjectBoardPopup()\n \n throw error\n }\n}\nexport function getBoardsForAdmin() {\n const url = resourceUrl + \"/GetBoardsForAdmin\";\n return backend.get(url)\n}\n\nexport function getAllBoardNames() {\n const url = resourceUrl + \"/getAllBoardNames\";\n return backend.get(url)\n}\n\nexport function getMemberBoards() {\n const url = resourceUrl + \"/getmemberboards\";\n return backend.get(url)\n}\n\nexport function getMemberBoardsOfType(boardType) {\n const url = resourceUrl + \"/getMemberBoardsOfType/\" + boardType;\n return backend.get(url)\n}\n\nexport function getBoardsOfType(boardType) {\n const url = resourceUrl + \"/getBoardsOfType/\" + boardType;\n return backend.get(url)\n}\n\nexport function getBoardInfo(id) {\n const url = resourceUrl + \"/getboardinfo/\" + id;\n return backend.get(url)\n}\n\nexport function getProjectForBoard(boardId) {\n const url = resourceUrl + \"/GetProjectForBoard/\" + boardId;\n return backend.get(url)\n}\n\nexport function getBoardsForAsset(assetId) {\n const url = resourceUrl + \"/GetBoardsForAsset/\" + assetId;\n return backend.get(url)\n}\n\nexport function getProjectBoards(projectId) {\n const url = resourceUrl + \"/GetProjectBoards/\" + projectId;\n return backend.get(url)\n}\n\nexport function saveBoard(boardInfo) {\n const url = resourceUrl + \"/SaveBoard/\";\n return backend.put(url, boardInfo)\n}\n\nexport function getBoardCategories(id) {\n const url = resourceUrl + \"/getBoardCategories/\" + id;\n return backend.get(url)\n}\n\nexport function changeSortOrder(boardId, sortOrders) {\n const url = \"api/boardcategory/ChangeSortOrder/\" + boardId;\n return backend.put(url, sortOrders)\n}\n\nexport function rotateCategories(boardId: number) {\n const url = \"api/boardcategory/RotateCategories/\" + boardId;\n return backend.put(url, {})\n}\n\n\nexport function deleteCategory(categoryId) {\n const url = \"api/boardcategory/deleteCategory/\" + categoryId;\n return backend.delete(url)\n}\n\nexport function updateCategory(categoryId, category) {\n const url = \"api/boardcategory/updateCategory/\" + categoryId;\n return backend.put(url, category)\n}\n\nexport function createCategory(boardId, category) {\n const url = \"api/boardcategory/createCategory/\" + boardId;\n return backend.post(url, category)\n}\n\nexport function getUserListForBoard(boardId) {\n const url = resourceUrl + \"/getUserListForBoard/\" + boardId;\n return backend.get(url)\n}\n\nexport function update(id, board) {\n const url = resourceUrl + \"/\" + id;\n return backend.put(url, board)\n}\n\nexport function updateName(id, name) {\n const url = resourceUrl + \"/updateName/\" + id;\n return backend.put(url, name)\n}\n\nexport function updateSettings(id, settings) {\n const url = resourceUrl + \"/updateSettings/\" + id;\n return backend.put(url, settings)\n}\n\nexport function assignResponsibleForCategory(responsibleForCategory) {\n const url = resourceUrl + \"/assignResponsibleForCategory/\";\n return backend.post(url, responsibleForCategory)\n}\n\n\nexport function getDeleted() {\n const url = resourceUrl + \"/deletedboards\";\n return backend.get(url)\n}\n\nexport function forceDelete(id) {\n const url = resourceUrl + \"/forcedelete/\" + id;\n return backend.delete(url)\n}\n\nexport function restore(id) { // Restore deleted board\n const url = resourceUrl + \"/restore/\" + id;\n return backend.put(url)\n}\n\nexport function getTags(id) {\n const url = resourceUrl + \"/getTags/\" + id;\n return backend.get(url)\n}\n\nexport function getTagsForWeek(id, week) {\n const url = resourceUrl + \"/getTagsForWeek/\" + id;\n return backend.post(url, week)\n}\n\n// Kanban tasks\nexport function getTasks(id) {\n const url = resourceUrl + \"/GetTasks/\" + id;\n return backend.post(url, null)\n}\n\nexport function getActionListTasks(id) {\n const url = resourceUrl + \"/GetActionListTasks/\" + id;\n return backend.post(url, null)\n}\n\nexport function tasksInPeriod(id, options) {\n const url = resourceUrl + \"/GetTasksInTimePeriod/\" + id;\n return backend.post(url, options)\n}\n\nexport function getTasksForPeriod(id, options) {\n const url = resourceUrl + \"/GetTasksForPeriod/\" + id;\n return backend.post(url, options)\n}\n\n//used by timeboard\nexport function getArchivedTimeTasksForPeriod(id, options) {\n const url = resourceUrl + \"/GetArchivedTimeTasksForPeriod/\" + id;\n return backend.post(url, options)\n}\n \n// archived date is essential\nexport function archivedTasksInPeriod(id, options) {\n const url = resourceUrl + \"/GetArchivedTasksInTimePeriod/\" + id;\n return backend.post(url, options)\n}\n\nexport function addStrategyGoalToBoard(boardId, strategyGoalId) {\n const url = resourceUrl + \"/\" + boardId + \"/addStrategyGoalToBoard\";\n return backend.post(url, strategyGoalId)\n}\n\nexport function getActionTasks(id) {\n const url = resourceUrl + \"/GetActionTasks/\" + id;\n return backend.post(url, null)\n}\n\nexport function getActionTasksForWeek(boardWeek) {\n const url = resourceUrl + \"/GetActionTasksForWeek\";\n return backend.post(url, boardWeek)\n}\n\nexport function getTaskStatusText(dbstatus) {\n switch (dbstatus) {\n case \"unacceptable\":\n return translateLabelInstant('BOARD_INCOMPLETED');\n case \"blank\":\n return translateLabelInstant('BOARD_OPEN');\n case \"OK\":\n return translateLabelInstant('DASHBOARD_COMPLETED');\n default:\n return translateLabelInstant('COMMON_NOT_SPECIFIED');\n }\n}\n\nexport function createKanbanBoardTemplate() {\n var template = {\n template: {\n boardType: \"Kanban\",\n name: translateLabelInstant(\"BOARD_KANBAN_BOARD\"),\n description: translateLabelInstant(\"BOARD_KANBAN_BOARD_DESCRIPTION\"),\n settings: JSON.stringify({\n IsWeeklyBoard: false\n })\n },\n columns: [] as any[],\n rows: [] as any[]\n };\n template.columns.push(\n {\n name: translateLabelInstant(\"BOARD_TO_DO\"),\n sortOrder: 0,\n categoryStyle: {\n backgroundColor: \"#E3EDF8\",\n foregroundColor: \"#2E404F\"\n }\n });\n template.columns.push(\n {\n name: translateLabelInstant(\"COMMON_IN_PROGRESS\"),\n sortOrder: 1,\n categoryStyle: {\n backgroundColor: \"#C5DBF0\",\n foregroundColor: \"#2E404F\"\n }\n });\n template.columns.push(\n {\n name: translateLabelInstant(\"BOARD_WAITING\"),\n sortOrder: 2,\n categoryStyle: {\n backgroundColor: \"#3480BD\",\n foregroundColor: \"#E7E6E6\"\n }\n });\n template.columns.push(\n {\n name: translateLabelInstant(\"BOARD_DONE\"),\n sortOrder: 3,\n categoryStyle: {\n backgroundColor: \"#15507f\",\n foregroundColor: \"#E7E6E6\"\n }\n });\n template.rows.push(\n {\n name: translateLabelInstant(\"COMMON_HIGH\"),\n sortOrder: 0,\n categoryStyle: {\n backgroundColor: \"#EFA390\",\n foregroundColor: \"#264653\"\n }\n });\n template.rows.push(\n {\n name: translateLabelInstant(\"COMMON_NORMAL\"),\n sortOrder: 1,\n categoryStyle: {\n backgroundColor: \"#8B8B8B\",\n foregroundColor: \"#E3EDF8\"\n }\n });\n\n template.rows.push(\n {\n name: translateLabelInstant(\"COMMON_LOW\"),\n sortOrder: 2,\n categoryStyle: {\n backgroundColor: \"#b1b1b1\",\n foregroundColor: \"#E3EDF8\"\n }\n });\n\n return template;\n}\n\nexport function createWeeklyBoardTemplate() {\n var translations = {\n BOARD_WEEKLY_BOARD: translateLabelInstant(\"BOARD_WEEKLY_BOARD\"),\n BOARD_WEEKLY_BOARD_DESCRIPTION: translateLabelInstant(\"BOARD_WEEKLY_BOARD_DESCRIPTION\"),\n BOARD_NEW_BOARD: translateLabelInstant(\"BOARD_NEW_BOARD\"),\n COMMON_CATEGORY: translateLabelInstant(\"COMMON_CATEGORY\"),\n COMMON_MONDAY: translateLabelInstant(\"COMMON_MONDAY\"),\n COMMON_TUESDAY: translateLabelInstant(\"COMMON_TUESDAY\"),\n COMMON_WEDNESDAY: translateLabelInstant(\"COMMON_WEDNESDAY\"),\n COMMON_THURSDAY: translateLabelInstant(\"COMMON_THURSDAY\"),\n COMMON_FRIDAY: translateLabelInstant(\"COMMON_FRIDAY\"),\n }\n\n var template = {\n template: {\n boardType: \"Weekly\",\n name: translations.BOARD_WEEKLY_BOARD,\n description: translations.BOARD_WEEKLY_BOARD_DESCRIPTION,\n settings: JSON.stringify({\n IsWeeklyBoard: true\n })\n },\n columns: [] as any[],\n rows: [] as any[]\n };\n template.columns.push(\n {\n name: translations.COMMON_MONDAY,\n weekdayName: \"Monday\",\n sortOrder: 0,\n categoryStyle: {\n backgroundColor: \"#0182BD\",\n foregroundColor: \"#FFFFFF\"\n }\n });\n template.columns.push(\n {\n name: translations.COMMON_TUESDAY,\n weekdayName: \"Tuesday\",\n sortOrder: 1,\n categoryStyle: {\n backgroundColor: \"#0182BD\",\n foregroundColor: \"#FFFFFF\"\n }\n });\n template.columns.push(\n {\n name: translations.COMMON_WEDNESDAY,\n weekdayName: \"Wednesday\",\n sortOrder: 2,\n categoryStyle: {\n backgroundColor: \"#0182BD\",\n foregroundColor: \"#FFFFFF\"\n }\n });\n template.columns.push(\n {\n name: translations.COMMON_THURSDAY,\n weekdayName: \"Thursday\",\n sortOrder: 3,\n categoryStyle: {\n backgroundColor: \"#0182BD\",\n foregroundColor: \"#FFFFFF\"\n }\n });\n template.columns.push(\n {\n name: translations.COMMON_FRIDAY,\n weekdayName: \"Friday\",\n sortOrder: 4,\n categoryStyle: {\n backgroundColor: \"#0182BD\",\n foregroundColor: \"#FFFFFF\"\n }\n });\n template.rows.push(\n {\n name: translations.COMMON_CATEGORY + \" A\",\n sortOrder: 0,\n categoryStyle: {\n backgroundColor: \"#DBEDCD\",\n foregroundColor: \"#0182BD\"\n }\n });\n template.rows.push(\n {\n name: translations.COMMON_CATEGORY + \" B\",\n sortOrder: 1,\n categoryStyle: {\n backgroundColor: \"#FBEED2\",\n foregroundColor: \"#0182BD\"\n }\n });\n template.rows.push(\n {\n name: translations.COMMON_CATEGORY + \" C\",\n sortOrder: 2,\n categoryStyle: {\n backgroundColor: \"#EED2D7\",\n foregroundColor: \"#0182BD\"\n }\n });\n\n\n return template;\n\n}\n\nexport function createYearlyTemplate() {\n var translations = {\n BOARD_YEARLY_BOARD: translateLabelInstant(\"BOARD_YEARLY_BOARD\"),\n BOARD_YEARLY_BOARD_DESCRIPTION: translateLabelInstant(\"BOARD_YEARLY_BOARD_DESCRIPTION\")\n }\n\n var template = {\n template: {\n boardType: \"Yearly\",\n name: translations.BOARD_YEARLY_BOARD,\n description: translations.BOARD_YEARLY_BOARD_DESCRIPTION,\n settings: JSON.stringify({\n IsWeeklyBoard: false\n })\n },\n columns: [] as any[],\n rows: [] as any[]\n };\n template.rows.push(\n {\n name: translateLabelInstant(\"COMMON_CATEGORY\") + \" A\",\n sortOrder: 0,\n categoryStyle: {\n backgroundColor: \"#f9f9f9\",\n foregroundColor: \"#676a6c\"\n }\n });\n template.rows.push(\n {\n name: translateLabelInstant(\"COMMON_CATEGORY\") + \" B\",\n sortOrder: 1,\n categoryStyle: {\n backgroundColor: \"#f9f9f9\",\n foregroundColor: \"#676a6c\"\n }\n });\n\n template.rows.push(\n {\n name: translateLabelInstant(\"COMMON_CATEGORY\") + \" C\",\n sortOrder: 2,\n categoryStyle: {\n backgroundColor: \"#f9f9f9\",\n foregroundColor: \"#676a6c\"\n }\n });\n return template;\n}\n","import * as boardService from \"@common/services/boardService\"\n\nangular\n.module('DigiLean')\n.directive(\"boardSelector\", ['$filter', \n function ($filter) {\n return {\n templateUrl: 'boardselector.html',\n restrict: 'E',\n scope: {\n 'filters': '=',\n 'source': '=',\n 'filterChangeHandler': '&'\n },\n link: function (scope, elem, attrs) {\n scope.includeAll = true;\n\n function getBoardList() {\n boardService.getAll().then(function (boards) {\n scope.items = boards;\n applyFilter(); \n });\n }\n\n scope.$watch('source', function () {\n getBoardList();\n });\n\n\n function applyFilter(){\n if (scope.filters && scope.items) {\n\n var identifiers = [];\n var selectedFilter = scope.filters[0];\n if (selectedFilter && selectedFilter.items.length > 0) {\n\n selectedFilter.items.forEach(item => {\n identifiers.push(parseInt(item));\n });\n selectedFilter.items = identifiers;\n }\n for (var k = 0; k < scope.items.length; k++) {\n var index = selectedFilter.items.indexOf(scope.items[k].id);\n if (index > -1){\n scope.items[k].include = true;\n } else {\n scope.items[k].include = false;\n } \n }\n\n var selected = $filter('filter')(scope.items, { include: true });\n if (selected.length === scope.items.length && selected.length === 0) {\n scope.includeAll = true;\n } else {\n scope.includeAll = false;\n }\n } else if (scope.items) {\n for (var i = 0; i < scope.items.length; i++) {\n scope.items[i].include = true; \n }\n }\n }\n\n scope.deselectAll = function (include) {\n for (var k = 0; k < scope.items.length; k++) {\n scope.items[k].include = include; \n }\n scope.modifyFilter();\n };\n\n scope.modifyFilter = function(){\n var selected = $filter('filter')(scope.items, { include: true });\n if(selected.length === scope.items.length){\n scope.includeAll = true;\n scope.filters = null;\n } else {\n scope.includeAll = false;\n var selectedItems = [];\n for(var i=0; i < selected.length; i++){\n selectedItems.push(selected[i].id);\n }\n scope.filters = [{\n sourceColumn: scope.source,\n operator: \"InList\",\n items: selectedItems\n }];\n }\n scope.filterChangeHandler({ updatedSourceColumn: scope.source, filter: scope.filters });\n };\n\n }\n }\n }]);\n","import * as boardService from \"@common/services/boardService\"\n\nangular\n.module('DigiLean')\n.directive(\"boardstatusSelector\", ['$filter', \n function ($filter) {\n return {\n templateUrl: 'boardstatusselector.html',\n restrict: 'E',\n scope: {\n 'filters': '=',\n 'source': '=',\n 'filterChangeHandler': '&'\n },\n link: function (scope, elem, attrs) {\n scope.includeAll = true;\n scope.statusItems = [];\n\n function getStatusList() {\n scope.statusItems = [\n {\n label: boardService.getTaskStatusText(\"OK\"),\n status: \"OK\"\n },\n {\n label: boardService.getTaskStatusText(\"blank\"),\n status: \"blank\"\n },\n {\n label: boardService.getTaskStatusText(\"unacceptable\"),\n status: \"unacceptable\"\n }\n\n ];\n applyFilter();\n }\n\n scope.$watch('source', function () {\n getStatusList();\n });\n\n\n function applyFilter(){\n if (scope.filters && scope.statusItems) {\n\n var identifiers = [];\n var selectedFilter = scope.filters[0];\n if (selectedFilter && selectedFilter.items.length > 0) {\n\n selectedFilter.items.forEach(item => {\n identifiers.push(parseInt(item));\n });\n selectedFilter.items = identifiers;\n }\n \n for (var k = 0; k < scope.statusItems.length; k++) {\n var index = selectedFilter.items.indexOf(scope.statusItems[k].status);\n if (index > -1){\n scope.statusItems[k].include = true;\n } else {\n scope.statusItems[k].include = false;\n } \n }\n\n var selected = $filter('filter')(scope.statusItems, { include: true });\n if (selected.length === scope.statusItems.length && selected.length === 0) {\n scope.includeAll = true;\n } else {\n scope.includeAll = false;\n }\n } else if (scope.statusItems) {\n for (var i = 0; i < scope.statusItems.length; i++) {\n scope.statusItems[i].include = true; \n }\n }\n }\n\n scope.deselectAll = function (include) {\n for (var k = 0; k < scope.statusItems.length; k++) {\n scope.statusItems[k].include = include; \n }\n scope.modifyFilter();\n };\n\n scope.modifyFilter = function(){\n var selected = $filter('filter')(scope.statusItems, { include: true });\n if(selected.length === scope.statusItems.length){\n scope.includeAll = true;\n scope.filters = null;\n } else {\n scope.includeAll = false;\n var selectedItems = [];\n for(var i=0; i < selected.length; i++){\n selectedItems.push(selected[i].status);\n }\n scope.filters = [{\n sourceColumn: scope.source,\n operator: \"InList\",\n items: selectedItems\n }];\n }\n scope.filterChangeHandler({ updatedSourceColumn: scope.source, filter: scope.filters });\n };\n\n }\n }\n }]);\n\n\n\n\n\n","import * as customerService from \"@common/services/customers/customerService\"\nimport * as assetService from \"@common/services/assetService\"\n\nangular\n .module('DigiLean')\n .controller(\"datavaluesListModalController\", ['$scope', '$translate','$filter', '$uibModalInstance', '$sce', 'dataSourceService','dataService', 'areaService', 'authService','projectService', 'dataListService','$uibModal','NgTableParams','options',\n function ($scope, $translate, $filter, $uibModalInstance, $sce, dataSourceService, dataService, areaService, authService, projectService, dataListService,$uibModal, NgTableParams,options) {\n\n $scope.options = options;\n $scope.dataLists = {};\n $scope.deviations = [];\n $scope.isAdmin = authService.hasRole(\"Admin\");\n $scope.canEdit = true;\n\n if(options && options.timePeriod && options.dataSource){\n $scope.dataSource = options.dataSource;\n $scope.timePeriod = options.timePeriod;\n $scope.filters = options.filters;\n if(options.canEdit == false || options.canEdit == true)\n {\n $scope.canEdit = options.canEdit;\n }\n if($scope.dataSource.elements){\n setUpData();\n } else {\n dataSourceService().get($scope.dataSource.id).then(function (dataSource) {\n if(dataSource && dataSource.elements){\n $scope.dataSource.elements = dataSource.elements;\n }\n setUpData();\n });\n }\n \n } \n\n function setUpData(){\n var listOperations = [];\n angular.forEach($scope.dataSource.elements, function (element) {\n switch (element.type) {\n case \"asset\":\n listOperations.push(assetService.getAllAssets(true).then(function (data) {\n $scope.assets = data;\n }));\n break;\n case \"area\":\n listOperations.push(areaService().getList(true).then(function (data) {\n $scope.areas = data;\n }));\n break;\n case \"project\":\n listOperations.push(projectService().getList(true).then(function (data) {\n $scope.projects = data;\n }));\n break;\n case \"user\":\n listOperations.push(customerService.getAllUsers().then(function (users) {\n $scope.allUsers = users;\n }));\n break;\n case \"list\":\n var listOptions = { includeDeletedItems: false };\n listOperations.push(dataListService().getItems(element.dataListId, listOptions).then(function (list) {\n if (list) {\n $scope.dataLists[element.sourceColumn] = list; \n }\n }));\n break;\n }\n\n });\n\n Promise.all(listOperations).then(() => {\n $scope.getLatestValues();\n })\n }\n\n $scope.getValueForElement = function (element, item) {\n var sourceColumn = element.sourceColumn;\n var value = item[sourceColumn];\n return value;\n }\n\n $scope.getLatestValues = function (params) {\n if (!$scope.dataSource) return;\n $scope.newValuesCounter = 0;\n\n\n\n $scope.buildColumns($scope.dataSource);\n $scope.tableParams = new NgTableParams({\n sorting: { valueDate: \"desc\" },\n },\n {\n getData: $scope.getTableValues\n });\n\n }\n\n $scope.getTableValues = function (params) {\n\n var sorting = [];\n // Build sortExpression for database to be able to deserialize, becuase NgTableParams.sorting is a dynamic object.\n for (var propt in params._params.sorting) {\n sorting.push({\n property: propt,\n direction: params._params.sorting[propt]\n });\n }\n // We will build params based on the built-in NgTableParams + our sorting array\n var dbParams = {\n page: params._params.page,\n count: params._params.count,\n timePeriod: $scope.timePeriod,\n filters: $scope.filters,\n sorting: sorting\n }\n return dataService().getTableValues($scope.dataSource.id, dbParams).then(function (data) {\n angular.forEach(data.values, function (registration) {\n var asset = $filter('filter')($scope.assets, { id: registration.assetId }, true);\n if (asset && asset.length > 0) {\n registration.assetName = asset[0].name;\n } else {\n if (registration.assetId) {\n registration.assetName = registration.assetId;\n }\n }\n var area = $filter('filter')($scope.areas, { id: registration.areaId }, true);\n if (area && area.length > 0) {\n registration.areaName = area[0].name;\n } else {\n if (registration.areaId) {\n registration.areaName = registration.areaId;\n }\n }\n var project = $filter('filter')($scope.projects, { id: registration.projectId }, true);\n if (project && project.length > 0) {\n registration.projectName = project[0].displayName;\n } else {\n if (registration.projectId) {\n registration.projectName = registration.projectId;\n }\n }\n\n });\n $scope.totalValues = data.total;\n params.total(data.total); // recal. page nav controls\n return data.values;\n });\n }\n $scope.buildColumns = function (datasource) {\n $scope.columns = [\n {\n title: $translate.instant(\"COMMON_DATE\"),\n field: 'valueDate',\n visible: true,\n sortable: 'valueDate',\n getValue: renderValue,\n dataType: \"date\"\n },\n {\n title: $translate.instant(\"COMMON_REGISTRATION\"),\n field: 'registrationDate',\n visible: true,\n sortable: 'registrationDate',\n getValue: renderValue,\n dataType: \"timestamp\"\n },\n {\n title: $translate.instant(\"COMMON_VALUE\"),\n field: 'value',\n sortable: 'value',\n getValue: renderValue,\n visible: true,\n dataType: \"text\"\n }\n ];\n var listIndex = -1;\n if(datasource.elements){\n for (var i = 0; i < datasource.elements.length; i++) {\n var element = datasource.elements[i];\n var dataField = element.sourceColumn;\n if (dataField === \"assetId\") dataField = \"assetName\";\n if (dataField === \"areaId\") dataField = \"areaName\";\n if (dataField === \"projectId\") dataField = \"projectName\";\n $scope.columns.push({\n title: element.label,\n field: dataField,\n getValue: renderValue,\n visible: true,\n sortable: dataField,\n dataType: element.type,\n sourceColumn: element.sourceColumn\n });\n }\n } \n }\n\n function renderValue($scope, row) {\n var item = this;\n var field = item.field;\n var value = row[field];\n if (this.dataType === \"date\") {\n return $sce.trustAsHtml(``)\n //return $filter('date')(value, \"dd.MM.yyyy\");\n }\n if (this.dataType === \"timestamp\") {\n return $sce.trustAsHtml(``)\n //return $filter('date')(value, \"dd.MM.yyyy HH:mm:ss\");\n }\n if (this.dataType === \"bool\") {\n if (value === \"true\") {\n return \"\";\n } else {\n return \"\";\n }\n } if (this.dataType === \"user\") {\n var user = $filter('filter')($scope.allUsers, { userId: value }, true);\n if (user.length > 0) {\n return user[0].fullName;\n }\n }\n if (this.dataType === \"list\") {\n var listitem = $filter('filter')($scope.dataLists[this.sourceColumn], { id: parseInt(value) }, true);\n if (listitem.length > 0) {\n return listitem[0].name;\n }\n }\n return value;\n }\n\n $scope.registerData = function () {\n var settings = {\n dataSource: $scope.dataSource,\n filters: $scope.filters,\n timePeriod: $scope.timePeriod\n };\n\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'registrationDialog.html',\n controller: 'registrationDialogController',\n windowClass: 'fixedwidth-modal-window',\n resolve: {\n componentSettings: function () {\n return settings;\n }\n }\n });\n modalInstance.result.then(function (result) {\n $scope.getLatestValues();\n });\n };\n\n $scope.close = function () {\n $uibModalInstance.dismiss('cancel');\n }\n\n }]);","import toaster from \"@common/components/toast\";\nangular\n .module('DigiLean')\n .directive(\"countdown\", ['$interval', '$translate',\n function ($interval, $translate) {\n return {\n templateUrl: 'countdown.html',\n restrict: 'E',\n scope: {\n 'settings': '='\n },\n link: function (scope, element, attrs) {\n scope.hours = \"..\";\n scope.minutes = \"..\";\n scope.seconds = \"..\";\n\n scope.countdownMinutes = 15;\n\n scope.showHours = false;\n scope.showMinutes = true;\n scope.showSeconds = true;\n\n scope.nearTheEnd = false;\n scope.isCountdownFinished = false;\n scope.isCounting = false;\n var stopTime,\n countDownTime; // so that we can cancel the time updates\n\n scope.$watch(\"settings\", function () {\n var test = scope.settings;\n if(scope.settings && scope.settings.countdownMinutes){\n scope.countdownMinutes = scope.settings.countdownMinutes;\n }\n scope.nearTheEnd = false;\n scope.isCountdownFinished = false;\n currentSeconds = scope.countdownMinutes * 60;\n updateCountDown();\n });\n\n var currentSeconds = 0;\n scope.startCountDown = function () {\n scope.isCounting = true;\n scope.nearTheEnd = false;\n currentSeconds = scope.countdownMinutes * 60;\n updateCountDown();\n scope.showHours = false;\n scope.showMinutes = true;\n scope.showSeconds = true;\n $interval.cancel(stopTime);\n countDownTime = $interval(countDown, 1000);\n }\n\n function countDown() {\n if (currentSeconds <= 30) {\n scope.nearTheEnd = true;\n }\n if (currentSeconds < 0) {\n scope.isCountdownFinished = true;\n scope.isCounting = false;\n $interval.cancel(countDownTime);\n // DisplayAlert\n var alertText = scope.countdownMinutes + $translate.instant(\"NAV_CLOCK_COUNTDOWN_FINISHED_TEXT\");\n toaster.error(alertText, $translate.instant(\"NAV_CLOCK_COUNTDOWN_FINISHED\"))\n return;\n }\n updateCountDown();\n currentSeconds -= 1;\n }\n\n function updateCountDown() {\n var minutes = Math.floor(currentSeconds / 60);\n var seconds = currentSeconds - minutes * 60;\n scope.minutes = addLeadingZero(minutes);\n scope.seconds = addLeadingZero(seconds);\n }\n\n function startClock() {\n scope.showHours = true;\n scope.showMinutes = true;\n scope.showSeconds = false;\n $interval.cancel(countDownTime);\n stopTime = $interval(updateTime, 1000);\n }\n\n\n function addLeadingZero(val) {\n if (val < 10) return \"0\" + val;\n return val;\n }\n\n\n function updateTime() {\n var now = moment();\n scope.hours = addLeadingZero(now.hours());\n scope.minutes = addLeadingZero(now.minutes());\n scope.seconds = addLeadingZero(now.seconds());\n }\n\n element.on('$destroy', function () {\n $interval.cancel(countDownTime);\n $interval.cancel(stopTime);\n });\n\n }\n }\n }]);\n","import * as assetService from \"@common/services/assetService\"\nimport \"./assetSelectorDropdown.css\"\nangular\n .module('DigiLean')\n .directive(\"assetSelectorDropdown\", ['$filter',\n function ($filter) {\n return {\n templateUrl: 'assetSelectorDropdown.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'userid': '=', //Fjerne denne?\n 'ismandatory': '=',\n 'changeHandler': '&',\n 'allowBunitSelect': '<'\n },\n link: function (scope, elem, attrs) {\n scope.displayName = \"\";\n scope.assets = null;\n scope.asset = null;\n\n scope.$watch(\"model\", function () {\n if(scope.model && scope.model.assets){\n scope.assets = scope.model.assets\n setCssLevel()\n } \n if(scope.model && scope.model.assetId){\n if(!scope.assets){\n assetService.getList().then(function (assets) {\n scope.assets = assets;\n setCssLevel()\n setAsset(scope.model.assetId)\n })\n } else {\n setAsset(scope.model.assetId)\n }\n } else {\n scope.asset = null;\n }\n });\n\n function setCssLevel() {\n for (var k = 0; k < scope.assets.length; k++) {\n scope.assets[k].cssLevel = \"level-\" + scope.assets[k].level\n }\n }\n function setAsset(assetId){\n var asset = scope.assets.find(a => a.id == assetId)\n if (asset)\n scope.asset = asset\n }\n \n\n scope.selectAsset = function (asset, $event) {\n if (!scope.allowBunitSelect && asset.assetType == \"BUSINESSUNIT\") {\n $event.preventDefault()\n $event.stopPropagation()\n return false\n }\n\n scope.asset = asset;\n if(asset){\n scope.assetid = asset.id;\n } else {\n scope.assetid = null;\n }\n var updateinfo = {\n model: scope.model,\n asset: scope.asset\n } \n scope.changeHandler({assetinfo: updateinfo})\n };\n }\n }\n }]);","import angular from \"angular\"\nimport { DigiLeanNgScope } from \"@common/model/angularModel\"\nimport { Asset, AssetRoleType, AssetUser, UserShortInfo } from \"@api\"\n\ninterface IMultiAssetSelectorScope extends DigiLeanNgScope {\n users: (UserShortInfo|AssetUser)[]\n selectedAssets: Asset[]\n //assets: Asset[]\n headline: any\n //add: (asset: Asset) => void\n //remove: (asset: Asset) => void\n ok: () => void\n cancel: () => void\n}\n\nconst DigiLean = angular.module('DigiLean')\nDigiLean.controller('assetMultiSelectorController', ['$scope', '$uibModalInstance', 'assets',\n function ($scope: IMultiAssetSelectorScope, $uibModalInstance, assets: Asset[]) {\n\n $scope.assets = assets\n function initialize() {\n if (Array.isArray($scope.assets)){\n $scope.selectedAssets = $scope.assets.filter(a => a.filteredAndInResultList === true)\n }\n }\n initialize()\n\n $scope.add = function (asset) {\n asset.filteredAndInResultList = true;\n $scope.selectedAssets.unshift(asset)\n }\n\n $scope.remove = function (asset) {\n const matchingAsset = $scope.selectedAssets.find(p => p.id == asset.id)\n if (matchingAsset) {\n const matchingAsset = $scope.assets.find(p => p.id == asset.id)\n if (matchingAsset) {\n matchingAsset.filteredAndInResultList = false\n }\n }\n\n const matchingSelectedAsset = $scope.selectedAssets.find(p => p.id == asset.id)\n if (matchingSelectedAsset) {\n const i = $scope.selectedAssets.indexOf(matchingSelectedAsset)\n $scope.selectedAssets.splice(i, 1)\n }\n }\n\n $scope.clearFilter = function () {\n $scope.selectedAssets = [];\n $scope.assets.forEach(a => a.filteredAndInResultList = false)\n }\n\n $scope.ok = function () {\n $uibModalInstance.close($scope.assets)\n }\n\n\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel')\n }\n }])","import * as profileService from \"@common/services/user/profileService\"\nimport * as customerService from \"@common/services/customers/customerService\"\nimport { UserProfileImageInfo, UserShortInfo } from \"@api\"\nimport { userFullProfile } from \"@common/stores/userStore\"\n\nexport interface UserShortInfoWithImage extends UserShortInfo {\n profileImage?: boolean\n profileImageUrl?: string | null\n}\ntype ThumbnailSizes = \"ExtraSmall\" | \"Small\" |\"Medium\" |\"Large\"\n\nlet profileImageUsers: UserProfileImageInfo[] = []\nuserFullProfile.subscribe(async (u) => {\n if (u.user)\n profileImageUsers = await profileService.getUsersWithProfileImage() // cache\n})\n\nexport async function getAllUsersIncludeProfileImage() {\n profileImageUsers = await profileService.getUsersWithProfileImage()\n const allusers:UserShortInfoWithImage[] = await customerService.getAllUsers()\n\n return getProfileImagesForUsers(allusers)\n}\n\nexport async function getProfileImagesForUsers(users: UserShortInfoWithImage[]) {\n for (let i = 0; i < users.length; i++) {\n let user = users[i]\n let imageUrl = await getProfileImageUrl(user.id, \"ExtraSmall\")\n if (imageUrl) {\n user.profileImage = true\n user.profileImageUrl = imageUrl\n } else {\n user.profileImage = false\n }\n }\n return users\n}\n\nexport async function getProfileImageUrl(userId: string, imageSize: ThumbnailSizes) {\n profileImageUsers = await profileService.getUsersWithProfileImage()\n const user = profileImageUsers.find(p => p.userId == userId)\n if (user)\n return formatProfileImageUrl(user.storageUrl, imageSize, user.fileName)\n \n return null;\n}\n\nfunction formatProfileImageUrl(storageUrl: string, size: ThumbnailSizes, fileName: string) {\n if (!storageUrl.endsWith(\"/\"))\n storageUrl = `${storageUrl}/`\n\n return `${storageUrl}${size}-${fileName}`\n}","import * as customerService from \"@common/services/customers/customerService\"\nimport * as profileImageService from \"@common/services/user/profileImageService\"\n\nangular\n .module('DigiLean')\n .directive(\"userSelectorDropdown\", ['taskDrawingService',\n function (taskDrawingService) {\n return {\n templateUrl: 'userSelectorDropdown.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'userid': '=',\n 'name': '=',\n 'userChangeHandler': '&',\n },\n link: function (scope, elem, attrs) {\n scope.displayName = \"\";\n scope.users = null;\n scope.user = null;\n\n scope.showname = \"full\";\n\n scope.$watch(\"userid\", async function () {\n\n if (!scope.users) {\n scope.users = await profileImageService.getAllUsersIncludeProfileImage()\n if (!scope.userid) {\n scope.user = null;\n return;\n } else {\n scope.user = scope.users.find(u => u.userId == scope.userid);\n }\n\n } else if (scope.userid) {\n scope.user = scope.users.find(u => u.userId == scope.userid);\n } else if (!scope.userid) {\n scope.user = null;\n }\n });\n\n scope.$watch(\"name\", function () {\n if(scope.name){\n scope.showname = scope.name;\n } \n });\n\n scope.selectUser = function (user) {\n scope.user = user;\n if (user) {\n scope.userid = user.userId;\n } else {\n scope.userid = null;\n }\n var updateduserinfo = {\n model: scope.model,\n user: scope.user\n }\n scope.userChangeHandler({ userinfo: updateduserinfo })\n };\n }\n }\n }]);","import * as timeService from \"@common/services/timeService\"\nimport * as boardService from \"@common/services/boardService\"\n\nangular\n .module('DigiLean')\n .directive(\"boardTaskSelectorDropdown\", ['$filter', 'boardTaskService',\n function ($filter, boardTaskService) {\n return {\n templateUrl: 'boardTaskSelectorDropdown.html',\n restrict: 'E',\n scope: {\n 'task': '=',\n 'boards': '=',\n 'options': '='\n \n /*'userChangeHandler': '&',*/\n },\n link: function (scope, elem, attrs) {\n\n //scope.boards = [];\n scope.boardSelectedIsMandatory = false;\n\n scope.$watch(\"task\", function () {\n setBoard();\n });\n\n scope.$watch(\"boards\", function () {\n setBoard(); \n });\n\n scope.$watch(\"options\", function () {\n if(scope.options){\n if(scope.options.mandatory){\n scope.boardSelectedIsMandatory = true;\n }\n } \n });\n\n function setBoard() {\n if (scope.task && scope.task.boardId && scope.boards) {\n const match = scope.boards.find(t => t.id == scope.task.boardId)\n if (match) {\n scope.task.board = match\n }\n }\n }\n scope.clearBoard = function (task) {\n\n var change = {\n taskId: task.id,\n fromBoardId: task.boardId === null ? 0 : task.boardId,\n toBoardId: 0\n };\n task.boardId = null;\n task.board = null;\n\n task.isActionItem = false;\n task.rowCategoryId = null;\n task.columnCategoryId = null;\n\n boardTaskService().updateBoard(task.id, change).then(function (result) {\n scope.publish(\"SendTaskChangedBoard\", change);\n });\n }\n\n scope.selectBoard = function (task, board, $event) {\n if(!(board.boardType == 'Yearly' && task.boardId == board.id)){\n task.newBoardSelected = true;\n scope.columns = null;\n scope.selectedColumn = null;\n scope.rows = null;\n scope.selectedRow = null;\n }\n\n if(!(board && board.boardType == 'SmartActionList')){\n $event.stopPropagation();\n } else {\n task.newBoardSelected = false;\n }\n\n if (task.boardId !== board.id) {\n\n \n var change = {\n taskId: task.id,\n fromBoardId: task.boardId === null ? 0 : task.boardId,\n toBoardId: board.id === null ? 0 : board.id\n };\n\n\n task.boardId = board.id;\n setBoard(task);\n if(board.boardType == 'Yearly'){\n placeTaskInYearlyBoard(task);\n task.showColumnRow = true;\n }\n else {\n if (task.id == 0) return; //this task is not saved yet, no need to update board\n if (board.id) {\n boardTaskService().updateBoard(task.id, change).then(function (result) {\n scope.publish(\"SendTaskChangedBoard\", change);\n \n });\n } else {\n boardTaskService().moveTaskToPersonalBoard(task.id).then(function (result) {\n scope.publish(\"SendTaskChangedBoard\", change);\n });\n }\n }\n }\n\n }\n\n function placeTaskInYearlyBoard(task){\n boardService.getBoardCategories(task.boardId).then(function (data) {\n\n angular.forEach(data.rows, function (row) {\n if (row.responsibleUserId) {\n row.displayName = row.name + \" (\" + row.responsibleDisplayName + \")\";\n } else {\n row.displayName = row.name;\n }\n });\n scope.columns = data.columns;\n task.selectedColumn = data.columns[0];\n scope.rows = data.rows;\n task.selectedRow = data.rows[0];\n //mapDateToColumn(task);\n //mapDateToRow(task);\n //mapResponsibleToColumn(task);\n mapResponsibleToRow(task);\n scope.moveTaskToRowColumn(task); //place task in first row as default placement since no action list is available for a yearly board\n });\n }\n var mapDateToRow = function (task) {\n if (!scope.rows || scope.rows.length == 0) return;\n if (!task.boardDate) return;\n\n // Try to select correct row\n angular.forEach(scope.rows, function (row) {\n if (row.weekdayName && (row.weekdayName == timeService.getWeekDayNameFromDate(task.boardDate))) {\n task.selectedRow = row;\n }\n });\n }\n var mapDateToColumn = function (task) {\n if (!scope.columns || scope.columns.length == 0) return;\n if (!task.boardDate) return;\n\n // Try to select correct row\n angular.forEach(scope.columns, function (column) {\n if (column.weekdayName && (column.weekdayName == timeService.getWeekDayNameFromDate(task.boardDate))) {\n task.selectedColumn = column;\n }\n });\n }\n var mapResponsibleToColumn = function (task) {\n if (!scope.columns || scope.columns.length == 0) return;\n if (!task.responsibleUserId) return;\n\n // Try to select correct row\n angular.forEach(scope.columns, function (column) {\n if (column.responsibleUserId == task.responsibleUserId) {\n task.selectedColumn = column;\n }\n });\n }\n var mapResponsibleToRow = function (task) {\n if (!scope.rows || scope.rows.length == 0) return;\n if (!task.responsibleUserId) return;\n\n // Try to select correct row\n angular.forEach(scope.rows, function (row) {\n if (row.responsibleUserId == task.responsibleUserId) {\n task.selectedRow = row;\n }\n });\n }\n scope.placeTaskInBoard = function (task) {\n\n task.showColumnRow = true;\n boardService.getBoardCategories(task.boardId).then(function (data) {\n\n angular.forEach(data.columns, function (column) {\n if (column.responsibleUserId) {\n column.displayName = column.name + \" (\" + column.responsibleDisplayName + \")\";\n } else {\n column.displayName = column.name;\n }\n\n\n });\n angular.forEach(data.rows, function (row) {\n if (row.responsibleUserId) {\n row.displayName = row.name + \" (\" + row.responsibleDisplayName + \")\";\n } else {\n row.displayName = row.name;\n }\n });\n scope.columns = data.columns;\n task.selectedColumn = data.columns[0];\n scope.rows = data.rows;\n task.selectedRow = data.rows[0];\n mapDateToColumn(task);\n mapDateToRow(task);\n mapResponsibleToColumn(task);\n mapResponsibleToRow(task);\n });\n }\n\n scope.moveTaskToRowColumn = function (task) {\n task.isActionItem = false;\n var rowId = 0;\n var columnId = 0;\n if (task.selectedRow && task.selectedRow.id) {\n rowId = task.selectedRow.id;\n }\n if (task.selectedColumn && task.selectedColumn.id) {\n columnId = task.selectedColumn.id;\n }\n if (task.id !== 0) { // skip this if task is new\n var actionItemToTask = {\n id: task.id,\n boardId: task.boardId,\n boardDate: task.boardDate,\n rowCategoryId: rowId,\n columnCategoryId: columnId\n };\n boardTaskService().moveActionItemToTask(actionItemToTask).then(function (task) {\n scope.publish(\"SendActionItemMovedToTask\", task);\n task.newBoardSelected = false;\n task.showColumnRow = false;\n });\n }\n }\n\n }\n }\n }]);","import type { TemplateResult } from \"lit\"\n\nexport const html = String.raw\n\nexport const tag = (strings: TemplateStringsArray, ...values: unknown[]): TemplateResult<1> => {\n return {\n ['_$litType$']: 1,\n strings,\n values,\n }\n}\n\nexport const convertStringToLiteral = (str: string) => {\n let open = 0\n let close = 0\n let counter = 0\n let i = 0\n let length = str.length\n let stringsTemp = i < length ? [] : ['\"\"']\n \n let values: string[] = []\n \n while (i < length) {\n open = str.indexOf('${', i)\n if (-1 < open) {\n stringsTemp.push(str.slice(i, open))\n open += 2;\n close = open;\n counter = 1;\n while (close < length) {\n switch (str.charAt(close++)) {\n case '}': --counter; break\n case '{': ++counter; break\n }\n if (counter < 1) {\n values.push(str.slice(open, close - 1))\n break\n }\n }\n i = close\n } else {\n stringsTemp.push(str.slice(i))\n i = length\n }\n }\n if (stringsTemp.length === values.length)\n stringsTemp.push('\"\"')\n \n let strings = stringsTemp\n ///@ts-ignore\n strings.raw = stringsTemp\n\n const stringRaw = String.raw({raw:stringsTemp})\n console.log(stringRaw)\n return { \"_$litType$\": 1, strings, values }\n}\n\nexport const convertStringToLiteralModel = (str: string, model: any) => {\n let open = 0\n let close = 0\n let counter = 0\n let i = 0\n let length = str.length\n let stringsTemp = i < length ? [] : ['\"\"']\n \n let values: string[] = []\n \n while (i < length) {\n open = str.indexOf('${', i)\n if (-1 < open) {\n stringsTemp.push(str.slice(i, open))\n open += 2;\n close = open;\n counter = 1;\n while (close < length) {\n switch (str.charAt(close++)) {\n case '}': --counter; break\n case '{': ++counter; break\n }\n if (counter < 1) {\n let propName = str.slice(open, close - 1)\n let propValue = model[propName] ?? \"\"\n values.push(propValue)\n break\n }\n }\n i = close\n } else {\n stringsTemp.push(str.slice(i))\n i = length\n }\n }\n if (stringsTemp.length === values.length)\n stringsTemp.push('\"\"')\n \n let strings = stringsTemp\n ///@ts-ignore\n strings.raw = stringsTemp\n return { \"_$litType$\": 1, strings, values }\n}\n\nexport const convertStringToLiteralModelGen = (str: string, model: any) => {\n\n let div = document.createElement(\"div\")\n div.innerHTML = str\n\n const dataElements = div.querySelectorAll('[data-ref]') as NodeListOf\n dataElements.forEach(el => {\n const ref = el.dataset.ref as string\n el.setAttribute(\"name\", ref)\n el.setAttribute(\"value\", \"${\"+ref+\"}\")\n })\n\n const newHtmlStr = div.innerHTML\n return convertStringToLiteralModel(newHtmlStr, model)\n}\n\nexport const getInputsRecursive = (elements: HTMLCollection) => {\n let inputs: HTMLInputElement[] = []\n\n for (let i = 0; i< elements.length; i++) {\n let el = elements[i] as HTMLInputElement\n if (el.hasAttribute(\"value\") || el.value)\n inputs.push(el as HTMLInputElement)\n else if (el.shadowRoot && el.shadowRoot.children && el.shadowRoot.children.length > 0) {\n const shEls = getInputsRecursive(el.shadowRoot.children)\n inputs.push(...shEls)\n }\n }\n return inputs\n}","const digiLeanDateFormat = \"dd.MM.yyyy\"\nconst usDateFormat = \"MM/dd/yyyy\"\n\nexport const browserlang = navigator.language\nexport const isEnUs = browserlang.toLowerCase() === \"en-us\"\n\nexport const dateFormat = isEnUs ? usDateFormat : digiLeanDateFormat\nexport const timeFormat = \"HH:mm\"\nexport const dateTimeFormat = `${dateFormat} ${timeFormat}`","import angular from \"angular\"\nimport {html} from \"@common/services/template/templateLiteral\"\nimport {dateFormat} from \"@common/services/datetime/dateTimeService\"\nimport { NgComponent } from \"@common/model/angularModel\"\nimport '@common/shared/dates/datePicker.css'\n\nconst DigiLean = angular.module(\"DigiLean\")\nDigiLean.component(\"datePicker\", \n{\n bindings: {\n 'isDisabled': '<',\n 'dateValue': '<',\n 'defaultOpen': '<'\n },\n controller: ['$element', function(this: NgComponent, $element) {\n let $ctrl = this\n let observer:IntersectionObserver | null \n $ctrl.state = { opened: false }\n\n const handleIntersect = (entries, observer) => {\n for (const entry of entries) {\n // if default-open is set, then observe and open when visible\n if (entry.isIntersecting) {\n if ($ctrl.defaultOpen)\n $ctrl.state.opened = true\n }\n else {\n if ($ctrl.state.opened)\n $ctrl.state.opened = false\n }\n }\n }\n\n $ctrl.$onInit = function() {\n observer = new IntersectionObserver(handleIntersect)\n observer.observe($element[0])\n }\n $ctrl.$onDestroy = function() {\n if (observer) {\n observer.disconnect()\n }\n }\n // @ts-ignore\n $ctrl.format = dateFormat\n \n $ctrl.dateOptions = {\n startingDay: 1 //ISO week\n }\n\n $ctrl.open = function($event) {\n $ctrl.state.opened = true\n $event.stopPropagation()\n }\n\n $ctrl.dateUpdated = function() {\n dispatchDateChangedEvent()\n }\n function dispatchDateChangedEvent() {\n const options = {\n detail: $ctrl.dateValue,\n bubbles: true,\n composed: true\n }\n $element[0].dispatchEvent(new CustomEvent(\"date-changed\", options))\n }\n }],\n template: html`\n
      \n \n \n
      \n `\n})","import angular from \"angular\"\nimport {html} from \"@common/services/template/templateLiteral\"\nimport '@common/shared/dates/datePicker.css'\nimport { NgComponent } from \"@common/model/angularModel\"\n\nconst DigiLean = angular.module(\"DigiLean\")\nDigiLean.component(\"datePickerSlot\", \n{\n transclude: true,\n bindings: {\n 'isDisabled': '<',\n 'dateValue': '<',\n },\n controller: ['$element', function(this: NgComponent, $element) {\n let $ctrl = this\n \n $ctrl.dateOptions = {\n startingDay: 1 //ISO week\n }\n\n $ctrl.open = function($event) {\n $ctrl.state.opened = true\n $event.stopPropagation()\n }\n\n $ctrl.state = { opened: false }\n\n $ctrl.dateUpdated = function() {\n dispatchDateChangedEvent()\n }\n function dispatchDateChangedEvent() {\n const options = {\n detail: $ctrl.dateValue,\n bubbles: true,\n composed: true\n }\n $element[0].dispatchEvent(new CustomEvent(\"date-changed\", options))\n }\n }],\n template: html`\n \n \n `\n})","import angular from \"angular\"\nimport * as customerService from \"@common/services/customers/customerService\"\nimport \"./customerLookup.css\"\nimport { NgComponent } from \"@common/model/angularModel\"\nimport { CustomerListModel } from \"@api\"\n\ninterface ICustomerLookup extends NgComponent {\n customers: CustomerListModel[]\n}\n\nangular.module('DigiLean')\n .component(\"customerLookup\", {\n // bindings: {\n // 'file': '<',\n // },\n controller: ['$element', \n function (this: ICustomerLookup, $element) {\n const $ctrl = this\n\n $ctrl.selectedCustomerText = \"None selected\"\n // $ctrl.$onDestroy = function() {}\n $ctrl.open = false\n\n $ctrl.toggleDropdown = function() {\n $ctrl.open = !$ctrl.open\n }\n\n $ctrl.searchCustomer = \"\"\n $ctrl.customers = []\n $ctrl.$onInit = function() {\n getCustomers()\n }\n async function getCustomers() {\n $ctrl.customers = await customerService.getCustomersSimpleForAdmin()\n }\n $ctrl.selectCustomer = function(customer: CustomerListModel) {\n $ctrl.selectedCustomerText = `${customer.name} (${customer.id})`\n const options = {detail: customer, bubbles: false, composed: true}\n $element[0].dispatchEvent(new CustomEvent(\"customer-changed\", options))\n $ctrl.toggleDropdown()\n }\n\n $ctrl.searchChange = function($event: any) {\n const orgEvt = $event.originalEvent as Event\n const val = (orgEvt.target as HTMLInputElement).value\n $ctrl.searchCustomer = val\n }\n }\n ],\n templateUrl: 'customerLookup.html'\n })\n","import Dropzone from \"dropzone\";\nimport { getAuthUser } from \"@common/stores/userStore\"\nimport envConfig from \"@common/envConfig\";\n\nangular\n .module('DigiLean')\n .directive(\"dropzone\", ['$filter',\n function ($filter) {\n return {\n restrict: 'A',\n scope: {\n 'uploadedfiles': '=',\n 'autoUpload': '=',\n 'removeFilesAfterUpload': '=',\n 'fileUploadedHandler': '&',\n 'uploadPath': '@',\n 'isPublic': '@?',\n 'toDigiLean': '@?',\n },\n link: function (scope, element, attrs) {\n var dropzone;\n const authUser = getAuthUser()\n \n let uploadUrl = envConfig.webApiUrl + \"/document/PostBlobUpload/\"\n if (scope.isPublic) {\n uploadUrl = envConfig.webApiUrl + \"/document/PostPublicBlobUpload\";\n } else if (scope.toDigiLean) {\n uploadUrl = envConfig.webApiUrl + \"/document/PostBlobUploadDigiLean\"\n }\n\n Dropzone.autoDiscover = false;\n if (scope.uploadPath) {\n uploadUrl = envConfig.webApiUrl + scope.uploadPath;\n }\n var config = {\n url: uploadUrl,\n maxFilesize: 100,\n paramName: \"uploadfile\",\n maxThumbnailFilesize: 8,\n uploadMultiple: true,\n autoProcessQueue: scope.autoUpload,\n withCredentials: true,\n maxFiles: 10,\n headers: {\n 'Authorization': 'Bearer ' + authUser.token\n }\n };\n\n scope.$watch('uploadedfiles', function (files) {\n if (uploadedFiles && uploadedFiles.length > 0 && (files === null || files.length === 0)) {\n uploadedFiles.forEach(function (file){\n setTimeout(function () {\n dropzone.removeFile(file);\n }, 1000);\n }); \n }\n });\n\n var uploadedFiles = [];\n var eventHandlers = {\n // 'addedfile': function (file) {\n // var t = file;\n // },\n 'success': function (file, response) {\n if (!scope.uploadedfiles) scope.uploadedfiles = [];\n if (response.length > 0) {\n response.forEach(function (file) {\n var exists = $filter('filter')(uploadedFiles, { id: file.id });\n // Make sure we don't save a file more than once\n if (exists.length == 0) {\n // Check\n uploadedFiles.push(file);\n scope.uploadedfiles.push(file);\n if (scope.fileUploadedHandler) {\n scope.fileUploadedHandler({ file: file });\n }\n }\n });\n\n }\n\n // Remove from dropzone, since they have been uploaded\n if (scope.removeFilesAfterUpload) {\n setTimeout(function () {\n dropzone.removeFile(file);\n }, 1000);\n\n }\n\n },\n 'complete': function (file, response) {\n\n }\n };\n\n dropzone = new Dropzone(element[0], config);\n\n // add paste event listener to the page\n document.addEventListener(\"paste\", documentPasteHandler);\n\n angular.forEach(eventHandlers, function (handler, event) {\n dropzone.on(event, handler);\n });\n\n function documentPasteHandler(event) {\n var items = (event.clipboardData || event.originalEvent.clipboardData).items;\n for (var index in items) {\n var item = items[index];\n console.debug(\"file pasted to dropzone\" + item.kind);\n if (item.kind === 'file') {\n // adds the file to your dropzone instance\n dropzone.addFile(item.getAsFile())\n }\n }\n }\n\n scope.processDropzone = function () {\n dropzone.processQueue();\n };\n\n scope.resetDropzone = function () {\n dropzone.removeAllFiles();\n }\n\n scope.$on('$destroy', function () {\n console.debug(\"destroy dropzone\");\n if (document.removeEventListener) { // For all major browsers, except IE 8 and earlier\n document.removeEventListener(\"paste\", documentPasteHandler);\n }\n })\n \n }\n }\n }]);\n","import { BlobInfo, FileInfo } from \"@api\"\nimport backend from \"@common/services/backendHttp\"\nimport { appInsights } from \"@common/services/webclientErrorLogging\"\n\nconst resourceUrl = \"api/document\"\n\nlet cachedFileUrls = {}\n\nfunction tryGetCachedUrl(name, id) {\n const key = name + id;\n const cache = cachedFileUrls[key];\n if (!cache)\n return null;\n let expireDate = new Date(cache.expire);\n let now = new Date();\n if (expireDate > now)\n return cache.data;\n \n Reflect.deleteProperty(cachedFileUrls, key);\n return null;\n}\nfunction addToCache(name, id, data) {\n if (!name || !id || !data) return;\n const key = name + id;\n const expire = getExpireDateFromUrl(data);\n cachedFileUrls[key] = { expire, data };\n}\nfunction getExpireDateFromUrl(url) {\n try {\n const urlObj = new URL(url);\n if (urlObj.searchParams && urlObj.searchParams.has(\"se\")) {\n let expireDate = urlObj.searchParams.get(\"se\");\n return expireDate;\n }\n } catch(e) {\n console.log(e);\n }\n \n let nowPlus9 = new Date();\n nowPlus9.setHours(nowPlus9.getHours() + 9);\n return nowPlus9.toISOString();\n}\n\nexport async function uploadImageToBlobStorageNoPreview(file: Blob) {\n const url = \"api/document/PostImageBlobUploadNoPreview\"\n const res = await backend.postFile(url, file) as Promise\n return res\n}\n\nexport async function uploadFileBlobStorage(file: Blob) {\n if (!file)\n return\n const url = resourceUrl + \"/PostBlobUpload\"\n // backend method supports multiple files thats why it returns array\n const res = await backend.postFile(url, file) as Promise\n return res\n}\n\nexport async function getFileUrl(blobName: string, fileInfoId: string): Promise {\n if (!blobName) {\n appInsights?.trackTrace({ message: `missing blobName, caller`, severityLevel: 2})\n console.error(\"Empty blobName\")\n }\n \n const cachedUrl = tryGetCachedUrl(blobName, fileInfoId)\n if (cachedUrl)\n return cachedUrl\n\n const blobInfo: BlobInfo = {\n blobName,\n fileInfoId\n }\n const url = resourceUrl + \"/GetFileUrl\"\n const fileUrl = await backend.post(url, blobInfo)\n addToCache(blobName, fileInfoId, fileUrl)\n return fileUrl\n}\n\nexport async function getAll() {\n const url = \"api/document\"\n return backend.get(url)\n}\n\nexport async function getFile(id: string) {\n const url = resourceUrl + \"/getFile/\" + id\n return backend.get(url)\n}","import { isEqual, omitBy, isUndefined, transform, omit, isObject, keyBy } from \"lodash\"\n\nexport function fixTransparentText(settings) {\n if (!settings || !settings.theme || !settings.theme.background) return\n if (settings.theme.background == \"transparent\") {\n settings.theme.background = \"var(--digilean-primary-text)\"\n settings.theme.fillColor = \"var(--digilean-secondary-background)\"\n }\n}\n\nexport function isObjectEqual(object1, object2) {\n\n if (!object1 || !object2) \n return isEqual(object1, object2);\n \n const typeOf1 = typeof object1\n const typeOf2 = typeof object2\n\n if (typeOf1 !== 'object' || typeOf2 !== 'object')\n return isEqual(object1, object2)\n\n const copy1 = omitBy(object1, isUndefined)\n const copy2 = omitBy(object2, isUndefined)\n const timePeriod1 = object1.timePeriod;\n const timePeriod2 = object2.timePeriod;\n\n if (timePeriod1 && timePeriod2) {\n const timeframe1 = timePeriod1.timeframe;\n const timeframe2 = timePeriod2.timeframe;\n\n // if both timeframes are custom, compare the from and to dates\n if (timeframe1 === 'custom' && timeframe2 === 'custom') {\n return isEqual(copy1, copy2);\n }\n\n // if both timeframes are customStartDate, compare the from date only \n if (timeframe1 === 'customStartDate' && timeframe2 === 'customStartDate') {\n const removedToCopy1 = deepOmit(copy1, ['to']);\n const removedToCopy2 = deepOmit(copy2, ['to']);\n return isEqual(removedToCopy1, removedToCopy2);\n }\n\n // if both timeframes are customEndDate, compare the to date only\n if (timeframe1 === 'customEndDate' && timeframe2 === 'customEndDate') {\n const removedFromCopy1 = deepOmit(copy1, ['from']);\n const removedFromCopy2 = deepOmit(copy2, ['from']);\n return isEqual(removedFromCopy1, removedFromCopy2);\n }\n }\n\n const removedFromToCopy1 = deepOmit(copy1, ['from', 'to']);\n const removedFromToCopy2 = deepOmit(copy2, ['from', 'to']);\n return isEqual(removedFromToCopy1, removedFromToCopy2);\n}\n\nexport function deepOmit(obj, keysToOmit) {\n var keysToOmitIndex = keyBy(Array.isArray(keysToOmit) ? keysToOmit : [keysToOmit] ); // create an index object of the keys that should be omitted\n \n function omitFromObject(obj) { // the inner function which will be called recursivley\n return transform(obj, function(result, value, key) { // transform to a new object\n if (key in keysToOmitIndex) { // if the key is in the index skip it\n return;\n }\n \n result[key] = isObject(value) ? omitFromObject(value) : value; // if the key is an object run it through the inner function - omitFromObject\n })\n }\n \n return omitFromObject(obj); // return the inner function result\n }","import * as documentService from \"@common/services/documentService\"\nimport { getFileType } from \"@common/services/filesService\"\n\nangular\n .module('DigiLean')\n .directive(\"fileinfo\", ['$filter', '$uibModal',\n function ($filter, $uibModal) {\n return {\n templateUrl: 'fileinfo.html',\n restrict: 'E',\n scope: {\n 'file': '<',\n },\n link: function (scope, elem, attrs) {\n\n scope.fileClone = {}\n scope.$watch('file', async function (file) {\n // apply\n if (!file)\n return\n\n const fileType = getFileType(file.fileExtension)\n if (fileType) {\n file.fileType = fileType.type\n }\n\n scope.fileClone = structuredClone(file)\n const fileUrl = await documentService.getFileUrl(file.fileName, file.id)\n scope.fileClone.fileUrl = fileUrl\n scope.fileClone.validFileUrl = fileUrl\n })\n }\n }\n }])\n","import * as documentService from \"@common/services/documentService\"\nimport { getFileType } from \"@common/services/filesService\"\n\nangular.module('DigiLean')\n .component(\"imagefileinfo\", {\n templateUrl: 'imagefileinfo.html',\n bindings: {\n 'file': '<',\n },\n controller: ['$element', 'Lightbox', \n function ($element, Lightbox) {\n const $ctrl = this\n let observer\n \n const handleIntersect = (entries, observer) => {\n for (const entry of entries) {\n if (entry.isIntersecting) {\n applyFile($ctrl.file)\n observer.unobserve(entry.target)\n }\n }\n }\n\n $ctrl.fileInfoId = \"\"\n $ctrl.$onInit = function() {\n observer = new IntersectionObserver(handleIntersect)\n observer.observe($element[0])\n }\n \n \n async function applyFile(file) {\n if (!file)\n return;\n\n file.validFileUrl = \"https://digileanfiles.blob.core.windows.net/public-assets/images/Loading_icon.gif\" // Default loading image, will be replaced with actual image\n\n const fileType = getFileType(file.fileExtension)\n\n $ctrl.fileInfoId = file.id ?? file.fileId\n\n if (fileType && fileType.type == \"image\") {\n file.fileType = fileType.type\n\n const blobNameThumbnail = \"tn_\" + file.fileName\n \n const fileUrlThumbnail = await documentService.getFileUrl(blobNameThumbnail, $ctrl.fileInfoId)\n if (fileUrlThumbnail) {\n file.fileUrl = fileUrlThumbnail\n file.validFileUrl = fileUrlThumbnail\n\n } else { // Doesn't have thumbnail so try to load original\n const fileUrl = await documentService.getFileUrl(file.fileName, $ctrl.fileInfoId)\n file.fileUrl = fileUrl\n file.validFileUrl = fileUrl\n }\n \n }\n\n }\n\n $ctrl.openLightboxModal = async function () {\n const fileUrl = await documentService.getFileUrl($ctrl.file.fileName, $ctrl.fileInfoId)\n var images = [\n {\n 'url': fileUrl,\n 'thumbUrl': $ctrl.file.validFileUrl\n }\n ]\n Lightbox.openModal(images, 0)\n }\n\n $ctrl.$onDestroy = function() {\n if (observer)\n observer.disconnect()\n }\n }]\n })\n","import * as documentService from \"@common/services/documentService\"\n\nangular\n .module('DigiLean')\n .directive(\"videofileinfo\", function () {\n return {\n templateUrl: 'videofileinfo.html',\n restrict: 'E',\n scope: {\n 'file': '=',\n },\n link: function (scope, elem, attrs) {\n\n var viewerFileExtensions = [\n { type: 'video', extension: '.mp4' },\n ];\n\n scope.$watch('file', function (file) {\n // apply\n if (!file) return;\n file.validFileUrl = \"https://digileanfiles.blob.core.windows.net/public-assets/images/Loading_icon.gif\"; // Default loading image, will be replaced with actual image\n var fileType = viewerFileExtensions.find(ve => ve.extension == file.fileExtension.toLowerCase());\n if (fileType && fileType.type == \"video\") {\n file.fileType = fileType.type;\n documentService.getFileUrl(file.fileName, file.id).then(function (fileUrl) {\n file.fileUrl = fileUrl;\n file.validFileUrl = fileUrl;\n });\n }\n\n });\n }\n }\n });\n","// Controller to load correct board => based on type\nimport envConfig from \"@common/envConfig\"\nimport * as boardService from \"@common/services/boardService\"\nimport { fixTransparentText } from \"@common/services/helperLib\"\n\nvar DigiLean = angular.module('DigiLean');\nDigiLean.controller('boardResolverController', ['$scope', '$stateParams',\n function ($scope, $stateParams) {\n $scope.boardid = parseInt($stateParams.id);\n $scope.isAdminMode = false;\n if ($stateParams.mode && $stateParams.mode == \"admin\") {\n $scope.isAdminMode = true;\n }\n $scope.isLoading = true;\n $scope.boardData = null;\n $scope.projectid = null;\n $scope.showProjectMilestone = false;\n $scope.isInTeams = false;\n if (envConfig.isTeamsMode) {\n $scope.isInTeams = true;\n }\n\n // Teams specific\n $scope.isConfigurableTab = false\n const params = new URLSearchParams(window.location.search)\n if (params.has(\"context\")) {\n const context = params.get(\"context\")\n $scope.isConfigurableTab = context == \"configTab\"\n }\n\n var actionListSettings = {\n boardId: $scope.boardid,\n showAddButton: true,\n showAggregateSum: true,\n };\n\n $scope.options = {\n fixedHeader: true\n };\n\n $scope.yearlyBoardOptions = {\n showTeamMembers: true,\n showHeader: true\n };\n boardService.get($scope.boardid).then(function (board) {\n $scope.boardData = board;\n if ($scope.boardData.board.asset) {\n $scope.projectid = $scope.boardData.board.asset.projectId;\n if ($scope.projectid) {\n $scope.showProjectMilestone = true;\n }\n $scope.assetId = $scope.boardData.board.asset.id;\n }\n\n\n var settings;\n if (board.board.settings) {\n actionListSettings = JSON.parse(board.board.settings);\n fixTransparentText(actionListSettings)\n settings = actionListSettings;\n };\n actionListSettings.boardId = $scope.boardid;\n actionListSettings.title = $scope.boardData.board.name;\n $scope.actionListSettings = actionListSettings;\n $scope.boardType = board.board.boardType;\n if (!$scope.boardType) {\n $scope.boardType = \"Default\"\n // CHeck if weekly board\n if (settings && settings.IsWeeklyBoard) {\n board.board.boardType = \"Weekly\"\n }\n }\n if ($scope.boardType == \"3C\" || $scope.boardType == \"ActionList\") {\n $scope.options = {\n boardId: $scope.boardid,\n isStandAlone: true\n };\n }\n $scope.isLoading = false;\n $scope.$apply();\n })\n }]);","import swal from 'sweetalert';\nimport toaster from \"@common/components/toast\"\n\nangular.module(\"DigiLean\").service('errorHandling', ['$translate',\n function($translate) {\n\n let noAccessLabel = \"No access\"\n\n this.handleForbidden = function(rejection) {\n let url = \"\"\n noAccessLabel = $translate.instant('COMMON_NO_ACCESS')\n if (rejection.config && rejection.config.url)\n url = rejection.config.url\n if (url.includes(\"board\"))\n alertNoAccess()\n else\n toaster.error(noAccessLabel);\n };\n\n function alertNoAccess() {\n swal({\n title: noAccessLabel,\n text: $translate.instant('COMMON_NO_ACCESS_BOARD'),\n icon: \"warning\",\n dangerMode: true,\n closeOnClickOutside: false,\n closeOnEsc: false\n })\n }\n }]);","import { userFullProfile } from \"@common/stores/userStore\"\nimport angular from \"angular\"\nimport { DigiLeanNgScope } from \"@common/model/angularModel\"\n\ninterface iHasModuleDirective extends DigiLeanNgScope{\n hasModule: string\n}\n\nangular\n.module('DigiLean')\n.directive('hasModule', function() {\n return {\n restrict: 'A',\n link: function(scope: iHasModuleDirective, elm, attr) {\n const el = elm[0] as HTMLElement\n if (!el)\n return\n \n const module = attr.hasModule as string\n \n let originalDisplay = el.style.display\n\n let hasModule = false\n let sub = userFullProfile.subscribe(userProfile => {\n if (module) {\n if (userProfile && userProfile.modules && Array.isArray(userProfile.modules)) {\n\n if (userProfile.modules.some(m => m.name === module))\n hasModule = true\n }\n }\n if (!hasModule)\n el.style.display = \"none\"\n else\n el.style.display = originalDisplay\n })\n \n scope.$on('$destroy', function() {\n if (sub)\n sub.unsubscribe()\n })\n }\n }\n})","import { userFullProfile } from \"@common/stores/userStore\"\nimport angular from \"angular\"\nimport { DigiLeanNgScope } from \"@common/model/angularModel\"\nimport { CustomerSubscriptionType } from \"@api\"\n\ninterface iHasSubscriptionDirective extends DigiLeanNgScope{\n hasSubscription: string\n}\n\nangular\n.module('DigiLean')\n.directive('hasSubscription', function() {\n return {\n restrict: 'A',\n link: function(scope: iHasSubscriptionDirective, elm, attr) {\n const el = elm[0] as HTMLElement\n if (!el)\n return\n \n const subscription = attr.hasSubscription as CustomerSubscriptionType\n \n let originalDisplay = el.style.display\n\n let hasSubscription = false\n let sub = userFullProfile.subscribe(userProfile => {\n if (subscription && userProfile) {\n\n if (userProfile.subscription) {\n hasSubscription = userProfile.subscription == subscription\n }\n }\n if (!hasSubscription)\n el.style.display = \"none\"\n else\n el.style.display = originalDisplay\n })\n \n scope.$on('$destroy', function() {\n if (sub)\n sub.unsubscribe()\n })\n }\n }\n})","import { DigiLeanAuthRoles, DigiLeanAuthUser, DigiLeanRole, RoleArray } from \"@common/model/types\"\nimport { authUser } from \"@common/stores/userStore\"\nimport angular from \"angular\"\n\nlet user: DigiLeanAuthUser = {loggedIn: true, roles: new RoleArray()}\nauthUser.subscribe(u => user = u)\n\nangular\n.module('DigiLean')\n.directive('kaizenAdminOnly', function() {\n return {\n restrict: 'A',\n link: function(scope, elm) {\n const el = elm[0] as HTMLElement\n if (!user.loggedIn || !user.roles.hasRole(DigiLeanAuthRoles.KaizenAdmin)) {\n if (el)\n el.style.display = \"none\"\n }\n }\n }\n})\n\nangular\n.module('DigiLean')\n.directive('hasRole', function() {\n return {\n restrict: 'A',\n link: function(scope, elm, attr) {\n const el = elm[0] as HTMLElement\n if (!el)\n return\n const roles = attr.hasRole as string\n if (!roles)\n el.style.display = \"none\"\n \n const rolesArr = roles.split(\"||\").map(r => r.trim()) as DigiLeanRole[]\n let hasRole = false\n\n rolesArr.map(role => {\n if (user.roles.hasRole(role)) {\n hasRole = true\n }\n })\n \n if (!user.loggedIn)\n hasRole = false\n \n if (!hasRole)\n el.style.display = \"none\"\n }\n }\n})","import {LitElement, html, css} from \"lit\"\nimport {customElement} from \"lit/decorators.js\"\n\n@customElement('digilean-button')\nexport class DigiLeanButton extends LitElement {\n static styles = css`\n :host {\n display: inline-block;\n --digilean-button-color: var(--digilean-primary-text);\n --digilean-button-outline-color: var(--digilean-input-border);\n --digilean-button-border-color: var(--digilean-input-border);\n --digilean-button-background: var(--digilean-secondary-background);\n --digilean-button-background-hover: var(--digilean-primary-background);\n }\n button {\n cursor: pointer;\n color: var(--digilean-button-color);\n outline-color: var(--digilean-button-outline-color);\n border: 1px solid var(--digilean-button-border-color);\n background: var(--digilean-button-background);\n box-sizing: border-box;\n border-radius:3px;\n border-width: 1px;\n padding: 0.5em 1em;\n transition: background .1s linear;\n }\n button:hover {\n background: var(--digilean-button-background-hover);\n }\n button:disabled {\n cursor: not-allowed;\n color: var(--digilean-disabled-color);\n outline-color: var(--digilean-primary-button);\n border-color: var(--digilean-primary-button);\n background: var(--digilean-disabled-background);\t\n }\n `\n\n render() {\n return html`\n \n `\n }\n}\n\n@customElement('digilean-button-primary')\nexport class DigiLeanButtonPrimary extends LitElement {\n static styles = css`\n :host {\n display: inline-block;\n }\n digilean-button {\n --digilean-button-color: var(--digilean-main-menu-text);\n --digilean-button-outline-color: var(--digilean-primary);\n --digilean-button-border-color: var(--digilean-primary);\n --digilean-button-background: var(--digilean-primary);\n --digilean-button-background-hover: var(--digilean-blue-diamond);\n }\n `\n\n render() {\n return html`\n \n Btn\n \n `\n }\n}","import {LitElement, html, css} from \"lit\"\nimport {customElement, property} from \"lit/decorators.js\"\nimport {ref, createRef, Ref} from \"lit/directives/ref.js\"\nimport { translateLabelInstant } from \"@common/services/language/DigiLeanLang\"\n\n@customElement('digilean-input')\nexport class DigiLeanInput extends LitElement {\n \n private inputField: Ref = createRef()\n\n static styles = css`\n :host {\n display: flex;\n flex-direction: row;\n gap: 1rem;\n width: 500px;\n }\n * {\n box-sizing: border-box;\n }\n\n label {\n flex-basis: 30%;\n }\n\n input {\n flex-basis: 70%;\n flex-grow: 1;\n background-color: var(--digilean-secondary-background);\n background-image: none;\n border: 1px solid var(--digilean-input-border);\n outline: none;\n border-radius: 1px;\n color: inherit;\n display: block;\n padding: 6px 12px;\n transition: border-color 0.15s ease-in-out 0s, box-shadow 0.15s ease-in-out 0s;\n /* font-size: 14px; */\n }\n input:focus {\n outline-color: var(--digilean-blue-sharp);\n }\n `\n\n @property({attribute: true})\n value = \"\"\n\n @property({attribute: true})\n name = \"\"\n\n @property({attribute: true})\n label = \"\"\n\n @property({attribute: true})\n placeholder = \"\"\n\n focus() {\n if (this.inputField.value)\n this.inputField.value.focus()\n }\n\n changeEvent(e: Event) {\n this.value = (e.target as HTMLInputElement).value\n this.sendEvent(\"change\")\n }\n inputEvent(e: Event) {\n this.value = (e.target as HTMLInputElement).value\n this.sendEvent(\"input\")\n }\n sendEvent(name: string) {\n const evt = new Event(name, {\n bubbles: true,\n composed: true\n })\n this.dispatchEvent(evt)\n }\n render() {\n let placeholder = this.placeholder ?? \"\"\n if (placeholder) {\n placeholder = translateLabelInstant(placeholder)\n }\n let label = this.label ?? \"\"\n if (label)\n label = translateLabelInstant(label)\n\n return html`\n ${label ? \n html``: \"\"\n } \n \n `\n }\n}\n","import {LitElement, html, css} from \"lit\"\nimport {customElement, property, state} from \"lit/decorators.js\"\n\n@customElement('digilean-json-editor')\nexport class DigileanJsonEditor extends LitElement {\n \n static styles = css`\n :host {\n display: flex;\n flex-direction: column;\n gap: 1rem;\n color: var(--digilean-primary-text);\n }\n\n * {\n box-sizing: border-box;\n }\n\n label {\n color: inherit;\n font-size: 0.8rem;\n }\n label.error {\n color: var(--digilean-warning);\n }\n label.valid {\n color: var(--digilean-success);\n }\n textarea {\n flex: 1 1 auto;\n background-color: var(--digilean-secondary-background);\n background-image: none;\n border: none;\n outline: 1px solid var(--digilean-input-border);\n border-radius: 1px;\n color: inherit;\n display: block;\n padding: 6px 12px;\n transition: border-color 0.15s ease-in-out 0s, box-shadow 0.15s ease-in-out 0s;\n }\n textarea:focus {\n outline-color: var(--digilean-blue-sharp);\n }\n `\n\n _jsonStringFormatted = \"\"\n \n @state()\n private _errorMsg = \"\"\n\n @property({attribute: true})\n set value(val: string | object) {\n if (typeof val === \"object\")\n val = JSON.stringify(val)\n this.validate(val)\n }\n \n get value() {\n if (!this._jsonStringFormatted)\n return \"\"\n const json = JSON.parse(this._jsonStringFormatted)\n const jsonStringFlat = JSON.stringify(json)\n return jsonStringFlat\n }\n\n @property({attribute: true})\n name = \"\"\n\n setJson(val: string) {\n this.validate(val)\n }\n\n sendEvent(name: string) {\n const evt = new Event(name, { bubbles: false, composed: true })\n this.dispatchEvent(evt)\n }\n validate(val: string) {\n let oldVal = this._errorMsg\n this._errorMsg = \"\"\n try {\n const json = JSON.parse(val)\n this._jsonStringFormatted = JSON.stringify(json, null, 2)\n this.sendEvent(\"change\")\n }\n catch (error) {\n if (error instanceof Error) \n this._errorMsg = error.message\n else\n this._errorMsg = String(error)\n }\n finally {\n this.requestUpdate(\"_errorMsg\", oldVal)\n }\n }\n render() {\n const error = !!this._errorMsg\n \n return html`\n ${error ? html`\n \n ` : html`\n \n `}\n \n \n `\n }\n}\n","import {LitElement, css, html, TemplateResult} from \"lit\"\nimport {customElement, property} from \"lit/decorators.js\"\nimport {ref, createRef, Ref} from \"lit/directives/ref.js\"\nimport {unsafeHTML} from \"lit/directives/unsafe-html.js\"\nimport {styleMap} from \"lit/directives/style-map.js\"\nimport {convertStringToLiteralModelGen, getInputsRecursive} from \"@common/services/template/templateLiteral\"\nimport { translateLabelInstant, translateLabel, selectedLang } from \"@common/services/language/DigiLeanLang\"\n\nimport { cloneDeep, merge } from \"lodash\"\n\n\ninterface DigiLeanDialogOptions {\n title: string\n okBtnText?: string\n cancelBtnText?: string\n hideOkBtn?: boolean\n booleanResult?: boolean\n}\nenum DigiLeanDialogSizes {\n Minimum,\n Medium,\n Maximum\n}\n\nconst defaultOptions: DigiLeanDialogOptions = {\n title: \"Digilean dialog\",\n okBtnText: \"Ok\",\n cancelBtnText: \"Cancel\",\n hideOkBtn: false,\n booleanResult: true\n}\n\nconst defaultSize: DigiLeanDialogSizes = DigiLeanDialogSizes.Minimum\n\n@customElement('digilean-dialog')\nclass DigiLeanDialogElement extends LitElement {\n\n private dialog: Ref = createRef()\n private content: Ref = createRef()\n static styles = css`\n /* :host {\n \n } */\n * {\n box-sizing: border-box;\n }\n dialog {\n border: none !important;\n border-radius: 3px;\n box-shadow: 0 0 #0000, 0 0 #0000, 0 25px 50px -12px rgba(0, 0, 0, 0.25);\n padding: 0;\n }\n dialog #dialog-body {\n display: flex;\n flex-direction: column;\n }\n dialog #dialog-body section {\n flex: 1 1 auto;\n }\n dialog #dialog-body header, dialog #dialog-body section{\n padding: 1rem;\n }\n dialog #dialog-body menu {\n padding: 1rem;\n }\n dialog #dialog-body header h4 {\n padding: 0;\n margin: 0;\n flex-grow: 1;\n color: var(--digilean-primary-text);\n }\n header button#cancel {\n appearance: none;\n background: 0 0;\n border: 0;\n color: var(--digilean-primary-text);\n cursor: pointer;\n opacity: 0.5;\n font-size: 1em;\n }\n header button#cancel:hover {\n opacity: 1;\n }\n dialog header {\n display: flex;\n flex-direction: row;\n border-bottom: 1px solid var(--digilean-grey-rain);\n }\n dialog section {\n border-bottom: 1px solid var(--digilean-grey-rain);\n }\n\n dialog menu {\n display: flex;\n gap: 1rem;\n flex-direction: row;\n justify-content: end;\n margin: 0;\n }\n `\n\n constructor() {\n super()\n this.addEventListener(DialogResult.dialogOkFromOutside, ((e: CustomEvent) => {\n this.ok(e.detail)\n }) as EventListener, { once: false, passive: true } )\n }\n // createRenderRoot() {\n // return this\n // }\n\n keydown(e: KeyboardEvent) {\n if (e.key === 'Escape') {\n this.cancel()\n }\n }\n\n open() {\n this.dialog.value?.showModal()\n }\n\n cancel() {\n this.dispatchCustomEvent(DialogResult.dialogCancel, \"cancel\")\n this.dialog.value?.close()\n this.cleanup()\n }\n\n ok(indata?: any) {\n let data: any\n if (indata)\n data = indata\n else\n data = this.getInputValues()\n this.dispatchCustomEvent(DialogResult.dialogOk, data)\n this.dialog.value?.close()\n this.cleanup()\n }\n cleanup() {\n this.body = \"

      digilean dialog

      \"\n this.bodyTemplate = null\n this.title = defaultOptions.title\n this.hideOkBtn = defaultOptions.hideOkBtn!\n let child = this.content.value?.lastElementChild\n while (child) {\n this.content.value?.removeChild(child)\n child = this.content.value?.lastElementChild\n }\n }\n \n getInputValues() {\n let values = {}\n if (!this.content.value || !this.content.value.children || this.content.value.children.length === 0)\n return values\n \n const inputElements = getInputsRecursive(this.content.value.children)\n const elements: HTMLInputElement[] = []\n inputElements.forEach(el => {\n if (el.dataset.ref)\n elements.push(el)\n })\n \n elements.map((el, index) => {\n const name = el.dataset.ref || el.name || `value${index}`\n const value = el.value\n values[name] = value\n return { name, value }\n })\n return values\n }\n\n dispatchCustomEvent(name: DialogResult, detail: any) {\n const options = { detail, bubbles: true, composed: true}\n this.dispatchEvent(new CustomEvent(name, options));\n }\n\n _title = defaultOptions.title\n @property({attribute: true})\n set title(value: string) {\n let title = value\n if (value.indexOf(' ') < 0)\n title = translateLabelInstant(value)\n this._title = title\n }\n \n get title() {\n return this._title\n }\n\n @property({attribute: false})\n body = \"

      digilean dialog

      \"\n\n @property({attribute: false})\n bodyTemplate: TemplateResult<1> | null = null\n\n _okText = defaultOptions.okBtnText \n @property({attribute: true})\n set okText(value: string) {\n let text = value\n text = translateLabelInstant(text)\n this._okText = text\n }\n get okText() {\n return this._okText!\n }\n\n _cancelText = defaultOptions.cancelBtnText\n @property({attribute: true})\n set cancelText(value: string) {\n let text = value\n text = translateLabelInstant(text)\n this._cancelText = text\n }\n get cancelText() {\n return this._cancelText!\n }\n\n @property({attribute: false})\n hideOkBtn = defaultOptions.hideOkBtn\n\n getSize() {\n return { minWidth: \"64rem\", minHeight: \"48rem\" }\n }\n render() {\n\n const dialogStyle = this.getSize()\n\n return html`\n this.keydown(e)}>\n
      \n
      \n

      ${unsafeHTML(this.title)}

      \n \n
      \n
      \n ${this.bodyTemplate == null ? \n html`${unsafeHTML(this.body)}` : \n this.bodyTemplate\n }\n
      \n \n this.cancel()}>${this.cancelText}\n ${this.hideOkBtn ? html`` : \n html` this.ok()}>${this.okText}`\n }\n \n
      \n
      \n `\n }\n appendElement(el: HTMLElement) {\n this.content.value?.appendChild(el)\n }\n}\n\nexport enum DialogResult {\n dialogOk = \"dialog-ok\",\n dialogCancel = \"dialog-cancel\",\n dialogOkFromOutside = \"dialog-ok-from-outside\"\n}\n\nclass DigiLeanDialog {\n private dialog: DigiLeanDialogElement\n constructor() {\n this.dialog = document.createElement(\"digilean-dialog\") as DigiLeanDialogElement\n document.body.appendChild(this.dialog)\n selectedLang.subscribe(lang => {\n if (lang.ready)\n this.setTranslatedDefaultLabels()\n })\n }\n\n async setTranslatedDefaultLabels () {\n const okTextTranslated = await translateLabel(\"COMMON_OK\")\n defaultOptions.okBtnText = okTextTranslated\n this.dialog.okText = okTextTranslated\n const cancelTextTranslated = await translateLabel(\"COMMON_CANCEL\")\n defaultOptions.cancelBtnText = cancelTextTranslated\n this.dialog.cancelText = cancelTextTranslated\n }\n\n waitForClose(booleanRessult = false) {\n return new Promise((resolve, reject) => {\n this.dialog.addEventListener(DialogResult.dialogOk, ((e: CustomEvent) => {\n if (booleanRessult)\n resolve(true)\n const data = e.detail\n resolve(data)\n }) as EventListener, { once: true})\n\n this.dialog.addEventListener(DialogResult.dialogCancel, ((e: CustomEvent) => {\n if (booleanRessult)\n resolve(false)\n const data = e.detail\n reject(data)\n }) as EventListener, { once: true})\n })\n }\n openForm(options: DigiLeanDialogOptions, template: string, model: T): Promise {\n options = this.mergeOptions(options)\n this.setOptions(options)\n\n const tmp = convertStringToLiteralModelGen(template, model)\n ///@ts-ignore\n this.dialog.bodyTemplate = tmp\n \n this.dialog.open()\n return this.waitForClose(options.booleanResult) as Promise\n }\n openHtml(options: DigiLeanDialogOptions, template: string) {\n options = this.mergeOptions(options)\n this.setOptions(options)\n this.dialog.body = template\n this.dialog.open()\n return this.waitForClose(options.booleanResult)\n }\n openElement(options: DigiLeanDialogOptions, el: HTMLElement) {\n options = this.mergeOptions(options)\n this.setOptions(options)\n this.dialog.body = \"\"\n this.dialog.appendElement(el)\n this.dialog.open()\n return this.waitForClose(options.booleanResult) as Promise\n }\n confirm(options: DigiLeanDialogOptions, template: string) {\n options = this.mergeOptions(options)\n this.setOptions(options)\n\n this.dialog.body = template\n \n this.dialog.open()\n return this.waitForClose(true) as Promise\n }\n\n setOptions(options: DigiLeanDialogOptions) {\n const { okBtnText, cancelBtnText, title, hideOkBtn } = options\n this.dialog.okText = okBtnText!\n this.dialog.cancelText = cancelBtnText!\n this.dialog.title = title\n if (hideOkBtn)\n this.dialog.hideOkBtn = hideOkBtn\n }\n mergeOptions(optionsIncoming: DigiLeanDialogOptions) {\n let options = cloneDeep(defaultOptions)\n if (optionsIncoming)\n options = merge(options, optionsIncoming)\n return options\n }\n}\n\nexport default new DigiLeanDialog()","import {LitElement, html, css} from \"lit\"\nimport {customElement, state} from \"lit/decorators.js\"\nimport { classMap } from \"lit/directives/class-map.js\"\n\n@customElement('digilean-checked')\nexport class DigiLeanChecked extends LitElement {\n\n @state()\n open = false\n \n static styles = css`\n :host {\n height: var(--digilean-icon-height, 2rem);\n width: var(--digilean-icon-width, 2rem);\n display: inline-block;\n user-select: none;\n }\n #outer-box {\n display: inline-flex;\n box-sizing: border-box;\n flex-direction: row;\n flex-wrap: wrap;\n justify-content: center;\n align-items: center;\n height: var(--digilean-icon-height, 2rem);\n width: var(--digilean-icon-width, 2rem);\n vertical-align: middle;\n }\n #outer-box.open {\n background: transparent; //transparent\n }\n svg {\n position: absolute;\n z-index: -1;\n height: calc(var(--digilean-icon-height, 2rem) * 0.6);\n width: calc(var(--digilean-icon-width, 2rem) - 0.6);\n fill: none;\n stroke-width: 2;\n stroke-linecap: round;\n stroke-linejoin: round;\n stroke-dasharray: 16px;\n stroke-dashoffset: 16px;\n transition-delay: 0.5s;\n transition: all 1s ease;\n transform: translate3d(0, 0, 0);\n }\n svg#check {\n stroke: var(--digilean-white);\n transform: scale(0.2);\n }\n #outer-box.open svg#check {\n transform: scale(1);\n stroke-dashoffset: 0;\n z-index: 1;\n }\n\n svg#circle-check {\n transform: scale(0);\n height: var(--digilean-icon-height, 2rem);\n width: var(--digilean-icon-width, 2rem);\n /* transition: fill 250ms cubic-bezier(.4,.0,.23,1); */\n }\n #outer-box.open svg#circle-check {\n z-index: 1;\n transform: scale(1);\n fill: var(--digilean-button-success);\n }\n\n svg#bubble-check {\n height: var(--digilean-icon-height, 2rem);\n width: var(--digilean-icon-width, 2rem);\n //z-index: -21;\n transform: scale(0);\n opacity: 1;\n transition: all 1s ease-out;\n }\n #outer-box.open svg#bubble-check {\n fill: var(--digilean-button-success-border);\n z-index: 1;\n transform: scale(3.2);\n opacity: 0;\n visibility: hidden;\n }\n `\n connectedCallback(): void {\n super.connectedCallback()\n setTimeout(() => {\n this.open = true\n }, 100)\n \n }\n disconnectedCallback(): void {\n super.disconnectedCallback()\n this.open = false\n }\n render() {\n const classes = {\n open: this.open\n }\n return html`\n
      \n \n \n \n \n \n \n \n \n \n
      \n `\n }\n}\n","import {LitElement, html, css} from \"lit\"\nimport {customElement, property, state} from \"lit/decorators.js\"\nimport { classMap } from \"lit/directives/class-map.js\"\n\n@customElement('digilean-failed')\nexport class DigiLeanFailed extends LitElement {\n\n @state()\n open = false\n\n @property({attribute: true})\n dead = false\n\n static styles = css`\n :host {\n height: var(--digilean-icon-height, 2rem);\n width: var(--digilean-icon-width, 2rem);\n display: inline-block;\n user-select: none;\n /* -webkit-tap-highlight-color: transparent; */\n }\n \n #outer-box {\n display: inline-flex;\n box-sizing: border-box;\n flex-direction: row;\n flex-wrap: wrap;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: var(--digilean-icon-height, 2rem);\n width: var(--digilean-icon-width, 2rem);\n transform: scale(1);\n }\n #outer-box.open {\n border: none;\n background: transparent\n }\n\n svg {\n position: absolute;\n z-index: -1;\n height: calc(var(--digilean-icon-height, 2rem) * 0.6);\n width: calc(var(--digilean-icon-width, 2rem) - 0.6);\n fill: none;\n stroke-width: 2;\n stroke-linecap: round;\n stroke-linejoin: round;\n stroke-dasharray: 16px;\n stroke-dashoffset: 16px;\n /* transition-delay: 0.1s; */\n transform: translate3d(0, 0, 0);\n }\n \n svg#cross {\n transform: scale(0);\n transition: all 0.8s ease;\n stroke: var(--digilean-main-menu-background);\n }\n svg.circle {\n transform: scale(0);\n height: var(--digilean-icon-height, 2rem);\n width: var(--digilean-icon-width, 2rem);\n transition: all 1s ease;\n /* transition: fill 250ms cubic-bezier(.4,.0,.23,1); */\n }\n \n #outer-box.open svg#circle-cross {\n transform: scale(1);\n z-index: 1;\n fill: var(--digilean-danger);\n }\n\n #outer-box.open.dead svg#circle-cross {\n fill: var(--digilean-primary-text);\n }\n \n #outer-box.open svg#cross {\n stroke: var(--digilean-white);\n transform: scale(1);\n stroke-dashoffset: 0;\n z-index: 1;\n }\n\n .bubble {\n height: var(--digilean-icon-height, 2rem);\n width: var(--digilean-icon-width, 2rem);\n z-index: -21;\n transform: scale(0);\n opacity: 1;\n }\n \n #outer-box.open #bubble-cross {\n /* fill: var(--digilean-danger); */\n stroke: var(--digilean-danger);\n stroke-width: 10;\n z-index: 1;\n transform: scale(1.6);\n opacity: 0;\n transition: all 1s ease-out;\n }\n `\n connectedCallback(): void {\n super.connectedCallback()\n setTimeout(() => {\n this.open = true\n }, 100)\n \n }\n disconnectedCallback(): void {\n super.disconnectedCallback()\n this.open = false\n }\n render() {\n const classes = {\n open: this.open,\n dead: this.dead\n }\n return html`\n
      \n \n \n \n \n \n \n \n \n \n \n
      \n `\n }\n}\n","import {LitElement, svg, css} from \"lit\"\nimport {customElement} from \"lit/decorators.js\"\n\n@customElement('digilean-working')\nexport class DigiLeanWorking extends LitElement {\n static styles = css`\n :host {\n display: inline-flex;\n box-sizing: border-box;\n flex-direction: row;\n flex-wrap: wrap;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: var(--digilean-icon-height, 2rem);\n width: var(--digilean-icon-width, 2rem);\n user-select: none;\n }\n svg {\n height: var(--digilean-icon-height, 2rem);\n width: var(--digilean-icon-width, 2rem);\n fill: none;\n }\n #clock {\n fill: var(--digilean-primary);\n stroke: var(--digilean-white);\n }\n #minute {\n animation: rotate 1s infinite linear;\n transform-origin: 50px 50px;\n }\n #hour {\n animation: rotate 12s infinite linear;\n transform-origin: 50px 50px;\n }\n @keyframes rotate {\n from {\n transform: rotate(0)\n }\n to {\n transform: rotate(360deg);\n }\n }\n `\n render() {\n \n return svg`\n \n \n \n \n \n \n \n `\n }\n}\n","import {LitElement, html, css} from \"lit\"\nimport {customElement, state} from \"lit/decorators.js\"\n\n@customElement('digilean-ok-errors')\nexport class DigiLeanOkWithErrors extends LitElement {\n \n static styles = css`\n :host {\n height: var(--digilean-icon-height, 2rem);\n width: var(--digilean-icon-width, 2rem);\n display: inline-block;\n user-select: none;\n }\n #outer-box {\n display: inline-flex;\n box-sizing: border-box;\n flex-direction: row;\n flex-wrap: wrap;\n justify-content: center;\n align-items: center;\n height: var(--digilean-icon-height, 2rem);\n width: var(--digilean-icon-width, 2rem);\n vertical-align: middle;\n }\n #outer-box.open {\n background: transparent; //transparent\n }\n svg {\n position: absolute;\n z-index: -1;\n height: calc(var(--digilean-icon-height, 2rem) * 0.6);\n width: calc(var(--digilean-icon-width, 2rem) - 0.6);\n fill: none;\n stroke-width: 2;\n stroke-linecap: round;\n stroke-linejoin: round;\n stroke-dasharray: 16px;\n stroke-dashoffset: 16px;\n transition-delay: 0.5s;\n transition: all 1s ease;\n transform: translate3d(0, 0, 0);\n }\n svg#check {\n stroke: var(--digilean-white);\n }\n #outer-box.open svg#check {\n stroke-dashoffset: 0;\n z-index: 1;\n }\n\n svg#circle-check {\n height: var(--digilean-icon-height, 2rem);\n width: var(--digilean-icon-width, 2rem);\n /* transition: fill 250ms cubic-bezier(.4,.0,.23,1); */\n }\n #outer-box.open svg#circle-check {\n z-index: 1;\n fill: var(--digilean-button-success);\n }\n\n svg#error-sign {\n z-index: 2;\n transform: scale(1.2);\n height: var(--digilean-icon-height, 2rem);\n width: var(--digilean-icon-width, 2rem);\n fill: var(--digilean-danger);\n }\n `\n connectedCallback(): void {\n super.connectedCallback()\n \n }\n disconnectedCallback(): void {\n super.disconnectedCallback()\n }\n render() {\n return html`\n
      \n \n \n \n \n \n \n \n \n \n \n \n \n \n
      \n `\n }\n}\n","import {LitElement, html, css} from \"lit\"\nimport {customElement, property, state} from \"lit/decorators.js\"\n\n@customElement('spinner-icon')\nexport class SpinnerIcon extends LitElement {\n static styles = css`\n :host {\n display: inline-block;\n }\n i {\n color: var(--digilean-primary-text);\n }\n `\n \n @property({attribute: true, type: Boolean})\n spin = false\n\n\n render() {\n let icon = \"fa fa-redo fa-lg\"\n if (this.spin)\n icon = `${icon} fa-spin`\n return html`\n \n `\n }\n}\n","import {isEnUs} from \"@common/services/datetime/dateTimeService\"\n\nconst browserlang = navigator.language\n\nexport function formatDateOnly (date: Date | string | number) {\n if (!date)\n return \"\"\n try {\n const dateDate = new Date(date)\n let formatted = \"\"\n if (isEnUs)\n formatted = dateOnlyBrowserLang.format(dateDate)\n else\n formatted = dateOnlyNb.format(dateDate)\n return formatted\n } catch(e) {\n //console.log(e)\n }\n return \"\"\n}\n\nexport function formatDateTime (date: Date | string | number) {\n if (!date)\n return \"\"\n try {\n const dateDate = new Date(date)\n let formatted = \"\"\n if (isEnUs)\n formatted = dateTimeBrowserLang.format(dateDate)\n else\n formatted = dateTimeNb.format(dateDate)\n return formatted\n } catch(e) {\n //console.log(e)\n }\n return \"\"\n}\n\nexport function formatDateTimeLong (date: Date | string | number) {\n try {\n const dateDate = new Date(date)\n let formatted = \"\"\n if (isEnUs)\n formatted = dateTimeLongBrowserLang.format(dateDate)\n else\n formatted = dateTimeLongNb.format(dateDate)\n return formatted\n } catch(e) {\n //console.log(e)\n }\n return \"\"\n}\n\nexport function formatDateTimeShort (date: Date | string | number) {\n try {\n const dateDate = new Date(date)\n let formatted = \"\"\n if (isEnUs)\n formatted = dateTimeShortBrowserLang.format(dateDate)\n else\n formatted = dateTimeShortNb.format(dateDate)\n return formatted\n } catch(e) {\n //console.log(e)\n }\n return \"\"\n}\n\n// date only\nconst dateOnlyFormat: Intl.DateTimeFormatOptions = {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit'\n}\n\nconst dateOnlyBrowserLang = Intl.DateTimeFormat(browserlang, dateOnlyFormat)\nconst dateOnlyNb = Intl.DateTimeFormat(\"nb\", dateOnlyFormat)\n\n// date time\nconst dateTimeFormat: Intl.DateTimeFormatOptions = {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit'\n}\nconst dateTimeBrowserLang = Intl.DateTimeFormat(browserlang, dateTimeFormat)\nconst dateTimeNb = Intl.DateTimeFormat(\"nb\", dateTimeFormat)\n\n// date time long\nconst dateTimeLongFormat: Intl.DateTimeFormatOptions = {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit'\n}\nconst dateTimeLongBrowserLang = Intl.DateTimeFormat(browserlang, dateTimeLongFormat)\nconst dateTimeLongNb = Intl.DateTimeFormat(\"nb\", dateTimeLongFormat)\n\n// date time short\nconst dateTimeShortFormat: Intl.DateTimeFormatOptions = {\n month: '2-digit',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit'\n}\nconst dateTimeShortBrowserLang = Intl.DateTimeFormat(browserlang, dateTimeShortFormat)\nconst dateTimeShortNb = Intl.DateTimeFormat(\"nb\", dateTimeShortFormat)\n\nexport function parseDateFromString(value: string) {\n const time = Date.parse(value)\n if (isNaN(time))\n return null\n return new Date(time)\n}","import {LitElement, html, css} from \"lit\"\nimport {customElement, property} from \"lit/decorators.js\"\nimport { formatDateOnly, formatDateTime } from \"@common/services/datetime/dateTimeFormattingLocale\"\n\n@customElement('date-viewer')\nexport class DateViewer extends LitElement {\n static styles = css`\n :host {\n display: inline;\n }\n `\n\n @property({attribute: true})\n date = \"\"\n\n render() {\n const dateFormatted = formatDateOnly(this.date)\n let formattedDateTime = formatDateTime(this.date)\n this.title = formattedDateTime\n\n return html``\n }\n}","import {LitElement, html, css} from \"lit\"\nimport {customElement, property} from \"lit/decorators.js\"\nimport { formatDateTime, formatDateTimeLong, formatDateTimeShort } from \"@common/services/datetime/dateTimeFormattingLocale\"\nimport { DateTimeViewMode } from \"@common/model/types\"\n\n@customElement('datetime-viewer')\nexport class DateTimeViewer extends LitElement {\n static styles = css`\n :host {\n display: inline;\n }\n `\n\n @property({attribute: true})\n date = \"\"\n\n @property()\n mode: DateTimeViewMode = \"regular\"\n\n render() {\n let dateFormatted = formatDateTime(this.date)\n\n if (this.mode == \"short\")\n dateFormatted = formatDateTimeShort(this.date)\n else if (this.mode == \"long\")\n dateFormatted = formatDateTimeLong(this.date)\n\n return html``\n }\n}","import {LitElement, html, css} from \"lit\"\nimport {customElement, property, state} from \"lit/decorators.js\"\nimport { translateLabel, selectedLang } from \"@common/services/language/DigiLeanLang\"\nimport { Subscription } from \"rxjs\"\n\n@customElement('translate-label')\nexport class TranslateLabel extends LitElement {\n static styles = css`\n :host {\n display: inline;\n }\n `\n private sub: Subscription | null = null\n connectedCallback(): void {\n super.connectedCallback()\n this.sub = selectedLang.subscribe((sl => {\n if (sl.ready)\n this.getTranslation()\n }))\n }\n disconnectedCallback(): void {\n super.disconnectedCallback()\n if (this.sub) this.sub.unsubscribe()\n }\n\n _label = \"\"\n @property({attribute: true})\n set label(value: string) {\n this._label = value\n if (value)\n this.getTranslation()\n }\n get label() {\n return this._label\n }\n\n async getTranslation() {\n this.translation = await translateLabel(this.label)\n }\n @state()\n translation = \"\"\n\n render() {\n return html`${this.translation}`\n }\n}","import {LitElement, html} from \"lit\"\nimport {customElement, state} from \"lit/decorators.js\"\nimport { authUser } from \"@common/stores/userStore\"\nimport { DigiLeanAuthUser } from \"@common/model/types\"\nimport { Subscription } from \"rxjs\"\n\n@customElement('user-debug')\nexport class UserDebug extends LitElement {\n\n sub?: Subscription\n\n @state()\n authUser?: DigiLeanAuthUser\n\n connectedCallback(): void {\n super.connectedCallback()\n this.sub = authUser.subscribe(u => this.authUser = u)\n }\n disconnectedCallback(): void {\n super.disconnectedCallback()\n if (this.sub)\n this.sub.unsubscribe()\n }\n\n render() {\n if (!this.authUser)\n return html`loading`\n\n const userJsonString = JSON.stringify(this.authUser, null, 2)\n return html`\n
      \n \n `\n }\n}","export const parseToken = (token: string) => {\n const base64Url = token.split('.')[1]\n const tokenstring = window.atob(base64Url)\n const json = JSON.parse(tokenstring)\n return json\n}\n\n\nexport const parseDiff = (diff: number) => {\n let diffStr = \"\"\n const secTotal = Math.floor(diff/1000)\n const s = secTotal % 60\n diffStr = `${s}s`\n const restS = secTotal - s\n if (restS === 0)\n return diffStr\n\n const minTotal = restS / 60\n const m = minTotal % 60\n diffStr = `${m}m ${diffStr}`\n const restM = minTotal - m\n if (restM === 0)\n return diffStr\n const hourTotal = restM / 60\n const h = hourTotal % 24\n diffStr = `${h}h ${diffStr}`\n const restHour = hourTotal - h\n if (restHour === 0)\n return diffStr\n const d = restHour / 24\n diffStr = `${d}d ${diffStr}`\n return diffStr\n}\n\nconst leftFillNum = (num) => {\n return num.toString().padStart(2, 0)\n}\n\nexport const getYyyMmDdHhMmSs = (d) => {\n return `${d.getFullYear()}-${leftFillNum(d.getMonth())}-${leftFillNum(d.getDate())} ${leftFillNum(d.getHours())}:${leftFillNum(d.getMinutes())}:${leftFillNum(d.getSeconds())}`\n}\n\nexport const parseExpire = (tokenExpire: number) => {\n const expTic = tokenExpire*1000\n const nowTic = new Date().getTime()\n const diff = expTic - nowTic\n const parsedDiff = parseDiff(diff)\n const expiredDate = new Date(expTic)\n return {\n parsedDiff,\n expiredDate\n }\n}","import {LitElement, html} from \"lit\"\nimport {customElement, state} from \"lit/decorators.js\"\nimport { authUser } from \"@common/stores/userStore\"\nimport { parseToken, parseExpire } from \"@common/services/tokenService\"\nimport { DigiLeanAuthUser } from \"@common/model/types\"\nimport { Subscription } from \"rxjs\"\n\n@customElement('user-token-viewer')\nexport class UserTokenViewer extends LitElement {\n\n sub?: Subscription\n\n @state()\n authUser?: DigiLeanAuthUser\n\n connectedCallback(): void {\n super.connectedCallback()\n this.sub = authUser.subscribe(u => this.authUser = u)\n }\n disconnectedCallback(): void {\n super.disconnectedCallback()\n if (this.sub)\n this.sub.unsubscribe()\n }\n\n render() {\n if (!this.authUser)\n return html`loading`\n\n const token = parseToken(this.authUser.token!)\n const tokenJsonString = JSON.stringify(token, null, 2)\n const expired = parseExpire(token.exp)\n return html`\n
      \n

      Expire date:

      \n

      Expire In: ${expired.parsedDiff}

      \n `\n }\n}","import {LitElement, html} from \"lit\"\nimport {customElement} from \"lit/decorators.js\"\nimport envConfig from \"@common/envConfig\"\nimport toaster from \"@common/components/toast\"\n\n@customElement('app-config-debug')\nexport class AppConfigDebug extends LitElement {\n render() {\n const configFormatted = JSON.stringify(envConfig, null, 4)\n \n return html`\n
      \n \n
      \n
      \n \n \n \n \n \n
      \n `\n }\n}","import backend from \"@common/services/backendHttp\"\nimport { PublicApiClientPostModel, PublicApiClientViewModel, PublicApiGeneratedSecretViewModel, ScopeInfo } from \"@api\"\n\nconst resourceUrl = \"api/adminclient\"\n\nexport const getClientList = async () => {\n const clients = await backend.get(resourceUrl)\n return clients\n} \nexport const getClient = async (clientId: string) => {\n const url = `${resourceUrl}/${clientId}`\n const client = await backend.get(url)\n return client\n}\nexport const createClient = async (client: PublicApiClientPostModel) => {\n const cm = await backend.post(resourceUrl, client)\n return cm\n}\nexport const saveClient = async (client: PublicApiClientPostModel) => {\n const cm = await backend.put(resourceUrl, client)\n return cm\n}\nexport const generateSecret = async (clientId: string) => {\n const url = `${resourceUrl}/generate/${clientId}`\n const secret = await backend.get(url)\n return secret\n}\nexport const expireSecret = async (clientId: string, secretId: number) => {\n const url = `${resourceUrl}/expire/${clientId}`\n const client = await backend.post(url, secretId)\n return client\n}\n\nexport const getAllScopes = async () => {\n const url = `${resourceUrl}/allscopes`\n const scopes = await backend.get(url)\n return scopes\n}\n\nexport const updateScopes = async (clientId: string, scopes: string[]) => {\n const url = `${resourceUrl}/scopes/${clientId}`\n const client = await backend.put(url, scopes)\n return client\n}","import {LitElement, html, css} from \"lit\"\nimport {customElement, property, state} from \"lit/decorators.js\"\nimport { getAllScopes } from \"./apiClientsService\"\nimport { ScopeInfo } from \"@api\"\n\n@customElement('api-scopes-dialog')\nexport class ApiScopesDialog extends LitElement {\n static styles = css`\n :host {\n display: block;\n }\n .display {\n color: var(--digilean-primary-text);\n font-size: 0.9rem;\n }\n `\n \n @property({attribute: false})\n clientScopes: string[] = []\n\n @state()\n allScopes: ScopeInfo[] = []\n\n connectedCallback(): void {\n super.connectedCallback()\n this.loadScopes()\n }\n async loadScopes() {\n const scps = await getAllScopes()\n this.allScopes = scps\n }\n\n isChecked(scope:ScopeInfo) {\n if (this.clientScopes == null) {\n this.clientScopes = []\n return false\n }\n return this.clientScopes.some(cs => cs === scope.name)\n }\n\n toggleCheck(scope:ScopeInfo) {\n const isCheck = this.isChecked(scope)\n if (isCheck)\n this.clientScopes = this.clientScopes.filter(cs => cs !== scope.name)\n else\n this.clientScopes.push(scope.name!)\n this.emitScopeChanges()\n }\n render() {\n return html`\n \n \n ${this.allScopes.map(scope => {\n return html`\n \n \n \n \n \n `\n })}\n \n
      \n this.toggleCheck(scope)}\n />\n \n ${scope.name}\n \n ${scope.displayName}\n
      \n `\n }\n\n emitScopeChanges() {\n const options = {\n detail: { scopes: this.clientScopes},\n bubbles: false,\n composed: true\n }\n this.dispatchEvent(new CustomEvent(\"api-scopes-changed\", options))\n }\n}\n","import {LitElement, html, css} from \"lit\"\nimport {customElement, property} from \"lit/decorators.js\"\n\n@customElement('fa-icon')\nexport class FontawesomeIconLit extends LitElement {\n static styles = css`\n :host {\n display: inline-block;\n margin: 0;\n padding: 0;\n color: var(--digilean-primary-text);\n }\n `\n\n @property({attribute: true})\n icon = \"fal fa-sticky-note\"\n\n render() {\n return html`\n \n \n `\n // const ht = icon(faCamera).html[0]\n // return html`${unsafeSVG(ht)}`\n }\n}","import { PDFDocumentLoadingTask, PDFDocumentProxy, PDFPageProxy } from \"pdfjs-dist\"\nimport { DocumentInitParameters, RenderParameters, TypedArray } from \"pdfjs-dist/types/src/display/api\"\n\nconst workerSrc = \"/assets/pdf.worker.min.js\"\nconst cmapsSrc = \"/cmaps/\"\n\ninterface IPdfLib {\n getDocument: (src: string | URL | TypedArray | ArrayBuffer | DocumentInitParameters) => PDFDocumentLoadingTask\n GlobalWorkerOptions: any\n}\n\nlet loadingPromise: Promise | null\n\nconst loadLib = async () => {\n if (!loadingPromise)\n loadingPromise = import(\"pdfjs-dist\")\n \n const pdfLib = await loadingPromise\n pdfLib.GlobalWorkerOptions.workerSrc = workerSrc\n return pdfLib\n}\n\nconst readPdf = async (url: string) => {\n const pdf = await loadLib()\n \n const loadingTask = pdf!.getDocument({\n url,\n cMapUrl: cmapsSrc,\n cMapPacked: true,\n enableXfa: true\n })\n\n const pdfDocument = await loadingTask.promise\n return pdfDocument\n}\n\ntype PdfOrientation = \"portrait\" | \"landscape\"\ninterface ContainerSize {\n width: number\n height: number\n}\n\nexport enum PdfZoomOptions {\n pageFit = \"pageFit\",\n pageWidth = \"pageWidth\",\n pageHeight = \"pageHeight\"\n}\n\nexport class PdfRenderer {\n private currentPdfDocument: PDFDocumentProxy | null = null\n\n private url: string\n private canvas: HTMLCanvasElement\n private context: CanvasRenderingContext2D\n\n private alreadyLoading = false\n private currentZoomOption = PdfZoomOptions.pageFit\n private currentSize: ContainerSize = {width: 0, height: 0}\n\n orientation: PdfOrientation = \"portrait\"\n numberOfPages = 1\n\n constructor(url: string, canvas: HTMLCanvasElement) {\n this.url = url\n this.canvas = canvas\n this.context = canvas.getContext(\"2d\") as CanvasRenderingContext2D\n }\n \n private currentPage: PDFPageProxy | null = null\n\n async renderPage(pageNo: number, containerSize: ContainerSize, zoomOption = PdfZoomOptions.pageFit) {\n if (!this.currentPdfDocument)\n this.currentPdfDocument = await readPdf(this.url)\n\n if (this.alreadyLoading)\n return // abort\n this.alreadyLoading = true\n\n this.numberOfPages = this.currentPdfDocument.numPages\n\n this.currentPage = await this.currentPdfDocument.getPage(pageNo)\n\n let scale = this.getNewScale(containerSize, zoomOption)\n \n const pageViewport = this.currentPage.getViewport({ scale })\n \n this.canvas.width = pageViewport.width\n this.canvas.height = pageViewport.height\n\n const renderContext: RenderParameters = {\n canvasContext: this.context,\n viewport: pageViewport\n }\n this.currentPage.render(renderContext)\n this.alreadyLoading = false\n }\n\n resizeCurrentPage(containerSize: ContainerSize, zoomOption = PdfZoomOptions.pageFit) {\n if (!this.currentPage) {\n return\n }\n \n if (this.alreadyLoading) {\n return // abort\n }\n \n if (this.currentSize.width === containerSize.width && this.currentSize.height === containerSize.height && this.currentZoomOption === zoomOption) {\n return\n }\n this.alreadyLoading = true\n \n let scale = this.getNewScale(containerSize, zoomOption)\n \n const pageViewport = this.currentPage.getViewport({ scale })\n\n this.canvas.width = pageViewport.width\n this.canvas.height = pageViewport.height\n\n const renderContext: RenderParameters = {\n canvasContext: this.context,\n viewport: pageViewport\n }\n this.currentPage.render(renderContext)\n this.alreadyLoading = false\n }\n\n static scrollWidth = 17\n getNewScale(containerSize: ContainerSize, zoomOption = PdfZoomOptions.pageFit) {\n if (!this.currentPage)\n return 1\n\n this.currentSize = containerSize\n this.currentZoomOption = zoomOption\n let pageViewport = this.currentPage.getViewport({ scale: 1 })\n \n let scaleHeight = (containerSize.height - PdfRenderer.scrollWidth) / pageViewport.height\n let scaleWidth = (containerSize.width - PdfRenderer.scrollWidth) / pageViewport.width\n\n if (zoomOption == PdfZoomOptions.pageFit)\n return Math.min(scaleHeight, scaleWidth)\n if (zoomOption == PdfZoomOptions.pageHeight)\n return scaleHeight\n else if (zoomOption == PdfZoomOptions.pageWidth)\n return scaleWidth\n \n return this.orientation == \"landscape\" ? scaleWidth : scaleHeight\n }\n /// always run this when done\n dispose() {\n if (this.currentPage)\n this.currentPage.cleanup()\n if (this.currentPdfDocument)\n this.currentPdfDocument.destroy()\n }\n}","import {LitElement, html, css, PropertyValues} from \"lit\"\nimport {customElement, property, query, state} from \"lit/decorators.js\"\nimport { debounce } from \"lodash\"\nimport { PdfRenderer, PdfZoomOptions } from \"./pdfRenderer\"\n\ninterface zoomSelectOption {\n option: PdfZoomOptions\n label: string\n}\nconst viewOptions: zoomSelectOption[] = []\n\nfor (const opt in PdfZoomOptions) {\n const option = PdfZoomOptions[opt]\n viewOptions.push({option, label: option.replace(\"page\", \"\")})\n}\n\nlet threshold = 20\n\n@customElement('pdf-viewer')\nexport class PdfViewer extends LitElement {\n static styles = css`\n :host {\n display: block;\n }\n .wrapper {\n position: relative;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n height: 100%;\n max-height: 100%;\n background: var(--digilean-secondary-background);\n color: var(--digilean-secondary-text);\n overflow: auto;\n }\n .canvas-wrapper {\n box-sizing: border-box;\n flex: 1 1 auto;\n overflow-y: auto;\n height: 0;\n }\n \n .menu {\n padding: 0.4rem 1.4rem;\n display: inline-flex;\n justify-content: space-between;\n flex-direction: row;\n gap: 0.5rem;\n }\n .menu-item {\n display: inline-flex;\n flex-direction: row;\n align-items: center;\n gap: 1rem;\n }\n .separator {\n margin: 0 0.3rem;\n }\n .div-spinner {\n position: absolute;\n top:0;\n left:0;\n width:100%;\n height:100%;\n background-color: rgba(100,100,100,0.2);;\n display: inline-flex;\n box-sizing: border-box;\n flex-direction: row;\n flex-wrap: wrap;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n }\n `\n // ********\n // props / state\n // \n private _url = \"\"\n @property({attribute: true})\n set url(value) {\n if (value) {\n this.debounceLoadPdf()\n }\n this._url = value\n }\n get url() {\n return this._url\n }\n\n private _zoomoption = PdfZoomOptions.pageFit\n @property({attribute: true})\n set zoomoption(value: PdfZoomOptions) {\n if (value && value !== this._zoomoption && !value.startsWith(\"{\"))\n {\n this._zoomoption = value\n this.checkZoomOptionProp()\n }\n }\n get zoomoption() {\n return this._zoomoption\n }\n \n\n @state()\n loading = true\n\n @query(\"div.canvas-wrapper\")\n canvasWrapperEl?: HTMLDivElement\n\n @query(\"canvas\")\n canvasEl?: HTMLCanvasElement\n\n pdfRenderer?: PdfRenderer\n \n viewOptionSelected = viewOptions[0]\n\n @state()\n currentPageNo = 1\n\n @state()\n totalNumOfPages = 1\n\n // ********\n // lifecycle\n //\n protected firstUpdated(_changedProperties: PropertyValues): void {\n if (this.canvasWrapperEl)\n this.resizeObserver.observe(this.canvasWrapperEl)\n this.checkZoomOptionProp()\n this.debounceLoadPdf()\n }\n disconnectedCallback(): void {\n if (this.canvasWrapperEl)\n this.resizeObserver.unobserve(this.canvasWrapperEl)\n if (this.pdfRenderer)\n this.pdfRenderer.dispose()\n }\n // ******\n // internal functions\n //\n nextPage() {\n if (this.currentPageNo == this.totalNumOfPages)\n return\n this.currentPageNo += 1\n this.renderPdfPage()\n }\n prevPage() {\n if (this.currentPageNo == 1)\n return\n this.currentPageNo -= 1\n this.renderPdfPage()\n }\n\n async loadPdf() {\n if (!this.url || this.url.startsWith(\"{\")) { // safe-guarding angular early\n return\n }\n if (!this.canvasEl) {\n return\n }\n console.log(\"Load new pdf\", this.url)\n const canvas = this.canvasEl\n this.currentPageNo = 1\n if (this.pdfRenderer)\n this.pdfRenderer.dispose()\n this.pdfRenderer = new PdfRenderer(this.url, canvas)\n await this.renderPdfPage()\n }\n debounceLoadPdf = debounce(this.loadPdf, 1000)\n\n resizePage() {\n if (!this.canvasWrapperEl) {\n return\n }\n const wrapper = this.canvasWrapperEl\n const wrapperRectangle = wrapper.getBoundingClientRect()\n\n if (this.pdfRenderer)\n this.pdfRenderer.resizeCurrentPage(wrapperRectangle, this.viewOptionSelected.option)\n this.loading = false\n }\n\n debouncePdfResizeActual = debounce(this.resizePage, 200)\n renderPdfPage = async () => {\n if (!this.canvasWrapperEl) {\n return\n }\n const wrapper = this.canvasWrapperEl\n const wrapperRectangle = wrapper.getBoundingClientRect()\n \n if (this.pdfRenderer) {\n await this.pdfRenderer.renderPage(this.currentPageNo, wrapperRectangle, this.viewOptionSelected.option)\n this.totalNumOfPages = this.pdfRenderer.numberOfPages\n }\n this.loading = false\n }\n debouncePdfResize () {\n if (!this.pdfRenderer)\n return\n this.loading = true\n this.debouncePdfResizeActual()\n }\n previousWrapperBoxSize: DOMRect | null = null\n\n viewOptionChanged = (e: Event) => {\n const selectEl = e.target as HTMLSelectElement\n\n const value = selectEl.value as PdfZoomOptions\n if (value) {\n this.zoomoption = value\n this.dispatchEvent(new CustomEvent(\"zoom-option-changed\", {\n bubbles: false,\n composed: true,\n detail: this.viewOptionSelected.option\n }))\n \n this.debouncePdfResize()\n }\n }\n\n resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n if (entry.target.nodeName == \"DIV\" && entry.target.classList.contains(\"canvas-wrapper\") && entry.contentBoxSize) {\n const wrapper = entry.target as HTMLDivElement\n const contentBoxSize = wrapper.getBoundingClientRect()\n if (this.previousWrapperBoxSize) {\n const diffWidth = this.previousWrapperBoxSize.width - contentBoxSize.width\n const diffHeight = this.previousWrapperBoxSize.height - contentBoxSize.height\n // console.log(`diff = ${diffWidth}, ${diffHeight}`)\n let passThreshold = Math.abs(diffWidth) > threshold || Math.abs(diffHeight) > threshold\n if (!passThreshold)\n continue\n }\n this.debouncePdfResize()\n this.previousWrapperBoxSize = contentBoxSize\n }\n }\n })\n checkZoomOptionProp() {\n if (this.zoomoption) {\n const option = viewOptions.find(o => o.option == this.zoomoption)\n if (option) {\n this.viewOptionSelected = option\n this.debouncePdfResize()\n }\n }\n }\n \n render() {\n return html`\n \n
      \n
      \n
      \n \n ${this.currentPageNo}\n /\n ${this.totalNumOfPages}\n \n \n \n \n \n \n \n
      \n
      \n \n
      \n
      \n
      \n
      \n ${this.loading ? html`\n
      \n \n
      \n ` : html``}\n \n
      \n
      \n `\n }\n}","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nimport { onMounted, ref } from \"vue\"\n import { getBusinessUnitUsers } from \"@common/services/businessUnitService\"\n import { User } from \"@api\"\n\n \nexport default /*@__PURE__*/_defineComponent({\n __name: 'businessUnitMembers',\n props: {\n id: {\n type: Number,\n required: true\n },\n name: {\n type: String,\n required: false\n }\n },\n setup(__props) {\n\n const props = __props\n\n let users = ref([])\n\n let getUsers = async () => {\n if (!props.id)\n return\n \n let us = await getBusinessUnitUsers(props.id)\n users.value = us\n }\n onMounted(() => {\n getUsers()\n })\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createElementVNode(\"h1\", null, _toDisplayString(__props.name), 1),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(users), (user) => {\n return (_openBlock(), _createElementBlock(\"p\", null, _toDisplayString(user.firstName) + \" \" + _toDisplayString(user.lastName), 1))\n }), 256))\n ], 64))\n}\n}\n\n})","\n\n","import script from \"./businessUnitMembers.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./businessUnitMembers.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","const defaultAppStyle = { \"font-size\": \"1.4rem\" }\n\nexport function getDefaultAppStyle() {\n return Object.assign({}, defaultAppStyle)\n}\n\nexport function calcDefaultAppFontSize(factor: number) {\n let fontApp = \"1.4rem\"\n if (factor)\n fontApp = 1.4 * factor + \"rem\"\n return fontApp\n}\n\nexport function getDefaultAppTheme() {\n return {\n background: \"var(--digilean-primary-text)\",\n fillColor: \"var(--digilean-secondary-background)\",\n color: \"inherit\"\n }\n}","import angular from \"angular\"\nimport type { IController } from \"angular\"\nimport { FileInfo } from \"@api\"\nimport { Theme } from \"@common/model/types\"\nimport { getFileUrl } from \"@common/services/documentService\"\nimport { PdfZoomOptions } from \"@common/components/viewers/pdfRenderer\"\nimport { settingsPdfApp } from \"./pdfDisplayer\"\nimport { calcDefaultAppFontSize, getDefaultAppTheme, getDefaultAppStyle } from \"../../common/appStyleService\"\n\ninterface pdfAppController extends IController {\n settings: settingsPdfApp\n internal: settingsPdfApp\n pdfSasUrl: string\n pdfReady: boolean\n loadingPdfUrl: boolean\n layoutFactor: number\n zoomOptionChanged: ($event: CustomEvent) => void\n updateTheme: ($event: CustomEvent) => void\n fileUploaded: ($event: CustomEvent) => void\n updateSettings: () => void\n}\n\n\nconst DigiLean = angular.module('DigiLean')\nDigiLean.component('pdfDisplayerNg', {\n templateUrl: \"pdfDisplayerAppNg.html\",\n bindings: {\n 'settings': '<',\n 'isAdminMode': '<',\n 'layoutFactor': '<'\n },\n controller: ['$element', '$scope',\n function(this: pdfAppController, $element, $scope) {\n let $ctrl = this\n $ctrl.pdfReady = false\n $ctrl.loadingPdfUrl = false\n $ctrl.internal = {\n title: \"\",\n pdfFileInfoId: \"\",\n pdfFileName: \"\",\n theme: getDefaultAppTheme()\n }\n $ctrl.pdfSasUrl = \"\"\n \n $ctrl.zoomOptionChanged = function($event) {\n const option = $event.detail as PdfZoomOptions\n $ctrl.internal.pdfZoomOption = option\n updateSettings()\n }\n $ctrl.updateTheme = function($event) {\n const theme = $event.detail as Theme\n $ctrl.internal.theme = theme\n updateSettings()\n }\n $ctrl.fileUploaded = function($event) {\n const files = $event.detail as FileInfo[]\n const file = files[0]\n $ctrl.internal.pdfFileName = file.fileName!\n $ctrl.internal.pdfFileInfoId = file.id!\n setPdfSasUrl()\n updateSettings()\n }\n function updateSettings () {\n \n const options = {\n detail: {settings: $ctrl.internal},\n bubbles: true,\n composed: true\n }\n $element[0].dispatchEvent(new CustomEvent(\"settings-changed\", options))\n }\n $ctrl.updateSettings = updateSettings\n\n $ctrl.appStyle = getDefaultAppStyle()\n function calcStyles() {\n $ctrl.appStyle[\"font-size\"] = calcDefaultAppFontSize($ctrl.layoutFactor)\n }\n calcStyles()\n\n $ctrl.titleChangedEvent = function($event) {\n $ctrl.internal.title = $event.detail\n $ctrl.updateSettings()\n }\n \n async function setPdfSasUrl () {\n if ($ctrl.internal.pdfFileInfoId && $ctrl.internal.pdfFileName && !$ctrl.loadingPdfUrl) {\n $ctrl.loadingPdfUrl = true\n const {pdfFileName,pdfFileInfoId} = $ctrl.internal\n const sasUrl = await getFileUrl(pdfFileName, pdfFileInfoId)\n $ctrl.pdfSasUrl = sasUrl\n $ctrl.loadingPdfUrl = false\n $ctrl.pdfReady = true\n $scope.$apply()\n }\n }\n function getSettingsFromProp() {\n if ($ctrl.settings) {\n const s = $ctrl.settings\n if (s.title)\n $ctrl.internal.title = s.title\n if (s.theme)\n $ctrl.internal.theme = s.theme\n if (s.pdfFileInfoId && s.pdfFileName) {\n $ctrl.internal.pdfFileInfoId = s.pdfFileInfoId\n $ctrl.internal.pdfFileName = s.pdfFileName\n setPdfSasUrl()\n }\n if (s.pdfZoomOption)\n $ctrl.internal.pdfZoomOption = s.pdfZoomOption\n }\n }\n \n $ctrl.$onInit = function() {\n getSettingsFromProp()\n }\n $ctrl.$onChanges = function (changes) {\n if (changes.settings) {\n getSettingsFromProp()\n }\n if (changes.layoutFactor && changes.layoutFactor.currentValue)\n calcStyles()\n }\n }\n ]}\n)","import { DirectiveBinding } from \"vue\"\nexport class CustomEventsEmitter {\n private element: HTMLElement | null = null\n \n created(el: HTMLElement, binding: DirectiveBinding) {\n const self = binding.dir as CustomEventsEmitter\n self.element = el\n }\n emit(eventName: string, value: any) {\n const rootEl = this.findRoot()\n const options = {\n detail: value,\n bubbles: true,\n composed: true\n }\n if (rootEl)\n rootEl.dispatchEvent(new CustomEvent(eventName, options))\n }\n findRoot() {\n if (!this.element)\n return\n const shadowRoot = this.element.getRootNode() as ShadowRoot\n if (shadowRoot) {\n const root = shadowRoot.host\n return root\n }\n return this.element\n }\n}\n","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, withDirectives as _withDirectives } from \"vue\"\n\nconst _hoisted_1 = { key: 0 }\nconst _hoisted_2 = {\n key: 1,\n for: \"file-input\"\n}\nconst _hoisted_3 = {\n key: 0,\n class: \"error\"\n}\nconst _hoisted_4 = [\".label\"]\nconst _hoisted_5 = [\"accept\"]\n\nimport {onMounted, ref, onUnmounted} from \"vue\"\n import { uploadFileBlobStorage } from \"@common/services/documentService\"\n import { CustomEventsEmitter } from \"@common/directives/vueCustomEventsEmitter\"\n \nexport default /*@__PURE__*/_defineComponent({\n __name: 'fileUploader',\n props: {\n accept: { type: String, required: false, default: \"*\" }\n },\n setup(__props) {\n\n const vCustomEventsEmitter = new CustomEventsEmitter()\n \n const wrapperEl = ref(null)\n const inputEl = ref(null)\n\n const props = __props\n\n let uploading = ref(false)\n let isDraggingOver = ref(false)\n let errorMsg = ref(\"\")\n\n let inputField: HTMLInputElement | null = null\n\n const onChangeInput = (e: Event) => {\n inputField = e.target as HTMLInputElement\n if (inputField.files && inputField.files[0]) {\n uploadFile(inputField.files[0])\n }\n }\n const uploadFile = async (file: File) => {\n uploading.value = true\n if (inputField)\n inputField.disabled = true\n \n const filesUploaded = await uploadFileBlobStorage(file)\n if (filesUploaded)\n vCustomEventsEmitter.emit(\"files-uploaded\", filesUploaded)\n \n if (inputField) {\n inputField.disabled = false\n inputField.value = \"\" \n }\n uploading.value = false\n }\n\n const getAndValidateFileDragging = (ev: DragEvent) => {\n errorMsg.value = \"\"\n if (ev.dataTransfer?.items && ev.dataTransfer?.items.length > 0) {\n console.log(\"ev.dataTransfer.items\", ev.dataTransfer.items)\n if (ev.dataTransfer.items.length > 1) {\n errorMsg.value = \"FILEUPLOADER_ONLY_ONE_FILE\"\n return\n }\n const item = ev.dataTransfer.items[0]\n if (item.kind == \"file\") {\n const file = item.getAsFile()\n return file\n }\n } else if (ev.dataTransfer?.files && ev.dataTransfer?.files.length > 0) {\n console.log(\"ev.dataTransfer.files\", ev.dataTransfer.files)\n if (ev.dataTransfer?.files.length > 1) {\n errorMsg.value = \"FILEUPLOADER_ONLY_ONE_FILE\"\n return\n }\n const file = ev.dataTransfer.files[0]\n return file\n }\n return null\n }\n const onDrop = (ev: DragEvent) => {\n ev.preventDefault()\n const file = getAndValidateFileDragging(ev)\n if (file)\n uploadFile(file)\n isDraggingOver.value = false\n }\n const onDragEnter = (e: DragEvent) => {\n console.log(\"onDragEnter\")\n e.preventDefault()\n isDraggingOver.value = true\n getAndValidateFileDragging(e)\n }\n const onDragOver = (e: DragEvent) => {\n e.preventDefault()\n isDraggingOver.value = true\n }\n const onDragLeave = (e: DragEvent) => {\n e.preventDefault()\n isDraggingOver.value = false\n }\n\n onMounted(() => {\n console.log(\"accept\", props.accept)\n if (inputEl.value)\n inputEl.value.addEventListener(\"change\", onChangeInput)\n if (wrapperEl.value) {\n wrapperEl.value.addEventListener(\"drop\", onDrop);\n wrapperEl.value.addEventListener(\"dragenter\", onDragEnter);\n wrapperEl.value.addEventListener(\"dragover\", onDragOver);\n wrapperEl.value.addEventListener(\"dragleave\", onDragLeave);\n }\n })\n onUnmounted(() => {\n if (inputEl.value)\n inputEl.value.removeEventListener(\"change\", onChangeInput)\n if (wrapperEl.value) {\n wrapperEl.value.removeEventListener(\"drop\", onDrop);\n wrapperEl.value.removeEventListener(\"dragenter\", onDragEnter);\n wrapperEl.value.removeEventListener(\"dragover\", onDragOver);\n wrapperEl.value.removeEventListener(\"dragleave\", onDragLeave);\n }\n })\n\nreturn (_ctx: any,_cache: any) => {\n return _withDirectives((_openBlock(), _createElementBlock(\"div\", {\n id: \"wrapper\",\n class: _normalizeClass({draggingover: _unref(isDraggingOver)}),\n ref_key: \"wrapperEl\",\n ref: wrapperEl\n }, [\n (_unref(uploading))\n ? (_openBlock(), _createElementBlock(\"label\", _hoisted_1, _cache[0] || (_cache[0] = [\n _createElementVNode(\"span\", null, \"Uploading ...\", -1),\n _createElementVNode(\"spinner-icon\", { spin: \"true\" }, null, -1)\n ])))\n : (_openBlock(), _createElementBlock(\"label\", _hoisted_2, [\n _cache[2] || (_cache[2] = _createElementVNode(\"translate-label\", { label: \"COMMON_DROPZONE\" }, null, -1)),\n (_unref(errorMsg))\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_3, [\n _cache[1] || (_cache[1] = _createElementVNode(\"br\", null, null, -1)),\n _createElementVNode(\"translate-label\", { \".label\": _unref(errorMsg) }, null, 40, _hoisted_4)\n ]))\n : _createCommentVNode(\"\", true)\n ])),\n _createElementVNode(\"input\", {\n type: \"file\",\n ref_key: \"inputEl\",\n ref: inputEl,\n accept: __props.accept,\n id: \"file-input\",\n class: \"noshow\"\n }, null, 8, _hoisted_5)\n ], 2)), [\n [_unref(vCustomEventsEmitter)]\n ])\n}\n}\n\n})","\n\n\n","import script from \"./fileUploader.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./fileUploader.vue?vue&type=script&setup=true&lang=ts\"\n\nimport _style_0 from \"./fileUploader.vue?vue&type=style&index=0&id=eba0e586&inline&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['styles',[_style_0]]])\n\nexport default __exports__","export default \"\\n#wrapper {\\n background: var(--digilean-secondary-background);\\n display: flex;\\n flex-direction: column;\\n justify-content: center;\\n align-items: center;\\n height: 100%;\\n border: 2px dashed var(--digilean-primary);\\n font-size: 1.2rem;\\n color: var(--digilean-primary-text);\\n}\\n#wrapper.draggingover {\\n border-color: var(--digilean-success);\\n background: var(--digilean-green-bright);\\n}\\ninput.noshow {\\n width: 0.1px;\\n height: 0.1px;\\n opacity: 0;\\n overflow: hidden;\\n position: absolute;\\n z-index: -1;\\n}\\nlabel {\\n cursor: pointer;\\n margin: 0;\\n padding: 6rem 2rem;\\n}\\n.error {\\n color: var(--digilean-error);\\n}\\n\"","import script from \"./businessUnit.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./businessUnit.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nimport { onUnmounted, computed, ref, onMounted } from \"vue\"\n import { getAllUnitsCached } from \"@common/services/businessUnitService\"\n import { Subscription } from \"rxjs\"\n import { BusinessUnit } from \"@api\"\n\n \nexport default /*@__PURE__*/_defineComponent({\n __name: 'businessUnit',\n props: {\n id: {\n type: Number,\n required: true\n }\n },\n setup(__props) {\n\n let sub: Subscription | null = null\n \n const props = __props\n \n let units = ref([])\n const getAllUnits = async () => {\n units.value = await getAllUnitsCached()\n }\n \n const unitNameComputed = computed(() => {\n if (props.id && units.value.length > 0) {\n const unit = units.value.find(u => u.id == props.id)\n if (unit)\n return unit.name\n }\n return \"\"\n })\n onMounted(() => {\n getAllUnits()\n })\n\n \n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"span\", null, _toDisplayString(unitNameComputed.value), 1))\n}\n}\n\n})","\n\n","import {LitElement, html, css} from \"lit\"\nimport {customElement, property} from \"lit/decorators.js\"\n\ntype PopupDirection = \"down\" | \"up\"\n\n@customElement('digilean-popup')\nexport class PopupElement extends LitElement {\n \n private buttonSlot: HTMLElement | null\n private contentSlot: HTMLElement | null\n\n private clickHandler\n constructor() {\n super()\n this.buttonSlot = null\n this.contentSlot = null\n }\n static styles = css`\n :host {\n display: block;\n position: relative;\n height: var(--digilean-image-height, 1.5rem);\n width: var(--digilean-image-width, 2rem);\n --digilean-fa-icon-width: 1rem;\n --digilean-fa-icon-height: 1rem;\n }\n fa-icon:hover {\n cursor: pointer;\n }\n div.popdown {\n display: none;\n flex-direction: column;\n position: absolute;\n width: var(--digilean-popup-width, 200px);\n z-index: 10;\n top: 2rem;\n right: 0;\n border-radius: var(--digilean-border-radius, 3px);\n background: var(--digilean-secondary-background);\n border: 1px solid var(--digilean-input-border);\n box-shadow: var(--digilean-popup-shadow);\n }\n div.popdown.show {\n display: flex;\n }\n div.top {\n display: flex;\n position: static;\n flex-direction: row;\n justify-content: flex-end;\n }\n div.content {\n position: static;\n }\n `\n\n @property({attribute: true})\n direction: PopupDirection = \"down\"\n\n @property({attribute: false})\n show: boolean = false\n\n toggle() {\n console.log(\"toggle\")\n this.show = !this.show\n this.requestUpdate()\n }\n //popupClickHandler(e: Event) {\n //const composedPath = e.composedPath()\n //const target = e.target as HTMLElement\n //this.getSlots()\n // if (this.buttonSlot && composedPath.includes(this.buttonSlot)) {\n // if (!this.show)\n // this.show = false\n // return\n // }\n //if (!this.contentSlot)\n // return\n // do nothing when not showing\n //if (!this.show)\n // return\n // close when showing and clicking outside\n // if (!composedPath.includes(this.contentSlot))\n // this.show = false \n //}\n getSlots() {\n if (!this.shadowRoot || (this.contentSlot && this.buttonSlot))\n return\n this.buttonSlot = this.shadowRoot.querySelector(\"slot[name=button]\")\n this.contentSlot = this.shadowRoot.querySelector(\"slot[name=content]\")\n }\n connectedCallback(): void {\n super.connectedCallback()\n this.getSlots()\n // this.clickHandler = (e: Event) => this.popupClickHandler(e)\n // document.addEventListener(\"click\", this.clickHandler)\n }\n disconnectedCallback(): void {\n super.disconnectedCallback()\n // document.removeEventListener(\"click\", this.clickHandler)\n }\n render() {\n \n return html`\n \n \n \n \n \n
      \n
      \n \n
      \n
      \n no content\n
      \n
      \n `\n }\n}","import {LitElement, html, css} from \"lit\"\nimport {customElement, property} from \"lit/decorators.js\"\nimport {unsafeHTML} from \"lit/directives/unsafe-html.js\"\nimport { Toast } from \".\"\nimport { classMap } from \"lit/directives/class-map.js\"\nimport { styleMap } from \"lit/directives/style-map.js\"\n\ntype AnimationState = \"nothing\" | \"slide-in\" | \"slide-out\"\n\n@customElement('toast-component')\nexport class ToastComponent extends LitElement {\n static styles = css`\n :host {\n display: block;\n position: relative;\n overflow: hidden;\n --toast-animation-time: 1s; /* will be overridden from js variable */\n --toast-opacity: 0.9;\n }\n .toast {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n font-size: 1.2rem;\n font-weight: 600;\n gap: 1rem;\n box-sizing: border-box;\n padding: 1.6rem;\n color: var(--digilean-text-on-dark);\n max-width: 300px;\n overflow: hidden;\n border-radius: 5px;\n opacity: var(--toast-opacity);\n cursor: pointer;\n --toast-transform-slide-width: calc(100% + var(--toaster-margin));\n &.slide-in, &.slide-out {\n transform: translateX(var(--toast-transform-slide-width));\n }\n &:hover {\n box-shadow: 0 1px 3px var(--digilean-grey-pigeon), 0 2px 4px var(--digilean-grey-pigeon);\n }\n }\n fa-icon {\n color: var(--digilean-text-on-dark);\n font-size: 1.8rem;\n }\n .icon-container {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n width: 2rem;\n height: 2rem;\n --digilean-icon-height: 2rem;\n --digilean-icon-width: 2rem;\n }\n digilean-checked {\n --digilean-icon-height: 2.2rem;\n --digilean-icon-width: 2.2rem;\n }\n .content {\n flex: auto;\n opacity: 1;\n }\n .info {\n background-color: var(--digilean-info);\n }\n .success {\n background-color: var(--digilean-success);\n }\n .error {\n background-color: var(--digilean-error);\n }\n .warning {\n background-color: var(--digilean-warning);\n }\n .default {\n background-color: var(--digilean-important);\n }\n .slide-in {\n animation: slide-in var(--toast-animation-time) forwards;\n }\n .slide-out {\n animation: slide-out var(--toast-animation-time) forwards;\n } \n @keyframes slide-in {\n 0% { \n transform: translateX(var(--toast-transform-slide-width));\n opacity: 0;\n }\n 100% { \n transform: translateX(0%);\n opacity: var(--toast-opacity);\n }\n }\n @keyframes slide-out {\n 0% { \n transform: translateX(0%);\n opacity: var(--toast-opacity);\n }\n 100% { \n transform: translateX(var(--toast-transform-slide-width));\n opacity: 0;\n }\n }\n `\n\n @property({attribute: true, type: Number})\n animationseconds = 2\n\n @property({attribute: true, type: Number})\n index = 0\n\n _toast = new Toast(\"info\", \"\")\n @property({attribute: false})\n set toast(t: Toast) {\n this._toast = t\n t.changedCallback = () => this.toastUpdated()\n t.destroyCallback = () => this.destroyToast()\n }\n get toast() {\n return this._toast\n }\n\n toastUpdated() {\n console.log(\"toastUpdated\", this.id)\n this.requestUpdate()\n }\n @property({attribute: true})\n animation: AnimationState = \"nothing\"\n\n connectedCallback(): void {\n super.connectedCallback()\n this.animation = \"slide-in\"\n }\n disconnectedCallback(): void {\n this.animation = \"nothing\"\n super.disconnectedCallback()\n }\n destroyToast() {\n this.animation = \"slide-out\"\n const evt = new CustomEvent(\"toast-removing\", { composed: true, bubbles: false, detail: this.id})\n this.dispatchEvent(evt)\n return new Promise((resolve) => {\n setTimeout(() => {\n resolve(\"animation done\")\n }, this.animationseconds * 1000)\n })\n \n }\n getClasses(){\n const classes: Record = { toast: true }\n classes[this.toast.type] = true\n classes[this.toast.size] = true\n classes[this.animation] = true\n return classes\n }\n getIcon() {\n if (this.toast.customIcon)\n return this.toast.customIcon\n\n switch (this.toast.type) {\n case \"error\":\n return ``\n case \"warning\":\n return ``\n case \"success\":\n return ``\n default:\n return ``\n }\n }\n render() {\n const classes = this.getClasses()\n const icon = this.getIcon()\n const styles = {\n \"--toast-animation-time\": `${this.animationseconds}s`\n }\n\n return html`\n
      this.destroyToast()}>\n
      \n ${unsafeHTML(icon)}\n
      \n
      \n ${unsafeHTML(this.toast.content)}\n
      \n
      \n `\n }\n}","import {LitElement, html, css} from \"lit\"\nimport {customElement, state} from \"lit/decorators.js\"\nimport { Toast } from \".\"\nimport \"./toastComponent\"\nimport { ToastComponent } from \"./toastComponent\"\nimport toastService, { toasts } from \".\"\n\n@customElement('toast-master')\nexport class ToastMaster extends LitElement {\n static styles = css`\n :host {\n --toaster-margin: 0.5rem;\n background-color: transparent;\n display: flex;\n flex-direction: column;\n justify-content: start;\n gap: var(--toaster-margin);\n width: 300px;\n inset: unset;\n margin: 0;\n top: var(--toaster-margin);\n right: var(--toaster-margin);\n border: 0;\n }\n .toast-container {\n flex: auto;\n }\n `\n\n private animationSeconds = 0.3\n\n @state()\n toasts: Toast[] = []\n\n connectedCallback(): void {\n super.connectedCallback()\n toasts.subscribe(toasts => {\n this.toasts = toasts\n this.requestUpdate()\n })\n }\n onToastRemoving(e: CustomEvent) {\n const toastId = (e.target as HTMLElement).id // e.detail as string\n this.removeToastDelay(toastId)\n }\n removeToastDelay(id: string) {\n if (!id)\n return\n setTimeout(() => {\n let toastEl = this.renderRoot.querySelector(`#${id}`) as ToastComponent | null\n if (toastEl)\n toastEl.animation = \"nothing\" // must do this to ensure things\n toastEl = null\n \n toastService.removeToast(id)\n }, this.animationSeconds * 1000)\n }\n \n render() {\n return html`\n ${this.toasts.map(t =>\n html`\n \n \n `\n )}\n `\n }\n}","import envConfig from \"@common/envConfig\";\n\nangular.module(\"DigiLean\").factory('strategyService', ['$http',\n function ($http) {\n function strategyService() {\n var resource = \"/strategy\";\n var resourceUrl = envConfig.webApiUrl + resource;\n\n return {\n fixStrategy: function (){\n var url = resourceUrl + \"/fixStrategy/\";\n return $http.put(url).then(function(result){\n return result.data;\n });\n },\n getStrategyMap: function (){\n var url = resourceUrl + \"/getStrategyMap/\";\n return $http.get(url).then(function(result){\n return result.data;\n });\n },\n getStrategyMapByAsset: function (assetid){\n var url = resourceUrl + \"/getStrategyMapByAsset/\" + assetid;\n return $http.get(url).then(function(result){\n return result.data;\n });\n },\n canEditGoal: function (goalId) {\n var url = resourceUrl + \"/caneditgoal/\" + goalId;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n getTeamGoals: function (breakthroughGoalId, assetId) {\n var url = resourceUrl + \"/getTeamGoals?breakthroughGoalId=\" + breakthroughGoalId + \"&assetId=\" + assetId;\n return $http.get(url).then(function(result){\n return result.data;\n });\n },\n getAllActiveTeamGoals: function (assetId) {\n var url = resourceUrl + \"/GetAllActiveTeamGoals?assetId=\" + assetId;\n return $http.get(url).then(function(result){\n return result.data;\n });\n },\n getAllTeamGoals: function (assetId) {\n var url = resourceUrl + \"/GetAllTeamGoals?assetId=\" + assetId;\n return $http.get(url).then(function(result){\n return result.data;\n });\n },\n \n getAllGoals: function (){\n var url = resourceUrl + \"/getAllGoals/\";\n return $http.get(url).then(function(result){\n return result.data;\n });\n },\n getActiveBreakthroughObjectives: function (){\n var url = resourceUrl + \"/GetActiveBreakthroughObjectives/\";\n return $http.get(url).then(function(result){\n return result.data;\n });\n },\n getBreakthroughObjectives: function (){\n var url = resourceUrl + \"/getBreakthroughObjectives/\";\n return $http.get(url).then(function(result){\n return result.data;\n });\n },\n getStrategyBoard: function (){\n var url = resourceUrl + \"/GetStrategyBoard/\";\n return $http.get(url).then(function(result){\n return result.data;\n });\n },\n \n getStrategyBoardById: function (boardId){\n var url = resourceUrl + \"/GetStrategyBoardById/\" + boardId;\n return $http.get(url).then(function(result){\n return result.data;\n });\n },\n getSubGoalsBoard: function (goalId) {\n var url = resourceUrl + \"/getSubGoalsBoard/\" + goalId;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n updateStrategyGoalSortOrder: function (boardId, sortOrder) {\n var url = resourceUrl + \"/UpdateStrategyGoalSortOrder/\" + boardId ;\n return $http.put(url, sortOrder).then(function (result) {\n return result.data;\n });\n },\n getNoImprovementPerStrategyStatus: function (strategyGoalId, assetId){\n var url = resourceUrl + \"/\" + strategyGoalId + \"/getNoImprovementPerStrategyStatus/\";\n if(assetId){\n url = resourceUrl + \"/\" + strategyGoalId + \"/getNoImprovementPerStrategyStatus/\" + assetId;\n }\n return $http.get(url).then(function(result){\n return result.data;\n });\n },\n getMyStrategyTasks: function (timeperiod){\n var strategyGoalsId = [];\n var strategyGoalsQuery = {\n strategyGoalsList:strategyGoalsId,\n timePeriod: timeperiod\n }\n var url = resourceUrl + \"/getMyStrategyTasks/\";\n return $http.post(url, strategyGoalsQuery).then(function(result){\n return result.data;\n });\n },\n\n getTasksForStrategyGoals: function (strategyGoals, timeperiod){\n var strategyGoalsId = [];\n for(var i=0; i(url)\n}\n\nexport function getTemplate(id: number) {\n const url = resourceUrl + \"/getTemplate/\" + id\n return backend.get(url)\n}\n\nexport function getTemplates() {\n const url = resourceUrl + \"/getTemplates\"\n return backend.get(url)\n}\n\nexport function getPreviewImageUrl(id: number) {\n const url = resourceUrl + \"/GetPreviewImageUrl/\" + id \n return backend.get(url)\n}\n\nexport function generatePreview(id: number) {\n const url = \"preview/generateDashboard/\" + id\n return backend.post(url, {})\n}\n\nexport function addStrategyGoalToDashboard(id: number, strategyGoalId: number) {\n const url = resourceUrl + \"/\" + id + \"/addStrategyGoalToDashboard\"\n return backend.post(url, strategyGoalId)\n}\n\nexport function getUserListForBoard(boardId: number) {\n const url = resourceUrl + \"/getUserListForBoard/\" + boardId\n return backend.get(url)\n}\n\nexport function getAll() {\n return backend.get(resourceUrl)\n}\n\nexport function getAllForAdmin() {\n const url = resourceUrl + \"/getAllForAdmin\"\n return backend.get(url)\n}\n\nexport function addDashboard(dashboard: Dashboard) {\n return backend.post(resourceUrl, dashboard)\n}\n\nexport function copyDashboard(id: number, targetOptions: BoardCopyOptions) {\n const url = resourceUrl + \"/copyDashboard/\" + id\n return backend.post(url, targetOptions)\n}\n\nexport function copyPage(id: number, targetOptions: BoardCopyOptions) {\n const url = resourceUrl + \"/copyPage/\" + id\n return backend.post(url, targetOptions)\n}\n\nexport function createFromTemplate(id: number, targetOptions: DashboardCreateFromTemplateOptions) {\n const url = resourceUrl + \"/createFromTemplate/\" + id\n return backend.post(url, targetOptions)\n}\n\nexport function createTemplate(id: number, options: CreateDashboardTemplateOptions) {\n const url = resourceUrl + \"/createTemplate/\" + id\n return backend.post(url, options)\n}\n\nexport function saveDashboard(dashboard: Dashboard) {\n const url = resourceUrl + \"/\" + dashboard.id;\n return backend.put(url, dashboard)\n}\n\nexport function updateSettings(id: number, settings: string) {\n const dashboardSettings: DashboardSettings = {\n dashboardId: id,\n settings: settings\n }\n const url = resourceUrl + \"/updateSettings/\" + id;\n return backend.put(url, dashboardSettings)\n}\n\nexport function updateTitle(id: number, title: string) {\n const dashboardTitle: DashboardTitle = {\n dashboardId: id,\n title: title\n };\n const url = resourceUrl + \"/updateTitle/\" + id;\n return backend.put(url, dashboardTitle)\n}\n\nexport function updateDashboardAsset(dashboard: Dashboard) {\n const url = resourceUrl + \"/UpdateDashboardAsset/\" + dashboard.id\n return backend.put(url, dashboard)\n}\n\nexport async function saveComponentSettings(widgetId: number, settings: ComponentSettings) {\n if (widgetId <= 0)\n return // only save when widgetId is valid\n const url = resourceUrl + \"/SaveComponentSettings/\" + widgetId\n return await backend.put(url, settings)\n}\n\n/**\n * \n * @param widget Updates coordinates as well\n */\nexport function updateWidget(widget: DashboardWidget) {\n const widgetClone = structuredClone(widget) //new standard method in browsers API for deep cloning\n if (typeof widgetClone.settings == \"object\")\n widgetClone.settings = JSON.stringify(widgetClone.settings)\n const url = resourceUrl + \"/updateWidget/\" + widget.id\n return backend.put(url, widgetClone)\n}\n\n\nexport function deleteDashboard(dashboardId: number) {\n const url = resourceUrl + \"/\" + dashboardId;\n return backend.delete(url)\n}\n\nexport function deleteTemplate(templateId: number) {\n const url = resourceUrl + \"/deleteTemplate/\" + templateId;\n return backend.delete(url)\n}\n\nexport function addPage(page: DashboardPage) {\n const url = resourceUrl + \"/addPage\"\n return backend.post(url, page)\n}\n\nexport function deletePage(pageId: number) {\n const url = resourceUrl + \"/deletePage/\" + pageId\n return backend.delete(url)\n}\n\nexport function addWidget(widget: DashboardWidget) {\n const url = resourceUrl + \"/addwidget\"\n return backend.post(url, widget)\n}\n\nexport function copyWidget(id: number, placementWidget: DashboardWidget) {\n const url = resourceUrl + \"/copyWidget/\" + id\n return backend.post(url, placementWidget)\n}\n\nexport function deleteWidget(widgetId: number) {\n const url = resourceUrl + \"/deleteWidget/\" + widgetId;\n return backend.delete(url)\n}\n\nexport function tryFixLayout(dashboardId: number, pageId: number) {\n const url = `${resourceUrl}/${dashboardId}/FixLayout/${pageId}`\n return backend.get(url)\n}\nexport function tryFixLayoutWidgets(widgets: DashboardWidget[]) {\n const widgetsSettings = widgets.map(w => {\n if (w.settings && typeof w.settings !== \"string\") {\n w.settings = JSON.stringify(w.settings)\n }\n return w\n })\n const url = `${resourceUrl}/TryFixLayout`\n return backend.post(url, widgetsSettings)\n}\nexport function getPageRowMax(dashboardId: number) {\n return backend.get(`${resourceUrl}/${dashboardId}/GetPageRowMax`)\n}\nexport function getThemes() {\n return [\n {\n fillColor: \"var(--digilean-secondary-background)\",\n background: \"var(--digilean-primary-text)\",\n color: \"inherit\"\n },\n {\n fillColor: \"#FFF6DF\", // orange\n background: \"#FCBB42\"\n },\n {\n fillColor: \"#EDF7E3\", // green\n background: \"#8CC152\"\n },\n {\n fillColor: \"#DFF3FB\", //blue\n background: \"#0099de\" //\"#3BAFDA\"\n },\n {\n fillColor: \"#FEE4DF\", // red\n background: \"#E9573F\"\n },\n {\n fillColor: \"#FBE9F3\", // pink\n background: \"#D770AD\"\n }\n\n ]\n}","import { UserAccessLevel } from \"@api\";\n\nexport function hasDefaultAccess(userAccessLevel: UserAccessLevel) {\n if(!userAccessLevel)\n {\n return true;\n }\n else if(userAccessLevel.isAdmin || userAccessLevel.assetRole == \"Member\" || userAccessLevel.assetRole == \"Owner\" ) {\n return true\n }\n else {\n return false\n }\n}\n\n","import * as dashboardService from \"@common/services/dashboardService\"\nimport { hasDefaultAccess } from \"@common/components/dashboard/designer/common/userAccessService\"\n\nangular\n .module(\"DigiLean\")\n .directive('threeCTableApp', ['$translate', 'threeCService', 'debounce',\n function ($translate, threeCService, debounce) {\n return {\n templateUrl: 'threeCTableApp.html',\n restrict: 'E',\n scope: {\n 'isAdminMode': '<',\n 'settings': '<',\n 'assetId': '<',\n 'settingsChangeHandler': '&',\n 'context': '@',\n 'userAccess': '<',\n },\n link: function (scope, elem, attrs) {\n\n scope.theme = {\n background: \"transparent\",\n color: \"inherit\"\n };\n scope.postIts = dashboardService.getThemes();\n scope.title = $translate.instant(\"COMMON_TITLE\");\n scope.style = {\n background: \"transparent\",\n color: \"inherit\"\n }\n scope.isLoading = false;\n scope.useResizing = true;\n scope.isStandAlone = false; // Indicate if this app is running outside flexiboard.\n scope.boardId = null;\n scope.canEdit = true;\n\n scope.$watch('userAccess', function (userAccess) {\n scope.canEdit = hasDefaultAccess(userAccess);\n });\n\n // Resolve \n if (scope.context && scope.context == \"standAlone\") {\n scope.isStandAlone = true;\n scope.useResizing = false;\n } else {\n scope.isStandAlone = false;\n }\n scope.$watch('settings', function (settings) {\n scope.settings = settings;\n if (settings) {\n scope.title = settings.title;\n scope.style = settings.style;\n if (settings.theme) {\n scope.theme = settings.theme;\n }\n if (settings.boardId) {\n scope.boardId = settings.boardId;\n }\n // ThreeCTableOptions\n scope.options = {\n boardId: scope.boardId,\n isStandAlone: false\n }\n }\n else {\n scope.createLog();\n }\n });\n\n scope.createLog = function() {\n var options = {\n name: scope.title,\n assetId: scope.assetId\n }\n threeCService().createLog(options).then(function(board) {\n scope.boardId = board.id;\n scope.options = {\n boardId: scope.boardId,\n isStandAlone: false\n }\n scope.updateSettings();\n });\n }\n\n scope.changeTheme = function (theme) {\n scope.theme = theme;\n scope.updateSettings();\n }\n\n scope.updateSettings = function () {\n var componentSettings = {\n title: scope.title,\n style: scope.style,\n theme: scope.theme,\n boardId: scope.boardId\n };\n scope.settingsChangeHandler({ settings: componentSettings });\n }\n scope.commitChangesDebounced = debounce(scope.updateSettings, 2000, false);\n }\n }\n }]);\n\n","import moment from \"moment\"\nimport * as boardService from \"@common/services/boardService\"\nimport * as timeService from \"@common/services/timeService\"\nimport { hasDefaultAccess } from \"@common/components/dashboard/designer/common/userAccessService\"\n\nangular.module(\"DigiLean\")\n .directive('threeCTable', ['NgTableParams', '$filter', '$translate', '$uibModal', 'threeCService', 'boardTaskService',\n function (NgTableParams, $filter, $translate, $uibModal, threeCService, boardTaskService) {\n return {\n templateUrl: \"threeCTable.html\",\n restrict: \"E\",\n scope: {\n \"options\": \"<\",\n 'isAdminMode': '<',\n 'userAccess': ' {\n if(scope.boardId == board.id){\n threeCService().getLogInfo(scope.boardId).then(function (info) {\n scope.boardInfo = info;\n });\n getAllUsers(scope.boardId);\n }\n })\n\n // Filter handling\n scope.$watch('options', function (options) {\n if (options) {\n if (options.boardId) {\n scope.boardId = options.boardId;\n scope.isStandAlone = options.isStandAlone\n // Load board\n threeCService().getLogInfo(scope.boardId).then(function (info) {\n scope.boardInfo = info;\n });\n getAllUsers(scope.boardId);\n }\n }\n });\n\n // load users\n function getAllUsers() {\n boardService.getUserListForBoard(scope.boardId).then(function (data) {\n scope.users = data;\n scope.getValues();\n });\n }\n\n scope.updateName = function () {\n var info = {\n id: scope.boardId,\n name: scope.boardInfo.name\n }\n boardService.updateName(scope.boardId, info).then(function () {\n //\n })\n }\n\n scope.getValues = function () {\n // scope.buildColumns();\n scope.tableParams = new NgTableParams({\n sorting: { Id: \"desc\" },\n count: 10,\n }, {\n getData: scope.getTableValues\n });\n\n }\n\n\n\n scope.sorting = \"\";\n scope.getTableValues = function (params) {\n\n var sorting = [];\n // Build sortExpression for database to be able to deserialize, becuase NgTableParams.sorting is a dynamic object.\n for (var propt in params._params.sorting) {\n sorting.push({\n property: propt,\n direction: params._params.sorting[propt]\n });\n }\n scope.sorting = sorting;\n // We will build params based on the built-in NgTableParams + our sorting array\n var dbParams = {\n page: params._params.page,\n count: params._params.count,\n sorting: scope.sorting,\n filters: scope.filter\n }\n return threeCService().getItems(scope.boardId, dbParams).then(function (data) {\n scope.totalMatchingRecords = data.total;\n params.total(data.total); // recal. page nav controls\n // Map values\n data.values.forEach(value => {\n initializeItem(value)\n });\n scope.items = data.values;\n return data.values;\n\n });\n }\n\n var initializeItem = function (item) {\n if (item.createdDate) {\n item.createdDate = moment(item.createdDate).toDate();\n }\n if (item.dueDate) {\n item.dueDate = moment(item.dueDate).toDate();\n if(item.pdca != \"100\"){\n item.dateStyleClass = timeService.getDateStyle(item.dueDate);\n } \n }\n item.owner = {\n userId: item.responsibleUserId\n };\n item.concernChanged = function (concern) {\n var concernValue = {\n boardTaskId: item.id,\n concern: concern\n }\n threeCService().updateConcern(item.id, concernValue).then(function (data) { })\n };\n item.causeChanged = function (content) {\n var cell = {\n id: item.causeCellId,\n value: content,\n smartTableColumnId: scope.boardInfo.causeId,\n boardTaskId: item.id\n }\n threeCService().updateCell(cell).then(function (data) {\n });\n };\n item.counterMeasureChanged = function (content) {\n var cell = {\n id: item.counterMeasureCellId,\n value: content,\n smartTableColumnId: scope.boardInfo.counterMeasureId,\n boardTaskId: item.id\n }\n threeCService().updateCell(cell).then(function (data) { })\n };\n item.ownerChanged = function (owner) {\n this.owner = owner;\n var taskAssigned =\n {\n taskId: item.id,\n userId: owner.id,\n userName: owner.fullName,\n userDisplayName: owner.displayName,\n };\n var options = {\n taskId: item.id,\n user: taskAssigned\n };\n if (owner) {\n boardTaskService().assignUser(options).then(function (data) { });\n }\n // Sync status when owner changed or cleared\n if (owner.userId != \"\") {\n if (this.pdca == null || this.pdca == \"0\") {\n this.statusChanged(\"25\");\n }\n }\n else {\n if (this.pdca == \"25\") {\n this.statusChanged(\"0\");\n }\n }\n };\n item.dueDateChanged = function (date) {\n this.dueDate = date;\n var duration = {\n startTime: date,\n endTime: date\n }\n boardTaskService().updateDuration(item.id, duration).then(function () {\n });\n };\n item.statusChanged = function (status) {\n this.pdca = status.toString();\n var itemStatus = {\n boardTaskId: item.id,\n status: item.pdca\n }\n threeCService().updateStatus(item.id, itemStatus).then(function (data) {\n });\n };\n }\n\n scope.addTask = function () {\n var item = {\n createdDate: new Date(),\n dueDate: new Date(),\n concern: \"\",\n cause: \"\",\n counterMeasure: \"\",\n pdca: \"0\",\n responsibleUserId: \"\",\n responsibleUser: \"\",\n }\n threeCService().createItem(scope.boardId, item).then(function (task) {\n \n })\n\n }\n scope.deleteTask = function (task) {\n // confirmation, then delete item\n boardTaskService().deleteTask(task.id).then(function () {\n \n });\n\n }\n\n scope.moveTask = function (task) {\n $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'movetask.html',\n controller: 'movetaskController',\n resolve: {\n task: function () {\n return task;\n }\n }\n });\n }\n\n var animateRow = function (item, cssClass) {\n var css = \"row-change\"; // default \n if (cssClass) css = cssClass; // if set\n item.cssClass = css\n setTimeout(() => {\n item.cssClass = \"\";\n }, 1000);\n }\n // Event subscription\n var isPartOfTasks = function (taskId) {\n var task = $filter('filter')(scope.items, { id: taskId }, true);\n if (task.length > 0) {\n return task[0];\n }\n }\n scope.subscribe(\"ThreeCItemCreated\", function (data) {\n if (scope.boardId == data.boardId) {\n var task = data.item;\n initializeItem(task);\n scope.items.unshift(task); // Insert first in list\n animateRow(task, \"row-added\");\n // TODO: Should only be activated by user who adds item.\n setTimeout(function () {\n // Activate\n $(elem).find(\".three-c-text-cell\")[0].focus();\n }, 200);\n }\n });\n\n scope.subscribe(\"SmartActionListCellUpdated\", function (cell) {\n var task = isPartOfTasks(cell.boardTaskId);\n if (task) {\n if (cell.smartTableColumnId == scope.boardInfo.causeId) {\n task.cause = cell.value;\n animateRow(task);\n }\n if (cell.smartTableColumnId == scope.boardInfo.counterMeasureId) {\n task.counterMeasure = cell.value;\n animateRow(task);\n }\n }\n });\n scope.subscribe(\"ThreeCItemConcernUpdated\", function (status) {\n var task = isPartOfTasks(status.boardTaskId);\n if (task) {\n task.concern = status.concern;\n animateRow(task);\n }\n });\n scope.subscribe(\"ThreeCItemStatusUpdated\", function (status) {\n var task = isPartOfTasks(status.boardTaskId);\n if (task) {\n task.pdca = status.status;\n if(task.dueDate && task.pdca != \"100\"){\n task.dateStyleClass = timeService.getDateStyle(task.dueDate);\n } else {\n task.dateStyleClass = \"\";\n }\n animateRow(task);\n }\n });\n scope.subscribe(\"TaskAssigned\", function (cell) {\n var task = isPartOfTasks(cell.taskId);\n if (task) {\n task.responsibleUserId = cell.userId;\n animateRow(task);\n }\n });\n scope.subscribe(\"TaskDurationUpdated\", function (cell) {\n var task = isPartOfTasks(cell.taskId);\n if (task) {\n task.dueDate = moment(cell.endTime).toDate();\n if(task.status != \"100\"){\n task.dateStyleClass = timeService.getDateStyle(task.dueDate);\n }\n animateRow(task);\n }\n });\n scope.subscribe(\"TaskDeleted\", function (id) {\n removeTaskFromBoard(id);\n });\n\n function removeTaskFromBoard(taskId) {\n var task = isPartOfTasks(taskId);\n if (task) {\n var index = scope.items.indexOf(task);\n animateRow(task, \"row-deleted\");\n setTimeout(() => {\n scope.items.splice(index, 1);\n }, 1000);\n }\n }\n\n scope.subscribe('ActionItemMovedToTask', function (task) {\n if (task.taskType == \"3C\" && task.boardId !== scope.boardId) {\n removeTaskFromBoard(task.id)\n } else if (task.boardId == scope.boardId) {\n var isPartOfTasks = scope.items.filter(t => t.id == task.id);\n if (isPartOfTasks.length == 0) {\n threeCService().getItem(task.id).then(function (task) {\n scope.items.push(task);\n animateRow(task, \"row-added\");\n }) \n }\n }\n });\n }\n }\n }]);","import envConfig from \"@common/envConfig\";\n\nangular.module(\"DigiLean\").factory('threeCService', [ '$http',\n function ( $http) {\n function threeCService() {\n var resource = \"/threec\";\n var resourceUrl = envConfig.webApiUrl + resource;\n\n return {\n\n getLogInfo: function (boardId) {\n var url = resourceUrl + \"/getLogInfo/\" + boardId; \n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n\n getItems: function (boardId, tableParams) {\n var url = resourceUrl + \"/getItems/\" + boardId; \n return $http.post(url, tableParams).then(function (result) {\n return result.data;\n });\n },\n\n getItem: function (id) {\n var url = resourceUrl + \"/getItem/\" + id; \n return $http.post(url).then(function (result) {\n return result.data;\n });\n },\n\n createItem: function (boardId, item) {\n var url = resourceUrl + \"/createItem/\" + boardId;\n return $http.post(url, item).then(function (result) {\n return result.data;\n });\n },\n\n createLog: function (options) {\n var url = resourceUrl + \"/createLog\";\n return $http.post(url, options).then(function (result) {\n return result.data;\n });\n },\n\n updateConcern: function (id, concern) {\n var url = resourceUrl + \"/updateConcern/\" + id;\n return $http.put(url, concern).then(function (result) {\n return result.data;\n });\n },\n updateStatus: function (id, status) {\n var url = resourceUrl + \"/updateStatus/\" + id;\n return $http.put(url, status).then(function (result) {\n return result.data;\n });\n },\n updateCell: function (cell) {\n var url = resourceUrl + \"/updateCell\";\n return $http.put(url, cell).then(function (result) {\n return result.data;\n });\n },\n }\n }\n return threeCService;\n }]);","import { hasDefaultAccess } from \"@common/components/dashboard/designer/common/userAccessService\"\n\nangular.module(\"DigiLean\")\n .directive('threeCDateCell', ['$rootScope',\n function ($rootScope) {\n return {\n templateUrl: \"threeCDateCell.html\",\n restrict: \"E\",\n scope: {\n 'date': '<',\n 'dateChangedHandler': '&',\n 'userAccess': ' {\n scope.cssClass = \"\";\n },2000);\n scope.dateChangedHandler({ date: date });\n }\n scope.canEdit = true;\n\n scope.$watch('userAccess', function (userAccess) {\n scope.canEdit = hasDefaultAccess(userAccess);\n });\n }\n\n \n }\n }]);","import { hasDefaultAccess } from \"@common/components/dashboard/designer/common/userAccessService\"\n\n\nangular.module(\"DigiLean\")\n .directive('threeCOwnerCell', ['$filter',\n function ($filter) {\n return {\n templateUrl: \"threeCOwnerCell.html\",\n restrict: \"E\",\n scope: {\n 'ownerUserId': '<',\n 'ownerChangedHandler': '&',\n 'users': '<',\n 'userAccess' : ' 0) {\n scope.selectedOwner = owner[0];\n } else {\n scope.selectedOwner = null;\n }\n \n }\n\n scope.canEdit = true;\n\n scope.$watch('userAccess', function (userAccess) {\n scope.canEdit = hasDefaultAccess(userAccess);\n });\n \n scope.cssClass = \"\";\n scope.ownerChanged = function (owner) {\n setOwner(owner.userId);\n scope.cssClass = \"animated flash\";\n setTimeout(() => {\n scope.cssClass = \"\";\n },1000);\n scope.ownerChangedHandler({ owner: owner });\n }\n \n }\n }\n }]);","import { hasDefaultAccess } from \"@common/components/dashboard/designer/common/userAccessService\"\n\n\nangular.module(\"DigiLean\")\n .directive('threeCStatusCell', ['$filter','$translate',\n function ($filter, $translate) {\n return {\n templateUrl: \"threeCStatusCell.html\",\n restrict: \"E\",\n scope: {\n 'status': '<',\n 'statusChangedHandler': '&',\n 'userAccess': ' {\n scope.cssClass = \"\";\n },1000);\n }\n \n scope.canEdit = true;\n\n scope.$watch('userAccess', function (userAccess) {\n scope.canEdit = hasDefaultAccess(userAccess);\n });\n\n scope.cssClass = \"\";\n scope.statusChanged = function (status) {\n setStatus(status);\n \n scope.statusChangedHandler({ status: status });\n }\n scope.PDCAoptions = [\n {\n status: \"0\",\n label: $translate.instant('PROJECT_NOT_STARTED'), \n pieChart: {\n data: [1, 1, 1, 1],\n options: {\n radius: 15,\n fill: [\"#f3f3f4\", \"#f3f3f4\", \"#f3f3f4\", \"#f3f3f4\"],\n }\n }\n },\n {\n status: \"25\",\n label: $translate.instant('COMMON_OWNER_ASSIGNED'),\n pieChart: {\n data: [1, 1, 1, 1],\n options: {\n radius: 15,\n fill: [\"#0077B5\", \"#f3f3f4\", \"#f3f3f4\", \"#f3f3f4\"],\n }\n }\n },\n {\n status: \"50\",\n label: $translate.instant('COMMON_ACTION_STARTED'),\n pieChart: {\n data: [1, 1, 1, 1],\n options: {\n radius: 15,\n fill: [\"#0077B5\", \"#0077B5\", \"#f3f3f4\", \"#f3f3f4\"],\n }\n }\n },\n {\n status: \"75\",\n label: $translate.instant('COMMON_ACTION_COMPLETE'),\n pieChart: {\n data: [1, 1, 1, 1],\n options: {\n radius: 15,\n fill: [\"#0077B5\", \"#0077B5\", \"#0077B5\", \"#f3f3f4\"],\n }\n }\n },\n {\n status: \"100\",\n label: $translate.instant('COMMON_RESULT_ACHIEVED'),\n pieChart: {\n data: [1, 1, 1, 1],\n options: {\n radius: 15,\n fill: [\"#5cb85c\", \"#5cb85c\", \"#5cb85c\", \"#5cb85c\"],\n }\n }\n }\n ];\n }\n }\n }]);","import { hasDefaultAccess } from \"@common/components/dashboard/designer/common/userAccessService\"\n\nangular.module(\"DigiLean\")\n .directive('threeCTextCell', ['debounce',\n function (debounce) {\n return {\n templateUrl: \"threeCTextCell.html\",\n restrict: \"E\",\n scope: {\n 'content': '=',\n 'changeHandler': '&',\n 'userAccess': ' 0) {\n var index = filters.indexOf(existingFilter[0]);\n filters.splice(index, 1);\n }\n }\n var a3filter = {\n items: [scope.a3Id],\n operator: \"InList\",\n sourceColumn: \"a3Id\"\n }\n filters.push(a3filter);\n scope.updateValue(dataSource.id);\n if(model.column.projectAttribute){\n setColor(model.column.projectAttribute);\n }\n } \n model.getSortValue = function () {\n return scope.number;\n }\n });\n \n scope.subscribe(\"ProjectNumberCellAutomaticTimeframeUpdated\", function (value) {\n if(scope.projectAttributeId === value.boardAttributeId){ \n scope.lastDate = null;\n settings.timePeriod.timeframe = value.timePeriod.timeframe;\n scope.updateValue(dataSource.id);\n }\n });\n scope.subscribe(\"ProjectNumberCellDecimalUpdated\", function (value) {\n if(scope.projectAttributeId === value.projectAttributeId){\n scope.decimals = value.decimals;\n scope.updateValue(dataSource.id);\n }\n });\n scope.subscribe(\"ProjectNumberCellUnitUpdated\", function (value) {\n if(scope.projectAttributeId === value.projectAttributeId){\n scope.unit = value.unit;\n }\n });\n scope.subscribe(\"ProjectNumberCellUnitPlacementUpdated\", function (value) {\n if(scope.projectAttributeId === value.projectAttributeId){\n scope.unitPlacement = value.unitPlacement;\n }\n });\n scope.subscribe(\"DataValueAdded\", function (value) {\n scope.updateValue(value.dataSourceId);\n });\n scope.subscribe(\"DataValueUpdated\", function (value) {\n scope.updateValue(value.dataSourceId);\n });\n scope.subscribe(\"DataValueDeleted\", function (value) {\n scope.updateValue(value.dataSourceId);\n });\n\n function getLastValue(){\n if (settings.timePeriod.timeframe === \"last\") {\n period = null;\n } else {\n if(!period){\n period = timeService.getTimePeriod(\"all\");\n }\n }\n dataService().getLastDate(dataSource.id, period, filters).then(function (fromDate) {\n scope.lastDate = moment(fromDate).toDate();\n var toDate = moment(fromDate).endOf('day');\n var dayperiod = {\n from:fromDate,\n to:toDate\n };\n \n var options = {\n timePeriod: dayperiod,\n filters: filters,\n };\n\n dataService().getSumForPeriod(dataSource.id, options).then(function (sum) {\n scope.number = sum;\n var payload = {\n projectAttributeId: scope.projectAttributeId,\n projectId: scope.projectId,\n value: scope.number\n } \n scope.publish(\"ProjectNumberCellUpdated\", payload);\n\n if(scope.decimals !== null) {\n if(scope.decimals !== undefined) {\n scope.number = mathService().roundNumber(scope.number, scope.decimals);\n }\n } \n });\n });\n\n }\n\n function getAll(){\n \n period = timeService.getTimePeriod(\"all\");\n \n dataService().getLastDate(dataSource.id, null, filters).then(function (lastDate) {\n \n var toDate = moment(lastDate).endOf('day');\n var newperiod = {\n from:period.from,\n to:toDate\n };\n \n var formula = null;\n if(dataSource.valueElement.unit == \"%\"){\n formula = \"average\";\n }\n var options = {\n timePeriod: newperiod,\n filters: filters,\n formula: formula\n };\n\n dataService().getSumForPeriod(dataSource.id, options).then(function (sum) {\n scope.number = sum;\n var payload = {\n columnId: scope.columnId,\n rowId: scope.a3Id,\n value: scope.number\n } \n scope.publish(\"A3NumberCellUpdated\", payload);\n if(scope.decimals !== null) {\n if(scope.decimals !== undefined) {\n scope.number = mathService().roundNumber(scope.number, scope.decimals);\n }\n } \n });\n });\n\n }\n scope.updateValue = function (id) {\n if (!dataSource) return;\n if (dataSource.id !== id) return;\n if (settings.timePeriod.timeframe === \"last\") {\n getLastValue();\n } else if(settings.timePeriod.timeframe === \"all\" ){\n getAll();\n } else{\n period = timeService.getTimePeriod(settings.timePeriod.timeframe);\n\n var options = {\n timePeriod: period,\n filters: filters,\n };\n dataService().getSumForPeriod(dataSource.id, options).then(function (sum) {\n \n if (sum && dataSource.valueElement.unit == \"%\") {\n dataService().getNumberOfValuesForPeriod(dataSource.id, options).then(function (numberOfValues) {\n sum = sum / numberOfValues;\n scope.number = sum;\n \n var payload = {\n columnId: scope.columnId,\n rowId: scope.a3Id,\n value: scope.number\n } \n scope.publish(\"A3NumberCellUpdated\", payload);\n if(scope.decimals !== null) {\n if(scope.decimals !== undefined) {\n scope.number = mathService().roundNumber(scope.number, scope.decimals);\n }\n }\n });\n } else {\n scope.number = sum;\n var payload = {\n columnId: scope.columnId,\n rowId: scope.a3Id,\n value: scope.number\n } \n scope.publish(\"A3NumberCellUpdated\", payload);\n if(scope.decimals !== null) {\n if(scope.decimals !== undefined) {\n scope.number = mathService().roundNumber(scope.number, scope.decimals);\n }\n }\n } \n });\n }\n \n };\n \n var setColor = function(cell) {\n if(cell && cell.background){\n scope.background = cell.background;\n scope.color = cell.color;\n }\n \n var predefinedPostIt = $filter('filter')(scope.postIts, { background: scope.background });\n if (predefinedPostIt.length > 0) {\n scope.selectedPostIt = predefinedPostIt[0];\n } else //Custom color \n {\n scope.selectedPostIt = { title: \"custom\", background: scope.background };\n scope.customColorBackground = cell.background;\n }\n }\n\n\n scope.selectColor = function (postIt) {\n scope.selectedPostIt = postIt;\n if(postIt.title === 'default'){\n scope.background = \"inherit\";\n scope.color = \"#676a6c\";\n } else {\n scope.background = postIt.background;\n scope.color = \"#ffffff\";\n }\n scope.commitChangesDebounced();\n }\n scope.selectCustomColor = function (color) {\n scope.selectedPostIt = { title: \"custom\", background: color };\n scope.background = color;\n scope.color = \"#ffffff\";\n scope.commitChangesDebounced();\n }\n\n scope.saveChanges = function() {\n var value = {\n background: scope.background,\n color: scope.color\n }\n scope.model.a3TableCell.value = value;\n scope.a3CellChangeHandler({a3TableCell: scope.model.a3TableCell})\n }\n\n // Debounce function so that save is called to often.\n scope.commitChangesDebounced = debounce(scope.saveChanges, 1000, false);\n\n }\n }\n }]);\n","import toaster from \"@common/components/toast\"\n\nangular\n .module('DigiLean')\n .directive(\"smarttableCustomerCell\", ['$filter', 'debounce','projectService','modalService','authService',\n function ($filter, debounce, projectService,modalService, authService) {\n return {\n templateUrl: 'smarttableCustomerCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'editable': '=',\n 'cellChangeHandler': '&',\n },\n link: function (scope, elem, attrs) {\n scope.customers = null;\n scope.customer = null;scope.q = null;\n \n scope.isAdmin = authService.hasRole(\"Admin\") || authService.hasRole(\"ProjectAdmin\");\n \n scope.$watch('model', function (model) {\n var value = scope.model.cell.value;\n if (value) {\n setValue(value);\n }\n model.getSortValue = function() {\n if (scope.customer) {\n return scope.customer.name;\n }\n return \"\";\n }\n });\n\n \n scope.subscribe(\"ProjectCustomerCreated\", function (newCustomer) {\n projectService().getProjectCustomers().then(function (customers) {\n scope.customers = customers; \n });\n });\n\n scope.subscribe(\"SmartTableCellUpdated\", function (cell) {\n if (cell.smartTableRowId == scope.model.cell.smartTableRowId && cell.smartTableColumnId == scope.model.cell.smartTableColumnId) {\n if (cell.value) {\n setValue(cell.value);\n }\n }\n });\n\n var setValue = function (value) {\n scope.customer = value.customer;\n } \n\n\n projectService().getProjectCustomers().then(function (customers) {\n scope.customers = customers; \n });\n\n scope.newCustomer = function (newname) {\n $translate(['COMMON_CANCEL', 'COMMON_SUBMIT', 'ADMIN_MESSAGE_NEW_CUSTOMER']).then(function (translations) {\n var modalOptions = {\n closeButtonText: translations.COMMON_CANCEL,\n actionButtonText: translations.COMMON_SUBMIT,\n headerText: translations.COMMON_SUBMIT + ' ' + newname + '?',\n bodyText: translations.ADMIN_MESSAGE_NEW_CUSTOMER\n };\n \n modalService.showModal({}, modalOptions).then(function (result) {\n var registration = {\n id: 0,\n name: newname\n };\n projectService().createNewCustomer(registration).then(function (customer) {\n $translate('ADMIN_MESSAGE_CUSTOMER_CREATED').then(function (msg) {\n toaster.success(msg);\n projectService().getProjectCustomers().then(function (customers) {\n scope.customers = customers;\n var matching = $filter('filter')(scope.customers, { id: customer.id }, true);\n if (matching.length > 0) {\n scope.selectCustomer(matching[0]);\n scope.q = null;\n }\n });\n }, function (translationId) {\n $scope.headline = translationId;\n });\n });\n });\n \n }); \n };\n scope.saveChanges = function() {\n var value = {\n customer: scope.customer\n }\n scope.model.cell.value = value;\n scope.cellChangeHandler({cell: scope.model.cell})\n }\n\n // Debounce function so that save is called to often.\n scope.commitChangesDebounced = debounce(scope.saveChanges, 1000, false);\n scope.selectCustomer = function (customer) {\n scope.customer = customer;\n scope.saveChanges(); \n };\n\n /*\n function setProjectCustomer(){\n if (scope.projectInfo && scope.projectInfo.projectCustomerId && scope.customers) {\n var matching = $filter('filter')(scope.customers, { id: scope.projectInfo.projectCustomerId }, true);\n if (matching.length > 0) {\n scope.customer = matching[0];\n } \n }\n \n } */\n\n }\n }\n }]);\n","import * as boardService from \"@common/services/boardService\"\n\nangular\n .module('DigiLean')\n .directive(\"smarttableTextCell\", ['$filter', 'debounce', '$uibModal', 'projectService', 'smartcellService',\n function ($filter, debounce, $uibModal, projectService, smartcellService) {\n return {\n templateUrl: 'smarttableTextCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'editable': '=',\n 'cellChangeHandler': '&',\n 'adminmode': '='\n },\n link: function (scope, elem, attrs) {\n scope.text = \"\";\n scope.color = \"#676a6c\";\n scope.background = \"inherit\";\n scope.customColorBackground = \"#a9a9a9\";\n scope.postIts = projectService().getPostIts();\n scope.isCloned = false;\n var clonedNameCell = null;\n var cloneProjectId = null;\n scope.boardId = null;\n scope.clonedBoardId = null;\n\n scope.usePredefinedLabels = false;\n scope.labels = [];\n var columnId = null;\n\n scope.$watch('model', function (model) {\n var value = model.cell.value;\n columnId = model.column.id;\n scope.boardId = model.column.boardId;\n var settings = model.column.settings;\n\n if (value) {\n setValue(value);\n if (value.smartCloneId) {\n scope.smartCloneId = value.smartCloneId;\n cloneProjectId = value.cloneProjectId;\n //clonedNameCell = value.clonedNameCell;\n scope.isCloned = true;\n getClonedValue();\n }\n }\n if (settings) {\n if (settings.usePredefinedLabels && settings.predefinedLabels) {\n scope.labels = settings.predefinedLabels;\n scope.usePredefinedLabels = true;\n }\n }\n model.getSortValue = function () {\n if (scope.usePredefinedLabels && scope.labels) {\n var order = scope.labels.length;\n if(scope.selectedPostIt){\n var match = scope.labels.find(a => a.title == scope.text || a.text == scope.text)\n if (match) {\n order = scope.labels.indexOf(match);\n }\n }\n return order;\n }\n return scope.text;\n }\n });\n\n function getClonedValue() {\n smartcellService().get(scope.smartCloneId).then(function (result) {\n clonedNameCell = result.name;\n setValue(JSON.parse(result.value));\n });\n }\n\n scope.autofocus = function () {\n setTimeout(function () {\n //document.querySelector( \"input\" ).focus();\n $(\".project-text-cell\").focus();\n }, 50);\n }\n\n var setValue = function (value) {\n scope.background = value.background;\n scope.text = value.text;\n scope.color = value.color;\n var predefinedPostIt = $filter('filter')(scope.postIts, { background: scope.background });\n if (predefinedPostIt.length > 0) {\n scope.selectedPostIt = predefinedPostIt[0];\n } else //Custom color \n {\n scope.selectedPostIt = { title: \"custom\", background: scope.background };\n scope.customColorBackground = value.background;\n }\n if (scope.isCloned) {\n if (value.boardId) {\n scope.clonedBoardId = value.boardId;\n }\n if (value.labels) {\n scope.usePredefinedLabels = true;\n scope.labels = value.labels;\n } else {\n scope.usePredefinedLabels = false;\n }\n }\n }\n\n scope.subscribe(\"SmartTextCellLabelUpdated\", function (value) {\n if (columnId === value.columnId) {\n scope.labels = value.predefinedLabels;\n scope.usePredefinedLabels = value.usePredefinedLabels\n }\n });\n\n scope.subscribe(\"SmartClonedCellChanged\", function (cell) {\n if (scope.isCloned && cell.id == scope.smartCloneId) {\n if (cell.value) {\n setTimeout(function(){\n setValue(JSON.parse(cell.value));\n },50);\n }\n }\n });\n\n scope.subscribe(\"SmartTableCellUpdated\", function (cell) {\n if (cell.smartTableRowId == scope.model.cell.smartTableRowId && cell.smartTableColumnId == scope.model.cell.smartTableColumnId) {\n if (cell.value) {\n setValue(cell.value);\n }\n }\n });\n scope.selectTextAndColor = function (postIt) {\n scope.selectedPostIt = postIt;\n if (postIt.title === 'default') {\n scope.background = \"inherit\";\n scope.color = \"#676a6c\";\n } else {\n scope.background = postIt.background;\n scope.color = postIt.color;\n scope.text = postIt.title;\n }\n scope.commitChangesDebounced();\n }\n scope.selectColor = function (postIt) {\n scope.selectedPostIt = postIt;\n if (postIt.title === 'default') {\n scope.background = \"inherit\";\n scope.color = \"#676a6c\";\n } else {\n scope.background = postIt.background;\n scope.color = \"#ffffff\";\n }\n scope.commitChangesDebounced();\n }\n scope.selectCustomColor = function (color) {\n scope.selectedPostIt = { title: \"custom\", background: color };\n scope.background = color;\n scope.color = \"#ffffff\";\n scope.commitChangesDebounced();\n }\n scope.textChanged = function (text) {\n console.log(\"text changed: \" + text);\n scope.text = text;\n scope.commitChangesDebounced();\n }\n\n scope.removeClone = function () {\n scope.smartCloneId = null;\n scope.isCloned = false;\n scope.saveChanges();\n }\n\n function openConfigurationModal(projectId) {\n var settings = {\n projectId: projectId,\n visualizationType: \"text\",\n smartCloneId: scope.smartCloneId,\n smartCloneName: clonedNameCell\n\n }\n var modalInstance = $uibModal.open({ backdrop: 'static',\n templateUrl: 'cellCloneConfigForm.html',\n controller: 'cellCloneConfigController',\n resolve: {\n settings: function () {\n return settings;\n }\n }\n });\n\n modalInstance.result.then(function (result) {\n scope.smartCloneId = result.id;\n cloneProjectId = result.projectId;\n if (result.name) {\n scope.isCloned = true;\n clonedNameCell = result.name;\n var existingCellValue = JSON.parse(result.value);\n if (existingCellValue) {\n setValue(existingCellValue);\n }\n if (scope.labels) {\n scope.usePredefinedLabels = true;\n }\n scope.saveChanges();\n }\n }, function () {\n //scope.isCloned = false;\n //scope.saveChanges();\n });\n }\n\n scope.openConfiguration = function () {\n if(cloneProjectId) {\n openConfigurationModal(cloneProjectId);\n }\n if (scope.projectId) {\n openConfigurationModal(scope.projectId);\n } else {\n boardService.getProjectForBoard(scope.model.column.boardId).then(function (projectlist) {\n if (projectlist && projectlist.length > 0) {\n return openConfigurationModal(projectlist[0].id);\n } else {\n openConfigurationModal(null);\n }\n });\n }\n };\n\n function updateCloneValue() {\n if (clonedNameCell && scope.isCloned) {\n var value = {\n background: scope.background,\n color: scope.color,\n text: scope.text,\n boardId: scope.boardId\n };\n\n \n if (scope.labels) {\n scope.usePredefinedLabels = true;\n value.labels = scope.labels\n }\n\n var smartCloneCellValue = {\n id: scope.smartCloneId,\n value: value,\n name: clonedNameCell,\n type: \"text\",\n projectId: cloneProjectId\n };\n smartcellService().updateCloneValue(smartCloneCellValue).then(function (savedStatus) {\n scope.smartCloneId = savedStatus.id;\n scope.clonedBoardId = scope.boardId;\n });\n }\n }\n scope.saveChanges = function () {\n var value = {\n background: scope.background,\n color: scope.color,\n text: scope.text,\n smartCloneId: scope.smartCloneId,\n cloneProjectId: cloneProjectId\n }\n if (scope.usePredefinedLabels) {\n value.labels = scope.labels\n }\n scope.model.cell.value = value;\n scope.cellChangeHandler({ cell: scope.model.cell })\n if (scope.isCloned) {\n updateCloneValue();\n }\n }\n\n // Debounce function so that save is called to often.\n scope.commitChangesDebounced = debounce(scope.saveChanges, 1000, false);\n\n }\n }\n }]);\n","import * as timeService from \"@common/services/timeService\"\n\nangular\n .module('DigiLean')\n .directive(\"smarttableNumberCellAutomatic\", ['$filter', 'debounce', '$uibModal', 'projectService','dataService','mathService',\n function ($filter, debounce, $uibModal, projectService, dataService, mathService) {\n return {\n templateUrl: 'smarttableNumberCellAutomatic.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'editable': '=',\n 'cellChangeHandler': '&',\n }, \n link: function (scope, elem, attrs) {\n scope.number = null;\n scope.unit = null;\n scope.unitPlacement = \"right\";\n scope.lastDate = null;\n\n scope.smartTableRowId = null;\n scope.color = \"#676a6c\";\n scope.background = \"inherit\";\n scope.customColorBackground = \"#a9a9a9\";\n scope.postIts = projectService().getPostIts();\n var filters = [];\n var dataSource = null;\n var period = null; \n scope.smartTableColumnId = null;\n scope.decimals = null;\n var settings = null;\n\n scope.$watch('model', function (model) {\n var value = model.cell.value;\n scope.smartTableColumnId = model.cell.smartTableColumnId;\n settings = model.column.settings; \n if (settings.timePeriod.timeframe == \"custom\") { \n period = settings.timePeriod.period;\n } else if (settings.timePeriod.timeframe !== \"last\") { \n period = timeService.getTimePeriod(settings.timePeriod.timeframe);\n } else {\n period = timeService.getTimePeriod(\"all\");\n }\n \n scope.smartTableRowId = model.cell.smartTableRowId;\n if(value){\n if(value.dataSource){\n dataSource = value.dataSource;\n }\n if(value.filters){\n filters = value.filters;\n }\n setColor(value);\n }\n if (settings) {\n if(!dataSource && settings.dataSource){\n dataSource = settings.dataSource;\n }\n if(settings.decimals !== null || settings.decimals !== undefined){\n scope.decimals = settings.decimals;\n }\n if(settings.unit){\n scope.unit = settings.unit;\n if(settings.unitPlacement){\n scope.unitPlacement = settings.unitPlacement;\n }\n }\n if(!filters && settings.filers){\n filters = settings.filters;\n }\n } \n scope.updateValue(dataSource.id);\n model.getSortValue = function() {\n return scope.number;\n }\n });\n\n scope.subscribe(\"SmartTableNumberCellAutomaticTimeframeUpdated\", function (value) {\n if(scope.smartTableColumnId === value.columnId){ \n scope.lastDate = null;\n settings.timePeriod.timeframe = value.timePeriod.timeframe;\n if (value.timePeriod.timeframe == \"custom\") { \n settings.timePeriod.period = value.timePeriod.period;\n } \n scope.updateValue(dataSource.id);\n }\n });\n scope.subscribe(\"SmartTableNumberCellDecimalUpdated\", function (value) {\n if(scope.smartTableColumnId == value.columnId){\n scope.decimals = value.decimals;\n scope.updateValue(dataSource.id); \n }\n });\n scope.subscribe(\"SmartTableNumberCellUnitUpdated\", function (value) {\n if(scope.smartTableColumnId === value.columnId){\n scope.unit = value.unit;\n }\n });\n scope.subscribe(\"SmartTableNumberCellUnitPlacementUpdated\", function (value) {\n if(scope.smartTableColumnId === value.columnId){\n scope.unitPlacement = value.unitPlacement;\n }\n });\n scope.subscribe(\"DataValueAdded\", function (value) {\n scope.updateValue(value.dataSourceId);\n });\n scope.subscribe(\"DataValueUpdated\", function (value) {\n scope.updateValue(value.dataSourceId);\n });\n scope.subscribe(\"DataValueDeleted\", function (value) {\n scope.updateValue(value.dataSourceId);\n });\n\n function getLastValue(){\n if (settings.timePeriod.timeframe == \"custom\") { \n period = settings.timePeriod.period;\n }\n else if (settings.timePeriod.timeframe === \"last\") {\n period = null;\n } else {\n if(!period){\n period = timeService.getTimePeriod(\"all\");\n }\n }\n dataService().getLastDate(dataSource.id, period, filters).then(function (fromDate) {\n scope.lastDate = moment(fromDate).toDate();\n var toDate = moment(fromDate).endOf('day');\n var dayperiod = {\n from:fromDate,\n to:toDate\n };\n \n var options = {\n timePeriod: dayperiod,\n filters: filters,\n };\n\n dataService().getSumForPeriod(dataSource.id, options).then(function (sum) {\n scope.number = sum;\n var payload = {\n smartTableColumnId: scope.smartTableColumnId,\n smartTableRowId: scope.smartTableRowId,\n value: scope.number\n } \n scope.publish(\"SmartTableNumberCellUpdated\", payload);\n\n if(scope.decimals !== null) {\n if(scope.decimals !== undefined) {\n scope.number = mathService().roundNumber(scope.number, scope.decimals);\n }\n } \n });\n });\n\n }\n\n function getAll(){\n \n period = timeService.getTimePeriod(\"all\");\n \n dataService().getLastDate(dataSource.id, null, filters).then(function (lastDate) {\n \n var toDate = moment(lastDate).endOf('day');\n var newperiod = {\n from:period.from,\n to:toDate\n };\n \n var formula = null;\n if(dataSource.valueElement.unit == \"%\"){\n formula = \"average\";\n }\n var options = {\n timePeriod: newperiod,\n filters: filters,\n formula: formula\n };\n\n dataService().getSumForPeriod(dataSource.id, options).then(function (sum) {\n scope.number = sum;\n var payload = {\n smartTableColumnId: scope.smartTableColumnId,\n smartTableRowId: scope.smartTableRowId,\n value: scope.number\n } \n scope.publish(\"SmartTableNumberCellUpdated\", payload);\n if(scope.decimals !== null) {\n if(scope.decimals !== undefined) {\n scope.number = mathService().roundNumber(scope.number, scope.decimals);\n }\n } \n });\n });\n\n }\n\n scope.updateValue = function (id) {\n if (!dataSource) return;\n if (dataSource.id !== id) return;\n if (settings.timePeriod.timeframe === \"last\") {\n getLastValue();\n } else if(settings.timePeriod.timeframe === \"all\" ){\n getAll();\n } else{\n\n if (settings.timePeriod.timeframe == \"custom\") { \n period = settings.timePeriod.period;\n }else {\n period = timeService.getTimePeriod(settings.timePeriod.timeframe);\n }\n var formula = null;\n if(dataSource.valueElement.unit == \"%\"){\n formula = \"average\";\n }\n var options = {\n timePeriod: period,\n filters: filters,\n formula: formula\n };\n dataService().getSumForPeriod(dataSource.id, options).then(function (sum) {\n \n scope.number = sum;\n var payload = {\n smartTableColumnId: scope.smartTableColumnId,\n smartTableRowId: scope.smartTableRowId,\n value: scope.number\n } \n scope.publish(\"SmartTableNumberCellUpdated\", payload);\n if(scope.decimals !== null) {\n if(scope.decimals !== undefined) {\n scope.number = mathService().roundNumber(scope.number, scope.decimals);\n }\n } \n });\n }\n };\n \n var setColor = function(cell) {\n if(cell && cell.background){\n scope.background = cell.background;\n scope.color = cell.color;\n }\n \n var predefinedPostIt = $filter('filter')(scope.postIts, { background: scope.background });\n if (predefinedPostIt.length > 0) {\n scope.selectedPostIt = predefinedPostIt[0];\n } else //Custom color \n {\n scope.selectedPostIt = { title: \"custom\", background: scope.background };\n scope.customColorBackground = cell.background;\n }\n }\n\n scope.openDataSource = function(){\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'dataSourceSingleSelector.html',\n controller: 'dataSourceSingleSelector',\n windowClass: 'newdeviation-modal-window',\n resolve: {\n hasDataSerie: function () {\n return true;\n },\n dataSource: function () {\n return dataSource;\n },\n filters: function () {\n return filters;\n },\n withTarget: function () {\n return false;\n },\n type: function () {\n return null;\n },\n externalOnly: function () {\n return false;\n }\n }\n });\n\n modalInstance.result.then(function (result) {\n filters = result.filters;\n dataSource = result.dataSource;\n scope.updateValue(dataSource.id);\n scope.saveChanges();\n });\n }\n\n scope.selectColor = function (postIt) {\n scope.selectedPostIt = postIt;\n if(postIt.title === 'default'){\n scope.background = \"inherit\";\n scope.color = \"#676a6c\";\n } else {\n scope.background = postIt.background;\n scope.color = \"#ffffff\";\n }\n scope.commitChangesDebounced();\n }\n scope.selectCustomColor = function (color) {\n scope.selectedPostIt = { title: \"custom\", background: color };\n scope.background = color;\n scope.color = \"#ffffff\";\n scope.commitChangesDebounced();\n }\n\n scope.saveChanges = function() {\n var value = {\n background: scope.background,\n color: scope.color,\n filters: filters,\n dataSource: dataSource\n }\n scope.model.cell.value = value;\n scope.cellChangeHandler({cell: scope.model.cell})\n }\n\n // Debounce function so that save is called to often.\n scope.commitChangesDebounced = debounce(scope.saveChanges, 1000, false);\n\n }\n }\n }]);\n","import * as boardService from \"@common/services/boardService\"\n\nangular\n .module('DigiLean')\n .directive(\"smarttableTargetCell\", ['$uibModal','navigationService','qualityService',\n function ($uibModal, navigationService, qualityService) {\n return {\n templateUrl: 'smarttableTargetCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'editable': '=',\n 'cellChangeHandler': '&',\n 'adminmode': '='\n },\n link: function (scope, elem, attrs) {\n scope.value = 0;\n scope.isAvailableInProjectBoard = false;\n \n scope.subscribe(\"UserAuthenticatedAndReady\", function(profile)\n {\n scope.hasDeviation = navigationService().hasModule(\"DEVIATION\"); \n });\n scope.$watch(\"model\", function (model) {\n var value = scope.model.cell.value;\n if (value) {\n scope.value = value.value;\n if (value.settings) {\n scope.isAvailableInProjectBoard = value.settings.isAvailableInProjectBoard;\n scope.projectId = value.settings.projectId;\n scope.visualizationType = value.settings.visualizationType;\n }\n }\n model.getSortValue = function() {\n return scope.value;\n }\n });\n\n \n scope.subscribe(\"SmartTableCellUpdated\", function (cell) {\n if (cell.smartTableRowId == scope.model.cell.smartTableRowId && cell.smartTableColumnId == scope.model.cell.smartTableColumnId) {\n if (cell.value) {\n scope.value = cell.value.value;\n }\n }\n });\n\n \n function openConfigurationModal(projectId){\n var modalInstance = $uibModal.open({ backdrop: 'static',\n templateUrl: 'targetProjectVisualizationForm.html',\n controller: 'targetProjectVisualizationController',\n resolve: {\n projectId: function () {\n return projectId;\n },\n visualizationType: function () {\n return scope.visualizationType;\n },\n }\n });\n\n modalInstance.result.then(function (result) {\n scope.visualizationType = result.type;\n scope.projectId = result.projectId;\n if(scope.projectId && scope.visualizationType){\n scope.isAvailableInProjectBoard = true;\n updateDateStatus();\n\n var newsettings = {\n isAvailableInProjectBoard: true,\n projectId:scope.projectId,\n visualizationType: scope.visualizationType\n };\n scope.model.cell.value = {\n value: scope.value,\n settings: newsettings\n };\n \n scope.cellChangeHandler({ cell: scope.model.cell });\n }\n });\n \n }\n\n \n scope.openConfiguration = function () {\n\n if(scope.projectId){\n openConfigurationModal(scope.projectId);\n } else {\n boardService.getProjectForBoard(scope.model.column.boardId).then(function (projectlist) {\n if(projectlist && projectlist.length > 0){\n return openConfigurationModal(projectlist[0].id);\n } else {\n openConfigurationModal(null);\n }\n });\n }\n\n \n };\n\n \n scope.setStatusValue = function (newValue) {\n scope.value = newValue;\n\n if(scope.model.cell.value && scope.model.cell.value.settings){\n scope.model.cell.value = {\n value: scope.value,\n settings: scope.model.cell.value.settings \n }; \n }\n else {\n scope.model.cell.value = {\n value: scope.value\n };\n }\n \n scope.cellChangeHandler({cell: scope.model.cell})\n if(scope.isAvailableInProjectBoard){\n updateDateStatus();\n }\n\n }\n\n function updateDateStatus(){\n if(scope.projectId && scope.visualizationType){\n\n \n var date = new Date();\n\n var status = {\n status: scope.value,\n date: date,\n areaId: null,\n projectId: scope.projectId,\n visualizationType: scope.visualizationType\n };\n qualityService().updateDateStatus(status).then(function (savedStatus) {\n \n });\n }\n }\n\n function addDeviation(statusValue) {\n var severity = DigiLean.hms.getDeviationSeverity(statusValue);\n // Make sure task responsbile dropdown is closed if open.\n var settings = {\n severity: severity\n }\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'newDeviation.html',\n controller: 'newDeviationController',\n windowClass: 'newdeviation-modal-window',\n resolve: {\n settings: function () {\n return settings;\n }\n }\n });\n }\n }\n }\n }]);\n","import * as timeService from \"@common/services/timeService\"\n\nangular\n .module('DigiLean')\n .directive(\"smarttableStartDateCell\", ['debounce','smarttableService',\n function (debounce, smarttableService) {\n return {\n templateUrl: 'smarttableStartDateCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'editable': '=',\n 'cellChangeHandler': '&',\n },\n link: function (scope, elem, attrs) {\n scope.color = \"#0099DE\";\n scope.dateMissed = false;\n scope.date = {};\n scope.value = null;\n\n scope.updateStartDate = function($event) {\n const date = $event.originalEvent.detail\n scope.date.startDate = date\n smarttableService().updateStartTime(scope.model.cell.smartTableRowId,scope.date.startDate).then(function (savedDate) {\n checkDate()\n })\n }\n\n scope.updateEstimatedStartDate = function($event) {\n const date = $event.originalEvent.detail\n scope.date.estimatedStartDate = date\n var value = {\n estimatedStartDate: scope.date.estimatedStartDate\n }\n scope.model.cell.value = value\n scope.cellChangeHandler({cell: scope.model.cell})\n checkDate()\n }\n\n scope.subscribe(\"SmartTableCellUpdated\", function (cell) {\n if (cell.smartTableRowId == scope.model.cell.smartTableRowId && cell.smartTableColumnId == scope.model.cell.smartTableColumnId) {\n if (cell.value) {\n scope.date.estimatedStartDate = moment(cell.value.estimatedStartDate).toDate();;\n }\n }\n });\n scope.saveChanges = function() {\n var value = {\n estimatedStartDate: scope.date.estimatedStartDate\n }\n scope.model.cell.value = value;\n scope.cellChangeHandler({cell: scope.model.cell})\n }\n\n // Debounce function so that save is called to often.\n scope.commitChangesDebounced = debounce(scope.saveChanges, 1000, false);\n \n\n scope.$watch(\"model\", function (model) {\n if (scope.model) {\n if(scope.model.cell && scope.model.cell.value && scope.model.cell.value.estimatedStartDate){\n scope.date.estimatedStartDate = moment(scope.model.cell.value.estimatedStartDate).toDate();\n }\n if (scope.model.row) {\n scope.row = scope.model.row;\n \n if(scope.row.startTime){\n scope.date.startDate = moment(scope.row.startTime).toDate();\n }\n \n scope.date.datePicker = {\n opened: false\n },\n scope.date.estimatedDatePicker = {\n opened: false\n }\n checkDate();\n } else {\n createTempDate();\n }\n } \n model.getSortValue = function() {\n if (scope.date) {\n if(scope.date.startDate){\n return scope.date.startDate;\n } else {\n return scope.date.estimatedStartDate;\n } \n }\n return null;\n }\n\n });\n\n scope.subscribe(\"SmartTableRowStartTimeUpdated\", function (cell) {\n if (cell.id == scope.model.cell.smartTableRowId) {\n scope.date.startDate = moment(cell.startTime).toDate();\n checkDate();\n }\n });\n function createTempDate(){\n scope.date = {\n id: scope.model.cell.smartTableRowId,\n startDate: null,\n estimatedStartDate: null,\n datePicker : {\n opened: false\n },\n estimatedDatePicker : {\n opened: false\n }\n };\n }\n\n scope.saveChanges = function() {\n var value = {\n background: scope.background,\n color: scope.color,\n number: scope.estimatedStartDate\n }\n scope.model.cell.value = value;\n scope.cellChangeHandler({cell: scope.model.cell})\n }\n scope.commitChangesDebounced = debounce(scope.saveChanges, 1000, false);\n\n function checkDate() {\n scope.date.status = \"\";\n if (scope.date) {\n scope.dateMissed = false;\n\n scope.date.startDate = timeService.validateDate(scope.date.startDate);\n scope.date.estimatedStartDate = timeService.validateDate(scope.date.estimatedStartDate);\n \n if (scope.date.startDate) {\n scope.date.status = \"completed\";\n var diff = moment.duration(moment(scope.date.startDate).diff(moment(scope.date.estimatedStartDate)));\n var days = diff.asDays();\n if(!isNaN(days)){\n scope.date.diffPlannedVSActual = Math.round(days);\n }else {\n scope.date.diffPlannedVSActual = null;\n }\n } else if (scope.date.estimatedStartDate) {\n //check if overdue/missed\n \n var duration = moment.duration(moment().startOf('day').diff(moment(scope.date.estimatedStartDate).startOf('day')));\n var days = duration.asDays();\n if (days > 1) {\n scope.date.status = \"missed\";\n scope.date.diffToPlannedDate = Math.trunc(days);\n scope.dateMissed = true;\n } else {\n scope.date.status = \"future\";\n scope.date.diffToPlannedDate = Math.round(days)*-1;\n }\n }\n }\n }\n }\n }\n }]);\n","import * as timeService from \"@common/services/timeService\"\n\nangular\n .module('DigiLean')\n .directive(\"smarttableEndDateCell\", ['smarttableService',\n function (smarttableService) {\n return {\n templateUrl: 'smarttableEndDateCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'editable': '=',\n 'cellChangeHandler': '&',\n },\n link: function (scope, elem, attrs) {\n scope.color = \"#0099DE\"\n scope.dateMissed = false\n scope.date = {}\n scope.value = null\n\n scope.updateEndDate = function($event) {\n const date = $event.originalEvent.detail\n scope.date.endDate = date\n smarttableService().updateEndTime(scope.model.cell.smartTableRowId,scope.date.endDate).then(function (savedDate) {\n checkDate()\n })\n }\n\n scope.updateEstimatedEndDate = function($event) {\n const date = $event.originalEvent.detail\n scope.date.estimatedEndDate = date\n var value = {\n estimatedEndDate: scope.date.estimatedEndDate\n }\n scope.model.cell.value = value\n scope.cellChangeHandler({cell: scope.model.cell})\n checkDate()\n }\n\n scope.subscribe(\"SmartTableCellUpdated\", function (cell) {\n if (cell.smartTableRowId == scope.model.cell.smartTableRowId && cell.smartTableColumnId == scope.model.cell.smartTableColumnId) {\n if (cell.value) {\n scope.date.estimatedEndDate = moment(cell.value.estimatedEndDate).toDate()\n }\n }\n })\n \n\n scope.$watch(\"model\", function (model) {\n if (scope.model) {\n if(scope.model.cell && scope.model.cell.value && scope.model.cell.value.estimatedEndDate){\n scope.date.estimatedEndDate = moment(scope.model.cell.value.estimatedEndDate).toDate();\n }\n if (scope.model.row) {\n scope.row = scope.model.row;\n \n if(scope.row.endTime){\n scope.date.endDate = moment(scope.row.endTime).toDate();\n }\n \n scope.date.datePicker = {\n opened: false\n },\n scope.date.estimatedDatePicker = {\n opened: false\n }\n checkDate();\n } else {\n createTempDate();\n }\n } \n model.getSortValue = function() {\n if (scope.date) {\n if(scope.date.endDate){\n return scope.date.endDate;\n } else {\n return scope.date.estimatedEndDate;\n } \n }\n return null;\n }\n });\n\n scope.subscribe(\"SmartTableRowEndTimeUpdated\", function (cell) {\n if (cell.id == scope.model.cell.smartTableRowId) {\n scope.date.endDate = moment(cell.endTime).toDate();\n checkDate();\n }\n });\n\n function createTempDate(){\n scope.date = {\n id: scope.model.cell.smartTableRowId,\n endDate: null,\n estimatedEndDate: null,\n datePicker : {\n opened: false\n },\n estimatedDatePicker : {\n opened: false\n }\n };\n }\n\n function checkDate() {\n scope.date.status = \"\";\n if (scope.date) {\n scope.date.endDate = timeService.validateDate(scope.date.endDate);\n scope.date.estimatedEndDate = timeService.validateDate(scope.date.estimatedEndDate);\n scope.dateMissed = false;\n \n if (scope.date.endDate) {\n scope.date.status = \"completed\";\n var diff = moment.duration(moment(scope.date.endDate).diff(moment(scope.date.estimatedEndDate)));\n var days = diff.asDays();\n if(!isNaN(days)){\n scope.date.diffPlannedVSActual = Math.round(days);\n }else {\n scope.date.diffPlannedVSActual = null;\n }\n } else if (scope.date.estimatedEndDate) {\n //check if overdue/missed\n \n var duration = moment.duration(moment().endOf('day').diff(moment(scope.date.estimatedEndDate).endOf('day')));\n var days = duration.asDays();\n if (days > 1) {\n scope.date.status = \"missed\";\n scope.date.diffToPlannedDate = Math.trunc(days);\n scope.dateMissed = true;\n } else {\n scope.date.status = \"future\";\n scope.date.diffToPlannedDate = Math.round(days)*-1;\n }\n }\n }\n }\n }\n }\n }]);\n","import { get } from \"lodash\";\n\nangular\n .module('DigiLean')\n .directive(\"smarttableProgressCell\", ['$filter', '$translate',\n function ($filter, $translate) {\n return {\n templateUrl: 'smarttableProgressCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'editable': '=',\n 'cellChangeHandler': '&',\n },\n link: function (scope, elem, attrs) {\n scope.options = [\n { progress: 25, label: \"25 %\", color: \"#0099DE\"},\n { progress: 50, label: \"50 %\", color: \"#0099DE\"},\n { progress: 75, label: \"75 %\", color: \"#0099DE\"},\n { progress: 100, label: \"100 %\", color: \"#8CC152\"},\n ]\n\n scope.customOption = {\n progress: 0,\n label: \"0 %\",\n color: \"0099DE\"\n };\n scope.$watch(\"model\", function (model) {\n var value = scope.model.cell.value;\n if (value) {\n scope.progress = value.progress;\n scope.color = value.color;\n scope.customOption.progress = value.progress;\n }\n model.getSortValue = function() {\n if (scope.progress) {\n return scope.progress;\n }\n return 0;\n }\n });\n \n \n \n scope.subscribe(\"SmartTableCellUpdated\", function (cell) {\n if (cell.smartTableRowId == scope.model.cell.smartTableRowId && cell.smartTableColumnId == scope.model.cell.smartTableColumnId) {\n if (cell.value && scope.progress !== cell.value.progress) {\n scope.progress = cell.value.progress;\n scope.color = cell.value.color; \n scope.label = cell.value.label;\n scope.customOption.progress = cell.value.progress;\n }\n }\n });\n \n function getProgressLabel(progress) {\n if (typeof progress !== 'undefined' && progress !== null) {\n return progress + \" %\";\n } else {\n return null;\n }\n }\n \n scope.setProgress = function(option) {\n scope.progress = option.progress;\n scope.customOption.progress = option.progress;\n scope.color = option.color;\n if (scope.progress == 100) { // Green color if 100\n scope.color = \"#8CC152\";\n }\n // Trigger change to save\n scope.model.cell.value = {\n progress: scope.progress,\n color: scope.color,\n label: getProgressLabel(scope.progress)\n }\n scope.cellChangeHandler({cell: scope.model.cell})\n }\n }\n }\n }]);\n","import { translateLabelInstant } from \"@common/services/language/DigiLeanLang\"\n\nexport function getTranslatedSmartColumnName (type: string): string {\n switch (type) {\n case \"projectName\":\n return translateLabelInstant(\"PROJECT_NAME\");\n case \"projectNumber\":\n return translateLabelInstant(\"PROJECT_NUMBER\");\n case \"projectStatus\":\n return translateLabelInstant(\"COMMON_STATUS\");\n case \"customer\":\n return translateLabelInstant(\"PROJECT_CUSTOMER\");\n case \"owner\":\n return translateLabelInstant(\"COMMON_RESPONSIBLE\");\n case \"asset\":\n return translateLabelInstant(\"COMMON_ASSET\");\n case \"participants\":\n return translateLabelInstant(\"COMMON_PARTICIPANTS\");\n case \"startdate\":\n return translateLabelInstant(\"PROJECT_START_DATE\");\n case \"nextmilestone\":\n return translateLabelInstant(\"PROJECT_NEXT_MILESTONE\");\n case \"last-modified-date\":\n return translateLabelInstant(\"COMMON_LAST_CHANGED\");\n case \"duedate\":\n return translateLabelInstant(\"COMMON_DUE_DATE\");\n case \"enddate\":\n return translateLabelInstant(\"COMMON_END_DATE\");\n case \"text\":\n return translateLabelInstant(\"COMMON_TEXT\");\n case \"date\":\n return translateLabelInstant(\"COMMON_DATE\");\n case \"number\":\n return translateLabelInstant(\"ADMIN_DATA_DATASOURCE_NUMBER\");\n case \"rowno\":\n return translateLabelInstant(\"COMMON_NUMBER_SHORT\");\n case \"linktohub\":\n return translateLabelInstant(\"PROJECT_HUB\");\n case \"contactperson\":\n return translateLabelInstant(\"ADMIN_DATA_CONTACT\");\n case \"tasks\":\n return translateLabelInstant(\"COMMON_TASKS\");\n case \"subtasks\":\n return translateLabelInstant(\"COMMON_SUBTASKS\");\n case \"numberAutomatic\":\n return translateLabelInstant(\"COMMON_AUTOMATIC\");\n case \"progress\":\n return translateLabelInstant(\"PROJECT_PROGRESS\");\n case \"progresstasks\":\n return translateLabelInstant(\"COMMON_TASKS_PROGRESS\");\n case \"progresssubtasks\":\n return translateLabelInstant(\"COMMON_SUBTASKS_PROGRESS\");\n case \"target\":\n return translateLabelInstant(\"ADMIN_DATA_DATASOURCE_TARGETS\");\n case \"responsible\":\n return translateLabelInstant(\"COMMON_RESPONSIBLE\");\n case \"risk\":\n return translateLabelInstant(\"PROJECT_RISK\");\n case \"rating\":\n return translateLabelInstant(\"COMMON_RATING\");\n case \"check\":\n return translateLabelInstant(\"COMMON_CHECKPOINT\");\n case \"linktoa3\":\n return translateLabelInstant(\"IMPROVEMENT_TO_A3\");\n case \"a3Goal\":\n return translateLabelInstant(\"COMMON_GOAL\");\n case \"subGoals\":\n return translateLabelInstant(\"STRATEGY_SUB_GOALS\");\n case \"projectdescription\":\n return translateLabelInstant(\"COMMON_DESCRIPTION\");\n case \"taskdescription\":\n return translateLabelInstant(\"COMMON_DESCRIPTION\");\n case \"name\": //smarttable\n return translateLabelInstant(\"COMMON_DESCRIPTION\");\n case \"icon\":\n return translateLabelInstant(\"BOARD_ICON\");\n default:\n return \"\";\n }\n}\n","import { Module, User, UserPreference, UserSettings } from \"@api\"\nimport backend from \"@common/services/backendHttp\"\nconst resourceUrl = \"api/user\"\n\nexport function getList() {\n return backend.get(resourceUrl)\n}\nexport function changeLanguage(language: string) {\n const url = resourceUrl + \"/updatePreferredLanguage?language=\" + language\n return backend.put(url)\n}\n\nexport function getMembership(assetId) {\n const url = resourceUrl + \"/getMemberShip/\" + assetId\n return backend.get(url)\n}\n\nexport async function getUserSettings() {\n const url = resourceUrl + \"/getUserSettings\"\n const settings = await backend.get(url)\n if (settings && typeof settings === \"string\") {\n const settingsJson = JSON.parse(settings) as UserSettings\n return settingsJson\n }\n return settings\n}\n\nexport function updateUserSettings(settings: UserSettings | string) {\n const url = resourceUrl + \"/updateSettings\"\n if (!settings)\n return\n \n if (settings && typeof settings !== \"string\") {\n settings = JSON.stringify(settings);\n }\n\n return backend.put(url, { settings: settings })\n}\n\nexport function updateUserPreference(key: string, value: any) {\n const url = resourceUrl + \"/preference\";\n if (value && typeof value !== \"string\") {\n if(key == 'FlexiboardFavoriteBoards'){ // prevent duplicate boards\n let uniqueBoards = new Map()\n value.forEach((item: any) => {\n if(item.id)\n uniqueBoards.set(item.id, item)\n })\n value = Array.from(uniqueBoards, ([name, value]) => value)\n }\n value = JSON.stringify(value)\n }\n\n const preference = {\n key: key,\n value: value\n }\n return backend.put(url, preference)\n}\n\nexport function deleteUserPreference(key: string) {\n const url = resourceUrl + \"/preference/\" + key\n return backend.delete(url)\n}\n\nexport async function getUserPreference(key: string) {\n const url = resourceUrl + \"/preference/\" + key\n let preference = await backend.get(url)\n if (preference && preference.value && typeof preference.value === \"string\") {\n const prefJson = JSON.parse(preference.value)\n preference.value = prefJson\n }\n return preference\n}\n","import { saveArrayBufferAsPdf } from \"@common/services/filesService\"\nimport { userProfile } from \"@common/stores/userStore\"\nimport toaster from \"@common/components/toast\"\nimport backend, { BackendHttpError } from \"@common/services/backendHttp\"\nimport { translateLabel, translateLabelInstant } from \"./language/DigiLeanLang\"\nimport { FileInfo, TableParams, TimePeriod } from \"@api\"\n\nconst resourceUrl = \"pdf\"\n\nlet lang = \"en\"\nuserProfile.subscribe(up => {\n if (up.preferredLanguage)\n lang = up.preferredLanguage\n})\n\nexport async function printA3 (fileName: string, a3VersionId: number, language: string, timezoneOffset: number) {\n const url = resourceUrl + \"/printA3/\" + a3VersionId + \"?lang=\" + language + \"&timezoneOffset=\" + timezoneOffset\n await downloadPdf(url, fileName)\n}\n\nexport async function saveA3(a3VersionId: number, language: string, timezoneOffset: number, format: string) {\n const pdfLabel = translateLabelInstant(\"COMMON_GENERATING_PDF\")\n const pdfCompletedlabel = translateLabelInstant(\"COMMON_GENERATING_PDF_DONE\")\n const toast = toaster.loading(`${pdfLabel} A3`)\n const url = resourceUrl + \"/savea3/\" + a3VersionId + \"?lang=\" + language + \"&timezoneOffset=\" + timezoneOffset + \"&format=\" + format\n try {\n const res = await backend.get(url)\n toaster.success(`A3 ${pdfCompletedlabel}`)\n return res\n }\n catch(error: any) {\n let errorLabel = translateLabelInstant(\"ADMIN_DATA_JOB_SHOWERRORS\")\n if (error instanceof BackendHttpError && error.message)\n errorLabel = translateLabelInstant(error.message)\n \n toaster.error(`${pdfLabel} A3: ${errorLabel}`)\n throw new Error(\"Exception occured\")\n }\n finally {\n toast.destroyNow()\n }\n}\n\nexport function previewA3(a3VersionId: number, language: string) {\n const url = resourceUrl + \"/previewA3/\" + a3VersionId + \"?lang=\" + language\n return backend.post(url, {})\n}\n\nexport async function printLearningPage(pageId: number, pageTitle: string, isExternal: boolean) {\n if (!pageTitle)\n pageTitle = \"page\"\n const fileName = pageTitle + \".pdf\"\n \n\n const url = \"learningpage/\" + pageId+ \"?lang=\" + lang + \"&isExternal=\" + isExternal\n await downloadPdf(url, fileName)\n}\n\nexport async function printDeviationReport(deviationId: number) {\n const fileName = \"deviation-report.pdf\"\n \n const date = new Date()\n const offset = date.getTimezoneOffset()\n\n const url = resourceUrl + \"/deviationreport/\" + deviationId + \"?lang=\" + lang + \"&timezoneOffsetInMinutes=\" + offset\n\n await downloadPdf(url, fileName)\n}\n\n \nexport async function printDeviationProjectReport(projectId: number, timePeriod: TimePeriod) {\n const fileName = \"deviation-report.pdf\"\n \n const date = new Date()\n const offset = date.getTimezoneOffset()\n\n const url = resourceUrl + \"/DeviationProjectReport/\" + projectId + \"?lang=\" + lang + \"&timezoneOffsetInMinutes=\" + offset\n await downloadPdf(url, fileName, timePeriod)\n}\n\nexport async function printProjectHoursReport(projectId: number, timePeriod: TimePeriod) {\n const fileName = \"invoice-report.pdf\"\n \n const date = new Date()\n const offset = date.getTimezoneOffset()\n\n const url = resourceUrl + \"/InvoiceProjectReport/\" + projectId + \"?lang=\" + lang + \"&timezoneOffsetInMinutes=\" + offset\n await downloadPdf(url, fileName, timePeriod)\n}\n\nexport async function createImprovementListReport(params: TableParams) {\n const fileName = \"DigiLEAN - Improvements.pdf\"\n \n const date = new Date()\n const offset = date.getTimezoneOffset()\n\n const url = resourceUrl + \"/ImprovementListReport?lang=\" + lang + \"&timezoneOffsetInMinutes=\" + offset\n await downloadPdf(url, fileName, params)\n}\n\nexport async function createDeviationListReport(params: TableParams) {\n const fileName = \"DigiLEAN - Deviations.pdf\"\n \n const date = new Date()\n const offset = date.getTimezoneOffset()\n\n const url = resourceUrl + \"/DeviationListReport?lang=\" + lang + \"&timezoneOffsetInMinutes=\" + offset\n await downloadPdf(url, fileName, params)\n}\n\nexport async function createSmartActionListReport(boardId: number) {\n var fileName = \"DigiLEAN - Smart Actions.pdf\";\n var date = new Date();\n var offset = date.getTimezoneOffset()\n let url = resourceUrl + \"/CreateSmartActionListReport/\" + boardId + \"?lang=\" + lang + \"&timezoneOffsetInMinutes=\" + offset;\n await downloadPdf(url, fileName)\n}\n\n\nasync function downloadPdf(url: string, fileName: string, params: any = {}) {\n const pdfLabel = await translateLabel(\"COMMON_GENERATING_PDF\")\n const toast = toaster.loading(`${pdfLabel} '${fileName}'`)\n try {\n \n const data = await backend.post(url, params)\n saveArrayBufferAsPdf(data, fileName)\n \n toaster.success(translateLabelInstant(\"COMMON_GENERATING_PDF_DONE\"), 5)\n }\n catch(error: any) {\n let errorLabel = translateLabelInstant(\"ADMIN_DATA_JOB_SHOWERRORS\")\n if (error instanceof BackendHttpError && error.message)\n errorLabel = translateLabelInstant(error.message)\n \n toaster.error(`${pdfLabel}: ${errorLabel}`)\n }\n finally {\n toast.destroyNow()\n }\n}","import { A3TableColumn, SmartTableColumn } from \"@api\";\n\nexport function parseColumnSettings(columns: A3TableColumn[] | SmartTableColumn[]) {\n if (!columns || columns.length === 0)\n return\n for (let i = 0; i < columns.length; i++) {\n const column = columns[i]\n if (column.settings && typeof (column.settings) === \"string\") {\n column.settings = JSON.parse(column.settings)\n }\n }\n}\n// A3TableColumn | SmartTableColumn\nexport function getColStyle(col: any) {\n let styles = {}\n if (!col || !col.settings)\n return styles\n\n if (col.settings.widthSetting == \"MANUAL\" && col.settings.width) {\n const widthPx = col.settings.width + \"px\"\n styles = {\n \"width\": widthPx,\n \"min-width\": widthPx, \n \"max-width\": widthPx\n } \n }\n return styles\n}","import { getDefaultAppStyle, getDefaultAppTheme, calcDefaultAppFontSize } from \"@common/components/dashboard/designer/common/appStyleService\"\nimport * as dashboardService from \"@common/services/dashboardService\"\nimport * as timeService from \"@common/services/timeService\"\nimport * as boardService from \"@common/services/boardService\"\nimport * as translationService from \"@common/services/translationService\"\nimport * as employeeService from \"@common/services/employeeService\"\nimport * as pdfService from \"@common/services/pdfService\"\nimport { getColStyle } from \"@common/services/settingsService\"\nimport { hasDefaultAccess } from \"@common/components/dashboard/designer/common/userAccessService\"\nimport envConfig from \"@common/envConfig\"\n\nangular\n .module(\"DigiLean\")\n .directive('smartActionListApp', ['$uibModal', '$state', '$translate', 'boardTaskService', 'smartActionListService', 'orderByFilter', 'excelService', 'modalService', 'debounce',\n function ($uibModal, $state, $translate, boardTaskService, smartActionListService, orderByFilter, excelService, modalService, debounce) {\n return {\n templateUrl: 'smartActionListApp.html',\n restrict: 'E',\n transclude: true,\n scope: {\n 'isAdminMode': '<',\n 'assetId': '<',\n 'settings': '<',\n 'settingsChangeHandler': '&?',\n 'context': '@',\n 'layoutFactor': '<',\n 'userAccess': ' c.id == scope.settingsSortColumn.id)\n if (foundColumn) {\n foundColumn.sort = \"none\"; //reset saved sortorder, but not changing settings \n }\n }\n if (!column.sort) column.sort = \"none\";\n column.sort = getNextSortOrder(column.sort);\n scope.sortColumn = column;\n scope.sortColumnIndex = scope.columns.indexOf(column);\n if (column.sort == \"none\") {\n scope.tasks = orderByFilter(scope.tasks, 'sortOrder');\n }\n if (column.sort == \"asc\") {\n scope.tasks = orderByFilter(scope.tasks, getSortValue, false);\n }\n if (column.sort == \"desc\") {\n scope.tasks = orderByFilter(scope.tasks, getSortValue, true);\n }\n if(scope.isAdminMode) {\n if(column.sort == \"desc\" || column.sort == \"asc\"){\n scope.settingsSortColumn = {\n id: column.id,\n attributeType: column.attributeType,\n sort: column.sort,\n };\n } else {\n scope.settingsSortColumn = null;\n }\n scope.updateSettings();\n }\n }\n\n var getNextSortOrder = function (currentSortOrder) {\n if (currentSortOrder == \"none\") return \"asc\";\n if (currentSortOrder == \"asc\") return \"desc\";\n if (currentSortOrder == \"desc\") return \"none\";\n }\n\n var getSortValue = function (task) {\n if (task.cellModels) {\n var cell = task.cellModels[scope.sortColumnIndex];\n return cell.getSortValue();\n }\n return task.title;\n }\n\n\n // Options for selecting or creating a new list.\n scope.hasBoard = false;\n scope.existingBoards = [];\n var newActionListCreated = false;\n function showActionListSelectOptions() { \n // Should ask user if want to create or link\n if (scope.hasBoard || !scope.isAdminMode || scope.isStandAlone) return;\n scope.hasBoard = false;\n // Get possible actionlist to select from.\n if (scope.existingBoards.length > 0) return;\n boardService.getMemberBoardsOfType(\"SmartactionList\").then(function (boards) {\n scope.existingBoards = boards;\n if (newActionListCreated) return;\n if (!scope.existingBoards || scope.existingBoards.length==0){\n scope.createNewActionList();\n }\n });\n }\n scope.createNewActionList = function () {\n newActionListCreated = true; \n scope.templates = [];\n var templateTypes = [\"SmartActionList\"];\n boardService.getTemplates(templateTypes).then(function (templates) {\n if (templates && templates.length > 0) {\n scope.templates = templates;\n var standardList = {\n id: -1,\n name: $translate.instant('COMMON_STANDARD'),\n description: $translate.instant('DASHBOARD_SMARTACTIONLIST_CREATE_DESCRIPTION')\n }\n //var standardTemplate = {template:standardList};\n scope.templates.unshift(standardList);\n } else {\n scope.hasBoard = true;\n createTable();\n }\n });\n }\n\n scope.createFromTemplate = function (template) {\n scope.hasBoard = true;\n if (template.id < 0) { //standard \n createTable();\n } else { // one of the saved templates\n var options = {\n title: template.name,\n description: template.description,\n assetId: scope.assetId,\n isPublic: false\n };\n smartActionListService().createSmartActionListFromTemplate(template.id, options).then(function (smartActionList) {\n scope.isLoading = false;\n scope.boardId = smartActionList.board.id;\n scope.smartActionList = smartActionList;\n scope.title = smartActionList.board.name;\n boardService.getUserListForBoard(scope.boardId).then(function (data) {\n scope.users = data;\n setupTable();\n scope.updateSettings();\n // Trigger time view\n setTimeBoardModel();\n });\n });\n }\n }\n\n scope.linkExistingActionList = function (board) {\n if (!board) return;\n scope.hasBoard = true;\n scope.boardId = board.id;\n scope.title = board.name;\n loadsmartActionList(board.id);\n scope.updateSettings();\n }\n\n scope.subscribe(\"TaskUpdated\", function (task) {\n var isPartOfTasks = scope.tasks.filter(t => t.id == task.id)\n if (isPartOfTasks.length > 0) {\n var current = isPartOfTasks[0];\n current.color = task.color;\n current.siblingId = task.siblingId;\n setTaskStyle(current);\n }\n });\n\n scope.subscribe('TaskCloned', function (clone) {\n if (clone.boardId === scope.boardId) {\n calculateCells(clone, scope.columns);\n scope.tasks.push(clone);\n if (scope.timeboardEnabled) {\n scope.taskAdded = clone;\n }\n }\n });\n\n scope.subscribe('TaskArchived', function (archivedtaskid) {\n var isPartOfTasks = scope.tasks.filter(t => t.id == archivedtaskid);\n if (isPartOfTasks.length > 0) {\n var current = isPartOfTasks[0];\n var index = scope.tasks.indexOf(current);\n scope.tasks.splice(index, 1);\n scope.taskDeleted = current;\n }\n });\n\n scope.subscribe('TaskMovedFromArchive', function (unarchivedtask) {\n var isPartOfTasks = scope.tasks.filter(t => t.id == unarchivedtask.id);\n if (isPartOfTasks.length > 0) {\n var current = isPartOfTasks[0];\n var index = scope.tasks.indexOf(current);\n scope.tasks.splice(index, 1);\n }\n });\n\n scope.subscribe('ActionItemMovedToTask', function (task) {\n var isPartOfTasks = scope.tasks.filter(t => t.id == task.id)\n if (isPartOfTasks.length > 0) {\n var current = isPartOfTasks[0];\n var index = scope.tasks.indexOf(current);\n scope.tasks.splice(index, 1);\n } else if( task.boardId === scope.boardId ) {\n calculateCells(task, scope.columns);\n scope.tasks.push(task);\n if (scope.timeboardEnabled) {\n scope.taskAdded = task;\n }\n }\n });\n\n scope.subscribe('TaskChangedBoard', function (change) {\n if(change.toBoardId === null || change.toBoardId === 0){\n removeTaskFromBoard(change.taskId);\n } else if (change.fromBoardId === scope.boardId && change.toBoardId !== scope.boardId) {\n removeTaskFromBoard(change.taskId)\n } else if (change.toBoardId === scope.boardId && change.fromBoardId !== scope.boardId) {\n var isPartOfTasks = scope.tasks.filter(t => t.id == change.taskId);\n if (isPartOfTasks.length == 0) {\n boardTaskService().get(change.taskId).then(function (task) {\n calculateCells(task, scope.columns);\n scope.tasks.push(task);\n if (scope.timeboardEnabled) {\n scope.taskAdded = task;\n }\n }) \n }\n }\n });\n \n function removeTaskFromBoard(taskId){\n var isPartOfTasks = scope.tasks.filter(t => t.id == taskId);\n if (isPartOfTasks.length > 0) {\n var current = isPartOfTasks[0];\n var index = scope.tasks.indexOf(current);\n scope.tasks.splice(index, 1);\n }\n }\n\n scope.$watch(\"isAdminMode\", function () {\n\n });\n scope.changeTheme = function (theme) {\n scope.theme = theme;\n scope.updateSettings();\n }\n\n function loadsmartActionList(boardId) {\n scope.hasBoard = true;\n scope.boardId = boardId;\n scope.isLoading = true;\n smartActionListService().get(boardId).then(function (smartActionList) {\n scope.smartActionList = smartActionList;\n setupTable();\n setTimeout(function () {\n scope.isLoading = false;\n resizeDebounced();\n setColumnSorting();\n }, 500);\n\n // Trigger time view\n setTimeBoardModel();\n checkFavorite();\n \n })\n\n }\n\n scope.changeDateColor = function (col) {\n\n if (col.settings.changeColor) {\n if (!col.settings.changeColorXDaysBefore) {\n col.settings.changeColorXDaysBefore = 1;\n }\n var payload = {\n columnId: col.id,\n changeColor: col.settings.changeColor,\n changeColorXDaysBefore: col.settings.changeColorXDaysBefore\n }\n scope.publish(\"SmartDateColorCellUpdated\", payload);\n\n smartActionListService().updateColumn(col).then(function (attribute) {\n })\n } else {\n col.settings.changeColor = false;\n var payload = {\n columnId: col.id,\n changeColor: col.settings.changeColor,\n changeColorXDaysBefore: col.settings.changeColorXDaysBefore\n }\n scope.publish(\"SmartDateColorCellUpdated\", payload);\n\n smartActionListService().updateColumn(col).then(function (attribute) {\n })\n }\n }\n\n scope.updateChangeColorXDaysBefore = function (col) {\n col.settings.changeColor = true;\n var payload = {\n columnId: col.id,\n changeColor: col.settings.changeColor,\n changeColorXDaysBefore: col.settings.changeColorXDaysBefore\n }\n scope.publish(\"SmartDateColorCellUpdated\", payload);\n\n smartActionListService().updateColumn(col).then(function (attribute) {\n })\n\n }\n\n\n var getArchivedTasks = function () {\n smartActionListService().getArchivedTasks(boardId).then(function (archivedtasks) {\n scope.tasks = archivedtasks;\n\n if (scope.tasks) {\n for (var i = 0; i < scope.tasks.length; i++) {\n var task = scope.tasks[i];\n calculateCells(task, scope.columns);\n scope.publish(\"SmartActionListArchiveChanged\", boardId);\n }\n }\n setKanbanModel();\n setTimeBoardModel();\n })\n\n }\n\n scope.toggleArchive = function () {\n scope.showArchive = !scope.showArchive;\n if (scope.showArchive) {\n getArchivedTasks()\n } else {\n loadsmartActionList(scope.boardId);\n }\n scope.timeBoardOptions = {\n showTeamMembers: false,\n showHeader: false,\n useActionList: true,\n showArchive: scope.showArchive\n }\n }\n\n function setupTable() {\n scope.columns = scope.smartActionList.columns;\n scope.tasks = scope.smartActionList.tasks;\n if (scope.tasks) {\n for (var i = 0; i < scope.tasks.length; i++) {\n var task = scope.tasks[i];\n setTaskStyle(task);\n calculateCells(task, scope.columns)\n }\n }\n }\n\n function setColumnSorting(){\n if(!scope.columns) return;\n if(scope.settingsSortColumn){\n const foundColumn = scope.columns.find(c => c.id == scope.settingsSortColumn.id);\n if (foundColumn) {\n scope.sortColumnIndex = scope.columns.indexOf(foundColumn);\n foundColumn.sort = scope.settingsSortColumn.sort;\n if (foundColumn.sort == \"asc\") {\n scope.tasks = orderByFilter(scope.tasks, getSortValue, false);\n }\n if (foundColumn.sort == \"desc\") {\n scope.tasks = orderByFilter(scope.tasks, getSortValue, true);\n }\n }\n }\n }\n\n function setTaskStyle(task) {\n // Try to match fillColor\n var predefinedPostIt = scope.postIts.find(p => p.fillColor == task.color)\n if (predefinedPostIt) {\n task.borderColor = predefinedPostIt.background\n } else {\n // Try to match background color\n var backgroundPostIt = scope.postIts.find(p => p.background == task.color)\n if (backgroundPostIt) {\n task.borderColor = backgroundPostIt.background;\n } else {\n task.borderColor = scope.borderColor\n }\n }\n }\n\n function createTable() {\n scope.isLoading = true;\n var savetemplate = {\n board: {\n name: $translate.instant('DASHBOARD_SMARTACTIONLIST'),\n assetId: scope.assetId,\n boardType: \"SmartActionList\",\n settings: JSON.stringify({\n IsWeeklyBoard: false\n })\n },\n columns: [\n {\n name: $translate.instant(\"COMMON_TITLE\"),\n sortOrder: 0,\n attributeType: \"title\"\n },\n {\n name: $translate.instant(\"COMMON_RESPONSIBLE\"),\n sortOrder: 1,\n attributeType: \"responsible\"\n },\n {\n name: $translate.instant(\"PROJECT_START_DATE\"),\n sortOrder: 2,\n attributeType: \"startdate\"\n },\n {\n name: $translate.instant(\"COMMON_DUE_DATE\"),\n sortOrder: 3,\n attributeType: \"duedate\"\n },\n {\n name: $translate.instant(\"COMMON_STATUS\"),\n sortOrder: 4,\n attributeType: \"status\"\n }],\n tasks: [\n {\n sortOrder: 0,\n title: $translate.instant(\"BOARD_EXAMPLE_TASK_1\")\n },\n {\n sortOrder: 1,\n title: $translate.instant(\"BOARD_EXAMPLE_TASK_2\")\n }\n ],\n cells: [\n ]\n };\n smartActionListService().createsmartActionList(savetemplate).then(function (smartActionList) {\n scope.isLoading = false;\n scope.boardId = smartActionList.board.id;\n scope.smartActionList = smartActionList;\n scope.title = smartActionList.board.name;\n scope.updateSettings();\n boardService.getUserListForBoard(scope.boardId).then(function (data) {\n scope.users = data;\n setupTable();\n \n // Trigger time view\n setTimeBoardModel();\n });\n\n });\n }\n\n scope.updateBoardTitle = function () {\n if (!scope.isStandAlone) {\n scope.updateSettings();\n }\n\n var boardName = {\n boardId: scope.boardId,\n name: scope.title\n }\n\n boardService.updateName(scope.boardId, boardName).then(function (smartActionList) {\n });\n }\n\n scope.updateSettings = function () {\n if (scope.isAdminMode) {\n var componentSettings = {\n title: scope.title,\n boardId: scope.boardId,\n showAddButton: scope.showAddButton,\n timeBoardOptions: scope.timeBoardOptions,\n theme: scope.theme,\n viewMode: scope.viewMode,\n settingsSortColumn: scope.settingsSortColumn,\n zoom: scope.zoom\n }\n if (!scope.isStandAlone) {\n // Sync widget settings\n scope.settingsChangeHandler({ settings: componentSettings })\n }\n // Save as board settings\n boardService.updateSettings(scope.boardId, componentSettings)\n }\n }\n\n scope.toggleButton = function () {\n scope.updateSettings();\n }\n\n scope.$on(\"widget-resized\", function (event, args) {\n resizeDebounced();\n });\n\n function resize() {\n if (!scope.useResizing) return;\n var host = $(elem).closest(\".grid-stack-item-content\");\n if (host.length == 0)\n host = $(elem).closest(\".modal-body\")\n \n if (host.length == 0) return;\n var width = host.width();\n var height = host.height();\n\n // Find header to subtract from new height\n var header = $(elem).find(\".ibox-title\");\n var headerHeight = header.height() + 60;\n var container = $(elem).find(\".project-board-container\");\n if (container.length === 0) return;\n $(container).css(\"height\", (height - headerHeight));\n // Yearlyboard\n var smartKanban = $(elem).find(\".smart-kanban\");\n if (smartKanban.length === 0) return;\n headerHeight = headerHeight + 50;\n $(smartKanban).css(\"height\", (height - headerHeight));\n // Yearlyboard\n var yearlyBoardcontainer = $(elem).find(\".yearly-board-content-container\");\n if (yearlyBoardcontainer.length === 0) return;\n headerHeight = headerHeight + 100;\n $(yearlyBoardcontainer).css(\"height\", (height - headerHeight));\n }\n\n const resizeDebounced = debounce(resize, 100, false)\n var calculateCells = function (task, columns) {\n task.cellModels = [];\n for (let index = 0; index < columns.length; index++) {\n const column = columns[index];\n var cellModel = {\n task: task,\n column: column,\n cell: null\n }\n var hasCell = task.cells.filter(c => c.smartTableColumnId == column.id);\n if (hasCell.length > 0) {\n var cell = hasCell[0];\n if (cell.value) {\n cell.value = JSON.parse(cell.value);\n }\n cellModel.cell = cell;\n } else {\n // Create default cell\n cellModel.cell = {\n id: 0,\n boardTaskId: task.id,\n smartTableColumnId: column.id,\n value: null\n }\n }\n \n task.cellModels.push(cellModel)\n }\n }\n var addColumnTotasks = function (column) {\n for (let index = 0; index < scope.tasks.length; index++) {\n var task = scope.tasks[index];\n var cellModel = {\n task: task,\n column: column,\n cell: null\n }\n // Create default attribute\n cellModel.cell = {\n id: 0,\n boardTaskId: task.id,\n smartTableColumnId: column.id,\n value: null\n }\n task.cellModels.push(cellModel)\n }\n }\n\n scope.columnNameUpdated = function (column) {\n smartActionListService().updateColumn(column).then(function (attribute) {\n })\n }\n scope.predefinedIcons = function (col) {\n if (!col.settings) {\n col.settings = {};\n }\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'predefinedIcons.html',\n controller: 'predefinedIcons',\n resolve: {\n labels: function () {\n return col.settings.predefinedIcons;\n }\n }\n });\n\n modalInstance.result.then(function (result) {\n if (!col.settings) {\n col.settings = {};\n }\n col.settings.predefinedIcons = result;\n var payload = {\n type: 'smartactionlist',\n columnId: col.id,\n predefinedIcons: col.settings.predefinedIcons\n }\n scope.publish(\"SmartIconCellSelectorUpdated\", payload);\n\n smartActionListService().updateColumn(col).then(function (attribute) {\n refreshTimeBoardModel();\n })\n\n });\n }\n scope.predefinedLabels = function (col) {\n if (col.settings.usePredefinedLabels) {\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'predefinedLabels.html',\n controller: 'predefinedLabels',\n resolve: {\n labels: function () {\n return col.settings.predefinedLabels;\n }\n }\n });\n\n modalInstance.result.then(function (result) {\n if (!col.settings) {\n col.settings = {};\n }\n col.settings.predefinedLabels = result;\n var payload = {\n columnId: col.id,\n predefinedLabels: col.settings.predefinedLabels,\n usePredefinedLabels: col.settings.usePredefinedLabels\n }\n scope.publish(\"SmartActionListTextCellLabelUpdated\", payload);\n smartActionListService().updateColumn(col).then(function (attribute) {\n refreshTimeBoardModel();\n })\n\n });\n } else {\n col.settings.usePredefinedLabels = false;\n var payload = {\n columnId: col.id,\n predefinedLabels: col.settings.predefinedLabels,\n usePredefinedLabels: col.settings.usePredefinedLabels\n }\n scope.publish(\"SmartActionListTextCellLabelUpdated\", payload);\n\n smartActionListService().updateColumn(col).then(function (attribute) {\n refreshTimeBoardModel();\n })\n }\n }\n\n \n\n function createNewTask(taskSortOrder){\n var task = {\n id: 0,\n boardId: scope.boardId,\n title: \"\",\n text: \"\",\n status: 'blank',\n tags: \"\",\n color:\"#e6e9ed\",\n sortOrder: taskSortOrder\n }\n\n var options = {\n users: scope.users,\n showDueDate: true\n }\n\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'newBoardTask.html',\n controller: 'newBoardTaskController',\n resolve: {\n task: function () {\n return task;\n },\n options: function () {\n return options;\n }\n }\n });\n\n modalInstance.result.then(function (result) {\n if(taskSortOrder === 0){\n var has = scope.tasks.filter(t => t.id == result.id);\n if (has.length === 0) {\n scope.task.unshift(result);\n }\n saveTaskSortOrder();\n }\n });\n }\n\n scope.newTask = function () {\n createNewTask(scope.columns.length);\n }\n\n scope.newTaskFirstInList = function () {\n createNewTask(0);\n }\n\n scope.deleteBoard = function () {\n $translate(['COMMON_CANCEL', 'COMMON_DELETE', 'ADMIN_DELETED_BOARD', 'ADMIN_DELETED_BOARD_DESCRIPTION']).then(function (translations) {\n var modalOptions = {\n closeButtonText: translations.COMMON_CANCEL,\n actionButtonText: translations.ADMIN_DELETED_BOARD,\n headerText: translations.COMMON_DELETE + ' ' + scope.title + '?',\n bodyText: translations.ADMIN_DELETED_BOARD_DESCRIPTION\n };\n\n modalService.showModal({}, modalOptions).then(function (result) {\n boardService.deleteBoard(boardId).then(function (result) {\n if(!(result && result.status == 400)){\n $state.go('flexiboards');\n scope.publish(\"SendBoardDeleted\", boardId);\n }\n });\n });\n\n });\n }\n scope.addColumn = function (type) {\n if (type === \"numberAutomatic\") {\n addNumberAutomaticColumn(type);\n } else {\n var headertext = translationService.getTranslatedSmartColumnName(type);\n if (headertext === \"\") {\n headertext = type.charAt(0).toUpperCase() + type.slice(1);\n }\n\n var column = {\n boardId: scope.boardId,\n name: headertext,\n attributeType: type,\n sortOrder: scope.columns.length\n }\n smartActionListService().addColumn(column).then(function (savedAttribute) {\n\n })\n\n }\n }\n scope.editTimeframe = function (col) {\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'timeframeSelectorModal.html',\n controller: 'timeframeSelectorModal',\n resolve: {\n timePeriod: function () {\n return col.settings.timePeriod;\n }\n }\n });\n\n modalInstance.result.then(function (result) {\n col.settings.timePeriod = result; //result = timePeriod.timeframe e.g.\"all\"\n var payload = {\n columnId: col.id,\n timePeriod: col.settings.timePeriod\n }\n scope.publish(\"SmartActionListNumberCellAutomaticTimeframeUpdated\", payload);\n\n smartActionListService().updateColumn(col).then(function (attribute) {\n\n })\n\n });\n\n }\n scope.getTimeframeLabel = function (timeframe) {\n return timeService.getTimeframeLabel(timeframe);\n }\n scope.delete = function (task) {\n boardTaskService().deleteTask(task.id).then(function (task) {\n });\n }\n\n scope.deleteColumn = function (column) {\n smartActionListService().deleteColumn(column.id);\n }\n\n scope.calculateNumberCellTotal = function (colDef) {\n var total = 0;\n for (var i = 0; i < colDef.projectAttributes.length; i++) {\n var value = colDef.projectAttributes[i].value;\n var valueObject = JSON.parse(value);\n var cellNumber = valueObject.number;\n if (cellNumber) {\n total = total + cellNumber;\n }\n }\n return total;\n }\n\n function addNumberAutomaticColumn(type) {\n\n var dataSource = null;\n var filters = null;\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'dataSourceSingleSelector.html',\n controller: 'dataSourceSingleSelector',\n windowClass: 'newdeviation-modal-window',\n resolve: {\n hasDataSerie: function () {\n return false;\n },\n dataSource: function () {\n return dataSource;\n },\n filters: function () {\n return filters;\n },\n withTarget: function () {\n return false;\n },\n type: function () {\n return null;\n },\n externalOnly: function () {\n return false;\n }\n }\n });\n\n modalInstance.result.then(function (result) {\n\n var timePeriod = {\n timeframe: \"all\",\n period: timeService.getTimePeriod(\"all\")\n }\n\n var unit = null;\n if (result.dataSource.valueElement) {\n unit = result.dataSource.valueElement.unit;\n }\n var cellSettings = JSON.stringify({\n dataSource: result.dataSource,\n timePeriod: timePeriod,\n filters: result.filters,\n aggregateType: \"SUM\",\n unit: unit,\n unitPlacement: \"right\"\n })\n var column = {\n boardId: scope.boardId,\n name: result.dataSource.title,\n attributeType: type,\n sortOrder: scope.columns.length - 1,\n settings: cellSettings,\n }\n smartActionListService().addColumn(column).then(function (savedAttribute) {\n\n })\n\n });\n };\n\n scope.updateAggregateType = function (col) {\n var payload = {\n columnId: col.id,\n aggregateType: col.settings.aggregateType\n }\n scope.publish(\"SmartActionListNumberCellAggregateTypeUpdated\", payload);\n\n smartActionListService().updateColumn(col).then(function (attribute) {\n })\n };\n scope.updateUnit = function (col) {\n var payload = {\n columnId: col.id,\n unit: col.settings.unit\n }\n scope.publish(\"SmartActionListNumberCellUnitUpdated\", payload);\n\n smartActionListService().updateColumn(col).then(function (attribute) {\n })\n };\n scope.updateUnitPlacement = function (col) {\n var payload = {\n columnId: col.id,\n unitPlacement: col.settings.unitPlacement\n }\n scope.publish(\"SmartActionListNumberCellUnitPlacementUpdated\", payload);\n\n smartActionListService().updateColumn(col).then(function (attribute) {\n })\n };\n\n // TODO: FIX THIS Bakend/Frontend\n scope.updateDecimals = function (col) {\n var payload = {\n decimals: col.settings.decimals,\n smartActionListColumnId: col.id\n }\n // Use this event in order to reuse the project elements components\n scope.publish(\"SmartActionListNumberCellDecimalUpdated\", payload);\n\n\n smartActionListService().updateColumn(col).then(function (attribute) {\n\n })\n\n };\n\n scope.edit = function () {\n var options = {\n targetType : \"Board\",\n targetId : scope.boardId\n }\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'boardSettings.html',\n controller: 'boardSettingsController',\n resolve: {\n options: function () {\n return options;\n }\n }\n });\n modalInstance.result.then(function (result) {\n scope.title = result.name;\n getAllUsers();\n if (!scope.isStandAlone) {\n scope.updateSettings();\n }\n }, function () {\n \n }); \n }\n\n scope.cellChangeHandler = function (cell) {\n if (cell.value) {\n cell.value = JSON.stringify(cell.value);\n }\n\n smartActionListService().updateCell(cell).then(function (savedCell) {\n // Parse value again\n cell.id = savedCell.id;\n if (savedCell.value) {\n cell.value = JSON.parse(savedCell.value);\n }\n // We need to notify yearlyboard\n //if (scope.timeboardEnabled) {\n scope.cellUpdated = cell;\n //}\n\n });\n }\n\n scope.subscribe(\"TaskDeleted\", function (taskId) {\n var isPartOfTasks = scope.tasks.filter(t => t.id == taskId);\n if (isPartOfTasks.length > 0) {\n var current = isPartOfTasks[0];\n var index = scope.tasks.indexOf(current);\n scope.tasks.splice(index, 1);\n scope.taskDeleted = current;\n }\n });\n\n scope.subscribe(\"SmartActionListColumnUpdated\", function (updatedColumn) {\n if (updatedColumn.boardId === scope.boardId) {\n var hasColumn = scope.columns.filter(c => c.id == updatedColumn.id);\n if (hasColumn.length > 0) {\n var column = hasColumn[0];\n if (column.name !== updatedColumn.name) {\n column.name = updatedColumn.name;\n }\n if (updatedColumn.settings) {\n column.settings = JSON.parse(updatedColumn.settings);\n }\n }\n }\n });\n scope.subscribe(\"SmartActionListColumnAdded\", function (column) {\n if (column.boardId === scope.boardId) {\n var hasColumn = scope.columns.filter(c => c.id == column.id);\n if (hasColumn.length === 0) {\n addColumnTotasks(column);\n scope.columns.push(column);\n }\n }\n });\n scope.subscribe(\"SmartActionListColumnDeleted\", function (column) {\n if (column.boardId === scope.boardId) {\n loadsmartActionList(scope.boardId);\n }\n });\n scope.subscribe(\"SmartActionListtaskDeleted\", function (task) {\n var isPartOfBoard = scope.tasks.filter(t => t.id == task.id);\n if (isPartOfBoard && isPartOfBoard.length === 1) {\n var tabletask = isPartOfBoard[0];\n tabletask.cssState = \"animated slideOutRight\"; // Add animation\n var index = scope.tasks.indexOf(tabletask);\n if (index > -1) {\n scope.tasks.splice(index, 1);\n }\n\n }\n });\n\n scope.subscribe(\"SmartActionListCellUpdated\", function (cell) {\n const task = scope.tasks.find(t => t.id == cell.boardTaskId);\n if (task) {\n const cellModel = task.cells.find(c => c.smartTableColumnId == cell.smartTableColumnId);\n if (cellModel) {\n cellModel.value = cell.value;\n // We need to notify yearlyboard \n /* Currently yearly board subscribe the event SmartActionListCellUpdated and do not use this logic since it was not reliable\n if (scope.timeboardEnabled) {\n scope.cellUpdated = cell;\n }*/\n }\n\n }\n });\n \n\n scope.subscribe(\"NewTask\", function (task) {\n if (task.boardId === scope.boardId) {\n const hasTask = scope.tasks.find(t => t.id == task.id);\n if (!hasTask) {\n calculateCells(task, scope.columns);\n if(task.sortOrder === 0){\n scope.tasks.unshift(task);\n } else {\n scope.tasks.push(task);\n } \n if (scope.timeboardEnabled) {\n scope.taskAdded = task;\n }\n }\n }\n });\n\n\n scope.subscribe(\"SmartActionListSortOrderChanged\", function (payLoad) {\n if (payLoad.boardId === scope.boardId) {\n loadsmartActionList(scope.boardId);\n }\n });\n scope.subscribe(\"SmartActionListRowSortOrderChanged\", function (payLoad) {\n if (payLoad.boardId === scope.boardId) {\n for (var i = 0; i < scope.tasks.length; i++) {\n var task = scope.tasks[i];\n var updatedSortOrder = payLoad.sortOrders.filter(s => s.boardTaskId == task.id );\n if (updatedSortOrder.length > 0) {\n task.sortOrder = updatedSortOrder[0].sortOrder;\n }\n }\n scope.tasks = orderByFilter(scope.tasks, 'sortOrder');\n }\n });\n \n // Drag and drop of columns events\n scope.$on('column-header-bag.drop-model', function (e, el) {\n if(!scope.editable) return;\n var columnOrder = scope.columns;\n var sortOrder = [];\n for (var i = 0; i < scope.columns.length; i++) {\n var column = scope.columns[i];\n var columnOrder = {\n smartActionListColumnId: column.id,\n sortOrder: i\n }\n sortOrder.push(columnOrder)\n }\n smartActionListService().updateColumnSortOrder(scope.boardId, sortOrder).then(function () {\n\n });\n\n });\n scope.$on('column-header-bag.drag', function (e, el) {\n $(el).find(\".drag-drop-icon\").hide();\n $(el).find(\".option-icon\").hide();\n el.addClass('drag-moved');\n });\n\n scope.$on('column-header-bag.dragend', function (e, el) {\n $(el).find(\".drag-drop-icon\").show();\n $(el).find(\".option-icon\").show();\n });\n\n scope.$on('column-header-bag.drop', function (e, el) {\n $(el).find(\".drag-drop-icon\").show();\n $(el).find(\".option-icon\").show();\n el.removeClass('drag-moved');\n\n });\n scope.$on('column-header-bag.over', function (e, el) {\n el.addClass('drag-over');\n })\n scope.$on('column-header-bag.out', function (e, el) {\n el.removeClass('drag-over');\n });\n\n scope.columnWidthChangeHandler = function(col){\n if(col){\n smartActionListService().updateColumn(col).then(function (attribute) {\n })\n }\n }\n\n function saveTaskSortOrder(){\n if(!scope.editable) return;\n var taskOrder = scope.tasks;\n var sortOrder = [];\n for (var i = 0; i < scope.tasks.length; i++) {\n var task = scope.tasks[i];\n var taskOrder = {\n boardTaskId: task.id,\n sortOrder: i\n }\n sortOrder.push(taskOrder)\n }\n smartActionListService().updateTaskSortOrder(scope.boardId, sortOrder).then(function () {\n\n });\n }\n // Drag and drop of tasks events\n scope.$on('task-header-bag.drop-model', function (e, el) {\n saveTaskSortOrder();\n });\n\n scope.addToFavorites = function () {\n scope.isStar = true\n const board = {\n id: scope.boardId,\n name: scope.title,\n boardType: 'SmartActionList'\n }\n scope.quickAccess.push(board);\n saveQuickAccess()\n }\n scope.removeFromFavorites = function () {\n scope.isStar = false\n const isFavorite = scope.quickAccess.find(q => q.id == scope.boardId)\n if (isFavorite) {\n const currentIndex = scope.quickAccess.indexOf(isFavorite)\n scope.quickAccess.splice(currentIndex, 1)\n saveQuickAccess()\n }\n }\n\n scope.getColStyle = getColStyle\n function saveQuickAccess() {\n employeeService.updateUserPreference(\"FlexiboardFavoriteBoards\", scope.quickAccess).then(function (settings) {\n scope.publish(\"FlexiboardFavoriteBoardsChanged\", scope.quickAccess)\n })\n }\n\n function checkFavorite(){\n employeeService.getUserPreference(\"FlexiboardFavoriteBoards\").then(function (settings) {\n if (settings && settings.value) {\n angular.forEach(settings.value, function (board) {\n if (board) {\n if(board.id == scope.boardId){\n scope.isStar = true;\n }\n scope.quickAccess.push(board);\n }\n });\n }\n });\n }\n\n }\n }\n }]);\n\n","import { parseColumnSettings } from \"@common/services/settingsService\"\nimport envConfig from \"@common/envConfig\";\n\nangular.module(\"DigiLean\").service('smartActionListService', ['$http',\n function ($http) {\n function smartActionListService() {\n var resource = \"/smartActionList\";\n var resourceUrl = envConfig.webApiUrl + resource;\n return {\n createsmartActionList: function(smartActionListTemplate) {\n var url = resourceUrl + \"/createsmartActionList/\";\n return $http.post(url, smartActionListTemplate).then(function (result) {\n return result.data;\n });\n },\n createSmartActionListFromTemplate: function(id, targetOptions) {\n resourceUrl = resourceUrl + \"/createsmartActionListFromTemplate/\" + id;\n return $http.post(resourceUrl, targetOptions).then(function (result) {\n return result.data;\n });\n },\n get: function (id) {\n var url = resourceUrl + \"/\" + id;\n return $http.get(url).then(function (result) {\n const smartActionList = result.data\n parseColumnSettings(smartActionList.columns)\n return smartActionList;\n });\n },\n getArchivedTasks: function (id) {\n var url = resourceUrl + \"/getArchivedTasks/\" + id;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n addTask: function (task) {\n var url = resourceUrl + \"/addTask/\";\n return $http.post(url, task).then(function (result) {\n return result.data;\n });\n },\n updateTaskSortOrder: function (boardId, sortOrder) {\n var url = resourceUrl + \"/updateTaskSortOrder/\" + boardId ;\n return $http.put(url, sortOrder).then(function (result) {\n return result.data;\n });\n },\n updateCell: function (cell) {\n var url = resourceUrl + \"/updateCell/\";\n return $http.put(url, cell).then(function (result) {\n return result.data;\n });\n },\n addColumn: function (column) {\n var url = resourceUrl + \"/addColumn/\";\n return $http.post(url, column).then(function (result) {\n return result.data;\n });\n },\n \n deleteColumn: function(id) {\n var url = resourceUrl + \"/deleteColumn/\" + id;\n return $http.delete(url).then(function (result) {\n return result.data;\n });\n },\n updateColumn: function (col) {\n var updated = {\n id: col.id,\n name: col.name,\n boardId: col.boardId\n }\n if (col.settings) { \n updated.settings = JSON.stringify(col.settings);\n }\n var url = resourceUrl + \"/updateColumn/\";\n return $http.put(url, updated).then(function (result) {\n return result.data;\n });\n },\n updateColumnSortOrder: function (boardId, sortOrder) {\n var url = resourceUrl + \"/UpdateColumnSortOrder/\" + boardId ;\n return $http.put(url, sortOrder).then(function (result) {\n return result.data;\n });\n },\n }\n }\n return smartActionListService;\n }]);\n\n","import * as timeService from \"@common/services/timeService\"\n\nangular\n .module('DigiLean')\n .directive(\"smartactionlistNumberCellAutomatic\", ['$filter', 'debounce', '$uibModal', 'projectService','dataService','mathService',\n function ($filter, debounce, $uibModal, projectService, dataService, mathService) {\n return {\n templateUrl: 'smartactionlistNumberCellAutomatic.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'editable': '=',\n 'cellChangeHandler': '&',\n }, \n link: function (scope, elem, attrs) {\n scope.number = null;\n scope.unit = null;\n scope.unitPlacement = \"right\";\n scope.lastDate = null;\n\n scope.taskId = null;\n scope.color = \"#676a6c\";\n scope.background = \"inherit\";\n scope.customColorBackground = \"#a9a9a9\";\n scope.postIts = projectService().getPostIts();\n var filters = [];\n var dataSource = null;\n var period = null; \n scope.smartActionListColumnId = null;\n scope.decimals = null;\n var settings = null;\n\n scope.$watch('model', function (model) {\n var value = model.cell.value;\n scope.smartActionListColumnId = model.cell.smartTableColumnId;\n settings = model.column.settings; \n if (settings.timePeriod.timeframe !== \"last\") { \n period = timeService.getTimePeriod(settings.timePeriod.timeframe);\n } else {\n period = timeService.getTimePeriod(\"all\");\n }\n scope.taskId = model.cell.boardTaskId;\n if(value){\n if(value.dataSource){\n dataSource = value.dataSource;\n }\n if(value.filters){\n filters = value.filters;\n }\n setColor(value);\n }\n if (settings) {\n if(!dataSource && settings.dataSource){\n dataSource = settings.dataSource;\n }\n if(settings.decimals !== null || settings.decimals !== undefined){\n scope.decimals = settings.decimals;\n }\n if(settings.unit){\n scope.unit = settings.unit;\n if(settings.unitPlacement){\n scope.unitPlacement = settings.unitPlacement;\n }\n }\n if(!filters && settings.filers){\n filters = settings.filters;\n }\n } \n scope.updateValue(dataSource.id);\n model.getSortValue = function() {\n return scope.number;\n }\n });\n\n scope.subscribe(\"SmartActionListNumberCellAutomaticTimeframeUpdated\", function (value) {\n if(scope.smartActionListColumnId === value.columnId){ \n scope.lastDate = null;\n settings.timePeriod.timeframe = value.timePeriod.timeframe; \n scope.updateValue(dataSource.id);\n }\n });\n\n scope.subscribe(\"SmartActionListNumberCellDecimalUpdated\", function (value) {\n if(scope.smartActionListColumnId == value.smartActionListColumnId){\n scope.decimals = value.decimals;\n scope.updateValue(dataSource.id);\n }\n });\n scope.subscribe(\"SmartActionListNumberCellUnitUpdated\", function (value) {\n if(scope.smartActionListColumnId === value.columnId){\n scope.unit = value.unit;\n }\n });\n scope.subscribe(\"SmartActionListNumberCellUnitPlacementUpdated\", function (value) {\n if(scope.smartActionListColumnId === value.columnId){\n scope.unitPlacement = value.unitPlacement;\n }\n });\n scope.subscribe(\"DataValueAdded\", function (value) {\n scope.updateValue(value.dataSourceId);\n });\n scope.subscribe(\"DataValueUpdated\", function (value) {\n scope.updateValue(value.dataSourceId);\n });\n scope.subscribe(\"DataValueDeleted\", function (value) {\n scope.updateValue(value.dataSourceId);\n });\n\n function getLastValue(){\n if (settings.timePeriod.timeframe === \"last\") {\n period = null;\n } else {\n if(!period){\n period = timeService.getTimePeriod(\"all\");\n }\n }\n dataService().getLastDate(dataSource.id, period, filters).then(function (fromDate) {\n scope.lastDate = moment(fromDate).toDate();\n var toDate = moment(fromDate).endOf('day');\n var dayperiod = {\n from:fromDate,\n to:toDate\n };\n \n var options = {\n timePeriod: dayperiod,\n filters: filters,\n };\n\n dataService().getSumForPeriod(dataSource.id, options).then(function (sum) {\n scope.number = sum;\n var payload = {\n smartTableColumnId: scope.smartTableColumnId,\n smartTableRowId: scope.smartTableRowId,\n value: scope.number\n } \n scope.publish(\"SmartTableNumberCellUpdated\", payload);\n\n if(scope.decimals !== null) {\n if(scope.decimals !== undefined) {\n scope.number = mathService().roundNumber(scope.number, scope.decimals);\n }\n } \n });\n });\n\n }\n\n function getAll(){\n \n period = timeService.getTimePeriod(\"all\");\n \n dataService().getLastDate(dataSource.id, null, filters).then(function (lastDate) {\n \n var toDate = moment(lastDate).endOf('day');\n var newperiod = {\n from:period.from,\n to:toDate\n };\n \n var formula = null;\n if(dataSource.valueElement && dataSource.valueElement.unit == \"%\"){\n formula = \"average\";\n }\n var options = {\n timePeriod: newperiod,\n filters: filters,\n formula:formula\n };\n\n dataService().getSumForPeriod(dataSource.id, options).then(function (sum) {\n scope.number = sum;\n var payload = {\n smartActionListColumnId: scope.smartActionListColumnId,\n taskId: scope.model.task.id,\n value: scope.number\n } \n scope.publish(\"SmartActionListNumberCellUpdated\", payload);\n if(scope.decimals !== null) {\n if(scope.decimals !== undefined) {\n scope.number = mathService().roundNumber(scope.number, scope.decimals);\n }\n } \n });\n });\n\n }\n\n scope.updateValue = function (id) {\n if (!dataSource) return;\n if (dataSource.id !== id) return;\n if (settings.timePeriod.timeframe === \"last\") {\n getLastValue();\n } else if(settings.timePeriod.timeframe === \"all\" ){\n getAll();\n } else{\n period = timeService.getTimePeriod(settings.timePeriod.timeframe);\n\n var formula = null;\n if (dataSource.valueElement && dataSource.valueElement.unit == \"%\") {\n formula = \"average\";\n }\n var options = {\n timePeriod: period,\n filters: filters,\n formula: formula\n };\n dataService().getSumForPeriod(dataSource.id, options).then(function (sum) {\n \n scope.number = sum;\n var payload = {\n smartActionListColumnId: scope.smartActionListColumnId,\n taskId: scope.model.task.id,\n value: scope.number\n } \n scope.publish(\"SmartActionListNumberCellUpdated\", payload);\n if(scope.decimals !== null) {\n if(scope.decimals !== undefined) {\n scope.number = mathService().roundNumber(scope.number, scope.decimals);\n }\n }\n });\n }\n };\n \n var setColor = function(cell) {\n if(cell && cell.background){\n scope.background = cell.background;\n scope.color = cell.color;\n }\n \n var predefinedPostIt = $filter('filter')(scope.postIts, { background: scope.background });\n if (predefinedPostIt.length > 0) {\n scope.selectedPostIt = predefinedPostIt[0];\n } else //Custom color \n {\n scope.selectedPostIt = { title: \"custom\", background: scope.background };\n scope.customColorBackground = cell.background;\n }\n }\n\n scope.openDataSource = function(){\n\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'dataSourceSingleSelector.html',\n controller: 'dataSourceSingleSelector',\n windowClass: 'newdeviation-modal-window',\n resolve: {\n hasDataSerie: function () {\n return true;\n },\n dataSource: function () {\n return dataSource;\n },\n filters: function () {\n return filters;\n },\n withTarget: function () {\n return false;\n },\n type: function () {\n return null;\n },\n externalOnly: function () {\n return false;\n }\n }\n });\n\n modalInstance.result.then(function (result) {\n filters = result.filters;\n dataSource = result.dataSource;\n scope.updateValue(dataSource.id);\n scope.saveChanges();\n });\n }\n\n scope.selectColor = function (postIt) {\n scope.selectedPostIt = postIt;\n if(postIt.title === 'default'){\n scope.background = \"inherit\";\n scope.color = \"#676a6c\";\n } else {\n scope.background = postIt.background;\n scope.color = \"#ffffff\";\n }\n scope.commitChangesDebounced();\n }\n scope.selectCustomColor = function (color) {\n scope.selectedPostIt = { title: \"custom\", background: color };\n scope.background = color;\n scope.color = \"#ffffff\";\n scope.commitChangesDebounced();\n }\n\n scope.saveChanges = function() {\n var value = {\n background: scope.background,\n color: scope.color,\n filters: filters,\n dataSource: dataSource\n }\n scope.model.cell.value = value;\n scope.cellChangeHandler({cell: scope.model.cell})\n }\n\n // Debounce function so that save is called to often.\n scope.commitChangesDebounced = debounce(scope.saveChanges, 1000, false);\n\n }\n }\n }]);\n","import { getDefaultAppStyle, getDefaultAppTheme, calcDefaultAppFontSize } from \"@common/components/dashboard/designer/common/appStyleService\"\nimport { translateLabelInstant } from \"@common/services/language/DigiLeanLang\"\nimport * as boardService from \"@common/services/boardService\"\nimport { hasDefaultAccess } from \"@common/components/dashboard/designer/common/userAccessService\"\n\n\nangular\n .module('DigiLean')\n .directive(\"actionListApp\", ['$filter', 'actionlistService', '$uibModal', 'boardTaskService', 'taskDrawingService', \n function ($filter, actionlistService, $uibModal, boardTaskService, taskDrawingService) {\n return {\n templateUrl: 'actionListApp.html',\n restrict: 'E',\n scope: {\n 'isAdminMode': '<',\n 'settings': '<',\n 'settingsChangeHandler': '&',\n 'assetId': '<',\n 'layoutFactor': '<',\n 'userAccess': '<'\n },\n link: function (scope, element, attrs) {\n\n scope.theme = getDefaultAppTheme()\n scope.themeChangedEvent = function($event) {\n scope.theme = $event.detail\n scope.updateSettings()\n }\n \n scope.appStyle = getDefaultAppStyle()\n function calcStyles() {\n scope.appStyle[\"font-size\"] = calcDefaultAppFontSize(scope.layoutFactor)\n }\n calcStyles()\n scope.$watch('layoutFactor', calcStyles)\n\n scope.canEdit = true;\n\n scope.$watch('userAccess', function (userAccess) {\n scope.canEdit = hasDefaultAccess(userAccess);\n });\n\n scope.title = translateLabelInstant(\"BOARD_ACTION_LIST\") // default value\n scope.titleChangedEvent = function($event) {\n scope.title = $event.detail\n var boardName = {\n boardId: scope.boardId,\n name: scope.title\n }\n \n boardService.updateName(scope.boardId, boardName).then(function (smartActionList) {\n });\n scope.updateSettings()\n }\n scope.actionList = null;\n scope.currentView = null;\n scope.isLoading = true;\n scope.board = null;\n scope.tasks = null;\n scope.items = [];\n scope.title = null;\n \n\n scope.subscribe(\"CreateActionListItem\", function (status) {\n getActionListTasks();\n });\n scope.subscribe(\"TaskDeleted\", function (status) {\n getActionListTasks();\n });\n scope.subscribe(\"TaskUpdated\", function (status) {\n getActionListTasks();\n });\n\n scope.$watch('settings', function (settings) {\n scope.settings = settings;\n if (settings) {\n scope.title = settings.title;\n if (settings.targetDate) {\n scope.targetDate = moment(settings.targetDate).toDate();\n } else {\n scope.targetDate = moment().toDate();\n }\n if (settings.theme) {\n scope.theme = settings.theme;\n }\n scope.boardId = settings.boardId;\n if (scope.boardId)\n boardService.get(scope.boardId).then(function (result) {\n scope.board = result.board;\n getActionListTasks();\n getUsers();\n });\n }\n else {\n scope.settings = {};\n console.log(\"creating board\");\n boardService.create({ board: { boardType: \"ActionList\", assetId: scope.assetId } }).then(function (result) {\n scope.board = result.board;\n scope.boardId = result.board.id;\n scope.updateSettings();\n //scope.settings.boardId = scope.board.id;\n //scope.settingsChangeHandler({ settings: scope.settings });\n getActionListTasks();\n getUsers();\n });\n\n }\n });\n\n scope.changeTheme= function(theme){\n scope.theme = theme;\n scope.updateSettings();\n }\n\n\n var getActionListTasks = function () {\n boardService.getActionListTasks(scope.board.id).then(function (tasks) {\n \n scope.tasks = tasks.sort((a,b) => {\n a = new Date(a.boardDate);\n b = new Date(b.boardDate);\n return a > b ? 1 : a < b ? -1 : 0;\n });\n scope.isLoading = false;\n });\n }\n\n scope.updateSettings = function () {\n var componentSettings = {\n title: scope.title,\n targetDate: scope.targetDate,\n boardId: scope.boardId,\n theme: scope.theme\n };\n scope.settingsChangeHandler({ settings: componentSettings });\n\n }\n\n scope.editTask = function (task, event) {\n $uibModal.open({ backdrop: 'static',\n animation: scope.animationsEnabled,\n templateUrl: 'actionListEditTask.html',\n controller: 'actionListEditTaskController',\n resolve: {\n task: function () {\n return task;\n },\n date: function(){\n return new Date(task.boardDate);\n }\n }\n });\n event.stopPropagation();\n };\n\n scope.newTask = function () {\n $uibModal.open({ backdrop: 'static',\n animation: scope.animationsEnabled,\n templateUrl: 'actionListNewTask.html',\n controller: 'actionListNewTaskController',\n resolve: {\n boardid: function () {\n return scope.board.id;\n },\n date: function(){\n return new Date();\n }\n }\n });\n };\n\n scope.changeStatus = function (item) {\n if (scope.readonly) return;\n item.status = taskDrawingService().getNextStatus(item.status).status;\n var status = {\n taskId: item.id,\n status: item.status\n };\n boardTaskService().updateStatus(item.id, status).then(function (taskIds) {\n \n });\n \n }\n scope.subscribe('TaskStatusUpdated', function (status) {\n \n var tasks = $filter('filter')(scope.tasks, { id: status.taskId }, true);\n if (tasks.length > 0) {\n tasks[0].status = status.status;\n tasks[0].dateStyleClass = actionlistService().getTaskDateStyle(tasks[0]);\n }\n \n \n });\n\n\n // load users\n var users = [];\n var getUsers = function () {\n boardService.getUserListForBoard(scope.board.id).then(function (data) {\n users = data;\n // initalizeBoard();\n });\n }\n\n // Get Calendar tasks for period => transform to events \n scope.tasks = [];\n\n\n }\n }\n }]);\n","/*\n staticFileService\n \n For fetching static files that are uploaded to the baseurl container\n*/ \n\nconst baseUrl = \"https://digileanfiles.blob.core.windows.net/public-assets/\"\nconst imagesFolder = \"images/\"\nconst previewImagesFolder = \"preview-images/\"\nconst diagramTemplatesFolder = \"diagram-templates/\"\n\nconst getFile = (folder: string, filename: string) => {\n return `${baseUrl}${folder}${filename}`\n}\nexport const image = (filename: string) => {\n return getFile(imagesFolder, filename)\n}\nexport const previewImage = (filename: string) => {\n return getFile(previewImagesFolder, filename)\n}\nexport const diagramTemplate = (filename: string) => {\n return getFile(diagramTemplatesFolder, filename)\n}\n\n","import * as customerService from \"@common/services/customers/customerService\"\nimport * as assetService from \"@common/services/assetService\"\nimport * as timeService from \"@common/services/timeService\"\nimport * as boardService from \"@common/services/boardService\"\nimport { getDefaultAppStyle, getDefaultAppTheme, calcDefaultAppFontSize } from \"@common/components/dashboard/designer/common/appStyleService\"\nimport * as staticFileService from \"@common/shared/staticFileService\"\n\nangular\n .module('DigiLean')\n\n .directive(\"digileanBarChart\", ['$filter', '$translate', 'dataService', '$uibModal', 'a3Service', 'a3templateService', 'projectService', 'strategyService', 'suggestionService', 'deviationService', 'areaService', 'dataListService','debounce',\n function ($filter, $translate, dataService, $uibModal, a3Service, a3templateService, projectService,strategyService, suggestionService, deviationService, areaService, dataListService, debounce) {\n return {\n templateUrl: 'barchart.html',\n restrict: 'E',\n scope: {\n 'isAdminMode': '=',\n 'settings': '=',\n 'settingsChangeHandler': '&',\n 'globalTimePeriod': '@',\n 'layoutFactor': '<'\n },\n link: function (scope, elem, attrs) {\n var grafcolor = ['#2A2E36', '#0099DE', '#d9534f', '#23c6c8', '#0077B5', '#5e5e5e', '#f8ac59', '#17987e'],\n graphtextcolor = '#ffffff';\n \n scope.theme = getDefaultAppTheme()\n scope.themeChangedEvent = function($event) {\n scope.theme = $event.detail\n scope.updateSettings()\n }\n \n scope.appStyle = getDefaultAppStyle()\n function calcStyles() {\n scope.appStyle[\"font-size\"] = calcDefaultAppFontSize(scope.layoutFactor)\n }\n calcStyles()\n scope.$watch('layoutFactor', calcStyles)\n\n scope.optimizationChallenges = false;\n scope.configurationChallenges = false;\n\n scope.title = \"\";\n scope.titleChangedEvent = function($event) {\n scope.title = $event.detail\n scope.updateSettings()\n }\n scope.dataSource = null;\n scope.filters = [];\n var groupedBy = \"\";\n var groupingIntervall = \"month\";\n\n // Support list for labels\n scope.strategygoals = null;\n var problemCategories = null;\n var deviationTypes = null;\n var consequences = null;\n scope.areas = null;\n var assets = null;\n scope.a3templates = null;\n scope.boards = null;\n scope.imageUrl = staticFileService.image(\"barchart.jpg\");\n\n var listGroupedElements = null;\n\n scope.showTarget = false;\n var targetSerieData = null;\n\n var timeSettings = {\n timeframe: \"YTD\",\n useDefaultTimeframes: true,\n timeframes: [],\n period: null,\n getTimePeriod: function () {\n return {\n useDefaultTimeframes: timeSettings.useDefaultTimeframes,\n timeframes: timeSettings.timeframes,\n timeframe: timeSettings.timeframe,\n period: timeSettings.period\n }\n },\n setTimePeriod: function (timeframe, period) {\n timeSettings.timeframe = timeframe;\n timeSettings.period = period;\n // debounce, to make sure not starting loading several timeframes.\n scope.options = {\n timePeriod: timeSettings.getTimePeriod()\n }\n }\n }\n scope.setTimePeriodDebounced = debounce(timeSettings.setTimePeriod, 100, false);\n // Default options\n scope.setTimePeriodDebounced(timeSettings.timeframe, timeSettings.period);\n\n scope.$watch('settings', function (settings) {\n\n if (settings) {\n scope.settings = settings;\n if (settings.dataSource) {\n console.log('settings datasource:');\n console.log(settings.dataSource);\n scope.dataSource = settings.dataSource;\n }\n if (settings.groupedBy) {\n groupedBy = settings.groupedBy;\n }\n if (settings.groupingIntervall) {\n groupingIntervall = settings.groupingIntervall;\n }\n if (settings.filters) {\n scope.filters = settings.filters;\n }\n if (settings.timePeriod) {\n scope.setTimePeriodDebounced(settings.timePeriod.timeframe, settings.timePeriod.period);\n }\n if (settings.title) {\n scope.title = settings.title;\n }\n if (settings.showTarget === true) {\n scope.showTarget = settings.showTarget;\n }\n if (settings.theme) {\n scope.theme = settings.theme;\n }\n initialize();\n }\n if (!scope.dataSource && scope.isAdminMode) {\n setTimeout(function () {\n scope.selectDataSource();\n }, 200);\n }\n });\n\n // Subscribe to component related event\n scope.subscribe(\"DataValueAdded\", function (value) {\n if (!scope.dataSource || scope.dataSource.id !== value.dataSourceId) return;\n initialize();\n });\n scope.subscribe(\"DataValueUpdated\", function (value) {\n if (!scope.dataSource || scope.dataSource.id !== value.dataSourceId) return;\n initialize();\n });\n scope.subscribe(\"DataValueDeleted\", function (value) {\n if (!scope.dataSource || scope.dataSource.id !== value.dataSourceId) return;\n initialize();\n });\n\n function initialize() {\n console.log('initialize');\n console.log(scope.dataSource);\n\n if (!scope.dataSource) return;\n scope.configurationChallenges = false;\n var groupingElement = {\n sourceColumn: groupedBy //\"assetId\"\n }\n if (groupedBy === \"areaId\") {\n areaService().getList(true).then(function (areas) {\n scope.areas = areas;\n getData(groupingElement);\n });\n } else if (groupedBy === \"assetId\" || groupedBy === \"followUpAssetId\") {\n assetService.getAllAssetsIncludingSystem().then(function (data) {\n assets = data;\n getData(groupingElement);\n });\n }\n else if (groupedBy === \"projectId\") {\n projectService().getList(true).then(function (data) {\n scope.projects = data;\n getData(groupingElement);\n });\n } else if (groupedBy === \"strategyGoalId\") {\n strategyService().getBreakthroughObjectives().then(function (goals) {\n scope.goals = goals;\n getData(groupingElement);\n });\n } else if (groupedBy === \"problemCategoryId\") {\n deviationService().getProblemCategories(true).then(function (categories) {\n problemCategories = categories;\n getData(groupingElement);\n });\n } else if (groupedBy === \"deviationTypeId\") {\n deviationService().getAllDeviationTypes().then(function (types) {\n deviationTypes = types;\n getData(groupingElement);\n });\n } else if (groupedBy === \"lossTypeId\") {\n deviationService().getConsequences(true).then(function (data) {\n consequences = data;\n getData(groupingElement);\n });\n } else if (groupedBy === \"categoryId\") {\n if (scope.dataSource.id.startsWith(\"Improvement\")) {\n suggestionService().getCategories(true).then(function (categories) {\n scope.suggestionCategories = categories;\n getData(groupingElement);\n });\n } else {//assue A3 categories\n a3Service().getCategories(true).then(function (categories) {\n scope.a3Categories = categories;\n getData(groupingElement);\n });\n }\n } else if (groupedBy === \"boardId\") {\n boardService.getAll(true).then(function (boards) {\n scope.boards = boards;\n getData(groupingElement);\n });\n } else if (groupedBy === \"suggestedByUserId\" || groupedBy === \"createdByUserId\" || groupedBy === \"ownerUserId\" || groupedBy === \"responsibleUserId\") {\n customerService.getAllUsers(true).then(function (users) {\n scope.users = users;\n getData(groupingElement);\n });\n } else if (groupedBy === \"a3TemplateId\") {\n a3templateService().getList().then(function (templates) {\n scope.a3templates = templates;\n getData(groupingElement);\n });\n } else if (groupedBy === \"dimension\" || groupedBy === \"dimension2\" || groupedBy === \"dimension3\" || groupedBy === \"dimension4\") {\n var listId = checkElementType(groupedBy, 'list');\n if (listId > 0) {\n var listOptions = { includeDeletedItems: true };\n dataListService().getItems(listId, listOptions).then(function (data) {\n listGroupedElements = data;\n getData(groupingElement);\n });\n } else if (checkElementType(groupedBy, 'user') == 1) {\n customerService.getAllUsers().then(function (users) {\n scope.users = users;\n getData(groupingElement);\n });\n } else {\n getData(groupingElement);\n }\n } else {\n getData(groupingElement);\n }\n }\n \n scope.changeTheme= function(theme){\n scope.theme = theme;\n scope.updateSettings();\n }\n scope.toggleShowTarget = function () {\n scope.showTarget = !scope.showTarget;\n var groupingElement = {\n sourceColumn: groupedBy \n }\n getData(groupingElement);\n scope.updateSettings();\n }\n\n function setupTargetSerieData(values){\n var greentarget = [];\n for (var i = 0; i < values.length; i++) {\n \n var greenelement = {\n x: i,\n color: 'green',\n y: values[i].greenValue\n };\n greentarget.push(greenelement);\n }\n targetSerieData = {\n data : greentarget,\n type: 'spline',\n color: 'green',\n dashStyle: 'ShortDash',\n name: $translate.instant('COMMON_TARGET'), \n marker: {\n enabled:false\n }\n }\n }\n\n function loadTargetData(){\n var options = {\n groupByInterval: groupingIntervall,\n timeZone: timeService.getUserTimeZone(), // Which timezone we would like the result to be calculated in.\n timePeriod: scope.timePeriod.period,\n filters: scope.filters,\n };\n \n dataService().getTargetValuesForPeriod(scope.dataSource.id, options).then(function (values) {\n if (values) {\n setupTargetSerieData(values);\n setupChartData();\n setupChart();\n }\n }); \n }\n\n function checkElementType(sourceCol, typeChecking){\n var ref = -1;\n var element = $filter('filter')(scope.dataSource.elements, { sourceColumn: sourceCol }, true);\n if(element.length>0){\n var type = element[0].type;\n if(type === typeChecking && typeChecking === 'list'){\n return element[0].dataListId;\n } else if (type === typeChecking){\n return 1;\n }\n }\n return ref;\n }\n\n scope.registerData = function () {\n var settings = {\n dataSource: scope.dataSource\n };\n\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'registrationDialog.html',\n controller: 'registrationDialogController',\n windowClass: 'newdeviation-modal-window',\n resolve: {\n componentSettings: function () {\n return settings;\n }\n }\n });\n modalInstance.result.then(function (result) {\n }, function (res) { });\n };\n\n function getPointName(element) {\n if (groupedBy === \"assetId\" || groupedBy === \"followUpAssetId\") {\n return getNameById(assets, element);\n } else if (groupedBy === \"priorityStatus\") {\n return suggestionService().getPriorityStatusText(parseInt(element));\n } else if (groupedBy === \"problemCategoryId\") {\n return getNameById(problemCategories, element);\n } else if (groupedBy === \"deviationTypeId\") {\n return getNameById(deviationTypes, element);\n } else if (groupedBy === \"lossTypeId\") {\n return getNameById(consequences, element);\n } else if (groupedBy === \"a3TemplateId\") {\n return getNameById(scope.a3templates, element);\n } else if (groupedBy === \"categoryId\") {\n if (scope.dataSource.id.startsWith(\"Improvement\")) {\n return getNameById(scope.suggestionCategories, element);\n } else { // Only A3\n return getNameById(scope.a3Categories, element);\n }\n } else if (groupedBy === \"areaId\") {\n return getNameById(scope.areas, element);\n } else if (groupedBy === \"projectId\") {\n return getNameById(scope.projects, element);\n } else if (groupedBy === \"strategyGoalId\") {\n return getNameById(scope.goals, element); \n } else if (groupedBy === \"boardId\") {\n return getNameById(scope.boards, element);\n } else if (groupedBy === \"suggestedByUserId\" || groupedBy === \"createdByUserId\" || groupedBy === \"ownerUserId\" || groupedBy === \"responsibleUserId\") {\n return getNameByUserId(scope.users, element);\n } else if (groupedBy === \"dimension\" || groupedBy === \"dimension2\" || groupedBy === \"dimension3\" || groupedBy === \"dimension4\") {\n if (checkElementType(groupedBy, 'user') == 1) {\n return getNameByUserId(scope.users, element);\n } else if (checkElementType(groupedBy, 'list') !== -1){\n return getNameById(listGroupedElements, element);\n } \n else { \n return element;\n }\n } else if (groupedBy === \"severity\") {\n switch (element) {\n case \"1\":\n return $translate.instant('COMMON_LOW');\n case \"2\":\n return $translate.instant('COMMON_MEDIUM');\n case \"3\":\n return $translate.instant('COMMON_HIGH');\n default:\n return $translate.instant('COMMON_NOT_SPECIFIED');\n }\n } else if (groupedBy === \"status\") {\n switch (element) {\n case \"unacceptable\":\n return $translate.instant('BOARD_INCOMPLETED');\n case \"blank\":\n return $translate.instant('BOARD_OPEN');\n case \"OK\":\n return $translate.instant('DASHBOARD_COMPLETED');\n default:\n return $translate.instant('COMMON_NOT_SPECIFIED');\n }\n } else {\n return element;\n }\n }\n\n \n\n function getData(groupingElement) {\n if (!scope.timePeriod) return;\n if (!groupingElement || groupingElement.sourceColumn == \"\") {\n scope.configurationChallenges = true;\n return;\n }\n \n var options = {\n groupByInterval: groupingIntervall, //\"month\", // Foreløpig kun støtte for month, kan tenkes utvides.\n timeZone: timeService.getUserTimeZone(), // Which timezone we would like the result to be calculated in.\n timePeriod: scope.timePeriod.period,\n filters: scope.filters,\n groupingElement: groupingElement // Hvilken dimensjon man ønsker gruppert på. Eksempelvis AssetId + de eventuell AssetId verdiene man ønsker svaret begrenset til.\n };\n\n\n if (potentialOptimizationChallenges(scope.dataSource.id, options.timePeriod.from, options.timePeriod.to)) {\n scope.optimizationChallenges = true;\n\n } else {\n scope.optimizationChallenges = false;\n dataService().getGroupedSumForPeriod(scope.dataSource.id, options).then(function (values) {\n if (!values) {\n console.log(\"No values for data source:\" + scope.dataSource.id);\n return;\n } else {\n var complexityindex = 0;\n try {\n var noOfGroupCategories = values.results.length;\n var noOfDaysWithValues = values.results[0].results.length;\n complexityindex = noOfGroupCategories * noOfDaysWithValues;\n } catch (err) {\n }\n if(complexityindex > 3000){\n scope.optimizationChallenges = true;\n } else {\n scope.values = values.results;\n if(scope.showTarget){\n loadTargetData()\n } else {\n setupChartData();\n setupChart();\n }\n }\n }\n });\n }\n }\n\n function potentialOptimizationChallenges(datasourceId, from, to) {\n if (datasourceId == 'Tasks' || datasourceId == 'CompletedTasks') {\n var timeSpan = timeService.getDurationInDays(from, to);\n if (timeSpan > 32) {\n return true;\n }\n }\n return false;\n }\n\n /* This method will be called also when component is first initialized */\n scope.periodChangedHandler = function (timePeriod) {\n\n if (!timePeriod.timeframe) return;\n if (scope.timePeriod && scope.timePeriod.period.from === timePeriod.period.from && scope.timePeriod.period.to === timePeriod.period.to) return;\n scope.timePeriod = timePeriod;\n scope.options.timePeriod = timePeriod;\n if (timePeriod.timeframe === \"all\" && scope.dataSource) {\n dataService().getFirstDate(scope.dataSource.id, scope.timePeriod.period, null).then(function (fromDate) {\n dataService().getLastDate(scope.dataSource.id, scope.timePeriod.period, null).then(function (toDate) {\n scope.timePeriod.period.from = fromDate;\n var endOfDaytoDate = moment(toDate).endOf('day');\n scope.timePeriod.period.to = endOfDaytoDate;\n initialize();\n });\n });\n }\n else {\n initialize();\n }\n\n if (scope.isAdminMode) {\n scope.updateSettings();\n }\n\n }\n\n scope.updateSettings = function () {\n var componentSettings = {\n title: scope.title,\n timePeriod: scope.timePeriod,\n dataSource: scope.dataSource,\n groupedBy: groupedBy,\n groupingIntervall: groupingIntervall,\n filters: scope.filters,\n showTarget: scope.showTarget,\n theme: scope.theme\n };\n scope.settingsChangeHandler({ settings: componentSettings });\n }\n\n // Select dataSource to use.\n let selectDataSourceModal\n scope.selectDataSource = function () {\n if (selectDataSourceModal)\n return\n\n var hasDataSerie = false;\n if (scope.dataSource) {\n hasDataSerie = true;\n }\n selectDataSourceModal = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'dataSourceGroupSelector.html',\n controller: 'dataSourceGroupSelector',\n windowClass: 'dataserie-modal-window',\n resolve: {\n hasDataSerie: function () {\n return hasDataSerie;\n },\n dataSource: function () {\n return scope.dataSource;\n },\n groupedBy: function () {\n return groupedBy;\n },\n groupingIntervall: function(){\n return groupingIntervall;\n },\n filters: function () {\n return scope.filters;\n }\n }\n });\n\n selectDataSourceModal.result.then(function (result) {\n groupedBy = result.groupedBy;\n groupingIntervall = result.groupingIntervall;\n if(result.dataSource && (hasDataSerie == false || scope.dataSource.id != result.dataSource.id)){\n scope.title = result.dataSource.title;\n setRecommendedTimeperiod();\n }\n scope.dataSource = result.dataSource; \n if(scope.dataSource && scope.dataSource.objectSource == 'internal'){ //no target line for internal datasources. (Use targetgraph instead)\n scope.showTarget = false;\n } \n scope.filters = result.filters;\n scope.updateSettings();\n initialize();\n }, () => {}).finally(() => {\n selectDataSourceModal = null\n });\n };\n\n function setRecommendedTimeperiod(){\n if(groupingIntervall){\n if(groupingIntervall == \"DAY\"){\n timeSettings.timeframe = 'isoweek';\n scope.options = {\n timePeriod: timeSettings.getTimePeriod()\n }\n scope.setTimePeriodDebounced(timeSettings.timeframe, scope.options.timePeriod); \n }\n }\n }\n\n\n function getNameById(source, id) {\n if (id && source) {\n for (var k = 0; k < source.length; k++) {\n if (source[k].id.toString() === id.toString()) {\n if (source[k].name) {\n return source[k].name;\n } else if (source[k].title) {\n return source[k].title;\n } else {\n return $translate.instant('COMMON_NOT_SPECIFIED');\n }\n }\n }\n return $translate.instant('COMMON_NOT_SPECIFIED');\n } else {\n return $translate.instant('COMMON_NOT_SPECIFIED');\n }\n }\n\n // Used when grouped by user\n function getNameByUserId(source, id) {\n if (id && source) {\n for (var k = 0; k < source.length; k++) {\n if (source[k].userId.toString() === id.toString()) {\n if (source[k].fullName) {\n return source[k].fullName;\n } else if (source[k].userName) {\n return source[k].userName;\n } else {\n return $translate.instant('COMMON_NOT_SPECIFIED');\n }\n }\n }\n return $translate.instant('COMMON_NOT_SPECIFIED');\n } else {\n return $translate.instant('COMMON_NOT_SPECIFIED');\n }\n }\n\n function getColor(index, value){\n if(groupedBy == \"severity\"){\n return deviationService().getSeverityColor(parseInt(value));\n } else if (groupedBy == \"strategyGoalId\"){\n for (var k = 0; k < scope.goals.length; k++) {\n if (scope.goals[k].id.toString() === value.toString()) {\n if (scope.goals[k].color) {\n return scope.goals[k].color;\n \n } else {\n return null;\n }\n }\n }\n } else {\n return grafcolor[index];\n }\n }\n\n function setupChartData() {\n\n // x-axis\n scope.xAxisData = [];\n\n if (scope.values[0]) {\n for (var i = 0; i < scope.values[0].results.length; i++) {\n var xAxisDataLabel = \"\";\n // Assume every groupingElement has data for every bar\n if(groupingIntervall == \"DAY\"){\n xAxisDataLabel = moment(scope.values[0].results[i].valueDate).format(\"D.MMM\");\n } else if(groupingIntervall == \"WEEK\"){\n xAxisDataLabel = $translate.instant('COMMON_TIMEPERIOD_WEEK_PREFIX')+ scope.values[0].results[i].week;\n } else if(groupingIntervall == \"YEAR\"){\n xAxisDataLabel = scope.values[0].results[i].year;\n } else {\n if (scope.values[0].results[i].month) {\n xAxisDataLabel = scope.values[0].results[i].month + \".\";\n }\n xAxisDataLabel = xAxisDataLabel + scope.values[0].results[i].year;\n }\n scope.xAxisData.push(xAxisDataLabel);\n }\n } else {\n // alert(\"No values for defined component\");\n }\n\n // data population\n scope.seriesData = [];\n for (var i = 0; i < scope.values.length; i++) {\n var name = getPointName(scope.values[i].element);\n var color = getColor(i, scope.values[i].element);// grafcolor[i];\n var data = [];\n for (var y = 0; y < scope.values[i].results.length; y++) {\n data.push(scope.values[i].results[y].value);\n }\n var element = {\n name: name,\n color: color,\n data: data\n };\n scope.seriesData.push(element);\n }\n\n if (scope.showTarget && targetSerieData) {\n scope.seriesData.unshift(targetSerieData);\n }\n }\n\n var barChart;\n function setupChart() {\n var unit = \"\";\n if(scope.dataSource.valueElement && scope.dataSource.valueElement.unit){\n unit = scope.dataSource.valueElement.unit;\n }\n\n var renderElement = $(elem).find(\".barchart\")[0];\n barChart = new Highcharts.chart({\n chart: {\n renderTo: renderElement,\n type: 'column'\n },\n title: {\n text: ''\n },\n credits: {\n enabled: false\n }, exporting: {\n enabled: false //remove context menu\n },\n xAxis: {\n categories: scope.xAxisData\n },\n yAxis: {\n title: {\n text: unit\n },\n stackLabels: {\n enabled: true,\n style: {\n fontWeight: 'bold',\n color: grafcolor || graphtextcolor\n }\n }\n },\n tooltip: {\n shared: true\n },\n plotOptions: {\n column: {\n stacking: 'normal',\n dataLabels: {\n enabled: true\n }\n }\n },\n series: scope.seriesData\n\n });\n resizeChart();\n }\n\n scope.updateValue = function (id) {\n if (!scope.definition) return;\n if (scope.definition.datasource !== id) return;\n initialize();\n }\n\n \n function resizeChart() {\n if (!elem) return\n let appEl = elem[0]\n\n let width = appEl.offsetWidth\n let height = appEl.offsetHeight\n\n let headerEl = appEl.querySelector(\".app-header\")\n if (headerEl)\n height = height - headerEl.offsetHeight\n \n var chartContainer = $(elem).find(\".highcharts-container\").parent()\n if (chartContainer.length === 0) return\n\n if (barChart)\n barChart.setSize(width, height, true)\n }\n\n scope.$on(\"widget-resized\", function (event, args) {\n resizeChart();\n });\n\n }\n\n }\n }]);\n","import { getCompanySetting } from \"@common/stores/companySettingsStore\"\nimport * as customerService from \"@common/services/customers/customerService\"\nimport * as timeService from \"@common/services/timeService\"\nimport { getDefaultAppStyle, getDefaultAppTheme, calcDefaultAppFontSize } from \"@common/components/dashboard/designer/common/appStyleService\"\nimport * as staticFileService from \"@common/shared/staticFileService\"\n\nangular\n .module('DigiLean')\n .directive(\"digileanCompareChart\", ['dataService', '$uibModal', 'debounce',\n function (dataService, $uibModal, debounce) {\n return {\n templateUrl: 'comparechart.html',\n restrict: 'E',\n scope: {\n 'isAdminMode': '=',\n 'settings': '=',\n 'settingsChangeHandler': '&',\n 'layoutFactor': '<'\n },\n link: function (scope, elem, attrs) {\n var grafcolor = ['#2A2E36', '#0099DE', '#d9534f', '#23c6c8', '#0077B5', '#5e5e5e', '#f8ac59', '#17987e']\n\n scope.theme = getDefaultAppTheme()\n scope.themeChangedEvent = function($event) {\n scope.theme = $event.detail\n scope.updateSettings()\n }\n \n scope.appStyle = getDefaultAppStyle()\n function calcStyles() {\n scope.appStyle[\"font-size\"] = calcDefaultAppFontSize(scope.layoutFactor)\n }\n calcStyles()\n scope.$watch('layoutFactor', calcStyles)\n \n scope.title = \"\";\n scope.titleChangedEvent = function($event) {\n scope.title = $event.detail\n scope.updateSettings()\n }\n scope.imageUrl = staticFileService.image('comparechart.jpg');\n scope.dataSource = null;\n scope.seriesData = [];\n scope.filters = [];\n var selectedGrouping = \"month\";\n var companyfiscalmonth = customerService.getDefaultFiscalmonth() -1; //convert to moment month \n \n\n const timeSettings = {\n timeframe: \"thisvslastyear\",\n timeframes: ['thisvslastyear','thisfiscalvslastfiscalyear', 'last3years', 'last3fiscalyears'],\n period: null,\n getTimePeriod: function () {\n return {\n useDefaultTimeframes: timeSettings.useDefaultTimeframes,\n timeframes: timeSettings.timeframes,\n timeframe: timeSettings.timeframe,\n period: timeSettings.period\n }\n },\n setTimePeriod: function (timeframe, period) {\n timeSettings.timeframe = timeframe;\n timeSettings.period = period;\n // debounce, to make sure not starting loading several timeframes.\n scope.options = {\n timePeriod: timeSettings.getTimePeriod()\n }\n }\n }\n scope.setTimePeriodDebounced = debounce(timeSettings.setTimePeriod, 200, false);\n // Default options\n scope.setTimePeriodDebounced(timeSettings.timeframe, timeSettings.period);\n\n\n scope.$watch('settings', function (settings) {\n if (settings) {\n scope.dataSource = settings.dataSource;\n \n if (settings.filters) {\n scope.filters = settings.filters;\n }\n \n if (settings.title) {\n scope.title = settings.title;\n }\n if (settings.theme) {\n scope.theme = settings.theme;\n }\n \n }\n getCompanySetting(\"fiscalmonth\").then(function (fiscalsetting) {\n if (fiscalsetting) {\n companyfiscalmonth = parseInt(fiscalsetting)-1; //convertet to moment month\n }\n if (settings && settings.timePeriod) {\n scope.setTimePeriodDebounced(settings.timePeriod.timeframe, settings.timePeriod.period);\n } \n \n })\n });\n\n // Subscribe to component related event\n scope.subscribe(\"DataValueAdded\", function (value) {\n if (!scope.dataSource || scope.dataSource.id !== value.dataSourceId) return;\n initialize();\n });\n scope.subscribe(\"DataValueUpdated\", function (value) {\n if (!scope.dataSource || scope.dataSource.id !== value.dataSourceId) return;\n initialize();\n });\n scope.subscribe(\"DataValueDeleted\", function (value) {\n if (!scope.dataSource || scope.dataSource.id !== value.dataSourceId) return;\n initialize();\n });\n\n function initialize() {\n scope.seriesData = [];\n\n if (!scope.dataSource) return;\n if (!scope.options) return;\n selectedGrouping = \"month\";\n if (scope.dataSource && scope.dataSource.unitOfTime == \"YEAR\") selectedGrouping = \"year\";\n if (scope.options.timePeriod.timeframe == \"last3years\") {\n var currentPeriod = {\n from: moment().startOf('year'),\n to: moment.utc()\n };\n var comparePeriod1 = {\n from: moment().startOf('year').subtract(1, 'years'),\n to: moment().endOf('year').subtract(1, 'years')\n };\n var comparePeriod2 = {\n from: moment().startOf('year').subtract(2, 'years'),\n to: moment().endOf('year').subtract(2, 'years')\n };\n getAllData(comparePeriod2, comparePeriod1, currentPeriod);\n } else if (scope.options.timePeriod.timeframe == \"thisvslastyear\") {\n var currentPeriod = {\n from: moment().startOf('year'),\n to: moment.utc()\n };\n var comparePeriod = {\n from: moment().startOf('year').subtract(1, 'years'),\n to: moment().endOf('year').subtract(1, 'years')\n };\n getAllData(comparePeriod, currentPeriod, null);\n } else if (scope.options.timePeriod.timeframe == \"last3fiscalyears\") {\n var currentFiscalYearStart;\n if(companyfiscalmonth > moment().month()){\n currentFiscalYearStart = moment().subtract(1, 'year').month(companyfiscalmonth).startOf(\"month\");\n } else {\n currentFiscalYearStart = moment().month(companyfiscalmonth).startOf(\"month\");\n }\n var currentFiscalYearEnd = moment(currentFiscalYearStart).add(12, \"month\").subtract(1, 'days').endOf(\"day\");\n var currentPeriod = {\n from: currentFiscalYearStart,\n to: currentFiscalYearEnd\n };\n var comparePeriod1 = {\n from: moment(currentFiscalYearStart).subtract(1, 'years'),\n to: moment(currentFiscalYearEnd).subtract(1, 'years')\n };\n var comparePeriod2 = {\n from: moment(currentFiscalYearStart).subtract(2, 'years'),\n to: moment(currentFiscalYearEnd).subtract(2, 'years')\n };\n getAllData(comparePeriod2, comparePeriod1, currentPeriod);\n } else if (scope.options.timePeriod.timeframe == \"thisfiscalvslastfiscalyear\") {\n var currentFiscalYearStart;\n if(companyfiscalmonth > moment().month()){\n currentFiscalYearStart = moment().subtract(1, 'year').month(companyfiscalmonth).startOf(\"month\");\n } else {\n currentFiscalYearStart = moment().month(companyfiscalmonth).startOf(\"month\");\n }\n var currentFiscalYearEnd = moment(currentFiscalYearStart).add(12, \"month\").subtract(1, 'days').endOf(\"day\");\n var currentPeriod = {\n from: currentFiscalYearStart,\n to: currentFiscalYearEnd\n };\n var comparePeriod = {\n from: moment(currentFiscalYearStart).subtract(1, 'years'),\n to: moment(currentFiscalYearEnd).subtract(1, 'years')\n };\n getAllData(comparePeriod, currentPeriod, null);\n }\n }\n\n scope.changeTheme= function(theme){\n scope.theme = theme;\n scope.updateSettings();\n }\n\n function getAllData(period1, period2, period3) {\n if (!period1 || !period2) return;\n var options1 = {\n timePeriod: period1,\n filters: scope.filters\n };\n var options2 = {\n timePeriod: period2,\n filters: scope.filters\n };\n\n let promises = []\n promises.push(dataService().getValuesForPeriod(scope.dataSource.id, options1))\n promises.push(dataService().getValuesForPeriod(scope.dataSource.id, options2))\n if(period3){\n var options3 = {\n timePeriod: period3,\n filters: scope.filters\n };\n promises.push(dataService().getValuesForPeriod(scope.dataSource.id, options3))\n }\n Promise.all(promises).then(function (values) {\n setupChartData(period1, values[0], 0);\n setupChartData(period2, values[1], 1);\n if(period3){\n setupChartData(period3, values[2], 2);\n }\n setupChart();\n });\n }\n\n /* This method will be called also when component is first initialized */\n scope.periodChangedHandler = function (timePeriod) {\n\n if (!timePeriod.timeframe) return;\n scope.options.timePeriod = timePeriod;\n initialize();\n\n if (scope.isAdminMode) {\n scope.updateSettings();\n }\n\n }\n\n scope.updateSettings = function () {\n if (!scope.isAdminMode) return;\n var componentSettings = {\n title: scope.title,\n timePeriod: scope.options.timePeriod,\n dataSource: scope.dataSource,\n filters: scope.filters,\n theme: scope.theme\n };\n scope.settingsChangeHandler({ settings: componentSettings });\n };\n\n scope.registerData = function () {\n var settings = {\n dataSource: scope.dataSource\n };\n\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'registrationDialog.html',\n controller: 'registrationDialogController',\n windowClass: 'newdeviation-modal-window',\n resolve: {\n componentSettings: function () {\n return settings;\n }\n }\n });\n modalInstance.result.then(function (result) {\n });\n };\n\n let selectDataSourceModal\n scope.selectDataSource = function () {\n if (selectDataSourceModal)\n return\n\n var hasDataSerie = false;\n if (scope.dataSource) {\n hasDataSerie = true;\n }\n selectDataSourceModal = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'dataSourceSingleSelector.html',\n controller: 'dataSourceSingleSelector',\n windowClass: 'newdeviation-modal-window',\n resolve: {\n hasDataSerie: function () {\n return hasDataSerie;\n },\n dataSource: function () {\n return scope.dataSource;\n },\n filters: function () {\n return scope.filters;\n },\n withTarget: function () {\n return false;\n },\n type: function () {\n return null;\n },\n externalOnly: function () {\n return false;\n }\n }\n });\n\n selectDataSourceModal.result.then(function (result) {\n if(result.dataSource && (hasDataSerie == false || scope.dataSource.id != result.dataSource.id)){\n scope.title = result.dataSource.title;\n }\n scope.dataSource = result.dataSource;\n scope.filters = result.filters;\n scope.updateSettings();\n initialize();\n scope.updateValue(scope.dataSource.id);\n }, () => {}).finally(() => {\n selectDataSourceModal = null\n });\n };\n\n function getMonthLabel(indexorder){\n if(scope.options.timePeriod.timeframe == \"last3fiscalyears\" ||\n scope.options.timePeriod.timeframe == \"thisfiscalvslastfiscalyear\"){\n var combined = indexorder + companyfiscalmonth;\n if(indexorder + companyfiscalmonth > 12) {\n combined = combined - 12;\n return timeService.getMonthLabel(combined);\n } else {\n return timeService.getMonthLabel(combined);\n }\n } else {\n return timeService.getMonthLabel(indexorder);\n }\n }\n\n function getYearLabel(period){\n if(scope.options.timePeriod.timeframe == \"last3fiscalyears\" ||\n scope.options.timePeriod.timeframe == \"thisfiscalvslastfiscalyear\"){\n return period.to.year();\n } else {\n return period.from.year();\n }\n }\n\n function setupChartData(period, values, order) {\n // x-axis\n scope.xAxisData = [];\n var data = [];\n var label = getYearLabel(period);\n var yearProcessed = scope.seriesData.find(y => y.name === 'label')\n if(yearProcessed) return;\n\n if (selectedGrouping == \"month\") {\n for (var i = 1; i < 13; i++) {\n var xAxisDataLabel = getMonthLabel(i);\n scope.xAxisData.push(xAxisDataLabel);\n data[i - 1] = 0;\n }\n angular.forEach(values, function (dataValue) {\n var month = moment(dataValue.valueDate).get('month');\n var xAxisIndex = month;\n if(scope.options.timePeriod.timeframe == \"last3fiscalyears\" ||\n scope.options.timePeriod.timeframe == \"thisfiscalvslastfiscalyear\"){\n var xAxisIndex = month - companyfiscalmonth;\n if(xAxisIndex < 0) {\n xAxisIndex = xAxisIndex + 12;\n }\n }\n data[xAxisIndex] = data[xAxisIndex] + dataValue.value;\n });\n } else if (selectedGrouping == \"year\") {\n scope.xAxisData.push(\"\");\n data[0] = 0;\n angular.forEach(values, function (dataValue) {\n data[0] = data[0] + dataValue.value; \n });\n }\n\n var element = {\n name: label,\n color: grafcolor[order],\n data: data,\n index: order\n };\n scope.seriesData.push(element);\n\n }\n\n let currentChart = null\n function setupChart() {\n\n var renderElement = $(elem).find(\".comparechart\")[0];\n currentChart = new Highcharts.chart({\n chart: {\n renderTo: renderElement,\n type: 'column',\n style: {\n fontSize: \"0.9em\"\n }\n },\n title: {\n text: ''\n },\n credits: {\n enabled: false\n }, exporting: {\n enabled: false //remove context menu\n },\n xAxis: {\n categories: scope.xAxisData,\n labels: {\n style: {\n fontSize: \"0.9em\"\n }\n }\n },\n\n yAxis: {\n min: 0,\n title: {\n text: scope.dataSource.valueElement.unit\n },\n labels: {\n style: {\n fontSize: \"0.9em\"\n }\n }\n },\n plotOptions: {\n column: {\n dataLabels: {\n enabled: true,\n style: {\n fontSize: \"0.9em\"\n }\n }\n }\n },\n legend: {\n itemStyle: {\n fontSize: \"0.9em\"\n }\n },\n series: scope.seriesData\n\n });\n resizeChart();\n }\n\n scope.updateValue = function (id) {\n if (!scope.definition) return;\n if (scope.definition.datasource !== id) return;\n initialize();\n }\n\n function resizeChart() {\n if (!elem) return\n let appEl = elem[0]\n \n let width = appEl.offsetWidth\n let height = appEl.offsetHeight\n \n let headerEl = appEl.querySelector(\".app-header\")\n if (headerEl)\n height = height - headerEl.offsetHeight\n \n var chartContainer = $(elem).find(\".highcharts-container\").parent()\n if (chartContainer.length === 0) return\n \n if (currentChart)\n currentChart.setSize(width, height, true)\n }\n\n scope.$on(\"widget-resized\", function (event, args) {\n resizeChart();\n });\n\n }\n\n }\n }]);\n","import { getUserProfile } from \"@common/stores/userStore\"\nimport * as pdfService from \"@common/services/pdfService\"\n\nangular\n .module('DigiLean').directive(\"a3Viewer\", [\n '$filter', '$uibModal', '$state', '$stateParams', '$translate', '$window', 'a3Service',\n function a3ViewerApp($filter, $uibModal, $state, $stateParams, $translate, $window, a3Service) {\n return {\n templateUrl: 'a3Viewer.html',\n restrict: 'E',\n scope: {\n 'isAdminMode': '<',\n 'a3Id': '<',\n 'targetSize': '<',\n\n },\n link: function ($scope, elem) {\n\n //$scope.a3Id = parseInt($stateParams.id);\n $scope.a3 = {};\n $scope.a3info = null;\n $scope.versionNumber = 1;\n $scope.canEdit = false;\n $scope.width = 2338;\n $scope.height = 1654;\n $scope.zoom = 0.8;\n $scope.version = {};\n $scope.isAdminMode = false;\n $scope.widgets = [];\n\n\n //$scope.getA3Style = function() {\n //dont need this\n //const style = {\n //\"transform\": 'scale('+$scope.zoom+') translateY(0px) translateX(0px)',\n // \"width\": $scope.width+'px',\n // \"max-width\": $scope.width+'px',\n // \"min-width\": $scope.width+'px',\n // \"max-height\": $scope.height+'px',\n // \"min-height\": $scope.height+'px'\n //}\n //return style\n //}\n $scope.$watch('a3Id', function (a3Id) {\n if (!a3Id) return;\n loadA3(a3Id);\n });\n\n $scope.$watch('targetSize', function (targetSize) {\n \n if (!targetSize) return;\n $scope.width = targetSize.width;\n $scope.height = targetSize.height;\n adjustZoom($scope.width);\n });\n\n // var w = angular.element($window);\n // adjustZoom(w[0].innerWidth);\n // w.bind('resize', function (event) {\n // adjustZoom(event.currentTarget.window.innerWidth)\n // });\n\n function adjustZoom(windowWidth) {\n\n $scope.zoom = windowWidth / ($scope.width + 10);\n }\n\n $scope.save = function () {\n var a3infoWidget = $scope.widgets.filter(w => w.component == \"a3info\").length > 0;\n var layout = !a3infoWidget ? [$scope.a3info] : [];\n\n angular.forEach($scope.widgets, function (widget) {\n var stepLayout = {\n header: widget.title,\n component: widget.component,\n row: widget.row,\n col: widget.col,\n sizeX: widget.sizeX,\n sizeY: widget.sizeY,\n a3StepId: widget.a3StepId,\n a3VersionId: $scope.version.id,\n }\n layout.push(stepLayout);\n });\n a3Service().saveLayout($scope.version.id, layout).then(function () {\n $scope.print(true)\n });\n\n }\n\n\n function canEdit() {\n a3Service().canEdit($scope.a3Id).then(function (canEdit) {\n $scope.canEdit = canEdit && $scope.isAdminMode;\n $scope.gridsterOptions = {\n margins: [10, 10],\n columns: 24,\n resizable: {\n enabled: $scope.canEdit,\n handles: ['n', 'e', 's', 'w', 'ne', 'se', 'sw', 'nw'],\n resize: function (event, element, widget) {\n var froalaEl = element.find(\"div.fr-view\");\n console.log(froalaEl);\n froalaEl.height(element.height() - 115);\n },\n stop: function (event, element, widget) {\n $scope.save();\n }\n },\n draggable: {\n enabled: $scope.canEdit, // whether dragging items is supported\n handle: 'h4.preview-header, div#a3info.drag-box, div.drag-box', // optional selector for drag handle\n stop: function (event, $element, widget) {\n $scope.save();\n }\n }\n };\n\n });\n }\n\n\n function handleResizing() {\n $scope.widgets.forEach(w => {\n var widgetEl = $(\"#widget\" + w.id).find(\"#a3step\");\n\n var froalaEl = widgetEl.find(\"div.fr-view\");\n\n if (froalaEl.length > 0) {\n var height = widgetEl[0].clientHeight\n froalaEl.height(height - 115);\n }\n });\n }\n\n function loadA3() {\n canEdit();\n a3Service().get($scope.a3Id).then(function (a3) {\n $scope.a3 = a3;\n $scope.version = $filter('filter')(a3.versions, { version: $scope.versionNumber })[0];\n\n $scope.version.steps.sort((a, b) => {\n return a.title.localeCompare(b.sortOrder);\n });\n\n a3Service().getVersion($scope.version.id).then(function (version) {\n // if (version.layout.length === 0) {\n // defaultLayout(a3);\n // $scope.save();\n // return;\n // }\n\n $scope.a3info = getStepWidget(\"a3info\", a3, [0, 0, 24, 0]);\n\n angular.forEach(version.layout, function (widget, key) {\n // TODO need to resolve the correct step, maybe som database changes too....\n switch (widget.component) {\n\n case \"a3step\":\n widget.model = getStepForId(widget.a3StepId);\n break;\n case \"a3step-action-plan\":\n var step = getStepForId(widget.a3StepId);\n var actionPlan = {\n title: step.title,\n a3: a3,\n step: getStepForId(widget.a3StepId)\n }\n widget.model = actionPlan;\n break;\n case \"cost\":\n widget.model = a3.project ? a3.project : {};\n break;\n\n }\n\n $scope.widgets.push(widget);\n\n selectStep(true, widget);\n\n });\n\n\n });\n });\n\n }\n\n function getStepForId(stepid) {\n var step = $filter('filter')($scope.version.steps, { id: stepid })[0];\n return step;\n }\n\n function getStepWidget(component, model, position) {\n model.versionNumber = $scope.versionNumber;\n var widget = {\n model: model,\n header: model.title,\n component: component,\n row: position[0],\n col: position[1],\n sizeX: position[2],\n sizeY: position[3],\n a3StepId: component !== \"a3info\" ? model.id : null\n }\n\n return widget;\n }\n\n var selectStep = function (selected, widget) {\n var stepFromCollection = $scope.version.steps.filter(x =>\n (widget.model && x.id === widget.model.id)\n || (widget.model && widget.model.step && x.id === widget.model.step.id)\n || x.isProjectInfo && widget.component === \"cost\")[0];\n if (stepFromCollection) {\n stepFromCollection.selected = selected;\n }\n }\n\n function findMaxRow() {\n var max = 0;\n $scope.widgets.forEach(x => {\n if (x.row > max)\n max = x.row;\n });\n return max;\n }\n\n $scope.remove = function (widget, databound) {\n let index = $scope.widgets.indexOf(widget);\n if (index >= 0) {\n $scope.widgets.splice(index, 1);\n $scope.save();\n if (!databound) {\n selectStep(false, widget);\n }\n }\n }\n\n $scope.onStepSelected = function (step, event) {\n if (step.selected) {\n if (step.isProjectInfo) {\n $scope.widgets.push(getStepWidget('cost', $scope.a3.project ? $scope.a3.project : {}, [findMaxRow() + 10, 0, 24, 2]));\n }\n else if (step.isActionList) {\n var actionPlan = {\n id: step.id,\n title: step.title,\n a3: $scope.a3,\n step: step\n }\n $scope.widgets.push(getStepWidget('a3step-action-plan', actionPlan, [findMaxRow() + 4, 0, 12, 4]));\n }\n else {\n $scope.widgets.push(getStepWidget('a3step', step, [findMaxRow() + 4, 0, 12, 4]));\n }\n $scope.save();\n }\n else {\n let widget = $scope.widgets.filter(x =>\n (x.model && step.id === x.model.id)\n || (x.model && x.model.step && step.id == x.model.step.id)\n || step.isProjectInfo && x.component === \"cost\")[0];\n $scope.remove(widget, true);\n }\n\n };\n\n $scope.print = function (previewOnly = false) {\n let lang = \"en\"\n const up = getUserProfile()\n if (up.preferredLanguage) {\n lang = up.preferredLanguage\n }\n // Replace . with - so filename is not corrupt in browser.\n var pdfTitle = $scope.a3.title.replace(/\\./g, '-') // Crazy stuff=>https://stackoverflow.com/questions/1967119/why-does-javascript-replace-only-first-instance-when-using-replace\n if (!previewOnly) {\n $scope.save();\n var date = new Date();\n var offset = date.getTimezoneOffset()\n pdfService.printA3(pdfTitle, $scope.version.id, lang, offset);\n }\n else {\n pdfService.previewA3($scope.version.id, lang);\n }\n\n }\n\n $scope.zoomIn = function () {\n $scope.zoom = $scope.zoom + 0.01;\n };\n $scope.zoomOut = function () {\n $scope.zoom = $scope.zoom - 0.01;\n };\n\n $scope.adminMode = function () {\n $scope.isAdminMode = true;\n $scope.canEdit = true;\n $scope.gridsterOptions.resizable.enabled = true;\n $scope.gridsterOptions.draggable.enabled = true;\n\n setTimeout(handleResizing, 0);\n\n };\n\n $scope.viewMode = function () {\n $scope.isAdminMode = false;\n $scope.canEdit = false;\n\n $scope.gridsterOptions.resizable.enabled = false;\n $scope.gridsterOptions.draggable.enabled = false;\n };\n $scope.clickGridsterItem = function (widget, e) {\n\n if (widget.component === 'a3info') {\n e.preventDefault();\n e.stopPropagation();\n\n }\n };\n }\n }\n\n }]);\n\n\n\n\n\n\n","import { getUserProfile } from \"@common/stores/userStore\"\nimport * as customerService from \"@common/services/customers/customerService\"\n\nangular\n .module('DigiLean')\n .directive(\"personalcalendar\", ['$rootScope', 'boardTaskService', '$translate', '$uibModal',\n function ($rootScope, boardTaskService, $translate, $uibModal) {\n return {\n templateUrl: 'personalcalendar.html',\n restrict: 'E',\n scope: {\n },\n link: function (scope, elem, attrs) {\n\n scope.lang = \"en\"\n const up = getUserProfile()\n if (up.preferredLanguage)\n scope.lang = up.preferredLanguage\n\n setLanguage(scope.lang)\n setCalendar()\n\n function setLanguage(language) {\n if (language === \"no\")\n language = \"nb\"\n scope.lang = language\n $(elem).find('.calendar').fullCalendar('option', 'locale', language)\n }\n\n scope.$on('$translateChangeSuccess', function (val) {\n setLanguage($translate.use())\n })\n\n function setCalendar() {\n $(elem).find('.calendar').fullCalendar({\n events: getTasks,\n header: {\n left: 'prev,next today',\n center: 'title',\n right: ''\n //right: 'month,agendaWeek,agendaDay'\n },\n weekNumbers: true,\n eventLimit: true,\n editable: true,\n eventDurationEditable: false,\n firstDay: 1, // Setting monday as first day of week\n locale: scope.lang,\n eventClick: function (calEvent, jsEvent, view) {\n boardTaskService().get(calEvent.id).then(function (task) {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'boardTask.html',\n controller: 'boardTaskController',\n resolve: {\n task: function () {\n return task;\n },\n activeTab: function () {\n return \"Info\";\n },\n options: function () {\n var options = {\n archiveAvailable: false\n }\n return options;\n }\n }\n });\n modalInstance.result.then(function (result) {\n refreshCalendar();\n });\n });\n },dayClick: function (date, jsEvent, view) {\n var task = {\n id: 0,\n boardId: 0,\n title: \"\",\n text: \"\",\n boardDate: date,\n status: 'blank',\n tags: \"\"\n }\n customerService.getAllUsers().then(function (users) {\n scope.users = users;\n });\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'newBoardTask.html',\n controller: 'newBoardTaskController',\n resolve: {\n task: function () {\n return task;\n },\n options: function () {\n var options = {\n canChangeBoard: true,\n showDueDate: true,\n users: scope.users\n }\n return options;\n }\n }\n });\n modalInstance.result.then(function (result) {\n refreshCalendar();\n });\n \n },\n eventDrop: function (event, delta, revertFunc) {\n var start = event.start;\n boardTaskService().updateDate(event.id, start).then(function (taskMoved) {\n $rootScope.publish(\"SendTaskMoved\", taskMoved);\n });\n }\n });\n }\n\n function refreshCalendar() {\n $(elem).find('.calendar').fullCalendar('refetchEvents');\n }\n\n\n function getTasks(start, end, timezone, callback) {\n var timeperiod = {\n from: start,\n to: end\n }\n boardTaskService().getMyTasks(timeperiod).then(function (tasks) {\n var events = [];\n angular.forEach(tasks, function (task, key) {\n events.push({\n id: task.id,\n start: moment(task.boardDate).utc().toDate(),\n title: task.title,\n className: task.status,\n allDay: true\n });\n });\n return callback(events);\n });\n\n }\n }\n }\n }]);\n","import './../../../../../thirdparty/fullcalendar/fullcalendar.min';\nimport { getUserProfile } from \"@common/stores/userStore\"\nimport * as boardService from \"@common/services/boardService\"\nimport * as customerService from \"@common/services/customers/customerService\"\n\nangular\n .module('DigiLean')\n .directive(\"teamcalendar\", ['$filter','boardTaskService', '$translate', '$uibModal',\n function ($filter, boardTaskService, $translate, $uibModal) {\n return {\n templateUrl: 'teamcalendar.html',\n restrict: 'E',\n scope: {\n 'isAdminMode': '=',\n 'settings': '=',\n 'settingsChangeHandler': '&'\n },\n link: function (scope, elem, attrs) {\n\n scope.$watch('settings', function (settings) {\n //scope.settings = settings;\n checkSettings();\n });\n\n scope.isPersonalCalendar = scope.calendarType === \"personal\"\n scope.lang = \"en\"\n const up = getUserProfile()\n if (up.preferredLanguage)\n scope.lang = up.preferredLanguage\n \n setLanguage(scope.lang)\n\n scope.boardChanged = function () {\n getBoardMemebers(scope.selectedBoard.id);\n refreshCalendar();\n updateSettings()\n }\n\n scope.subscribe('TaskDeleted', function (id) {\n refreshCalendar();\n });\n\n scope.subscribe(\"NewTask\", function (data) {\n if(data.boardId == scope.selectedBoard.id){\n refreshCalendar();\n }\n });\n\n function getBoardMemebers(boardId){\n boardService.getUserListForBoard(boardId).then(function (data) {\n angular.forEach(data, function (employee, key) {\n employee.fullName = employee.firstName + \" \" + employee.lastName;\n });\n scope.users = data;\n });\n }\n\n function checkSettings() { \n boardService.getAll().then(function (boards) {\n scope.boards = boards;\n if (scope.settings && scope.settings.boardId) {\n scope.selectedBoard = $filter('filter')(boards, { id: scope.settings.boardId }, true)[0];\n } else {\n scope.selectedBoard = boards[0];\n }\n getBoardMemebers(scope.selectedBoard.id);\n setCalendar();\n }); \n }\n\n function setLanguage(language) {\n if (language === \"no\")\n language = \"nb\"\n scope.lang = language\n $(elem).find('.calendar').fullCalendar('option', 'locale', language)\n }\n\n scope.$on('$translateChangeSuccess', function (val) {\n setLanguage($translate.use())\n })\n\n function updateSettings () {\n if(scope.isAdminMode){\n var componentSettings = {\n boardId: scope.selectedBoard.id\n };\n scope.settingsChangeHandler({ settings: componentSettings });\n }\n }\n\n function setCalendar() {\n var host = $(elem).closest(\".grid-stack-item-content\");\n if (host.length == 0)\n host = $(elem).closest(\".modal-body\")\n \n if (host.length == 0) return;\n\n var height = host.height() - 100;\n $(elem).find('.calendar').fullCalendar({\n events: getTasks,\n header: {\n left: 'prev,next today',\n center: 'title',\n right: ''\n //right: 'month,agendaWeek,agendaDay'\n },\n height: height,\n weekNumbers: true,\n eventLimit: true,\n editable: true,\n eventDurationEditable: false,\n firstDay: 1, // Setting monday as first day of week\n locale: scope.lang,\n eventClick: function (calEvent, jsEvent, view) {\n boardTaskService().get(calEvent.id).then(function (task) {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'boardTask.html',\n controller: 'boardTaskController',\n resolve: {\n task: function () {\n return task;\n },\n activeTab: function () {\n return \"Info\";\n },\n options: function () {\n var options = {\n archiveAvailable: false\n }\n return options;\n }\n }\n });\n modalInstance.result.then(function (result) {\n refreshCalendar();\n });\n });\n },dayClick: function (date, jsEvent, view) {\n var task = {\n id: 0,\n boardId: scope.selectedBoard.id,\n title: \"\",\n text: \"\",\n boardDate: date,\n status: 'blank',\n tags: \"\"\n }\n \n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'newBoardTask.html',\n controller: 'newBoardTaskController',\n resolve: {\n task: function () {\n return task;\n },\n options: function () {\n var options = {\n canChangeBoard: true,\n showDueDate: true,\n users: scope.users\n }\n return options;\n }\n }\n });\n modalInstance.result.then(function (result) {\n refreshCalendar();\n }); \n },\n eventDrop: function (event, delta, revertFunc) {\n var start = event.start;\n boardTaskService().updateDate(event.id, start).then(function (taskMoved) {\n \n });\n }\n });\n }\n\n scope.$on(\"widget-resized\", function (event, args) {\n var host = $(elem).closest(\".grid-stack-item-content\");\n if (host.length == 0)\n host = $(elem).closest(\".modal-body\")\n \n if (host.length == 0) return;\n var height = host.height() -100;\n $(elem).find('.calendar').fullCalendar('option', 'height', height);\n });\n\n function refreshCalendar() {\n $(elem).find('.calendar').fullCalendar('refetchEvents');\n }\n\n\n function getTasks(start, end, timezone, callback) {\n var timeperiod = {\n from: start,\n to: end\n };\n boardService.tasksInPeriod(scope.selectedBoard.id, timeperiod).then(function (tasks) {\n var events = [];\n var tasks = tasks;\n\n angular.forEach(tasks, function (task, key) {\n events.push({\n id: task.id,\n start: moment(task.boardDate).utc().toDate(),\n title: task.title,\n className: task.status,\n allDay: true\n });\n });\n var actionTaskQuery = {\n assetId: scope.assetid,\n statuses: ['blank', 'unacceptable'],\n timeperiod: timeperiod\n }\n boardService.getActionTasks(scope.selectedBoard.id).then(function (actiontasks) {\n //tasks.push(actiontasks);\n angular.forEach(actiontasks, function (task, key) {\n if(task.boardDate){ // && moment('2016-10-30').isBetween('2016-10-30', '2016-12-30', null, '()');)\n events.push({\n id: task.id,\n start: moment(task.boardDate).utc().toDate(),\n title: task.title,\n className: task.status,\n allDay: true\n });\n }\n });\n return callback(events);\n\n });\n \n \n });\n \n }\n }\n }\n }]);\n","import CountUp from './../../../../../thirdparty/countUp/countUp.min';\nimport { getDefaultAppStyle, getDefaultAppTheme, calcDefaultAppFontSize } from \"@common/components/dashboard/designer/common/appStyleService\"\nimport * as timeService from \"@common/services/timeService\"\n\nangular\n .module(\"DigiLean\")\n .directive('dayCounter', ['$translate', '$uibModal','dataService',\n function ($translate, $uibModal,dataService) {\n return {\n templateUrl: 'daycounter.html',\n restrict: 'E',\n scope: {\n 'isAdminMode': '<',\n 'settings': '<',\n 'settingsChangeHandler': '&',\n 'layoutFactor': '<'\n },\n link: function (scope, elem, attrs) {\n scope.theme = getDefaultAppTheme()\n scope.themeChangedEvent = function($event) {\n scope.theme = $event.detail\n setTheme()\n scope.updateSettings()\n }\n \n scope.appStyle = getDefaultAppStyle()\n function calcStyles() {\n scope.appStyle[\"font-size\"] = calcDefaultAppFontSize(scope.layoutFactor)\n }\n function setTheme() {\n scope.appStyle[\"background-color\"] = scope.theme.fillColor\n scope.appStyle[\"color\"] = scope.theme.background\n }\n calcStyles()\n setTheme()\n scope.$watch('layoutFactor', calcStyles)\n\n scope.title = $translate.instant(\"COMMON_TITLE\");\n scope.titleChangedEvent = function($event) {\n scope.title = $event.detail\n scope.updateSettings()\n }\n scope.filters = null;\n var timePeriod = {\n timeframe: \"all\",\n period: timeService.getTimePeriod(\"all\")\n }\n \n\n scope.days = 0;\n scope.viewModeSelection = \"countdown\";\n scope.dateSourceSelection = \"manual\";\n scope.editInViewMode = false;\n \n scope.targetDate = moment.utc().startOf('day').toDate();\n scope.style = {\n background: \"transparent\",\n color: \"inherit\"\n }\n scope.$watch('settings', function (settings) {\n scope.settings = settings;\n if (settings) {\n scope.title = settings.title; \n scope.viewModeSelection = settings.viewModeSelection;\n scope.style = settings.style;\n if (settings.theme) {\n scope.theme = settings.theme;\n setTheme()\n }\n if (settings.dataSource) {\n scope.dataSource = settings.dataSource;\n scope.dateSourceSelection = \"datasource\";\n if (settings.filters) {\n scope.filters = settings.filters;\n }\n scope.updateValue(scope.dataSource.id);\n } else { //manual input\n scope.targetDate = moment(settings.targetDate).toDate();\n if (scope.settings.editInViewMode) {\n scope.editInViewMode = scope.settings.editInViewMode;\n }\n }\n }\n else {\n scope.viewModeSelection = \"countdown\";\n }\n calculateDays(scope.targetDate);\n });\n\n scope.$watch('viewModeSelection', function (selection) {\n if(scope.dateSourceSelection == \"datasource\"){\n scope.updateValue(scope.dataSource.id);\n } else {\n calculateDays(scope.targetDate);\n } \n scope.updateSettings();\n });\n\n scope.changeTheme= function(theme){\n scope.theme = theme;\n scope.updateSettings();\n }\n\n scope.targetDateUpdated = function ($event) {\n const date = $event.originalEvent.detail\n scope.targetDate = date\n scope.dataSource = null;\n scope.filters = null;\n calculateDays(scope.targetDate, scope.isCountDown)\n scope.updateSettings()\n }\n\n scope.toggleEditMode = function () {\n calculateDays(scope.targetDate);\n scope.updateSettings();\n }\n\n var valueElement = $(elem).find(\".value\")[0];\n var editValueElement = $(elem).find(\".editvalue\")[0];\n function calculateDays(targetDate) {\n var today = moment().startOf('day');\n var target = moment(targetDate).startOf('day');;\n scope.days = target.diff(today, 'days')\n \n if (scope.viewModeSelection == \"countup\") {\n scope.days = scope.days * -1\n } \n if(scope.editInViewMode){\n var numAnim = new CountUp(editValueElement, 0, scope.days);\n numAnim.start();\n } else {\n var numAnim = new CountUp(valueElement, 0, scope.days);\n numAnim.start();\n } \n }\n\n scope.updateValue = function (id) {\n if (!scope.dataSource) return;\n if (scope.dataSource.id !== id) return;\n\n dataService().getLastDate(id, timePeriod.period, scope.filters).then(function (lastDate) {\n calculateDays(lastDate);\n });\n };\n\n scope.updateSettings = function(){\n if (scope.isAdminMode || scope.editInViewMode) {\n var componentSettings = {\n title: scope.title,\n viewModeSelection: scope.viewModeSelection,\n targetDate: scope.targetDate, //relevant for manual input\n editInViewMode: scope.editInViewMode, //relevant for manual input\n dataSource: scope.dataSource, //relevant if datasource is selected\n filters: scope.filters, //relevant if datasource is selected\n style: scope.style,\n theme: scope.theme\n };\n scope.settingsChangeHandler({ settings: componentSettings });\n }\n }\n\n // Select defintion to use.\n scope.selectDataSource = function () {\n var hasDataSerie = false;\n if (scope.dataSource) {\n hasDataSerie = true;\n }\n if (!scope.filters) {\n scope.filters = [];\n }\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'dataSourceSingleSelector.html',\n controller: 'dataSourceSingleSelector',\n resolve: {\n hasDataSerie: function () {\n return hasDataSerie;\n },\n dataSource: function () {\n return scope.dataSource;\n },\n filters: function () {\n return scope.filters;\n },\n withTarget: function () {\n return false;\n },\n type: function () {\n return null;\n },\n externalOnly: function () {\n return false;\n }\n\n }\n });\n\n modalInstance.result.then(function (result) {\n if(result.dataSource && (hasDataSerie == false || scope.dataSource.id != result.dataSource.id)){\n scope.title = result.dataSource.title;\n }\n var strippedDatasource = {\n id:result.dataSource.id,\n title:result.dataSource.title\n }\n scope.dataSource = strippedDatasource;\n scope.filters = result.filters;\n scope.dateSourceSelection = \"datasource\";\n scope.editInViewMode = false; //only relevant for manual input\n scope.updateSettings();\n scope.updateValue(scope.dataSource.id);\n });\n };\n\n // Subscribe to component related event\n scope.subscribe(\"DataValueAdded\", function (value) {\n scope.updateValue(value.dataSourceId);\n });\n scope.subscribe(\"DataValueUpdated\", function (value) {\n scope.updateValue(value.dataSourceId);\n });\n scope.subscribe(\"DataValueDeleted\", function (value) {\n scope.updateValue(value.dataSourceId);\n });\n\n function checkDeviationEvents(){\n if(scope.dataSource){\n if(scope.dataSource.id == 'DeviationNew' || \n scope.dataSource.id == 'DeviationCompleted' ||\n scope.dataSource.id == 'DeviationConsequence'){\n scope.updateValue(scope.dataSource.id);\n }\n }\n }\n scope.subscribe(\"DeviationCreated\", function (item) {\n checkDeviationEvents();\n });\n scope.subscribe(\"DeviationDeleted\", function (deviation) {\n checkDeviationEvents();\n });\n scope.subscribe(\"DeviationUpdated\", function (item) {\n checkDeviationEvents();\n });\n\n //Improvement\n function checkImprovementEvents(){\n if(scope.dataSource){\n if(scope.dataSource.id == 'ImprovementSuggestionNew' || \n scope.dataSource.id == 'ImprovementSuggestion' ||\n scope.dataSource.id == 'ImprovementSuggestionCompleted'){\n scope.updateValue(scope.dataSource.id);\n }\n }\n }\n scope.subscribe(\"NewImprovement\", function (item) {\n checkImprovementEvents();\n });\n scope.subscribe(\"ImprovementDeleted\", function (deviation) {\n checkImprovementEvents();\n });\n scope.subscribe(\"ImprovementUpdated\", function (item) {\n checkImprovementEvents();\n });\n\n //A3\n function checkA3Events(){\n if(scope.dataSource){\n if(scope.dataSource.id == 'A3New' || \n scope.dataSource.id == 'A3Completed' ||\n scope.dataSource.id == 'A3ROI'){\n scope.updateValue(scope.dataSource.id);\n }\n }\n }\n scope.subscribe(\"A3Created\", function (item) {\n checkA3Events();\n });\n scope.subscribe(\"A3sDeleted\", function (deviation) {\n checkA3Events();\n });\n scope.subscribe(\"A3Updated\", function (item) {\n checkA3Events();\n });\n scope.$on(\"widget-resized\", function (event, args) {\n var host = $(elem).closest(\".grid-stack-item-content\");\n if (host.length == 0)\n host = $(elem).closest(\".modal-body\")\n \n if (host.length == 0) return;\n \n var width = host.width();\n var height = host.height();\n // Find header to subtract from new height\n var header = $(elem).find(\".ibox-title\");\n var headerHeight = header.height() + 40;\n var container = $(elem).find(\".daycounter\");\n if (container.length === 0) return;\n $(container).css(\"height\", (height - headerHeight));\n });\n\n }\n }\n }]);\n\n","import * as assetService from \"@common/services/assetService\"\nimport * as timeService from \"@common/services/timeService\"\nimport { getDefaultAppStyle, getDefaultAppTheme, calcDefaultAppFontSize } from \"@common/components/dashboard/designer/common/appStyleService\"\n\nangular\n .module('DigiLean')\n .directive(\"kpiLetterBase\", ['$uibModal', '$translate','dataService', 'qualityService', 'areaService','projectService','deviationService','dataFilterService',\n function ($uibModal, $translate,dataService, qualityService, areaService, projectService,deviationService,dataFilterService) {\n return {\n restrict: 'E',\n scope: {\n 'isAdminMode': '<',\n 'settings': '<',\n 'boardAssetId': '<',\n 'settingsChangeHandler': '&',\n 'layoutFactor': '<'\n },\n link: function (scope, elem, attrs) {\n scope.theme = getDefaultAppTheme()\n scope.themeChangedEvent = function($event) {\n scope.theme = $event.detail\n scope.updateSettings()\n }\n \n scope.appStyle = getDefaultAppStyle()\n function calcStyles() {\n scope.appStyle[\"font-size\"] = calcDefaultAppFontSize(scope.layoutFactor)\n }\n calcStyles()\n scope.$watch('layoutFactor', calcStyles)\n\n scope.title = \"\"\n scope.titleChangedEvent = function($event) {\n scope.title = $event.detail\n scope.updateSettings()\n }\n\n scope.identificationName = \"\"; \n scope.typeSelected = \"area\";\n\n scope.areaName = \"\";\n scope.areaId = null;\n scope.areas = null;\n scope.projects = null;\n scope.projectId = null;\n scope.assetId = null;\n\n scope.editable = false;\n scope.automatic = false;\n scope.deviationTypeId = null;\n scope.formula = 'sum';\n\n scope.subscribe(\"DateStatusChanged\", function (status) {\n if (scope.dataSource || scope.deviationTypeId) // DateStatus is not relevant for Datasource and incident configurations\n return\n \n var visualizationTypeId = getVisualizationTypeIdentificator();\n if(status.visualizationType == visualizationTypeId){ \n if(scope.areaId === null && scope.projectId === null && scope.assetId === null){\n updateAggregateStatus(status);\n }\n else if(scope.areaId && status.areaId === scope.areaId){\n updateChangedStatus(status);\n } else if (scope.projectId && status.projectId === scope.projectId) {\n updateChangedStatus(status);\n } else if (scope.assetId && status.assetId === scope.assetId) {\n updateChangedStatus(status);\n }\n }\n });\n\n\n scope.loadAreas = function(){\n if(!scope.areas){ \n areaService().getList(true).then(function (areas) {\n scope.areas = areas;\n });\n }\n }\n\n scope.loadProjects = function(){\n if(!scope.projects){ \n projectService().getActiveProjects().then(function (projects) {\n scope.projects = projects;\n });\n }\n }\n\n scope.loadAssets = function(){\n if(!scope.assets){\n assetService.getAllAssets().then(function (assets) {\n scope.assets = assets;\n });\n }\n }\n\n \n /*scope.subscribe(\"SendDeviationSeverityChanged\", function (severity) {\n scope.getAutomaticStatusesForYear(scope.selectedYear);\n scope.getStatusesForMonth(scope.selectedMonthNumber);\n //getDeviationTypeSeverityLabels();\n });*/\n\n /*scope.subscribe(\"DeviationChangedStatus\", function (deviation) {\n if(scope.settings.labelsettings.dataSource.id === \"DeviationCompleted\" )\n {\n var filterMatches = dataFilterService().matchesFilters(deviation, scope.settings.labelsettings.filters);\n if(filterMatches)\n {\n scope.initialize();\n }\n }\n });*/\n\n scope.subscribe(\"NewImprovement\", function (newSuggestion) {\n if(scope.settings.labelsettings.dataSource.id === \"ImprovementSuggestionNew\" )\n {\n var filterMatches = dataFilterService().matchesFilters(newSuggestion, scope.settings.labelsettings.filters);\n if(filterMatches)\n {\n scope.initialize();\n }\n }\n });\n\n scope.subscribe(\"DeviationCreated\", function (deviation) {\n if(scope.automatic && deviation.deviationTypeId == scope.deviationTypeId) {\n var status = {\n date: deviation.incidentDate,\n status: convertSeverityToKPIDate(deviation.severity),\n assetId: deviation.assetId,\n projectId: deviation.projectId,\n areaId: deviation.areaId\n }\n if(scope.assetId === null || (scope.filters && scope.filters.length > 0)){\n \n updateAggregateStatus(status);\n } \n else if(deviation.assetId == scope.assetId){\n updateChangedStatus(status);\n } \n }\n else if(scope.settings.labelsettings.dataSource.id === \"DeviationNew\" )\n {\n var filterMatches = dataFilterService().matchesFilters(deviation, scope.settings.labelsettings.filters);\n if(filterMatches)\n {\n scope.initialize();\n }\n }\n });\n\n function convertSeverityToKPIDate(severity){\n if(severity>0){\n return severity+1;\n } else return severity;\n }\n\n function updateAggregateStatus(status){\n var convertedDate = moment(status.date);\n var year = moment(convertedDate).year();\n var month = moment(convertedDate).month();\n var day = moment(convertedDate).date();\n // resolve if same, update\n if (year === scope.selectedYear) {\n if(isRelevant(status)){ //Check filter\n if(scope.automatic){ \n scope.getAutomaticStatusesForYear(year);\n } else {\n scope.getStatusesForYear(year);\n }\n }\n }\n if (month === scope.selectedMonthNumber) {\n if(isRelevant(status)){ //Check filter\n if(scope.statuses[day - 1] && scope.statuses[day - 1] <= status.status){\n scope.statuses[day - 1] = status.status;\n } else if (!scope.statuses[day - 1]){\n scope.statuses[day - 1] = status.status;\n } else {\n scope.getStatusesForMonth(month);\n }\n }\n \n }\n }\n\n function isRelevant(newStatus){\n var result = true;\n if(scope.filters){\n // Check if updated value is part of filter\n if(newStatus.assetId != null){\n var assetFilter = scope.filters.find(f => f.sourceColumn == \"assetId\")\n if (assetFilter) {\n var index = assetFilter.items.indexOf(newStatus.assetId);\n if(index == -1){\n return false;\n }\n }\n }\n\n // Check if updated value is part of filter\n if(newStatus.areaId != null){\n var areaFilter = scope.filters.find(f => f.sourceColumn == \"areaId\");\n if (areaFilter) {\n var index = areaFilter.items.indexOf(newStatus.areaId);\n if(index == -1){\n return false;\n }\n }\n }\n\n // Check if updated value is part of filter\n if(newStatus.projectId != null){\n var projectFilter = scope.filters.find(f => f.sourceColumn == \"projectId\");\n if (projectFilter) {\n var index = projectFilter.items.indexOf(newStatus.projectId);\n if(index == -1){\n return false;\n }\n }\n }\n }\n return result;\n }\n\n function updateChangedStatus(status){\n var convertedDate = moment(status.date);\n var year = moment(convertedDate).year();\n var month = moment(convertedDate).month();\n var day = moment(convertedDate).date();\n\n // resolve if same, update\n if (year === scope.selectedYear) {\n if(scope.automatic){ \n scope.getAutomaticStatusesForYear(year);\n } else {\n scope.getStatusesForYear(year);\n }\n if (month === scope.selectedMonthNumber) {\n if(scope.areaId === null && scope.projectId === null && scope.assetId === null){ //aggregate all\n scope.getStatusesForMonth(month);\n \n } else {\n scope.statuses[day - 1] = status.status;\n }\n }\n }\n \n }\n\n // Dashboard Settings handling\n scope.$watch('settings', function (settings) {\n scope.settings = settings;\n checkSettings();\n });\n\n scope.updateArea = function (area){\n scope.areaId = area.id;\n scope.projectId = null;\n scope.assetId = null;\n scope.typeSelected = 'area';\n scope.identificationName = area.name;\n scope.editable = true;\n scope.updateSettings();\n scope.initialize();\n };\n\n scope.updateAsset = function (asset){\n scope.areaId = null;\n scope.assetId = asset.id;\n scope.projectId = null; \n scope.typeSelected = 'asset';\n scope.identificationName = asset.name;\n scope.editable = true;\n scope.updateSettings();\n scope.initialize();\n };\n\n scope.modifyFilter = function (type){\n scope.typeSelected = type;\n scope.all();\n };\n\n scope.all = function (){\n scope.areaId = null;\n scope.projectId = null;\n scope.assetId = null;\n scope.editable = false;\n scope.identificationName = $translate.instant('COMMON_ALL');\n scope.updateSettings();\n scope.initialize();\n };\n\n scope.updateProject = function (project){\n scope.areaId = null;\n scope.projectId = project.id;\n scope.typeSelected = 'project';\n scope.identificationName = project.name;\n scope.editable = true;\n scope.updateSettings();\n scope.initialize();\n };\n\n function getVisualizationTypeIdentificator(){\n if(scope.typeVariant){\n if(scope.visualizationType.toUpperCase() == 'DYNAMIC'){\n return scope.typeVariant;\n } else return scope.visualizationType + \"-\" + scope.typeVariant;\n } else return scope.visualizationType\n }\n scope.getStatusesForYear = function (year) {\n if(scope.dataSource){\n getDatasourceStatusesForYear(year);\n } else {\n var visualizationTypeId = getVisualizationTypeIdentificator();\n qualityService().getStatusValuesForYear(visualizationTypeId, scope.areaId, scope.projectId, scope.assetId,year, scope.filters).then(function(statuses) {\n scope.statusByMonth = statuses;\n }); \n }\n };\n\n scope.getStatusesForMonthEvent = function($event) {\n const month = $event.originalEvent.detail\n scope.getStatusesForMonth(month)\n }\n scope.getStatusesForMonth = function(month){\n scope.selectedMonth = moment().month(month).format('MMM');\n scope.selectedMonthNumber = month;\n scope.daysInMonth = moment().month(month).daysInMonth();\n var sqlMonth = month + 1; // Javasscript month is 0 index based, so we will add 1.\n if(scope.dataSource){\n getDatasourceStatusesForMonth(month);\n } else if(scope.automatic){ \n qualityService().getStatusDeviationValuesForMonth(scope.deviationTypeId, scope.assetId, sqlMonth, scope.selectedYear, scope.filters).then(function (statuses) {\n scope.statuses = statuses;\n });\n } else {\n //input: visualizationType, areaId, projectId, month, year\n var visualizationTypeId = getVisualizationTypeIdentificator();\n qualityService().getStatusValuesForMonth(visualizationTypeId, scope.areaId, scope.projectId, scope.assetId, sqlMonth, scope.selectedYear, scope.filters).then(function (statuses) {\n scope.statuses = statuses;\n }); \n } \n };\n\n scope.getAutomaticStatusesForYear = function (year) {\n qualityService().getStatusDeviationValuesForYear(scope.deviationTypeId, scope.assetId, scope.selectedYear, scope.filters).then(function (statuses) {\n scope.statusByMonth = statuses;\n });\n }\n\n scope.initialize = function(){\n scope.automatic = false;\n if(!scope.labelsettings){\n if(scope.visualizationType == \"GREENCROSS\"){\n scope.labelsettings = {\n valuelabels: [\n {value:0, label:$translate.instant('COMMON_CLEAR'), show:true},\n {value:1, label:$translate.instant('DASHBOARD_NO_INJURIES'), show:true},\n {value:2, label:$translate.instant('DASHBOARD_FIRST_AID_INJURIES'), show:true},\n {value:3, label:$translate.instant('DASHBOARD_RECORDABLE_INJURIES'), show:true},\n {value:4, label:$translate.instant('DASHBOARD_SERIOUS_INCIDENTS'), show:true}\n ]\n }\n } else {\n scope.labelsettings = {\n valuelabels: [\n {value:0, label:'', show:true},\n {value:1, label:'', show:true},\n {value:2, label:'', show:true},\n {value:3, label:'', show:true},\n {value:4, label:'', show:true}\n ]\n }\n }\n }\n \n scope.selectedYear = moment().year();\n scope.currentYear = moment().year();\n scope.selectedMonth = moment().format('MMM');\n scope.selectedMonthNumber = moment().month();\n scope.daysInMonth = moment().daysInMonth();\n scope.getStatusesForYear(moment().year());\n scope.getStatusesForMonth(moment().month());\n \n };\n \n scope.initializeAutomatic = function(){\n scope.automatic = true;\n scope.selectedYear = moment().year();\n scope.currentYear = moment().year();\n scope.selectedMonth = moment().format('MMM');\n scope.selectedMonthNumber = moment().month();\n scope.daysInMonth = moment().daysInMonth();\n scope.getAutomaticStatusesForYear(moment().year());\n scope.getStatusesForMonth(moment().month());\n getDeviationTypeSeverityLabels();\n };\n\n function setLabelSettings(){\n scope.labelsettings.projectId = scope.projectId;\n scope.labelsettings.assetId = scope.assetId;\n scope.labelsettings.areaId = scope.areaId;\n scope.labelsettings.deviationTypeId = scope.deviationTypeId;\n scope.labelsettings.typeSelected = scope.typeSelected;\n scope.labelsettings.identificationName = scope.identificationName;\n scope.labelsettings.visualizationType = scope.visualizationType;\n scope.labelsettings.typeVariant = scope.typeVariant;\n }\n\n function getDeviationTypeSeverityLabels(){\n if(!scope.deviationTypeId) return;\n\n deviationService().getDeviationTypeConfiguration(scope.deviationTypeId).then(function (configuration) {\n if(configuration.severities){\n var severitylabels = [\n {value:0, label:'', show:true},\n {value:1, label:'', show:true},\n {value:2, label:'', show:true},\n {value:3, label:'', show:true},\n {value:4, label:'', show:true}\n ];\n \n for(var i=0; i< configuration.severities.length; i++){\n if(configuration.severities[i].severity == 0){\n severitylabels[1].label = configuration.severities[i].customLanguageLabel.label;\n } else if(configuration.severities[i].severity == 1){\n severitylabels[2].label = configuration.severities[i].customLanguageLabel.label;\n } else if(configuration.severities[i].severity == 2){\n severitylabels[3].label = configuration.severities[i].customLanguageLabel.label;\n } else if(configuration.severities[i].severity == 3){\n severitylabels[4].label = configuration.severities[i].customLanguageLabel.label;\n }\n } \n }\n scope.labelsettings = {\n valuelabels: severitylabels,\n dataSource: scope.dataSource,\n filters: scope.filters,\n formula: scope.formula,\n typeVariant: scope.typeVariant\n };\n });\n\n }\n\n scope.selectConfiguration = function () {\n setLabelSettings();\n\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'colorlabelConfiguration.html',\n controller: 'colorlabelConfigurationController',\n resolve: {\n configuration: function () {\n return scope.labelsettings;\n }\n }\n });\n \n modalInstance.result.then(function (configuration) {\n // scope.labelsettings = configuration;\n \n if(configuration.formula){\n scope.formula = configuration.formula;\n }\n scope.labelsettings = {\n valuelabels: configuration.valuelabels,\n dataSource: configuration.dataSource,\n filters: configuration.filters,\n formula: scope.formula,\n typeVariant: configuration.typeVariant\n };\n scope.projectId = configuration.projectId;\n scope.assetId = configuration.assetId;\n scope.areaId = configuration.areaId;\n scope.typeSelected = configuration.typeSelected;\n scope.typeVariant = configuration.typeVariant;\n scope.identificationName = configuration.identificationName;\n if(scope.typeSelected == 'all'){\n scope.editable = false;\n } else {\n scope.editable = true;\n }\n if(configuration.dataSource){\n scope.dataSource = configuration.dataSource;\n scope.filters = configuration.filters;\n scope.editable = false;\n } else {\n scope.dataSource = null;\n scope.filters = configuration.filters;\n if(scope.filters){\n scope.identificationName = \"\";\n }\n }\n if(configuration.deviationTypeId){\n scope.deviationTypeId = configuration.deviationTypeId;\n scope.updateSettings();\n scope.initializeAutomatic(); \n } else {\n scope.deviationTypeId = null;\n scope.updateSettings(); \n scope.initialize();\n } \n }, function(res){});\n };\n\n \n scope.setDisplayYear = function($event){\n const selectedYear = $event.originalEvent.detail\n console.log(\"kpibase selected year\", selectedYear)\n scope.selectedYear = selectedYear\n if(scope.automatic){\n scope.getAutomaticStatusesForYear(scope.selectedYear);\n scope.getStatusesForMonth(scope.selectedMonthNumber);\n } \n else {\n scope.getStatusesForYear(scope.selectedYear);\n scope.getStatusesForMonth(scope.selectedMonthNumber);\n }\n };\n \n function checkSettings() {\n scope.typeSelected = \"asset\";\n if (scope.settings) {\n if (scope.settings.areaId) {\n scope.areaId = scope.settings.areaId;\n scope.typeSelected = \"area\";\n scope.editable = true;\n } else if (scope.settings.projectId) {\n scope.projectId = scope.settings.projectId;\n scope.typeSelected = \"project\";\n scope.editable = true;\n } else if (scope.settings.assetId) {\n scope.assetId = scope.settings.assetId;\n scope.typeSelected = \"asset\";\n scope.editable = true;\n } else {\n scope.editable = false;\n if(scope.settings.typeSelected){\n scope.typeSelected = scope.settings.typeSelected;\n }\n }\n if (scope.settings.identificationName) {\n scope.identificationName = scope.settings.identificationName;\n } else if(scope.settings.areaName){\n scope.identificationName = scope.settings.areaName;\n }\n if (scope.settings.theme) {\n scope.theme = scope.settings.theme;\n }\n if (scope.settings.title) {\n scope.title = scope.settings.title;\n } else {\n scope.title = \"\";\n }\n if (scope.settings.labelsettings) {\n scope.labelsettings = scope.settings.labelsettings;\n if(scope.settings.labelsettings.dataSource){\n scope.editable = false;\n scope.identificationName = \"\";\n scope.dataSource = scope.settings.labelsettings.dataSource;\n scope.formula = scope.settings.labelsettings.formula;\n }\n scope.filters = scope.settings.labelsettings.filters;\n if(scope.filters){\n scope.identificationName = \"\";\n }\n } \n if(scope.settings.typeVariant){\n scope.typeVariant = scope.settings.typeVariant;\n }\n if(scope.settings.deviationTypeId){\n scope.deviationTypeId = scope.settings.deviationTypeId;\n scope.initializeAutomatic();\n } else {\n scope.initialize();\n } \n } else {\n assetService.getAllAssets().then(function (assets) {\n scope.assets = assets;\n if (scope.boardAssetId) {\n var intAssetId = parseInt(scope.boardAssetId) ;\n var boardAsset = scope.assets.find(a => a.id == intAssetId)\n if(boardAsset){\n scope.updateAsset(boardAsset);\n } else {\n scope.initialize();\n }\n }\n });\n }\n \n \n }\n scope.changeTheme= function(theme){\n scope.theme = theme;\n scope.updateSettings();\n }\n\n scope.updateSettings = function(){\n var componentSettings = {\n title: scope.title,\n areaId: scope.areaId,\n projectId: scope.projectId,\n assetId: scope.assetId,\n deviationTypeId: scope.deviationTypeId,\n identificationName: scope.identificationName,\n typeSelected: scope.typeSelected,\n typeVariant: scope.typeVariant,\n theme: scope.theme,\n labelsettings: scope.labelsettings\n };\n scope.settingsChangeHandler({ settings: componentSettings });\n }; \n \n // Datasource related functionality\n \n scope.subscribe(\"DataValueAdded\", function (value) {\n if (!scope.dataSource) return;\n if (scope.dataSource.id === value.dataSourceId) {\n if (dateInSelectedMonth(value.valueDate)) {\n getDatasourceStatusesForMonth(scope.selectedMonthNumber);\n getDatasourceStatusesForYear(scope.selectedYear);\n } else {\n getDatasourceStatusesForYear(scope.selectedYear);\n }\n }\n });\n scope.subscribe(\"DataValueUpdated\", function (value) {\n if (!scope.dataSource) return;\n if (scope.dataSource.id === value.dataSourceId) {\n if (dateInSelectedMonth(value.valueDate)) {\n getDatasourceStatusesForMonth(scope.selectedMonthNumber);\n getDatasourceStatusesForYear(scope.selectedYear);\n } else {\n getDatasourceStatusesForYear(scope.selectedYear);\n }\n }\n });\n scope.subscribe(\"DataValueDeleted\", function (value) {\n if (!scope.dataSource) return;\n if (scope.dataSource.id === value.dataSourceId) {\n if (dateInSelectedMonth(value.valueDate)) {\n getDatasourceStatusesForMonth(scope.selectedMonthNumber);\n getDatasourceStatusesForYear(scope.selectedYear);\n } else {\n getDatasourceStatusesForYear(scope.selectedYear);\n }\n }\n });\n function dateInSelectedMonth(utcDate) {\n if (!scope.selectedMonthNumber || !scope.selectedYear) {\n return true;\n }\n if (moment(utcDate).month == scope.selectedMonthNumber \n && moment(utcDate).year == scope.selectedYear) {\n return false;\n } else {\n return true;\n }\n }\n\n \n\n function getDatasourceStatusesForYear(year) {\n \n var options = {\n groupByInterval: \"month\",\n timeZone: timeService.getUserTimeZone(), // Which timezone we would like the result to be calculated in.\n timePeriod: getTimePeriodYear(year), //scope.timePeriod.period,\n filters: scope.filters,\n formula: scope.formula\n };\n dataService().getTargetValuesForPeriod(scope.dataSource.id, options).then(function (values) {\n if (values) {\n scope.statusByMonth = [0,0,0,0,0,0,0,0,0,0,0,0];\n for(var i=0; i=') {\n if(totalSumDay >= parseFloat(scope.dataSource.targets[i].targetValue)){\n var newStatus = convertColorClassToColorCode(scope.dataSource.targets[i].colorStyleClass);\n if(status > 0 && status < newStatus){\n status = newStatus;\n break;\n }\n status = newStatus;\n }\n } else if (scope.dataSource.targets[i].operator.dbCode === '>') {\n if(totalSumDay > parseFloat(scope.dataSource.targets[i].targetValue)){\n var currentStatus = convertColorClassToColorCode(scope.dataSource.targets[i].colorStyleClass);\n if(status > 0 && status < currentStatus){\n return currentStatus;\n }\n status = currentStatus;\n }\n }\n }\n return status;\n }\n }\n\n function convertColorClassToColorCode(colorStyleClass){\n if(colorStyleClass == 'greencross-green') return 1;\n if(colorStyleClass == 'greencross-blue') return 2;\n if(colorStyleClass == 'greencross-yellow') return 3;\n if(colorStyleClass == 'greencross-red') return 4;\n return 0; //undefined\n }\n }\n }\n }]);\n","import { getDefaultAppTheme, getDefaultAppStyle, calcDefaultAppFontSize } from \"@common/components/dashboard/designer/common/appStyleService\"\nimport * as documentService from \"@common/services/documentService\"\n\nangular\n .module('DigiLean')\n .directive(\"imageDisplayer\", ['debounce',\n function (debounce) {\n return {\n templateUrl: 'imagedisplayer.html',\n restrict: 'E',\n scope: {\n 'isAdminMode': '=',\n 'settings': '=',\n 'settingsChangeHandler': '&',\n 'layoutFactor': '<'\n },\n link: function (scope, elem, attrs) {\n scope.theme = getDefaultAppTheme()\n scope.themeChangedEvent = function($event) {\n scope.theme = $event.detail\n scope.updateSettings()\n }\n scope.appStyle = getDefaultAppStyle()\n function calcStyles() {\n scope.appStyle[\"font-size\"] = calcDefaultAppFontSize(scope.layoutFactor)\n }\n calcStyles()\n scope.$watch('layoutFactor', calcStyles)\n scope.title = \"\"\n scope.titleChangedEvent = function($event) {\n scope.title = $event.detail\n scope.updateSettings()\n }\n\n scope.imageUrl = null;\n scope.imageFileName = \"\";\n \n // Dashboard Settings handling\n scope.$watch('settings', function (settings) {\n scope.settings = settings;\n if (scope.settings) {\n scope.title = settings.title;\n scope.imageFileName = settings.imageFileName;\n loadImageUrl(settings.imageFileName)\n if (settings.theme) {\n scope.theme = settings.theme;\n }\n }\n });\n\n scope.isMenuActive = false;\n scope.menuActive = function(open) {\n scope.isMenuActive = open;\n }\n\n\n scope.changeTheme= function(theme){\n scope.theme = theme;\n scope.updateSettings();\n }\n\n function resizeImage() {\n var host = $(elem).closest(\".grid-stack-item-content\");\n if (host.length == 0)\n host = $(elem).closest(\".modal-body\")\n \n if (host.length == 0) return;\n var width = host.width();\n var height = host.height()-60;\n var img = $(elem).find(\"img\");\n $(img).css(\"height\", height);\n $(img).css(\"width\", width);\n }\n setTimeout(function() {\n resizeImage();\n }, 100);\n \n scope.$on(\"widget-resized\", function (event, args) {\n resizeImage();\n });\n\n scope.updateSettings = function () {\n var componentSettings = {\n title: scope.title,\n imageFileName: scope.imageFileName,\n theme: scope.theme\n };\n scope.settingsChangeHandler({ settings: componentSettings });\n }\n\n var loadImageUrl = function(fileName) {\n scope.loadImageUrl = \"https://digileanfiles.blob.core.windows.net/public-assets/images/Loading_icon.gif\";\n documentService.getFileUrl(fileName).then(function(fileUrl) {\n scope.imageUrl = fileUrl;\n });\n }\n\n scope.commitChangesDebounced = debounce(scope.updateSettings, 2000, false);\n scope.uploadedFiles = []; // For uploading new attachments, will be connected to dropzone.\n scope.fileUploaded = function ($event) {\n const files = $event.detail\n const file = files[0]\n scope.imageFileName = file.fileName\n scope.updateSettings()\n loadImageUrl(scope.imageFileName)\n }\n }\n }\n }]);\n","import * as customerService from \"@common/services/customers/customerService\"\nimport * as dashboardService from \"@common/services/dashboardService\"\nimport * as timeService from \"@common/services/timeService\"\n\nangular\n .module('DigiLean')\n .directive(\"messageDisplayer\", ['$uibModal','$filter', 'debounce','$translate',\n function ($uibModal,$filter, debounce, $translate) {\n return {\n templateUrl: 'messagedisplayer.html',\n restrict: 'E',\n scope: {\n 'isAdminMode': '=',\n 'assetId': '<',\n 'settings': '=',\n 'settingsChangeHandler': '&'\n },\n link: function (scope, elem, attrs) {\n scope.theme = {\n background: \"transparent\",\n color: \"inherit\"\n };\n scope.postIts = dashboardService.getThemes(); \n\n scope.title = \"\";\n scope.messages = [];\n scope.filters = null;\n scope.showMetaInfo = true;\n \n scope.subscribe(\"MessageReceived\", function (message) {\n if(!message) return;\n\n if(message.isPublic || !scope.filters){ //show all new messages\n getMessages();//førte til at meldinger la seg opppå hverandre scope.messages.unshift(message);\n } else if(scope.filters && message.assets){\n var assetfilter = $filter('filter')(scope.filters, { sourceColumn: \"assetId\" }); \n if(assetfilter && isAssetMatch(message.assets, assetfilter[0].items)){\n getMessages();\n }\n }\n });\n\n // Dashboard Settings handling\n scope.$watch('settings', function (settings) {\n scope.settings = settings;\n if (scope.settings) {\n scope.title = settings.title;\n if (settings.filters) {\n scope.filters = settings.filters;\n }\n if(settings.showMetaInfo){\n scope.showMetaInfo = true;\n }\n if (settings.showMetaInfo === false) {\n scope.showMetaInfo = settings.showMetaInfo;\n }\n if (settings.theme) {\n scope.theme = settings.theme;\n }\n getMessages();\n } else if (scope.isAdminMode) {\n setTimeout(function() {\n scope.selectAssets();\n }, 200); \n }\n scope.messageoptions = {\n showMetaInfo: scope.showMetaInfo\n }\n });\n\n function isAssetMatch(messageassets, assetsToBeDisplayed) {\n for (const messageasset of messageassets) {\n for (const assetToBeDisplayed of assetsToBeDisplayed) {\n if (messageasset.assetId === assetToBeDisplayed) {\n return true;\n }\n }\n } \n return false;\n }\n\n\n scope.toggleShowMetaInfo = function(){\n scope.messageoptions = {\n showMetaInfo: scope.showMetaInfo\n }\n scope.updateSettings();\n }\n\n scope.selectAssets = function () {\n\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'assetSelectorModal.html',\n controller: 'assetSelectorModalController',\n windowClass: 'newdeviation-modal-window',\n resolve: {\n\n filters: function () {\n return scope.filters;\n }\n }\n });\n \n modalInstance.result.then(function (result) {\n scope.filters = result;\n getMessages();\n scope.updateSettings();\n }, function(res){});\n };\n\n scope.changeTheme= function(theme){\n scope.theme = theme;\n scope.updateSettings();\n }\n\n function getMessages() {\n var valuesQueryOptions = {\n filters: scope.filters\n } \n customerService.getMessagesWithOptions(valuesQueryOptions).then(function (result) {\n scope.allMessages = result;\n scope.isLoading = false;\n scope.allMessages.forEach(message => {\n // replace linebreaks\n message.text = message.text.replace(/\\r\\n|\\r|\\n/g, \"
      \");\n if (message.isPublic) {\n message.typeColor = \"#5ab700\";\n message.type = $translate.instant('COMMON_ALL');\n } else if (message.projectId != null) {\n message.typeColor = \"#0099DE\"\n message.type = $translate.instant('COMMON_PROJECT');\n } else if (message.assetId != null){\n message.typeColor = \"#f0ad4e\"\n message.type = $translate.instant('COMMON_BOARD');\n } else {\n message.typeColor = \"#D770AD\"\n message.type = $translate.instant('COMMON_ASSET');\n }\n \n });\n calculateTimeElapsed();\n });\n \n }\n \n\n function calculateTimeElapsed() {\n scope.allMessages.forEach(function (msg) {\n timeService.addTimeElapsedForMsg(msg);\n });\n }\n\n scope.updateSettings = function () {\n var componentSettings = {\n title: scope.title,\n theme: scope.theme,\n filters: scope.filters,\n showMetaInfo: scope.showMetaInfo\n };\n scope.settingsChangeHandler({ settings: componentSettings });\n }\n\n scope.commitChangesDebounced = debounce(scope.updateSettings, 2000, false);\n\n }\n }\n }]);\n","import { getDefaultAppStyle, getDefaultAppTheme, calcDefaultAppFontSize } from \"@common/components/dashboard/designer/common/appStyleService\"\nimport * as customerService from \"@common/services/customers/customerService\"\nimport * as assetService from \"@common/services/assetService\"\nimport toaster from \"@common/components/toast\"\n\nangular\n.module(\"DigiLean\")\n.directive('quickIncidentRegistrationApp', ['$translate', '$filter','$uibModal','deviationService','projectService', 'areaService','dataListService','authService','debounce',\n function ($translate, $filter, $uibModal,deviationService, projectService, areaService, dataListService,authService,debounce) {\n return {\n templateUrl: 'quickIncidentRegistrationApp.html',\n restrict: 'E',\n scope: {\n 'isAdminMode': '=',\n 'settings': '=',\n 'settingsChangeHandler': '&',\n 'layoutFactor': '<',\n 'userAccess': '<',\n },\n link: function (scope, elem, attrs) {\n\n scope.canEdit = false;\n\n scope.configuration = {};\n scope.filters = [];\n scope.allAssets = [];\n scope.users = [];\n var userid = authService.getCurrentUser().userId\n scope.customfields = [];\n scope.selectedCategories = [];\n scope.categories = null;\n scope.selectedArea = null;\n scope.selectedSeverity = {};\n scope.selectedAsset = null;\n scope.selectedFollowUpAsset = null;\n scope.selectedProject = null;\n scope.selectedDataListItem = null;\n scope.showTime = false;\n scope.isValid = true;\n scope.isDeviationAdmin = authService.hasRole(\"DeviationAdmin\");\n\n scope.deviation = {title: \"\", severity:0};\n scope.severities = [];\n\n function setDefaultSeverity(){\n scope.selectedSeverity = {};\n scope.severities = deviationService().getAllSeverities();\n }\n setDefaultSeverity();\n \n scope.theme = getDefaultAppTheme()\n\n scope.title = $translate.instant(\"COMMON_TITLE\");\n scope.titleChangedEvent = function($event) {\n scope.title = $event.detail\n scope.updateSettings()\n }\n\n scope.themeChangedEvent = function($event) {\n scope.theme = $event.detail\n scope.updateSettings()\n }\n scope.appStyle = getDefaultAppStyle()\n scope.incidentStyle = {\n \"font-size\": \"3.2rem\"\n }\n function calcStyles() {\n let fontIncident = \"3.2rem\"\n if(scope.layoutFactor)\n fontIncident = 3.2 * scope.layoutFactor + \"rem\"\n \n scope.appStyle[\"font-size\"] = calcDefaultAppFontSize(scope.layoutFactor)\n scope.incidentStyle[\"font-size\"] = fontIncident\n }\n calcStyles()\n scope.$watch('layoutFactor', calcStyles)\n scope.$watch('settings', function (settings) {\n if (settings) {\n scope.settings = settings;\n scope.title = settings.title;\n scope.style = settings.style;\n if (settings.theme) {\n scope.theme = settings.theme;\n }\n if (settings.deviationTypeId) {\n scope.deviationTypeId = settings.deviationTypeId;\n getConfiguration();\n if (settings.filters) {\n scope.filters = settings.filters;\n }\n if(settings.registrationsetup){\n scope.registrationsetup = angular.copy(settings.registrationsetup);\n initRegistration();\n }\n }\n }\n checkConfiguration();\n });\n\n function checkConfiguration() {\n if (scope.deviationTypeId && scope.registrationsetup) {\n scope.configurationChallenges = false;\n } else {\n scope.configurationChallenges = true;\n }\n }\n\n scope.$watch('userAccess', function (userAccess) {\n scope.canEdit = userAccess.isAdmin || scope.isDeviationAdmin || userAccess.assetRole == \"Member\" || userAccess.assetRole == \"Owner\";\n });\n \n scope.incidentDateChanged = function ($event) {\n const date = $event.originalEvent.detail\n scope.deviation.incidentDate = date\n }\n\n scope.setTime = function (time) {\n scope.deviation.incidentDate.setHours(time.getHours());\n scope.deviation.incidentDate.setMinutes(time.getMinutes());\n };\n\n function checkFields(validFields) {\n if (validFields) {\n for (var f = 0; f < validFields.length; f++) {\n var customRegistrationField;\n if(validFields[f].deviationCustomFieldId){\n var customSourceColumn = \"customField\" + validFields[f].deviationCustomFieldId; \n customRegistrationField = scope.registrationsetup.find(l => l.sourceColumn == customSourceColumn) \n } else {\n customRegistrationField = scope.registrationsetup.find(l => l.type == validFields[f].type) \n }\n if(customRegistrationField) {\n switch (validFields[f].type) {\n case \"PROJECT\":\n loadProjects();\n break;\n case \"AREA\":\n loadAreas();\n break;\n case \"DEVIATION_INCIDENT_TIME\":\n scope.showTime = true;\n break;\n case \"list\":\n setCustomList(customRegistrationField); \n break;\n default:\n scope.customfields.push(customRegistrationField);\n }\n } \n }\n }\n // remove earlier added fields area or project that are not valid anymore\n var isAreaValid = validFields.find(l => l.type == \"AREA\");\n if(!isAreaValid && scope.registrationsetup && scope.registrationsetup.find(l => l.type == \"AREA\")){\n scope.registrationsetup.splice(scope.registrationsetup.findIndex(l => l.type == \"AREA\"), 1);\n }\n var isProjectValid = validFields.find(l => l.type == \"PROJECT\");\n if(!isProjectValid && scope.registrationsetup && scope.registrationsetup.find(l => l.type == \"PROJECT\")){\n scope.registrationsetup.splice(scope.registrationsetup.findIndex(l => l.type == \"PROJECT\"), 1);\n }\n }\n\n function setCustomList(field){\n const hasBeenAdded = scope.customfields.find(l => l.sourceColumn == field.sourceColumn)\n if(hasBeenAdded) return; //already added\n if(!field.dataListId) return;\n var listOptions = {includeDeletedItems:false};\n dataListService().getItems(field.dataListId, listOptions).then(function (list) {\n const hasFilterValues = scope.filters.find(l => l.sourceColumn == field.sourceColumn)\n if(field.value){\n field.selectedDataListItem = list.find(a => a.id == field.value);\n }\n if (hasFilterValues && hasFilterValues.items.length > 0){\n setFilteredSelectors(field, hasFilterValues.items)\n } else {\n field.dataList = list;\n } \n scope.customfields.splice(field.sortOrder, 0, field);\n });\n }\n\n function setFilterOrDefaultValue(element){\n if(!element) return;\n if(element.show && scope.filters && scope.filters.length > 0){\n var hasFilterValues = scope.filters.find(l => l.sourceColumn == element.sourceColumn)\n if(hasFilterValues && hasFilterValues.items.length > 0){\n if(hasFilterValues.items.length == 1){\n element.value = hasFilterValues.items[0]; //preselect the first filtered item of this filterelement\n setFilteredSelectors(element, hasFilterValues.items);\n return; //should not proceed checking default value since it has already been set. \n } else { //multiple selected elements\n setFilteredSelectors(element, hasFilterValues.items)\n }\n }\n } \n if(element.value){\n switch (element.type.toLowerCase()) {\n case \"asset\":\n if(scope.allAssets && scope.allAssets.length > 0){\n scope.selectedAsset = scope.allAssets.find(a => a.id == element.value);\n } else {\n assetService.getAllAssets(true).then(function (data) {\n scope.allAssets = data;\n scope.assets = data;\n scope.selectedAsset = data.find(a => a.id == element.value);\n });\n }\n break;\n case \"followupasset\":\n if(scope.allAssets && scope.allAssets.length > 0){\n scope.selectedFollowUpAsset = scope.allAssets.find(a => a.id == element.value);\n } else {\n assetService.getAllAssets(true).then(function (data) {\n scope.allAssets = data;\n scope.followupassets = data;\n scope.selectedFollowUpAsset = data.find(a => a.id == element.value);\n });\n }\n break;\n case \"area\":\n if(scope.areas && scope.areas.length > 0){\n scope.selectedArea = scope.areas.find(a => a.id == element.value);\n } else {\n areaService().getList(true).then(function (data) {\n scope.areas = data;\n scope.selectedArea = data.find(a => a.id == element.value);\n });\n }\n break;\n case \"project\":\n if(scope.projects && scope.projects.length > 0){\n scope.selectedProject = scope.projects.find(a => a.id == element.value);\n } else {\n projectService().getOngoingProjects().then(function (data) {\n scope.projects = data;\n scope.selectedProject = data.find(a => a.id == element.value);\n });\n }\n break;\n\n case \"user\":\n if(scope.allUsers && scope.allUsers.length > 0){\n scope.selectedUser = scope.allUsers.find(a => a.userId == element.value);\n } else {\n customerService.getAllUsers().then(function (data) {\n scope.allUsers = data;\n scope.selectedUser = data.find(a => a.userId == element.value);\n });\n }\n break;\n case \"deviationseverity\":\n scope.selectedSeverity = scope.severities.find(s => s.severity == element.value); \n break;\n case \"list\":\n if(element.dataList && element.dataList.length > 0) return; //already loaded\n var listOptions = {includeDeletedItems:false};\n dataListService().getItems(element.dataListId, listOptions).then(function (list) {\n if (list) {\n element.dataList = list;\n element.selectedDataListItem = list.find(a => a.id == element.value);\n }\n });\n break;\n case \"problemcategory\":\n if(scope.categories && scope.categories.length > 0){ \n //Deviation support multiple selected categories\n const hasFilterValues = scope.filters.find(l => l.sourceColumn == element.sourceColumn)\n if(hasFilterValues && hasFilterValues.items.length > 0){\n if(hasFilterValues.items.length == 1){ //preselect the first filtered item of this filterelement\n const hasElement = scope.categories.find(a => a.id == hasFilterValues.items[0]);\n if(hasElement){\n scope.selectedCategories.push(hasElement);\n } \n } else { //multiple selected elements\n for(var index = 0; index < hasFilterValues.items.length; index++){\n const hasElement = scope.categories.find(a => a.id == hasFilterValues.items[index]);\n if(hasElement){\n scope.selectedCategories.push(hasElement);\n }\n }\n }\n } else {\n const hasElement = scope.categories.find(a => a.id == element.value[index]);\n if(hasElement){\n scope.selectedCategories.push(hasElement);\n }\n }\n }\n break;\n case \"consequence\":\n if(scope.consequences && scope.consequences.length > 0){ \n //Deviation support multiple selected consequences\n const hasFilterValues = scope.filters.find(l => l.sourceColumn == element.sourceColumn)\n if(hasFilterValues && hasFilterValues.items.length > 0){\n for(var index = 0; index < hasFilterValues.items.length; index++){\n const hasElement = scope.consequences.find(a => a.id == hasFilterValues.items[index]);\n if(hasElement){\n scope.modifyConsequence(hasElement);\n }\n }\n } else if (element.value && element.value.length > 0){\n for(var index = 0; index < element.value.length; index++){\n const hasElement = scope.consequences.find(a => a.id == element.value[index]);\n if(hasElement){\n scope.modifyConsequence(hasElement);\n }\n }\n }\n }\n break;\n case \"problemreason\":\n if(scope.problemReasons && scope.problemReasons.length > 0){ \n //Deviation support multiple selected problem reasons\n const hasFilterValues = scope.filters.find(l => l.sourceColumn == element.sourceColumn)\n if(hasFilterValues && hasFilterValues.items.length > 0){\n for(var index = 0; index < hasFilterValues.items.length; index++){\n const hasElement = scope.problemReasons.find(a => a.id == hasFilterValues.items[index]);\n if(hasElement){\n scope.modifyReason(hasElement);\n }\n }\n } else if (element.value && element.value.length > 0){\n for(var index = 0; index < element.value.length; index++){\n const hasElement = scope.problemReasons.find(a => a.id == element.value[index]);\n if(hasElement){\n scope.modifyReason(hasElement);\n }\n }\n }\n }\n break; \n }\n }\n }\n \n\n function initRegistration() {\n scope.isProcessing = false;\n resetDeviation();\n setDefaultSeverity();\n scope.description = \"\";\n scope.selectedDate = moment().startOf('day').toDate();\n scope.selectedDataListItem = null;\n angular.forEach(scope.registrationsetup, function (element) {\n const hasFilterValues = scope.filters.find(l => l.sourceColumn == element.sourceColumn)\n if(element.value || (hasFilterValues && hasFilterValues.items.length > 0)){\n setFilterOrDefaultValue(element);\n }\n else {\n switch (element.type) {\n case \"asset\":\n if(scope.allAssets && scope.allAssets.length > 0){\n scope.assets = scope.allAssets;\n } else {\n assetService.getAllAssets(true).then(function (data) {\n scope.allAssets = data;\n scope.assets = data;\n });\n }\n break;\n case \"followupasset\":\n if(scope.allAssets && scope.allAssets.length > 0){\n scope.followupassets = scope.allAssets;\n } else {\n assetService.getAllAssets(true).then(function (data) {\n scope.allAssets = data;\n scope.followupassets = data;\n });\n }\n break;\n case \"area\":\n areaService().getList(true).then(function (data) {\n scope.areas = data;\n });\n break;\n case \"project\":\n projectService().getOngoingProjects().then(function (data) {\n scope.projects = data;\n });\n break;\n case \"user\":\n setCurrentUser(element);\n break;\n case \"deviationseverity\":\n if(element.value){\n scope.selectedSeverity = scope.severities.find(s => s.severity == element.value);\n }\n break;\n case \"list\":\n var listOptions = {includeDeletedItems:false};\n dataListService().getItems(element.dataListId, listOptions).then(function (list) {\n if (list) {\n element.dataList = list;\n element.selectedDataListItem = {};\n }\n });\n break;\n\n }\n }\n });\n\n scope.isLoadingConfig = false;\n \n }\n\n function getSelectableElements(listOfAllElements, filteritems){\n var listOfSelectableElements = [];\n if(!listOfAllElements || listOfAllElements.length == 0) return listOfSelectableElements;\n if(!filteritems || filteritems.length == 0){\n listOfSelectableElements = listOfAllElements;\n } else {\n for(var i=0; i e.id == filteritems[i])\n if (hasElement) {\n listOfSelectableElements.push(hasElement);\n }\n }\n if (listOfSelectableElements.length == 0){ //if no filtered items are available then let all be selectable\n listOfSelectableElements = listOfAllElements;\n }\n }\n return listOfSelectableElements;\n }\n\n\n function setFilteredSelectors(element, filteritems){\n switch (element.type.toLowerCase()) {\n case \"asset\":\n if(scope.allAssets && scope.allAssets.length > 0){\n scope.assets = getSelectableElements(scope.allAssets, filteritems);\n } else {\n assetService.getAllAssets(true).then(function (data) {\n scope.allAssets = data;\n scope.assets = getSelectableElements(data, filteritems);\n if(scope.assets && scope.assets.length == 1){\n scope.selectedAsset = scope.assets[0];\n }\n });\n }\n break;\n case \"followupasset\":\n if(scope.allAssets && scope.allAssets.length > 0){\n scope.followupassets = getSelectableElements(scope.allAssets, filteritems);\n } else {\n assetService.getAllAssets(true).then(function (data) {\n scope.allAssets = data;\n scope.followupassets = getSelectableElements(data, filteritems);\n if(scope.followupassets && scope.followupassets.length == 1){\n scope.selectedFollowUpAsset = scope.followupassets[0];\n }\n });\n }\n break; \n case \"area\":\n areaService().getList(true).then(function (data) {\n scope.areas = [];\n for(var i=0; i e.id == filteritems[i]) \n if (hasElement) {\n scope.areas.push(hasElement);\n }\n if(scope.areas && scope.areas.length == 1){\n scope.selectedArea = scope.areas[0];\n }\n }\n });\n break;\n case \"project\":\n if(scope.projects && scope.projects.length > 0){\n scope.projects = getSelectableElements(scope.projects, filteritems);\n } else {\n projectService().getOngoingProjects().then(function (data) {\n scope.projects = getSelectableElements(data, filteritems);\n });\n }\n break;\n case \"user\":\n customerService.getAllUsers().then(function (data) {\n scope.allUsers = [];\n for(var i=0; i e.id == filteritems[i]) \n if (hasElement) {\n scope.allUsers.push(hasElement);\n }\n }\n });\n break; \n case \"problemcategory\":\n scope.categories = getSelectableElements(scope.categories, filteritems);\n break;\n case \"consequence\":\n scope.consequences = getSelectableElements(scope.consequences, filteritems);\n break; \n case \"problemreason\":\n var filteredvalues = [];\n for(var i=0; i e.id == filteritems[i]) \n if (hasElement) {\n filteredvalues.push(hasElement);\n }\n }\n if(filteredvalues.length > 0){\n scope.problemReasons = filteredvalues;\n }\n break;\n case \"deviationseverity\":\n var filteredseverities = [];\n for(var i=0; i e.severity == filteritems[i]) \n if (hasElement) {\n filteredseverities.push(hasElement);\n }\n }\n if(filteredseverities.length > 0){\n scope.severities = filteredseverities;\n }\n break;\n case \"list\":\n var listOptions = {includeDeletedItems:false};\n dataListService().getItems(element.dataListId, listOptions).then(function (list) {\n if (list) {\n element.dataList = [];\n for(var i=0; i e.id == filteritems[i])\n if (hasElement) {\n element.dataList.push(hasElement);\n }\n }\n element.selectedDataListItem = {};\n }\n });\n break;\n default:\n element.value = null;\n }\n }\n\n function setCurrentUser(element){\n if(scope.allUsers && scope.allUsers.length > 0){\n var hasElement = scope.allUsers.find(e => e.userId == userid)\n if (hasElement) {\n element.user = hasElement;\n element.value = hasElement.userId;\n }\n } else {\n customerService.getAllUsers().then(function (users) {\n scope.allUsers = users;\n var hasElement = scope.allUsers.find(e => e.userId == userid)\n if (hasElement) {\n element.user = hasElement;\n element.value = hasElement.userId;\n }\n });\n }\n }\n\n scope.modifyConsequence = function (consequence) {\n if (scope.deviation.consequences) {\n var match = $filter('filter')(scope.deviation.consequences, { lossTypeId: consequence.id }, true);\n if (match.length === 1) {\n if (consequence.checked) {\n match[0].amount = consequence.amount;\n } else {\n consequence.amount = null;\n var index = scope.deviation.consequences.indexOf(match[0]);\n scope.deviation.consequences.splice(index);\n }\n } else { //consequences is not allready selected\n let deviationConsequence = {\n lossTypeId: consequence.id,\n amount: consequence.amount,\n unit: consequence.unit\n };\n scope.deviation.consequences.push(deviationConsequence);\n } \n } else {\n scope.deviation.consequences = [];\n let deviationConsequence = {\n lossTypeId: consequence.id,\n amount: consequence.amount,\n unit: consequence.unit\n };\n scope.deviation.consequences.push(deviationConsequence);\n }\n };\n\n scope.setConsequence = function (consequence) {\n if (consequence.amount) {\n consequence.checked = true;\n \n var valueString = consequence.amount.toString();\n var valuereplacecomma = valueString.replace(/,/g, '.');\n consequence.amount = valuereplacecomma;\n if (consequence.amount == '' || Number(consequence.amount)) {\n consequence.notvalidnumber = false;\n scope.modifyConsequence(consequence);\n } else {\n consequence.notvalidnumber = true;\n } \n } else {\n consequence.notvalidnumber = false;\n }\n };\n\n\n\n function getConfiguration(){\n if(!scope.deviationTypeId) return;\n if(scope.configuration && scope.categories) return; //already loaded \n deviationService().getDeviationTypeConfiguration(scope.deviationTypeId).then(function (configuration) {\n scope.configuration = configuration;\n checkFields(scope.configuration.fields);\n scope.categories = scope.configuration.categories;\n scope.consequences = scope.configuration.consequences;\n scope.problemReasons = scope.configuration.causes;\n\n var element = scope.registrationsetup.find(l => l.sourceColumn == \"problemCategoryId\")\n setFilterOrDefaultValue(element);\n\n element = scope.registrationsetup.find(l => l.sourceColumn == \"lossTypeId\")\n setFilterOrDefaultValue(element);\n\n element = scope.registrationsetup.find(l => l.sourceColumn == \"problemReasonId\")\n setFilterOrDefaultValue(element);\n });\n }\n\n scope.selectConfiguration = function () {\n \n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'quickIncidentRegistrationConfiguration.html',\n controller: 'quickIncidentRegistrationConfigurationController',\n resolve: {\n configuration: function () {\n return scope.settings;\n }\n }\n });\n modalInstance.result.then(function (configuration) {\n scope.deviationTypeId = configuration.deviationTypeId;\n scope.registrationsetup = configuration.registrationsetup;\n if(!scope.settings) scope.settings = {};\n scope.settings.registrationsetup = configuration.registrationsetup;\n scope.filters = configuration.filters;\n scope.updateSettings()\n initRegistration();\n }, function(res){});\n };\n\n function resetDeviation(){\n scope.deviation = {\n title: \"\",\n severity:0,\n evaluationText: \"\",\n deviationTypeId: scope.deviationTypeId \n };\n scope.deviation.incidentDate = moment().toDate();\n scope.deviation.incidentDate.setHours(0);\n scope.deviation.incidentDate.setMinutes(0);\n\n scope.selectedAsset = null;\n scope.selectedFollowUpAsset = null;\n scope.selectedCategories = [];\n scope.selectedArea = null;\n scope.selectedSeverity = {};\n\n scope.customfields = [];\n scope.selectedDataListItem = null;\n\n if(scope.settings && scope.settings.registrationsetup){\n scope.registrationsetup = angular.copy(scope.settings.registrationsetup);\n\n angular.forEach(scope.registrationsetup, function (element) {\n const hasFilterValues = scope.filters.find(l => l.sourceColumn == element.sourceColumn)\n if(element.value || (hasFilterValues && hasFilterValues.items.length > 0)){\n setFilterOrDefaultValue(element);\n }\n });\n } \n }\n\n scope.validate = function () {\n // Rules\n scope.validationMessages = [];\n\n\n // Has categories\n if (scope.selectedCategories.length == 0) {\n scope.validationMessages.push($translate.instant(\"DEVIATION_VALIDATION_CATEGORIES_REQUIRED\"));\n const categoryField = scope.registrationsetup.find(l => l.sourceColumn == \"problemCategoryId\");\n if(categoryField) {\n categoryField.show = true;\n }\n }\n \n //Check mandatory custom fields\n if(mandatoryFieldsMissing(scope.registrationsetup)){\n scope.validationMessages.push($translate.instant(\"ADMIN_DATA_FIELD_MISSING\"));\n }\n \n if (scope.validationMessages.length > 0) {\n scope.isValid = false;\n } else {\n scope.isValid = true;\n }\n return scope.isValid;\n };\n\n function mandatoryFieldsMissing(lisOfFields){\n if(!lisOfFields) return;\n for(let index = 0; index < lisOfFields.length; index++){\n if(lisOfFields[index].isMandatory){\n if(lisOfFields[index].type == 'list'){\n if(!(lisOfFields[index].selectedDataListItem && lisOfFields[index].selectedDataListItem.id)){\n return true;\n }\n } else if(lisOfFields[index].type == 'number'){\n if(isNaN(lisOfFields[index].value)){\n return true;\n }\n } else if(lisOfFields[index].type == 'text'){\n if(!lisOfFields[index].value){\n return true;\n }\n }\n }\n \n }\n return false;\n }\n\n function loadAreas() {\n if(!scope.areas || scope.areas.length == 0){\n areaService().getList().then(function (areas) {\n scope.areas = areas;\n });\n }\n }\n scope.areaChanged = function (area) {\n scope.deviation.areaId = area.id;\n };\n \n function loadProjects() {\n if(!scope.projects || scope.projects.length == 0){\n projectService().getOngoingProjects().then(function (projects) {\n scope.projects = projects;\n });\n }\n }\n\n scope.selectUser = function (user, item) {\n item.user = user;\n if (user && user.userId) {\n item.value = user.userId;\n } else {\n item.value = null;\n } \n };\n\n scope.selectAsset = function (asset, item) { \n if (asset) {\n scope.selectedAsset = asset;\n item.value = asset.id;\n customerService.getUsersForAsset(asset.id).then(function (assetUsers) {\n scope.allUsers = assetUsers;\n angular.forEach(scope.allUsers, function (user, key) {\n user.fullName = user.firstName + \" \" + user.lastName;\n });\n const userSetup = scope.registrationsetup.find(l => l.sourceColumn == \"createdByUserId\");\n if (userSetup && userSetup.value) {\n var match = $filter('filter')(scope.allUsers, { userId: userSetup.value.userId });\n if (match.length == 0) { //user is not member of selected asset \n userSetup.value = null;\n }\n }\n }); \n }\n }\n scope.selectFollowupAsset = function (asset, item) {\n scope.selectedFollowupAsset = asset;\n item.value = asset.id;\n }\n scope.selectArea = function (area, item) {\n scope.selectedArea = area;\n item.value = area.id;\n }\n scope.selectProject = function (project, item) {\n scope.selectedProject = project;\n item.value = project.id;\n }\n scope.selectListItem = function (selectedDataListItem, item) {\n scope.selectedDataListItem = selectedDataListItem;\n item.value = selectedDataListItem.id;\n }\n scope.selectSeverity = function (severity, item) {\n scope.selectedSeverity = severity;\n item.value = severity.severity;\n }\n\n function saveCustomFieldsValues(deviationId){\n if(deviationId){\n var deviationtypefieldvalues = [];\n for(let index = 0; index < scope.customfields.length; index++){\n if(scope.customfields[index].type == 'list'){\n if(scope.customfields[index].selectedDataListItem && scope.customfields[index].selectedDataListItem.id){\n var valueData = {\n DeviationId: deviationId,\n DeviationTypeFieldId: scope.customfields[index].id,\n Value: scope.customfields[index].selectedDataListItem.id\n }\n deviationtypefieldvalues.push(valueData);\n }\n } else {\n var valueData = {\n DeviationId: deviationId,\n DeviationTypeFieldId: scope.customfields[index].id,\n Value: scope.customfields[index].value\n }\n deviationtypefieldvalues.push(valueData);\n }\n }\n if(deviationtypefieldvalues.length > 0 ){\n deviationService().addCustomFields(deviationId, deviationtypefieldvalues).then(function (result) {\n });\n }\n }\n }\n\n scope.modifyReason = function (reason) {\n if (scope.deviation.problemReasons) {\n var i = scope.deviation.problemReasons.indexOf(reason.id);\n if (i == -1) { //reason is not allready selected\n scope.deviation.problemReasons.push(reason.id);\n } else {\n scope.deviation.problemReasons.splice(i);\n } \n } else {\n scope.deviation.problemReasons = [];\n scope.deviation.problemReasons.push(reason.id);\n }\n }\n\n scope.isSaving = false;\n scope.addDeviation = function () {\n if (!scope.deviationTypeId) return;\n if (!scope.registrationsetup) return;\n for (let index = 0; index < scope.registrationsetup.length; index++) {\n const element = scope.registrationsetup[index];\n switch (element.sourceColumn) {\n case \"title\":\n scope.deviation.title = element.value;\n break;\n case \"incidentDate\":\n break;\n case \"text\":\n scope.deviation.text = element.value;\n break;\n case \"assetId\":\n scope.deviation.assetId = element.value;\n break;\n case \"followUpAssetId\":\n scope.deviation.followUpAssetId = element.value;\n break;\n case \"createdByUserId\":\n scope.deviation.createdByUserId = element.value;\n if(element.user){\n scope.deviation.createdByUser = element.user.firstName + \" \" + element.user.lastName;\n }\n break;\n case \"projectId\":\n scope.deviation.projectId = element.value;\n break;\n case \"areaId\":\n scope.deviation.areaId = element.value;\n break;\n case \"lossTypeId\":\n scope.deviation.lossTypeId = element.value;\n break;\n case \"problemReasonId\":\n if(scope.selectedProblemReason && scope.selectedProblemReason.length > 0){\n scope.deviation.problemReasons = [];\n for (let index = 0; index < scope.selectedProblemReason.length; index++) {\n const reason = scope.selectedProblemReason[index];\n scope.deviation.problemReasons.push(reason.id);\n }\n }\n break;\n case \"severity\":\n if(scope.selectedSeverity && scope.selectedSeverity.severity){\n scope.deviation.severity = parseInt(scope.selectedSeverity.severity);\n }\n break;\n case \"problemCategoryId\":\n scope.deviation.categories = [];\n if(scope.selectedCategories && scope.selectedCategories.length > 0){\n for (let index = 0; index < scope.selectedCategories.length; index++) {\n const cat = scope.selectedCategories[index];\n scope.deviation.categories.push({\n problemCategoryId: cat.id\n });\n }\n } \n break; \n }\n }\n if (!scope.validate()) return;\n \n scope.isSaving = true;\n \n deviationService().addDeviation(scope.deviation).then(function (createdDeviation) {\n saveCustomFieldsValues(createdDeviation.id);\n scope.isSaving = false;\n scope.isPopupOpen = false;\n $translate('COMMON_DEVIATION_REGISTERED').then(function (msg) {\n toaster.success(msg);\n });\n resetDeviation();\n });\n };\n \n scope.cancel = function () {\n scope.isSaving = false;\n scope.isPopupOpen = false;\n resetDeviation();\n };\n scope.updateSettings = function () {\n var componentSettings = {\n title: scope.title,\n style: scope.style,\n deviationTypeId: scope.deviationTypeId,\n registrationsetup: scope.settings?.registrationsetup,\n filters: scope.filters,\n theme: scope.theme\n };\n scope.settings = componentSettings;\n scope.settingsChangeHandler({ settings: componentSettings });\n }\n\n scope.commitChangesDebounced = debounce(scope.updateSettings, 2000, false);\n\n\n }\n }\n }]);\n\n","import * as assetService from \"@common/services/assetService\"\n\nvar DigiLean = angular.module('DigiLean');\nDigiLean.controller('quickIncidentRegistrationConfigurationController', ['$scope', '$uibModalInstance','$translate','$filter','deviationService','dataListService','areaService','projectService','configuration',\n function ($scope, $uibModalInstance, $translate,$filter,deviationService,dataListService,areaService, projectService,configuration) {\n $scope.settings = configuration;\n\n $scope.severities = [\n {\n label: deviationService().getSeverityText(\"1\"),\n severity: \"1\"\n },\n {\n label: deviationService().getSeverityText(\"2\"),\n severity: \"2\"\n },\n {\n label: deviationService().getSeverityText(\"3\"),\n severity: \"3\"\n },\n {\n label: deviationService().getSeverityText(\"\"),\n severity: \"\"\n }\n ];\n\n function getDefaultConfig(){\n var deviationStandardElements = [\n {label: $translate.instant('DEVIATION_INCIDENT_DATE'),\n sourceColumn: \"incidentDate\",\n type: \"date\",\n isMandatory: true,\n show: false,\n value: new Date()\n },\n {label: $translate.instant('COMMON_TITLE'),\n sourceColumn: \"title\",\n type: \"text\",\n isMandatory: true,\n show: true\n },\n {label: $translate.instant('DASHBOARD_DESCRIPTION'),\n sourceColumn: \"text\",\n type: \"textarea\",\n isMandatory: false,\n show: false\n },\n {label: $translate.instant('COMMON_REPORTED_BY_GROUP'),\n sourceColumn: \"assetId\",\n type: \"asset\",\n isMandatory: true,\n show: true\n },\n {label: $translate.instant('COMMON_REPORTED_BY'),\n sourceColumn: \"createdByUserId\",\n type: \"user\",\n isMandatory: false, /*use logged in user as default*/\n show: true\n },\n {label: $translate.instant('DEVIATION_FOLLOW_UP_GROUP'),\n sourceColumn: \"followUpAssetId\",\n type: \"followupasset\",\n isMandatory: false, /*use reported by group as default*/\n show: true\n } \n ];\n return deviationStandardElements;\n }\n\n function setConfigForRegistrationElement(element){\n if($scope.settings == null || $scope.settings == undefined || $scope.settings.registrationsetup == undefined) return;\n if(element && element.sourceColumn){\n const hasConfigValues = $scope.settings.registrationsetup.find(l => l.sourceColumn == element.sourceColumn)\n if(hasConfigValues){\n element.value = hasConfigValues.value;\n element.show = hasConfigValues.show; \n const hasFilterValues = $scope.filters.find(f => f.sourceColumn == element.sourceColumn);\n if(hasFilterValues){\n element.filter = [hasFilterValues];\n }\n setValueObjects(element);\n }\n }\n }\n\n function setValueObjects(element){\n if(element.value){\n switch (element.type) {\n case \"asset\":\n $scope.selectedAsset = $scope.assets.find(asset => asset.id == element.value);\n break;\n case \"followupasset\":\n $scope.selectedFollowupAsset = $scope.assets.find(asset => asset.id == element.value);\n break;\n case \"AREA\":\n if($scope.areas){\n $scope.selectedArea = $scope.areas.find(area => area.id == element.value);\n } else {\n areaService().getList().then(function (areas) {\n $scope.areas = areas;\n $scope.selectedArea = $scope.areas.find(area => area.id == element.value);\n });\n }\n break;\n case \"PROJECT\":\n if($scope.projects && $scope.projects.length > 0){\n $scope.selectedProject = $scope.projects.find(a => a.id == element.value);\n } else {\n projectService().getOngoingProjects().then(function (data) {\n $scope.projects = data;\n $scope.selectedProject = data.find(a => a.id == element.value);\n });\n }\n break;\n case \"deviationseverity\":\n $scope.selectedSeverity = $scope.severities.find(s => s.severity == element.value);\n break;\n case \"list\":\n element.selectedDataListItem = element.datalistelements.find(item => item.id === element.value);\n break;\n }\n }\n }\n\n $scope.toggleShow = function (element) {\n if(element.show == true){\n element.value = null; // Reset default value since a list of options is no available\n }\n }\n\n $scope.selectAsset = function (asset, item) {\n $scope.selectedAsset = asset;\n item.value = asset.id;\n }\n $scope.selectFollowupAsset = function (asset, item) {\n $scope.selectedFollowupAsset = asset;\n item.value = asset.id;\n }\n $scope.selectArea = function (area, item) {\n $scope.selectedArea = area;\n item.value = area.id;\n }\n $scope.selectProject = function (project, item) {\n $scope.selectedProject = project;\n item.value = project.id;\n }\n $scope.selectSeverity = function (severity, item) {\n $scope.selectedSeverity = severity;\n item.value = severity.severity;\n }\n\n $scope.selectListItem = function (selectedDataListItem, item) {\n item.selectedDataListItem = selectedDataListItem;\n item.value = selectedDataListItem.id;\n }\n\n function setDefaultValues(){\n if (!$scope.settings?.registrationsetup) return; // No predefined settings to load\n if($scope.registrationsetup){\n for (var i = 0; i < $scope.registrationsetup.length; i++) {\n setConfigForRegistrationElement($scope.registrationsetup[i]);\n }\n }\n }\n\n $scope.loadDeviationTypes = function(){\n if(!$scope.deviationTypes){ \n deviationService().getAllDeviationTypes().then(function(types) {\n $scope.deviationTypes = types;\n if(!$scope.deviationTypeId){\n if($scope.deviationTypes.length > 0){\n $scope.updateDeviationType($scope.deviationTypes[0]);\n } else {\n $scope.deviationTypeErrorMessage = $translate.instant('DEVIATION_NO_DEVIATION_TYPES');\n }\n } else {\n var type = $filter('filter')($scope.deviationTypes, { id: $scope.deviationTypeId }, true)[0];\n if(type){\n $scope.updateDeviationType(type);\n } \n }\n });\n } else {\n if(!$scope.deviationTypeId){\n if($scope.deviationTypes.length > 0){\n $scope.updateDeviationType($scope.deviationTypes[0]);\n } else {\n $scope.deviationTypeErrorMessage = $translate.instant('DEVIATION_NO_DEVIATION_TYPES');\n }\n }\n }\n }\n\n $scope.updateDeviationType = function (type){\n $scope.registrationsetup = getDefaultConfig();\n $scope.deviationTypeId = type.id;\n $scope.deviationTypeTitle = type.title;\n getDeviationTypeConfiguration();\n };\n\n function init() {\n if ($scope.settings) {\n if($scope.settings.deviationTypeId){\n $scope.deviationTypeId = $scope.settings.deviationTypeId;\n $scope.filters = $scope.settings.filters;\n } \n }\n if(!$scope.filters) {\n $scope.filters = [];\n }\n $scope.loadDeviationTypes();\n \n assetService.getAllAssets(true).then(function (data) {\n $scope.assets = data;\n });\n }\n init();\n\n function loadProjects() {\n if(!$scope.projects || $scope.projects.length == 0){\n projectService().getOngoingProjects().then(function (projects) {\n $scope.projects = projects;\n });\n }\n }\n function loadAreas() {\n if(!$scope.areas || $scope.areas.length == 0){\n areaService().getList().then(function (areas) {\n $scope.areas = areas;\n });\n }\n }\n\n function setCustomList(field){\n if(!field || field.dataListId == null || field.dataListId == undefined) return;\n var listOptions = {includeDeletedItems:false};\n dataListService().getItems(field.dataListId, listOptions).then(function (list) {\n field.datalistelements = list;\n field.sourceColumn = \"customField\" + field.deviationCustomFieldId; \n setConfigForRegistrationElement(field);\n $scope.registrationsetup.splice(field.sortOrder, 0, field);\n });\n }\n\n function checkFields(validFields) {\n if (validFields) {\n var nextSortOrder = $scope.registrationsetup.length\n for (var f = 0; f < validFields.length; f++) {\n validFields[f].sortOrder = nextSortOrder;\n nextSortOrder++;\n switch (validFields[f].type) {\n case \"PROJECT\":\n validFields[f].sourceColumn = \"projectId\";\n $scope.registrationsetup.push(validFields[f]);\n loadProjects();\n break;\n case \"AREA\":\n validFields[f].sourceColumn = \"areaId\";\n $scope.registrationsetup.push(validFields[f]);\n loadAreas();\n break;\n case \"DEVIATION_INCIDENT_TIME\":\n $scope.showTime = true;\n break;\n case \"list\":\n setCustomList(validFields[f]); \n break;\n default:\n if(validFields[f].deviationCustomFieldId) {\n validFields[f].sourceColumn = \"customField\" + validFields[f].deviationCustomFieldId;\n }\n $scope.registrationsetup.splice(validFields[f].sortOrder, 0, validFields[f]);\n break;\n }\n }\n }\n }\n\n function getDeviationTypeConfiguration(){\n if(!$scope.deviationTypeId) return;\n deviationService().getDeviationTypeConfiguration($scope.deviationTypeId).then(function (configuration) {\n $scope.typeconfiguration = configuration;\n checkFields($scope.typeconfiguration.fields);\n $scope.categories = $scope.typeconfiguration.categories;\n $scope.consequences = $scope.typeconfiguration.consequences;\n $scope.problemReasons = $scope.typeconfiguration.causes;\n $scope.registrationsetup.push(\n {label: $translate.instant('COMMON_CATEGORY'),\n sourceColumn: \"problemCategoryId\",\n type: \"problemcategory\",\n isMandatory: true,\n show: true\n });\n if($scope.consequences && $scope.consequences.length >0){\n $scope.registrationsetup.push(\n {label: $translate.instant('DEVIATION_CONSEQUENCE'),\n sourceColumn: \"lossTypeId\",\n type: \"consequence\",\n isMandatory: false,\n show: false\n });\n }\n $scope.registrationsetup.push(\n {label: $translate.instant('DEVIATION_SEVERITY'),\n sourceColumn: \"severity\",\n type: \"deviationseverity\",\n isMandatory: false,\n show: true,\n value: \"\"\n });\n if($scope.problemReasons && $scope.problemReasons.length >0){\n $scope.registrationsetup.push(\n {label: $translate.instant('DEVIATION_CAUSE'),\n sourceColumn: \"problemReasonId\",\n type: \"problemreason\",\n isMandatory: false,\n show: false\n });\n } \n setDefaultValues(); \n });\n }\n\n function isInputOk(){\n $scope.targetMissing = false;\n if($scope.registrationsetup){\n for (var i = 0; i < $scope.registrationsetup.length; i++) {\n const hasFilterValues = $scope.filters.find(l => l.sourceColumn == $scope.registrationsetup[i].sourceColumn)\n if($scope.registrationsetup[i].isMandatory){\n if(!$scope.registrationsetup[i].show && !hasFilterValues && !$scope.registrationsetup[i].value){\n $scope.targetMissing = true;\n $scope.registrationsetup[i].dataMissing = true;\n } else {\n $scope.registrationsetup[i].dataMissing = false;\n }\n }\n }\n }\n if(!$scope.deviationTypeId || $scope.targetMissing){\n return false;\n } else {\n return true;\n }\n }\n\n function isCustomField(sourceColumn) {\n if (sourceColumn.length >= 12) {\n if (sourceColumn.substring(0,11) == \"customField\") return true;\n }\n }\n\n function getCustomFieldId(sourceColumn) {\n return sourceColumn.substring(12, (sourceColumn.length + 1))\n }\n\n $scope.updateFilter = function (updatedSourceColumn, filters) {\n var hasFilter = $filter('filter')($scope.filters, { sourceColumn: updatedSourceColumn });\n // Remove existing filter connected to sourceColumn\n if (hasFilter && hasFilter.length > 0) {\n // Remove existing filter\n angular.forEach(hasFilter, function (filter, key) {\n var index = $scope.filters.indexOf(hasFilter[key]);\n $scope.filters.splice(index, 1);\n });\n }\n angular.forEach(filters, function (filter) {\n if (filter) {\n if($scope.filters === undefined){\n $scope.filters = [];\n }\n // Custom field check\n if (isCustomField(updatedSourceColumn)) {\n var customFieldId = getCustomFieldId(updatedSourceColumn);\n filter.customFieldId = customFieldId;\n }\n $scope.filters.push(filter);\n }\n });\n };\n\n function setCategoryDefaultValues(){\n const categoryregistrationsetup = $scope.registrationsetup.find(l => l.sourceColumn == \"problemCategoryId\");\n if(categoryregistrationsetup){\n if(!categoryregistrationsetup.show){ //if category is not shown then all filtered categories are default values. Note that deviation supports multiple categories\n categoryregistrationsetup.value = $scope.filters.find(l => l.sourceColumn == \"problemCategoryId\").items; \n }\n }\n }\n\n function setConsequenceDefaultValues(){\n const consequenceregistrationsetup = $scope.registrationsetup.find(l => l.sourceColumn == \"lossTypeId\");\n if(consequenceregistrationsetup){\n if(!consequenceregistrationsetup.show){ //if consequence/losstype is not shown then all filtered values are default values. Note that deviation supports multiple consequences\n const hasDefaultValues = $scope.filters.find(l => l.sourceColumn == \"lossTypeId\");\n if(hasDefaultValues){\n consequenceregistrationsetup.value = hasDefaultValues.items; \n } \n }\n }\n }\n\n function setProblemReasoneDefaultValues(){\n const problemreasonregistrationsetup = $scope.registrationsetup.find(l => l.sourceColumn == \"problemReasonId\");\n if(problemreasonregistrationsetup){\n if(!problemreasonregistrationsetup.show){ //if problemreason is not shown then all filtered values are default values. Note that deviation supports multiple values\n const hasDefaultValues = $scope.filters.find(l => l.sourceColumn == \"problemReasonId\");\n if(hasDefaultValues){\n problemreasonregistrationsetup.value = hasDefaultValues.items; \n } \n }\n }\n }\n\n $scope.ok = function () {\n if(isInputOk()){\n if(!$scope.settings){\n $scope.settings = {};\n }\n if($scope.deviationTypeId){\n setCategoryDefaultValues();\n setConsequenceDefaultValues();\n setProblemReasoneDefaultValues();\n $scope.settings.deviationTypeId = $scope.deviationTypeId;\n $scope.settings.registrationsetup = $scope.registrationsetup;\n } else {\n $scope.settings.deviationTypeId = null;\n }\n $scope.settings.filters = $scope.filters;\n \n $uibModalInstance.close($scope.settings);\n }\n };\n\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n\n }]);","import * as documentService from \"@common/services/documentService\"\n\nangular\n .module('DigiLean')\n .component(\"messageAttachment\", {\n templateUrl: 'messageAttachment.html',\n bindings: {\n msg: '<',\n options: '<'\n },\n controller: ['$state',\n function ($state) {\n const $ctrl = this\n $ctrl.showMetaInfo = true;\n\n $ctrl.$onInit = function () {\n if($ctrl.options){\n $ctrl.showMetaInfo = $ctrl.options.showMetaInfo;\n }\n if($ctrl.msg && $ctrl.msg.attachments.length == 1){\n switch ($ctrl.msg.attachments[0].fileInfo.fileExtension) {\n case '.pdf':\n setPdfSasUrl();\n default:\n return null;\n } \n } \n }\n\n $ctrl.$onChanges = function (changes) {\n if (changes.options) {\n $ctrl.showMetaInfo = changes.options.currentValue.showMetaInfo;\n }\n }\n \n\n $ctrl.zoomOptionChanged = function($event) {\n const option = $event.detail;\n $ctrl.pdfZoomOption = option\n }\n\n \n async function setPdfSasUrl () {\n const fileInfo= $ctrl.msg.attachments[0].fileInfo;\n documentService.getFileUrl(fileInfo.fileName, fileInfo.id).then(function(sasUrl) {\n $ctrl.pdfSasUrl = sasUrl\n })\n \n $ctrl.pdfZoomOption = \"pageFit\"\n }\n\n }]\n })","import * as boardService from \"@common/services/boardService\"\n// Controller for the actual modal\nvar DigiLean = angular.module('DigiLean');\nDigiLean.controller('newboardtemplateController', ['$scope', '$uibModalInstance', 'board',\n function ($scope, $uibModalInstance, board) {\n $scope.title = board.name;\n $scope.description = board.description;\n\n $scope.includeTasks = false;\n $scope.canIncludeTasks = false;\n if (board.boardType && (board.boardType == \"SmartActionList\" || board.boardType == \"Kanban\" || board.boardType == \"Yearly\")) {\n $scope.includeTasks = true;\n $scope.canIncludeTasks = true;\n }\n $scope.isProcessing = false;\n $scope.ok = function () {\n $scope.isProcessing = true;\n var options = {\n name: $scope.title,\n description: $scope.description,\n includeTasks: $scope.includeTasks\n };\n boardService.createTemplate(board.id, options).then(function (template) {\n $scope.isProcessing = false;\n $scope.publish(\"SendBoardTemplateCreated\", template);\n $uibModalInstance.close(template);\n });\n };\n\n $scope.toggleIncludeTasks = function (include) {\n $scope.includeTasks = include;\n };\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n }]);","import * as customerService from \"@common/services/customers/customerService\"\nimport * as assetService from \"@common/services/assetService\"\nimport * as timeService from \"@common/services/timeService\"\nimport * as employeeService from \"@common/services/employeeService\"\n\nangular\n.module('DigiLean')\n.directive(\"assetMessage\", ['$filter', '$translate', 'modalService',\n function ($filter, $translate, modalService) {\n return {\n templateUrl: 'assetMessage.html',\n restrict: 'E',\n scope: {\n 'assetid': '=',\n 'startdate': '=',\n 'enddate': '='\n },\n controller: ['$scope', '$uibModal', function($scope, $uibModal) {\n \n $scope.hasComments = function(msg) {\n return msg.replies && Array.isArray(msg.replies) && msg.replies.length > 0;\n };\n $scope.openReplies = function(msg) {\n $uibModal.open({ backdrop: 'static',\n component: 'messageRepliesDialog',\n resolve: {\n msg: function () {\n return msg;\n }\n }\n });\n };\n $scope.subscribe(\"MessageReplySent\", function(r) {\n for(var i=0; i<$scope.messages.length; i++) {\n var msg = $scope.messages[i];\n if (r.parentId == msg.id) {\n timeService.addTimeElapsedForMsg(r);\n if(!msg.replies){\n msg.replies = [];\n }\n msg.replies.unshift(r);\n }\n }\n });\n }],\n link: function (scope, element, attrs) {\n scope.messages = [];\n\n scope.messageText = \"\";\n scope.showNewMessage = false;\n scope.isLoading = true;\n scope.isMember = false;\n\n scope.$watch('assetid', function(assetId) {\n if (assetId) {\n employeeService.getMembership(scope.assetid).then(function(userAsset) {\n if (userAsset && (userAsset.assetRole == \"Member\" || userAsset.assetRole == \"Owner\")) {\n scope.isMember = true;\n }\n })\n }\n });\n\n scope.showAddMessage = function() {\n scope.showNewMessage = true;\n };\n\n scope.toggleMessageEdit = function(message) {\n message.edit = !message.edit;\n };\n\n scope.delete = function (message) {\n var modalOptions = {\n closeButtonText: $translate.instant(\"COMMON_CANCEL\"),\n actionButtonText: $translate.instant(\"COMMON_DELETE\"),\n headerText: $translate.instant(\"COMMON_DELETE\") + \": \"+ message.title + \"?\",\n bodyText: $translate.instant(\"COMMON_DELETE_ITEM_DESCRIPTION\"),\n };\n\n modalService.showModal({}, modalOptions).then(function (result) {\n customerService.deleteMessage(message.id).then(function () {\n\n });\n });\n\n };\n \n scope.updateMessage = function(message) {\n message.edit = false;\n customerService.updateMessage(message).then(function () {\n \n });\n };\n\n scope.addMessage = function() {\n assetService.getById(scope.assetid).then(function (asset) {\n \n var msgtitle = $translate.instant('BOARD_POSITIVE_MESSAGE') + \" - \" + asset.name;\n var time = new Date();\n if (scope.enddate && moment(time).isBefore(scope.startdate) ||\n moment(time).isAfter(scope.enddate)){\n time = scope.enddate;\n }\n var newmessage = {\n title: msgtitle,\n text: scope.messageText,\n assetId: scope.assetid,\n sendTime: time\n }\n scope.showNewMessage = false;\n scope.isLoading = true;\n customerService.sendBoardMessage(newmessage).then(function(message){\n scope.messageText = \"\";\n scope.isLoading = false;\n //scope.messages.unshift(message);\n });\n });\n \n };\n scope.$watch('assetid', function (assetid) {\n if (!assetid) return;\n var timePeriod = \n {\n from:scope.startdate,\n to:scope.enddate\n }\n if(!scope.startdate || !scope.enddate){\n timePeriod = timeService.getTimePeriod('30');\n }\n \n customerService.getMessagesByAsset(scope.assetid, timePeriod).then(function (result) {\n scope.messages = result;\n scope.isLoading = false;\n scope.messages.forEach(message => {\n message.replies = [];\n customerService.getReplies(message.id).then(function(replies) {\n message.replies = replies;\n });\n // replace linebreaks\n message.text = message.text.replace(/\\r\\n|\\r|\\n/g, \"
      \");\n message.edit = false;\n }); \n });\n });\n\n \n\n scope.subscribe(\"MessageSent\", function (message) {\n if (message.assetId === scope.assetid) {\n message.edit = false;\n scope.messages.unshift(message); \n }\n });\n\n scope.subscribe('MessageChanged', function (message) {\n\n var msg = $filter('filter')(scope.messages, { id: message.id });\n if (msg.length > 0) {\n scope.$apply(function () {\n var index = scope.messages.indexOf(msg[0]);\n if (index > -1) {\n message.edit = false;\n scope.messages[index] = message;\n }\n });\n }\n });\n \n scope.subscribe('MessageDeleted', function (message) {\n\n var msg = $filter('filter')(scope.messages, { id: message.id });\n if (msg.length > 0) {\n scope.$apply(function () {\n var index = scope.messages.indexOf(msg[0]);\n if (index > -1) {\n scope.messages.splice(index, 1);\n }\n });\n }\n });\n\n }\n };\n }]);\n","import * as timeService from \"@common/services/timeService\"\nimport * as boardService from \"@common/services/boardService\"\n\n// Controller for the actual modal\nvar DigiLean = angular.module('DigiLean');\nDigiLean.controller('newBoardFromTemplateController', ['$scope', '$uibModalInstance', \n function ($scope, $uibModalInstance) {\n $scope.selectedTemplate = null;\n $scope.templates = [];\n \n // Default week\n $scope.weekYear = moment().isoWeekYear();\n $scope.weekNumber = moment().isoWeek();\n $scope.week = timeService.getCurrentWeek($scope.weekNumber, $scope.weekYear);\n $scope.translationData = {\n weekNumber: $scope.weekNumber\n };\n // Load templates\n boardService.getTemplates().then(function (templates) {\n $scope.templates = templates;\n // parse style\n angular.forEach(templates, function (template) {\n\n if (template.template.settings) {\n var settings = JSON.parse(template.template.settings);\n template.isWeeklyBoard = settings.IsWeeklyBoard;\n } else {\n template.isWeeklyBoard = false;\n }\n parseStyle(template);\n });\n if (templates.length > 0) {\n $scope.selectedTemplate = templates[0];\n }\n });\n\n function parseStyle(template) {\n angular.forEach(template.columns, function (col) {\n col.style = {\n \"background\": col.categoryStyle.backgroundColor,\n \"color\": col.categoryStyle.foregroundColor\n }\n });\n angular.forEach(template.rows, function (row) {\n row.style = {\n \"background\": row.categoryStyle.backgroundColor,\n \"color\": row.categoryStyle.foregroundColor\n }\n });\n }\n\n $scope.selectedTemplateChanged = function (template) {\n $scope.selectedTemplate = template;\n }\n\n $scope.ok = function () {\n $uibModalInstance.close($scope.selectedTemplate);\n }\n\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n }]);","import * as boardService from \"@common/services/boardService\"\nimport toaster from \"@common/components/toast\"\nimport envConfig from \"@common/envConfig\"\n\nvar DigiLean = angular.module('DigiLean');\nDigiLean.controller('boardDesignerController', ['$scope', '$stateParams', '$filter', '$translate', '$uibModal', 'modalService',\n function ($scope, $stateParams, $filter, $translate, $uibModal, modalService) {\n $scope.boardId = parseInt($stateParams.id);\n $scope.board = null;\n $scope.canEditMembers = false;\n $scope.isPublic = false;\n $scope.isKamishibai = false;\n $scope.refreshUserList = false;\n $scope.new = \"New\";\n\n $translate('COMMON_NEW').then(function (translated) {\n $scope.new = translated;\n });\n\n boardService.get($scope.boardId).then(function (board) {\n angular.forEach(board.columns, function (col) {\n col.style = {\n \"background\": col.categoryStyle.backgroundColor,\n \"color\": col.categoryStyle.foregroundColor\n }\n if (col.weekdayName) {\n col.isWeekday = true;\n } else {\n col.isWeekday = false;\n }\n });\n angular.forEach(board.rows, function (row) {\n row.style = {\n \"background\": row.categoryStyle.backgroundColor,\n \"color\": row.categoryStyle.foregroundColor\n }\n if (row.weekdayName) {\n row.isWeekday = true;\n } else {\n row.isWeekday = false;\n }\n });\n $scope.board = board;\n $scope.isPublic = board.board.isPublic;\n if (board.board.asset && board.board.asset.assetType === 'CUSTOMIZED') {\n $scope.canEditMembers = true;\n }\n if (board.board.settings) {\n $scope.board.board.settings = JSON.parse(board.board.settings);\n $scope.isKamishibai = $scope.board.board.settings.isKamishibai;\n };\n }).finally(() => {\n if (envConfig.isTeamsMode)\n $scope.$apply()\n })\n\n $scope.updateBoard = function () {\n $scope.board.board.isPublic = $scope.isPublic;\n var board = {\n description: $scope.board.board.description,\n isPublic: $scope.isPublic,\n assetId: $scope.board.board.selectedAssetId,\n name: $scope.board.board.name,\n assetId: $scope.board.board.assetId,\n owner: $scope.board.board.owner,\n ownerDisplayName: $scope.board.board.ownerDisplayName,\n ownerUserId: $scope.board.board.ownerUserId\n }\n boardService.update($scope.boardId, board).then(function () {\n $translate('BOARD_UPDATED').then(function (msg) {\n toaster.success(msg);\n });\n });\n }\n\n $scope.updateSettings = function () {\n if (!$scope.board.board.settings) {\n $scope.board.board.settings = {};\n }\n $scope.board.board.settings.isKamishibai = $scope.isKamishibai;\n $scope.board.board.settings = JSON.stringify($scope.board.board.settings);\n boardService.updateSettings($scope.boardid, $scope.board.board.settings).then(function () {\n $translate('BOARD_UPDATED').then(function (msg) {\n toaster.success(msg);\n });\n });\n }\n\n $scope.updateBoardName = function () {\n var boardName = {\n boardId: $scope.boardId,\n name: $scope.board.board.name\n }\n boardService.updateName($scope.boardId, boardName).then(function () {\n $translate('BOARD_UPDATED').then(function (msg) {\n toaster.success(msg);\n });\n });\n }\n\n $scope.columnSortableOptions = {\n clone: false,\n accept: function (sourceItemHandleScope, destSortableScope) {\n // We will only accept items within this scope (columns)\n return sourceItemHandleScope.itemScope.sortableScope.$id === destSortableScope.$id;\n },\n orderChanged: function (event) {\n var sortOrders = [];\n angular.forEach($scope.board.columns, function (col, key) {\n console.log(\"col sortOrder: \" + key + \", name: \" + col.name);\n col.sortOrder = key;\n var sortOrder = { id: col.id, sortOrder: key }\n sortOrders.push(sortOrder);\n });\n boardService.changeSortOrder($scope.boardId, sortOrders).then(function () {\n console.log(\"Saved\");\n });\n }\n };\n\n $scope.rowSortableOptions = {\n clone: false,\n accept: function (sourceItemHandleScope, destSortableScope) {\n return sourceItemHandleScope.itemScope.sortableScope.$id === destSortableScope.$id;\n },\n orderChanged: function (event) {\n var sortOrders = [];\n angular.forEach($scope.board.rows, function (row, key) {\n console.log(\"row sortOrder: \" + key + \", name: \" + row.name);\n row.sortOrder = key;\n var sortOrder = { id: row.id, sortOrder: key }\n sortOrders.push(sortOrder);\n });\n boardService.changeSortOrder($scope.boardId, sortOrders).then(function () {\n console.log(\"Saved\");\n });\n }\n };\n\n var options = {\n hideWeekDayOption: false\n }\n $scope.editCategory = function (category) {\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: $scope.animationsEnabled,\n templateUrl: 'boardCategoryDetails.html',\n controller: 'boardCategoryDetailsController',\n resolve: {\n boardCategory: function () {\n return category;\n },\n options: function () {\n return options;\n }\n }\n });\n\n modalInstance.result.then(function (result) {\n if (result === \"deleted\") {\n removeCategory(category);\n }\n }, function () {\n\n });\n }\n\n $scope.editMembers = function () {\n var assetId = $scope.board.board.assetId;\n var boardId = $scope.board.board.id;\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: $scope.animationsEnabled,\n templateUrl: 'assetparticipantsform.html',\n controller: 'assetParticipantsController',\n windowClass: 'assetparticipants-modal-window',\n resolve: {\n assetId: function () {\n return assetId;\n },\n boardId: function () {\n return boardId;\n }\n }\n });\n\n modalInstance.result.then(function () {\n // Reset boardId to trigger refresh of userlist\n $scope.refreshUserList = true;\n setTimeout(() => {\n // toggle back to false after signal is given.\n $scope.refreshUserList = false;\n }, 3000);\n\n }, function () {\n\n });\n }\n\n\n\n $scope.addColumn = function () {\n var style = \"\";\n if ($scope.board.columns.length > 0) {\n // Copy style from last column\n var lastColumn = $scope.board.columns[$scope.board.columns.length - 1];\n style = lastColumn.style;\n }\n\n var column = {\n boardId: $scope.boardId,\n name: $scope.new,\n isColumnCategory: true,\n sortOrder: $scope.board.columns.length,\n style: style\n }\n column.categoryStyle = JSON.stringify({\n BackgroundColor: style.background,\n ForegroundColor: style.color\n });\n boardService.createCategory($scope.boardId, column).then(function (category) {\n category.style = style;\n $scope.board.columns.push(category);\n $scope.editCategory(category);\n });\n\n }\n\n $scope.addRow = function () {\n var style = \"\";\n if ($scope.board.rows.length > 0) {\n // Copy style from last row\n var lastRow = $scope.board.rows[$scope.board.rows.length - 1];\n style = lastRow.style;\n }\n var row = {\n boardId: $scope.boardId,\n name: $scope.new,\n isRowCategory: true,\n sortOrder: $scope.board.rows.length,\n style: style\n }\n row.categoryStyle = JSON.stringify({\n BackgroundColor: style.background,\n ForegroundColor: style.color\n });\n boardService.createCategory($scope.boardId, row).then(function (category) {\n category.style = style;\n $scope.board.rows.push(category);\n $scope.editCategory(category);\n });\n\n }\n\n\n $scope.switchColumnRow = function () {\n boardService.rotateCategories($scope.boardId).then(function () {\n var temp = $scope.board.columns;\n $scope.board.columns = $scope.board.rows;\n $scope.board.rows = temp;\n });\n }\n\n\n\n $scope.hasValue = function (value) {\n if (value) return true;\n return false;\n }\n\n $scope.deleteCategory = function (category) {\n $translate(['COMMON_CANCEL', 'BOARD_DELETE_CATEGORY', 'COMMON_DELETE', 'BOARD_DELETE_CATEGORY_DESCRIPTION']).then(function (translations) {\n var modalOptions = {\n closeButtonText: translations.COMMON_CANCEL,\n actionButtonText: translations.BOARD_DELETE_CATEGORY,\n headerText: translations.COMMON_DELETE + ' ' + category.name + '?',\n bodyText: translations.BOARD_DELETE_CATEGORY_DESCRIPTION\n };\n\n modalService.showModal({}, modalOptions).then(function (result) {\n boardService.deleteCategory(category.id).then(function (data) {\n removeCategory(category);\n });\n });\n });\n }\n\n var removeCategory = function (category) {\n var col = $filter('filter')($scope.board.columns, { id: category.id }, true);\n if (col.length > 0) {\n var index = $scope.board.columns.indexOf(category);\n $scope.board.columns.splice(index, 1);\n }\n var row = $filter('filter')($scope.board.rows, { id: category.id }, true);\n if (row.length > 0) {\n var rowindex = $scope.board.rows.indexOf(category);\n $scope.board.rows.splice(rowindex, 1);\n }\n }\n }]);","import envConfig from \"@common/envConfig\"\nimport * as boardService from \"@common/services/boardService\"\n\nvar DigiLean = angular.module('DigiLean');\nDigiLean.controller('boardDesignerResolverController', ['$scope', '$stateParams', '$state',\n function ($scope, $stateParams, $state) {\n $scope.boardid = parseInt($stateParams.id);\n $scope.isLoading = true;\n $scope.boardData = null;\n boardService.get($scope.boardid).then(function (boardData) {\n $scope.boardData = boardData;\n \n var board = boardData.board;\n if (board.boardType == \"Project\") {\n $state.go('board', { id: board.id }, { reload: false });\n }\n \n $scope.isLoading = false;\n \n }).finally(() => {\n if (envConfig.isTeamsMode)\n $scope.$apply()\n })\n }]);","import * as boardService from \"@common/services/boardService\"\n\nvar DigiLean = angular.module('DigiLean');\nDigiLean.controller('boardCategoryDetailsController', ['$scope', 'boardCategory','options', '$uibModalInstance', '$uibModal',\nfunction ($scope, boardCategory, options, $uibModalInstance, $uibModal) {\n $scope.style = {\n background: boardCategory.style.background,\n color: boardCategory.style.color\n }\n $scope.name = boardCategory.name;\n $scope.weekdayName = boardCategory.weekdayName;\n $scope.isWeekday = false;\n $scope.options = options;\n\n\n function initialize() {\n if (boardCategory.weekdayName) {\n $scope.isWeekday = true;\n }\n }\n initialize();\n \n $scope.updateWeekdayName = function(weekdayName) {\n $scope.weekdayName = weekdayName;\n }\n\n $scope.toggleIsWeekday = function() {\n $scope.isWeekday = !$scope.isWeekday;\n }\n\n\n $scope.save = function () {\n // set style attributes to categoryStyle!\n boardCategory.name = $scope.name;\n\n if ($scope.isWeekday) {\n boardCategory.weekdayName = $scope.weekdayName;\n boardCategory.isWeekday = true;\n } else {\n boardCategory.weekdayName = \"\";\n boardCategory.isWeekday = false;\n }\n\n boardCategory.style = $scope.style;\n boardCategory.categoryStyle = JSON.stringify({\n BackgroundColor: $scope.style.background,\n ForegroundColor: $scope.style.color\n });\n boardService.updateCategory(boardCategory.id, boardCategory).then(function (category) {\n $uibModalInstance.close(\"updated\");\n });\n }\n\n $scope.delete = function () {\n boardService.deleteCategory(boardCategory.id).then(function (data) {\n $uibModalInstance.close(\"deleted\");\n });\n }\n\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n\n}]);","import { getUserProfile } from \"@common/stores/userStore\"\nimport * as timeService from \"@common/services/timeService\"\nimport * as boardService from \"@common/services/boardService\"\nimport * as employeeService from \"@common/services/employeeService\"\nimport * as profileImageService from \"@common/services/user/profileImageService\"\n\n\nvar DigiLean = angular.module(\"DigiLean\");\nDigiLean.controller('boardTaskController', ['$scope', '$filter', '$uibModalInstance', '$uibModal', '$translate', 'boardTaskService', 'activityService', 'task', 'activeTab', 'taskDrawingService', 'options',\n function ($scope, $filter, $uibModalInstance, $uibModal, $translate, boardTaskService, activityService, task, activeTab, taskDrawingService, options) {\n $scope.task = task;\n if (task.parentId) {\n // load parentInfo\n boardTaskService().getInfo(task.parentId).then(function (taskInfo) {\n $scope.parent = taskInfo;\n });\n }\n $scope.selectedEmployee = {};\n $scope.employees = null;\n var allUsers = null;\n $scope.title = $translate.instant('COMMON_TASK');\n $scope.parentTitle = $translate.instant('COMMON_PARENT_TASK');\n var translatedPersonalBoard = $translate.instant('BOARD_PERSONAL_BOARD');\n $scope.showArchive = false;\n $scope.startdateAvailable = false;\n\n var origionalBoardDate = task.boardDate;\n\n $scope.boardoptions = {\n mandatory: true\n }\n\n \n var personalBoard = {\n name: translatedPersonalBoard,\n id: null,\n boardType: \"PERSONAL\"\n }\n\n $scope.emptyUser = {\n id: '',\n userName: null,\n profileImageUrl: null,\n fullName: null,\n displayName: null\n };\n\n // colors \n $scope.background = \"var(--digilean-secondary-background)\"; //\"#ffffff\"; \n $scope.customColorBackground = \"#A9A9A9\" //\"var(--digilean-greydark-default)\"; //\"#A9A9A9\"\n $scope.postIts = taskDrawingService().getPostIts();\n\n $scope.canChangeBoard = false;\n $scope.boards = [];\n\n $scope.showAddComment = false;\n $scope.isLoadingComments = true;\n const currentUser = getUserProfile()\n $scope.currentUser = currentUser;\n $scope.showAddComment = true;\n $scope.isLoadingComments = false;\n\n if (options) {\n $scope.options = options;\n if ($scope.options == null) return;\n if ($scope.options.archiveAvailable) {\n $scope.archiveAvailable = true;\n }\n if ($scope.options.startdateAvailable) {\n $scope.startdateAvailable = true;\n }\n if ($scope.options.users) {\n $scope.employees = options.users;\n }\n if ($scope.options.postIts) {\n $scope.postIts = $scope.options.postIts;\n setPostitTooltip();\n }\n if (typeof $scope.options.canChangeBoard !== 'undefined') {\n if ($scope.options.canChangeBoard) {\n setCanChangeBoard();\n }\n } else {\n if (task.isActionItem) {\n setCanChangeBoard();\n }\n }\n\n if (!$scope.postIts) {\n $scope.postIts = taskDrawingService().getPostIts();\n }\n if (task.color) {\n $scope.background = task.color;\n $scope.taskBorderStyle = {\n \"border-bottom\": \"6px solid\" + $scope.background\n };\n var predefinedPostIt = $filter('filter')($scope.postIts, { background: $scope.background });\n if (predefinedPostIt.length > 0) {\n setTimeout(function () {\n $scope.selectColor(predefinedPostIt[0]);\n }, 10);\n } else //Custom color \n {\n $scope.selectedPostIt = { title: \"custom\", background: $scope.customColorBackground };\n //$scope.customColorBackground = task.color;\n }\n }\n } else {\n if (task.isActionItem) {\n setCanChangeBoard();\n }\n }\n\n\n if (task.color) {\n $scope.background = task.color;\n var predefinedPostItBackground = $filter('filter')($scope.postIts, { background: $scope.background });\n var predefinedPostItForeground = $filter('filter')($scope.postIts, { fillColor: $scope.background });\n if (predefinedPostItBackground.length > 0) {\n $scope.selectedPostIt = predefinedPostItBackground[0];\n }\n else if (predefinedPostItForeground.length > 0) {\n $scope.selectedPostIt = predefinedPostItForeground[0];\n }\n else //Custom color \n {\n $scope.selectedPostIt = { title: \"custom\", background: $scope.customColorBackground };\n $scope.customColorBackground = task.color;\n }\n }\n\n \n if (task.boardDate) {\n // Make sure boardDate is date object \n task.boardDate = moment(task.boardDate).toDate();\n }\n\n $scope.subscribe('TaskCommentAdded', function (c) {\n if (c.boardTaskId == $scope.task.id) {\n task.commentCount = c.taskCommentCount;\n }\n });\n\n $scope.subscribe('TaskCommentDeleted', function (c) {\n if (c.boardTaskId == $scope.task.id) {\n $scope.task.commentCount = c.taskCommentCount;\n }\n });\n\n $scope.subscribe(\"SubTaskCountChanged\", function (count) {\n if (count.taskId == $scope.task.id || count.taskId == $scope.task.siblingId) {\n $scope.task.subTaskCount = count.subTaskCount;\n $scope.task.subTaskCompletedCount = count.subTaskCompletedCount;\n }\n });\n\n $scope.subscribe('TaskChangedBoard', function (change) {\n if(change.taskId == $scope.task.id ){\n $scope.task.boardId = change.toBoardId;\n setBoard(true);\n } \n });\n\n\n $scope.canEdit = false;\n // Chceck if user is allowed to edit task\n boardTaskService().canEdit(task.id).then(function (canEdit) {\n $scope.canEdit = canEdit;\n });\n\n function setPostitTooltip() {\n $scope.postIts.forEach(color => {\n if (color.tags && color.tags.length > 0) {\n color.tooltip = getTagsDescription(color);\n } else {\n color.tooltip = \"\";\n }\n });\n }\n function getTagsDescription(postIt) {\n var tooltip = \"\";\n if (postIt.tags) {\n for (var i = 0; i < postIt.tags.length; i++) {\n if (i > 0) {\n tooltip = tooltip.concat(', ');\n }\n tooltip = tooltip.concat(postIt.tags[i]);\n }\n }\n return tooltip;\n }\n\n employeeService.getList().then(function (data) {\n allUsers = data;\n \n if ($scope.task && $scope.task.responsibleUserId) {\n // Use false on filter, because sometimes responsibleUserId varies between uppercase and lowercase.\n $scope.task.user = $filter('filter')(allUsers, { userId: $scope.task.responsibleUserId }, false)[0];\n profileImageService.getProfileImageUrl($scope.task.user.id, \"ExtraSmall\").then(function (url) \n {\n $scope.task.user.profileImageUrl = url;\n });\n }\n });\n\n\n function setCanChangeBoard() {\n $scope.canChangeBoard = true;\n if ($scope.boards.length == 0) {\n getMemberBoards();\n }\n }\n\n function setBoard(getUsersForBoard) {\n if (task.boardId) {\n $scope.selectedBoard = $filter('filter')($scope.boards, { id: task.boardId })[0];\n $scope.task.board = $scope.selectedBoard; //this is used to prevent subtask from smartactionlist to be placed in the same board as parent (see subTaskList)\n if (getUsersForBoard) {\n boardService.getUserListForBoard(task.boardId).then(function (data) {\n angular.forEach(data, function (employee, key) {\n employee.fullName = employee.firstName + \" \" + employee.lastName;\n });\n $scope.employees = data;\n });\n }\n } else {\n $scope.selectedBoard = personalBoard;\n if (allUsers) {\n $scope.employees = allUsers;\n } else {\n employeeService.getList().then(function (data) {\n $scope.employees = data;\n });\n }\n\n }\n }\n\n function getMemberBoards() {\n boardService.getMemberBoards().then(function (data) {\n $scope.boards = data;\n $scope.boards.unshift(personalBoard);\n var getUsersForBoard = !$scope.employees; // If we have not yet loaded users, we need to load them when board is selected.\n setBoard(getUsersForBoard);\n });\n }\n\n \n function checkDate() {\n $scope.enddateBeforeStartdate = false;\n if (moment($scope.task.boardDate).isBefore($scope.task.startTime)) {\n // Validation kicks in but need to verify if startvalidation should be used \n if ($scope.startdateAvailable) {\n $scope.enddateBeforeStartdate = true;\n } else { // if we are not using start date, we need to keep it in sync\n $scope.task.startTime = $scope.task.boardDate\n }\n }\n }\n $scope.descriptionChanged = function (content) {\n $scope.task.text = content;\n }\n $scope.updateResponsible = function (newResponsible) {\n newResponsible.userDisplayName = newResponsible.displayName;\n $scope.task.responsibleUserId = newResponsible.id;\n $scope.task.responsibleUser = newResponsible.fullName;\n $scope.task.responsibleDisplayName = newResponsible.displayName;\n newResponsible.userName = newResponsible.fullName;\n $scope.task.user = newResponsible;\n\n changedResponsible = true;\n };\n\n $scope.selectColor = function (postIt) {\n $scope.selectedPostIt = postIt;\n $scope.background = postIt.background;\n if (postIt.tags) {\n setTimeout(function () {\n $(\"#taskTags\").tagit({\n // This will make Tag-it submit a single form value, as a comma-delimited field.\n singleField: true,\n singleFieldNode: $('#tagsSelected')\n });\n var tagArray = postIt.tags;\n for (var i = 0; i < tagArray.length; i++) {\n $(\"#taskTags\").tagit('createTag', tagArray[i]);\n }\n }, 10);\n }\n }\n $scope.selectCustomColor = function (color) {\n $scope.selectedPostIt = { title: \"custom\", background: color };\n $scope.background = color;\n }\n\n $scope.task = task;\n if ($scope.task.startTime) {\n // Make sure boardDate is date object \n $scope.task.startTime = moment($scope.task.startTime).toDate();\n }\n $scope.comments = [];\n $scope.activityLog = [];\n $scope.isProcessing = false;\n\n // Change flags\n $scope.changedDescription = false;\n $scope.changedTags = false;\n $scope.changedDueDate = false;\n $scope.changedResponsible = false;\n $scope.hasAddedComments = false;\n $scope.changedStatus = false;\n var changedBoard = false;\n var changedResponsible = false;\n $scope.changedStartDate = false;\n\n // Support for lazy loading to avoid eager call of tabs not yet selected:\n $scope.showSubTasks = false;\n\n var tabs = [\"Info\", \"SubTasks\", \"Comments\", \"Attachments\", \"History\"];\n $scope.indexTab = tabs.indexOf(activeTab);\n if(activeTab == 'SubTasks') {\n $scope.showSubTasks = true;\n }\n $scope.selectTab = function (tab) {\n $scope.indexTab = tabs.indexOf(tab);\n if (tab == 'Comments' && !$scope.employees) {\n if (allUsers) {\n $scope.employees = allUsers;\n } else {\n employeeService.getList().then(function (data) {\n $scope.employees = data;\n });\n }\n }\n if (tab == 'SubTasks') {\n $scope.showSubTasks = true;\n }\n }\n\n // Init tags and focus\n setTimeout(function () {\n\n $(\"#taskTags\").tagit({\n // This will make Tag-it submit a single form value, as a comma-delimited field.\n singleField: true,\n singleFieldNode: $('#tagsSelected')\n });\n if ($scope.task.tags) {\n var tagArray;\n if (typeof stringValue === \"string\") {\n tagArray = $scope.task.tags.split(\",\");\n for (var i = 0; i < tagArray.length; i++) {\n $(\"#taskTags\").tagit('createTag', tagArray[i]);\n }\n } else {\n tagArray = $scope.task.tags;\n for (var i = 0; i < tagArray.length; i++) {\n $(\"#taskTags\").tagit('createTag', tagArray[i].tag);\n }\n }\n }\n }, 50);\n\n\n // File upload\n $scope.uploadedFiles = []; // For uploading new attachments, will be connected to dropzone.\n $scope.fileUploaded = function (file) {\n boardTaskService().addAttachment($scope.task.id, file).then(function (attachment) {\n attachment.cssState = \"animated slideInDown\";\n setTimeout(function () {\n attachment.cssState = \"\";\n }, 500);\n $scope.attachments.push(attachment);\n // Send event\n $scope.publish(\"SendTaskAttachmentAdded\", attachment);\n });\n };\n $scope.deleteAttachment = function (attachment) {\n boardTaskService().deleteAttachment($scope.task.id, attachment.id).then(function (deleted) {\n // Send event\n attachment.cssState = \"animated slideOutLeft\";\n setTimeout(function () {\n var index = $scope.task.attachments.indexOf(attachment);\n $scope.attachments.splice(index, 1);\n }, 500);\n $scope.publish(\"SendTaskAttachmentDeleted\", attachment);\n });\n };\n // Attachments\n $scope.attachments = [];\n var getAttachments = function () {\n boardTaskService().getAttachments($scope.task.id).then(function (attachments) {\n $scope.attachments = attachments;\n });\n }\n getAttachments(); \n\n // History\n var getActivityLog = function () {\n var activityRequest = {\n activity: \"BoardTask\",\n activityId: $scope.task.id\n };\n var $translate = $filter('translate');\n var translateOptions = {\n month: $translate('COMMON_TIMEELAPSED_MONTH'),\n days: $translate('COMMON_TIMEELAPSED_DAYS'),\n hours: $translate('COMMON_TIMEELAPSED_HOURS'),\n mins: $translate('COMMON_TIMEELAPSED_MINUTES'),\n seconds: $translate('COMMON_TIMEELAPSED_SECONDS'),\n now: $translate('COMMON_TIMEELAPSED_NOW')\n };\n activityService().getLogForActivity(activityRequest).then(function (logItems) {\n logItems.forEach(function (activity) {\n activity.occured = timeService.getTimeElapsed(activity.activityDate, translateOptions);\n if (activity.payLoad && typeof activity.payLoad === \"string\") {\n activity.payLoad = JSON.parse(activity.payLoad); // Payload gives the whole object, in this case the Task.\n }\n });\n $scope.activityLog = logItems;\n\n });\n };\n getActivityLog();\n\n // Get Comments\n var getComments = function () {\n boardTaskService().getCommentWithReplies($scope.task.id).then(function (taskComments) {\n $scope.total = taskComments.total;\n $scope.comments = taskComments.comments;\n });\n };\n getComments();\n\n $scope.deleteComment = function (comment) {\n boardTaskService().deleteComment($scope.task.id, comment.id).then(function (deleted) {\n // Send event\n comment.cssState = \"animated slideOutLeft\";\n setTimeout(function () {\n var index = $scope.comments.indexOf(comment);\n $scope.comments.splice(index, 1);\n }, 500);\n $scope.task.commentCount = deleted.taskCommentCount;\n //$scope.publish(\"SendTaskCommentDeleted\", comment);\n });\n };\n\n\n var resetChangeFlags = function () {\n $scope.changedDescription = false;\n $scope.changedTags = false;\n $scope.changedDueDate = false;\n $scope.changedResponsible = false;\n $scope.hasAddedComments = false;\n $scope.changedStatus = false;\n changedBoard = false;\n changedResponsible = false;\n $scope.changedStartDate = false;\n };\n\n $scope.activeComment = \"\";\n $scope.activeCommentChanged = function (value) {\n $scope.hasAddedComments = true;\n $scope.activeComment = value;\n }\n\n var getTags = function () {\n\n var tagSingleString = $(\"#tagsSelected\").val();\n var tagsArray = tagSingleString.split(\",\");\n var tags = [];\n for (var i = 0; i < tagsArray.length; i++) { // Hide all \n tags.push({\n Id: 0,\n Tag: tagsArray[i],\n BoardTaskId: 0\n });\n }\n return tags;\n }\n\n $scope.boardDateChanged = function (event) {\n const orgEvt = event.originalEvent\n const boardDate = orgEvt.detail\n $scope.task.boardDate = boardDate\n $scope.changedDueDate = true\n checkDate()\n }\n\n $scope.boardChanged = function (newBoard) {\n $scope.selectedBoard = newBoard;\n changedBoard = true;\n\n }\n function updateSubTaskDueDate(task, days) {\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'moveSubTask.html',\n controller: 'moveSubTaskController',\n resolve: {\n parenttask: function () {\n return task;\n },\n days: function () {\n return days;\n }\n }\n });\n\n modalInstance.result.then(function (result) {\n }, function () {\n });\n }\n\n $scope.updateBoardDate = function () {\n boardTaskService().updateDate(task.id, task.boardDate).then(function (taskMoved) {\n if (origionalBoardDate && task.subTaskCount > 0 && task.subTaskCount > task.subTaskCompletedCount) {\n var changedDuration = timeService.getDurationInDays(origionalBoardDate, task.boardDate);\n if (changedDuration != 0) {\n updateSubTaskDueDate(task, changedDuration);\n }\n }\n });\n }\n\n $scope.startTimeUpdated = function (event) {\n const orgEvt = event.originalEvent\n const startDate = orgEvt.detail\n $scope.task.startTime = startDate\n $scope.changedStartDate = true\n checkDate()\n }\n\n function updateStartDate() {\n boardTaskService().updateStartDate($scope.task.id, $scope.task.startTime).then(function () {\n });\n }\n\n $scope.setStatus = function (status) {\n $scope.task.status = status;\n $scope.changedStatus = true;\n };\n\n $scope.addComment = function (comment) {\n return $scope.saveComment(comment).then(function (savedComment) {\n $scope.comments.push(savedComment);\n });\n };\n\n $scope.saveComment = function (comment) {\n comment.boardTaskId = $scope.task.id;\n return boardTaskService().addComment(comment);\n };\n $scope.deleteComment = function (comment) {\n return boardTaskService().deleteComment(task.id, comment.id);\n };\n // save\n $scope.ok = function () {\n $scope.isProcessing = true;\n $scope.task.tags = getTags();\n $scope.task.color = $scope.background;\n $scope.task.attachmentCount = $scope.attachments.length;\n\n if (changedResponsible) {\n var responsible = {\n taskId: $scope.task.id,\n user: $scope.task.user\n };\n\n boardTaskService().assignUser(responsible)\n }\n\n if ($scope.changedStatus) {\n var taskStatus = { taskId: task.id, status: task.status }\n\n boardTaskService().updateStatus($scope.task.id, taskStatus)\n }\n\n boardTaskService().updateTask($scope.task).then(function (taskIds) {\n if (changedBoard) {\n changeBoard();\n }\n if ($scope.changedDueDate) {\n $scope.updateBoardDate();\n }\n\n if ($scope.changedStartDate) {\n updateStartDate();\n }\n $uibModalInstance.close(task);\n resetChangeFlags();\n });\n\n\n };\n\n function changeBoard() {\n if ($scope.task.boardId !== $scope.selectedBoard.id) {\n var change = {\n taskId: $scope.task.id,\n fromBoardId: $scope.task.boardId,\n toBoardId: $scope.selectedBoard.id\n };\n\n $scope.task.boardId = $scope.selectedBoard.id;\n if ($scope.selectedBoard.id) {\n boardTaskService().moveTaskToActionItem($scope.task).then(function (result) {\n $scope.publish(\"SendTaskChangedBoard\", change);\n });\n } else {\n boardTaskService().moveTaskToPersonalBoard($scope.task.id).then(function (result) {\n $scope.publish(\"SendTaskChangedBoard\", change);\n });\n }\n }\n }\n\n $scope.archive = function () {\n boardTaskService().moveTaskToArchive($scope.task.id).then(function (result) {\n $uibModalInstance.close($scope.task);\n });\n }\n\n $scope.unarchive = function () {\n boardTaskService().moveTaskFromArchive($scope.task.id).then(function (result) {\n $uibModalInstance.close($scope.task);\n });\n }\n\n\n $scope.delete = function () {\n var taskId = $scope.task.id;\n var repeatParentId = $scope.task.repeatParentId;\n var siblingId = $scope.task.siblingId;\n\n if (!repeatParentId && !siblingId) {\n boardTaskService().deleteTask(taskId).then(function () {\n });\n var container = $(\".actioncontainer .dropdown\");\n container.removeClass(\"open\");\n $uibModalInstance.close($scope.task);\n return;\n }\n\n if (repeatParentId) {\n\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'repeatdelete.html',\n controller: 'repeatdeleteController',\n windowClass: 'newdeviation-modal-window',\n resolve: {\n taskId: function () {\n return taskId;\n },\n repeatParentId: function () {\n return repeatParentId;\n }\n }\n });\n modalInstance.result.then(function (result) {\n $uibModalInstance.close($scope.task);\n });\n }\n\n if (siblingId) {\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'clonedelete.html',\n controller: 'clonedeleteController',\n windowClass: 'newdeviation-modal-window',\n resolve: {\n taskId: function () {\n return taskId;\n },\n siblingId: function () {\n return siblingId;\n }\n }\n });\n modalInstance.result.then(function (result) {\n $uibModalInstance.close($scope.task);\n });\n }\n }\n\n $scope.openParentTask = function () {\n boardTaskService().get(task.parentId).then(function (task) {\n $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'boardTask.html',\n controller: 'boardTaskController',\n resolve: {\n task: function () {\n return task;\n },\n activeTab: function () {\n return \"Info\";\n },\n options: function () {\n var options = {\n archiveAvailable: false,\n }\n return options;\n }\n }\n });\n });\n }\n\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n }]);","import * as boardService from \"@common/services/boardService\"\nimport { getUserProfile } from \"@common/stores/userStore\"\nvar DigiLean = angular.module('DigiLean'); \nDigiLean.controller('newBoardTaskController', ['$scope', '$filter', '$uibModalInstance', '$translate','boardTaskService', 'task', 'options', 'taskDrawingService',\n function ($scope, $filter, $uibModalInstance, $translate, boardTaskService, task, options, taskDrawingService) {\n $scope.task = task;\n $scope.subTasks = [];\n $scope.uploadedFiles = [];\n $scope.users = [];\n\n $scope.isProcessing = false;\n $scope.showDueDate = false;\n $scope.boardoptions = {\n mandatory: true\n }\n \n\n $scope.background = \"var(--digilean-secondary-background)\"; //\"#ffffff\";\n $scope.customColorBackground = \"#a9a9a9\";\n\n \n $scope.selectUser = function (user) {\n\n $scope.task.responsibleImageUrl = user.profileImageUrl;\n $scope.task.responsibleUserId = user.userId;\n $scope.task.responsibleUser = user.fullName;\n $scope.task.responsibleDisplayName = user.displayName;\n if(user.userId == ''){\n $scope.task.user = null; \n } else {\n $scope.task.user = user;\n }\n }\n\n \n if (task.boardDate) {\n // Make sure boardDate is date object \n task.boardDate = moment(task.boardDate).toDate();\n }\n \n if (options) {\n $scope.options = options;\n if ($scope.options == null) return;\n if ($scope.options.showDueDate) {\n $scope.showDueDate = true;\n }\n if ($scope.options.users) {\n $scope.users = $scope.options.users;\n }\n if ($scope.options.postIts) {\n $scope.postIts = $scope.options.postIts;\n setPostitTooltip();\n }\n if ($scope.options.canChangeBoard) {\n $scope.canChangeBoard = true;\n getBoards();\n }\n if ($scope.options.selectedUser) {\n $scope.selectUser($scope.options.selectedUser);\n } \n \n if(!$scope.postIts || $scope.postIts.length == 0){\n $scope.postIts = taskDrawingService().getPostIts();\n }\n if (task.color) {\n $scope.background = task.color;\n $scope.taskBorderStyle = {\n \"border-bottom\" : borderStyle + $scope.background\n }\n var predefinedPostIt = $filter('filter')($scope.postIts, { background: $scope.background });\n if(predefinedPostIt.length > 0){\n setTimeout(function () {\n $scope.selectColor(predefinedPostIt[0]);\n }, 10);\n } else //Custom color \n {\n $scope.selectedPostIt = {title:\"custom\", background: $scope.customColorBackground};\n //$scope.customColorBackground = task.color;\n }\n }\n };\n \n $scope.emptyUser = {\n id: '',\n userName: null,\n profileImageUrl: null,\n fullName: null,\n displayName: null\n }\n \n $scope.descriptionChanged = function (content) {\n $scope.task.text = content;\n }\n \n // colors\n var borderStyle = \"6px solid\";\n $scope.taskBorderStyle = {\n \"border-bottom\" : borderStyle + \"#ffffff\"\n }\n $scope.selectColor = function (postIt) {\n $scope.selectedPostIt = postIt;\n $scope.background = postIt.background;\n $scope.taskBorderStyle = {\n \"border-bottom\" : borderStyle + $scope.background\n }\n if(postIt.tags){\n setTimeout(function () {\n $(\"#taskTags\").tagit({\n // This will make Tag-it submit a single form value, as a comma-delimited field.\n singleField: true,\n singleFieldNode: $('#tagsSelected')\n });\n var tagArray = postIt.tags;\n for (var i = 0; i < tagArray.length; i++) {\n $(\"#taskTags\").tagit('createTag', tagArray[i]);\n }\n }, 10);\n }\n }\n\n function setPostitTooltip(){\n $scope.postIts.forEach(color => {\n if(color.tags && color.tags.length >0){\n color.tooltip = getTagsDescription(color);\n } else {\n color.tooltip = \"\";\n }\n }); \n }\n function getTagsDescription(postIt){\n var tooltip = \"\";\n if(postIt.tags){\n for (var i = 0; i < postIt.tags.length; i++) {\n if(i>0){\n tooltip = tooltip.concat(', ');\n }\n tooltip = tooltip.concat(postIt.tags[i]);\n }\n }\n return tooltip;\n }\n $scope.getUserProfile = function () {\n const currentUser = getUserProfile()\n $scope.selectedEmployee = currentUser;\n $scope.selectUser(currentUser);\n }\n \n function getBoards(){\n if($scope.boards) return;\n boardService.getMemberBoards().then(function (data) {\n $scope.boards = data;\n var personalBoard = {\n name: $translate.instant('BOARD_PERSONAL_BOARD'),\n id: null,\n boardType: 'PERSONAL'\n }\n $scope.boards.unshift(personalBoard);\n $scope.task.board = personalBoard;\n if(!$scope.options.selectedUser){ // If user is not preselected, select current user\n $scope.getUserProfile();\n } \n });\n }\n $scope.selectCustomColor = function (color) {\n $scope.selectedPostIt = {title:\"custom\", background: color};\n $scope.background = color;\n $scope.taskBorderStyle = {\n \"border-bottom\" : borderStyle + $scope.background\n }\n }\n\n $scope.boardDateChanged = function($event) {\n const date = $event.originalEvent.detail\n $scope.task.boardDate = date\n }\n\n\n // Init tags and focus (without this the textfield is 2px)\n setTimeout(function () {\n $(\"#taskTags\").tagit({\n // This will make Tag-it submit a single form value, as a comma-delimited field.\n singleField: true,\n singleFieldNode: $('#tagsSelected')\n });\n var tagArray = $scope.task.tags.split(\",\");\n for (var i = 0; i < tagArray.length; i++) {\n $(\"#taskTags\").tagit('createTag', tagArray[i]);\n }\n }, 50);\n\n $scope.ok = function () {\n $scope.isProcessing = true;\n\n if($scope.task.boardDate)\n {\n const year = $scope.task.boardDate.getFullYear();\n const month = $scope.task.boardDate.getMonth();\n const date = $scope.task.boardDate.getDate();\n\n const newDate = new Date(Date.UTC(year, month, date, 12, 0, 0, 0));\n console.log(newDate.toISOString());\n $scope.task.boardDate = newDate;\n }\n\n\n var tagSingleString = $(\"#tagsSelected\").val();\n var tagsArray = tagSingleString.split(\",\");\n var tags = [];\n for (var i = 0; i < tagsArray.length; i++) { // Hide all\n if(tagsArray[i]){ \n tags.push({\n Id: 0,\n Tag: tagsArray[i],\n BoardTaskId: 0\n });\n }\n }\n if($scope.task.selectedRow){\n $scope.task.rowCategoryId = $scope.task.selectedRow.id;\n }\n if($scope.task.selectedColumn){\n $scope.task.columnCategoryId = $scope.task.selectedColumn.id;\n }\n $scope.task.tags = tags;\n $scope.task.subTasks = $scope.subTasks;\n $scope.task.color = $scope.background;\n $scope.task.files = $scope.uploadedFiles;\n if (!$scope.task.boardId){\n $scope.task.boardId = null;\n $scope.task.board = null; \n } \n boardTaskService().addBoardTask($scope.task).then(function (createdTask) {\n $scope.isProcessing = false;\n $uibModalInstance.close(createdTask);\n });\n };\n\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n }]);","import { getFileType } from \"@common/services/filesService\"\n\nangular\n .module('DigiLean')\n .directive(\"taskAttachments\", ['$filter', '$uibModal',\n function ($filter, $uibModal) {\n return {\n templateUrl: 'taskattachments.html',\n restrict: 'E',\n scope: {\n 'files': '<',\n },\n link: function (scope, elem, attrs) {\n \n\n scope.filesToShow = [];\n scope.$watch('files', function (files) {\n // apply\n \n scope.filesToShow.splice(0, scope.filesToShow.length);\n if (!files) return;\n for (let i = 0; i < files.length; i++) {\n var file = files[i]\n var fileType = getFileType(file.fileExtension)\n if (fileType) {\n file.fileType = fileType.type\n } \n // We are only going to show files that are not image, because image will be rendered as preview\n if (fileType.length > 0 && fileType[0].type != \"image\") {\n scope.filesToShow.push(file)\n }\n }\n \n });\n }\n }\n }]);\n","import { getFileType } from \"@common/services/filesService\"\n\nangular\n .module('DigiLean')\n .directive(\"taskAttachment\",\n function ($) {\n return {\n templateUrl: 'taskattachment.html',\n restrict: 'E',\n scope: {\n 'file': '<',\n },\n link: function (scope, elem, attrs) {\n \n console.log(\"taskAttachments really in use?\")\n scope.$watch('file', function (file) {\n // apply\n if (!file) return;\n if (file.validFileUrl) return;\n var fileType = getFileType(file.fileExtension)\n if (fileType) {\n file.fileType = fileType.type\n } \n });\n }\n }\n });\n","import * as timeService from \"@common/services/timeService\"\nimport { hasDefaultAccess } from \"@common/components/dashboard/designer/common/userAccessService\"\n\nangular\n .module('DigiLean').directive(\"productionBoard\", ['$filter', '$uibModal', 'dataService', 'dataSourceService', 'dataFilterService', 'mathService',\n function ($filter, $uibModal, dataService, dataSourceService, dataFilterService, mathService) {\n return {\n templateUrl: 'productionBoard.html',\n restrict: 'E',\n scope: {\n model: \"<\",\n editable: '=',\n modelChangeHandler: '&?',\n userAccess: ' {\n if (row.dataSourceId === value.dataSourceId && dataFilterService().matchesFilters(value, row.filters)) {\n for (let index = 0; index < row.days.length; index++) {\n const day = row.days[index];\n var dayDate = moment(day.day.date).date();\n var valueDate = moment(value.valueDate).date();\n if (dayDate == valueDate) {\n day.registrations.push(value);\n day.calculateTotal();\n }\n }\n }\n if (row.targetDataSourceId === value.dataSourceId && dataFilterService().matchesFilters(value, row.targetFilters)) {\n for (let index = 0; index < row.days.length; index++) {\n const day = row.days[index];\n var dayDate = moment(day.day.date).date();\n var valueDate = moment(value.valueDate).date();\n if (dayDate == valueDate) {\n day.targetRegistrations.push(value);\n day.calculateTotal();\n }\n }\n }\n });\n }\n }\n });\n scope.subscribe(\"DataValueUpdated\", function (value) {\n if (scope.table && scope.table.rows) {\n var selectedTimePeriod = {\n from: scope.selectedWeek.startDate,\n to: scope.selectedWeek.endDate\n }\n if (timeService.isWithinTimePeriod(value.valueDate, value.valueDate, selectedTimePeriod)) {\n scope.table.rows.forEach(row => {\n if (row.dataSourceId === value.dataSourceId) {\n for (let index = 0; index < row.days.length; index++) {\n const day = row.days[index];\n var selected = $filter('filter')(day.registrations, { id: value.id });\n if (selected.length > 0) {\n selected[0].value = value.value;\n day.calculateTotal();\n index = row.days.length; //break the for loop\n }\n }\n }\n if (row.targetDataSourceId === value.dataSourceId) {\n for (let index = 0; index < row.days.length; index++) {\n const day = row.days[index];\n var selected = $filter('filter')(day.targetRegistrations, { id: value.id });\n if (selected.length > 0) {\n selected[0].value = value.value;\n day.calculateTotal();\n index = row.days.length; //break the for loop\n }\n }\n }\n });\n }\n }\n });\n scope.subscribe(\"DataValueDeleted\", function (value) {\n if (scope.table && scope.table.rows) {\n scope.table.rows.forEach(row => {\n if (row.dataSourceId === value.dataSourceId) {\n for (let index = 0; index < row.days.length; index++) {\n const day = row.days[index];\n var selected = $filter('filter')(day.registrations, { id: value.valueId });\n if (selected.length > 0) {\n var valueindex = day.registrations.indexOf(selected[0]);\n if (valueindex > -1) {\n day.registrations.splice(valueindex, 1);\n day.calculateTotal();\n index = row.days.length; //break the for loop\n }\n }\n }\n }\n if (row.targetDataSourceId === value.dataSourceId) {\n for (let index = 0; index < row.days.length; index++) {\n const day = row.days[index];\n var selected = $filter('filter')(day.targetRegistrations, { id: value.valueId });\n if (selected.length > 0) {\n var valueindex = day.targetRegistrations.indexOf(selected[0]);\n if (valueindex > -1) {\n day.targetRegistrations.splice(valueindex, 1);\n day.calculateTotal();\n index = row.days.length; //break the for loop\n }\n }\n }\n }\n });\n }\n });\n\n\n function init() {\n if (!scope.model) return;\n dataSourceService().getList().then(function (list) {\n scope.dataSources = list;\n\n for (var i = 0; i < scope.model.rows.length; i++) {\n if (scope.model.rows[i].dataSourceId) {\n var id = scope.model.rows[i].dataSourceId;\n if (!isNaN(id) && parseInt(id) != \"NaN\") {\n id = parseInt(id);\n }\n var updatedSource = $filter('filter')(scope.dataSources, { id: id }, true);\n if (updatedSource.length > 0) {\n scope.model.rows[i].dataSource = updatedSource[0];\n }\n }\n\n if (scope.model.rows[i].targetDataSourceId) {\n var id = scope.model.rows[i].targetDataSourceId;\n if (!isNaN(id) && parseInt(id) != \"NaN\") {\n id = parseInt(id);\n }\n var updatedSource = $filter('filter')(scope.dataSources, { id: id }, true);\n if (updatedSource.length > 0) {\n scope.model.rows[i].targetDataSource = updatedSource[0];\n }\n }\n }\n loadDataForWeek();\n\n });\n }\n\n function loadDataForWeek() {\n if (!scope.selectedWeek) return;\n if (!scope.dataSources) {\n init();\n } else {\n if (scope.table && scope.table.rows.length == modelRows.length && modelRows.length > 0) {\n\n scope.table.rows.forEach(row => {\n var options = {\n timePeriod: {\n from: scope.selectedWeek.startDate,\n to: scope.selectedWeek.endDate\n },\n filters: row.filters\n };\n var dataSourceId = row.dataSourceId;\n if (isNaN(dataSourceId) || parseInt(dataSourceId) == \"NaN\") {\n dataSourceId = row.dataSource.id;\n }\n dataService().getValuesForPeriod(dataSourceId, options).then(function (values) {\n //createRows(values, false);\n row.values = values;\n //scope.table.addRow(createRow(scope.table, row, scope.selectedWeek));\n if (row.targetDataSourceId) {\n options.filters = row.targetFilters;\n dataService().getValuesForPeriod(row.targetDataSourceId, options).then(function (values) {\n row.targetValues = values;\n var newRow = createRow(scope.table, row, scope.selectedWeek);\n scope.table.rows[row.index] = newRow;\n scope.table.calculateTotal();\n });\n } else {\n var newRow = createRow(scope.table, row, scope.selectedWeek);\n scope.table.rows[row.index] = newRow;\n scope.table.calculateTotal();\n }\n });\n });\n } else {\n if (!scope.model) return;\n if (!scope.model.rows) return;\n scope.model.rows.forEach(row => {\n var options = {\n timePeriod: {\n from: scope.selectedWeek.startDate,\n to: scope.selectedWeek.endDate\n },\n filters: row.filters\n };\n var dataSourceId = row.dataSourceId;\n if (isNaN(dataSourceId) || parseInt(dataSourceId) == \"NaN\") {\n dataSourceId = row.dataSource.id;\n }\n dataService().getValuesForPeriod(dataSourceId, options).then(function (values) {\n row.values = values;\n\n if (row.targetDataSourceId) {\n options.filters = row.targetFilters;\n dataService().getValuesForPeriod(row.targetDataSourceId, options).then(function (values) {\n row.targetValues = values;\n var newRow = createRow(scope.table, row, scope.selectedWeek);\n scope.table.rows[row.index] = newRow;\n scope.table.calculateTotal();\n });\n } else {\n var newRow = createRow(scope.table, row, scope.selectedWeek);\n scope.table.rows[row.index] = newRow;\n scope.table.calculateTotal();\n }\n });\n });\n }\n\n }\n }\n\n function getTargetStatus(produced, planned, operator) {\n var status = \"red\";\n if (operator) {\n switch (operator.dbCode) {\n case \">=\":\n if (produced >= planned) {\n status = \"green\";\n }\n break;\n case \">\":\n if (produced > planned) {\n status = \"green\";\n }\n break;\n case \"<=\":\n if (produced <= planned) {\n status = \"green\";\n }\n break;\n case \"<\":\n if (produced < planned) {\n status = \"green\";\n }\n break;\n }\n } else {\n if (produced >= planned) {\n status = \"green\";\n }\n }\n return status;\n }\n\n function createRow(table, projectRow, week) {\n if (!projectRow) return;\n var row = {\n name: projectRow.name,\n id: projectRow.id,\n index: projectRow.index,\n plannedTotal: 0,\n producedTotal: 0,\n result: 0,\n dataSourceId: projectRow.dataSourceId,\n dataSource: projectRow.dataSource,\n filters: projectRow.filters,\n formula: projectRow.formula,\n targetDataSourceId: projectRow.targetDataSourceId,\n targetDataSource: projectRow.targetDataSource,\n targetFilters: projectRow.targetFilters,\n targetValue: projectRow.targetValue,\n operator: projectRow.operator,\n days: [],\n calculateTotal: function () {\n let sum = this.days.reduce((s, f) => {\n return s + f.producedTotal; // return the sum of the accumulator and the current time, as the the new accumulator\n }, 0);\n if (this.formula && this.formula == 'average' && this.days.length > 0) {\n var daysWithValues = 0;\n this.days.forEach(dayInWeek => {\n if (dayInWeek.registrations.length > 0) {\n daysWithValues = daysWithValues + 1;\n }\n });\n if (daysWithValues > 0) {\n sum = sum / daysWithValues;\n sum = roundNumber(sum, decimals);\n }\n } else if (sum.toString().includes(\".\")) {\n sum = roundNumber(sum, decimals);\n }\n this.producedTotal = sum;\n let plannedsum = this.days.reduce((s, f) => {\n return s + f.plannedTotal; // return the sum of the accumulator and the current time, as the the new accumulator\n }, 0);\n if (this.formula && this.formula == 'average' && this.days.length > 0) {\n if (this.targetValue && this.targetValue != 0) {\n plannedsum = this.targetValue;\n } else {\n var daysWithValues = 0;\n this.days.forEach(dayInWeek => {\n if (dayInWeek.targetRegistrations.length > 0) {\n daysWithValues = daysWithValues + 1;\n }\n });\n if (daysWithValues > 0) {\n plannedsum = plannedsum / daysWithValues;\n plannedsum = roundNumber(plannedsum, decimals);\n }\n }\n } else if (plannedsum.toString().includes(\".\")) {\n plannedsum = roundNumber(plannedsum, decimals);\n }\n this.plannedTotal = plannedsum;\n this.status = getTargetStatus(this.producedTotal, this.plannedTotal, this.operator);\n table.calculateTotal();\n }\n }\n // Calcluate Days\n week.days.forEach(dayInWeek => {\n // add values\n var day = {\n day: dayInWeek,\n planned: 0,\n produced: 0,\n plannedTotal: 0,\n producedTotal: 0,\n newRegistration: {\n planned: 0,\n produced: 0,\n value: 0\n },\n setProduced: function (value) {\n this.newRegistration.produced = value;\n this.newRegistration.value = value;\n },\n deleteRegistration: function (registration) {\n var currentDay = this;\n dataService().delete(registration.id).then(function () {\n })\n },\n saveRegistration: function () {\n var produced = this.newRegistration.produced.toString();\n produced = produced.replace(\",\", \".\");\n produced = parseFloat(produced);\n // Convert to DataValue and save\n scope.isProcessing = true;\n var utcDate = moment.utc(this.day.date).format();\n saveDataValue(produced, utcDate, row.dataSource, row.filters);\n // Clear newRegistration\n this.newRegistration.produced = 0;\n this.newRegistration.value = 0;\n },\n setPlanned: function (value) {\n this.newRegistration.planned = value;\n },\n deletePlannedRegistration: function (registration) {\n var currentDay = this;\n dataService().delete(registration.id).then(function () {\n })\n },\n savePlannedRegistration: function () {\n var planned = this.newRegistration.planned.toString();\n planned = planned.replace(\",\", \".\");\n planned = parseFloat(planned);\n // Convert to DataValue and save\n scope.isProcessing = true;\n var utcDate = moment.utc(this.day.date).format();\n saveDataValue(planned, utcDate, row.targetDataSource, row.targetFilters);\n // Clear newRegistration\n this.newRegistration.planned = 0;\n },\n registrations: [],\n targetRegistrations: [],\n calculateTotal: function () {\n let sum = this.registrations.reduce((s, f) => {\n return s + f.value; // return the sum of the accumulator and the current time, as the the new accumulator\n }, 0);\n if (row.formula && row.formula == 'average' && this.registrations.length > 0) {\n sum = sum / this.registrations.length;\n sum = roundNumber(sum, decimals);\n } else if (sum.toString().includes(\".\")) {\n sum = roundNumber(sum, decimals);\n }\n this.producedTotal = sum;\n this.produced = sum;\n let plannedsum = 0;\n if (row.targetValue && row.targetValue != 0) {\n plannedsum = row.targetValue;\n } else {\n plannedsum = this.targetRegistrations.reduce((s, f) => {\n return s + f.value; // return the sum of the accumulator and the current time, as the the new accumulator\n }, 0);\n if (row.formula && row.formula == 'average' && this.targetRegistrations.length > 0) {\n plannedsum = plannedsum / this.targetRegistrations.length;\n plannedsum = roundNumber(plannedsum, decimals);\n } else if (plannedsum.toString().includes(\".\")) {\n plannedsum = roundNumber(plannedsum, decimals);\n }\n }\n\n this.plannedTotal = plannedsum;\n this.result = this.producedTotal - this.plannedTotal;\n if (this.result > 0) this.status = \"green\";\n if (this.result < 0) this.status = \"red\";\n this.status = getTargetStatus(this.producedTotal, this.plannedTotal, row.operator);\n row.calculateTotal();\n }\n }\n\n row.days.push(day);\n // Add and calulate values to day\n //if (projectRow.values && projectRow.values.length > 0) {\n mapValuesToDay(day, projectRow.values);\n mapTargetValuesToDay(day, projectRow.targetValues);\n day.calculateTotal();\n //}\n\n });\n\n\n return row;\n }\n function roundNumber(value, decimals) {\n if (decimals !== null) {\n if (decimals !== undefined) {\n value = mathService().roundNumber(value, decimals);\n }\n }\n return value;\n }\n\n function saveDataValue(newvalue, utcDate, dataSource, filters) {\n var registration = {\n valueDate: utcDate,\n value: newvalue\n };\n var missingMandatoryValues = false;\n angular.forEach(dataSource.elements, function (element) {\n var hasFilter = $filter('filter')(filters, { sourceColumn: element.sourceColumn }, true);\n if (hasFilter && hasFilter.length > 0) {\n if (hasFilter[0].items.length == 1) {\n registration[element.sourceColumn] = hasFilter[0].items[0]; //preselect the first filtered item of this filterelement\n } else if (element.isMandatory) {\n missingMandatoryValues = true;\n }\n } else {\n if (element.isMandatory) {\n missingMandatoryValues = true;\n }\n }\n\n\n });\n if (missingMandatoryValues) {\n var configuration = {\n dataSource: dataSource,\n filters: filters,\n registration: registration\n };\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'productionBoardMandatoryFields.html',\n controller: 'productionBoardMandatoryFieldsController',\n windowClass: 'newdeviation-modal-window',\n resolve: {\n configuration: function () {\n return configuration;\n }\n }\n });\n\n modalInstance.result.then(function (result) {\n dataService().add(dataSource.id, result.registration).then(function (savedValue) {\n scope.isProcessing = false;\n });\n });\n } else {\n dataService().add(dataSource.id, registration).then(function (savedValue) {\n scope.isProcessing = false;\n });\n }\n\n }\n\n function mapValuesToDay(day, values) {\n if (values) {\n for (let index = 0; index < values.length; index++) {\n const value = values[index];\n var dayDate = moment(day.day.date).date();\n var valueDate = moment(value.valueDate).date();\n if (dayDate == valueDate) {\n day.registrations.push(value);\n }\n }\n }\n }\n\n function mapTargetValuesToDay(day, values) {\n if (values) {\n for (let index = 0; index < values.length; index++) {\n const value = values[index];\n var dayDate = moment(day.day.date).date();\n var valueDate = moment(value.valueDate).date();\n if (dayDate == valueDate) {\n day.targetRegistrations.push(value);\n }\n }\n }\n }\n\n function setupTable(week) {\n var table = {\n rows: [],\n days: [],\n addRow: function (table, row, week) {\n\n var rowIndex = 0;\n var row = createRow(table, row, week);\n this.rows.push(row);\n return row;\n\n },\n producedTotal: 0,\n plannedTotal: 0,\n calculateTotal: function () {\n // total pr row.\n let sum = this.rows.reduce((s, f) => {\n return s + f.producedTotal; // return the sum of the accumulator and the current time, as the the new accumulator\n }, 0);\n this.producedTotal = sum;\n let plannedsum = this.rows.reduce((s, f) => {\n return s + f.plannedTotal; // return the sum of the accumulator and the current time, as the the new accumulator\n }, 0);\n this.plannedTotal = plannedsum;\n // Calculate total pr day.\n for (let index = 0; index < this.days.length; index++) {\n const dayInWeek = this.days[index];\n var daySum = 0;\n var plannedSum = 0;\n this.rows.forEach(row => {\n // Get total for day in each row\n daySum += row.days[index].producedTotal;\n plannedSum += row.days[index].plannedTotal;\n /* TODO: how to update all statuses if operator configurator is changed? \n The next two lines result in stack size exceeded\n row.days[index].calculateTotal();\n row.calculateTotal();*/\n });\n dayInWeek.producedTotal = daySum;\n dayInWeek.plannedTotal = plannedSum;\n }\n }\n }\n // Create days\n week.days.forEach(dayInWeek => {\n var day = {\n day: dayInWeek,\n producedTotal: 0,\n plannedTotal: 0,\n }\n table.days.push(day);\n });\n // Create rows based on project\n scope.table = table;\n\n }\n\n function copyRowSettings(row) {\n var isNewRow = true;\n if (row.newRow === false) {\n isNewRow = false;\n }\n var newrow = {\n newRow: false,\n name: row.name,\n dataSourceId: row.dataSourceId,\n filters: copyObject(row.filters), /* cloneDeep can not be used in this case since it will initially not should correct values */\n targetDataSourceId: row.targetDataSourceId,\n targetFilters: copyObject(row.targetFilters),\n targetValue: row.targetValue,\n formula: row.formula,\n operator: row.operator\n }\n return newrow;\n }\n\n function copyObject(object) {\n if (!object) return;\n return JSON.parse(JSON.stringify(object));\n }\n\n function resetRowIndexes() {\n var index = 0;\n modelRows.forEach(row => {\n row.index = index;\n index += 1;\n });\n }\n\n scope.closeDropdown = function () {\n setTimeout(function () {\n $(\".app-header\").click();\n }, 0);\n };\n\n function resetTableRowsIndexes() {\n var index = 0;\n scope.table.rows.forEach(row => {\n row.index = index;\n index += 1;\n });\n }\n\n scope.deleteRow = function (row) {\n modelRows.splice(row.index, 1);\n resetRowIndexes();\n scope.notfiyModelChanged();\n\n var i = scope.table.rows.indexOf(row);\n scope.table.rows.splice(i, 1);\n resetTableRowsIndexes();\n }\n\n scope.copyRow = function (row) {\n var newrow = copyRowSettings(row)\n newrow.index = modelRows.length;\n modelRows.push(newrow);\n scope.notfiyModelChanged();\n var rowWithValues = copyRowSettings(row);\n rowWithValues.index = modelRows.length - 1;\n\n\n\n //createRow\n var r = scope.table.addRow(scope.table, rowWithValues, scope.selectedWeek);\n r.days = row.days;\n r.plannedTotal = row.plannedTotal;\n r.producedTotal = row.producedTotal;\n r.dataSource = row.dataSource;\n r.targetDataSource = row.targetDataSource;\n r.status = row.status;\n r.targetValue = row.targetValue;\n r.calculateTotal();\n }\n\n scope.addRow = function () {\n var row = {\n id: null,\n dataSource: null,\n filters: null,\n newRow: true\n }\n scope.openRowConfiguration(row);\n }\n\n function resetRowRegistrationForEachDay(row, values, targetvalues) {\n for (let index = 0; index < row.days.length; index++) {\n const day = row.days[index];\n day.registrations = [];\n mapValuesToDay(day, values);\n if (targetvalues) {\n day.targetRegistrations = [];\n mapTargetValuesToDay(day, targetvalues);\n }\n day.calculateTotal();\n }\n row.calculateTotal();\n }\n\n scope.openRowConfiguration = function (row) {\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'productionBoardRowConfiguration.html',\n controller: 'productionBoardRowConfigurationController',\n windowClass: 'newdeviation-modal-window',\n resolve: {\n configuration: function () {\n return row;\n }\n }\n });\n\n modalInstance.result.then(function (result) {\n var isNewRow = false;\n var updatedRow = {\n name: result.name,\n index: result.index,\n dataSourceId: result.dataSourceId,\n filters: result.filters,\n targetDataSourceId: result.targetDataSourceId,\n targetFilters: result.targetFilters,\n targetValue: result.targetValue,\n formula: result.formula,\n operator: result.operator\n }\n if (result.newRow) {\n isNewRow = true;\n result.newRow = false;\n updatedRow.index = modelRows.length;\n modelRows.push(updatedRow);\n result.index = updatedRow.index;\n } else {\n modelRows[row.index] = updatedRow;\n }\n scope.notfiyModelChanged();\n\n var options = {\n timePeriod: {\n from: scope.selectedWeek.startDate,\n to: scope.selectedWeek.endDate\n },\n filters: result.filters\n };\n dataService().getValuesForPeriod(result.dataSourceId, options).then(function (values) {\n result.values = values;\n if (result.targetDataSourceId) {\n options.filters = result.targetFilters;\n dataService().getValuesForPeriod(result.targetDataSourceId, options).then(function (values) {\n result.targetValues = values;\n if (isNewRow) {\n scope.table.addRow(scope.table, result, scope.selectedWeek);\n } else {\n row.operator = updatedRow.operator;\n resetRowRegistrationForEachDay(row, result.values, result.targetValues);\n scope.table.calculateTotal();\n }\n });\n } else {\n if (isNewRow) {\n scope.table.addRow(scope.table, result, scope.selectedWeek);\n } else {\n row.operator = updatedRow.operator;\n resetRowRegistrationForEachDay(row, values, null);\n scope.table.calculateTotal();\n }\n }\n\n });\n });\n }\n\n scope.selectDataSource = function (row) {\n var hasDataSerie = false;\n if (row.dataSource) {\n hasDataSerie = true;\n }\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'dataSourceSingleSelector.html',\n controller: 'dataSourceSingleSelector',\n windowClass: 'newdeviation-modal-window',\n resolve: {\n hasDataSerie: function () {\n return hasDataSerie;\n },\n dataSource: function () {\n return row.dataSource;\n },\n filters: function () {\n return row.filters;\n },\n withTarget: function () {\n return false;\n },\n type: function () {\n return null;\n },\n externalOnly: function () {\n return true;\n }\n\n }\n });\n\n modalInstance.result.then(function (result) {\n var row = {\n id: result.dataSource.id,\n dataSource: result.dataSource,\n filters: result.filters,\n name: result.dataSource.title\n }\n var options = {\n timePeriod: {\n from: scope.selectedWeek.startDate,\n to: scope.selectedWeek.endDate\n },\n filters: row.filters\n };\n dataService().getValuesForPeriod(row.dataSource.id, options).then(function (values) {\n modelRows.push(row);\n scope.notfiyModelChanged();\n row.values = values;\n scope.table.addRow(scope.table, row, scope.selectedWeek);\n scope.notfiyModelChanged();\n });\n\n\n });\n };\n\n scope.notfiyModelChanged = function () {\n if (!scope.modelChangeHandler) return;\n scope.model = {\n rows: modelRows\n };\n scope.modelChangeHandler({ model: scope.model });\n }\n\n function updateItemsOrder(e, ui) {\n var items = ui.item.sortable.droptargetModel;\n if (items) {\n modelRows = [];\n var index = 0;\n items.forEach(item => {\n item.index = index;\n var configrow = copyRowSettings(item);\n configrow.index = index;\n modelRows.push(configrow);\n index += 1;\n });\n scope.notfiyModelChanged();\n }\n }\n\n scope.itemsSortableOptions = {\n connectWith: \".summaryList\",\n handle: \".drag-handle\",\n placeholder: \"summary-item-sortable-placeholder\",\n stop: updateItemsOrder\n };\n\n // Week and time setup\n scope.selectWeek = function (week) {\n week.days = week.days.splice(0, noOfDaysShown);\n scope.selectedWeek = week;\n // SETUP TABLE\n if (!scope.table) {\n setupTable(scope.selectedWeek, []);\n }\n\n // Load data\n loadDataForWeek();\n\n }\n\n function setupTimeOptions() {\n scope.months = timeService.getMonths();\n scope.selectedYear = moment().year(); // Get currentYear if not set\n var currentMonth = moment().month();\n var month = scope.months[currentMonth];\n month.weeks = timeService.getWeeksInMonth(scope.selectedYear, month.id);\n scope.selectedMonth = month;\n var currentWeek = moment().isoWeek();\n var hasWeek = $filter('filter')(scope.selectedMonth.weeks, { number: currentWeek }, true);\n if (hasWeek.length > 0) {\n scope.selectWeek(hasWeek[0]);\n } else {\n scope.selectWeek(scope.selectedMonth.weeks[0]);\n }\n }\n setupTimeOptions();\n\n function getPreviousWeek() {\n var currentWeekIndex = scope.selectedMonth.weeks.indexOf(scope.selectedWeek);\n var currentWeekNumber = scope.selectedWeek.number;\n var previousWeekIndex = currentWeekIndex - 1;\n if (currentWeekIndex == 0) { // First week, so we need to go back a month\n scope.previousMonth(false);\n previousWeekIndex = scope.selectedMonth.weeks.length - 1;\n }\n var previousWeek = scope.selectedMonth.weeks[previousWeekIndex];\n if (previousWeekIndex == (scope.selectedMonth.weeks.length - 1) && previousWeek.number == currentWeekNumber) {\n previousWeek = scope.selectedMonth.weeks[previousWeekIndex - 1];\n }\n return previousWeek;\n }\n scope.previousWeek = function () {\n var previousWeek = getPreviousWeek();\n scope.selectWeek(previousWeek);\n }\n scope.nextWeek = function () {\n var currentWeekIndex = scope.selectedMonth.weeks.indexOf(scope.selectedWeek);\n var currentWeekNumber = scope.selectedWeek.number;\n var nextWeekIndex = currentWeekIndex + 1;\n if (nextWeekIndex > (scope.selectedMonth.weeks.length - 1)) { // Last week of month, so we need to go forward a month\n scope.nextMonth(false);\n nextWeekIndex = 0;\n }\n var nextWeek = scope.selectedMonth.weeks[nextWeekIndex];\n // If week is share between two months, we need to move it to the next\n if (nextWeekIndex == 0 && nextWeek.number == currentWeekNumber) {\n nextWeek = scope.selectedMonth.weeks[1];\n }\n scope.selectWeek(nextWeek, true);\n }\n var selectYear = function (year) {\n scope.selectedYear = year;\n // Adjust month\n var month = scope.months[0];\n month.weeks = timeService.getWeeksInMonth(scope.selectedYear, month.id);\n scope.selectedMonth = month;\n setMonthSelection(month);\n scope.selectedWeek = month.weeks[0];\n setWeekSelection(scope.selectedWeek);\n }\n\n scope.selectMonth = function (month) {\n scope.selectedMonth = month;\n scope.selectedMonth.weeks = timeService.getWeeksInMonth(scope.selectedYear, month.id);\n // Also adjust week to be in correct month\n scope.selectedWeek = month.weeks[0];\n };\n\n scope.previousYear = function () {\n selectYear(scope.selectedYear - 1);\n }\n scope.nextYear = function () {\n selectYear(scope.selectedYear + 1);\n }\n scope.previousMonth = function (refreshData) {\n var previousMonth = scope.selectedMonth.id - 1;\n if (previousMonth == 0) {\n previousMonth = 12;\n scope.selectedYear -= 1;\n }\n var previousMonthIndex = previousMonth - 1; // subtract index\n var month = scope.months[previousMonthIndex];\n month.weeks = timeService.getWeeksInMonth(scope.selectedYear, month.id);\n scope.selectMonth(month, refreshData);\n }\n scope.nextMonth = function (refreshData) {\n var nextMonth = scope.selectedMonth.id + 1;\n if (nextMonth == 13) {\n nextMonth = 1;\n scope.selectedYear += 1;\n }\n var nextMonthIndex = nextMonth - 1; // subtract for index\n var month = scope.months[nextMonthIndex];\n month.weeks = timeService.getWeeksInMonth(scope.selectedYear, month.id);\n scope.selectMonth(month, refreshData);\n }\n }\n }\n }]);\n","import * as dashboardService from \"@common/services/dashboardService\"\nimport { getDefaultAppStyle, getDefaultAppTheme, calcDefaultAppFontSize} from \"@common/components/dashboard/designer/common/appStyleService\"\nimport { hasDefaultAccess } from \"@common/components/dashboard/designer/common/userAccessService\"\n\n\nangular\n .module(\"DigiLean\")\n .directive('productionBoardApp', ['debounce',\n function (debounce) {\n return {\n templateUrl: 'productionBoardApp.html',\n restrict: 'E',\n scope: {\n 'isAdminMode': '=',\n 'settings': '=',\n 'settingsChangeHandler': '&',\n 'layoutFactor': '<',\n 'userAccess': '<'\n },\n link: function (scope, elem, attrs) {\n scope.title = \"\";\n scope.rows = [];\n\n scope.theme = getDefaultAppTheme()\n scope.canEdit = false;\n scope.postIts = dashboardService.getThemes()\n scope.noOfDaysShown = 5;\n scope.titleChangedEvent = function($event) {\n scope.title = $event.detail\n scope.updateSettings()\n }\n\n scope.themeChangedEvent = function($event) {\n scope.theme = $event.detail\n scope.updateSettings()\n }\n scope.appStyle = getDefaultAppStyle()\n function calcStyles() {\n scope.appStyle[\"font-size\"] = calcDefaultAppFontSize(scope.layoutFactor)\n }\n calcStyles()\n\n scope.$watch('userAccess', function (userAccess) {\n scope.canEdit = hasDefaultAccess(userAccess);\n });\n\n scope.$watch('layoutFactor', calcStyles)\n\n scope.$watch('settings', function (settings) {\n scope.settings = settings;\n if (settings) { \n if (settings.title) {\n scope.title = settings.title;\n }\n if (settings.noOfDaysShown) {\n scope.noOfDaysShown = settings.noOfDaysShown;\n }\n if (settings.rows) {\n scope.rows = settings.rows;\n scope.model = {rows: settings.rows,\n noOfDaysShown: scope.noOfDaysShown};\n }\n if (settings.theme) {\n scope.theme = settings.theme;\n }\n if (settings.noOfDaysShown) {\n scope.noOfDaysShown = settings.noOfDaysShown;\n }\n } else {\n //createTable();\n }\n });\n\n scope.$watch(\"isAdminMode\", function () {\n /*if (scope.isAdminMode) {\n scope.editable = true;\n } else {\n scope.editable = false;\n }*/\n });\n\n scope.changeNoOfDaysShown= function(days){\n scope.noOfDaysShown = parseInt(days);\n scope.model = {rows: scope.rows,\n noOfDaysShown: scope.noOfDaysShown};\n scope.updateSettings();\n }\n \n scope.changeTheme= function(theme){\n scope.theme = theme;\n scope.updateSettings();\n }\n\n scope.modelChangeHandler = function(model) {\n scope.rows = model.rows;\n scope.updateSettings();\n }\n\n\n scope.updateSettings = function () {\n if (scope.isAdminMode) {\n var componentSettings = {\n title: scope.title,\n //tableId: scope.tableId,\n rows: scope.rows,\n noOfDaysShown: scope.noOfDaysShown,\n theme: scope.theme\n };\n scope.settingsChangeHandler({ settings: componentSettings });\n }\n }\n\n\n scope.$on(\"widget-resized\", function (event, args) {\n resizeDebounced();\n });\n\n function resize() {\n var host = $(elem).closest(\".grid-stack-item-content\");\n if (host.length == 0)\n host = $(elem).closest(\".modal-body\")\n \n if (host.length == 0) return;\n var width = host.width();\n var height = host.height();\n\n // Find header to subtract from new height\n var header = $(elem).find(\".ibox-title\");\n var headerHeight = header.height() + 60;\n var container = $(elem).find(\".project-board-container\");\n if (container.length === 0) return;\n $(container).css(\"height\", (height - headerHeight));\n }\n const resizeDebounced = debounce(resize, 50, false)\n }\n }\n }]);\n\n","import * as customerService from \"@common/services/customers/customerService\"\nimport * as assetService from \"@common/services/assetService\"\n\nvar DigiLean = angular.module('DigiLean')\nDigiLean.controller('productionBoardMandatoryFieldsController', ['$scope','$filter', '$uibModalInstance', 'areaService', 'projectService', 'dataListService', 'configuration',\n function ($scope, $filter, $uibModalInstance, areaService, projectService, dataListService, configuration) {\n $scope.settings = configuration;\n var registration = null;\n\n function init() {\n if ($scope.settings) {\n $scope.dataSource = $scope.settings.dataSource;\n $scope.filters = $scope.settings.filters;\n registration = $scope.settings.registration;\n initRegistration();\n }\n }\n init();\n\n $scope.assetChangeHandler = function (assetinfo) {\n if (assetinfo) {\n assetinfo.model.item.value = assetinfo.asset.id;\n $scope.selectedAsset = assetinfo.asset;\n } \n }\n \n $scope.selectArea = function (area, item) {\n $scope.selectedArea = area;\n item.value = area.id;\n }\n $scope.selectProject = function (project, item) {\n $scope.selectedProject = project;\n item.value = project.id;\n }\n $scope.selectUser = function (user, item) {\n item.user = user;\n item.value = user.userId;\n }\n $scope.selectListItem = function (selectedDataListItem, item) {\n if (selectedDataListItem.name) {\n $scope.selectedDataListItem = selectedDataListItem;\n item.value = selectedDataListItem.id;\n } else { // blank list element\n $scope.selectedDataListItem = {};\n item.value = null;\n }\n\n }\n\n function initRegistration() {\n $scope.isProcessing = false;\n $scope.selectedDataListItem = null;\n angular.forEach($scope.dataSource.elements, function (element) {\n var hasFilter = $filter('filter')($scope.filters, { sourceColumn: element.sourceColumn }, true);\n if (hasFilter && hasFilter.length > 0) {\n if(hasFilter[0].items.length == 1){\n element.value = hasFilter[0].items[0]; //preselect the first filtered item of this filterelement\n element.registerValue = false;\n } else { //multiple selected elements\n setFilteredSelectors(element, hasFilter[0].items)\n }\n }\n else {\n element.registerValue = true;\n switch (element.type) {\n case \"asset\":\n assetService.getAllAssets(true).then(function (data) {\n $scope.assets = data;\n for (var k = 0; k < $scope.assets.length; k++) {\n $scope.assets[k].cssLevel = \"level-\" + $scope.assets[k].level; \n }\n $scope.assetmodel = { assetId:null,\n assets: $scope.assets,\n item:element};\n });\n break;\n case \"area\":\n areaService().getList(true).then(function (data) {\n $scope.areas = data;\n });\n break;\n case \"project\":\n projectService().getList(true).then(function (data) {\n $scope.projects = data;\n });\n break;\n case \"user\":\n customerService.getAllUsers().then(function (users) {\n $scope.allUsers = users;\n });\n break;\n case \"list\":\n var listOptions = {includeDeletedItems:false};\n dataListService().getItems(element.dataListId, listOptions).then(function (list) {\n if (list) {\n element.dataList = list;\n element.selectedDataListItem = {};\n }\n });\n break;\n default:\n element.value = null;\n\n }\n }\n });\n\n }\n\n function setFilteredSelectors(element, filteritems){\n element.registerValue = true;\n switch (element.type) {\n case \"asset\":\n assetService.getAllAssets(true).then(function (data) {\n $scope.assets = [];\n for(var i=0; i 0) {\n $scope.assets.push(hasElement[0]);\n }\n }\n var selectedAsssetId = null;\n if($scope.assets.length == 1) selectedAsssetId = $scope.assets[0].id;\n $scope.assetmodel = { assetId:selectedAsssetId,\n assets: $scope.assets,\n item: element};\n });\n break;\n case \"area\":\n areaService().getList(true).then(function (data) {\n $scope.areas = [];\n for(var i=0; i 0) {\n scope.areas.push(hasElement[0]);\n }\n }\n });\n break;\n case \"project\":\n projectService().getList(true).then(function (data) {\n $scope.projects = [];\n for(var i=0; i 0) {\n $scope.projects.push(hasElement[0]);\n }\n }\n });\n break;\n case \"user\":\n customerService.getAllUsers().then(function (data) {\n $scope.allUsers = [];\n for(var i=0; i 0) {\n $scope.allUsers.push(hasElement[0]);\n }\n }\n });\n break;\n case \"list\":\n var listOptions = {includeDeletedItems:false};\n dataListService().getItems(element.dataListId, listOptions).then(function (list) {\n if (list) {\n element.dataList = [];\n for(var i=0; i 0) {\n element.dataList.push(hasElement[0]);\n }\n }\n element.selectedDataListItem = {};\n }\n });\n break;\n default:\n element.value = null;\n }\n }\n\n/*\n\n $scope.save = function () {\n scope.isProcessing = true;\n var utcDate = moment.utc(scope.selectedDate).format();\n var valueString = scope.value.toString();\n var valuereplacecomma = valueString.replace(/,/g, '.');\n var registration = {\n valueDate: utcDate,\n value: valuereplacecomma,\n description: scope.description\n }\n angular.forEach(scope.dataSource.elements, function (element) {\n registration[element.sourceColumn] = element.value;\n });\n\n\n dataService().add(scope.dataSource.id, registration).then(function (savedRegistration) {\n scope.isPopupOpen = false;\n initRegistration();\n });\n\n }*/\n\n function isInputOk(){\n var isOk = true;\n angular.forEach($scope.dataSource.elements, function (element) {\n if(element.isMandatory && !element.value){\n return false;\n }\n });\n return isOk;\n }\n\n function checkMandatoryField() {\n angular.forEach($scope.dataSource.elements, function (element) {\n if (element.type == 'project') {\n if ($scope.selectedProject && $scope.selectedProject.id) {\n element.dataMissing = false;\n element.value = scope.selectedProject.id;\n } else {\n element.dataMissing = true;\n }\n }\n if (element.type !== 'bool' && !element.value && element.isMandatory) {\n element.dataMissing = true;\n } else {\n element.dataMissing = false;\n }\n });\n }\n $scope.ok = function () {\n var saveOK = true;\n angular.forEach($scope.dataSource.elements, function (element) {\n if (element.type == 'project') {\n if ($scope.selectedProject && $scope.selectedProject.id) {\n element.value = $scope.selectedProject.id;\n element.dataMissing = false;\n } else if (element.value) { //filter value is used\n element.dataMissing = false;\n } else if (element.isMandatory) {\n element.dataMissing = true;\n saveOK = false;\n element.value = null;\n }\n }\n registration[element.sourceColumn] = element.value;\n\n if (element.type !== 'bool' && !element.value && element.isMandatory) {\n element.dataMissing = true;\n saveOK = false;\n } else {\n element.dataMissing = false;\n }\n });\n\n if (saveOK) {\n var configuration = {\n filters: $scope.filters,\n registration: registration\n }\n \n $uibModalInstance.close(configuration);\n }\n };\n\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n\n }]);","import * as timeService from \"@common/services/timeService\"\nimport * as boardService from \"@common/services/boardService\"\nimport * as employeeService from \"@common/services/employeeService\"\n\nangular\n .module('DigiLean')\n .directive(\"yearlyBoard\", ['$filter', '$translate', '$uibModal', '$state', 'boardTaskService', 'navigationService', 'dragulaService', 'yearlyboardRenderService', 'monthlyRenderService', 'weeklyRenderService', 'modalService', 'boardRowProvider', 'actionListRowProvider','debounce',\n function ($filter, $translate, $uibModal, $state, boardTaskService, navigationService, dragulaService, yearlyboardRenderService, monthlyRenderService, weeklyRenderService, modalService, boardRowProvider, actionListRowProvider, debounce) {\n return {\n templateUrl: 'yearlyboard.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'options': '=',\n 'newTask': ' Category should provide rows\n scope.categories = []\n scope.selectedCategory = []\n scope.useCategorySelection = false; // Active when smartActionList\n\n scope.months = timeService.getMonths();\n scope.data = {\n rows: [],\n tasks: []\n }\n\n // Task detail level\n scope.taskDetailLevel = \"compact\";\n scope.showPostIts = true;\n scope.postIts = null;\n // --------- SET DEFAULT TiMES -----------\n scope.selectedYear = moment().year(); // Get currentYear if not set\n var currentMonth = moment().month();\n var month = scope.months[currentMonth];\n month.weeks = timeService.getWeeksInMonth(scope.selectedYear, month.id);\n scope.selectedMonth = month;\n setMonthSelection();\n var currentWeek = moment().isoWeek();\n var hasWeek = $filter('filter')(scope.selectedMonth.weeks, { number: currentWeek }, true);\n if (hasWeek.length > 0) {\n scope.selectedWeek = hasWeek[0];\n } else {\n scope.selectedWeek = scope.selectedMonth.weeks[0];\n }\n setWeekSelection();\n var getDisplayPeriods = function () {\n return {\n year: scope.selectedYear,\n month: scope.selectedMonth,\n week: scope.selectedWeek,\n }\n }\n\n // --------- SET VIEW MODES -----------\n scope.selectedViewMode = yearlyViewModeProvider;\n scope.viewModeSelection = 'year';\n var currentViewMode = \"year\";\n\n\n\n // SETUP AND OPTIONS\n scope.showTeamMembers = false;\n scope.showHeader = false;\n scope.useActionList = false;\n scope.showWrench = true;\n scope.isUnprocessedFilterActive = false;\n\n // filter\n scope.filterUser = function (user) {\n for (let index = 0; index < scope.data.tasks.length; index++) {\n const task = scope.data.tasks[index];\n\n if (!user) { // If no user is filter, then all are visible\n task.isVisible = true;\n task.animate(\"fadeInLeft\");\n continue;\n }\n // If selected user, than apply filter\n if (task.responsibleUserId == user.userId) {\n task.isVisible = true;\n task.animate(\"fadeInLeft\");\n } else {\n task.isVisible = false;\n task.animate(\"fadeOutRight\");\n }\n\n }\n\n }\n\n scope.resetFilter = function () {\n scope.isUnprocessedFilterActive = false;\n for (let index = 0; index < scope.data.tasks.length; index++) {\n const task = scope.data.tasks[index]; \n task.isVisible = true;\n task.animate(\"fadeInLeft\");\n }\n }\n\n scope.filterOnStatusBlank = function () {\n scope.isUnprocessedFilterActive = true;\n for (let index = 0; index < scope.data.tasks.length; index++) {\n const task = scope.data.tasks[index];\n\n // If status is not blank, than apply filter\n if (task.status == 'blank') {\n task.isVisible = true;\n task.animate(\"fadeInLeft\");\n } else {\n task.isVisible = false;\n task.animate(\"fadeOutRight\");\n }\n\n }\n }\n\n scope.$watch(\"options\", function (options) {\n if (!options) return;\n if (options.showTeamMembers) {\n scope.showTeamMembers = options.showTeamMembers;\n }\n if (options.showHeader) {\n scope.showHeader = options.showHeader;\n }\n if (options.useActionList) {\n scope.useActionList = options.useActionList;\n scope.useCategorySelection = true;\n // Set actionlist rowProvider\n rowProvider = actionListRowProvider;\n }\n\n if (options.taskDetailLevel) {\n scope.taskDetailLevel = options.taskDetailLevel;\n }\n if (options.viewModeSelection) {\n scope.viewModeSelection = options.viewModeSelection;\n }\n if (options.hideWrench) {\n scope.showWrench = false;\n }\n if (options.showArchive) {\n scope.showArchive = true;\n } else {\n scope.showArchive = false;\n }\n scope.selectedViewMode.load();\n \n })\n\n scope.$watch(\"viewModeSelection\", function (viewMode) {\n // View Mode \n if (viewMode == currentViewMode) return;\n if (viewMode == \"year\") {\n scope.selectedViewMode = yearlyViewModeProvider;\n scope.taskDetailLevel = \"compact\";\n // setMonthSelection(null);\n // setWeekSelection(null);\n }\n if (viewMode == \"month\") {\n setMonthSelection(scope.selectedMonth);\n // setWeekSelection(null);\n scope.selectedViewMode = monthlyViewModeProvider;\n }\n if (viewMode == \"week\") {\n setWeekSelection(scope.selectedWeek);\n scope.selectedViewMode = weeklyViewModeProvider;\n scope.taskDetailLevel = \"normal\";\n }\n if (scope.options && scope.options.taskDetailLevel) {\n scope.taskDetailLevel = scope.options.taskDetailLevel;\n }\n currentViewMode = viewMode;\n scope.selectedViewMode.load();\n })\n\n scope.notfiyOptionsChanged = function () {\n if (!scope.optionsChangeHandler) return;\n scope.options.taskDetailLevel = scope.taskDetailLevel;\n scope.options.viewModeSelection = scope.viewModeSelection;\n scope.optionsChangeHandler({ options: scope.options });\n }\n\n var getSelectedTimeOptions = function () {\n var timeOptions = {\n year: scope.selectedYear,\n month: scope.selectedMonth,\n week: scope.selectedWeek\n }\n if (scope.selectedMonth) {\n timeOptions.firstWeek = timeOptions.month.weeks[0];\n timeOptions.lastWeek = timeOptions.month.weeks[timeOptions.month.weeks.length - 1];\n }\n if (scope.selectedWeek) {\n timeOptions.firstDay = timeOptions.week.days[0];\n timeOptions.lastDay = timeOptions.week.days[timeOptions.week.days.length - 1];\n }\n return timeOptions;\n }\n\n var renderService = function () {\n return scope.selectedViewMode.renderService;\n }\n\n scope.selectedCategoryChanged = function () {\n // create rows and load data;\n scope.createLayoutAndLoad();\n // alert(category.changed);\n }\n\n scope.selectMonth = function (month, refreshData) {\n scope.selectedMonth = month;\n scope.selectedMonth.weeks = timeService.getWeeksInMonth(scope.selectedYear, month.id);\n setMonthSelection(month);\n // Also adjust week to be in correct month\n scope.selectedWeek = month.weeks[0];\n setWeekSelection(scope.selectedWeek);\n if (scope.viewModeSelection == \"year\") {\n scope.viewModeSelection = \"month\";\n } else {\n if (refreshData) {\n scope.selectedViewMode.load();\n }\n }\n };\n\n function setMonthSelection(selectedMonth) {\n for (let index = 0; index < scope.months.length; index++) {\n const element = scope.months[index];\n\n if (selectedMonth && element.id == selectedMonth.id) {\n element.state = \"month-selected\"\n } else {\n element.state = \"month-unselected\"\n }\n }\n }\n\n scope.selectWeek = function (week, refreshData) {\n scope.selectedWeek = week;\n setWeekSelection(week);\n\n if (scope.viewModeSelection == \"month\") {\n scope.viewModeSelection = \"week\";\n } else {\n if (refreshData) {\n scope.selectedViewMode.load();\n }\n }\n\n\n };\n function setWeekSelection(selectedWeek) {\n for (let index = 0; index < scope.selectedMonth.weeks.length; index++) {\n const element = scope.selectedMonth.weeks[index];\n if (selectedWeek && element.number == selectedWeek.number) {\n element.state = \"week-selected\"\n } else {\n element.state = \"week-unselected\"\n }\n }\n }\n\n /* Currently yearly board subscribe the event SmartActionListCellUpdated and do not use this logic since it was not reliable \n scope.$watch(\"smartActionListCellUpdated\", function (cell) {\n if (!cell) return;\n // Check if task should\n if (!scope.useCategorySelection) return;\n if (cell.smartTableColumnId == scope.selectedCategory.model.id) {\n for (let index = 0; index < scope.data.rows.length; index++) {\n const row = scope.data.rows[index];\n row.taskRows = [];\n }\n var renderOptions = {\n animationClass: \"slideInLeft\"\n }\n renderTasks(scope.data.tasks, renderOptions);\n }\n });*/\n\n scope.subscribe(\"SmartActionListCellUpdated\", function (cell) {\n if (!cell) return;\n // Check if task should\n if (!scope.useCategorySelection) return;\n if (cell.smartTableColumnId == scope.selectedCategory.model.id) {\n scope.selectedViewMode.load();\n }\n });\n \n scope.subscribe(\"TaskAssigned\", function (status) {\n if (!scope.useActionList) return;\n if (!scope.useCategorySelection) return;\n if (!scope.selectedCategory) return;\n var task = getTask(status.taskId);\n if (!task) return;\n if (scope.selectedCategory.model.attributeType == \"responsible\") {\n setTimeout(function () {\n scope.createLayoutAndLoad();\n }, 500);\n }\n });\n // subscribe to events\n scope.subscribe(\"NewTask\", function (task) {\n if (scope.useActionList) return;\n if (!task.startTime) task.startTime = task.endTime;\n task.startTime = moment.utc(task.startTime).local();\n task.endTime = moment.utc(task.endTime).local();\n addTask(task);\n });\n\n scope.$watch(\"newTask\", function (task) {\n if (!task) return;\n addTask(task);\n });\n\n scope.subscribe('TaskCloned', function (task) {\n if (task.boardId === scope.boardId) {\n if (!task.startTime) task.startTime = task.endTime;\n task.startTime = moment.utc(task.startTime).local();\n task.endTime = moment.utc(task.endTime).local();\n addTask(task);\n }\n });\n\n\n function addTask(task) {\n var exist = $filter('filter')(scope.data.tasks, { id: task.id });\n if (exist.length > 0) {\n return;\n }\n if (scope.board.id == task.boardId) {\n initTask(task);\n task.animate(\"bounce\");\n scope.data.tasks.push(task);\n var service = renderService();\n service().calculateDuration(task, getSelectedTimeOptions());\n if (scope.useActionList) {\n task.attributes = task.cellModels;\n // var row = rowProvider().getRowForTask(scope.model, scope.selectedCategory, scope.data.rows, task);\n renderTask(task, null);\n // service().reCalculateRowByIndex(scope.data, row.index, getSelectedTimeOptions());\n } else {\n service().reCalculateRow(scope.data, task.rowCategoryId, getSelectedTimeOptions());\n }\n\n }\n }\n scope.subscribe('TaskChangedBoard', function (change) {\n if(change.toBoardId === null || change.toBoardId === 0 \n || (change.fromBoardId === scope.board.id && change.toBoardId !== scope.board.id)){\n var task = getTask(change.taskId);\n if (task) {\n var service = renderService();\n task.animate(\"bounce\");\n var index = scope.data.tasks.indexOf(task);\n scope.data.tasks.splice(index, 1);\n service().reCalculateRow(scope.data, task.rowCategoryId, getSelectedTimeOptions());\n }\n } \n });\n scope.subscribe('ActionItemMovedToTask', function (task) {\n if (!task) return;\n var existingtask = getTask(task.id);\n if (existingtask) {\n var service = renderService();\n var fromRowId = existingtask.rowCategoryId;\n existingtask.rowCategoryId = task.rowCategoryId;\n existingtask.animate(\"bounce\");\n service().reCalculateRow(scope.data, fromRowId, getSelectedTimeOptions());\n service().reCalculateRow(scope.data, task.rowCategoryId, getSelectedTimeOptions());\n } else {\n addTask(task);\n } \n });\n scope.subscribe(\"TaskDeleted\", function (taskId) {\n var task = getTask(taskId);\n if (task) {\n var service = renderService();\n task.animate(\"bounce\");\n var index = scope.data.tasks.indexOf(task);\n scope.data.tasks.splice(index, 1);\n service().reCalculateRow(scope.data, task.rowCategoryId, getSelectedTimeOptions());\n }\n });\n scope.subscribe('SendTaskRepeated', function (data) {\n if(data && data.original && data.original.boardId === scope.board.id){\n angular.forEach(data.repeatedTasks, function (task, key) {\n if (!task.startTime) task.startTime = task.endTime;\n task.startTime = moment.utc(task.startTime).local();\n task.endTime = moment.utc(task.endTime).local();\n addTask(task);\n });\n }\n });\n scope.subscribe('TasksDeleted', function (taskIds) {\n angular.forEach(taskIds, function (id, key) {\n var task = getTask(id);\n if (task) {\n var service = renderService();\n task.animate(\"bounce\");\n var index = scope.data.tasks.indexOf(task);\n scope.data.tasks.splice(index, 1);\n service().reCalculateRow(scope.data, task.rowCategoryId, getSelectedTimeOptions());\n }\n });\n });\n scope.subscribe('TaskDurationUpdated', function (durationUpdated) {\n var task = getTask(durationUpdated.taskId);\n if (!task) return;\n updateTaskDuration(task, durationUpdated);\n });\n\n scope.subscribe('TaskDateMoved', function (taskMoved) {\n var task = getTask(taskMoved.taskId);\n if (!task && scope.useActionList) {\n smartActionListTasks\n // Check if this a task that was just assigned a date\n var actionListTasks = scope.smartActionListTasks;\n var taskExistInActionList = $filter('filter')(actionListTasks, { id: taskMoved.taskId });\n if (taskExistInActionList[0]) {\n addTask(taskExistInActionList[0]);\n }\n return;\n }\n if (!task) return;\n var startDate = task.startTime;\n if (!startDate) startDate = taskMoved.boardDate;\n var durationUpdated = {\n taskId: taskMoved.taskId,\n startTime: startDate,\n endTime: taskMoved.boardDate\n }\n updateTaskDuration(task, durationUpdated);\n });\n scope.subscribe('TaskStartDateUpdated', function (taskMoved) {\n var task = getTask(taskMoved.taskId);\n if (!task) return;\n var startDate = taskMoved.startTime;\n if (!startDate) startDate = task.endTime;\n var durationUpdated = {\n taskId: taskMoved.taskId,\n startTime: startDate,\n endTime: task.endTime\n }\n updateTaskDuration(task, durationUpdated);\n });\n\n function updateTaskDuration(task, durationUpdated) {\n var start = moment(durationUpdated.startTime).toDate().getTime();\n var end = moment(durationUpdated.endTime).toDate().getTime();\n var durationStart = moment(durationUpdated.startTime);\n var durationEnd = moment(durationUpdated.endTime);\n var service = renderService();\n // If task is moved out from time scope we need to remove it\n if ((durationStart < scope.currentTimePeriod.from && durationEnd < scope.currentTimePeriod.from) ||\n (durationStart > scope.currentTimePeriod.to && durationEnd > scope.currentTimePeriod.to)) {\n task.animate(\"slideOutRight\");\n setTimeout(function () {\n var index = scope.data.tasks.indexOf(task)\n scope.data.tasks.splice(index, 1);\n service().calculateDuration(task, getSelectedTimeOptions());\n service().reCalculateRow(scope.data, task.rowCategoryId, getSelectedTimeOptions());\n }, 1000);\n // return;\n } else if (task.startTime.getTime() != start || task.endTime.getTime() != end) {\n task.startTime = moment(durationUpdated.startTime);\n task.endTime = moment(durationUpdated.endTime);\n task.duration = timeService.getDurationInDays(task.startTime, task.endTime);\n task.animate(\"rubberBand\");\n // We need to check if task has changed timeperiod out of current scope\n\n service().calculateDuration(task, getSelectedTimeOptions());\n service().reCalculateRow(scope.data, task.rowCategoryId, getSelectedTimeOptions());\n\n\n }\n }\n scope.subscribe('TaskMovedRow', function (updateRowPosition) {\n var task = getTask(updateRowPosition.taskId);\n if (task) {\n var service = renderService();\n task.rowCategoryId = updateRowPosition.toRowId;\n task.animate(\"bounce\");\n service().reCalculateRow(scope.data, updateRowPosition.fromRowId, getSelectedTimeOptions());\n service().reCalculateRow(scope.data, updateRowPosition.toRowId, getSelectedTimeOptions());\n }\n });\n\n\n scope.editable = false;\n\n function checkBoardSettings(settingsAsString) {\n if (settingsAsString) {\n scope.settings = JSON.parse(settingsAsString);\n if (scope.settings && scope.settings.boardOptions) {\n var viewMode = scope.settings.boardOptions.viewModeSelection;\n if (viewMode == \"year\") {\n scope.selectedViewMode = yearlyViewModeProvider;\n scope.taskDetailLevel = \"compact\";\n }\n if (viewMode == \"month\") {\n setMonthSelection(scope.selectedMonth);\n scope.selectedViewMode = monthlyViewModeProvider;\n }\n if (viewMode == \"week\") {\n setWeekSelection(scope.selectedWeek);\n scope.selectedViewMode = weeklyViewModeProvider;\n scope.taskDetailLevel = \"normal\";\n }\n if (scope.settings.boardOptions.taskDetailLevel) {\n scope.taskDetailLevel = scope.settings.boardOptions.taskDetailLevel;\n }\n if (scope.settings.showPostIts) {\n scope.showPostIts = scope.settings.showPostIts;\n scope.postIts = scope.settings.PostIts;\n }\n scope.viewModeSelection = viewMode;\n currentViewMode = viewMode;\n }\n }\n }\n scope.$watch(\"model\", function (model) {\n if (scope.model == null) return;\n scope.board = scope.model.board;\n scope.title = scope.board.name;\n checkBoardSettings(scope.board.settings);\n scope.isViewer = navigationService().isViewer(scope.model.board.assetId);\n boardService.canEdit(scope.board.id).then(function (canEdit) {\n scope.editable = canEdit;\n });\n navigationService().isBoardAdmin(scope.board.id).then(function (isAdmin) {\n scope.hasBoardDesignerPrivileges = isAdmin;\n });\n // Set categories\n scope.categories = rowProvider().createCategories(model);\n scope.selectedCategory = scope.categories[0];\n // Set users selection\n if (model.users) {\n scope.users = model.users\n } else {\n boardService.getUserListForBoard(scope.board.id).then(function (data) {\n scope.users = data;\n });\n }\n checkFavorite();\n if(!scope.showArchive){ // prevent duplicate tasks for archived tasks\n scope.createLayoutAndLoad();\n }\n });\n\n function getAllUsers() {\n boardService.getUserListForBoard(scope.board.id).then(function (data) {\n scope.users = data;\n });\n }\n\n scope.openSettings = function () {\n var options = {\n targetType : \"Board\",\n targetId : scope.board.id,\n }\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'boardSettings.html',\n controller: 'boardSettingsController',\n resolve: {\n options: function () {\n return options;\n }\n }\n });\n modalInstance.result.then(function (result) {\n scope.title = result.name;\n getAllUsers();\n scope.refreshUsers = true;\n }); \n }\n scope.predefinedPostIts = function (show) {\n scope.showPostIts = show;\n if (!scope.settings) {\n var boardOptions = {\n IsWeeklyBoard: false,\n viewModeSelection: \"year\"\n }\n scope.settings = {\n boardOptions : boardOptions\n };\n }\n scope.settings.showPostIts = scope.showPostIts;\n if (scope.showPostIts) {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'postitPredefinedTags.html',\n controller: 'postitPredefinedTags',\n resolve: {\n labels: function () {\n return scope.settings.PostIts;\n }\n }\n });\n\n modalInstance.result.then(function (result) {\n scope.settings.PostIts = result;\n boardService.updateSettings(scope.board.id, scope.settings).then(function () {\n });\n\n });\n } else {\n boardService.updateSettings(scope.board.id, scope.settings).then(function () {\n });\n }\n }\n\n scope.subscribe(\"BoardSettingUpdated\", function (boardsettinginfo) {\n if (boardsettinginfo.boardId === scope.board.id) {\n checkBoardSettings(boardsettinginfo.settings);\n }\n });\n scope.createLayoutAndLoad = function () {\n scope.data.rows = rowProvider().createRows(scope.model, scope.selectedCategory);\n scope.selectedViewMode.load();\n }\n\n scope.previousYear = function () {\n selectYear(scope.selectedYear - 1);\n }\n scope.nextYear = function () {\n selectYear(scope.selectedYear + 1);\n }\n scope.previousMonth = function (refreshData) {\n var previousMonth = scope.selectedMonth.id - 1;\n if (previousMonth == 0) {\n previousMonth = 12;\n scope.selectedYear -= 1;\n }\n var previousMonthIndex = previousMonth - 1; // subtract index\n var month = scope.months[previousMonthIndex];\n month.weeks = timeService.getWeeksInMonth(scope.selectedYear, month.id);\n scope.selectMonth(month, refreshData);\n }\n scope.nextMonth = function (refreshData) {\n var nextMonth = scope.selectedMonth.id + 1;\n if (nextMonth == 13) {\n nextMonth = 1;\n scope.selectedYear += 1;\n }\n var nextMonthIndex = nextMonth - 1; // subtract for index\n var month = scope.months[nextMonthIndex];\n month.weeks = timeService.getWeeksInMonth(scope.selectedYear, month.id);\n scope.selectMonth(month, refreshData);\n }\n scope.previousWeek = function () {\n var currentWeekIndex = scope.selectedMonth.weeks.indexOf(scope.selectedWeek);\n var currentWeekNumber = scope.selectedWeek.number;\n var previousWeekIndex = currentWeekIndex - 1;\n if (currentWeekIndex == 0) { // First week, so we need to go back a month\n scope.previousMonth(false);\n previousWeekIndex = scope.selectedMonth.weeks.length - 1;\n }\n var previousWeek = scope.selectedMonth.weeks[previousWeekIndex];\n if (previousWeekIndex == (scope.selectedMonth.weeks.length - 1) && previousWeek.number == currentWeekNumber) {\n previousWeek = scope.selectedMonth.weeks[previousWeekIndex - 1];\n }\n scope.selectWeek(previousWeek, true);\n }\n scope.nextWeek = function () {\n var currentWeekIndex = scope.selectedMonth.weeks.indexOf(scope.selectedWeek);\n var currentWeekNumber = scope.selectedWeek.number;\n var nextWeekIndex = currentWeekIndex + 1;\n if (nextWeekIndex > (scope.selectedMonth.weeks.length - 1)) { // Last week of month, so we need to go forward a month\n scope.nextMonth(false);\n nextWeekIndex = 0;\n }\n var nextWeek = scope.selectedMonth.weeks[nextWeekIndex];\n // If week is share between two months, we need to move it to the next\n if (nextWeekIndex == 0 && nextWeek.number == currentWeekNumber) {\n nextWeek = scope.selectedMonth.weeks[1];\n }\n scope.selectWeek(nextWeek, true);\n }\n\n var selectYear = function (year) {\n scope.selectedYear = year;\n // Adjust month\n var month = scope.months[0];\n month.weeks = timeService.getWeeksInMonth(scope.selectedYear, month.id);\n scope.selectedMonth = month;\n setMonthSelection(month);\n scope.selectedWeek = month.weeks[0];\n setWeekSelection(scope.selectedWeek);\n\n scope.selectedViewMode.load();\n }\n\n var initTask = function (task) {\n // Add animation function\n task.animate = function (animation) {\n task.animationClass = \"animated \" + animation;\n setTimeout(function () {\n task.animationClass = \"\";\n // Make sure animated class is removed\n $(elem).find(\".task[data-id=\" + task.id + \"]\").removeClass(\"animated\");\n }, 2000);\n };\n }\n\n scope.createTask = function ($event, row, targetMode, targetPeriodIndex, taskOptions) {\n if (!scope.editable) return;\n var targetCell = $(\".drop-row[data-rowindex='\" + row.index + \"'] td[data-cell-id='\" + targetPeriodIndex + \"']\");\n $(targetCell).addClass(\"active-cell\");\n\n if (!taskOptions && scope.postIts) {\n taskOptions = {\n postIts: scope.postIts\n }\n }\n var rowId = null;\n if (!scope.useActionList) {\n rowId = row.id;\n }\n var startTime, endTime;\n\n if (targetMode == \"month\") {\n // TargetPeriod = month object\n // month in moment is 0 based, so 9 is actually october, subtract 1 to compensate\n // array is 'year', 'month', 'day', etc\n startTime = moment([scope.selectedYear, targetPeriodIndex - 1]).toDate();\n endTime = moment(startTime).endOf('month').toDate();\n }\n if (targetMode == \"week\") {\n // TargetPeriod = month object\n var selectedWeek = $filter('filter')(scope.selectedMonth.weeks, { number: targetPeriodIndex })[0];\n //var selectedWeek = scope.selectedMonth.weeks[targetPeriodIndex -1];\n startTime = selectedWeek.startDate,\n endTime = selectedWeek.endDate\n }\n if (targetMode == \"day\") {\n // TargetPeriod = day object\n\n var day = scope.selectedWeek.days[targetPeriodIndex - 1];\n startTime = day.date,\n endTime = day.date\n }\n\n var task = {\n boardId: scope.board.id,\n id: 0,\n rowCategoryId: rowId,\n startTime: startTime,\n endTime: endTime,\n title: \"\",\n status: 'blank',\n tags: \"\"\n }\n\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'newYearlyTask.html',\n controller: 'newYearlyTaskController',\n resolve: {\n task: function () {\n return task;\n },\n options: function () {\n return taskOptions;\n },\n users: function () {\n return scope.users;\n }\n }\n });\n\n modalInstance.result.then(function (result) {\n // publish update\n $(targetCell).removeClass(\"active-cell\");\n }, function () {\n $(targetCell).removeClass(\"active-cell\");\n });\n\n }\n\n scope.taskDurationChangedHandler = function (task) {\n var service = renderService();\n clearAnimations();\n task.animate(\"rubberBand\");\n service().calculateDuration(task, getSelectedTimeOptions());\n service().reCalculateRow(scope.data, task.rowCategoryId, getSelectedTimeOptions());\n //if(task.subTaskCount >0)\n //updateSubTaskDueDate(task, 30);\n\n };\n\n function couldMoveSubTasks(task) {\n if (task.subTaskCount > 0 && task.subTaskCount > task.subTaskCompletedCount) {\n return true;\n }\n return false;\n }\n\n function updateSubTaskDueDate(task, days) {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'moveSubTask.html',\n controller: 'moveSubTaskController',\n resolve: {\n parenttask: function () {\n return task;\n },\n days: function () {\n return days;\n }\n }\n });\n\n modalInstance.result.then(function (result) {\n }, function () {\n });\n }\n\n var renderTasks = function (tasks, renderOptions) {\n\n for (let index = 0; index < tasks.length; index++) {\n const task = tasks[index];\n renderTask(task, renderOptions);\n }\n }\n\n var renderTask = function (task, renderOptions) {\n var actionListTasks = [];\n if (scope.useActionList) {\n actionListTasks = scope.smartActionListTasks;\n }\n if (!task.startTime) {\n task.startTime = task.endTime;\n }\n initTask(task);\n task.users = scope.users;\n if (renderOptions && renderOptions.animationClass) {\n task.animate(renderOptions.animationClass);\n }\n var service = renderService();\n service().calculateDuration(task, getSelectedTimeOptions());\n // if using action list, we need to merge cellModels to the task\n if (scope.useActionList) {\n // Find \n var row = scope.data.rows[0];\n var actionListTask = $filter('filter')(actionListTasks, { id: task.id });\n if (actionListTask.length > 0) {\n // extend task with attributes\n task.attributes = actionListTask[0].cellModels;\n row = rowProvider().getRowForTask(scope.model, scope.selectedCategory, scope.data.rows, task);\n }\n\n\n service().addTaskToRow(task, row, getSelectedTimeOptions());\n\n } else {\n // Find correct category\n var category = $filter('filter')(scope.data.rows, { id: task.rowCategoryId });\n if (category.length > 0) {\n var row = category[0];\n service().addTaskToRow(task, row, getSelectedTimeOptions());\n }\n }\n }\n\n var clearAnimations = function () {\n for (let index = 0; index < scope.data.tasks.length; index++) {\n const task = scope.data.tasks[index];\n task.animationClass = \"\";\n }\n }\n\n function loadTasks(renderOptions){\n if(scope.showArchive){\n boardService.getArchivedTimeTasksForPeriod(scope.board.id, scope.currentTimePeriod).then(function (tasks) {\n scope.data.tasks = tasks;\n renderTasks(scope.data.tasks, renderOptions);\n for (let index = 0; index < scope.data.rows.length; index++) {\n const row = scope.data.rows[index];\n row.isRecalculating = false;\n }\n });\n } else {\n boardService.getTasksForPeriod(scope.board.id, scope.currentTimePeriod).then(function (tasks) {\n scope.data.tasks = tasks;\n renderTasks(scope.data.tasks, renderOptions);\n for (let index = 0; index < scope.data.rows.length; index++) {\n const row = scope.data.rows[index];\n row.isRecalculating = false;\n }\n });\n }\n \n }\n\n scope.currentTimePeriod = null;\n var loadYear = function () {\n if (scope.board && scope.board.id) {\n var displayYear = getDisplayPeriods().year;\n var year = scope.selectedYear;\n var renderOptions = {\n animationClass: \"slideInLeft\"\n }\n if (year && year > displayYear) {\n renderOptions.animationClass = \"slideInRight\";\n }\n scope.data.tasks = [];\n for (let index = 0; index < scope.data.rows.length; index++) {\n const row = scope.data.rows[index];\n row.taskRows = [];\n row.isRecalculating = true;\n }\n\n var startTime = moment([year, 1]).toDate();\n startTime = moment(startTime).startOf('year').toDate();\n var endTime = moment(startTime).endOf('year').toDate();\n\n var timePeriod = {\n from: startTime,\n to: endTime\n };\n scope.currentTimePeriod = timePeriod;\n loadTasks(renderOptions);\n }\n\n }\n\n var loadMonth = function () {\n if (scope.board && scope.board.id) {\n var displayMonth = getDisplayPeriods().month;\n var month = scope.selectedMonth;\n var startTime = month.weeks[0].startDate;\n var endTime = month.weeks[month.weeks.length - 1].endDate;\n var timePeriod = {\n from: startTime,\n to: endTime\n };\n\n var renderOptions = {\n animationClass: \"slideInLeft\"\n }\n if (month && month > displayMonth) {\n renderOptions.animationClass = \"slideInRight\";\n }\n scope.data.tasks = [];\n for (let index = 0; index < scope.data.rows.length; index++) {\n const row = scope.data.rows[index];\n row.taskRows = [];\n row.isRecalculating = true;\n }\n\n scope.currentTimePeriod = timePeriod;\n loadTasks(renderOptions);\n }\n }\n var loadWeek = function () {\n if (scope.board && scope.board.id) {\n var displaWeek = getDisplayPeriods().week;\n var week = scope.selectedWeek;\n var renderOptions = {\n animationClass: \"slideInLeft\"\n }\n if (week && week > displaWeek) {\n renderOptions.animationClass = \"slideInRight\";\n }\n scope.data.tasks = [];\n for (let index = 0; index < scope.data.rows.length; index++) {\n const row = scope.data.rows[index];\n row.taskRows = [];\n row.isRecalculating = true;\n }\n\n var timePeriod = {\n from: scope.selectedWeek.startDate,\n to: scope.selectedWeek.endDate\n };\n scope.currentTimePeriod = timePeriod;\n loadTasks(renderOptions);\n }\n }\n var getTask = function (taskId) {\n var task = $filter('filter')(scope.data.tasks, { id: taskId });\n if (task.length === 1) return task[0];\n return null;\n }\n var getRowById = function (rowId) {\n return $filter('filter')(scope.data.rows, { id: rowId })[0];\n }\n\n var getRowByIndex = function (index) {\n return $filter('filter')(scope.data.rows, { index: index })[0];\n }\n //::::::::::::::::::::::\n // DRAG AND DROP \n //::::::::::::::::::::::\n\n dragulaService.options(scope, 'task-container-bag', {\n revertOnSpill: true,\n removeOnSpill: true,\n copy: true,\n accepts: function (el, target, source, sibling) {\n var canAccept = $(target).hasClass(\"drop-row-cell\");\n // console.log(canAccept);\n return canAccept;\n },\n moves: function (el, target, source, sibling) {\n return scope.editable;\n },\n\n });\n scope.$on('task-container-bag.drag', function (container, source, el) {\n $(\".drop-row\").css('z-index', 10);\n $(\".gu-mirror\").css('width', 1000);\n el.removeClass('animated');\n });\n scope.$on('task-container-bag.drop', function (container, source, el) {\n var targetOptions = {\n targetYear: parseInt(el.attr(\"data-year\")),\n targetMonth: parseInt(el.attr(\"data-month\")),\n targetYearEnd: parseInt(el.attr(\"data-year-end\")),\n targetWeek: parseInt(el.attr(\"data-week-index\")),\n targetDay: parseInt(el.attr(\"data-day\"))\n }\n var dropRowElement = $(source).closest(\".drop-row\");\n var rowIndex = parseInt(dropRowElement.attr(\"data-rowindex\"));\n var targetRow = getRowByIndex(rowIndex);\n var targetCellId = parseInt(el.attr(\"data-cell-id\"))\n\n // Check if post it\n var postItElement = $(source).hasClass(\"post-it\");\n if (postItElement) {\n var taskOptions = {\n color: $(source).attr(\"data-color\"),\n postIts: scope.postIts\n }\n // If we use smartactionlist we need to apply row attributes\n if (scope.useActionList) {\n var attribute = targetRow.getAttribute();\n taskOptions.attribute = attribute;\n }\n\n var targetMode = \"month\";\n if (scope.selectedViewMode.viewMode == \"month\") targetMode = \"week\";\n if (scope.selectedViewMode.viewMode == \"week\") targetMode = \"day\";\n // Create Task\n scope.createTask(null, targetRow, targetMode, targetCellId, taskOptions);\n // Reset drop\n $(\".drop-row\").css('z-index', 1);\n $(\".drop-row .post-it\").remove();\n return;\n }\n\n // Find task being dropped\n var taskElement = $(source).find(\".task\");\n var taskId = parseInt(taskElement.attr(\"data-id\"));\n var task = getTask(taskId);\n if (!task) return;\n var origionalEndTime = task.endTime;\n var origionalBoardDate = task.boardDate;\n var previousRowIndex = task.rowIndex;\n targetRow.isRecalculating = true;\n var targetCategoryId = parseInt(el.attr(\"data-category-id\"));\n task.animate(\"bounce\");\n // Gonna use a timeout for smoother redrawing\n setTimeout(function () {\n // Render layout again to adapt drop\n var previousRowId = task.rowCategoryId;\n task.rowCategoryId = targetCategoryId;\n task.rowIndex = rowIndex;\n // move task in structure\n var service = renderService();\n if (scope.useActionList) {\n // update cell according to row(smartcolumn)\n targetRow.updateTask(scope.selectedCategory, task);\n }\n service().moveTask(task, targetOptions, getSelectedTimeOptions());\n service().reCalculateRowByIndex(scope.data, previousRowIndex, getSelectedTimeOptions());\n service().reCalculateRowByIndex(scope.data, rowIndex, getSelectedTimeOptions());\n\n scope.commitDurationChanged(task);\n if (couldMoveSubTasks(task)) {\n var changedDuration = timeService.getDurationInDays(origionalEndTime, task.endTime);\n if (changedDuration != 0) {\n updateSubTaskDueDate(task, changedDuration);\n }\n }\n if (!scope.useActionList && previousRowId != targetCategoryId) {\n scope.commitRowPositionUpdatedDebounced(task.id, previousRowId, targetCategoryId);\n }\n // Clean up drop row\n $(\".drop-row\").css('z-index', 1);\n $(\".drop-row .task-container\").remove();\n targetRow.isRecalculating = false;\n }, 600);\n \n });\n\n\n scope.$on('task-container-bag.over', function (container, source, el) {\n // highlight drop cell\n el.addClass('drag-over');\n var taskElement = $(source.context).find(\".task\");\n var taskId = parseInt(taskElement.attr(\"data-id\"));\n var task = getTask(taskId);\n if (!task) return;\n var targetMonthNumber = parseInt(el.attr(\"data-month\"));\n var targetWeekNumber = parseInt(el.attr(\"data-week-index\"));\n var targetDayNumber = parseInt(el.attr(\"data-day\"));\n\n if (scope.selectedViewMode.viewMode == \"year\") {\n for (let index = targetMonthNumber; index < (targetMonthNumber + task.durationInMonthsCurrentYear); index++) {\n $(el).siblings(\"[data-month='\" + index + \"']\").addClass('drag-over');\n }\n }\n if (scope.selectedViewMode.viewMode == \"month\") {\n for (let index = targetWeekNumber; index < (targetWeekNumber + task.durationInWeeksCurrentMonth); index++) {\n $(el).siblings(\"[data-week-index='\" + index + \"']\").addClass('drag-over');\n }\n }\n if (scope.selectedViewMode.viewMode == \"week\") {\n for (let index = targetDayNumber; index < (targetDayNumber + task.durationInDaysCurrentWeek); index++) {\n $(el).siblings(\"[data-day='\" + index + \"']\").addClass('drag-over');\n }\n }\n\n })\n scope.$on('task-container-bag.out', function (container, source, el) {\n // remove highlight of target cell\n el.removeClass('drag-over');\n el.siblings().removeClass('drag-over');\n });\n\n\n scope.updateRowPosition = function (taskId, fromRowId, toRowId) {\n var position = {\n taskId: taskId,\n fromRowId: fromRowId,\n toRowId: toRowId\n }\n boardTaskService().updateRowPosition(position).then(function (updateTask) {\n\n });\n }\n scope.saveDuration = function (task) {\n var duration = {\n startTime: task.startTime,\n endTime: task.endTime\n }\n boardTaskService().updateDuration(task.id, duration).then(function (updateTask) {\n\n });\n }\n\n // Debounce function so that save is called to often.\n scope.commitRowPositionUpdatedDebounced = debounce(scope.updateRowPosition, 1000, false);\n scope.commitDurationChanged = debounce(scope.saveDuration, 1000, false);\n\n scope.saveAsTemplate = function () {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'newboardtemplate.html',\n controller: 'newboardtemplateController',\n resolve: {\n board: function () {\n return scope.model.board;\n }\n }\n });\n\n modalInstance.result.then(function (result) {\n\n });\n }\n scope.deleteBoard = function () {\n if (!scope.hasBoardDesignerPrivileges) return;\n $translate(['COMMON_CANCEL', 'COMMON_DELETE', 'ADMIN_DELETED_BOARD', 'ADMIN_DELETED_BOARD_DESCRIPTION']).then(function (translations) {\n var modalOptions = {\n closeButtonText: translations.COMMON_CANCEL,\n actionButtonText: translations.ADMIN_DELETED_BOARD,\n headerText: translations.COMMON_DELETE + ' ' + scope.title + '?',\n bodyText: translations.ADMIN_DELETED_BOARD_DESCRIPTION\n };\n\n modalService.showModal({}, modalOptions).then(function (result) {\n boardService.deleteBoard(scope.model.board.id).then(function () {\n $state.go('myspace');\n scope.publish(\"SendBoardDeleted\", scope.model.board.id);\n });\n });\n\n });\n }\n\n scope.addToFavorites = function () {\n scope.isStar = true;\n var board = {\n id: scope.model.board.id,\n name: scope.model.board.name,\n boardType: scope.model.board.boardType\n };\n scope.quickAccess.push(board);\n saveQuickAccess();\n }\n scope.removeFromFavorites = function () {\n scope.isStar = false;\n var isFavorite = $filter('filter')(scope.quickAccess, { id: scope.model.board.id })\n if (isFavorite.length > 0) {\n var currentIndex = scope.quickAccess.indexOf(isFavorite[0]);\n scope.quickAccess.splice(currentIndex, 1);\n saveQuickAccess();\n }\n }\n function saveQuickAccess() {\n employeeService.updateUserPreference(\"FlexiboardFavoriteBoards\", scope.quickAccess).then(function (settings) {\n scope.publish(\"FlexiboardFavoriteBoardsChanged\", scope.quickAccess);\n });\n }\n\n function checkFavorite(){\n employeeService.getUserPreference(\"FlexiboardFavoriteBoards\").then(function (settings) {\n if (settings && settings.value) {\n angular.forEach(settings.value, function (board) {\n if (board) {\n if(board.id == scope.model.board.id){\n scope.isStar = true;\n }\n scope.quickAccess.push(board);\n }\n });\n }\n });\n }\n }\n }\n }]);\n","import * as timeService from \"@common/services/timeService\"\nimport * as boardService from \"@common/services/boardService\"\nimport toaster from \"@common/components/toast\"\n\nvar DigiLean = angular.module('DigiLean');\nDigiLean.directive('yearlyBoardDesigner', ['$filter', '$translate', '$uibModal', 'modalService',\n function ($filter, $translate, $uibModal, modalService) {\n return {\n templateUrl: 'yearlyboardDesigner.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n },\n link: function ($scope, elem, attrs) {\n $scope.board = null;\n $scope.isPublic = false;\n $scope.new = \"New\";\n $scope.months = timeService.getMonths();\n var settings = null;\n\n $scope.yearlyBoardOptions = {\n showTeamMembers: true,\n showHeader: true,\n taskDetailLevel: \"normal\",\n viewModeSelection: \"year\"\n };\n\n $scope.$watch(\"model\", function (model) {\n if ($scope.model == null) return;\n var board = model.board;\n board.rows = model.rows;\n angular.forEach(board.rows, function (row) {\n row.style = {\n \"background\": row.categoryStyle.backgroundColor,\n \"color\": row.categoryStyle.foregroundColor\n }\n if (row.weekdayName) {\n row.isWeekday = true;\n } else {\n row.isWeekday = false;\n }\n });\n \n $scope.board = board;\n $scope.boardId = board.id;\n $scope.isPublic = board.isPublic;\n if ($scope.board.settings) {\n settings = JSON.parse($scope.board.settings);\n if(settings.boardOptions){\n $scope.yearlyBoardOptions = settings.boardOptions; \n }\n }\n loadUsers();\n });\n $translate('COMMON_NEW').then(function (translated) {\n $scope.new = translated;\n });\n\n $scope.updateBoard = function () {\n $scope.board.isPublic = $scope.isPublic;\n boardService.update($scope.board.id, $scope.board).then(function () {\n $translate('BOARD_UPDATED').then(function (msg) {\n toaster.success(msg);\n });\n });\n }\n\n $scope.rowSortableOptions = {\n clone: false,\n accept: function (sourceItemHandleScope, destSortableScope) {\n return sourceItemHandleScope.itemScope.sortableScope.$id === destSortableScope.$id;\n },\n orderChanged: function (event) {\n var sortOrders = [];\n angular.forEach($scope.board.rows, function (row, key) {\n console.log(\"row sortOrder: \" + key + \", name: \" + row.name);\n row.sortOrder = key;\n var sortOrder = { id: row.id, sortOrder: key }\n sortOrders.push(sortOrder);\n });\n boardService.changeSortOrder($scope.boardId, sortOrders).then(function () {\n console.log(\"Saved\");\n });\n }\n };\n\n function loadUsers() {\n boardService.getUserListForBoard($scope.board.id).then(function (data) {\n $scope.users = data;\n });\n }\n var categoryEditOptions = {\n hideWeekDayOption : true\n };\n\n function updateSettings(){\n $scope.board.settings = settings;\n $scope.board.settings.boardOptions = $scope.yearlyBoardOptions;\n boardService.updateSettings($scope.board.id, $scope.board.settings).then(function () {\n\n });\n }\n $scope.updateBoardOptionsDetailLevel = function (detaillevel) {\n $scope.yearlyBoardOptions = {\n showTeamMembers: $scope.yearlyBoardOptions.showTeamMembers,\n showHeader: $scope.yearlyBoardOptions.showHeader,\n taskDetailLevel: detaillevel,\n viewModeSelection: $scope.yearlyBoardOptions.viewModeSelection\n };\n updateSettings();\n //settings: JSON.stringify({\n // IsWeeklyBoard: template.isWeeklyBoard\n // })\n //$scope.updateBoard();\n \n }\n\n $scope.updateBoardOptionsView = function (view) {\n $scope.yearlyBoardOptions = {\n showTeamMembers: $scope.yearlyBoardOptions.showTeamMembers,\n showHeader: $scope.yearlyBoardOptions.showHeader,\n taskDetailLevel: $scope.yearlyBoardOptions.taskDetailLevel,\n viewModeSelection: view\n };\n updateSettings();\n }\n\n $scope.editCategory = function (category) { \n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: $scope.animationsEnabled,\n templateUrl: 'boardCategoryDetails.html',\n controller: 'boardCategoryDetailsController',\n resolve: {\n boardCategory: function () {\n return category;\n },\n options: function() {\n return categoryEditOptions\n }\n }\n });\n\n modalInstance.result.then(function (result) {\n if (result === \"deleted\") {\n removeCategory(category);\n }\n }, function () {\n\n });\n }\n\n $scope.editMembers = function () {\n var assetId = $scope.board.assetId;\n var boardId = $scope.board.id;\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: $scope.animationsEnabled,\n templateUrl: 'assetparticipantsform.html',\n controller: 'assetParticipantsController',\n windowClass: 'assetparticipants-modal-window',\n resolve: {\n assetId: function () {\n return assetId;\n },\n boardId: function () {\n return boardId;\n }\n }\n });\n\n modalInstance.result.then(function (asset) {\n loadUsers();\n }, function () {\n\n });\n }\n\n\n\n $scope.addRow = function () {\n var style = \"\";\n if ($scope.board.rows.length > 0) {\n // Copy style from last row\n var lastRow = $scope.board.rows[$scope.board.rows.length - 1];\n style = lastRow.style;\n }\n var row = {\n boardId: $scope.boardId,\n name: $scope.new,\n isRowCategory: true,\n sortOrder: $scope.board.rows.length,\n style: style\n }\n row.categoryStyle = JSON.stringify({\n BackgroundColor: style.background,\n ForegroundColor: style.color\n });\n boardService.createCategory($scope.board.id, row).then(function (category) {\n category.style = style;\n $scope.board.rows.push(category);\n $scope.editCategory(category);\n });\n\n }\n\n\n $scope.hasValue = function (value) {\n if (value) return true;\n return false;\n }\n\n $scope.deleteCategory = function (category) {\n $translate(['COMMON_CANCEL', 'BOARD_DELETE_CATEGORY', 'COMMON_DELETE', 'BOARD_DELETE_CATEGORY_DESCRIPTION']).then(function (translations) {\n var modalOptions = {\n closeButtonText: translations.COMMON_CANCEL,\n actionButtonText: translations.BOARD_DELETE_CATEGORY,\n headerText: translations.COMMON_DELETE + ' ' + category.name + '?',\n bodyText: translations.BOARD_DELETE_CATEGORY_DESCRIPTION\n };\n\n modalService.showModal({}, modalOptions).then(function (result) {\n boardService.deleteCategory(category.id).then(function (data) {\n removeCategory(category);\n });\n });\n });\n }\n\n var removeCategory = function (category) {\n var row = $filter('filter')($scope.board.rows, { id: category.id }, true);\n if (row.length > 0) {\n var rowindex = $scope.board.rows.indexOf(category);\n $scope.board.rows.splice(rowindex, 1);\n }\n }\n }\n }\n }]);","import * as timeService from \"@common/services/timeService\"\n\nangular\n .module('DigiLean')\n .directive(\"yearlyTask\", ['$filter', '$translate', 'modalService', 'debounce', 'boardTaskService','$uibModal','suggestionService','deviationService',\n function ($filter, $translate, modalService, debounce, boardTaskService, $uibModal, suggestionService, deviationService) {\n return {\n templateUrl: 'yearlyTask.html',\n restrict: 'E',\n scope: {\n 'canEdit': '<',\n 'task': '<',\n 'users': '<',\n 'detailLevel': '<',\n 'postits': '<',\n 'taskDurationChangedHandler': '&',\n },\n link: function (scope, elem, attrs) {\n scope.text = \"\";\n scope.borderColor = \"#337ab7\"; // borderColor\n scope.fillColor = \"white\";\n scope.editable = true;\n scope.subTaskCount = 0;\n scope.subTaskCompletedCount = 0;\n // Dates\n\n scope.enddateBeforeStartdate = false;\n\n \n scope.$watch('task', function (task) {\n // var value = model.projectAttribute.value;\n if (task) {\n setValue(task);\n }\n });\n scope.$watch('detailLevel', function (level) {\n // var value = model.projectAttribute.value;\n var l = level;\n });\n scope.$watch('users', function (users) {\n // var value = model.projectAttribute.value;\n if (users) {\n setProfileImage();\n }\n });\n scope.$watch('postits', function (postits) {\n // var value = model.projectAttribute.value;\n if (postits) {\n scope.postIts = postits\n // Set color when we know postits has been set.\n if (scope.task) {\n setColor(scope.task.color);\n }\n }\n });\n\n var setValue = function (task) {\n if (task.startTime) {\n // Make sure boardDate is date object \n task.startTime = moment(task.startTime).toDate();\n } else {\n if(task.boardDate){\n task.startTime = moment(task.boardDate).toDate();\n }\n }\n if (task.endTime) {\n // Make sure boardDate is date object \n task.endTime = moment(task.endTime).toDate();\n } else {\n if(task.boardDate){\n task.endTime = moment(task.boardDate).toDate();\n }\n }\n task.isVisible = true;\n task.duration = timeService.getDurationInDays(task.startTime, task.endTime);\n if (task.responsibleUserId) {\n setProfileImage();\n }\n\n setColor(task.color);\n scope.subTaskCount = task.subTaskCount;\n scope.subTaskCompletedCount = task.subTaskCompletedCount;\n\n }\n\n var setColor = function (taskColor) {\n // Try to match fillColor\n if (!scope.postIts) return;\n var predefinedPostIt = $filter('filter')(scope.postIts, { fillColor: taskColor });\n if (predefinedPostIt.length > 0) {\n scope.selectedPostIt = predefinedPostIt[0];\n setStyle(scope.selectedPostIt.fillColor, scope.selectedPostIt.background)\n } else {\n // Try to match background color\n var backgroundPostIt = $filter('filter')(scope.postIts, { background: taskColor });\n if (backgroundPostIt.length > 0) {\n scope.selectedPostIt = backgroundPostIt[0];\n setStyle(scope.selectedPostIt.fillColor, scope.selectedPostIt.background)\n } else if (taskColor == \"#ffffff\"){\n setStyle(scope.fillColor, scope.borderColor);\n } else {\n // custom color or previous predefined labels\n setStyle(taskColor, taskColor);\n }\n }\n\n }\n\n var setProfileImage = function () {\n if (!scope.task || !scope.task.responsibleUserId || !scope.users) return;\n \n for (var i = 0; i < scope.users.length; i++) {\n var user = scope.users[i];\n if (user.profileImageUrl && user.userId == scope.task.responsibleUserId) {\n scope.task.responsibleImageUrl = user.profileImageUrl;\n }\n }\n }\n\n var setStyle = function (fillColor, borderColor) {\n var task = scope.task;\n if (!task.style) {\n task.style = {}\n }\n if (fillColor == \"#ffffff\") {\n borderColor = scope.borderColor;\n }\n task.style.fillColor = fillColor;\n task.style.borderColor = borderColor;\n }\n\n function checkIsenddateBeforeStartdate(){\n scope.enddateBeforeStartdate = false;\n if(moment(scope.task.endTime).isBefore(scope.task.startTime)){\n scope.enddateBeforeStartdate = true;\n }\n return scope.enddateBeforeStartdate\n }\n\n scope.cloneTask = function () {\n $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'clonetask.html',\n controller: 'clonetaskController',\n resolve: {\n task: function () {\n return scope.task;\n }\n }\n });\n }\n\n scope.repeatTask = function () {\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'repeattask.html',\n controller: 'repeattaskController',\n resolve: {\n task: function () {\n return scope.task;\n }\n }\n });\n modalInstance.result.then(function (result) {\n // publish update\n scope.publish('SendTaskRepeated', result);\n });\n }\n\n scope.moveTask = function () {\n $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'movetask.html',\n controller: 'movetaskController',\n resolve: {\n task: function () {\n return scope.task;\n }\n }\n });\n }\n \n scope.openImprovement = function (improvementid) {\n suggestionService().get(improvementid).then(function (suggestion) {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n templateUrl: 'fullImprovementInfoForm.html',\n controller: 'fullImprovementModalController',\n windowClass: 'fullSuggestion-modal-window',\n resolve: {\n suggestion: function () {\n return suggestion;\n },\n activeTab: function () {\n return \"Info\";\n }\n }\n });\n });\n }\n scope.openDeviation = function (deviationid) {\n deviationService().get(deviationid).then(function (deviation) {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n templateUrl: 'fullDeviation.html',\n controller: 'fullDeviationController',\n windowClass: 'full-screen',\n resolve: {\n deviation: function () {\n return deviation;\n },\n activeTab: function () {\n return \"Info\";\n }\n }\n });\n });\n }\n scope.openCloneInfo = function(task) {\n \n $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'cloneInfo.html',\n controller: 'cloneInfoController',\n resolve: {\n task: function () {\n return task;\n }\n }\n });\n }\n\n scope.selectColor = function (postIt) {\n scope.selectedPostIt = postIt;\n setStyle(postIt.fillColor, postIt.background)\n if(postIt.tags){\n var tagArray = postIt.tags;\n for (var i = 0; i < tagArray.length; i++) {\n $(\"#taskTags\").tagit('createTag', tagArray[i]);\n }\n }\n scope.commitChangesDebounced();\n }\n scope.textChanged = function (text) {\n scope.commitChangesDebounced();\n }\n\n scope.emptyUser = {\n id: '',\n userName: null,\n profileImageUrl: null,\n fullName: null,\n displayName: null\n }\n scope.selectUser = function (user) {\n\n var assignUser = {\n taskId: scope.task.id,\n previousUserId: scope.task.responsibleUserId,\n previousUserName: scope.task.responsibleUser,\n userId: user.userId,\n userName: user.fullName,\n userDisplayName: user.displayName\n }\n var options = {\n taskId: scope.task.id,\n user: assignUser\n };\n\n scope.task.responsibleImageUrl = user.profileImageUrl;\n scope.task.responsibleUserId = user.id;\n scope.task.responsibleUser = user.fullName;\n scope.task.responsibleDisplayName = user.displayName;\n boardTaskService().assignUser(options).then(function () {\n\n });\n //boardTaskService()\n }\n\n scope.startTimeUpdated = function ($event) {\n const date = $event.originalEvent.detail\n scope.task.startTime = date\n if(checkIsenddateBeforeStartdate()) {\n scope.startTimeOpened = false;\n scope.endTimeOpened = false;\n return;\n }\n scope.taskDurationChangedHandler({ task: scope.task })\n scope.commitDurationChanged();\n \n }\n scope.endTimeUpdated = function ($event) {\n const date = $event.originalEvent.detail\n scope.task.endTime = date\n if(checkIsenddateBeforeStartdate()) {\n scope.startTimeOpened = false\n scope.endTimeOpened = false\n return\n }\n scope.taskDurationChangedHandler({ task: scope.task })\n scope.commitDurationChanged()\n }\n\n scope.saveChanges = function () {\n var task = {\n id: scope.task.id,\n title: scope.task.title,\n text: scope.task.text,\n color: scope.task.style.borderColor,\n tags: scope.tags\n };\n boardTaskService().updateTask(task).then(function (updateTask) {\n\n });\n }\n scope.saveDuration = function () {\n if(!scope.enddateBeforeStartdate){\n var task = scope.task;\n var duration = {\n startTime: task.startTime,\n endTime: task.endTime\n }\n boardTaskService().updateDuration(task.id, duration).then(function (updateTask) {\n\n });\n }\n }\n\n scope.setStatus = function (status) {\n scope.task.status = status;\n var taskStatus = {\n status: status,\n taskId: scope.task.id,\n responsibleUserId: scope.task.responsibleUserId\n }\n boardTaskService().updateStatus(scope.task.id, taskStatus).then(function (result) {\n\n });\n }\n\n\n scope.delete = function () {\n var taskId = scope.task.id;\n var repeatParentId = scope.task.repeatParentId;\n var siblingId = scope.task.siblingId;\n \n if (!repeatParentId && !siblingId) {\n var modalOptions = {\n closeButtonText: $translate.instant(\"COMMON_CANCEL\"),\n actionButtonText: $translate.instant(\"COMMON_DELETE\"),\n headerText: $translate.instant(\"COMMON_DELETE_ITEM\"),\n bodyText: $translate.instant(\"COMMON_DELETE_ITEM_DESCRIPTION\"),\n };\n \n modalService.showModal({}, modalOptions).then(function (result) {\n boardTaskService().deleteTask(scope.task.id).then(function () {\n \n });\n });\n }\n \n if (repeatParentId) {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'repeatdelete.html',\n controller: 'repeatdeleteController',\n windowClass: 'newdeviation-modal-window',\n resolve: {\n taskId: function () {\n return taskId;\n },\n repeatParentId: function () {\n return repeatParentId;\n }\n }\n });\n modalInstance.result.then(function (result) {\n //$uibModalInstance.close(scope.task);\n });\n }\n \n if (siblingId) {\n \n $translate(['COMMON_CANCEL', 'BOARD_DELETE_TASKS', 'BOARD_DELETE_CLONED_TASK', 'BOARD_DELETE_CLONED_TASK_DESCRIPTION']).then(function (translations) {\n var modalOptions = {\n closeButtonText: translations.COMMON_CANCEL,\n actionButtonText: translations.BOARD_DELETE_TASKS,\n headerText: translations.BOARD_DELETE_CLONED_TASK,\n bodyText: translations.BOARD_DELETE_CLONED_TASK_DESCRIPTION\n };\n \n modalService.showModal({}, modalOptions).then(function (result) {\n boardTaskService().deleteClonedTask(siblingId).then(function (result) {\n scope.publish(\"SendTasksDeleted\", result);\n //$uibModalInstance.dismiss('cancel');\n });\n });\n });\n }\n }\n\n scope.copyTask = function (task) {\n boardTaskService().copyTask(task.id);\n }\n\n // Debounce function so that save is called to often.\n scope.commitChangesDebounced = debounce(scope.saveChanges, 1000, false);\n scope.commitDurationChanged = debounce(scope.saveDuration, 1000, false);\n\n scope.subscribe('TaskUpdated', function (task) {\n if (task.id == scope.task.id) {\n scope.task.title = task.title;\n scope.task.description = task.description;\n scope.task.tags = task.tags;\n scope.task.color = task.color;\n scope.task.siblingId = task.siblingId;\n setColor(scope.task.color);\n scope.task.animate(\"pulse\");\n }\n });\n scope.subscribe('TaskAssigned', function (taskAssigned) {\n if (taskAssigned.taskId == scope.task.id) {\n scope.task.responsibleUserId = taskAssigned.userId;\n scope.task.responsibleUser = taskAssigned.userName;\n scope.task.responsibleDisplayName = taskAssigned.userDisplayName;\n setProfileImage();\n scope.task.animate(\"pulse\");\n }\n });\n scope.subscribe('TaskStatusUpdated', function (status) {\n if (status.taskId == scope.task.id && scope.task.status != status.status) {\n scope.task.status = status.status;\n if (status.status == \"OK\") {\n scope.task.animate(\"tada\");\n } else {\n scope.task.animate(\"bounce\");\n }\n\n }\n });\n\n scope.subscribe(\"SubTaskCountChanged\", function (count) {\n if (count.taskId == scope.task.id || count.taskId == scope.task.siblingId) {\n scope.subTaskCount = count.subTaskCount;\n scope.subTaskCompletedCount = count.subTaskCompletedCount;\n }\n });\n\n scope.openTask = function (taskId, tab) {\n var options = {\n archiveAvailable: false\n }\n if(taskId == scope.task.id){\n options = {\n archiveAvailable: false,\n postIts: scope.postIts,\n startdateAvailable: true,\n users: scope.users\n }\n }\n boardTaskService().get(taskId).then(function (task) {\n $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'boardTask.html',\n controller: 'boardTaskController',\n resolve: {\n task: function () {\n return task;\n },\n activeTab: function () {\n return tab;\n },\n options: function () {\n return options;\n }\n }\n });\n });\n };\n }\n\n\n }\n }]);\n","import * as boardService from \"@common/services/boardService\"\n\nangular\n .module('DigiLean')\n .directive(\"threeCBoardSelector\", ['$translate',\n function ($translate) {\n return {\n templateUrl: 'threeCBoardSelector.html',\n restrict: 'E',\n scope: {\n 'boardSelected': '&'\n },\n link: function (scope, elem, attrs) {\n scope.selectedBoard = null;\n\n boardService.getBoardsOfType('3C').then(function (data) {\n scope.boards = data;\n });\n\n scope.changeBoard = function (board) {\n scope.selectedBoard = board;\n // Raise event\n scope.boardSelected({\n board: board\n });\n }\n }\n }\n }]);\n","import * as boardService from \"@common/services/boardService\"\n\nangular\n .module('DigiLean')\n .directive(\"memberBoardSelector\", ['$translate',\n function ($translate) {\n return {\n templateUrl: 'memberBoardSelector.html',\n restrict: 'E',\n scope: {\n 'boardSelected': '&',\n 'includePersonalBoard': '&'\n },\n link: function (scope, elem, attrs) {\n scope.selectedBoard = null;\n\n boardService.getMemberBoards().then(function (data) {\n scope.boards = data;\n if (scope.includePersonalBoard) {\n var personalBoard = {\n name: $translate.instant('BOARD_PERSONAL_BOARD'),\n id: null,\n boardType: \"PERSONAL\"\n }\n scope.boards.unshift(personalBoard);\n }\n });\n\n scope.changeBoard = function (board) {\n scope.selectedBoard = board;\n // Raise event\n scope.boardSelected({\n board: board\n });\n }\n }\n }\n }]);\n","import * as timeService from \"@common/services/timeService\"\nimport * as boardService from \"@common/services/boardService\"\nimport toaster from \"@common/components/toast\"\n\nvar DigiLean = angular.module('DigiLean');\nDigiLean.directive('dynamicBoard', ['$translate', 'boardTaskService', '$uibModal', 'navigationService', 'boardDrawService', 'suggestionService', '$state', 'deviationService', 'taskDrawingService', 'boardLayoutService', 'fileService', 'Lightbox', 'debounce',\n function ($translate, boardTaskService, $uibModal, navigationService, boardDrawService, suggestionService, $state, deviationService, taskDrawingService, boardLayoutService, fileService, Lightbox, debounce) {\n return {\n restrict: 'A',\n scope: {\n 'model': '=',\n 'week': '=',\n 'archiveoptions': '=',\n 'options': '<'\n },\n\n /* link */\n link: function (scope, elem, attrs) {\n scope.isWeeklyBoard = false;\n scope.showArchive = false;\n var isKamishibai = false;\n var boardTableContainer = $(elem).parent();\n scope.hasDeviationAccess = false;\n var postIts = [];\n\n scope.hasDeviationAccess = navigationService().hasModule(\"DEVIATION\");\n\n // Set wrapper overflow to support dropdowns not being cut off\n setTimeout(function () {\n $(\"#wrapper\").css(\"overflow-y\", \"visible\");\n })\n scope.$on('$destroy', function () {\n $(\"#wrapper\").css(\"overflow-y\", \"hidden\");\n // Remove wrapper css\n });\n\n scope.$watch('model', function () {\n if (scope.model == null) return;\n scope.title = \"loading\";\n scope.isViewer = navigationService().isViewer(scope.model.board.assetId);\n if (scope.model.board.settings) {\n scope.settings = JSON.parse(scope.model.board.settings);\n if (!scope.settings) {\n scope.settings = {};\n }\n if (scope.settings.isKamishibai) {\n isKamishibai = scope.settings.isKamishibai;\n }\n }\n if (scope.model.board.boardType == \"Weekly\") {\n scope.isWeeklyBoard = true;\n } else {\n scope.isWeeklyBoard = false;\n }\n var options = {\n board: scope.model\n };\n boardDrawService.drawBoard($(elem), options);\n\n adjustActionListHeight();\n\n\n\n boardService.canEdit(scope.model.board.id).then(function (canEdit) {\n scope.isViewer = !canEdit;\n if (canEdit) {\n // After board is drawn and DOM is updated, we can add behaviour to our board\n setupTasks();\n setupTaskModifications();\n addSortable();\n setupExpanderAndCategoryResponsible();\n setupStatus();\n boardService.getUserListForBoard(scope.model.board.id).then(function (data) {\n users = data;\n users = _.sortBy(users, function (user) { return user.firstName; })\n if (!scope.isViewer) {\n taskDrawingService().addUserList(users, updateResponsible);\n }\n });\n }\n })\n subscribeToEvents();\n addTooltipBehaviour();\n });\n scope.$watch('archiveoptions', function () {\n if (!scope.model) return;\n if (!scope.archiveoptions) return;\n if (scope.isWeeklyBoard) return;\n if (scope.archiveoptions && scope.archiveoptions.showArchive) {\n\n var timePeriod = timeService.getTimePeriod(scope.archiveoptions.timePeriod.timeframe);\n\n boardService.archivedTasksInPeriod(scope.model.board.id, timePeriod).then(function (tasks) {\n boardDrawService.redrawTasks(boardTableContainer, tasks, false, isKamishibai);\n loadImages(tasks);\n updateSubTaskStatus(tasks);\n reapplyTaskBehaviours();\n //toggleArchiveOptions\n $(boardTableContainer).find(\".move-to-archive-task\").hide();\n $(boardTableContainer).find(\".move-from-archive-task\").show();\n });\n } else {\n boardService.getTasks(scope.model.board.id).then(function (tasks) {\n boardDrawService.redrawTasks(boardTableContainer, tasks, false, isKamishibai);\n loadImages(tasks);\n updateSubTaskStatus(tasks);\n reapplyTaskBehaviours();\n $(boardTableContainer).find(\".move-to-archive-task\").show();\n $(boardTableContainer).find(\".move-from-archive-task\").hide();\n });\n }\n\n });\n scope.subscribe(\"BoardSettingUpdated\", function (boardsettinginfo) {\n if (boardsettinginfo.boardId === scope.model.board.id) {\n scope.settings = JSON.parse(boardsettinginfo.settings);\n\n if (scope.settings && scope.settings.PostIts) {\n postIts = scope.settings.PostIts;\n }\n }\n });\n scope.$watch('week', function () {\n if (scope.week == null) return;\n var weekDays = angular.element(\".weekdayContainer\");\n var daysContainers = angular.element(\".category-day-container\");\n angular.element(\"#boardTable .today\").removeClass(\"today\");\n for (var index = 0; index < weekDays.length; ++index) {\n var weekDayElement = $(weekDays[index]);\n var dayContainerElement = $(daysContainers[index]);\n var day = weekDayElement.data(\"weekday\");\n\n var cells;\n var categoryId = weekDayElement.closest(\"th\").data(\"categoryid\");\n if (categoryId) {\n cells = $(boardTableContainer).find(\"td[data-categoryid='\" + categoryId + \"']\");\n } else {\n var rowId = weekDayElement.closest(\"td\").data(\"rowid\");\n cells = $(boardTableContainer).find(\"td[data-rowid='\" + rowId + \"']\");\n }\n // Update category\n var date = timeService.getDateInWeek(day, scope.week.weekDays).toJSON();\n weekDayElement.attr('data-date', date);\n cells.attr(\"data-date\", date);\n if (timeService.isToday(date)) {\n cells.addClass(\"today\");\n }\n\n //var formattedDate = moment(date).format(\"DD.MM.YYYY\"); // Set date as text\n var formattedDate = moment(date).format(\"MMM YYYY\"); // Set date as text\n weekDayElement.html(formattedDate);\n var singleDay = moment(date).format(\"DD\");\n singleDay = singleDay.replace(/^0+/, ''); // Remove leaading zero\n dayContainerElement.html(singleDay);\n }\n\n // week has changed, so load tasks and assign dates\n var period = {\n from: scope.week.startDate.toJSON(),\n to: scope.week.endDate.toJSON()\n };\n boardService.tasksInPeriod(scope.model.board.id, period).then(function (tasks) {\n boardDrawService.redrawTasks(boardTableContainer, tasks, true, isKamishibai);\n loadImages(tasks);\n updateSubTaskStatus(tasks);\n adjustActionListHeight();\n importActionTasks();\n reapplyTaskBehaviours();\n scope.publish(\"BoardWeekLoaded\", scope.week);\n });\n });\n\n\n // \"Directives\" variables\n var cellContainer;\n var taskToBeImported = null;\n var users = [];\n\n function subscribeToEvents() {\n // When a directive, we need to access publish/subscribe on the $rootscope.\n scope.subscribe('NewTask', function (task) {\n removeAnimations();\n addTaskToBoard(task);\n loadImage(task.id, task.attachmentCount);\n reapplyTaskBehaviours();\n });\n scope.subscribe('ActionItemMovedToTask', function (task) {\n if (task.boardId === scope.model.board.id) {\n removeAnimations();\n loadImages([task]);\n reapplyTaskBehaviours();\n } else {\n removeTaskFromBoard(task.id);\n }\n });\n scope.subscribe('TaskUpdated', function (task) {\n removeAnimations();\n updateExistingTask(task);\n loadImage(task.id, task.attachmentCount);\n reapplyTaskBehaviours();\n });\n scope.subscribe(\"TaskTitleChanged\", function (data) {\n if (data.title) {\n removeAnimations();\n var task = $(boardTableContainer).find(\"div .portlet[data-id='\" + data.taskId + \"']\").first();\n $(task).find(\".taskheader\").replaceWith(data.title);\n reapplyTaskBehaviours();\n }\n });\n scope.subscribe('TaskCommentAdded', function (comment) {\n removeAnimations();\n updateCommentCount(comment);\n reapplyTaskBehaviours();\n });\n scope.subscribe('TaskCommentDeleted', function (comment) {\n removeAnimations();\n updateCommentCount(comment);\n reapplyTaskBehaviours();\n });\n scope.subscribe('TaskAttachmentCountChanged', function (attachment) {\n removeAnimations();\n updateAttachmentCount(attachment);\n loadImage(attachment.taskId, attachment.attachmentCount);\n reapplyTaskBehaviours();\n });\n\n scope.subscribe('TaskStatusUpdated', function (status) {\n removeAnimations();\n updateTaskStatus(status);\n reapplyTaskBehaviours();\n });\n scope.subscribe('TaskDeleted', function (id) {\n removeTaskFromBoard(id);\n });\n scope.subscribe('TaskArchived', function (id) {\n removeTaskFromBoard(id);\n });\n scope.subscribe('TaskMovedFromArchive', function (task) {\n addTaskToBoard(task);\n });\n scope.subscribe('TaskChangedBoard', function (change) {\n if (change.toBoardId === null || change.toBoardId === 0) {\n removeTaskFromBoard(change.taskId);\n }\n });\n\n scope.subscribe('TaskMoved', function (moveSettings) {\n removeAnimations();\n console.log(\"TaskMoved recieved:\");\n console.log(JSON.stringify(moveSettings));\n moveTaskOnBoard(moveSettings);\n boardDrawService.recalculateZindex();\n });\n scope.subscribe('TaskDateMoved', function (moveSettings) {\n removeAnimations();\n console.log(\"TaskDateMoved recieved:\");\n console.log(JSON.stringify(moveSettings));\n moveTaskDateOnBoard(moveSettings);\n boardDrawService.recalculateZindex();\n });\n scope.subscribe('TaskAssigned', function (taskAssigned) {\n taskAssignedToUser(taskAssigned);\n });\n scope.subscribe('TaskMovedToActionList', function (task) {\n removeTaskFromBoard(task.id);\n });\n scope.subscribe('TasksDeleted', function (taskIds) {\n removeTasksFromBoard(taskIds);\n });\n scope.subscribe('TaskCloned', function (task) {\n removeAnimations();\n addTaskToBoard(task);\n loadImage(task.id, task.attachmentCount);\n reapplyTaskBehaviours();\n });\n scope.subscribe('BoardCategoryAssigned', function (data) {\n assignUserToCategory(data);\n });\n }\n\n function loadImage(taskid, count) {\n if (count > 0) {\n fileService().getFilesForTask(taskid).then(function (fileResults) {\n // Draw image based on result url\n taskDrawingService().updateImage(taskid, fileResults)\n // Attachments\n taskDrawingService().updateAttachments(scope, taskid, fileResults)\n\n });\n }\n }\n\n function adjustActionListHeight() {\n var height = $(boardTableContainer).find(\"#boardTable\").height();\n $(boardTableContainer).find(\"#actionList\").css(\"min-height\", height);\n };\n\n // Load images for tasks\n function loadImages(tasks) {\n angular.forEach(tasks, function (task, key) {\n if (task.attachmentCount > 0) {\n fileService().getFilesForTask(task.id).then(function (fileResults) {\n // Draw image based on result url\n taskDrawingService().updateImage(task.id, fileResults)\n taskDrawingService().updateAttachments(scope, task.id, fileResults)\n\n });\n }\n addTaskToBoard(task);\n });\n }\n\n // Load sub task status\n function updateSubTaskStatus(tasks) {\n angular.forEach(tasks, function (task, key) {\n taskDrawingService().updateSubTask(scope, task);\n });\n }\n\n function importActionTasks() {\n if (taskToBeImported !== null && taskToBeImported.boardId === scope.model.board.id &&\n taskToBeImported.weekNumber === scope.week.weekNumber) {\n angular.forEach(taskToBeImported.tasks, function (task, key) {\n addTaskToBoard(task);\n });\n taskToBeImported = null;\n }\n }\n\n function setupToggleDescription() {\n // Toggle description\n $(boardTableContainer).find(\".descriptiontextcontainer\").click(function () {\n var portlet = $(this).closest(\".portlet\");\n var isVisible = $(portlet).find(\".description\").is(\":visible\");\n var moreButton = $(this).find(\".more-button\");\n var displayText = \"\";\n if (isVisible) {\n $(portlet).find(\".description\").hide();\n displayText = $(moreButton).attr(\"data-more\");\n } else {\n $(portlet).find(\".description\").show();\n displayText = $(moreButton).attr(\"data-less\");\n }\n $(moreButton).text(displayText);\n\n });\n }\n\n function setupTaskOpen() {\n // Edit task via date-container\n $(boardTableContainer).find(\".date-container\").off();\n $(boardTableContainer).find(\".date-container\").click(function (e) {\n cellContainer = $(this).closest(\"td\");\n var activeTask = $(this).closest(\"div .portlet\");\n var DOMtask = taskDrawingService().getTaskFromDOM(activeTask, scope.model.board.id);\n editTask(DOMtask.id);\n });\n\n // Edit task\n var tasks = $(boardTableContainer).find(\".taskheader\");\n $(boardTableContainer).find(\".taskheader\").off();\n $(boardTableContainer).find(\".taskheader\").click(function (e) {\n cellContainer = $(this).closest(\"td\");\n var activeTask = $(this).closest(\"div .portlet\");\n var DOMtask = taskDrawingService().getTaskFromDOM(activeTask, scope.model.board.id);\n editTask(DOMtask.id);\n\n });\n $(boardTableContainer).find(\".description\").off();\n $(boardTableContainer).find(\".description\").click(function (e) {\n cellContainer = $(this).closest(\"td\");\n var activeTask = $(this).closest(\"div .portlet\");\n var DOMtask = taskDrawingService().getTaskFromDOM(activeTask, scope.model.board.id);\n editTask(DOMtask.id);\n\n });\n }\n\n function removeAnimations() {\n // remove animation afterwards\n setTimeout(function () {\n $(boardTableContainer).find(\"div .portlet\").removeClass(\"animated\");\n }, 1000);\n };\n\n\n function updateTaskStatus(status) {\n taskDrawingService().updateStatus(scope.model.board.id, status.taskId, status.status, isKamishibai);\n }\n\n function resetDropdowns() {\n $(boardTableContainer).find('#boardTable .dropdown-toggle').off();\n $(boardTableContainer).find('#boardTable .dropdown-toggle').click(function () {\n if ($(this).closest(\".dropdown\").hasClass(\"open\")) {\n $(this).closest(\".dropdown\").removeClass(\"open\");\n } else {\n $(this).closest(\".dropdown\").addClass(\"open\");\n }\n });\n }\n\n function postItDroppedEvent(event, ui) {\n var draggable = ui.draggable[0];\n var color = $(draggable).data(\"color\");\n newTask(this, color);\n }\n\n function setupTasks() {\n // Drop of post-it to cell\n $(boardTableContainer).find(\".board-table-cell\").droppable({\n drop: postItDroppedEvent,\n accept: '.post-it',\n hoverClass: 'hovered'\n });\n // Drop of user to task\n $(boardTableContainer).find(\".portlet\").droppable({\n drop: userDroppedEvent,\n accept: '.activeuser',\n hoverClass: 'hovered',\n });\n // Drop of user to category\n $(boardTableContainer).find(\".boardcategory\").droppable({\n drop: userDroppedToColumnHeaderEvent,\n accept: '.activeuser',\n hoverClass: 'hovered'\n });\n $(boardTableContainer).find(\".rowcategory-user-container\").droppable({\n drop: userDroppedToRowHeaderEvent,\n accept: '.activeuser',\n hoverClass: 'hovered'\n });\n resetDropdowns();\n\n $(boardTableContainer).find(\".descriptiontextcontainer\").off();\n\n $(boardTableContainer).find(\".commentscontainer\").off();\n $(boardTableContainer).find(\".attachmentcontainer\").off();\n $(boardTableContainer).find(\".actioncontainer .clone-task\").off();\n\n $(boardTableContainer).find(\".actioncontainer .repeat-task\").off();\n $(boardTableContainer).find(\".actioncontainer .copy-task\").off();\n $(boardTableContainer).find(\".actioncontainer .delete-task\").off();\n $(boardTableContainer).find(\".actioncontainer .move-to-board-task\").off();\n $(boardTableContainer).find(\".actioncontainer .move-to-actionlist-task\").off(); //TODO: må verifiseres \n $(boardTableContainer).find(\".actioncontainer .move-to-archive-task\").off();\n $(boardTableContainer).find(\".actioncontainer .move-from-archive-task\").off();\n $(boardTableContainer).find(\".info-container .clone-icon\").off();\n $(boardTableContainer).find(\".info-container .parent-icon\").off();\n $(boardTableContainer).find(\".info-container .improvement-icon\").off();\n $(boardTableContainer).find(\".info-container .deviation-icon\").off();\n\n $(boardTableContainer).find(\".image-container\").off();\n\n\n // Improvement info\n $(boardTableContainer).find(\".info-container .improvement-icon\").click(function () {\n var improvementsuggestionid = $(this).data(\"improvementsuggestionid\");\n suggestionService().get(improvementsuggestionid).then(function (suggestion) {\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n templateUrl: 'fullImprovementInfoForm.html',\n controller: 'fullImprovementModalController',\n windowClass: 'fullSuggestion-modal-window',\n resolve: {\n suggestion: function () {\n return suggestion;\n },\n activeTab: function () {\n return \"Info\";\n }\n }\n });\n });\n });\n\n\n $(boardTableContainer).find(\".image-container\").click(function (e, ui) {\n var url = $(e.target).attr(\"src\");\n var images = [\n {\n 'url': url,\n 'thumbUrl': url\n }\n ];\n Lightbox.openModal(images, 0);\n });\n // Deviation info\n $(boardTableContainer).find(\".info-container .deviation-icon\").click(function () {\n var deviationid = $(this).data(\"deviationid\");\n deviationService().get(deviationid).then(function (deviation) {\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n templateUrl: 'fullDeviation.html',\n controller: 'fullDeviationController',\n windowClass: 'full-screen',\n resolve: {\n deviation: function () {\n return deviation;\n },\n activeTab: function () {\n return \"Info\";\n }\n }\n });\n });\n });\n\n // Redirect to A3\n $(boardTableContainer).find(\".info-container .a3-icon\").click(function () {\n var a3id = $(this).data(\"a3id\");\n $state.go('a3wizard', { id: a3id }, { reload: false });\n\n });\n\n\n // Clone info\n $(boardTableContainer).find(\".info-container .clone-icon\").click(function () {\n var siblingId = $(this).data(\"siblingid\");\n var portlet = $(this).closest(\".portlet\");\n var taskId = portlet.data(\"id\");\n var taskTitle = $(portlet).find(\".taskheader\").html();\n var task = {\n id: taskId,\n title: taskTitle,\n siblingId: siblingId\n };\n // Make sure task responsbile dropdown is closed if open.\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'cloneInfo.html',\n controller: 'cloneInfoController',\n resolve: {\n task: function () {\n return task;\n }\n }\n });\n });\n\n // Repeat info\n $(boardTableContainer).find(\".info-container .repeat-icon\").click(function () {\n var portlet = $(this).closest(\".portlet\");\n var repeatParentId = portlet.data(\"repeatparentid\");\n var taskId = portlet.data(\"id\");\n var taskTitle = $(portlet).find(\".taskheader\").html();\n var task = {\n id: taskId,\n title: taskTitle,\n repeatParentId: repeatParentId\n };\n\n $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'repeatInfo.html',\n controller: 'repeatInfoController',\n resolve: {\n task: function () {\n return task;\n }\n }\n });\n });\n\n // parent task info\n $(boardTableContainer).find(\".info-container .parent-icon\").click(function () {\n var parentId = $(this).data(\"parentid\");\n var portlet = $(this).closest(\".portlet\");\n var taskId = portlet.data(\"id\");\n var taskTitle = $(portlet).find(\".taskheader\").html();\n var task = {\n id: taskId,\n title: taskTitle,\n parentId: parentId\n };\n // Make sure task responsbile dropdown is closed if open.\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'parenttaskInfo.html',\n controller: 'parenttaskInfoController',\n resolve: {\n task: function () {\n return task;\n }\n }\n });\n });\n\n // Clone task\n $(boardTableContainer).find(\".actioncontainer .clone-task\").click(function () {\n var portlet = $(this).closest(\".portlet\");\n var taskId = portlet.data(\"id\");\n var taskTitle = $(portlet).find(\".taskheader\").html();\n var task = {\n id: taskId,\n title: taskTitle\n };\n // Make sure task responsbile dropdown is closed if open.\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'clonetask.html',\n controller: 'clonetaskController',\n resolve: {\n task: function () {\n return task;\n }\n }\n });\n var container = $(boardTableContainer).find(\".actioncontainer .dropdown\");\n container.removeClass(\"open\");\n });\n\n setupToggleDescription();\n\n // Comments\n $(boardTableContainer).find(\".commentscontainer\").click(function () {\n var portlet = $(this).closest(\".portlet\");\n var boardTask = taskDrawingService().getTaskFromDOM(portlet, scope.model.board.id);\n editTask(boardTask.id, \"Comments\");\n });\n // Attachments\n $(boardTableContainer).find(\".attachmentcontainer\").click(function () {\n var portlet = $(this).closest(\".portlet\");\n var boardTask = taskDrawingService().getTaskFromDOM(portlet, scope.model.board.id);\n editTask(boardTask.id, \"Attachments\");\n });\n\n // Copy task\n $(boardTableContainer).find(\".actioncontainer .copy-task\").click(function () {\n var portlet = $(this).closest(\".portlet\");\n var taskId = portlet.data(\"id\");\n boardTaskService().copyTask(taskId).then(function (task) {\n });\n var container = $(boardTableContainer).find(\".actioncontainer .dropdown\");\n container.removeClass(\"open\");\n });\n // Repeat task\n $(boardTableContainer).find(\".actioncontainer .repeat-task\").click(function () {\n var portlet = $(this).closest(\".portlet\");\n var taskId = portlet.data(\"id\");\n var taskTitle = $(portlet).find(\".taskheader\").html();\n var task = {\n id: taskId,\n title: taskTitle\n };\n // Make sure task responsbile dropdown is closed if open.\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'repeattask.html',\n controller: 'repeattaskController',\n resolve: {\n task: function () {\n return task;\n }\n }\n });\n\n modalInstance.result.then(function (result) {\n // publish update\n scope.publish('SendTaskRepeated', result);\n });\n var container = $(boardTableContainer).find(\".actioncontainer .dropdown\");\n container.removeClass(\"open\");\n });\n\n // Move task to another board\n $(boardTableContainer).find(\".actioncontainer .move-to-board-task\").click(function () {\n var portlet = $(this).closest(\".portlet\");\n var taskId = portlet.data(\"id\");\n var taskTitle = $(portlet).find(\".taskheader\").html();\n var task = {\n id: taskId,\n title: taskTitle\n };\n // Make sure task responsbile dropdown is closed if open.\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'movetask.html',\n controller: 'movetaskController',\n resolve: {\n task: function () {\n return task;\n }\n }\n });\n\n /*\n modalInstance.result.then(function (result) {\n // publish update\n scope.publish('SendTaskRepeated', result);\n });*/\n var container = $(boardTableContainer).find(\".actioncontainer .dropdown\");\n container.removeClass(\"open\");\n });\n\n // Move task to a given actionlist\n $(boardTableContainer).find(\".actioncontainer .move-to-actionlist-task\").click(function () {\n var portlet = $(this).closest(\".portlet\");\n var taskId = portlet.data(\"id\");\n boardTaskService().get(taskId).then(function (task) {\n // Make sure task responsbile dropdown is closed if open.\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'tasktoactionlist.html',\n controller: 'tasktoactionlistController',\n resolve: {\n task: function () {\n return task;\n }\n , targetBoardId: function () {\n return task.boardId;\n }\n }\n });\n var container = $(boardTableContainer).find(\".actioncontainer .dropdown\");\n container.removeClass(\"open\");\n });\n });\n\n // Move task to a archive\n $(boardTableContainer).find(\".actioncontainer .move-to-archive-task\").click(function () {\n var portlet = $(this).closest(\".portlet\");\n var taskId = portlet.data(\"id\");\n boardTaskService().moveTaskToArchive(taskId).then(function (result) {\n var container = $(boardTableContainer).find(\".actioncontainer .dropdown\");\n container.removeClass(\"open\");\n removeTaskFromBoard(taskId);\n });\n });\n // Move task to a archive\n $(boardTableContainer).find(\".actioncontainer .move-from-archive-task\").click(function () {\n var portlet = $(this).closest(\".portlet\");\n var taskId = portlet.data(\"id\");\n boardTaskService().moveTaskFromArchive(taskId).then(function (result) {\n var container = $(boardTableContainer).find(\".actioncontainer .dropdown\");\n container.removeClass(\"open\");\n removeTaskFromBoard(taskId);\n });\n });\n\n\n // Add deviation task\n $(boardTableContainer).find(\".actioncontainer .add-deviation\").click(function () {\n var portlet = $(this).closest(\".portlet\");\n var task = taskDrawingService().getTaskFromDOM(portlet);\n addDeviation(task);\n var container = $(boardTableContainer).find(\".actioncontainer .dropdown\");\n container.removeClass(\"open\");\n });\n // Deelte task\n $(boardTableContainer).find(\".actioncontainer .delete-task\").click(function () {\n var portlet = $(this).closest(\".portlet\");\n var taskId = portlet.data(\"id\");\n var repeatParentId = portlet.data(\"repeatparentid\");\n var siblingId = portlet.data(\"siblingid\");\n\n if (!repeatParentId && !siblingId ||\n repeatParentId == \"undefined\" && siblingId == \"undefined\") { //the previous line was not enough \n boardTaskService().deleteTask(taskId).then(function () {\n });\n var container = $(boardTableContainer).find(\".actioncontainer .dropdown\");\n container.removeClass(\"open\");\n return;\n }\n\n if (repeatParentId && repeatParentId != \"undefined\") {\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'repeatdelete.html',\n controller: 'repeatdeleteController',\n windowClass: 'newdeviation-modal-window',\n resolve: {\n taskId: function () {\n return taskId;\n },\n repeatParentId: function () {\n return repeatParentId;\n }\n }\n });\n }\n\n if (siblingId && siblingId != \"undefined\") {\n\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'clonedelete.html',\n controller: 'clonedeleteController',\n windowClass: 'newdeviation-modal-window',\n resolve: {\n taskId: function () {\n return taskId;\n },\n siblingId: function () {\n return siblingId;\n }\n }\n });\n }\n\n });\n }\n\n function addDeviation(task) {\n // Make sure task responsbile dropdown is closed if open.\n var settings = {\n task: task,\n assetId: scope.model.board.assetId\n }\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'newDeviation.html',\n controller: 'newDeviationController',\n windowClass: 'newdeviation-modal-window',\n resolve: {\n settings: function () {\n return settings;\n }\n }\n });\n\n }\n\n function updateResponsible(data) {\n boardTaskService().assignUser(data).then(function () {\n taskAssignedToUser(data.user);\n //scope.publish(\"SendTaskAssigned\", data.user);\n });\n }\n\n function taskAssignedToUser(taskAssigned) {\n var task = $(boardTableContainer).find(\"div .portlet[data-id='\" + taskAssigned.taskId + \"']\").first();\n $(task).attr(\"data-responsibleuserid\", taskAssigned.userId);\n $(task).attr(\"data-responsibleuser\", taskAssigned.userName);\n $(task).attr(\"data-displayname\", taskAssigned.userDisplayName);\n var user = \"\" + taskAssigned.userDisplayName + \"\";\n $(task).find(\".responsibleusername\").replaceWith(user);\n // Make sure task responsbile dropdown is closed if open.\n var container = $(task).find(\".responsiblecontainer .dropdown\");\n container.removeClass(\"open\");\n /*setTimeout(function () {\n $(task).find(\".responsibleusername\").removeClass(\"animated\");\n }, 1000);*/\n }\n\n function assignUserToCategory(categoryAssigned) {\n var category = $(boardTableContainer).find(\"th[data-categoryid='\" + categoryAssigned.categoryId + \"']\").first();\n // If the category is not a column, we must find the row\n if (category.length === 0) {\n category = $(boardTableContainer).find(\"td[data-rowid='\" + categoryAssigned.categoryId + \"']\").first();\n }\n var responsibleContainer = $(category).find(\".responsible-for-category\").first();\n taskDrawingService().updateResponsibleForCategory(responsibleContainer, categoryAssigned);\n setupCategoryResponsible();\n // activate dropdown\n return;\n\n //var task = $(boardTableContainer).find(\"div .portlet[data-id='\" + taskAssigned.taskId + \"']\").first();\n\n\n }\n\n function userDroppedEvent(event, ui) {\n var draggable = ui.draggable[0];\n var username = $(draggable).data(\"user\");\n var userId = $(draggable).data(\"userid\");\n var userDisplayName = $(draggable).data(\"displayname\");\n var task = event.target;\n var responsible = $(task).attr(\"data-responsibleuser\");\n var responsibleUserId = $(task).attr(\"data-responsibleuserid\");\n\n var id = $(task).data(\"id\");\n\n var options = {\n taskId: id,\n user: {\n taskId: id,\n userName: username,\n userId: userId,\n userDisplayName: userDisplayName,\n previousUserName: responsible,\n previousUserId: responsibleUserId\n }\n }\n updateResponsible(options);\n }\n\n function userDroppedToColumnHeaderEvent(event, ui) {\n var draggable = ui.draggable[0];\n var username = $(draggable).data(\"user\");\n var userId = $(draggable).data(\"userid\");\n var userDisplayName = $(draggable).data(\"displayname\");\n var task = $(event.target).closest(\"th\");\n var id = $(task).data(\"categoryid\");\n\n var responsible = {\n boardId: scope.model.id,\n categoryId: id,\n userName: username,\n userId: userId,\n userDisplayName: userDisplayName,\n }\n\n boardService.assignResponsibleForCategory(responsible).then(function () {\n scope.publish(\"SendBoardCategoryAssigned\", responsible);\n });\n }\n\n function userDroppedToRowHeaderEvent(event, ui) {\n var draggable = ui.draggable[0];\n var username = $(draggable).data(\"user\");\n var userId = $(draggable).data(\"userid\");\n var userDisplayName = $(draggable).data(\"displayname\");\n var task = $(event.target).closest(\"td\");\n var id = $(task).data(\"rowid\");\n\n var responsible = {\n boardId: scope.model.id,\n categoryId: id,\n userName: username,\n userId: userId,\n userDisplayName: userDisplayName\n }\n\n boardService.assignResponsibleForCategory(responsible).then(function () {\n scope.publish(\"SendBoardCategoryAssigned\", responsible);\n });\n }\n\n function reapplyTaskBehaviours() {\n // Make sure all event handlers are disconnected so we don't trigger multple messages\n $(boardTableContainer).find(\"#myTask .btn-primary\").off();\n $(boardTableContainer).find(\"#myTask .btn-danger\").off();\n $(boardTableContainer).find(\"#boardContainer .status\").off();\n $(boardTableContainer).find(\".info-container .clone-icon\").off();\n $(boardTableContainer).find(\".info-container .parent-icon\").off();\n //var isViewer = navigationService().isViewer(scope.model.board.assetId);\n //if (isViewer) return;\n\n if (scope.isViewer) {\n // Active only read only-features\n setupToggleDescription();\n setupTaskOpen();\n return;\n }\n // then add behaviour\n setupTasks();\n setupStatus();\n setupTaskModifications();\n addSortable();\n if (users && users.length > 0) {\n taskDrawingService().addUserList(users, updateResponsible);\n }\n addTooltipBehaviour();\n boardDrawService.recalculateZindex();\n\n\n var tags = $(boardTableContainer).find(\"#taskTags\");\n if (tags.length) {\n tags.tagit({\n // availableTags: sampleTags,\n // This will make Tag-it submit a single form value, as a comma-delimited field.\n singleField: true,\n singleFieldNode: $('#tagsSelected'),\n\n autocomplete: {\n delay: 0,\n minLength: 2,\n source: ['foo', 'bar']\n }\n\n });\n }\n }\n\n function addTooltipBehaviour() {\n $('[data-toggle=\"tooltip\"]').tooltip();\n }\n\n function setupCategoryResponsible() {\n $('.responsible-for-category .hide-button').off();\n $('.responsible-for-category .hide-button').click(function (e) {\n var id = $(this).data(\"categoryid\");\n var responsible = {\n boardId: scope.model.board.id,\n categoryId: id,\n userName: \"\",\n userId: \"\",\n userDisplayName: \"\",\n }\n\n boardService.assignResponsibleForCategory(responsible).then(function () {\n scope.publish(\"SendBoardCategoryAssigned\", responsible);\n });\n });\n }\n\n\n\n\n function setupExpanderAndCategoryResponsible() {\n $(boardTableContainer).find(\".board .rotate-row-headers\").off();\n $(boardTableContainer).find(\".board .rotate-row-headers\").on(\"click\", function () {\n var nextDirection = \"horizontal\";\n var currentDirection = $(this).data(\"direction\");\n var rowsDirections = $(boardTableContainer).find(\"td div .\" + currentDirection);\n if (!scope.settings) scope.settings = {};\n if (currentDirection === \"horizontal\") {\n nextDirection = \"vertical\";\n scope.settings.ShowHorizontalRowHeaders = false;\n } else {\n scope.settings.ShowHorizontalRowHeaders = true;\n }\n $(this).data(\"direction\", nextDirection);\n $(rowsDirections).switchClass(currentDirection, nextDirection, 50);\n\n // Update settings\n boardService.updateSettings(scope.model.board.id, scope.settings).then(function () {\n $translate('BOARD_UPDATED_ROWHEADER_DIRECTION').then(function (msg) {\n toaster.success(msg);\n });\n });\n });\n\n setupCategoryResponsible();\n $(boardTableContainer).find(\"[data-column]\").off();\n $(boardTableContainer).find(\"[data-column]\").on(\"click\", function () {\n var button = $(this), // the element that was clicked\n header = button.closest('th'),\n table = header.closest(\"table\"); // the table in which the cell resides\n var categoryId = header.data('categoryid');\n var selector = \"tbody tr td[data-categoryid='\" + categoryId + \"']\"; // selector for all body cells in the column\n var column = table.find(selector).add(header); // all cells in the column\n\n // toggle the \"hidden\" class on all the column cells \n column.toggle();\n var buttonType = button.data(\"column\");\n var hiddenCol;\n if (buttonType === \"column-hide\") {\n hiddenCol = header.prev();\n } else {\n //find hidden column to the right\n hiddenCol = header.next();\n }\n // toggle the \"hidden\" class on all the column cells\n hiddenCol.toggle(0);\n taskDrawingService().readjustTaskWidth();\n });\n }\n\n\n var statusChangeDebounced = debounce(commitStatusChanged, 500, false);\n function setupStatus() {\n $(boardTableContainer).find(\".status\").off();\n $(boardTableContainer).find(\".status\").click(function (e) {\n e.preventDefault();\n\n var dataStatus = $(this).attr('data-status');\n var statusText = taskDrawingService().getNextStatus(dataStatus, isKamishibai).status;\n var container = $(this).closest(\".portlet\");\n //var tasktitle = $(container).find(\".tasktitle\").html();\n var tasktitle = $(container).find(\".taskheader\").html();\n var id = container.data(\"id\");\n var task = {\n taskId: id,\n status: statusText,\n title: tasktitle\n }\n //removed this since the subscribe event also calls this method \n updateTaskStatus(task); // Show visual indicator \n statusChangeDebounced(task); // debounce the commit untill 1 second gone\n });\n }\n\n function commitStatusChanged(task) {\n boardTaskService().updateStatus(task.taskId, task).then(function (result) {\n\n if (task.status === \"unacceptable\" && scope.hasDeviationAccess) {\n }\n });\n }\n\n\n function addSortable() {\n $(boardTableContainer).find(\".boardcell div\").click(function (e) {\n e.stopPropagation();\n });\n\n $(boardTableContainer).find(\".boardcell\").sortable({\n connectWith: \".boardcell, #droparchive, .actionlist, .actionlist-container\",\n // handle: \".portlet-header\",\n handle: \".tasktitle\",\n cancel: \".portlet-toggle\",\n placeholder: \"portlet-placeholder ui-corner-all\",\n scroll: true,\n scrollSpeed: 100,\n scrollSensitivity: 10,\n helper: function (event, element) {\n return element.clone().appendTo(\"body\");\n },\n //remove: taskMoved,\n update: taskReordered,\n start: function (event, ui) {\n },\n stop: function (event, ui) {\n }\n });\n }\n\n function setupTaskModifications() {\n // New item\n var boardId = $(boardTableContainer).find(\"#boardTable\").data(\"boardid\");\n var activeCell;\n $(boardTableContainer).find(\"#myTask\").on('hidden.bs.modal', function () {\n $(activeCell).removeClass(\"activeCell\");\n });\n // Add task\n $(boardTableContainer).find(\".board-table-cell\").off();\n $(boardTableContainer).find(\".board-table-cell\").click(function (e) {\n //e.preventDefault();\n newTask(this);\n });\n\n setupTaskOpen();\n\n }\n\n $('#myTask').on('shown.bs.modal', function () {\n setTimeout(function () {\n $('#taskDescriptionId').focus();\n }, 10);\n });\n\n function editTask(id, activeTab) {\n //e.preventDefault();\n if (!activeTab) activeTab = \"Info\";\n if (scope.settings && scope.settings.PostIts) {\n postIts = scope.settings.PostIts;\n } else {\n postIts = taskDrawingService().getPostIts();\n }\n boardTaskService().get(id).then(function (task) {\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'boardTask.html',\n controller: 'boardTaskController',\n resolve: {\n task: function () {\n return task;\n },\n activeTab: function () {\n return activeTab;\n },\n options: function () {\n var options = {\n archiveAvailable: false,\n postIts: postIts,\n users: users,\n }\n return options;\n }\n }\n });\n });\n }\n\n function newTask(cell, targetColor) {\n var activeCell = cell;\n $(activeCell).addClass(\"activeCell\");\n cellContainer = $(cell);\n var rowId = cellContainer.data(\"rowid\");\n var categoryid = cellContainer.data(\"categoryid\");\n var date = cellContainer.attr(\"data-date\");\n // If board is weekly board and category is not a date, we will assign friday so the task belongs to correct week\n if (scope.isWeeklyBoard && !date) {\n date = scope.week.weekDays[4].date.toJSON();\n }\n var task = {\n id: 0,\n boardId: scope.model.board.id,\n title: \"\",\n text: \"\",\n rowCategoryId: rowId,\n boardDate: date,\n columnCategoryId: categoryid,\n status: 'blank',\n tags: \"\",\n color: targetColor\n }\n var responsible = boardLayoutService().getResponsibleForCategory(task);\n task.responsibleUserId = responsible.responsibleUserId;\n task.responsibleDisplayName = responsible.responsibleDisplayName;\n task.responsibleUser = responsible.responsibleUser;\n if (scope.settings && scope.settings.PostIts) {\n postIts = scope.settings.PostIts;\n } else {\n postIts = taskDrawingService().getPostIts();\n }\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'newBoardTask.html',\n controller: 'newBoardTaskController',\n resolve: {\n task: function () {\n return task;\n },\n options: function () {\n return {\n showDueDate: !scope.isWeeklyBoard,\n users: users,\n postIts: postIts\n }\n }\n }\n });\n\n modalInstance.result.then(function (result) {\n // publish update\n $(activeCell).removeClass(\"activeCell\");\n }, function () {\n $(activeCell).removeClass(\"activeCell\");\n });\n\n }\n\n function actionItemAddedToBoard(event, ui) {\n var id = $(ui.item).data(\"id\");\n var to = event.target;\n var toContainer = $(to).closest(\"td\");\n var toRowId = toContainer.data(\"rowid\");\n var toColumnId = toContainer.data(\"categoryid\");\n var date = toContainer.attr(\"data-date\");\n if (scope.isWeeklyBoard && !date) {\n date = scope.week.weekDays[0].date.toJSON();\n }\n\n // Check if task is smart-actionlist.\n var actionItemToTask = {\n id: id,\n boardId: scope.model.board.id,\n boardDate: date,\n rowCategoryId: toRowId,\n columnCategoryId: toColumnId\n };\n\n\n var boardSourceType = $(ui.item).attr(\"data-board-source-type\");\n if (boardSourceType && boardSourceType == \"SmartActionList\") {\n // Check if user wants to move or clone\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'moveOrCloneSelector.html',\n controller: 'moveOrCloneSelector',\n windowClass: 'newdeviation-modal-window',\n resolve: {\n\n }\n });\n modalInstance.result.then(function (result) {\n $(ui.item).remove();\n if (result == \"move\") {\n boardTaskService().moveActionItemToTask(actionItemToTask).then(function (task) {\n scope.publish(\"SendActionItemMovedToTask\", task);\n });\n }\n if (result == \"clone\") {\n var task = {\n columnCategoryId: toColumnId,\n rowCategoryId: toRowId\n }\n var responsible = boardLayoutService().getResponsibleForCategory(task);\n var timeNow = new Date();\n var timezone = timeNow.getTimezoneOffset() / 60 * (-1);\n var cloneOptions = {\n boardId: scope.model.board.id,\n boardDate: date,\n timeZoneOffset: timezone,\n columnCategoryId: toColumnId,\n rowCategoryId: toRowId,\n responsibleUser: responsible.responsibleUser,\n responsibleDisplayName: responsible.responsibleDisplayName,\n responsibleUserId: responsible.responsibleUserId\n }\n boardTaskService().cloneTask(id, cloneOptions).then(function (clone) {\n\n });\n }\n }, function () {\n ui.sender.sortable(\"cancel\");\n });\n } else {\n boardTaskService().moveActionItemToTask(actionItemToTask).then(function (task) {\n $(ui.item).remove();\n scope.publish(\"SendActionItemMovedToTask\", task);\n });\n }\n\n\n\n\n }\n\n function taskReordered(event, ui) {\n var taskBeingMoved = ui.item;\n var isActionItem = $(taskBeingMoved).attr(\"data-is-action-item\");\n if (isActionItem && isActionItem === \"true\") {\n actionItemAddedToBoard(event, ui);\n return;\n }\n\n var toContainer = $(taskBeingMoved).closest(\".boardcell\");\n if (toContainer[0] != event.target) {\n return;\n }\n\n var id = $(taskBeingMoved).data(\"id\");\n var responsibleUserId = $(taskBeingMoved).attr(\"data-responsibleuserid\");\n var responsibleUser = $(taskBeingMoved).attr(\"data-responsibleuser\");\n var toContainer = $(taskBeingMoved).closest(\"td\");\n var toRowId = toContainer.data(\"rowid\");\n var toColumnId = toContainer.data(\"categoryid\");\n if (!toRowId || !toColumnId) {\n return;\n }\n\n var cell = $(toContainer).find(\".boardcell\");\n var date = toContainer.attr(\"data-date\");\n // If board is weekly board and category is not a date, we will assign friday so the task belongs to correct week\n if (scope.isWeeklyBoard && !date) {\n date = scope.week.weekDays[4].date.toJSON();\n }\n var index = cell.children().index(ui.item);\n var taskOrders = [];\n $.each(cell.children(), function (key, val) {\n var taskId = $(val).data(\"id\");\n taskOrders[key] = { taskId: taskId, index: key };\n });\n\n var from = event.target;\n var fromContainer = $(from).closest(\"td\");\n var fromRowId = fromContainer.data(\"rowid\");\n var fromColumnId = fromContainer.data(\"categoryid\");\n\n var taskMoved = {\n taskId: id,\n fromRowId: fromRowId,\n fromColumnId: fromColumnId,\n toIndex: index,\n toRowId: toRowId,\n toColumnId: toColumnId,\n boardDate: date,\n taskOrders: taskOrders,\n responsibleUserId: responsibleUserId,\n responsibleUser: responsibleUser,\n };\n console.log(\"Before publish move:\");\n console.log(JSON.stringify(taskMoved));\n if (!scope.isWeeklyBoard) { // If not weeklyboard, we should fetch the current data so the task does not update with null value.\n boardTaskService().get(id).then(function (task) {\n taskMoved.boardDate = task.boardDate;\n publishMoveTask(taskMoved);\n })\n } else {\n publishMoveTask(taskMoved);\n }\n }\n function updateSubTaskDueDate(task, days) {\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'moveSubTask.html',\n controller: 'moveSubTaskController',\n resolve: {\n parenttask: function () {\n return task;\n },\n days: function () {\n return days;\n }\n }\n });\n\n modalInstance.result.then(function (result) {\n }, function () {\n });\n }\n\n function getDateDifferenceInDays(startTime, endTime) {\n var start = moment(startTime).startOf('day');\n var end = moment(endTime).startOf('day');\n var duration = end.diff(start, 'days', true);\n return duration;\n }\n\n\n function publishMoveTask(taskMovedSettings) {\n\n boardTaskService().get(taskMovedSettings.taskId).then(function (task) {\n if (task.subTaskCount > 0 && task.subTaskCount > task.subTaskCompletedCount) {\n var changedDuration = getDateDifferenceInDays(task.boardDate, taskMovedSettings.boardDate);\n boardTaskService().moveTask(taskMovedSettings).then(function () {\n if (changedDuration != 0 && !Number.isNaN(changedDuration)) { //duration is a valid number\n updateSubTaskDueDate(task, changedDuration);\n }\n boardDrawService.recalculateZindex();\n\n });\n\n } else {\n boardTaskService().moveTask(taskMovedSettings).then(function () {\n boardDrawService.recalculateZindex();\n });\n }\n })\n }\n\n function moveTaskDateOnBoard(moveSettings) {\n\n if (!scope.isWeeklyBoard) {\n var taskBeingMoved = $(boardTableContainer).find(\"td .portlet[data-id='\" + moveSettings.taskId + \"']\");\n if (taskBeingMoved.length > 0) {\n boardTaskService().get(moveSettings.taskId).then(function (task) {\n updateExistingTask(task);\n });\n }\n return;\n }\n // Weekly Board\n // check that the date being moved to are in current week.\n // Check boardDate, if not in current active week, we need to remove it from board\n if (timeService.isDateInWeek(moveSettings.boardDate, scope.week) === false) {\n removeTaskFromBoard(moveSettings.taskId);\n return;\n } else { // if task moved does not exist on board, we need to add it.\n var taskBeingMoved = $(boardTableContainer).find(\"td .portlet[data-id='\" + moveSettings.taskId + \"']\");\n if (taskBeingMoved.length === 0) {\n boardTaskService().get(moveSettings.taskId).then(function (task) {\n if (!task.isActionItem) {\n addTaskToBoard(task, true);\n }\n });\n }\n }\n\n var taskBeingMoved = $(boardTableContainer).find(\"td .portlet[data-id='\" + moveSettings.taskId + \"']\");\n $(taskBeingMoved).addClass(\"animated bounce\");\n\n var toContainer = $(boardTableContainer).find(\"table tr td[data-categoryid='\" + moveSettings.toColumnId + \"'][data-rowid='\" + moveSettings.toRowId + \"']\").first();\n var cell = toContainer.find(\".boardcell\").first();\n\n if (cell.children().length === 0) {\n cell.append(taskBeingMoved);\n return;\n }\n var isPartOfCellAlready = cell.children(\".portlet[data-id='\" + moveSettings.taskId + \"']\");\n if (isPartOfCellAlready.length == 1) { // Then do nothing\n // The task is already part of board\n return;\n }\n\n var insertAfterIndex = moveSettings.toIndex - 1; // Assume the task is added to cell\n if (insertAfterIndex < 0) {\n cell.prepend(taskBeingMoved);\n } else {\n taskBeingMoved.insertAfter(cell.children()[insertAfterIndex]);\n }\n\n }\n\n function moveTaskOnBoard(moveSettings) {\n\n // check that the date being moved to are in current week.\n if (scope.isWeeklyBoard) {\n // Check boardDate, if not in current active week, we need to remove it from board\n if (timeService.isDateInWeek(moveSettings.boardDate, scope.week) === false) {\n removeTaskFromBoard(moveSettings.taskId);\n return;\n } else { // if task moved does not exist on board, we need to add it.\n var taskBeingMoved = $(boardTableContainer).find(\"td .portlet[data-id='\" + moveSettings.taskId + \"']\");\n if (taskBeingMoved.length === 0) {\n boardTaskService().get(moveSettings.taskId).then(function (task) {\n addTaskToBoard(task);\n });\n }\n }\n\n }\n\n var taskBeingMoved = $(boardTableContainer).find(\"td .portlet[data-id='\" + moveSettings.taskId + \"']\");\n $(taskBeingMoved).addClass(\"animated bounce\");\n\n var toContainer = $(boardTableContainer).find(\"table tr td[data-categoryid='\" + moveSettings.toColumnId + \"'][data-rowid='\" + moveSettings.toRowId + \"']\").first();\n if (toContainer.length === 0) {\n toContainer = $(boardTableContainer).find(\"table tr td[data-categoryid='\" + moveSettings.toRowId + \"'][data-rowid='\" + moveSettings.toColumnId + \"']\").first();\n }\n var cell = toContainer.find(\".boardcell\").first();\n\n if (cell.children().length === 0) {\n cell.append(taskBeingMoved);\n return;\n }\n if (moveSettings.toIndex === 0) {\n cell.prepend(taskBeingMoved);\n return;\n }\n var isPartOfCellAlready = cell.children(\".portlet[data-id='\" + moveSettings.taskId + \"']\");\n var insertAfterIndex = moveSettings.toIndex - 1; // Assume the task is added to cell\n if (isPartOfCellAlready.length == 1) {\n // The task is already part of board\n var currentIndexInCell = cell.children().index(isPartOfCellAlready);\n if (currentIndexInCell < moveSettings.toIndex) { // if part of board and moving to a greater index then we should use the target index\n insertAfterIndex = moveSettings.toIndex;\n }\n }\n if (insertAfterIndex < 0) {\n cell.prepend(taskBeingMoved);\n } else {\n taskBeingMoved.insertAfter(cell.children()[insertAfterIndex]);\n }\n\n }\n\n function removeTaskFromBoard(id) {\n\n $(boardTableContainer).find(\"td .portlet[data-id='\" + id + \"']\").addClass(\"animated zoomOutDown\");\n setTimeout(function () {\n $(boardTableContainer).find(\"td .portlet[data-id='\" + id + \"']\").remove();\n }, 500);\n }\n\n function removeTasksFromBoard(taskIds) {\n angular.forEach(taskIds, function (id, key) {\n removeTaskFromBoard(id);\n });\n\n }\n\n function addTaskToBoard(task, shouldReApply) {\n if (task == null) return;\n if (task.columnCategoryId == null) return;\n var exists = $(boardTableContainer).find(\"div .portlet[data-id='\" + task.id + \"']\");\n if (exists.length > 0) return;\n if (scope.isWeeklyBoard) {\n // Check boardDate, if not in current active week, we will not add it to board\n if (timeService.isDateInWeek(task.boardDate, scope.week) === false) return;\n }\n var tdContainer = $(boardTableContainer).find(\"table tr td[data-categoryid='\" + task.columnCategoryId + \"'][data-rowid='\" + task.rowCategoryId + \"']\").first();\n var boardCell = tdContainer.find(\".boardcell\");\n var newItem = boardDrawService.drawTask(task, scope.model.access, 'bounce', scope.isWeeklyBoard, isKamishibai);\n boardCell.append(newItem);\n taskDrawingService().updateSubTask(scope, task);\n if (shouldReApply) {\n reapplyTaskBehaviours();\n }\n }\n\n function updateExistingTask(task) {\n var portlet = $(boardTableContainer).find(\"div .portlet[data-id='\" + task.id + \"']\").first();\n var changedContent = boardDrawService.drawTask(task, scope.model.access, 'bounce', scope.isWeeklyBoard, isKamishibai);\n portlet.replaceWith(changedContent);\n // BUG => Updating subtask causes comments container not to be updated....\n taskDrawingService().updateSubTask(scope, task);\n }\n\n function updateCommentCount(comment) {\n var portlets = $(boardTableContainer).find(\"div .portlet[data-id='\" + comment.boardTaskId + \"']\");\n for (let index = 0; index < portlets.length; index++) {\n const portlet = portlets[index];\n taskDrawingService().updateCommentCount(comment.taskCommentCount, portlet, \"bounce\", scope.isWeeklyBoard);\n }\n removeAnimations();\n }\n function updateAttachmentCount(attachment) {\n var portlet = $(boardTableContainer).find(\"div .portlet[data-id='\" + attachment.taskId + \"']\").first();\n taskDrawingService().updateAttachmentCount(attachment.attachmentCount, portlet, \"bounce\", scope.isWeeklyBoard);\n }\n } // Close link function\n }\n }]);","import * as boardService from \"@common/services/boardService\"\nimport { hasDefaultAccess } from \"@common/components/dashboard/designer/common/userAccessService\"\n\n\nangular\n .module('DigiLean')\n .directive(\"smartKanban\", ['$uibModal', '$filter', '$translate', 'statusColumnProvider', 'responsibleColumnProvider', 'predefinedLabelColumnProvider',\n function ($uibModal, $filter, $translate, statusColumnProvider, responsibleColumnProvider, predefinedLabelColumnProvider) {\n return {\n templateUrl: 'smartKanban.html',\n restrict: 'E',\n scope: {\n 'model': ' 0) {\n $scope.columns = data.columns;\n $scope.selectedColumn = data.columns[0];\n $scope.hasColumns = true;\n }\n if (data.rows.length > 0) {\n $scope.rows = data.rows;\n $scope.selectedRow = data.rows[0];\n $scope.hasRows = true;\n }\n mapDateToColumn();\n mapDateToRow();\n mapResponsibleToColumn($scope.task);\n mapResponsibleToRow($scope.task);\n });\n }\n $scope.ok = function () {\n var responsibleUserid, responsibleUser, responsibleDisplayName;\n var columnCategoryId, rowCategoryId;\n\n if ($scope.selectedColumn) {\n responsibleUserid = $scope.selectedColumn.responsibleUserId;\n responsibleUser = $scope.selectedColumn.responsibleUser;\n responsibleDisplayName = $scope.selectedColumn.responsibleDisplayName;\n columnCategoryId = $scope.selectedColumn.id\n }\n if ($scope.selectedRow) {\n rowCategoryId = $scope.selectedRow.id;\n if (!responsibleUserid) {\n responsibleUserid = $scope.selectedRow.responsibleUserId;\n responsibleUser = $scope.selectedRow.responsibleUser;\n responsibleDisplayName = $scope.selectedRow.responsibleDisplayName;\n }\n }\n \n var timeNow = new Date();\n var timezone = timeNow.getTimezoneOffset() / 60 * (-1);\n var cloneOptions = {\n boardId: $scope.selectedBoard.id,\n boardDate: $scope.selectedBoardDate,\n timeZoneOffset: timezone,\n columnCategoryId: columnCategoryId,\n rowCategoryId: rowCategoryId,\n responsibleUser: responsibleUser,\n responsibleDisplayName: responsibleDisplayName,\n responsibleUserId: responsibleUserid\n }\n\n boardTaskService().cloneTask($scope.task.id, cloneOptions).then(function (clone) {\n $uibModalInstance.close(clone);\n });\n };\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n }]);","import * as timeService from \"@common/services/timeService\"\nimport * as boardService from \"@common/services/boardService\"\n\nvar DigiLean = angular.module('DigiLean');\nDigiLean.controller('movetaskController', ['$scope','$uibModalInstance', 'boardTaskService', 'task',\n function ($scope, $uibModalInstance, boardTaskService, task) {\n $scope.selectedBoard = null;\n $scope.task = task;\n $scope.selectedColumn = null;\n\n $scope.includepersonalboard = true;\n \n \n\n boardTaskService().get($scope.task.id).then(function (original) {\n if(original.boardDate){\n $scope.selectedBoardDate = moment(original.boardDate).toDate();\n } else {\n $scope.selectedBoardDate = moment().toDate();\n }\n \n $scope.dayOfWeek = moment(original.boardDate).format('dddd');\n mapDateToColumn();\n mapDateToRow();\n });\n\n\n $scope.columns = [];\n $scope.rows = [];\n\n $scope.hasRows = false\n $scope.hasColumns = false\n\n $scope.selectedDateChanged = function ($event) {\n const date = $event.originalEvent.detail\n $scope.selectedBoardDate = date\n $scope.dayOfWeek = moment($scope.selectedBoardDate).format('d')\n mapDateToColumn()\n mapDateToRow()\n }\n\n var mapDateToRow = function () {\n if ($scope.rows.length == 0) return;\n if (!$scope.selectedBoardDate) return;\n\n // Try to select correct row\n angular.forEach($scope.rows, function (row) {\n if (row.weekdayName && (row.weekdayName == timeService.getWeekDayNameFromDate($scope.selectedBoardDate))) {\n $scope.selectedRow = row;\n }\n });\n }\n\n var mapDateToColumn = function () {\n if ($scope.columns.length == 0) return;\n if (!$scope.selectedBoardDate) return;\n\n // Try to select correct row\n angular.forEach($scope.columns, function (column) {\n if (column.weekdayName && (column.weekdayName == timeService.getWeekDayNameFromDate($scope.selectedBoardDate))) {\n $scope.selectedColumn = column;\n }\n });\n }\n var mapResponsibleToColumn = function (task) {\n if (!$scope.columns || $scope.columns.length == 0) return;\n if (!task.responsibleUserId) return;\n\n // Try to select correct row\n angular.forEach($scope.columns, function (column) {\n if (column.responsibleUserId == task.responsibleUserId) {\n $scope.selectedColumn = column;\n }\n });\n }\n var mapResponsibleToRow = function (task) {\n if (!$scope.rows || $scope.rows.length == 0) return;\n if (!task.responsibleUserId) return;\n\n // Try to select correct row\n angular.forEach($scope.rows, function (row) {\n if (row.responsibleUserId == task.responsibleUserId) {\n $scope.selectedRow = row;\n }\n });\n }\n $scope.changeBoard = function (board) {\n $scope.selectedBoard = board;\n $scope.hasRows = false;\n $scope.hasColumns = false;\n\n if (board.boardType == \"SmartActionList\" || \n board.boardType =='PERSONAL' ||\n board.boardType == '3C') {\n return;\n } \n $scope.showDate = true;\n boardService.getBoardCategories(board.id).then(function (data) {\n\n angular.forEach(data.columns, function (column) {\n if (column.responsibleUserId) {\n column.displayName = column.name + \" (\" + column.responsibleDisplayName + \")\";\n } else {\n column.displayName = column.name;\n }\n\n });\n angular.forEach(data.rows, function (row) {\n if (row.responsibleUserId) {\n row.displayName = row.name + \" (\" + row.responsibleDisplayName + \")\";\n } else {\n row.displayName = row.name;\n }\n });\n if (data.columns.length > 0) {\n $scope.columns = data.columns;\n $scope.selectedColumn = data.columns[0];\n $scope.hasColumns = true;\n }\n if (data.rows.length > 0) {\n $scope.rows = data.rows;\n $scope.selectedRow = data.rows[0];\n $scope.hasRows = true;\n }\n mapDateToColumn();\n mapDateToRow();\n mapResponsibleToColumn($scope.task);\n mapResponsibleToRow($scope.task);\n });\n }\n $scope.ok = function () {\n if($scope.selectedBoard){ \n if ($scope.selectedBoard.id) {\n moveTaskToRowColumn($scope.task);\n } else {\n var change = {\n taskId: $scope.task.id,\n fromBoardId: $scope.task.boardId === null ? 0 : $scope.task.boardId,\n toBoardId: $scope.selectedBoard.id === null ? 0 : $scope.selectedBoard.id\n };\n boardTaskService().moveTaskToPersonalBoard(task.id).then(function (result) {\n $scope.publish(\"SendTaskChangedBoard\", change);\n $uibModalInstance.close(result);\n });\n }\n } else {\n $scope.cancel();\n }\n };\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n\n function moveTaskToRowColumn (task) {\n //task.isActionItem = false;\n var rowId = 0;\n var columnId = 0;\n if ($scope.selectedRow && $scope.selectedRow.id) {\n rowId = $scope.selectedRow.id;\n }\n if ($scope.selectedColumn && $scope.selectedColumn.id) {\n columnId = $scope.selectedColumn.id;\n }\n\n var change = {\n id: task.id,\n boardId: $scope.selectedBoard.id,\n boardDate: $scope.selectedBoardDate,//task.boardDate,\n rowCategoryId: rowId,\n columnCategoryId: columnId\n };\n\n if(task.cause || task.counterMeasure)\n {\n change.causeId = task.causeCellId;\n change.causeValue = task.cause;\n change.counterMeasureId = task.counterMeasureCellId; \n change.counterMeasureValue = task.counterMeasure; \n }\n\n boardTaskService().moveActionItemToTask(change).then(function (task) {\n $scope.publish(\"SendActionItemMovedToTask\", task);\n $uibModalInstance.close(task);\n });\n\n }\n\n $scope.selectedDateChanged = function () {\n $scope.dayOfWeek = moment($scope.selectedBoardDate).format('d');\n mapDateToColumn();\n mapDateToRow();\n }\n }]);","import * as timeService from \"@common/services/timeService\"\nimport * as boardService from \"@common/services/boardService\"\n\nangular\n .module('DigiLean')\n .directive(\"weeklyBoardPreview\",\n function () {\n return {\n templateUrl: 'weeklyBoardPreview.html',\n restrict: 'E',\n scope: {\n template: '='\n },\n link: function (scope, elem, attrs) {\n // Default week\n scope.weekYear = moment().isoWeekYear();\n scope.weekNumber = moment().isoWeek();\n scope.week = timeService.getCurrentWeek(scope.weekNumber, scope.weekYear);\n scope.translationData = {\n weekNumber: scope.weekNumber\n };\n\n scope.$watch('template', function (template) {\n if (template) {\n if (template.settings) {\n var settings = JSON.parse(template.settings);\n template.isWeeklyBoard = settings.IsWeeklyBoard;\n } else {\n template.isWeeklyBoard = false;\n }\n parseStyle(template);\n if (template.id) {\n boardService.getTemplate(template.id).then(function(model) {\n scope.template.rows = model.rows;\n scope.template.columns = model.columns;\n parseStyle(template);\n })\n } \n } \n });\n\n function parseStyle(template) {\n angular.forEach(template.columns, function (col) {\n col.style = {\n \"background\": col.categoryStyle.backgroundColor,\n \"color\": col.categoryStyle.foregroundColor\n }\n });\n angular.forEach(template.rows, function (row) {\n row.style = {\n \"background\": row.categoryStyle.backgroundColor,\n \"color\": row.categoryStyle.foregroundColor\n }\n });\n }\n\n }\n }\n }\n );\n","import * as staticFileService from \"@common/shared/staticFileService\"\n\nangular\n .module('DigiLean')\n .directive(\"projectBoardPreview\", ['$scope',\n function ($scope) {\n return {\n templateUrl: 'projectBoardPreview.html',\n restrict: 'E',\n scope: {\n template: '='\n },\n link: function (scope, elem, attrs) {\n \n scope.imageUrl = staticFileService.image(\"projectboardpreview.jpg\");\n\n }\n }\n }]);\n","import * as staticFileService from \"@common/shared/staticFileService\"\nimport * as boardService from \"@common/services/boardService\"\n\nangular\n .module('DigiLean')\n .directive(\"smartActionListPreview\",\n function () {\n return {\n templateUrl: 'smartActionListPreview.html',\n restrict: 'E',\n scope: {\n template: '=',\n },\n link: function (scope, elem, attrs) {\n \n // scope.imageUrl = staticFileService.image(\"smartActionListPreview.jpg\");\n scope.imageUrl = staticFileService.image(\"smartactionlist.gif\");\n scope.showImage = false;\n scope.$watch('template', function (template) {\n \n if (template && template.id) {\n boardService.getTemplate(template.id).then(function(model) {\n scope.model = model;\n if(model.tasks.length == 0){\n model.tasks[0]= {};\n }\n })\n } else {\n scope.showImage = true;\n }\n });\n }\n }\n });\n","import * as timeService from \"@common/services/timeService\"\nimport * as boardService from \"@common/services/boardService\"\n\nangular\n .module('DigiLean')\n .directive(\"yearlyBoardPreview\",\n function () {\n return {\n templateUrl: 'yearlyBoardPreview.html',\n restrict: 'E',\n scope: {\n template: '='\n },\n link: function (scope, elem, attrs) {\n // Default week\n scope.months = timeService.getMonths();\n \n\n scope.$watch('template', function (template) {\n if (template) {\n if (template.settings) {\n var settings = JSON.parse(template.settings);\n template.isWeeklyBoard = settings.IsWeeklyBoard;\n } else {\n template.isWeeklyBoard = false;\n }\n parseStyle(template);\n if (template.id) {\n boardService.getTemplate(template.id).then(function(model) {\n scope.template.rows = model.rows;\n scope.template.columns = model.columns;\n parseStyle(template);\n })\n } \n } \n });\n\n function parseStyle(template) {\n angular.forEach(template.columns, function (col) {\n col.style = {\n \"background\": col.categoryStyle.backgroundColor,\n \"color\": col.categoryStyle.foregroundColor\n }\n });\n angular.forEach(template.rows, function (row) {\n row.style = {\n \"background\": row.categoryStyle.backgroundColor,\n \"color\": row.categoryStyle.foregroundColor\n }\n });\n }\n\n }\n }\n }\n );\n","import toaster from \"@common/components/toast\"\n\nvar DigiLean = angular.module('DigiLean'); \nDigiLean.controller('repeattaskController', ['$scope', '$uibModalInstance', '$translate', 'boardTaskService', 'task',\n function ($scope, $uibModalInstance, $translate, boardTaskService, task) {\n $scope.selectedBoard = {};\n $scope.boards = [];\n\n $scope.repeatOptions = [\n {\n repeatType: \"weekly\",\n name: $translate.instant('BOARD_WEEKLY')\n },\n {\n repeatType: \"everyOtherWeek\",\n name: $translate.instant('BOARD_EVERY_2_WEEKS')\n },\n {\n repeatType: \"monthly\",\n name: $translate.instant('BOARD_MONTHLY')\n },\n {\n repeatType: \"yearly\",\n name: $translate.instant('COMMON_YEARLY')\n }/*,\n {\n repeatType: \"dayOfMonth\",\n name: $translate.instant('BOARD_DAY_OF_MONTH')\n }*/\n ];\n\n\n\n $scope.isProcessing = false;\n $scope.selectOption = function (option) {\n option.isSelected = !option.isSelected;\n }\n $scope.selectedRepeatOption = $scope.repeatOptions[0];\n // Default 6 months forward in time\n $scope.dueDate = moment(task.boardDate).add(6, 'months').toDate();\n \n\n $scope.task = task;\n $scope.ok = function () {\n $scope.selectedRepeatOption.dueDate = $scope.dueDate;\n $scope.isProcessing = true;\n boardTaskService().repeatTask($scope.task.id, $scope.selectedRepeatOption).then(function (result) {\n $scope.isProcessing = false;\n toaster.success(\"Task repeated succesfully\");\n $uibModalInstance.close(result);\n });\n }\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel')\n }\n\n $scope.taskDueDateChange = function($event) {\n const date = $event.originalEvent.detail\n $scope.dueDate = date\n }\n }])","import * as timeService from \"@common/services/timeService\"\nimport * as boardService from \"@common/services/boardService\"\n// Controller for the actual modal\nvar DigiLean = angular.module('DigiLean');\nDigiLean.controller('tasktoactionlistController', ['$scope', '$filter', '$uibModalInstance', 'boardTaskService', 'task', 'targetBoardId',\n function ($scope, $filter, $uibModalInstance, boardTaskService, task, targetBoardId) {\n $scope.boards = {};\n $scope.selectedEmployee = {};\n $scope.selectedBoard = {};\n var boardId = targetBoardId;\n\n $scope.blankuser = { id: null, fullName: \"\", userName: \"\", displayName: \"\" }\n\n $scope.canEdit = false;\n // Chceck if user is allowed to edit task\n boardTaskService().canEdit(task.id).then(function (canEdit) {\n $scope.canEdit = canEdit;\n });\n\n $scope.descriptionChanged = function (content) {\n $scope.task.text = content;\n }\n\n boardService.getUserListForBoard(boardId).then(function (data) {\n angular.forEach(data, function (employee, key) {\n employee.fullName = employee.firstName + \" \" + employee.lastName;\n });\n $scope.employees = data;\n\n $scope.employees.unshift($scope.blankuser);\n $scope.selectedEmployee = $filter('filter')(data, { id: task.responsibleUserId }, true)[0];\n if (!$scope.selectedEmployee) {\n $scope.selectedEmployee = $scope.blankuser;\n }\n });\n\n boardService.getMemberBoards().then(function (data) {\n $scope.boards = data;\n //$scope.selectedBoard = $filter('filter')(data, { id: task.boardId }, true)[0];\n $scope.selectedBoard = $filter('filter')(data, { id: boardId }, true)[0];\n });\n\n\n // IF date not set, than suggest a week from now\n if (!task.boardDate) {\n var utcDate = timeService.getUTCDate();\n task.boardDate = utcDate.add(7, 'days').toDate();\n }\n\n // Make sure boardDate is date object \n task.boardDate = moment.utc(task.boardDate).toDate();\n // the new action object\n $scope.task = task;\n\n $scope.delete = function () {\n var taskId = $scope.task.id;\n var repeatParentId = $scope.task.repeatParentId;\n var siblingId = $scope.task.siblingId;\n\n if (!repeatParentId && !siblingId) {\n boardTaskService().deleteTask(taskId).then(function () {\n $uibModalInstance.dismiss('cancel');\n });\n }\n\n if (repeatParentId) {\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'repeatdelete.html',\n controller: 'repeatdeleteController',\n windowClass: 'newdeviation-modal-window',\n resolve: {\n taskId: function () {\n return taskId;\n },\n repeatParentId: function () {\n return repeatParentId;\n }\n }\n });\n modalInstance.result.then(function (result) {\n $uibModalInstance.close($scope.task);\n });\n /*\n $translate(['COMMON_CANCEL', 'BOARD_DELETE_TASKS', 'BOARD_DELETE_REPEATING_TASK', 'BOARD_DELETE_REPEATING_TASK_DESCRIPTION']).then(function (translations) {\n var modalOptions = {\n closeButtonText: translations.COMMON_CANCEL,\n actionButtonText: translations.BOARD_DELETE_TASKS,\n headerText: translations.BOARD_DELETE_REPEATING_TASK,\n bodyText: translations.BOARD_DELETE_REPEATING_TASK_DESCRIPTION\n };\n \n modalService.showModal({}, modalOptions).then(function (result) {\n boardTaskService().deleteRepeatingTask(repeatParentId).then(function (result) {\n $scope.publish(\"SendTasksDeleted\", result);\n $uibModalInstance.dismiss('cancel');\n });\n });\n });*/\n }\n\n if (siblingId) {\n\n $translate(['COMMON_CANCEL', 'BOARD_DELETE_TASKS', 'BOARD_DELETE_CLONED_TASK', 'BOARD_DELETE_CLONED_TASK_DESCRIPTION']).then(function (translations) {\n var modalOptions = {\n closeButtonText: translations.COMMON_CANCEL,\n actionButtonText: translations.BOARD_DELETE_TASKS,\n headerText: translations.BOARD_DELETE_CLONED_TASK,\n bodyText: translations.BOARD_DELETE_CLONED_TASK_DESCRIPTION\n };\n\n modalService.showModal({}, modalOptions).then(function (result) {\n boardTaskService().deleteClonedTask(siblingId).then(function (result) {\n $scope.publish(\"SendTasksDeleted\", result);\n $uibModalInstance.dismiss('cancel');\n });\n });\n });\n }\n }\n\n $scope.ok = function () {\n // Create action and set as result\n $scope.task.responsibleUserId = $scope.selectedEmployee.id;\n $scope.task.responsibleUser = $scope.selectedEmployee.userName;\n $scope.task.responsibleDisplayName = $scope.selectedEmployee.displayName;\n $scope.task.boardId = $scope.selectedBoard.id;\n $scope.isProcessing = true;\n\n boardTaskService().moveTaskToActionItem($scope.task).then(function (result) {\n $scope.isProcessing = false;\n $scope.publish('SendTaskMovedToActionList', task);\n if ($scope.task.boardId !== $scope.selectedBoard.id) {\n var change = {\n taskId: $scope.task.id,\n fromBoardId: $scope.task.boardId,\n toBoardId: $scope.selectedBoard.id\n };\n $scope.publish(\"SendTaskChangedBoard\", change);\n }\n\n $uibModalInstance.close(result);\n });\n // check if task should be moved to another board action list\n\n\n\n };\n\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n }\n\n $scope.taskBoardDateChange = function($event) {\n const date = $event.originalEvent.detail\n $scope.task.boardDate = date\n }\n }])","import * as timeService from \"@common/services/timeService\"\nimport * as boardService from \"@common/services/boardService\"\nimport * as employeeService from \"@common/services/employeeService\"\n\nangular\n .module('DigiLean')\n .directive(\"board\", ['$state', '$timeout', '$translate', '$filter', '$uibModal', 'boardDrawService', 'navigationService', 'modalService', 'boardTaskService',\n function ($state, $timeout, $translate, $filter, $uibModal, boardDrawService, navigationService, modalService, boardTaskService) {\n return {\n templateUrl: 'board.html',\n restrict: 'E',\n scope: {\n 'isAdminMode': '<',\n 'context': '@',\n 'boardData': '=',\n 'options': '<'\n // 'mode': '@', // Monthly, daily, etc\n },\n link: function ($scope, element, attrs) {\n $scope.assetName = \"\";\n $scope.isWeeklyBoard = null;\n $scope.isKamishibai = false;\n\n $scope.isStar = false;\n $scope.quickAccess = [];\n\n $scope.hasBoardDesignerPrivileges = false;\n $scope.showArchive = false;\n $scope.showPostIts = false;\n $scope.postIts = null;\n $scope.weekNumberTranslation = $translate.instant(\"BOARD_WEEK_NO\");\n $scope.actionListOptions = {\n targetHeight: null,\n filter : null\n };\n\n if ($scope.context && $scope.context == \"standAlone\") {\n $scope.isAdminMode= true;\n }\n\n // TimeZone test\n\n function resizeOptionsTimeout() {\n setTimeout(function () {\n setHeightBasedOnOptions($scope.options);\n }, 100);\n }\n \n function setHeightWindow(e) {\n setHeight(window.innerHeight)\n }\n window.addEventListener(\"resize\", setHeightWindow)\n\n $scope.subscribe(\"EnterFullScreenMode\", resizeOptionsTimeout)\n $scope.subscribe(\"ExitFullScreenMode\", resizeOptionsTimeout)\n\n $scope.subscribe(\"PresentationViewStarted\", function () {\n setHeightBasedOnOptions($scope.options);\n })\n $scope.subscribe(\"PresentationViewStopped\", function () {\n setHeightBasedOnOptions($scope.options);\n })\n $scope.$watch(\"options\", function (options) {\n setHeightBasedOnOptions($scope.options);\n })\n\n $scope.$on(\"$destroy\", function () {\n window.removeEventListener(\"resize\", setHeightWindow)\n })\n function setHeightBasedOnOptions(options) {\n if (!options) {\n setHeight();\n return;\n }\n if (options.targetHeight) {\n setHeight(options.targetHeight);\n } else {\n setHeight();\n }\n }\n\n function setSettings(settings){\n if (settings.isKamishibai) {\n $scope.isKamishibai = settings.isKamishibai;\n } \n if (settings.showPostIts) {\n $scope.showPostIts = settings.showPostIts;\n $scope.postIts = settings.PostIts;\n }\n }\n\n $scope.$watch(\"boardData\", function () {\n if ($scope.boardData == null) return;\n var board = $scope.boardData.board;\n $scope.boardid = board.id;\n var boardData = $scope.boardData;\n $scope.title = boardData.board.name;\n $scope.tags = board.tags;\n if (board.boardType == \"Weekly\") {\n $scope.isWeeklyBoard = true;\n }\n if (boardData.board.settings) {\n $scope.settings = JSON.parse(boardData.board.settings);\n setSettings($scope.settings); \n }\n \n var hasDeviation = navigationService().hasModule(\"DEVIATION\");\n boardData.access = {\n hasDeviation: hasDeviation\n };\n\n // Set actionlist context\n var viewType = \"Board\";\n if (boardData.board.boardType && boardData.board.boardType === \"Time\") viewType = \"TimeBoard\";\n $scope.actionListViewContext = {\n view: viewType,\n id: boardData.board.id\n };\n\n\n $scope.boardData = boardData;\n $scope.assetid = boardData.board.assetId;\n $scope.assetName = boardData.board.asset.name;\n\n navigationService().isBoardAdmin($scope.boardid).then(function (isAdmin) {\n $scope.hasBoardDesignerPrivileges = isAdmin;\n });\n boardService.canEdit($scope.boardid).then(function (canEdit) {\n $scope.isViewerOnly = !canEdit;\n });\n employeeService.getUserSettings().then(function (userSettings) {\n $scope.userSettings = userSettings;\n var boards = $scope.userSettings.boards;\n if (!boards) return;\n var hasBoardActionListSetting = $filter('filter')(boards, { boardId: $scope.boardid }, true);\n if (hasBoardActionListSetting.length > 0) {\n $scope.showActionList = hasBoardActionListSetting[0].showActionList;\n }\n });\n applyFilter(boardData.tags);\n if ($scope.isWeeklyBoard) {\n loadCurrentWeek();\n }\n $scope.archiveoptions = {\n timePeriod: {\n timeframe: \"year\",\n useDefaultTimeframes: true,\n timeframes: []\n },\n showArchive: false\n };\n\n checkFavorite();\n });\n\n $scope.subscribe(\"BoardSettingUpdated\", function (boardsettinginfo) {\n if (boardsettinginfo.boardId === $scope.boardid) {\n $scope.settings = JSON.parse(boardsettinginfo.settings);\n setSettings($scope.settings);\n }\n });\n\n \n function updateActionlistOptions(targetHeight, filter){\n $scope.actionListOptions = {\n targetHeight: targetHeight,\n filter: filter\n }; \n }\n // Height calculation\n //$scope.actionListOptions = {};\n function setHeight(targetHeight) {\n if (!targetHeight) {\n var boardContainer = $(\".board-table-container\");\n\n var offset = boardContainer.offset();\n var windowHeight = $(window).height();\n var boardTargetHeight = windowHeight - offset.top - 50;\n if (boardTargetHeight < 500) boardTargetHeight = 500;\n boardContainer.css(\"height\", boardTargetHeight);\n // action list\n targetHeight = windowHeight - offset.top;\n if (targetHeight < 500) targetHeight = 500;\n /*$scope.actionListOptions = {\n targetHeight: targetHeight\n };*/\n updateActionlistOptions(targetHeight, $scope.actionListOptions.filter);\n \n } else {\n var optionsHeight = 80;\n var boardTableHeight = targetHeight - optionsHeight\n $(\".board-table-container\").css(\"height\", boardTableHeight);\n /*$scope.actionListOptions = {\n targetHeight: targetHeight\n };*/\n updateActionlistOptions(targetHeight, $scope.actionListOptions.filter);\n }\n\n }\n\n $scope.isViewerOnly = null;\n\n $scope.subscribe(\"BoardWeekChanged\", function (weekChange) {\n if ($scope.boardid == weekChange.boardid) {\n $scope.week = weekChange.week;\n $scope.weekYear = weekChange.weekYear;\n $scope.weekNumber = weekChange.weekNumber;\n }\n });\n\n\n var activeFilterButton = \"btn-primary\";\n var inActiveFilterButton = \"btn-default\";\n\n $scope.currentDateInWeek = null;\n $scope.formats = ['dd.MM.yyyy', 'dd-MMMM-yyyy', 'yyyy/MM/dd', 'yyyy-MM-dd', 'shortDate']\n $scope.format = $scope.formats[0];\n $scope.weekpickerOpen = function () {\n $scope.weekpicker.opened = true;\n }\n $scope.weekpickerDateChanged = function () {\n if (!$scope.currentDateInWeek) return;\n $scope.weekYear = moment($scope.currentDateInWeek).isoWeekYear();\n $scope.weekNumber = moment($scope.currentDateInWeek).isoWeek();\n loadCurrentWeek();\n }\n $scope.weekpicker = {\n opened: false\n };\n $scope.dateOptions = timeService.globalDatePickerOptions();\n\n\n $scope.isUnprocessedFilterActive = false;\n $scope.tagFilterState = inActiveFilterButton;\n $scope.showActionList = true;\n // User settings\n $scope.userSettings = null;\n\n $scope.openSettings = function () {\n var options = {\n targetType : \"Board\",\n targetId : $scope.boardid,\n }\n $scope.refreshUsers = false;\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'boardSettings.html',\n controller: 'boardSettingsController',\n resolve: {\n options: function () {\n return options;\n }\n }\n });\n modalInstance.result.then(function (result) { \n $scope.title = result.name;\n $scope.refreshUsers = true;\n }); \n }\n\n \n $scope.predefinedPostIts = function () {\n\n if (!$scope.settings) {\n $scope.settings = {\n IsWeeklyBoard: $scope.isWeeklyBoard\n }\n }\n $scope.settings.showPostIts = $scope.showPostIts;\n if($scope.showPostIts){\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'postitPredefinedTags.html',\n controller: 'postitPredefinedTags',\n resolve: {\n labels: function () {\n return $scope.settings.PostIts;\n }\n }\n });\n\n modalInstance.result.then(function (result) {\n $scope.settings.PostIts = result;\n boardService.updateSettings($scope.boardid, $scope.settings).then(function () {\n });\n\n });\n } else {\n boardService.updateSettings($scope.boardid, $scope.settings).then(function () {\n });\n }\n }\n\n $scope.filterToggle = function(open) {\n if (open && !$scope.isWeeklyBoard && $scope.tagFilterState == inActiveFilterButton) {\n reloadTags();\n }\n }\n \n\n\n setTimeout(function () {\n\n $(\"#droparchive\").sortable({\n connectWith: \".boardcell\",\n placeholder: \"portlet-placeholder ui-corner-all\",\n over: function (e, ui) {\n // $(\"#actionList\").addClass(\"actionList-active\");\n },\n out: function (e, ui) {\n //$(\"#actionList\").removeClass(\"actionList-active\");\n },\n receive: function (e, ui) {\n // the li from the dom should contain data values\n var seletedItem = ui.item[0];\n // Read our suggestions id and text\n var id = $(seletedItem).data(\"id\");\n var taskBeingMoved = $(\"#droparchive\").find(\".portlet\")\n $(taskBeingMoved).addClass(\"animated zoomOutDown\");\n setTimeout(function () {\n $(taskBeingMoved).remove();\n }, 500);\n\n boardTaskService().moveTaskToArchive(id).then(function (result) {\n });\n\n }\n });\n\n }, 20);\n\n $scope.subscribe('UserSettingsChanged', function (userSettings) {\n $scope.userSettings = userSettings;\n });\n $scope.toggleActionList = function () {\n $scope.showActionList = !$scope.showActionList;\n\n\n if (!$scope.userSettings) return;\n if (!$scope.userSettings.boards) $scope.userSettings.boards = [];\n var boards = $scope.userSettings.boards;\n var hasBoardActionListSetting = $filter('filter')(boards, { boardId: $scope.boardid }, true);\n if (hasBoardActionListSetting.length > 0) {\n hasBoardActionListSetting[0].showActionList = $scope.showActionList;\n } else { // Create setting for board\n $scope.userSettings.boards.push({\n boardId: $scope.boardid,\n showActionList: $scope.showActionList\n });\n }\n employeeService.updateUserSettings($scope.userSettings).then(function () {\n $scope.publish(\"UserSettingsChanged\", $scope.userSettings);\n });\n }\n\n\n\n $scope.moveLastWeeksUncompletedTasks = function () {\n var lastWeek = getPreviousWeek();\n var week = timeService.getCurrentWeek(lastWeek.weekNumber, lastWeek.weekYear);\n \n boardService.moveUncompletedTasks($scope.boardid, week).then(function (data) {\n\n });\n }\n\n $scope.toggleArchive = function () {\n $scope.showArchive = !$scope.showArchive;\n if ($scope.showArchive) {\n $scope.showActionList = false;\n } else {\n $scope.showActionList = true;\n }\n $timeout(function () {\n boardDrawService.refreshTableLayout();\n\n $scope.archiveoptions = {\n timePeriod: $scope.archiveoptions.timePeriod,\n showArchive: $scope.showArchive\n };\n\n });\n\n\n }\n\n $scope.periodChangedHandler = function (timePeriod) {\n\n if (!timePeriod.timeframe) return;\n if ($scope.archiveoptions.timePeriod && $scope.archiveoptions.timePeriod.timeframe === timePeriod.timeframe) return;\n\n $scope.archiveoptions = {\n timePeriod: timePeriod,\n showArchive: $scope.showArchive\n };\n\n }\n\n\n\n $scope.assetUsers = [];\n $scope.subscribe(\"BoardWeekLoaded\", function (week) {\n if (filteredUser) {\n filterTagByUser(filteredUser.id);\n }\n if (filteredColor) {\n filterTagByColor(filteredColor);\n }\n });\n\n\n $scope.saveAsTemplate = function () {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'newboardtemplate.html',\n controller: 'newboardtemplateController',\n resolve: {\n board: function () {\n return $scope.boardData.board;\n }\n }\n });\n\n modalInstance.result.then(function (result) {\n\n });\n }\n\n $scope.deleteBoard = function () {\n if (!$scope.hasBoardDesignerPrivileges) return;\n $translate(['COMMON_CANCEL', 'COMMON_DELETE', 'ADMIN_DELETED_BOARD', 'ADMIN_DELETED_BOARD_DESCRIPTION']).then(function (translations) {\n var modalOptions = {\n closeButtonText: translations.COMMON_CANCEL,\n actionButtonText: translations.ADMIN_DELETED_BOARD,\n headerText: translations.COMMON_DELETE + ' ' + $scope.boardData.board.name + '?',\n bodyText: translations.ADMIN_DELETED_BOARD_DESCRIPTION\n };\n\n modalService.showModal({}, modalOptions).then(function (result) {\n boardService.deleteBoard($scope.boardid).then(function () {\n $state.go('flexiboards');\n // $scope.publish(\"SendBoardDeleted\", $scope.boardData.board);\n $scope.publish(\"SendBoardDeleted\", $scope.boardid);\n });\n });\n\n });\n }\n\n $scope.filterOnStatusBlank = function () {\n if ($scope.isUnprocessedFilterActive) {\n resetFilter();\n angular.element(\"div .portlet\").show();\n return;\n }\n angular.element(\"div .portlet\").hide();\n var tasksWithblankStatus = angular.element(\"div .status[data-status='blank']\");\n var tasks = angular.element(tasksWithblankStatus).closest(\"div .portlet\");\n $scope.tagFilterState = activeFilterButton;\n $scope.isUnprocessedFilterActive = true;\n tasks.show();\n $(\".rowcategory\").css(\"height\", 100);\n var filter = {\n status: 'blank'\n };\n updateActionlistOptions($scope.actionListOptions.targetHeight, filter);\n \n }\n\n\n console.log(\"boardController loaded\");\n // Week settings\n // if board.settings == week\n $scope.weekYear = moment().isoWeekYear();\n $scope.weekNumber = moment().isoWeek();\n $scope.week = null;\n $scope.archivePeriod = null;\n function publishWeekChanged() {\n var weekChange = {\n boardid: $scope.boardid,\n weekYear: $scope.weekYear,\n weekNumber: $scope.weekNumber,\n week: $scope.week\n }\n $scope.publish(\"BoardWeekChanged\", weekChange);\n }\n function loadCurrentWeek() {\n if ($scope.isWeeklyBoard) {\n var week = timeService.getCurrentWeek($scope.weekNumber, $scope.weekYear);\n $scope.week = week;\n }\n reloadTags();\n }\n $scope.nextWeek = function () {\n var firstDayNextWeek = moment($scope.week.endDate).add(1, 'days');\n $scope.weekYear = firstDayNextWeek.isoWeekYear();\n $scope.weekNumber = firstDayNextWeek.isoWeek();\n loadCurrentWeek();\n publishWeekChanged();\n }\n $scope.previousWeek = function () {\n var previousWeek = getPreviousWeek();\n $scope.weekYear = previousWeek.weekYear;\n $scope.weekNumber = previousWeek.weekNumber;\n loadCurrentWeek();\n publishWeekChanged();\n }\n\n function getPreviousWeek() {\n var lastDayPreviousWeek = moment($scope.week.startDate).subtract(1, 'days');\n return {\n weekYear: lastDayPreviousWeek.isoWeekYear(),\n weekNumber: lastDayPreviousWeek.isoWeek(),\n translatedWeekNumber: lastDayPreviousWeek.isoWeek()\n }\n }\n\n\n var filteredColor = null;\n $scope.shouldClearColorSelection = null;\n $scope.filterColor = function (color) {\n $scope.shouldClearUserSelection = {\n status: true\n };\n resetFilter();\n // Make sure previous filter user is not active anymore.\n if (color) {\n filterTagByColor(color.background);\n } else {\n angular.element(\"div .portlet\").show();\n }\n filteredColor = color;\n }\n\n var filteredUser = null;\n $scope.shouldClearUserSelection = null;\n $scope.filterUser = function (user) {\n $scope.shouldClearColorSelection = {\n status: true\n };\n resetFilter();\n // Make sure previous filter user is not active anymore.\n if (user) {\n filterTagByUser(user.id);\n } else {\n angular.element(\"div .portlet\").show();\n }\n filteredUser = user;\n }\n\n function filterTagByColor(color) {\n var taskToShow = getColorFilter(color);\n angular.element(\"div .portlet\").hide();\n $(taskToShow).show();\n var filter = {\n color: color\n };\n updateActionlistOptions($scope.actionListOptions.targetHeight, filter); \n }\n\n function filterTagByUser(userId) {\n var taskToShow = getUserFilter(userId);\n angular.element(\"div .portlet\").hide();\n $(taskToShow).show();\n var filter = {\n userId: userId\n };\n updateActionlistOptions($scope.actionListOptions.targetHeight, filter); \n }\n\n $scope.userListExpanded = function () {\n\n }\n\n $scope.filterTags = function (tag) {\n // find all id not filter;\n $scope.tagFilterState = activeFilterButton;\n filteredUser = null;\n \n $scope.shouldClearUserSelection = {\n status: true\n };\n $scope.shouldClearColorSelection = {\n status: true\n };\n tag.isActive = !tag.isActive;\n var result = getFilter();\n if (result.activeTags === 0) {\n $scope.clearFilter();\n return;\n }\n angular.element(\"div .portlet\").hide();\n for (var i = 0; i < result.tasksToShow.length; i++) { // show only selected\n angular.element(\"div .portlet[data-id='\" + result.tasksToShow[i] + \"']\").show();\n }\n var filteredTags = $filter('filter')($scope.tags, { isActive: true }, true);\n var filter = {\n tags: filteredTags\n };\n updateActionlistOptions($scope.actionListOptions.targetHeight, filter);\n }\n $scope.showTaskWithoutTag = function () {\n resetFilter();\n angular.element(\"div .portlet\").hide();\n var allTasks = $scope.tasks;\n for (var i = 0; i < allTasks.length; i++) { // Hide all \n if (allTasks[i].tags.length == 0) {\n angular.element(\"div .portlet[data-id='\" + allTasks[i].id + \"']\").show();\n };\n }\n }\n $scope.clearFilter = function () { \n $scope.shouldClearUserSelection = {\n status: true\n };\n $scope.shouldClearColorSelection = {\n status: true\n }; \n resetFilter();\n angular.element(\"div .portlet\").show();\n }\n\n \n \n function resetFilter() {\n $scope.tagFilterState = inActiveFilterButton;\n $scope.isUnprocessedFilterActive = false;\n \n updateActionlistOptions($scope.actionListOptions.targetHeight, {});\n\n if($scope.tags){\n var tags = $scope.tags;\n for (var i = 0; i < tags.length; i++) { // Hide all \n tags[i].isActive = false;\n }\n }\n\n $(\".rowcategory\").css(\"height\", 100); // default height, so rows are not too long when tasks are filtered away\n }\n\n function applyFilter(tags) {\n for (var i = 0; i < tags.length; i++) { // Hide all \n tags[i].isActive = false;\n }\n }\n \n\n function getColorFilter(color) {\n var tasks = angular.element(\"div .portlet[data-color='\" + color + \"']\");\n return tasks;\n }\n function getUserFilter(userId) {\n var tasks = angular.element(\"div .portlet[data-responsibleuserid='\" + userId + \"']\");\n return tasks;\n }\n\n function getFilter() {\n // find all active filters\n var tasksToShow = [];\n var tags = $scope.boardData.tags;\n var activeTags = 0;\n for (var i = 0; i < tags.length; i++) {\n if (tags[i].isActive == true) {\n tasksToShow = tasksToShow.concat(tags[i].tasks);\n activeTags += 1;\n }\n }\n return {\n activeTags: activeTags,\n tasksToShow: tasksToShow\n };\n\n }\n\n\n function subscribeToEvents() {\n $scope.subscribe(\"TaskUpdated\", function (data) {\n reloadTags() \n });\n $scope.subscribe(\"NewTask\", function (data) {\n reloadTags();\n });\n $scope.subscribe(\"TaskDeleted\", function (data) { reloadTags() });\n $scope.subscribe(\"TaskArchived\", function (data) { reloadTags() });\n $scope.subscribe(\"TaskMovedFromArchive\", function (data) { reloadTags() });\n }\n subscribeToEvents();\n\n\n\n function reloadTags() {\n console.log(\"reloading tags\");\n if ($scope.isWeeklyBoard) {\n boardService.getTagsForWeek($scope.boardid, { from: $scope.week.startDate, to: $scope.week.endDate }).then(function (tags) {\n $scope.boardData.tags = tags;\n $scope.tags = tags;\n });\n } else {\n boardService.getTags($scope.boardid).then(function (tags) {\n $scope.boardData.tags = tags;\n $scope.tags = tags;\n });\n }\n\n }\n\n $scope.addToFavorites = function () {\n $scope.isStar = true;\n var board = {\n id: $scope.boardid,\n name: $scope.title,\n boardType: $scope.boardData.board.boardType\n };\n $scope.quickAccess.push(board);\n saveQuickAccess();\n }\n $scope.removeFromFavorites = function () {\n $scope.isStar = false;\n var isFavorite = $filter('filter')($scope.quickAccess, { id: $scope.boardid })\n if (isFavorite.length > 0) {\n var currentIndex = $scope.quickAccess.indexOf(isFavorite[0]);\n $scope.quickAccess.splice(currentIndex, 1);\n saveQuickAccess();\n }\n }\n function saveQuickAccess() {\n employeeService.updateUserPreference(\"FlexiboardFavoriteBoards\", $scope.quickAccess).then(function (settings) {\n $scope.publish(\"FlexiboardFavoriteBoardsChanged\", $scope.quickAccess);\n });\n }\n\n function checkFavorite(){\n employeeService.getUserPreference(\"FlexiboardFavoriteBoards\").then(function (settings) {\n if (settings && settings.value) {\n angular.forEach(settings.value, function (board) {\n if (board) {\n if(board.id == $scope.boardid){\n $scope.isStar = true;\n }\n $scope.quickAccess.push(board);\n }\n });\n }\n });\n }\n }\n }\n }]);\n\n\n\n\n","import * as profileImageService from \"@common/services/user/profileImageService\"\n\nangular.module(\"DigiLean\").service('taskDrawingService', ['$translate', '$compile', \n function ($translate, $compile) {\n function taskDrawingService() {\n return {\n \n getTaskCardTheme: function (task, isKamishibai) {\n var theme = {\n statusClass: task.status,\n portletStyle: \"\"\n };\n\n if(isKamishibai){\n if (task.color && task.color !== \"#ffffff\") {\n theme.statusClass = \"\"; // We are not going to apply style when empty\n var postIt = taskDrawingService().getPostItFromColor(task.color);\n if (task.status == \"OK\") {\n theme.portletStyle = \"background:#8cc152 \" + \";border-bottom-color: \"+ postIt.background + \"; border-style: solid; border-width: 0px 0px 3px 0px;\";\n }\n else {\n theme.portletStyle = \"background:#ed5565 \" + \";border-bottom-color: \"+ postIt.background + \"; border-style: solid; border-width: 0px 0px 3px 0px;\";\n }\n\n }\n else {\n if (task.status == \"OK\") {\n theme.portletStyle = \"background:#8cc152;border-bottom-color: #8cc152; border-style: solid; border-width: 0px 0px 3px 0px;\";\n }\n else {\n theme.portletStyle = \"background:\" + \"#ed5565 \" + \";border-color: #ed5565; border-style: solid; border-width: 3px 3px 3px 3px;\";\n }\n }\n\n\n }else if (task.type === \"WeeklyBoardTask\") {\n var postIt = taskDrawingService().getPostItFromColor(task.color);\n // theme.portletStyle = \"style='background:\" + postIt.fillColor + \";border-color: \" + postIt.background + \"; border-style: solid; border-width: 0px 0px 3px 0px;'\";\n theme.portletStyle = \"border-color: \" + postIt.background + \"; border-style: solid; border-width: 0px 0px 3px 0px;\";\n\n\n\n \n } else { // Kanban / Flexi board\n if (task.color && task.color !== \"#ffffff\") {\n theme.statusClass = \"\"; // We are not going to apply style when empty\n var postIt = taskDrawingService().getPostItFromColor(task.color);\n if (task.status == \"blank\") {\n theme.portletStyle = \"background:\" + postIt.fillColor + \";border-color: \" + postIt.background + \"; border-style: solid; border-width: 0px 0px 3px 0px;\";\n } else if (task.status == \"OK\") {\n theme.portletStyle = \"background:\" + postIt.fillColor + \";border-color: #8cc152; border-style: solid; border-width: 3px 3px 3px 3px;\";\n }\n else if (task.status == \"unacceptable\") {\n theme.portletStyle = \"background:\" + postIt.fillColor + \";border-color: #e9573f; border-style: solid; border-width: 3px 3px 3px 3px;\";\n }\n\n }\n else {\n if (task.status == \"OK\") {\n theme.portletStyle = \"border-color: #8cc152; border-style: solid; border-width: 3px 3px 3px 3px;\";\n //theme.portletStyle = \"style='border-color: #01c298; border-style: solid; border-width: 3px 3px 3px 3px;'\";\n }\n else if (task.status == \"unacceptable\") {\n theme.portletStyle = \"border-color: #e9573f; border-style: solid; border-width: 3px 3px 3px 3px;\";\n }\n }\n }\n\n return theme;\n },\n\n updateStatus(boardId, taskId, status, isKamishibai) {\n\n var portlet = $(\"div .portlet[data-id='\" + taskId + \"']\").first();\n var task = this.getTaskFromDOM(portlet, boardId);\n if (task.status == status) return;\n \n task.status = status;\n var theme = this.getTaskCardTheme(task, isKamishibai)\n\n $(portlet).addClass(status);\n \n if(isKamishibai){\n $(portlet).attr(\"style\", theme.portletStyle);\n if(status !== 'blank'){\n $(portlet).addClass(\"animated flipInY\");\n }\n\n // Add status class / color to header\n var portletHeader = $(portlet).find(\".portlet-header\");\n $(portletHeader).removeClass();\n $(portletHeader).addClass(\"portlet-header \" + status);\n \n // remove animation afterwards\n setTimeout(function () {\n $(portlet).removeClass(\"animated flipInY\");\n }, 1000);\n //} else if (task.type == \"KanbanTask\" && task.color && task.color != \"#ffffff\" && task.color != \"#FFFFFF\") {\n } else if (task.type == \"KanbanTask\") {\n $(portlet).attr(\"style\", theme.portletStyle);\n // Add status class / color to header\n var portletHeader = $(portlet).find(\".portlet-header\");\n $(portletHeader).removeClass();\n $(portletHeader).addClass(\"portlet-header \" + status);\n } else {\n \n // Add status class / color to header\n var portletHeader = $(portlet).find(\".portlet-header\");\n $(portletHeader).removeClass();\n $(portletHeader).addClass(\"portlet-header \" + status);\n }\n\n // Set status icon\n var container = $(portlet).find(\".status\");\n var currentStatus = $(container).attr(\"data-status\");\n var currentIconClass = taskDrawingService().getIconClass(currentStatus, isKamishibai);\n var iconClass = taskDrawingService().getIconClass(status, isKamishibai);\n\n $(container).find('i').toggleClass(currentIconClass + ' ' + iconClass);\n $(container).attr('data-status', status);\n },\n\n updateAttachments: function (scope, taskId, files) {\n var task = $(\"div .portlet[data-id='\" + taskId + \"']\").first();\n var portletHeader = $(task).find(\".boardtask-attachments-container\").first();\n // var el = $compile( \"\" )( $scope );\n var internalScope = scope.$new(true);\n internalScope.files = files;\n var el = $compile(\"\")(internalScope);\n portletHeader.append(el);\n\n },\n\n updateSubTask: function (scope, task) {\n var taskDom = $(\"div .portlet[data-id='\" + task.id + \"']\").first();\n var portletHeader = $(taskDom).find(\".subtask-status-container\").first();\n var internalScope = scope.$new(true);\n internalScope.task = task;\n var el = $compile(\"\")(internalScope);\n portletHeader.append(el);\n },\n\n addUserList: function (users, updateResponsibleCallBack, idSelectorElement) {\n $translate('BOARD_CLEAR_RESPONSIBLE').then(function (translation) {\n var translatedClearResponsible = translation;\n var userList = \"
    • \" + translatedClearResponsible + \"
    • \";\n angular.forEach(users, function (user, key) {\n userList += \"
    • \" + user.firstName + \" \" + user.lastName + \" (\" + user.displayName + \")
    • \";\n });\n\n var ul = angular.element(\".responsiblecontainer ul\");\n ul.dropdown();\n if (ul.length > 0) {\n $(ul).empty();\n $(ul).append(userList);\n\n $('.responsiblecontainer li').off();\n $('.responsiblecontainer li').click(function (e) {\n if (idSelectorElement) {\n var task = $(this).closest(idSelectorElement);\n var taskId = $(task).data(\"id\");\n } else {\n var task = $(this).closest(\"div .portlet\");\n var taskId = $(task).data(\"id\");\n }\n\n var username = $(this).data(\"responsibleuser\");\n var userId = $(this).data(\"responsibleuserid\");\n var userDisplayName = $(this).data(\"displayname\");\n\n var responsible = $(task).attr(\"data-responsibleuser\");\n var responsibleUserId = $(task).attr(\"data-responsibleuserid\");\n\n var options = {\n taskId: taskId,\n user: {\n taskId: taskId,\n userName: username,\n userId: userId,\n userDisplayName: userDisplayName,\n previousUserName: responsible,\n previousUserId: responsibleUserId\n }\n }\n updateResponsibleCallBack(options);\n });\n }\n });\n },\n getPostIts: function () {\n return [\n {\n title: \"default\",\n fillColor: \"#ffffff\",\n background: \"#E6E9ED\"\n },\n {\n title: \"four\", // orange\n // fillColor: \"#FFCE54\",\n fillColor: \"#FFF6DF\",\n background: \"#FCBB42\"\n },\n {\n title: \"three\", // green\n // fillColor: \"#A0D468\",\n fillColor: \"#EDF7E3\",\n background: \"#8CC152\"\n },\n {\n title: \"two\", //blue\n // fillColor: \"#4FC1E9\",\n fillColor: \"#DFF3FB\",\n background: \"#3BAFDA\"\n },\n {\n title: \"one\", // red\n // fillColor: \"#FC6E51\",\n fillColor: \"#FEE4DF\",\n background: \"#E9573F\"\n },\n {\n title: \"five\", // pink\n // fillColor: \"#EC87C0\",\n fillColor: \"#FBE9F3\",\n background: \"#D770AD\"\n }\n\n ];\n },\n getPostItFromColor: function (color) {\n var postIts = this.getPostIts();\n for (let postIt of postIts) {\n\n // expected output: 1\n if (postIt.background == color) {\n return postIt;\n\n }\n }\n\n return {\n background: color,\n fillColor: \"#FFFFFF\"\n };\n },\n getTextDescription: function (task) {\n if (!task || !task.text) return \"\";\n\n var lessText = $translate.instant('COMMON_LESS');\n var moreText = $translate.instant('COMMON_MORE');\n\n var description =\n \"
      \" +\n \"
      \" +\n task.text +\n \"
      \" +\n \"\" + moreText + \"\" +\n \"
      \"\n\n return description;\n\n },\n\n getActionContainer: function (isWeeklyBoard) {\n if (isWeeklyBoard) {\n var actionContainer = \"\";\n } else {\n var actionContainer = \"\";\n }\n\n return actionContainer;\n\n },\n\n drawTimeElement: function (startTime, endTime) {\n\n var timeElement = \"\";\n if (startTime && endTime) {\n var start = moment(startTime).utc();\n var end = moment(endTime).utc()\n var duration = moment.duration(end.diff(start));\n var days = duration.asDays();\n if (days >= 1) return days + \" d\"; // needs translation\n\n timeElement += moment(startTime).utc().format(\"HH:mm\");\n timeElement += \"-\" + moment(endTime).utc().format(\"HH:mm\");\n\n }\n return timeElement;\n\n },\n\n drawResponsibleContainer: function (task) {\n var responsibleUser = \"\";\n var responsibleUserId = \"\";\n var responsibleDisplayName = \"\";\n var profileImageUrl = \"\";\n if (task.responsibleUserId) {\n responsibleUser = task.responsibleUser;\n responsibleUserId = task.responsibleUserId;\n responsibleDisplayName = task.responsibleDisplayName;\n if (!responsibleDisplayName) {\n responsibleDisplayName = responsibleUser;\n }\n }\n var profileImage = \"\";\n // if (profileImageUrl) {\n // profileImage = \"\";\n // }\n var responsibleContainer = \"
      \" +\n \"\" +\n \"
      \";\n return responsibleContainer;\n },\n\n drawResponsibleForCategory: function (categoryAssigned) {\n var hideButton = \"
      x
      \";\n var userinfo = \"
      \" + categoryAssigned.userDisplayName + \" \" + hideButton + \"
      \";\n\n if (!categoryAssigned.userId || categoryAssigned.userId === \"\") {\n userinfo = \"\";\n } else {\n profileImageService.getProfileImageUrl(categoryAssigned.userId, \"ExtraSmall\").then(profileImageUrl => {\n if (profileImageUrl) {\n // userinfo = \"
      \" + categoryAssigned.userDisplayName + \" \" + hideButton + \"
      \";\n userinfo = \"
      \" + hideButton + \"
      \";\n }\n })\n }\n\n var responsibleForCategory = \"
      \" +\n \"
      \"\n + userinfo +\n \"
      \";\n\n return responsibleForCategory;\n },\n\n updateResponsibleForCategory: function (container, categoryAssigned) {\n var hideButton = \"
      x
      \";\n $(container).attr(\"data-responsibleuserid\", categoryAssigned.userId);\n $(container).attr(\"data-responsibleuser\", categoryAssigned.userName);\n $(container).attr(\"data-responsibledisplayname\", categoryAssigned.userDisplayName);\n var userinfo = \"
      \" + categoryAssigned.userDisplayName + \"\" + hideButton + \"
      \";\n if (!categoryAssigned.userId || categoryAssigned.userId === \"\") {\n userinfo = \"\";\n }\n })\n \n }\n var userDisplay = $(container).find(\".userinfo\").first();\n $(userDisplay).replaceWith(userinfo);\n },\n\n drawCommentsContainer: function (count, animation, showAsUnread) {\n var animationClass = \"\";\n if (animation) {\n animationClass = \"animated \" + animation;\n }\n var unreadCssClass = \"\";\n if (showAsUnread) { unreadCssClass = \" primary-foreground\" }\n var commentsContainer = \"
      \";\n if (count > 0) {\n commentsContainer += \"\" +\n \"\" + count + \"\";\n\n }\n commentsContainer += \"
      \";\n return commentsContainer;\n },\n\n\n drawAttachmentContainer: function (count, animation, showAsUnread) {\n var animationClass = \"\";\n if (animation) {\n animationClass = \"animated \" + animation;\n }\n var unreadCssClass = \"\";\n if (showAsUnread) { unreadCssClass = \" primary-foreground\" }\n var attachmentcontainer = \"
      \";\n if (count > 0) {\n attachmentcontainer += \"\" +\n \"\" + count + \"\";\n\n }\n attachmentcontainer += \"
      \";\n return attachmentcontainer;\n },\n\n updateImage: function (taskId, fileResults) {\n var task = $(\"div .portlet[data-id='\" + taskId + \"'] .image-container\").first();\n task.find(\"img\").remove();\n for (let index = 0; index < fileResults.length; index++) {\n const fileResult = fileResults[index];\n if (fileResult.hasPreview) {\n task.append(\"\");\n }\n }\n },\n\n updateCommentCount: function (count, taskcontainer, animation) {\n var commentscontainer = $(taskcontainer).find(\".commentscontainer\").first();\n $(commentscontainer).replaceWith(this.drawCommentsContainer(count, animation, true));\n },\n\n updateAttachmentCount: function (count, taskcontainer, animation) {\n var commentscontainer = $(taskcontainer).find(\".attachmentcontainer\").first();\n $(commentscontainer).replaceWith(this.drawAttachmentContainer(count, animation, true));\n },\n\n getTaskFromDOM: function (portlet, boardId) {\n var taskTitle = $(portlet).find(\".tasktitle\").text();\n var taskText = $(portlet).find(\".description\").text();\n var activeTask = portlet;\n var id = activeTask.data(\"id\");\n var tags = activeTask.data(\"tags\");\n var toContainer = $(portlet).closest(\"td\");\n var date = toContainer.data(\"date\");\n var responsibleUser = activeTask.attr(\"data-responsibleuser\");\n var responsibleDisplayName = activeTask.attr(\"data-displayname\");\n var responsibleUserId = activeTask.attr(\"data-responsibleuserid\");\n var type = activeTask.attr(\"data-type\");\n var status = activeTask.find(\".status\").attr(\"data-status\");\n var repeatParentId = activeTask.data(\"repeatparentid\");\n var siblingId = activeTask.data(\"siblingid\");\n var commentCount = $(activeTask).find(\".commentscontainer\").data(\"commentcount\");\n var color = activeTask.attr(\"data-color\");\n var task = {\n id: id,\n boardId: boardId,\n type: type,\n title: taskTitle,\n text: taskText,\n status: status,\n tags: tags,\n boardDate: date,\n responsibleuserid: responsibleUserId,\n responsibleuser: responsibleUser,\n responsibleDisplayName: responsibleDisplayName,\n repeatParentId: repeatParentId,\n siblingId: siblingId,\n commentCount: commentCount,\n color: color\n }\n return task;\n },\n\n getDeviationAction: function (access) {\n if (access.hasDeviation) {\n return \"
    • \" +\n \"
    • Add deviation
    • \";\n }\n return \"\";\n },\n\n\n readjustTaskWidth: function () {\n var tableWidth = $(\"#boardContainer .ibox\").width();\n var columnsOpen = $(\"th.column-expand:visible\").length;\n var cellMaxWidth = Math.round((tableWidth - 60) / columnsOpen);\n // Adjust cells so the table scales according to table.\n $(\".boardcell\").css(\"max-width\", cellMaxWidth + \"px\");\n $(\".boardcell\").css(\"min-width\", (cellMaxWidth - 60) + \"px\");\n },\n\n\n\n drawTags: function (tags, infoContainer) {\n var drawTags = true;\n if (!tags || tags.length === 0 || tags[0].tag === \"\") {\n drawTags = false;\n }\n if (drawTags === false && infoContainer === \"\") return \"\";\n\n var container = $(\"
      \");\n var ul = $('
        ');\n if(drawTags){\n for (var i = 0; i < tags.length; i++) {\n var li = \"
      • \" + tags[i].tag + \"
      • \";\n ul.append(li);\n }\n }\n container.append(infoContainer);\n container.append(ul);\n\n return container.wrap('

        ').parent().html();\n },\n getIconClass: function (status, isKamishibai) {\n var statusClasses = ['blank', 'OK', 'unacceptable'];\n var iconClasses = ['far fa-square', 'fa fa-check-square', 'fas fa-times-circle'];\n if(isKamishibai){\n iconClasses = ['far fa-square kamishibai-icon', 'fas fa-check-square kamishibai-icon', 'fas fa-times-circle kamishibai-icon'];\n //iconClasses = ['far fa-square', 'far fa-check-square', 'far fa-times-circle'];\n } \n var index = $.inArray(status, statusClasses);\n return iconClasses[index];\n\n },\n\n getNextStatus: function (currentStatus, isKamishibai) {\n var statusClasses = ['blank', 'OK', 'unacceptable'];\n var index = $.inArray(currentStatus, statusClasses);\n var nextIndex = index + 1;\n if (nextIndex === statusClasses.length) {\n nextIndex = 0;\n }\n\n var statusText = statusClasses[nextIndex];\n return {\n status: statusText,\n iconClass: this.getIconClass(statusText,isKamishibai)\n }\n }\n }\n }\n return taskDrawingService;\n }]);\n\n","import * as dashboardService from \"@common/services/dashboardService\"\nimport * as boardService from \"@common/services/boardService\"\n\nangular\n .module('DigiLean')\n .directive(\"connectedUsers\", ['$translate',\n function ($translate) {\n return {\n templateUrl: 'connectedUsers.html',\n restrict: 'E',\n scope: {\n \"boardId\": \" {\n user.isSelected = false;\n });\n scope.displayUsers = [];\n scope.users = data;\n scope.users.sort(function (a, b) {\n if (a.profileImage && b.profileImage) {\n var test = a.displayName > b.displayName;\n if (a.displayName.toLowerCase() > b.displayName.toLowerCase()) {\n return 1;\n } else {\n return -1\n }\n } else if (a.profileImage) {\n return -1\n } else {\n return 1\n }\n })\n for (let index = 0; index < maxDisplayUsers; index++) {\n if (scope.users.length - 1 >= index) {\n scope.displayUsers.push(scope.users[index]);\n }\n }\n activateDraggable();\n scope.shouldExpandButtonBeVisible = scope.displayUsers.length < scope.users.length;\n scope.publish(\"RefreshUserConnected\");\n }\n\n scope.toggleShowAll = function () {\n scope.showAll = !scope.showAll;\n if (scope.listExpandedHandler) {\n scope.listExpandedHandler();\n }\n activateDraggable();\n }\n\n scope.$watch('clearSelection', function () {\n if (!scope.clearSelection) return;\n if (!scope.selectedUser) return;\n scope.selectedUser.isSelected = false;\n });\n\n // connected users\n scope.subscribe('UsersConnectedChanged', function (data) {\n console.log('userconnected event');\n updateConnectedUsers(data);\n });\n\n scope.selectedUser = null;\n scope.selectUser = function (user) {\n // If user already selected, we need to clear selection.\n if (scope.selectedUser && scope.selectedUser !== user) { // Clear previous selectedUser\n scope.selectedUser.isSelected = false;\n }\n if (user.isSelected) {\n scope.selectedUser = null;\n } else {\n scope.selectedUser = user;\n }\n user.isSelected = !user.isSelected;\n scope.selectUserHandler({ user: scope.selectedUser });\n }\n\n function updateConnectedUsers(connectedUsers) {\n if (!connectedUsers) return;\n for (var i = 0; i < scope.users.length; i++) {\n var user = scope.users[i];\n var isConnected = false;\n for (var j = 0; j < connectedUsers.length; j++) {\n if (scope.users[i].userName.toLowerCase() === connectedUsers[j].userName.toLowerCase()) {\n isConnected = true;\n }\n }\n user.isConnected = isConnected;\n }\n }\n\n // DragAndDrop of user\n function userplaceHolder(event) {\n var dragTarget = event.currentTarget;\n var html = $(dragTarget).html();\n return \"

      • \" + html + \"
      • \";\n // var user = $(dragTarget).data(\"displayname\");\n // return \"
      • \" + user + \"
      • \";\n }\n }\n }\n }]);\n","import * as timeService from \"@common/services/timeService\"\nimport * as boardService from \"@common/services/boardService\"\nimport * as employeeService from \"@common/services/employeeService\"\nimport * as customerService from \"@common/services/customers/customerService\"\nimport envConfig from \"@common/envConfig\"\n\nvar DigiLean = angular.module('DigiLean');\nDigiLean.controller('personalboardController', [\n '$scope', '$stateParams', '$state', '$filter', '$translate', '$uibModal', 'authService', 'boardTaskService', 'deviationService', 'suggestionService',\n function ($scope, $stateParams, $state, $filter, $translate, $uibModal, authService, boardTaskService, deviationService, suggestionService) {\n $scope.isInTeams = false;\n if(envConfig.isTeamsMode){\n $scope.isInTeams = true; \n }\n $scope.new = {\n status: \"blank\",\n list: [],\n filteredList: [],\n translated: $translate.instant('BOARD_INBOX'),\n hide: false\n };\n $scope.inprogress = {\n status: \"inprogress\",\n list: [],\n filteredList: [],\n translated: $translate.instant('COMMON_IN_PROGRESS'),\n hide: false\n };\n $scope.implemented = {\n status: \"OK\",\n list: [],\n filteredList: [],\n translated: $translate.instant('IMPROVEMENT_IMPLEMENTED'),\n hide: false\n };\n $scope.waiting = {\n status: \"unacceptable\",\n list: [],\n filteredList: [],\n translated: $translate.instant('BOARD_WAITING'),\n hide: false\n };\n var userId = authService.getCurrentUser().userId;\n var boards = [];\n boardService.getMemberBoards().then(function (data) {\n boards = data;\n checkFavorite();\n });\n\n $scope.isStar = false;\n $scope.quickAccess = [];\n\n $scope.options = {\n timePeriod: {\n timeframe: \"thisandnextweek\",\n useDefaultTimeframes: true,\n timeframes: []\n }\n };\n\n $scope.showFilter = false;\n $scope.toggleFilter = function () {\n $scope.showFilter = !$scope.showFilter;\n }\n\n $scope.subscribe('UserAuthenticatedAndReady', function (profile) {\n userId = profile.user.id;\n });\n $scope.subscribe('TaskStatusUpdated', function (status) {\n if (status.responsibleUserId === userId) {\n removeFromList($scope.new, status);\n removeFromList($scope.inprogress, status);\n removeFromList($scope.implemented, status);\n removeFromList($scope.waiting, status);\n addToList($scope.new, status);\n addToList($scope.inprogress, status);\n addToList($scope.implemented, status);\n addToList($scope.waiting, status);\n $scope.$apply();\n }\n });\n $scope.subscribe('TaskMoved', function (task) {\n if (task.responsibleUserId === userId) {\n updateTask(task.id);\n }\n });\n $scope.subscribe('TaskDateMoved', function (task) {\n if (task.responsibleUserId === userId) {\n updateTask(task.taskId);\n }\n });\n\n $scope.subscribe('TaskUpdated', function (task) {\n if (task.responsibleUserId === userId) {\n updateTask(task.id);\n }\n });\n $scope.subscribe('TaskCommentAdded', function (comment) {\n updateTask(comment.boardTaskId);\n });\n $scope.subscribe('TaskCommentDeleted', function (comment) {\n updateTask(comment.boardTaskId);\n });\n $scope.subscribe('TaskChangedBoard', function (board) {\n updateTask(board.taskId);\n });\n $scope.subscribe('TaskAssigned', function (taskAssigned) {\n var status = {\n taskId: taskAssigned.taskId\n }\n if (taskAssigned.previousUserId === userId) {\n removeFromList($scope.new, status);\n removeFromList($scope.inprogress, status);\n removeFromList($scope.implemented, status);\n removeFromList($scope.waiting, status);\n $scope.$apply();\n }\n else if (taskAssigned.userId === userId) {\n boardTaskService().get(taskAssigned.taskId).then(function (task) {\n task.cssState = \"animated slideInDown\"; // Add animation\n task.dateStyleClass = getDateStyle(task.boardDate);\n task.contentDescription = getDescription(task);\n if (task.status == \"blank\") {\n if (task.progressStatus == \"inprogress\") {\n if (isPartOfList($scope.inprogress.list, task.id)) return;\n $scope.inprogress.list.unshift(task);\n } else {\n if (isPartOfList($scope.new.list, task.id)) return;\n $scope.new.list.unshift(task);\n }\n } else if (task.status == \"OK\") {\n if (isPartOfList($scope.implemented.list, task.id)) return;\n $scope.implemented.list.unshift(task);\n } else {\n if (isPartOfList($scope.new.list, task.id)) return;\n $scope.new.list.unshift(task);\n }\n removeAnmiation(task);\n });\n }\n });\n $scope.subscribe('NewTask', function (task) {\n // If current user is involved in task.\n if (!task.responsibleUserId) return;\n if (task.responsibleUserId === userId) {\n if (!isPartOfList($scope.new.list, task.id)) {\n boardTaskService().get(task.id).then(function (task) {\n task.dateStyleClass = getDateStyle(task.boardDate);\n task.contentDescription = getDescription(task);\n task.cssState = \"animated slideInDown\"; // Add animation\n if (!isPartOfList($scope.new.list, task.id)) {\n $scope.new.list.unshift(task);\n }\n removeAnmiation(task);\n });\n }\n }\n });\n\n function isPartOfList(list, taskId) {\n var isPartOfContainer = $filter('filter')(list, { id: taskId });\n return isPartOfContainer.length > 0;\n }\n $scope.subscribe('TaskDeleted', function (id) {\n var status = {\n taskId: id\n }\n // suggestionId, status\n removeFromList($scope.new, status);\n removeFromList($scope.inprogress, status);\n removeFromList($scope.implemented, status);\n removeFromList($scope.waiting, status);\n $scope.$apply();\n\n });\n $scope.subscribe('TaskArchived', function (id) {\n var status = {\n taskId: id\n }\n // suggestionId, status\n removeFromList($scope.new, status);\n removeFromList($scope.inprogress, status);\n removeFromList($scope.implemented, status);\n removeFromList($scope.waiting, status);\n $scope.$apply();\n });\n $scope.subscribe('RepeatingTasksDeleted', function (taskIds) {\n // If current user is involved in task.\n angular.forEach(taskIds, function (id, key) {\n var status = {\n taskId: id\n }\n // suggestionId, status\n removeFromList($scope.new, status);\n removeFromList($scope.inprogress, status);\n removeFromList($scope.implemented, status);\n removeFromList($scope.waiting, status);\n $scope.$apply();\n });\n\n });\n\n\n // Time handling\n $scope.timeframe = \"thisandnextweek\"\n $scope.timePeriod = timeService.getTimePeriod($scope.timeframe);\n $scope.periodChangedHandler = function (timePeriod) {\n if ($scope.timePeriod && $scope.timePeriod.from === timePeriod.period.from && $scope.timePeriod.to === timePeriod.period.to) {\n return;\n }\n $scope.timePeriod = timePeriod.period;\n\n }\n\n $scope.noOfActiveStatusColumn = function () {\n var number = 0;\n if (!$scope.new.hide) { number++; }\n //if(!$scope.planned.hide) { number++;}\n if (!$scope.inprogress.hide) { number++; }\n if (!$scope.implemented.hide) { number++; }\n if (!$scope.waiting.hide) { number++; }\n return number;\n };\n\n $scope.newItem = function () {\n var task = {\n id: 0,\n boardId: 0,\n title: \"\",\n text: \"\",\n boardDate: moment().startOf('day'),\n status: 'blank',\n tags: \"\"\n }\n customerService.getAllUsers().then(function (users) {\n $scope.users = users;\n });\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'newBoardTask.html',\n controller: 'newBoardTaskController',\n resolve: {\n task: function () {\n return task;\n },\n options: function () {\n var options = {\n canChangeBoard: true,\n showDueDate: true,\n users: $scope.users\n }\n return options;\n }\n }\n });\n };\n\n $scope.openTask = function(taskId, activeTab) {\n boardTaskService().get(taskId).then(function (task) {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'boardTask.html',\n controller: 'boardTaskController',\n resolve: {\n task: function () {\n return task;\n },\n activeTab: function () {\n return activeTab;\n },\n options: function () {\n var options = {\n archiveAvailable: false,\n canChangeBoard: true\n }\n return options;\n }\n }\n });\n });\n }\n\n $scope.openForEdit = function (task) {\n if (task.improvementSuggestionId) {\n openImprovement(task.improvementSuggestionId);\n } else if (task.deviationId) {\n openDeviation(task.deviationId);\n } else if (task.a3Id) {\n navigateToA3(task.a3Id);\n } else { //both personal and board tasks\n $scope.openTask(task.id, \"Info\"); \n }\n }\n\n if ($stateParams.id) {\n var taskid = parseInt($stateParams.id);\n // TODO could this input also be actionlistitem for improvement, deviation or a3?\n boardTaskService().get(taskid).then(function (task) {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'boardTask.html',\n controller: 'boardTaskController',\n resolve: {\n task: function () {\n return task;\n },\n activeTab: function () {\n return \"Info\";\n },\n options: function () {\n var options = {\n archiveAvailable: false\n }\n return options;\n }\n }\n });\n });\n }\n\n $scope.suggestionSortableOptions = {\n connectWith: \".task-list\",\n receive: function (e, ui) {\n var target = ui.item.sortable.droptarget[0];\n var status = $(target).attr(\"data-status\");\n var source = ui.item.sortable.source[0];\n var task = ui.item.sortable.model;\n var statusOptions = {\n taskid: task.id,\n status: status\n };\n if (status == \"inprogress\") {\n boardTaskService().updateProgressStatus(task.id, statusOptions).then(function (result) {\n });\n } else {\n boardTaskService().updateStatus(task.id, statusOptions).then(function (result) {\n });\n }\n }\n };\n\n $scope.navigateToBoard = function ($event, boardId) {\n $state.go('board', { id: boardId });\n $event.preventDefault();\n }\n\n function navigateToA3(a3Id) {\n $state.go('a3wizard', { id: a3Id }, { reload: false });\n }\n\n function openImprovement(improvementid) {\n suggestionService().get(improvementid).then(function (suggestion) {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n templateUrl: 'fullImprovementInfoForm.html',\n controller: 'fullImprovementModalController',\n windowClass: 'fullSuggestion-modal-window',\n resolve: {\n suggestion: function () {\n return suggestion;\n },\n activeTab: function () {\n return \"Info\";\n }\n }\n });\n });\n }\n\n function openDeviation(id) {\n deviationService().get(id).then(function (deviation) {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n templateUrl: 'fullDeviation.html',\n controller: 'fullDeviationController',\n windowClass: 'full-screen',\n resolve: {\n deviation: function () {\n return deviation;\n },\n activeTab: function () {\n return \"Info\";\n }\n }\n });\n });\n }\n\n $scope.hasDueDate = function (item) {\n if (item.boardDate) {\n return true;\n } else return false;\n };\n\n $scope.openA3 = function (a3Id) {\n $state.go('a3wizard', { id: a3Id }, { reload: false });\n };\n\n function updateTask(taskId) {\n var isPartOfContainer = $filter('filter')($scope.new.list, { id: taskId });\n if (isPartOfContainer.length > 0) {\n replaceTask($scope.new.list, taskId, isPartOfContainer[0]);\n } else {\n isPartOfContainer = $filter('filter')($scope.inprogress.list, { id: taskId });\n if (isPartOfContainer.length > 0) {\n replaceTask($scope.inprogress.list, taskId, isPartOfContainer[0]);\n } else {\n isPartOfContainer = $filter('filter')($scope.implemented.list, { id: taskId });\n if (isPartOfContainer.length > 0) {\n replaceTask($scope.implemented.list, taskId, isPartOfContainer[0]);\n } else {\n isPartOfContainer = $filter('filter')($scope.waiting.list, { id: taskId });\n if (isPartOfContainer.length > 0) {\n replaceTask($scope.waiting.list, taskId, isPartOfContainer[0]);\n }\n }\n }\n\n }\n }\n\n function replaceTask(list, updatedTaskId, existingTask) {\n boardTaskService().get(updatedTaskId).then(function (db) {\n var currentTask = existingTask;\n\n var index = list.indexOf(currentTask);\n list[index] = db;\n db.dateStyleClass = getDateStyle(db.boardDate);\n db.contentDescription = getDescription(db);\n db.cssState = \"animated bounce\"; // Add animation\n removeAnmiation(db);\n });\n }\n\n function getDateStyle(date) {\n if (!date) return \"\";\n\n var iscurrentDate = moment(date).isSame(new Date(), \"day\");\n if (iscurrentDate) {\n return \"today\";\n } else {\n var overdue = \"\";\n var duration = moment.duration(moment().diff(moment(date)));\n var days = duration.asDays();\n if (days > 1) {\n overdue = \"overdue\";\n }\n return overdue;\n }\n }\n\n function removeFromList(statusContainer, status) {\n var isPartOfContainer = $filter('filter')(statusContainer.list, { id: status.taskId }, true);\n if (isPartOfContainer.length > 0) {\n var current = isPartOfContainer[0];\n var index = statusContainer.list.indexOf(current);\n statusContainer.list.splice(index, 1);\n console.log(\"splice: \" + statusContainer.status);\n }\n }\n function addToList(statusContainer, status) {\n // is part of list\n var isPartOfContainer = $filter('filter')(statusContainer.list, { id: status.taskId }, true);\n if (isPartOfContainer.length === 0) {\n if (statusContainer.status === status.status) {\n boardTaskService().get(status.taskId).then(function (task) {\n task.dateStyleClass = getDateStyle(task.boardDate);\n task.contentDescription = getDescription(task);\n task.cssState = \"animated slideInDown\"; // Add animation\n statusContainer.list.unshift(task);\n removeAnmiation(task);\n });\n\n }\n }\n }\n\n $scope.addToFavorites = function () {\n $scope.isStar = true;\n var board = {\n id: \"PERSONAL\",\n name: $translate.instant(\"BOARD_PERSONAL_BOARD\"),\n boardType: \"PERSONAL\"\n };\n $scope.quickAccess.push(board);\n saveQuickAccess();\n }\n $scope.removeFromFavorites = function () {\n $scope.isStar = false;\n var isFavorite = $filter('filter')($scope.quickAccess, { id: \"PERSONAL\" })\n if (isFavorite.length > 0) {\n var currentIndex = $scope.quickAccess.indexOf(isFavorite[0]);\n $scope.quickAccess.splice(currentIndex, 1);\n saveQuickAccess();\n }\n }\n function saveQuickAccess() {\n employeeService.updateUserPreference(\"FlexiboardFavoriteBoards\", $scope.quickAccess).then(function (settings) {\n $scope.publish(\"FlexiboardFavoriteBoardsChanged\", $scope.quickAccess);\n });\n }\n\n function checkFavorite(){\n employeeService.getUserPreference(\"FlexiboardFavoriteBoards\").then(function (settings) {\n if (settings && settings.value) {\n angular.forEach(settings.value, function (board) {\n if (board) {\n if(board.id == \"PERSONAL\"){\n $scope.isStar = true;\n }\n $scope.quickAccess.push(board);\n }\n });\n }\n });\n }\n\n function getDescription(item) {\n if (item.boardId) {\n if (boards.length == 0) {\n boardService.getMemberBoards().then(function (data) {\n boards = data;\n var selectedBoard = $filter('filter')(boards, { id: item.boardId }, true)[0];\n if (selectedBoard) {\n return selectedBoard.name;\n } else return \"\";\n });\n } else {\n var selectedBoard = $filter('filter')(boards, { id: item.boardId }, true)[0];\n if (selectedBoard) {\n return selectedBoard.name;\n } else return \"\";\n }\n } else if (item.a3Id) {\n return \"A3\";\n } else if (item.deviationId) {\n return $translate.instant('COMMON_DEVIATION');\n } else if (item.improvementSuggestionId) {\n return $translate.instant('COMMON_SUGGESTION');\n } else if (item.taskType == 'SubTask') {\n return $translate.instant('COMMON_SUBTASK');\n } else return $translate.instant('DASHBOARD_PERSONAL');\n }\n function removeAnmiation(task) {\n setTimeout(function () {\n task.cssState = \"\";\n }, 1000);\n }\n\n }]);\n","import * as boardService from \"@common/services/boardService\"\n\nangular\n .module('DigiLean')\n .directive(\"personalboardFilter\", ['$filter', '$translate', 'boardTaskService',\n function ($filter, $translate, boardTaskService) {\n return {\n templateUrl: 'personalboardFilter.html',\n restrict: 'E',\n scope: {\n 'new': '=',\n 'inprogress': '=',\n 'implemented': '=',\n 'waiting': '=',\n 'timePeriod': '='\n },\n link: function (scope, elem, attrs) {\n scope.isFilterActive = false;\n scope.boards = [];\n\n scope.$watch('timePeriod', function (value) {\n /*Checking if the given value is not undefined*/\n if (value) {\n getAllData();\n }\n });\n\n function getDescription(item){\n if(item.boardId){\n //var board = $filter('filter')(scope.boards, { id: item.boardId }, true)[0];\n if(item.board){\n return item.board.name;\n } else return \"\"; \n } else if (item.a3Id){\n return \"A3\";\n } else if (item.deviationId){\n return $translate.instant('COMMON_DEVIATION');\n }else if (item.improvementSuggestionId){\n return $translate.instant('COMMON_SUGGESTION');\n } else if (item.taskType == 'SubTask'){\n return $translate.instant('COMMON_SUBTASK');\n } else return $translate.instant('DASHBOARD_PERSONAL');\n \n }\n\n function getData(status) {\n boardTaskService().getMyTasksByStatus(status.status, scope.timePeriod).then(function (result) {\n if(result){\n for (var s = 0; s < result.length; s++) {\n result[s].dateStyleClass = getDateStyle(result[s].boardDate);\n //result[s].board = $filter('filter')(scope.boards, { id: result[s].boardId }, true)[0];\n result[s].contentDescription = getDescription(result[s]);\n loadImage(result[s]);\n }\n\n status.list = result;\n status.filteredList = result;\n if (scope.isFilterActive) {\n filterTasks();\n }\n }\n });\n }\n\n\n function getAllData() {\n if(scope.boards.length == 0){\n boardService.getMemberBoards().then(function (data) {\n scope.boards = data;\n resetBoardsFilter();\n getData(scope.new);\n getData(scope.inprogress);\n getData(scope.implemented);\n getData(scope.waiting);\n });\n } else {\n getData(scope.new);\n getData(scope.inprogress);\n getData(scope.implemented);\n getData(scope.waiting);\n }\n }\n\n // getAllData();\n\n function loadImage(task){\n if (task.attachmentCount > 0) {\n boardTaskService().getAttachments(task.id).then(function (attachments) {\n task.attachments = attachments;\n });\n }\n }\n\n\n function getDateStyle(date) {\n if (!date) return \"\";\n \n var iscurrentDate = moment(date).isSame(new Date(), \"day\");\n if(iscurrentDate)\n {\n return \"today\";\n } else { \n var overdue = \"\"; \n var duration = moment.duration(moment().diff(moment(date)));\n var days = duration.asDays();\n if (days > 1) {\n overdue = \"overdue\";\n }\n return overdue;\n }\n }\n\n\n scope.statuses = [scope.new, scope.inprogress, scope.implemented, scope.waiting];\n scope.hideStatus = function (status) {\n status.hide = !status.hide;\n };\n scope.priorityOptions = [\n {\n priorityDB: -10,\n translated: $translate.instant('COMMON_LOW'),\n cssClass: \"digilean-label-historical\",\n filteredAndInResultList: false\n }, {\n priorityDB: 0,\n translated: $translate.instant('COMMON_MEDIUM'),\n cssClass: \"btn-default\",\n filteredAndInResultList: false\n }, {\n priorityDB: 10,\n translated: $translate.instant('COMMON_HIGH'),\n cssClass: \"btn-danger\",\n filteredAndInResultList: false\n }\n ];\n\n function loadBoards() {\n boardService.getMemberBoards().then(function (data) {\n scope.boards = data;\n resetBoardsFilter();\n });\n }\n\n function resetBoardsFilter() {\n angular.forEach(scope.boards, function (board) {\n board.filteredAndInResultList = false;\n });\n }\n\n\n function resetPriorityFilter() {\n angular.forEach(scope.priorityOptions, function (item) {\n item.filteredAndInResultList = false;\n });\n }\n scope.filterPriority = function (priority) {\n priority.filteredAndInResultList = !priority.filteredAndInResultList;\n filterTasks();\n }\n\n scope.filterBoard = function (board) {\n board.filteredAndInResultList = !board.filteredAndInResultList;\n filterTasks();\n }\n\n function resetStatusFilter() {\n angular.forEach(scope.statuses, function (status) {\n status.hide = false;\n });\n }\n scope.removeFilter = function () {\n resetStatusFilter();\n resetPriorityFilter();\n resetBoardsFilter();\n filterTasks();\n };\n\n function filterTasks() {\n scope.new.filteredList = scope.new.list;\n scope.inprogress.filteredList = scope.inprogress.list;\n scope.implemented.filteredList = scope.implemented.list;\n scope.waiting.filteredList = scope.waiting.list;\n\n var boardsToShow = $filter('filter')(scope.boards, { filteredAndInResultList: true }, true);\n if (boardsToShow.length > 0) {\n scope.isFilterActive = true;\n scope.new.filteredList = getFilteredListByBoards(scope.new.filteredList, boardsToShow);\n scope.inprogress.filteredList = getFilteredListByBoards(scope.inprogress.filteredList, boardsToShow);\n scope.implemented.filteredList = getFilteredListByBoards(scope.implemented.filteredList, boardsToShow);\n scope.waiting.filteredList = getFilteredListByBoards(scope.waiting.filteredList, boardsToShow);\n }\n\n var activePriorityFilter = priorityFilterActive();\n if (activePriorityFilter.length > 0) {\n scope.isFilterActive = true;\n scope.new.filteredList = $filter('filter')(scope.new.filteredList, valueInList('priorityStatus', activePriorityFilter));\n scope.inprogress.filteredList = $filter('filter')(scope.inprogress.filteredList, valueInList('priorityStatus', activePriorityFilter));\n scope.implemented.filteredList = $filter('filter')(scope.implemented.filteredList, valueInList('priorityStatus', activePriorityFilter));\n scope.waiting.filteredList = $filter('filter')(scope.waiting.filteredList, valueInList('priorityStatus', activePriorityFilter));\n }\n\n\n }\n function valueInList(property, list) {\n return function (item) {\n for (var i = 0; i < list.length; i++) {\n if (item[property] === list[i]) return true;\n }\n return false;\n }\n }\n function hasValuesInListFilter(property) {\n return function (item) {\n if (item[property] && item[property].length > 0) return true;\n return false;\n }\n }\n function getFilteredListByBoards(list, boards) {\n if (boards.length === 0) return list;\n var filteredList = [];\n for (var i = 0; i < list.length; i++) {\n var task = list[i];\n for (var j = 0; j < boards.length; j++) {\n var board = boards[j];\n if (task.boardId === board.id) {\n filteredList.push(task);\n }\n }\n }\n return filteredList;\n }\n\n function priorityFilterActive() {\n var filteredPriority = [];\n angular.forEach(scope.priorityOptions, function (priority) {\n if (priority.filteredAndInResultList) {\n filteredPriority.push(priority.priorityDB);\n }\n });\n return filteredPriority;\n }\n }\n }\n }]);\n","import * as customerService from \"@common/services/customers/customerService\"\nimport * as profileService from \"@common/services/user/profileService\"\nimport * as boardService from \"@common/services/boardService\"\nimport * as profileImageService from \"@common/services/user/profileImageService\"\n\nvar DigiLean = angular.module(\"DigiLean\")\nDigiLean.controller('moveSubTaskController',\n ['$scope', '$uibModalInstance','boardTaskService','taskDrawingService','parenttask','days','debounce',\n function ($scope, $uibModalInstance, boardTaskService, taskDrawingService, parenttask, days, debounce) {\n $scope.parentTask = parenttask;\n $scope.days = days;\n\n $scope.tasks = [];\n $scope.boards = [];\n $scope.canEdit = true;\n\n $scope.isLoading = true;\n boardTaskService().getSubTasks($scope.parentTask.id).then(function (tasks) {\n //\n $scope.tasks = [];\n for (let index = 0; index < tasks.length; index++) {\n const task = tasks[index];\n if(task.status != 'OK'){\n setupTask(task);\n $scope.tasks.push(task);\n }\n \n }\n //$scope.tasks = tasks;\n $scope.isLoading = false;\n });\n\n var setupTask = function (task) {\n if (task.boardDate) {\n task.boardDate = moment(task.boardDate).toDate();\n task.newBoardDate = moment(task.boardDate).add($scope.days, 'days').toDate();\n task.updateDueDate = true;\n } else {\n task.updateDueDate = false;\n }\n task.datePicker = {\n opened: false\n }\n setResponsible(task);\n setBoard(task);\n }\n\n $scope.translationData = {\n parentTaskTitle: $scope.parentTask.title\n };\n\n $scope.close = function () {\n $uibModalInstance.dismiss('cancel');\n }\n\n $scope.changeDate = function (task) {\n // task.updateDueDate = !task.updateDueDate;\n if(!task.boardDate && task.updateDueDate){\n task.newBoardDate = moment($scope.parentTask.boardDate).add($scope.days, 'days').toDate();\n }\n }\n\n function setResponsible(task) {\n if (task.responsibleUserId && $scope.users) {\n var user = $scope.users.find(u => u.userId == task.responsibleUserId);\n if (user) {\n task.user = user;\n }\n }\n }\n\n function setBoard(task) {\n if (task.boardId && $scope.boards) {\n var existsOutsideParent = false;\n if (task.boardId == $scope.parentTask.boardId) {\n if (task.isActionItem) {\n existsOutsideParent = true;\n } else if (task.rowCategoryId) {\n existsOutsideParent = true;\n }\n } else {\n existsOutsideParent = true;\n }\n if (existsOutsideParent) {\n var board = $scope.boards.find(b => b.id == task.boardId);\n if (board) {\n task.board = board;\n }\n }\n }\n }\n\n async function getAllUsers() {\n \n $scope.users = await profileImageService.getAllUsersIncludeProfileImage()\n\n for (let index = 0; index < $scope.tasks.length; index++) {\n const task = $scope.tasks[index];\n setResponsible(task);\n }\n }\n getAllUsers();\n\n\n boardService.getAllBoardNames().then(function (data) {\n $scope.boards = data;\n for (let index = 0; index < $scope.tasks.length; index++) {\n const task = $scope.tasks[index];\n setBoard(task);\n }\n });\n\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n\n $scope.save = function () {\n for (let index = 0; index < $scope.tasks.length; index++) {\n const task = $scope.tasks[index];\n if (task.newBoardDate && task.updateDueDate) {\n boardTaskService().updateDate(task.id, task.newBoardDate);\n }\n }\n $uibModalInstance.close();\n }\n\n $scope.updateBoardDate = function($event, task) {\n const date = $event.originalEvent.detail\n task.newBoardDate = date\n }\n\n $scope.delete = function (task) {\n // Delete subtask\n var index = $scope.tasks.indexOf(task);\n $scope.tasks.splice(index, 1);\n boardTaskService().deleteTask(task.id).then(function () {\n\n });\n }\n\n $scope.changeStatus = function (task) {\n task.status = taskDrawingService().getNextStatus(task.status).status;\n var status = {\n taskId: task.id,\n status: task.status\n };\n statusChangeDebounced(status);\n }\n var statusChangeDebounced = debounce(commitStatusChanged, 200, false);\n function commitStatusChanged(status) {\n boardTaskService().updateStatus(status.taskId, status).then(function (taskIds) {\n\n });\n }\n\n $scope.titleChanged = function (task) {\n task.active = false;\n var taskTitle = {\n taskId: task.id,\n title: task.title\n }\n boardTaskService().updateTitle(task.id, taskTitle).then(function (result) {\n\n });\n }\n\n $scope.$on('task-bag.drop-model', function (e, el, target, source) {\n var sortOrders = [];\n var counter = 0;\n $scope.tasks.forEach(task => {\n sortOrders.push({\n taskId: task.id,\n sortOrder: counter\n });\n counter += 1;\n });\n boardTaskService().updateSortOrderForSubtasks($scope.parentTask.id, sortOrders).then(function (result) {\n\n });\n });\n\n }]);\n\n\n","import * as staticFileService from \"@common/shared/staticFileService\"\nimport * as timeService from \"@common/services/timeService\"\nimport * as customerService from \"@common/services/customers/customerService\"\n\nvar DigiLean = angular.module('DigiLean');\nDigiLean\n .controller('personalTaskListController', ['$scope', '$document', '$filter', '$uibModal', 'boardTaskService', 'authService', 'deviationService', 'suggestionService', 'navigationService', 'strategyService',\n function ($scope, $document, $filter, $uibModal, boardTaskService, authService, deviationService, suggestionService, navigationService, strategyService) {\n var colorClasses = [\"label-primary\", \"label-warning-light\"];\n var userId = authService.getCurrentUser().userId;\n $scope.hasStrategy = true; //navigationService().hasModule(\"STRATEGY\");\n\n $scope.static = staticFileService;\n $scope.subscribe('UserAuthenticatedAndReady', function (profile) {\n userId = profile.user.id;\n $scope.hasStrategy = navigationService().hasModule(\"STRATEGY\");\n });\n $scope.workList = {};\n\n $scope.isInboxZero = false;\n\n $scope.createNew = function () {\n var task = {\n id: 0,\n boardId: 0,\n title: \"\",\n text: \"\",\n boardDate: moment().startOf('day'),\n status: 'blank',\n tags: \"\"\n }\n customerService.getAllUsers().then(function (users) {\n $scope.users = users;\n });\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'newBoardTask.html',\n controller: 'newBoardTaskController',\n resolve: {\n task: function () {\n return task;\n },\n options: function () {\n var options = {\n canChangeBoard: true,\n showDueDate: true,\n users: $scope.users\n }\n return options;\n }\n }\n });\n }\n\n $scope.openA3ActionItem = function (id) {\n boardTaskService().get(id).then(function (task) {\n var showstarttime = false;\n if(task.startTime){\n showstarttime = true;\n }\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'boardTask.html',\n controller: 'boardTaskController',\n resolve: {\n task: function () {\n return task;\n },\n activeTab: function () {\n return \"Info\";\n },\n options: function () {\n var options = {\n archiveAvailable: false,\n canChangeBoard: false,\n startdateAvailable: showstarttime\n }\n return options;\n }\n }\n });\n });\n }\n\n $scope.openForEdit = function (id) {\n boardTaskService().get(id).then(function (task) {\n var showstarttime = false;\n if(task.startTime){\n showstarttime = true;\n }\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'boardTask.html',\n controller: 'boardTaskController',\n resolve: {\n task: function () {\n return task;\n },\n activeTab: function () {\n return \"Info\";\n },\n options: function () {\n var options = {\n archiveAvailable: false,\n canChangeBoard: true,\n startdateAvailable: showstarttime\n }\n return options;\n }\n }\n });\n });\n }\n\n $scope.openImprovementSuggestion = function (id) {\n suggestionService().get(id).then(function (suggestion) {\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n templateUrl: 'fullImprovementInfoForm.html',\n controller: 'fullImprovementModalController',\n windowClass: 'fullSuggestion-modal-window',\n resolve: {\n suggestion: function () {\n return suggestion;\n },\n activeTab: function () {\n return \"Info\";\n }\n }\n });\n });\n }\n\n $scope.openDeviation = function (id) {\n deviationService().get(id).then(function (deviation) {\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n templateUrl: 'fullDeviation.html',\n controller: 'fullDeviationController',\n windowClass: 'full-screen',\n resolve: {\n deviation: function () {\n return deviation;\n },\n activeTab: function () {\n return \"Info\";\n }\n }\n });\n });\n }\n\n $scope.threeCStatusChangedHandler = function (status) {\n var itemStatus = {\n boardTaskId: task.id,\n status: status.toString()\n }\n threeCService().updateStatus(item.id, itemStatus).then(function (data) {\n });\n }\n // Subscribe to Events\n var subscribeToEvents = function () {\n // DEVIATION Events\n $scope.subscribe('DeviationChangedStatus', function (status) {\n updateTaskStatus(status.deviationId, status.status, \"Deviation\");\n });\n $scope.subscribe('DeviationResponsibleChanged', function (responsibleChanged) {\n if (responsibleChanged.oldResponsibleUserId === userId || responsibleChanged.newResponsibleUserId === userId) {\n getActionList();\n }\n });\n $scope.subscribe('DeviationUpdated', function (deviation) {\n if (deviation.ownerUserId === userId) {\n getActionList();\n }\n });\n $scope.subscribe('DeviationDeleted', function (deviation) {\n var id = deviation.id;\n var isTaskIdInList = isTaskInWorkList(id);\n if (isTaskIdInList) {\n getActionList();\n }\n });\n // Improvement events\n // \n $scope.subscribe('ImprovementChangedStatus', function (status) {\n updateTaskStatus(status.suggestionId, status.status, \"Improvement\");\n });\n $scope.subscribe('ImprovementResponsibleChanged', function (responsibleChanged) {\n if (responsibleChanged.oldResponsibleUserId === userId || responsibleChanged.newResponsibleUserId === userId) {\n getActionList();\n }\n });\n $scope.subscribe('ImprovementUpdated', function (improvement) {\n if (improvement.responsibleUserId === userId || improvement.responsibleUserId === userId) {\n getActionList();\n }\n });\n $scope.subscribe('ImprovementDeleted', function (improvement) {\n var id = improvement.id;\n var isTaskIdInList = isTaskInWorkList(id);\n if (isTaskIdInList) {\n getActionList();\n }\n });\n // Task events\n \n $scope.subscribe(\"TaskDurationUpdated\", function (data) {\n var isTaskIdInList = isTaskInWorkList(data.taskId);\n if (isTaskIdInList) {\n getActionList();\n }\n });\n $scope.subscribe('TaskStatusUpdated', function (status) {\n updateTaskStatus(status.taskId, status.status, \"BoardTask\");\n });\n $scope.subscribe('TaskMoved', function (taskMoved) {\n if (taskMoved.responsibleUserId === userId) {\n getActionList();\n }\n });\n $scope.subscribe('TaskStartDateUpdated', function (taskMoved) {\n var isTaskIdInList = isTaskInWorkList(taskMoved.taskId);\n if (isTaskIdInList) {\n getActionList();\n }\n });\n $scope.subscribe('TaskDateMoved', function (taskMoved) {\n if (taskMoved.responsibleUserId === userId) {\n getActionList();\n }\n });\n\n $scope.subscribe('TaskUpdated', function (task) {\n if (task.responsibleUserId === userId) {\n getActionList();\n }\n });\n $scope.subscribe('TaskAssigned', function (taskAssigned) {\n if (taskAssigned.userId === userId || taskAssigned.previousUserId === userId) {\n getActionList();\n } else {\n var isTaskIdInList = isTaskInWorkList(taskAssigned.taskId);\n if (isTaskIdInList) {\n getActionList();\n }\n }\n });\n $scope.subscribe('NewTask', function (task) {\n // If current user is involved in task.\n if (!task.responsibleUserId) return;\n if (task.responsibleUserId === userId) {\n getActionList();\n }\n });\n $scope.subscribe('CreateActionListItem', function (task) {\n // If current user is involved in task.\n if (!task.responsibleUserId) return;\n if (task.responsibleUserId === userId) {\n getActionList();\n }\n });\n $scope.subscribe('TaskDeleted', function (id) {\n // If current user is involved in task.\n var isTaskIdInList = isTaskInWorkList(id);\n if (isTaskIdInList) {\n getActionList();\n }\n });\n $scope.subscribe('TaskArchived', function (id) {\n // If current user is involved in task.\n var isTaskIdInList = isTaskInWorkList(id);\n if (isTaskIdInList) {\n getActionList();\n }\n });\n $scope.subscribe('RepeatingTasksDeleted', function (taskIds) {\n // If current user is involved in task.\n angular.forEach(taskIds, function (id, key) {\n var isTaskIdInList = isTaskInWorkList(id);\n if (isTaskIdInList) {\n getActionList();\n }\n });\n\n });\n }\n subscribeToEvents();\n\n var checkInboxStatus = function () {\n var status = true;\n if ($scope.workList.overdue.length > 0) {\n var okCount = $filter('filter')($scope.workList.overdue, { status: \"OK\" }, true);\n if (okCount.length != $scope.workList.overdue.length) {\n status = false;\n }\n }\n if ($scope.workList.today.length > 0) {\n //All tasks needs to be completed to show inbox zero\n var okCount = $filter('filter')($scope.workList.today, { status: \"OK\" }, true);\n if (okCount.length != $scope.workList.today.length) {\n status = false;\n }\n }\n $scope.isInboxZero = status;\n }\n\n var isTaskInWorkList = function (id) {\n var workList = $scope.workList;\n var allTask = workList.overdue.concat(workList.today.concat(workList.future));\n var task = $filter('filter')(allTask, { id: id });\n\n if (task.length > 0) {\n return true;\n }\n return false;\n };\n function setStrategyGoalInfo(task, strategytasks) {\n var matchingTasks = $filter('filter')(strategytasks, { id: task.id }, true);\n if (matchingTasks.length > 0) {\n task.taskType = \"Strategy\";\n task.goalcolor = matchingTasks[0].color;\n task.goalname = matchingTasks[0].strategyGoal;\n task.assetId = matchingTasks[0].assetId;\n task.breakthroughGoalId = matchingTasks[0].breakthroughGoalId;\n }\n }\n\n var initTask = function (task) {\n\n }\n // Get tasks for current user\n var getActionList = function () {\n $scope.isLoading = true;\n if ($scope.hasStrategy) {\n\n var timeperiod = timeService.getTimePeriodBeforeAfter('180', '30');\n strategyService().getMyStrategyTasks(timeperiod).then(function (strategytasks) {\n boardTaskService().getListForCurrentUser().then(function (data) {\n // assign color classes\n var currentColorIndex = 0;\n var currentActionList = \"\";\n data.overdue.forEach(function (element, index, array) {\n if (currentActionList === \"\") {\n currentActionList = element.boardName;\n }\n if (currentActionList !== element.boardName) {\n currentActionList = element.boardName;\n if ((currentColorIndex + 1) < colorClasses.length) {\n currentColorIndex += 1;\n } else {\n currentColorIndex = 0;\n }\n }\n setStrategyGoalInfo(element, strategytasks);\n element.colorClass = colorClasses[currentColorIndex];\n });\n data.today.forEach(function (element, index, array) {\n if (currentActionList === \"\") {\n currentActionList = element.boardName;\n }\n if (currentActionList !== element.boardName) {\n currentActionList = element.boardName;\n if ((currentColorIndex + 1) < colorClasses.length) {\n currentColorIndex += 1;\n } else {\n currentColorIndex = 0;\n }\n }\n element.colorClass = colorClasses[currentColorIndex];\n setStrategyGoalInfo(element, strategytasks);\n });\n data.future.forEach(function (element, index, array) {\n if (currentActionList === \"\") {\n currentActionList = element.boardName;\n }\n if (currentActionList !== element.boardName) {\n currentActionList = element.boardName;\n if ((currentColorIndex + 1) < colorClasses.length) {\n currentColorIndex += 1;\n } else {\n currentColorIndex = 0;\n }\n }\n element.colorClass = colorClasses[currentColorIndex];\n setStrategyGoalInfo(element, strategytasks);\n });\n\n $scope.workList = data;\n\n checkInboxStatus();\n $scope.isLoading = false;\n });\n\n });\n } else {\n boardTaskService().getListForCurrentUser().then(function (data) {\n // assign color classes\n var currentColorIndex = 0;\n var currentActionList = \"\";\n data.overdue.forEach(function (element, index, array) {\n if (currentActionList === \"\") {\n currentActionList = element.boardName;\n }\n if (currentActionList !== element.boardName) {\n currentActionList = element.boardName;\n if ((currentColorIndex + 1) < colorClasses.length) {\n currentColorIndex += 1;\n } else {\n currentColorIndex = 0;\n }\n }\n element.colorClass = colorClasses[currentColorIndex];\n initTask(element);\n });\n data.today.forEach(function (element, index, array) {\n if (currentActionList === \"\") {\n currentActionList = element.boardName;\n }\n if (currentActionList !== element.boardName) {\n currentActionList = element.boardName;\n if ((currentColorIndex + 1) < colorClasses.length) {\n currentColorIndex += 1;\n } else {\n currentColorIndex = 0;\n }\n }\n element.colorClass = colorClasses[currentColorIndex];\n initTask(element);\n });\n data.future.forEach(function (element, index, array) {\n if (currentActionList === \"\") {\n currentActionList = element.boardName;\n }\n if (currentActionList !== element.boardName) {\n currentActionList = element.boardName;\n if ((currentColorIndex + 1) < colorClasses.length) {\n currentColorIndex += 1;\n } else {\n currentColorIndex = 0;\n }\n }\n element.colorClass = colorClasses[currentColorIndex];\n initTask(element);\n });\n\n $scope.workList = data;\n\n checkInboxStatus();\n $scope.isLoading = false;\n });\n\n }\n }\n getActionList();\n\n function updateTaskStatus(id, status, entityType) {\n if (!entityType) entityType = \"BoardTask\";\n var workList = $scope.workList;\n var allTask = workList.overdue.concat(workList.today.concat(workList.future));\n var task = $filter('filter')(allTask, { id: id });\n\n if (task.length > 0) {\n // if (task[0].entityType === entityType) {\n // task[0].status = status;\n // }\n checkInboxStatus();\n }\n }\n\n }]);\n\n","import * as boardService from \"@common/services/boardService\"\n\nangular\n .module('DigiLean')\n .controller(\"taskListModalController\", ['$scope', '$uibModalInstance', '$uibModal', '$filter', 'boardTaskService', 'authService', 'projectId',\n function ($scope, $uibModalInstance, $uibModal, $filter, boardTaskService, authService, projectId) {\n\n $scope.tasks = [];\n $scope.isAdmin = authService.hasRole(\"Admin\");\n var projectBoards = [];\n $scope.projectId = projectId;\n\n boardTaskService().getTasksByProject(projectId).then(function (tasks) {\n $scope.tasks = tasks; \n if($scope.tasks && $scope.tasks.length > 0) {\n boardService.getProjectBoards(projectId).then(function(boards) {\n projectBoards = boards;\n for (var i=0; i<$scope.tasks.length; i++){\n var board = $filter('filter')(boards, { id: $scope.tasks[i].boardId }, true);\n if (board.length == 1) {\n $scope.tasks[i].board = board[0]; \n } \n }\n });\n setDateStyle($scope.tasks);\n }\n });\n\n /*\n $scope.subscribe('NewTask', function (task) {\n var board = $filter('filter')(projectBoards, { id: task.boardid });\n if (board.length > 0) {\n if(task.boardDate){\n task.boardDate = moment(task.boardDate).toDate();\n }\n task.board = board[0]; \n if(task.status != 'OK' ){\n task.dateStyleClass = getDateStyle(task.boardDate);\n } \n $scope.tasks.unshift(task);\n }\n });*/\n $scope.subscribe('TaskAssigned', function (status) {\n var task = $filter('filter')($scope.tasks, { id: status.taskId });\n if (task.length > 0) { \n $scope.$apply(function () {\n task[0].responsibleUser = status.userName;\n }); \n }\n });\n $scope.subscribe('TaskDeleted', function (id) {\n var task = $filter('filter')($scope.tasks, { id: id });\n if (task.length > 0) {\n $scope.$apply(function () {\n var index = $scope.tasks.indexOf(task[0]);\n if (index > -1) {\n $scope.tasks.splice(index, 1);\n }\n });\n }\n });\n $scope.subscribe('TaskStatusUpdated', function (status) {\n var task = $filter('filter')($scope.tasks, { id: status.taskId });\n if (task.length > 0) {\n $scope.$apply(function () {\n task[0].status = status.status;\n if (task[0].status != 'OK') {\n task[0].dateStyleClass = getDateStyle(task[0].boardDate);\n } else {\n task[0].dateStyleClass = \"\";\n }\n });\n }\n });\n $scope.subscribe('TaskDateMoved', function (moveSettings) {\n var task = $filter('filter')($scope.tasks, { id: moveSettings.taskId });\n if (task.length > 0) {\n $scope.$apply(function () {\n task[0].boardDate = moment(moveSettings.boardDate).toDate();\n if (task[0].status != 'OK') {\n task[0].dateStyleClass = getDateStyle(task[0].boardDate);\n }\n });\n }\n });\n $scope.close = function () {\n $uibModalInstance.dismiss('cancel');\n }\n\n function addTask(task, board){\n if(task.boardDate){\n task.boardDate = moment(task.boardDate).toDate();\n }\n task.board = board; \n if(task.status != 'OK' ){\n task.dateStyleClass = getDateStyle(task.boardDate);\n } \n $scope.tasks.unshift(task);\n }\n\n $scope.add = function () {\n\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'newtasktoprojecttasklist.html', \n controller: 'newtasktoprojecttasklistController',\n resolve: {\n projectId: function () {\n return $scope.projectId;\n }\n } \n });\n modalInstance.result.then(function (task) {\n var board = $filter('filter')(projectBoards, { id: task.boardid });\n if (board.length > 0) {\n addTask(task, board[0]);\n } else {\n if(task.status != 'OK' ){\n task.dateStyleClass = getDateStyle(task.boardDate);\n } \n $scope.tasks.unshift(task);\n }\n }, function () {\n \n });\n \n }\n\n \n\n $scope.openTask = function (task) {\n if($scope.isAdmin){\n boardTaskService().get(task.id).then(function (task) {\n $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'boardTask.html',\n controller: 'boardTaskController',\n resolve: {\n task: function () {\n return task;\n },\n activeTab: function () {\n return \"Info\";\n },\n options: function () {\n var options = {\n archiveAvailable: false\n }\n return options;\n }\n }\n });\n });\n }\n }\n\n function setDateStyle(items){\n items.forEach(function (item) {\n if(item.status != 'OK' ){\n item.dateStyleClass = getDateStyle(item.boardDate);\n }\n });\n }\n\n function getDateStyle(date) {\n if (!date) return \"\";\n // Overdue check\n\n var overdue = \"\";\n var duration = moment.duration(moment().diff(moment(date)));\n var days = duration.asDays();\n if (days > 1) {\n overdue = \"overdue\";\n }\n return overdue;\n }\n }]);","import * as boardService from \"@common/services/boardService\"\nimport * as employeeService from \"@common/services/employeeService\"\nimport * as profileImageService from \"@common/services/user/profileImageService\"\n\nvar DigiLean = angular.module('DigiLean');\nDigiLean.directive(\"projectTaskList\", ['$filter', 'boardTaskService','$uibModal',\n function ($filter, boardTaskService, $uibModal) {\n return {\n templateUrl: 'projectTaskList.html',\n restrict: 'E',\n scope: {\n 'projectId': '<',\n },\n link: function (scope, elem, attrs) {\n\n scope.tasks = [];\n var projectBoards = [];\n var allUsers = null;\n\n scope.customOption = {\n progress: 0,\n label: \"0 %\",\n color: \"0099DE\"\n };\n\n scope.$watch(\"projectId\", function () {\n if (scope.projectId) {\n boardTaskService().getTasksByProject(scope.projectId).then(function (tasks) {\n scope.tasks = tasks;\n if (scope.tasks && scope.tasks.length > 0) {\n boardService.getProjectBoards(scope.projectId).then(function (boards) {\n projectBoards = boards;\n for (var i = 0; i < scope.tasks.length; i++) {\n var board = $filter('filter')(boards, { id: scope.tasks[i].boardId }, true);\n if (board.length == 1) {\n scope.tasks[i].board = board[0];\n }\n }\n });\n setDateStyle(scope.tasks);\n calculateProgress();\n }\n });\n }\n })\n\n\n\n /*\n $scope.subscribe('NewTask', function (task) {\n var board = $filter('filter')(projectBoards, { id: task.boardid });\n if (board.length > 0) {\n if(task.boardDate){\n task.boardDate = moment(task.boardDate).toDate();\n }\n task.board = board[0]; \n if(task.status != 'OK' ){\n task.dateStyleClass = getDateStyle(task.boardDate);\n } \n $scope.tasks.unshift(task);\n }\n });*/\n scope.subscribe('TaskAssigned', function (status) {\n var task = $filter('filter')(scope.tasks, { id: status.taskId });\n if (task.length > 0) { \n scope.$apply(function () {\n task[0].responsibleUser = status.userName;\n task[0].animate(\"bounce\");\n }); \n }\n });\n scope.subscribe('TaskDeleted', function (id) {\n var task = $filter('filter')(scope.tasks, { id: id });\n if (task.length > 0) {\n scope.$apply(function () {\n var index = scope.tasks.indexOf(task[0]);\n if (index > -1) {\n scope.tasks.splice(index, 1);\n }\n });\n calculateProgress();\n }\n });\n scope.subscribe('TaskDateMoved', function (moveSettings) {\n var task = $filter('filter')(scope.tasks, { id: moveSettings.taskId });\n if (task.length > 0) {\n scope.$apply(function () {\n task[0].boardDate = moment(moveSettings.boardDate).toDate();\n if (task[0].status != 'OK') {\n task[0].dateStyleClass = getDateStyle(task[0].boardDate);\n }\n });\n }\n });\n scope.subscribe('TaskStatusUpdated', function (status) {\n var task = $filter('filter')(scope.tasks, { id: status.taskId });\n if (task.length > 0) {\n scope.$apply(function () {\n task[0].status = status.status;\n if (task[0].status != 'OK') {\n task[0].dateStyleClass = getDateStyle(task[0].boardDate);\n } else {\n task[0].dateStyleClass = \"\";\n }\n \n });\n calculateProgress();\n }\n });\n\n \n\n\n\n function addTask(task, board) {\n if (task.boardDate) {\n task.boardDate = moment(task.boardDate).toDate();\n }\n task.board = board;\n if (task.status != 'OK') {\n task.dateStyleClass = getDateStyle(task.boardDate);\n }\n scope.tasks.unshift(task);\n calculateProgress();\n }\n\n scope.add = function () {\n\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'newtasktoprojecttasklist.html',\n controller: 'newtasktoprojecttasklistController',\n resolve: {\n projectId: function () {\n return scope.projectId;\n }\n }\n });\n modalInstance.result.then(function (task) {\n var board = $filter('filter')(projectBoards, { id: task.boardid });\n if (board.length > 0) {\n addTask(task, board[0]);\n } else {\n if (task.status != 'OK') {\n task.dateStyleClass = getDateStyle(task.boardDate);\n }\n scope.tasks.unshift(task);\n }\n }, function () {\n\n });\n\n }\n\n\n\n scope.openTask = function (task) {\n if(allUsers){\n openBoardTaskPopup(task);\n } else {\n employeeService.getList().then(function (data) {\n allUsers = data;\n openBoardTaskPopup(task);\n });\n }\n\n }\n\n async function openBoardTaskPopup(task){\n let usersWithProfileImage = await profileImageService.getAllUsersIncludeProfileImage()\n boardTaskService().get(task.id).then(function (task) {\n $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'boardTask.html',\n controller: 'boardTaskController',\n resolve: {\n task: function () {\n return task;\n },\n activeTab: function () {\n return \"Info\";\n },\n options: function () {\n var options = {\n archiveAvailable: false,\n canChangeBoard: false,\n users: usersWithProfileImage\n }\n return options;\n }\n }\n });\n });\n }\n function setDateStyle(items) {\n items.forEach(function (item) {\n if (item.status != 'OK') {\n item.dateStyleClass = getDateStyle(item.boardDate);\n }\n });\n }\n\n function getDateStyle(date) {\n if (!date) return \"\";\n // Overdue check\n\n\n var overdue = \"\";\n var duration = moment.duration(moment().diff(moment(date)));\n var days = duration.asDays();\n if (days > 1) {\n overdue = \"overdue\";\n }\n return overdue;\n }\n\n function calculateProgress(){\n if(scope.tasks.length == 0){\n scope.setProgress(scope.customOption); \n } else {\n var progress = 0;\n if (scope.tasks.length > 0) {\n var completed = $filter('filter')(scope.tasks, { status: 'OK' });\n progress = Math.round(100 * completed.length/scope.tasks.length);\n }\n \n var progressOptions = {\n progress: progress,\n label: progress + \" %\",\n color: \"0099DE\"\n };\n scope.setProgress(progressOptions);\n } \n }\n\n scope.setProgress = function(option) {\n scope.progress = option.progress;\n scope.customOption.progress = option.progress;\n scope.color = option.color;\n if (scope.progress == 100) { // Green color if 100\n scope.color = \"#8CC152\";\n }\n }\n }\n\n }\n }]);","import lottie from \"lottie-web/build/player/lottie_light\"\nangular\n .module('DigiLean')\n .directive('personalTaskStatus', ['$rootScope', 'boardTaskService', 'taskDrawingService', 'suggestionService', 'deviationService', 'debounce',\n function ($rootScope, boardTaskService, taskDrawingService, suggestionService, deviationService, debounce) {\n return {\n templateUrl: 'personalTaskStatus.html',\n restrict: 'E',\n scope: {\n \"task\": \"<\"\n },\n link: function (scope, elem, attrs) {\n scope.title = \"\";\n scope.$watch('task', function (task) {\n if (!task) return;\n checkCompletedStatus();\n });\n scope.$on('$destroy', function () {\n if (completeAnimation) {\n completeAnimation.destroy(completeAnimationName);\n }\n });\n var statusChangeDebounced = debounce(commitStatusChanged, 1000, false);\n var improvementStatusChangeDebounced = debounce(commitImprovementStatusChanged, 1000, false);\n var deviationStatusChangeDebounced = debounce(commitDeviationStatusChanged, 1000, false);\n\n scope.changeStatus = function (task) {\n switch (task.entityType) {\n case \"Improvement\":\n scope.changeImprovementStatus(task);\n break;\n case \"Deviation\":\n scope.changeDeviationStatus(task);\n break;\n default:\n scope.changeTaskStatus(task);\n break;\n }\n }\n\n scope.changeTaskStatus = function (task) {\n task.status = taskDrawingService().getNextStatus(task.status).status;\n if (task.status == \"OK\") {\n showCompleteAnimation();\n }\n var statusOptions = {\n taskId: task.id,\n status: task.status\n };\n statusChangeDebounced(task, statusOptions);\n }\n scope.changeImprovementStatus = function (task) {\n task.status = suggestionService().getNextStatus(task.status);\n if (task.status == \"Implemented\") {\n showCompleteAnimation();\n }\n var changedStatus =\n {\n suggestionId: task.id,\n status: task.status\n }\n improvementStatusChangeDebounced(changedStatus);\n }\n\n scope.changeDeviationStatus = function (task) {\n task.status = deviationService().getNextStatus(task.status);\n if (task.status == \"20\") {\n showCompleteAnimation();\n }\n var changedStatus =\n {\n deviationId: task.id,\n status: task.status\n }\n\n deviationStatusChangeDebounced(changedStatus);\n }\n\n function checkCompletedStatus() {\n switch (scope.task.entityType) {\n case \"Improvement\":\n if (scope.task.status == \"Implemented\") {\n setTimeout(function() {\n showCompleteAnimation();\n }, 100);\n } else {\n if (completeAnimation) {\n completeAnimation.stop(completeAnimationName);\n }\n }\n return;\n case \"Deviation\":\n if (scope.task.status == \"20\") {\n setTimeout(function() {\n showCompleteAnimation();\n }, 100);\n } else {\n if (completeAnimation) {\n completeAnimation.stop(completeAnimationName);\n }\n }\n return;\n default:\n if (scope.task.status == \"OK\") {\n setTimeout(function() {\n showCompleteAnimation();\n }, 100);\n } else {\n if (completeAnimation) {\n completeAnimation.stop(completeAnimationName);\n }\n }\n return;\n }\n\n }\n\n var completeAnimation;\n var completeAnimationName = \"ok-animation\";\n function showCompleteAnimation() {\n if (completeAnimation) {\n completeAnimation.play();\n return;\n }\n var okContainer = $(elem).find(\".ok-animation\")[0]; // the dom element that will contain the animation\n completeAnimation = lottie.loadAnimation({\n container: okContainer,\n renderer: 'svg',\n name: completeAnimationName,\n loop: false,\n autoplay: true,\n path: 'https://assets3.lottiefiles.com/packages/lf20_sbJCHH.json' // the path to the animation json\n });\n\n okContainer.addEventListener('click', function () {\n completeAnimation.stop(completeAnimationName);\n scope.changeStatus(scope.task);\n });\n }\n\n function commitStatusChanged(task, statusOptions) {\n boardTaskService().updateStatus(task.id, statusOptions).then(function (result) {\n\n });\n }\n\n function commitImprovementStatusChanged(statusChanged) {\n suggestionService().updateStatus(statusChanged).then(function (result) {\n });\n }\n\n function commitDeviationStatusChanged(statusChanged) {\n deviationService().updateStatus(statusChanged).then(function (result) {\n\n });\n }\n\n $rootScope.subscribe('TaskStatusUpdated', function (status) {\n updateTaskStatus(status.taskId, status.status, \"BoardTask\");\n });\n $rootScope.subscribe('ImprovementChangedStatus', function (status) {\n updateTaskStatus(status.suggestionId, status.status, \"Improvement\");\n });\n $rootScope.subscribe('DeviationChangedStatus', function (status) {\n updateTaskStatus(status.deviationId, status.status, \"Deviation\");\n });\n\n function updateTaskStatus(id, status, entityType) {\n if (!entityType) entityType = \"BoardTask\";\n if (scope.task.id != id) return;\n if (scope.task.entityType != entityType) return;\n\n scope.task.status = status;\n checkCompletedStatus();\n\n }\n }\n }\n }]);\n","import * as customerService from \"@common/services/customers/customerService\"\nimport * as profileService from \"@common/services/user/profileService\"\nimport * as timeService from \"@common/services/timeService\"\nimport * as boardService from \"@common/services/boardService\"\nimport * as profileImageService from \"@common/services/user/profileImageService\"\n\nangular\n .module('DigiLean')\n .directive(\"subTaskList\", ['$uibModal', 'boardTaskService', 'taskDrawingService', 'debounce',\n function ($uibModal, boardTaskService, taskDrawingService, debounce) {\n return {\n templateUrl: 'subTaskList.html',\n restrict: 'E',\n scope: {\n 'parentTask': '<',\n 'targetDate': '<',\n 'isReadOnly': '<'\n },\n link: function (scope, elem, attrs) {\n scope.tasks = [];\n scope.boards = [];\n scope.thisBoard = {id:0}\n scope.canEdit = true;\n scope.isLoading = false;\n scope.isBoardsLoaded = false;\n scope.isUsersLoaded = false;\n\n scope.$watch('parentTask', function (parentTask) {\n if (scope.parentTask && scope.parentTask.id > 0) {\n scope.parentId = scope.parentTask.id\n loadData(scope.parentId);\n }\n });\n scope.$watch('isReadOnly', function (isReadOnly) {\n if (scope.isReadOnly == true) {\n scope.canEdit = false;\n } else {\n scope.canEdit = true;\n }\n\n });\n\n async function loadData(taskId) {\n await getSubTasks(taskId);\n await loadBoards();\n await getAllUsers();\n }\n\n var getSubTasks = function (parentId) {\n scope.isLoading = true;\n boardTaskService().getSubTasks(parentId).then(function (tasks) {\n //\n for (let index = 0; index < tasks.length; index++) {\n const task = tasks[index];\n\n setupTask(task);\n }\n scope.tasks = tasks;\n scope.isLoading = false;\n });\n }\n\n var setupTask = function (task) {\n if (task.boardDate) {\n task.boardDate = moment(task.boardDate).toDate();\n }\n task.datePicker = {\n opened: false\n }\n setResponsible(task);\n setBoard(task);\n }\n\n scope.setActive = function (task) {\n task.active = true;\n setTimeout(function () {\n $(elem).find(\".project-name\").focus();\n }, 50);\n }\n\n var getTaskInList = function (id) {\n var task = scope.tasks.find(t => t.id == id);\n return task;\n };\n \n scope.subscribe(\"TaskUpdated\", function (updatedTask) {\n var task = getTaskInList(updatedTask.id);\n if (task) {\n task.title = updatedTask.title;\n task.text = updatedTask.text;\n task.color = updatedTask.color;\n if(task.ResponsibleUserId != updatedTask.ResponsibleUserId){\n task.responsibleUserId = updatedTask.ResponsibleUserId;\n setResponsible(task);\n }\n }\n });\n scope.subscribe(\"TaskCommentAdded\", function (comment) {\n var task = getTaskInList(comment.boardTaskId);\n if (task) {\n task.commentCount = comment.taskCommentCount;\n }\n });\n scope.subscribe(\"TaskCommentDeleted\", function (comment) {\n var task = getTaskInList(comment.boardTaskId);\n if (task) {\n task.commentCount = comment.taskCommentCount;\n }\n });\n scope.subscribe('TaskAttachmentCountChanged', function (attachment) {\n var task = getTaskInList(attachment.taskId);\n if (task) {\n task.attachmentCount = attachment.attachmentCount;\n }\n });\n\n scope.subscribe('TaskAssigned', function (status) {\n var task = getTaskInList(status.taskId);\n if (task) {\n task.responsibleUserId = status.userId;\n setResponsible(task);\n }\n });\n\n scope.updateDate = function (task, event) {\n const date = event.originalEvent.detail\n task.boardDate = date\n boardTaskService().updateDate(task.id, task.boardDate)\n mapDateToColumn(task)\n mapDateToRow(task)\n }\n\n scope.openTask = function (activeTab, subtask) {\n if (!activeTab) activeTab = \"Info\";\n var options = {\n canChangeBoard: false,\n users: scope.users\n };\n\n boardTaskService().get(subtask.id).then(function (task) {\n $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'boardTask.html',\n controller: 'boardTaskController',\n resolve: {\n task: function () {\n return task;\n },\n activeTab: function () {\n return activeTab;\n },\n options: function () {\n return options;\n }\n }\n });\n })\n\n }\n\n async function loadBoards() {\n if (scope.isBoardsLoaded)\n return;\n \n scope.isBoardsLoaded = true;\n const data = await boardService.getAllBoardNames()\n scope.boards = [];\n for (let b = 0; b < data.length; b++) {\n if (data[b].boardType != 'Yearly') {\n scope.boards.unshift(data[b]);\n }\n }\n for (let index = 0; index < scope.tasks.length; index++) {\n const task = scope.tasks[index];\n setBoard(task);\n }\n scope.thisBoard = scope.boards.find(b => b.id == scope.parentTask.boardId)\n }\n\n // Responsible\n function setResponsible(task) {\n if (task.responsibleUserId && scope.users) {\n var user = scope.users.find(u => u.userId.toLowerCase() == task.responsibleUserId.toLowerCase());\n if (user) {\n task.user = user;\n }\n }\n }\n\n function setBoard(task) {\n if (task.boardId && scope.boards) {\n var existsOutsideParent = false;\n if (task.boardId == scope.parentTask.boardId) {\n if (task.isActionItem) {\n existsOutsideParent = true;\n } else if (task.rowCategoryId) {\n existsOutsideParent = true;\n }\n } else {\n existsOutsideParent = true;\n }\n if (existsOutsideParent) {\n var board = scope.boards.find(b => b.id == task.boardId);\n if (board) {\n task.board = board;\n }\n }\n }\n }\n \n async function getAllUsers() {\n if (scope.isUsersLoaded)\n return;\n scope.isUsersLoaded = true\n\n scope.users = await profileImageService.getAllUsersIncludeProfileImage()\n for (let index = 0; index < scope.tasks.length; index++) {\n const task = scope.tasks[index];\n setResponsible(task);\n }\n }\n \n scope.clearSelectedUser = function (task) {\n scope.selectUser(task, {\n userId: null,\n fullName: \"\",\n displayName: \"\"\n });\n }\n\n scope.selectUser = function (task, user) {\n task.user = user\n const userDetails = {\n userId: user.userId,\n userName: user.fullName,\n userDisplayName: user.displayName,\n previousUserId: task.responsibleUserId,\n previousUserName: task.responsibleUser\n };\n // save\n const options = {\n taskId: task.id,\n user: userDetails\n }\n boardTaskService().assignUser(options);\n task.responsibleUserId = user.userId;\n task.responsibleDisplayName = user.displayName;\n task.responsibleUser = user.fullName;\n mapResponsibleToColumn(task);\n mapResponsibleToRow(task);\n };\n\n\n\n scope.clearBoard = function (task) {\n\n var change = {\n taskId: task.id,\n fromBoardId: task.boardId,\n toBoardId: scope.parentTask.boardId\n };\n task.boardId = scope.parentTask.boardId;\n task.board = null;\n setBoard(task);\n task.board = null;\n\n task.isActionItem = false;\n task.rowCategoryId = null;\n task.columnCategoryId = null;\n\n boardTaskService().clearSubTaskBoard(task.id, change).then(function (result) {\n scope.publish(\"SendTaskChangedBoard\", change);\n });\n }\n\n scope.selectThisBoard = function ($event) {\n if (scope.thisBoard) {\n scope.selectBoard(scope.currentTask, scope.thisBoard, $event);\n }\n }\n\n scope.selectBoard = function (task, board, $event) {\n task.newBoardSelected = true;\n scope.columns = null;\n scope.selectedColumn = null;\n scope.rows = null;\n scope.selectedRow = null;\n\n if (task.boardId !== board.id) {\n var change = {\n taskId: task.id,\n fromBoardId: task.boardId,\n toBoardId: board.id\n };\n\n task.boardId = board.id;\n setBoard(task);\n if (board.id) {\n //scope.placeTaskInBoard(task,board);\n boardTaskService().moveTaskToActionItem(task).then(function (result) {\n scope.publish(\"SendTaskChangedBoard\", change);\n });\n } else {\n boardTaskService().moveTaskToPersonalBoard(task.id).then(function (result) {\n scope.publish(\"SendTaskChangedBoard\", change);\n });\n }\n } else { // to the same board\n if (!task.isActionItem) {\n if(task.columnCategoryId && task.rowCategoryId) {\n task.newBoardSelected = false;\n return; // if it is already placed in the same board, do not do anything\n }\n boardTaskService().moveTaskToActionItem(task).then(function (result) {\n var change = {\n taskId: task.id,\n fromBoardId: 0,\n toBoardId: board.id\n };\n task.isActionItem = true;\n task.boardId = board.id;\n setBoard(task);\n // remove this such that it can be placed directly in the board without a double selection task.newBoardSelected = false;\n scope.publish(\"SendTaskChangedBoard\", change);\n });\n }\n }\n }\n\n var mapDateToRow = function (task) {\n if (!scope.rows || scope.rows.length == 0) return;\n if (!task.boardDate) return;\n\n // Try to select correct row\n angular.forEach(scope.rows, function (row) {\n if (row.weekdayName && (row.weekdayName == timeService.getWeekDayNameFromDate(task.boardDate))) {\n task.selectedRow = row;\n }\n });\n }\n var mapDateToColumn = function (task) {\n if (!scope.columns || scope.columns.length == 0) return;\n if (!task.boardDate) return;\n\n // Try to select correct row\n angular.forEach(scope.columns, function (column) {\n if (column.weekdayName && (column.weekdayName == timeService.getWeekDayNameFromDate(task.boardDate))) {\n task.selectedColumn = column;\n }\n });\n }\n var mapResponsibleToColumn = function (task) {\n if (!scope.columns || scope.columns.length == 0) return;\n if (!task.responsibleUserId) return;\n\n // Try to select correct row\n angular.forEach(scope.columns, function (column) {\n if (column.responsibleUserId == task.responsibleUserId) {\n task.selectedColumn = column;\n }\n });\n }\n var mapResponsibleToRow = function (task) {\n if (!scope.rows || scope.rows.length == 0) return;\n if (!task.responsibleUserId) return;\n\n // Try to select correct row\n angular.forEach(scope.rows, function (row) {\n if (row.responsibleUserId == task.responsibleUserId) {\n task.selectedRow = row;\n }\n });\n }\n\n scope.placeTaskInBoard = function (task) {\n\n //task.showColumnRow = true;\n /*\n what is this\n mapDateToColumn(task);\n mapDateToRow(task);\n mapResponsibleToColumn(task);\n mapResponsibleToRow(task);\n });*/\n }\n\n scope.moveTaskToRowColumn = function (task) {\n task.isActionItem = false;\n\n var rowId = 0;\n var columnId = 0;\n if (task.selectedRow && task.selectedRow.id) {\n rowId = task.selectedRow.id;\n }\n if (task.selectedColumn && task.selectedColumn.id) {\n columnId = task.selectedColumn.id;\n }\n var actionItemToTask = {\n id: task.id,\n boardId: task.boardId,\n boardDate: task.boardDate,\n rowCategoryId: rowId,\n columnCategoryId: columnId\n };\n boardTaskService().moveActionItemToTask(actionItemToTask).then(function (task) {\n scope.publish(\"SendActionItemMovedToTask\", task);\n task.newBoardSelected = false;\n task.showColumnRow = false;\n });\n\n }\n scope.add = function () {\n var boardDate = moment().utc().startOf('day').toDate();\n if (scope.targetDate) {\n boardDate = scope.targetDate;\n }\n var item = {\n parentId: scope.parentId,\n title: \"\",\n boardDate: boardDate,\n taskType: 'SubTask',\n user: null\n }\n boardTaskService().addSubTask(scope.parentId, item).then(function (subTask) {\n \n if (subTask.boardDate) {\n subTask.boardDate = moment(subTask.boardDate).toDate();\n }\n subTask.datePicker = {\n opened: false\n }\n scope.tasks.unshift(subTask);\n scope.setActive(subTask);\n });\n }\n\n scope.delete = function (task) {\n // Delete subtask\n var index = scope.tasks.indexOf(task);\n scope.tasks.splice(index, 1);\n boardTaskService().deleteTask(task.id).then(function () {\n\n });\n }\n\n scope.changeStatus = function (task) {\n if (scope.readonly) return;\n task.status = taskDrawingService().getNextStatus(task.status).status;\n var status = {\n taskId: task.id,\n status: task.status\n };\n statusChangeDebounced(status);\n }\n var statusChangeDebounced = debounce(commitStatusChanged, 200, false);\n function commitStatusChanged(status) {\n boardTaskService().updateStatus(status.taskId, status)\n }\n\n scope.titleChanged = function (task) {\n task.active = false;\n var taskTitle = {\n taskId: task.id,\n title: task.title\n }\n boardTaskService().updateTitle(task.id, taskTitle)\n }\n\n scope.$on('task-bag.drop-model', function (e, el, target, source) {\n var sortOrders = [];\n var counter = 0;\n scope.tasks.forEach(task => {\n sortOrders.push({\n taskId: task.id,\n sortOrder: counter\n });\n counter += 1;\n });\n boardTaskService().updateSortOrderForSubtasks(scope.parentId, sortOrders)\n });\n\n },\n controller: ['$scope','$element', function ($scope, $element) {\n\n let userPopoverId = \"users-selector-popover\"\n let boardPopoverId = \"boards-selector-popover\"\n\n let userPopover = null\n let boardPopover = null\n function getUserSelectPopover() {\n if (!userPopover)\n userPopover = $element[0].querySelector(`#${userPopoverId}`)\n return userPopover\n }\n function getBoardSelectPopover() {\n if (!boardPopover)\n boardPopover = $element[0].querySelector(`#${boardPopoverId}`)\n return boardPopover\n }\n\n $scope.editUser = function($event, task) {\n $scope.currentTask = task // keep track of task when opening user selector\n const target = $event.originalEvent.target\n\n $scope.showClearUser = task.responsibleUserId ? true : false\n\n const userPopover = getUserSelectPopover()\n\n const anchorName = `--subtask-user-${task.id}`\n\n userPopover.style.positionAnchor = anchorName\n userPopover.showPopover()\n }\n $scope.editBoard = ($event, task) => {\n $scope.currentTask = task // keep track of task when opening user selector\n const target = $event.originalEvent.target\n\n const boardPopover = getBoardSelectPopover()\n\n const anchorName = `--subtask-board-${task.id}`\n\n boardPopover.style.positionAnchor = anchorName\n boardPopover.showPopover()\n }\n\n $scope.selectUserEvent = ($event) => {\n const user = $event.originalEvent.detail\n $scope.selectUser($scope.currentTask, user)\n $scope.currentTask = null\n getUserSelectPopover().hidePopover()\n }\n\n $scope.clearSelectedUserEvent = ($event) => {\n $scope.clearSelectedUser($scope.currentTask)\n $scope.currentTask = null\n getUserSelectPopover().hidePopover()\n }\n\n $scope.selectBoardEvent = ($event) => {\n const board = $event.originalEvent.detail\n $scope.selectBoard($scope.currentTask, board, $event)\n }\n $scope.clearBoardEvent = ($event) => {\n $scope.clearBoard($scope.currentTask)\n }\n $scope.moveTaskToRowColumnEvent = ($event) => {\n const move = $event.originalEvent.detail\n $scope.currentTask.selectedColumn = move.selectedColumn\n $scope.currentTask.selectedRow = move.selectedRow\n $scope.moveTaskToRowColumn($scope.currentTask)\n }\n }]\n }\n }]);\n\n\n","import angular from \"angular\"\nimport { NgComponent } from \"@common/model/angularModel\"\nimport { UserShortInfo } from \"@api\"\n\nconst DigiLean = angular.module('DigiLean')\nDigiLean.component('taskUserSelector', {\n templateUrl: \"taskUserSelector.html\",\n bindings: {\n 'users': '<',\n 'canEdit': '<',\n 'showClearUser': '<'\n },\n controller: ['$element', function(this: NgComponent, $element) {\n let $ctrl = this\n \n\n // $ctrl.$onInit = function() {\n // }\n $ctrl.selectUser = function(user: UserShortInfo) {\n dispatchCustomEvent(\"task-user-selected\", user)\n }\n\n $ctrl.clearUser = function() {\n dispatchCustomEvent(\"task-clear-user\", {})\n }\n\n function dispatchCustomEvent(name: string, detail: any) {\n const options = { detail, bubbles: false, composed: true }\n $element[0].dispatchEvent(new CustomEvent(name, options))\n }\n }]\n})","import angular from \"angular\"\nimport { NgComponent } from \"@common/model/angularModel\"\nimport { BoardInfoSimple } from \"@api\"\nimport * as boardService from \"@common/services/boardService\"\n\nconst DigiLean = angular.module('DigiLean')\nDigiLean.component('taskBoardSelector', {\n templateUrl: \"taskBoardSelector.html\",\n bindings: {\n 'boards': '<',\n 'canEdit': '<',\n 'thisBoard': '<'\n },\n controller: ['$element', function(this: NgComponent, $element: JQuery) {\n let $ctrl = this\n\n let popoverEl: HTMLDivElement | undefined\n\n $ctrl.newBoardSelected = false\n $ctrl.showColumnRow = false\n $ctrl.selectedBoard = null\n \n \n $ctrl.selectBoard = (board: BoardInfoSimple) => {\n dispatchCustomEvent(\"task-board-selected\", board)\n\n $ctrl.selectedBoard = board\n\n if (board.boardType === 'SmartActionList')\n return closePopover()\n \n $ctrl.newBoardSelected = true\n }\n\n $ctrl.selectThisBoard = () => {\n dispatchCustomEvent(\"task-board-select-this\")\n \n if (!$ctrl.thisBoard)\n return\n \n $ctrl.selectedBoard = $ctrl.thisBoard\n\n if ($ctrl.thisBoard.boardType === 'SmartActionList')\n return closePopover()\n \n $ctrl.newBoardSelected = true\n }\n\n $ctrl.clearBoard = () => {\n dispatchCustomEvent(\"task-board-clear\", {})\n closePopover()\n }\n \n $ctrl.placeTaskInBoard = () => {\n //$event.stopPropagation()\n\n $ctrl.showColumnRow = true\n getBoardData($ctrl.selectedBoard.id)\n // event\n }\n $ctrl.moveTaskToRowColumn = () => {\n //$event.stopPropagation()\n const moveTask = {\n selectedColumn: $ctrl.selectedColumn,\n selectedRow: $ctrl.selectedRow\n }\n dispatchCustomEvent(\"task-board-move-row-col\", moveTask)\n closePopover()\n }\n \n function dispatchCustomEvent(name: string, detail?: any) {\n const options = { detail, bubbles: false, composed: true }\n $element[0].dispatchEvent(new CustomEvent(name, options))\n }\n\n async function getBoardData(boardId: number) {\n const categories = await boardService.getBoardCategories(boardId)\n if (!categories)\n return\n\n if (categories.columns) {\n categories.columns.forEach(col => {\n if (col.responsibleUserId) {\n ///@ts-ignore\n col.displayName = col.name + \" (\" + col.responsibleDisplayName + \")\"\n } else {\n ///@ts-ignore\n col.displayName = col.name\n }\n })\n $ctrl.columns = categories.columns\n $ctrl.selectedColumn = categories.columns[0]\n }\n \n if (categories.rows) {\n categories.rows.forEach(row => {\n if (row.responsibleUserId) {\n ///@ts-ignore\n row.displayName = row.name + \" (\" + row.responsibleDisplayName + \")\";\n } else {\n ///@ts-ignore\n row.displayName = row.name;\n }\n })\n $ctrl.rows = categories.rows;\n $ctrl.selectedRow = categories.rows[0];\n }\n }\n\n function closePopover() {\n popoverEl?.hidePopover()\n }\n function togglePopoverEvent() {\n //console.log(\"popover new state\", e.newState)\n // reset every time popup toggles\n $ctrl.newBoardSelected = false\n $ctrl.showColumnRow = false\n }\n $ctrl.$onInit = () => {\n popoverEl = $element[0].querySelector(\"#boards-selector-popover\") as HTMLDivElement\n popoverEl.addEventListener(\"beforetoggle\", togglePopoverEvent)\n }\n $ctrl.$onDestroy = () => {\n popoverEl?.removeEventListener(\"beforetoggle\", togglePopoverEvent)\n }\n }]\n})","import * as customerService from \"@common/services/customers/customerService\"\nimport * as timeService from \"@common/services/timeService\"\nimport * as boardService from \"@common/services/boardService\"\nimport * as profileImageService from \"@common/services/user/profileImageService\"\n\nangular\n .module('DigiLean')\n .directive(\"newSubTaskList\", ['taskDrawingService',\n function (taskDrawingService) {\n return {\n templateUrl: 'newSubTaskList.html',\n restrict: 'E',\n scope: {\n 'parentTask': '<',\n 'targetDate': '<',\n 'tasks': '<',\n },\n link: function (scope, elem, attrs) {\n scope.canEdit = true;\n scope.boards = [];\n\n scope.setActive = function (task) {\n task.active = true;\n setTimeout(function () {\n $(elem).find(\".project-name\").focus();\n }, 50);\n }\n\n\n scope.$watch('parentTask', function (parentTask) {\n if (scope.parentTask) {\n loadData(scope.parentId); \n }\n });\n \n async function loadData(taskId) {\n await getAllUsers();\n await getBoards();\n }\n // Date\n scope.updateDate = function (task, $event) {\n const date = $event.originalEvent.detail\n task.boardDate = date\n // boardTaskService().updateDate(task.id, task.boardDate);\n mapDateToColumn(task)\n mapDateToRow(task)\n }\n\n // Responsible\n function setResponsible(task) {\n if (task.responsibleUserId && scope.users) {\n var user = scope.users.find(u => u.userId.toLowerCase() == task.responsibleUserId).toLowerCase();\n if (user) {\n task.user = user;\n\n }\n }\n }\n\n var setupTask = function (task) {\n task.boardDate = moment(task.boardDate).toDate();\n task.datePicker = {\n opened: false\n }\n setResponsible(task);\n }\n\n async function getAllUsers() {\n scope.users = await profileImageService.getAllUsersIncludeProfileImage()\n }\n\n function getBoards() {\n boardService.getAllBoardNames().then(function (data) {\n scope.boards = data;\n });\n }\n\n scope.clearBoard = function (task) {\n task.isActionItem = false;\n task.board = null;\n\n task.rowCategoryId = null;\n task.columnCategoryId = null;\n }\n\n\n scope.selectThisBoard = function (task) {\n var board = scope.boards.find(b => b.id == scope.parentTask.boardId);\n if (board) {\n scope.selectBoard(task, board);\n }\n\n }\n\n var mapDateToRow = function (task) {\n if (!scope.rows || scope.rows.length == 0) return;\n if (!task.boardDate) return;\n\n // Try to select correct row\n angular.forEach(scope.rows, function (row) {\n if (row.weekdayName && (row.weekdayName == timeService.getWeekDayNameFromDate(task.boardDate))) {\n task.selectedRow = row;\n }\n });\n }\n var mapDateToColumn = function (task) {\n if (!scope.columns || scope.columns.length == 0) return;\n if (!task.boardDate) return;\n\n // Try to select correct row\n angular.forEach(scope.columns, function (column) {\n if (column.weekdayName && (column.weekdayName == timeService.getWeekDayNameFromDate(task.boardDate))) {\n task.selectedColumn = column;\n }\n });\n }\n var mapResponsibleToColumn = function (task) {\n if (!scope.columns || scope.columns.length == 0) return;\n if (!task.responsibleUserId) return;\n\n // Try to select correct row\n angular.forEach(scope.columns, function (column) {\n if (column.responsibleUserId == task.responsibleUserId) {\n task.selectedColumn = column;\n }\n });\n }\n var mapResponsibleToRow = function (task) {\n if (!scope.rows || scope.rows.length == 0) return;\n if (!task.responsibleUserId) return;\n\n // Try to select correct row\n angular.forEach(scope.rows, function (row) {\n if (row.responsibleUserId == task.responsibleUserId) {\n task.selectedRow = row;\n }\n });\n }\n\n scope.placeTaskInBoard = function (task) {\n\n task.showColumnRow = true;\n boardService.getBoardCategories(task.board.id).then(function (data) {\n\n angular.forEach(data.columns, function (column) {\n if (column.responsibleUserId) {\n column.displayName = column.name + \" (\" + column.responsibleDisplayName + \")\";\n } else {\n column.displayName = column.name;\n }\n\n\n });\n angular.forEach(data.rows, function (row) {\n if (row.responsibleUserId) {\n row.displayName = row.name + \" (\" + row.responsibleDisplayName + \")\";\n } else {\n row.displayName = row.name;\n }\n });\n scope.columns = data.columns;\n task.selectedColumn = data.columns[0];\n scope.rows = data.rows;\n task.selectedRow = data.rows[0];\n mapDateToColumn(task);\n mapDateToRow(task);\n mapResponsibleToColumn(task);\n mapResponsibleToRow(task);\n });\n }\n\n scope.moveTaskToRowColumn = function (task) {\n task.isActionItem = false;\n\n var rowId = 0;\n var columnId = 0;\n if (task.selectedRow && task.selectedRow.id) {\n rowId = task.selectedRow.id;\n }\n if (task.selectedColumn && task.selectedColumn.id) {\n columnId = task.selectedColumn.id;\n }\n task.rowCategoryId = rowId;\n task.columnCategoryId = columnId;\n task.newBoardSelected = false;\n task.showColumnRow = false;\n\n }\n\n scope.clearSelectedUser = function (task) {\n var emptyUser = {\n userId: null,\n fullName: \"\",\n displayName: \"\"\n }\n scope.selectUser(task, emptyUser);\n\n };\n scope.selectUser = function (task, user) {\n task.user = user;\n if (user) {\n task.responsibleUserId = task.user.userId;\n task.responsibleUser = task.user.fullName;\n task.responsibleDisplayName = task.user.displayName;\n mapResponsibleToColumn(task);\n mapResponsibleToRow(task);\n }\n };\n\n\n function setBoard(task) {\n if (task.boardId && scope.boards) {\n var board = scope.boards.find(b => b.id == task.boardId);\n if (board) {\n task.board = board;\n task.isActionItem = true; //the task is placed on the specifiec boards actionlist\n }\n }\n }\n\n scope.selectBoard = function (task, board) {\n task.boardId = board.id;\n task.newBoardSelected = true;\n scope.columns = null;\n scope.selectedColumn = null;\n scope.rows = null;\n scope.selectedRow = null;\n setBoard(task);\n }\n\n scope.add = function () {\n var boardDate = moment().utc().startOf('day').toDate();\n if (scope.targetDate) {\n boardDate = scope.targetDate;\n }\n var task = {\n title: \"\",\n boardDate: boardDate,\n taskType: 'SubTask',\n user: null\n }\n setupTask(task);\n scope.tasks.unshift(task);\n scope.setActive(task);\n\n }\n\n scope.delete = function (task) {\n // Delete subtask\n var index = scope.tasks.indexOf(task);\n scope.tasks.splice(index, 1);\n }\n\n scope.changeStatus = function (task) {\n if (scope.readonly) return;\n task.status = taskDrawingService().getNextStatus(task.status).status;\n var status = {\n taskId: task.id,\n status: task.status\n };\n statusChangeDebounced(status);\n }\n\n\n scope.titleChanged = function (task) {\n task.active = false;\n }\n\n }\n }\n }]);\n\n","import lottie from \"lottie-web/build/player/lottie_light\"\nangular\n .module('DigiLean')\n .directive('animationTaskStatus', ['$rootScope', 'boardTaskService', 'taskDrawingService','debounce',\n function ($rootScope, boardTaskService, taskDrawingService, debounce) {\n return {\n templateUrl: 'animationTaskStatus.html',\n restrict: 'E',\n scope: {\n \"task\": \"<\",\n 'readonly': '<'\n },\n link: function (scope, elem, attrs) {\n scope.title = \"\";\n scope.$watch('task', function (task) {\n if (!task) return;\n checkCompletedStatus();\n });\n scope.$on('$destroy', function () {\n if (completeAnimation) {\n completeAnimation.destroy(completeAnimationName);\n }\n });\n var statusChangeDebounced = debounce(commitStatusChanged, 1000, false);\n\n scope.changeStatus = function (task) {\n task.status = taskDrawingService().getNextStatus(task.status).status;\n if (task.status == \"OK\") {\n showCompleteAnimation();\n }\n var statusOptions = {\n taskId: task.id,\n status: task.status\n };\n statusChangeDebounced(task, statusOptions);\n }\n\n \n\n function checkCompletedStatus() {\n if (scope.task.status == \"OK\") {\n setTimeout(function() {\n showCompleteAnimation();\n }, 100);\n } else {\n if (completeAnimation) {\n completeAnimation.stop(completeAnimationName);\n }\n }\n \n\n }\n\n var completeAnimation;\n var completeAnimationName = \"ok-animation\";\n function showCompleteAnimation() {\n if (completeAnimation) {\n completeAnimation.play();\n return;\n }\n var okContainer = $(elem).find(\".ok-animation\")[0]; // the dom element that will contain the animation\n completeAnimation = lottie.loadAnimation({\n container: okContainer,\n renderer: 'svg',\n name: completeAnimationName,\n loop: false,\n autoplay: true,\n path: 'https://assets3.lottiefiles.com/packages/lf20_sbJCHH.json' // the path to the animation json\n });\n\n okContainer.addEventListener('click', function () {\n if(!scope.readonly){\n completeAnimation.stop(completeAnimationName);\n \n scope.changeStatus(scope.task);\n }\n });\n }\n\n function commitStatusChanged(task, statusOptions) {\n boardTaskService().updateStatus(task.id, statusOptions).then(function (result) {\n\n });\n }\n\n $rootScope.subscribe('TaskStatusUpdated', function (status) {\n updateTaskStatus(status.taskId, status.status, \"BoardTask\");\n });\n\n function updateTaskStatus(id, status, entityType) {\n if (!entityType) entityType = \"BoardTask\";\n if (scope.task.id != id) return;\n\n scope.task.status = status;\n checkCompletedStatus();\n\n }\n }\n }\n }]);\n","import * as assetService from \"@common/services/assetService\"\n\n//\n// task-list-filter component\n// \nangular\n .module('DigiLean')\n .component(\"taskListFilter\", {\n templateUrl: 'taskListFilter.html',\n bindings: {\n filterInitial: '<',\n onFilterChanged: '&',\n showStatusFilter: '<'\n },\n controller: ['$scope', '$uibModal', '$translate', 'boardTaskService', 'authService', 'debounce', 'navigationService', 'strategyService',\n function ($scope, $uibModal, $translate, boardTaskService, authService, debounce, navigationService, strategyService) {\n let $ctrl = this\n\n $ctrl.query = \"\"\n $ctrl.isSearchWordActive = false\n $ctrl.likesFilterActive = false\n $ctrl.myResponsibleFilterActive = false\n $ctrl.overdueFilterActive = false\n $ctrl.assets = []\n $ctrl.projects = []\n $ctrl.hasStrategyModule = false\n\n //\n $ctrl.isMoreTagsAvailable = false;\n $ctrl.tagsVisible = []\n $ctrl.tags = []\n\n $ctrl.statuses = [\n { id: 'blank', name: $translate.instant(\"COMMON_NEW\"), filteredAndInResultList: false },\n { id: 'OK', name: $translate.instant(\"COMMON_OK\"), filteredAndInResultList: false },\n { id: 'unacceptable', name: $translate.instant(\"COMMON_REJECTED\"), filteredAndInResultList: false }\n ]\n\n $ctrl.priorityOptions = [\n {\n priorityDB: 1,\n translated: $translate.instant('task_LOW_EFFORT_HIGH_EFFECT'),\n cssClass: \"highEffectLowEffort\",\n filteredAndInResultList: false\n }, {\n priorityDB: 2,\n translated: $translate.instant('task_HIGH_EFFORT_HIGH_EFFECT'),\n cssClass: \"highEffectHighEffort\",\n filteredAndInResultList: false\n }, {\n priorityDB: 3,\n translated: $translate.instant('task_LOW_EFFORT_LOW_EFFECT'),\n cssClass: \"lowEffectlowEffort\",\n filteredAndInResultList: false\n }, {\n priorityDB: 4,\n translated: $translate.instant('task_HIGH_EFFORT_LOW_EFFECT'),\n cssClass: \"lowEffectHighEffort\",\n filteredAndInResultList: false\n }, {\n priorityDB: 0,\n translated: $translate.instant('task_NOT_PRIORITIZED'),\n cssClass: \"btn-default\",\n filteredAndInResultList: false\n }\n ]\n\n function resetListFilter(list) {\n list.forEach(item => {\n item.filteredAndInResultList = false\n })\n }\n\n\n $ctrl.toggleOverdueFilter = function () {\n $ctrl.overdueFilterActive = !$ctrl.overdueFilterActive\n filterDebounce()\n }\n\n $ctrl.filterPriority = function (priority) {\n priority.filteredAndInResultList = !priority.filteredAndInResultList\n filterDebounce()\n }\n\n\n $ctrl.resetFilter = function () {\n $ctrl.query = \"\"\n resetListFilter($ctrl.statuses)\n resetListFilter($ctrl.assets)\n resetListFilter($ctrl.projects)\n resetListFilter($ctrl.goals)\n resetListFilter($ctrl.priorityOptions)\n $ctrl.overdueFilterActive = false\n $ctrl.myResponsibleFilterActive = false\n $ctrl.overdueFilterActive = false\n $ctrl.filter = []\n if ($ctrl.onFilterChanged) {\n $ctrl.onFilterChanged({ filter: [] })\n }\n angular.forEach($ctrl.tags, function (tag) {\n tag.filteredAndInResultList = false;\n });\n }\n\n $ctrl.toggleMyResponsibleFilter = function () {\n $ctrl.myResponsibleFilterActive = !$ctrl.myResponsibleFilterActive\n filterDebounce()\n }\n\n $ctrl.showAllTags = function () {\n $ctrl.tagsVisible = $ctrl.tags;\n $ctrl.isMoreTagsAvailable = false;\n }\n\n function getAllData() {\n let promises = []\n promises.push(assetService.getAllAssets().then(assets => {\n $ctrl.assets = _.sortBy(assets, function (i) { return i.name.toLowerCase() })\n return true\n }))\n\n promises.push(boardTaskService().getTagCount().then(tags => {\n $ctrl.tags = tags;\n if (tags.length > 20) {\n $ctrl.isMoreTagsAvailable = true;\n $ctrl.tagsVisible = tags.slice(0, 19);\n } else {\n $ctrl.tagsVisible = tags;\n }\n return true\n }))\n\n promises.push(strategyService().getBreakthroughObjectives().then(function (result) {\n $ctrl.goals = result\n return true\n }))\n\n Promise.all(promises).then(() => {\n addInitialFilter()\n })\n }\n getAllData()\n\n $ctrl.search = function () {\n if ($ctrl.query) {\n $ctrl.isSearchWordActive = true\n\n } else {\n $ctrl.isSearchWordActive = false\n }\n filterDebounce()\n }\n\n\n $ctrl.filterStatus = function (status) {\n status.filteredAndInResultList = !status.filteredAndInResultList\n filterDebounce()\n }\n $ctrl.filterAsset = function (asset) {\n asset.filteredAndInResultList = !asset.filteredAndInResultList\n filterDebounce()\n }\n\n $ctrl.filterTag = function (tag) {\n tag.filteredAndInResultList = !tag.filteredAndInResultList\n filterDebounce()\n }\n $ctrl.filterGoal = function (goal) {\n goal.filteredAndInResultList = !goal.filteredAndInResultList\n filterDebounce()\n }\n\n const filterDebounce = debounce(setFilter, 500, false)\n function setFilter() {\n\n let filter = []\n addToFilterIfActive(filter, $ctrl.priorityOptions, \"priorityStatus\", \"priorityDB\")\n addToFilterIfActive(filter, $ctrl.statuses, \"status\", \"id\")\n addToFilterIfActive(filter, $ctrl.assets, \"Board.assetId\", \"id\")\n addToFilterIfActive(filter, $ctrl.projects, \"S.projectId\", \"id\")\n addToFilterIfActive(filter, $ctrl.tags, \"Tag.tag\", \"tag\")\n addToFilterIfActive(filter, $ctrl.goals, \"Goals.StrategyGoalId\", \"id\")\n if ($ctrl.myResponsibleFilterActive) {\n var userid = authService.getCurrentUser().userId\n var itemFilter = {\n sourceColumn: \"Task.responsibleUserId\",\n operator: \"InList\",\n items: [userid]\n }\n filter.push(itemFilter)\n }\n if ($ctrl.overdueFilterActive) {\n let itemFilter = {\n sourceColumn: \"boardDate\",\n operator: \"LessThanDate\",\n items: [moment().subtract(1, 'days')]\n }\n let notImplementedFilter = {\n sourceColumn: \"status\",\n operator: \"InList\",\n items: ['blank', 'unacceptable']\n }\n filter.push(itemFilter)\n filter.push(notImplementedFilter)\n }\n if ($ctrl.isSearchWordActive && $ctrl.query) {\n // CHeck for ID filter\n if (isNumeric($ctrl.query)) {\n // Check if suggestion is ID and show.\n\n boardTaskService().get($ctrl.query).then(function (task) {\n if (task) {\n $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'boardTask.html',\n controller: 'boardTaskController',\n resolve: {\n task: function () {\n return task;\n },\n activeTab: function () {\n return \"Info\";\n },\n options: function () {\n return {\n\n }\n }\n }\n });\n }\n })\n }\n let itemFilter = {\n sourceColumn: \"title\",\n operator: \"Contains\",\n items: [$ctrl.query]\n }\n filter.push(itemFilter)\n }\n $ctrl.filter = filter\n if ($ctrl.onFilterChanged) {\n $ctrl.onFilterChanged({ filter })\n }\n }\n\n function isNumeric(num) {\n return !isNaN(num)\n }\n\n function addToFilterIfActive(filter, list, sourceColumn, property) {\n var itemToShow = list.filter(l => l.filteredAndInResultList)\n if (itemToShow.length > 0) {\n\n let itemFilter = {\n sourceColumn: sourceColumn,\n operator: \"InList\",\n items: []\n }\n itemToShow.forEach(item => {\n itemFilter.items.push(item[property])\n })\n filter.push(itemFilter)\n }\n }\n\n function addInitialFilter() {\n let filter = $ctrl.filter\n if (Array.isArray(filter) && filter.length > 0) {\n updateGuiFromFilter(filter, $ctrl.priorityOptions, \"priorityStatus\", \"priorityDB\")\n updateGuiFromFilter(filter, $ctrl.statuses, \"status\", \"id\")\n updateGuiFromFilter(filter, $ctrl.assets, \"Board.assetId\", \"id\")\n updateGuiFromFilter(filter, $ctrl.projects, \"S.projectId\", \"id\")\n updateGuiFromFilter(filter, $ctrl.tag, \"Tag.tag\", \"tag\")\n updateGuiFromFilter(filter, $ctrl.goals, \"Goals.StrategyGoalId\", \"id\")\n $ctrl.myResponsibleFilterActive = updateGuiFromFilterSpecialCase(filter, \"responsibleUserId\")\n $ctrl.overdueFilterActive = updateGuiFromFilterSpecialCase(filter, \"dueDate\")\n }\n if ($ctrl.onFilterChanged) {\n $ctrl.onFilterChanged({ filter })\n }\n }\n function updateGuiFromFilter(filter, list, sourceColumn, property) {\n const appl = filter.find(f => f.sourceColumn == sourceColumn)\n if (appl) {\n const itemsint = stringtoint(appl.items)\n list.forEach(l => {\n const propVal = l[property]\n if (appl.items.includes(propVal) || itemsint.includes(propVal))\n l.filteredAndInResultList = true\n })\n }\n }\n function stringtoint(listofstr) {\n try {\n if (!listofstr)\n return []\n return listofstr.map(str => parseInt(str))\n }\n catch (e) { return [] }\n }\n function updateGuiFromFilterSpecialCase(filter, sourceColumn) {\n const appl = filter.find(f => f.sourceColumn == sourceColumn)\n return !!appl\n }\n\n function getHasModule() { $ctrl.hasStrategyModule = navigationService().hasModule(\"STRATEGY\") }\n $ctrl.$postLink = () => { getHasModule() }\n $scope.subscribe(\"UserAuthenticatedAndReady\", () => { getHasModule() })\n\n $ctrl.$onChanges = function (changes) {\n if (changes.filterInitial) {\n if (changes.filterInitial.currentValue) {\n $ctrl.filter = changes.filterInitial.currentValue\n addInitialFilter()\n }\n }\n }\n\n }\n ]\n })\n","import * as pdfService from \"@common/services/pdfService\"\nimport envConfig from \"@common/envConfig\"\n\nangular\n .module('DigiLean')\n .directive(\"taskListResult\", ['$filter', '$translate', 'boardTaskService', 'debounce', '$uibModal', 'NgTableParams', 'excelService',\n function ($filter, $translate, boardTaskService, debounce, $uibModal, NgTableParams, excelService) {\n return {\n templateUrl: 'taskListResult.html',\n restrict: 'E',\n scope: {\n 'filter': '<',\n },\n link: function (scope, elem, attrs) {\n\n scope.columns = [];\n scope.registrations = [];\n scope.newValuesCounter = 0;\n scope.totalValues = 0;\n scope.totalMatchingRecords = 0;\n scope.allUsers = [];\n scope.selectedDataList = [];\n scope.pageCount = 25;\n let previousFilterName = \"\";\n var initialized = false;\n\n scope.showFileGenerators = true;\n if (envConfig.isTeamsMode) {\n scope.showFileGenerators = false;\n }\n\n boardTaskService().getTotalNumberOfBoardTasks().then(function (count) {\n scope.totalValues = count;\n });\n\n // TimePeriods\n // default timeperiod\n var timeSettings = {\n timeframe: \"all\",\n useDefaultTimeframes: true,\n timeframes: [],\n period: null,\n getTimePeriod: function () {\n return {\n useDefaultTimeframes: timeSettings.useDefaultTimeframes,\n timeframes: timeSettings.timeframes,\n timeframe: timeSettings.timeframe,\n period: timeSettings.period\n }\n },\n setTimePeriod: function (timeframe, period) {\n timeSettings.timeframe = timeframe;\n timeSettings.period = period;\n // debounce, to make sure not starting loading several timeframes.\n scope.timePeriodOptions = {\n timePeriod: timeSettings.getTimePeriod()\n }\n }\n }\n scope.setTimePeriodDebounced = debounce(timeSettings.setTimePeriod, 100, false);\n // Default options\n scope.setTimePeriodDebounced(timeSettings.timeframe, timeSettings.period);\n scope.periodChangedHandler = function (timePeriod) {\n if (!timePeriod.timeframe) return;\n scope.timePeriodOptions.timePeriod = timePeriod;\n loadValues();\n };\n\n // Filter handling\n scope.$watch('filter', function (filter) {\n if (!filter) {\n scope.filter = [];\n }\n if(initialized)\n {\n scope.tableParams.reload();\n }\n initialized = true;\n });\n \n scope.openTask = function (taskId, mode) {\n if (!mode) mode = \"Info\";\n boardTaskService().get(taskId).then(function (task) {\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'boardTask.html',\n controller: 'boardTaskController',\n resolve: {\n task: function () {\n return task;\n },\n activeTab: function () {\n return mode;\n },\n options: function () {\n return {\n\n };\n }\n }\n });\n modalInstance.result.then(function (updateTask) {\n scope.tableParams.reload();\n });\n });\n }\n\n scope.getValueForElement = function (element, item) {\n var sourceColumn = element.sourceColumn;\n var value = item[sourceColumn];\n return value;\n }\n\n var loadValues = function () {\n scope.buildColumns();\n scope.tableParams = new NgTableParams({\n sorting: { lastModified: \"desc\" },\n count: scope.pageCount,\n }, {\n total:0,\n getData: scope.getTableValues\n });\n }\n\n scope.sorting = \"\";\n scope.getTableValues = function (params) {\n if( !initialized ) return;\n if (!scope.timePeriodOptions) return;\n var timePeriod = null;\n if (scope.timePeriodOptions.timePeriod && scope.timePeriodOptions.timePeriod.timeframe != \"all\") {\n timePeriod = scope.timePeriodOptions.timePeriod.period;\n }\n \n var sorting = [];\n // Build sortExpression for database to be able to deserialize, becuase NgTableParams.sorting is a dynamic object.\n for (var propt in params._params.sorting) {\n sorting.push({\n property: propt,\n direction: params._params.sorting[propt]\n });\n }\n scope.sorting = sorting;\n if(previousFilterName != scope.filter)\n {\n params._params.page = 1;\n }\n // We will build params based on the built-in NgTableParams + our sorting array\n var dbParams = {\n page: params._params.page,\n count: params._params.count,\n sorting: scope.sorting,\n filters: scope.filter,\n timePeriod: timePeriod\n }\n return boardTaskService().getTableValues(dbParams).then(function (data) {\n scope.totalMatchingRecords = data.total;\n params.total(data.total); // recal. page nav controls\n // check values\n data.values.forEach(value => {\n value.isOverdue = isOverdue(value.dueDate, value.status);\n });\n previousFilterName = scope.filter;\n return data.values;\n });\n }\n scope.allColumns = [\n\n {\n title: $translate.instant(\"COMMON_TITLE\"),\n field: 'title',\n visible: true,\n sortable: 'title',\n getValue: renderValue,\n dataType: \"text\"\n },\n {\n title: $translate.instant(\"COMMON_STATUS\"),\n field: 'status',\n visible: true,\n sortable: 'status',\n getValue: renderValue,\n dataType: \"text\"\n },\n {\n title: $translate.instant(\"COMMON_RESPONSIBLE\"),\n field: 'responsibleUser',\n sortable: 'responsibleUser',\n getValue: renderValue,\n visible: true,\n dataType: \"text\"\n },\n {\n title: $translate.instant(\"COMMON_DUE_DATE\"),\n field: 'dueDate',\n visible: true,\n sortable: 'dueDate',\n getValue: renderValue,\n dataType: \"date\"\n },\n {\n title: $translate.instant(\"COMMON_BOARD\"),\n field: 'boardName',\n sortable: 'boardName',\n getValue: renderValue,\n visible: true,\n dataType: \"text\"\n },\n {\n title: $translate.instant(\"COMMON_ASSET\"),\n field: 'assetName',\n sortable: 'assetName',\n getValue: renderValue,\n visible: true,\n dataType: \"text\"\n },\n // {\n // title: $translate.instant(\"COMMON_BOARD\"),\n // field: 'boardType',\n // sortable: 'boardType',\n // getValue: renderValue,\n // visible: true,\n // dataType: \"text\"\n // },\n {\n title: $translate.instant(\"BOARD_ROW\"),\n field: 'row',\n sortable: 'row',\n getValue: renderValue,\n visible: false,\n dataType: \"text\"\n },\n {\n title: $translate.instant(\"BOARD_COLUMN\"),\n field: 'col',\n sortable: 'col',\n getValue: renderValue,\n visible: false,\n dataType: \"text\"\n },\n\n {\n title: $translate.instant(\"COMMON_LAST_CHANGED\"),\n field: 'lastModified',\n visible: true,\n sortable: 'lastModified',\n getValue: renderValue,\n dataType: \"date\"\n },\n ];\n scope.buildColumns = function (datasource) {\n scope.columns = $filter('filter')(scope.allColumns, { visible: true });\n }\n\n var getColumns = function () {\n var columns = [];\n scope.columns.forEach((c) => {\n columns.push({\n field: c.field\n });\n })\n return columns;\n }\n\n scope.selectColumn = function (column) {\n column.visible = !column.visible;\n scope.buildColumns();\n }\n\n function renderValue($scope, row) {\n var item = this;\n var field = item.field;\n var value = row[field];\n if (this.dataType === \"date\") {\n return $filter('date')(value, \"mediumDate\");\n }\n if (this.dataType === \"timestamp\") {\n return $filter('date')(value, \"dd.MM.yyyy HH:mm:ss\");\n }\n if (this.dataType === \"bool\") {\n if (value === \"true\") {\n return \"\";\n } else {\n return \"\";\n }\n }\n return value;\n }\n\n function isOverdue(date, status) {\n // Overdue check\n\n if (!date) return false;\n if (status == \"OK\") return false;\n var duration = moment.duration(moment().diff(moment(date)));\n var days = duration.asDays();\n if (days > 1) {\n return true;\n }\n return false;\n }\n scope.exportToPDF = function () {\n var columns = getColumns();\n columns.push({ field: \"id\" })\n var dbParams = {\n page: 1,\n count: 5000,\n sorting: scope.sorting,\n filters: scope.filter,\n columns: columns\n }\n pdfService.createImprovementListReport(dbParams);\n }\n\n scope.exportToExcel = function () {\n var columns = getColumns();\n columns.push({ field: \"id\" })\n var dbParams = {\n page: 1,\n count: 5000,\n sorting: scope.sorting,\n filters: scope.filter,\n columns: columns\n }\n excelService().exportImprovementValues(dbParams);\n }\n }\n\n }\n }]);\n","import * as customerService from \"@common/services/customers/customerService\"\nimport * as assetService from \"@common/services/assetService\"\nimport { getUserFullProfile } from \"@common/stores/userStore\"\nimport * as employeeService from \"@common/services/employeeService\"\n\nangular.module(\"DigiLean\").controller('teamSpaceController', ['$scope', '$translate',\n function ($scope, $translate) {\n $scope.teams = [];\n var userSettings = {};\n $scope.selectedTeam = {};\n\n $scope.isStar = false;\n $scope.quickAccess = [];\n\n function init(){\n assetService.getList().then(function (assets) {\n $scope.teams = assets;\n setSelectedTeam();\n checkFavorite();\n });\n }\n init();\n\n $scope.teamChanged = function(team) {\n if(team){\n loadTeamMembers(team);\n\n if(userSettings){\n userSettings.teamspace = team.id;\n employeeService.updateUserSettings(userSettings).then(function () {\n $scope.publish(\"UserSettingsChanged\", userSettings);\n });\n }\n }\n };\n\n function loadTeamMembers(team) {\n if (!team) return;\n if (!team.id) return;\n customerService.getUsersForAsset(team.id).then(function(teamMembers) {\n $scope.selectedTeam.members = teamMembers;\n });\n }\n \n\n function setSelectedTeam(){\n const profile = getUserFullProfile()\n \n if (profile.settings){\n userSettings = profile.settings;\n if (userSettings.teamspace) {\n const selected = $scope.teams.find(t => t.id == userSettings.teamspace);\n if (selected){\n $scope.selectedTeam = selected\n } \n }\n }\n if (!$scope.selectedTeam.id && $scope.teams.length > 0){\n $scope.selectedTeam = $scope.teams[0];\n }\n loadTeamMembers($scope.selectedTeam);\n }\n $scope.addToFavorites = function () {\n $scope.isStar = true;\n var board = {\n id: \"TEAMSPACE\",\n name: $translate.instant(\"COMMON_TEAM_SPACE\"),\n boardType: \"TEAMSPACE\"\n };\n $scope.quickAccess.push(board);\n saveQuickAccess();\n }\n $scope.removeFromFavorites = function () {\n $scope.isStar = false;\n const isFavorite = $scope.quickAccess.find(q => q.id == \"TEAMSPACE\")\n if (isFavorite) {\n var currentIndex = $scope.quickAccess.indexOf(isFavorite);\n $scope.quickAccess.splice(currentIndex, 1);\n saveQuickAccess();\n }\n }\n function saveQuickAccess() {\n employeeService.updateUserPreference(\"FlexiboardFavoriteBoards\", $scope.quickAccess).then(function (settings) {\n $scope.publish(\"FlexiboardFavoriteBoardsChanged\", $scope.quickAccess);\n });\n }\n\n function checkFavorite(){\n employeeService.getUserPreference(\"FlexiboardFavoriteBoards\").then(function (settings) {\n if (settings && settings.value) {\n angular.forEach(settings.value, function (board) {\n if (board) {\n if(board.id == \"TEAMSPACE\"){\n $scope.isStar = true;\n }\n $scope.quickAccess.push(board);\n }\n });\n }\n });\n }\n\n \n\n }]);\n\n","import lottie from \"lottie-web/build/player/lottie_light\"\nangular\n .module('DigiLean')\n .directive(\"taskStatus\", ['$rootScope', 'boardTaskService','taskDrawingService','debounce',\n function ($rootScope, boardTaskService,taskDrawingService, debounce) {\n return {\n templateUrl: 'taskStatus.html',\n restrict: 'E',\n scope: {\n \"taskId\": \"<\",\n \"currentStatus\": \"<\",\n },\n link: function (scope, elem, attrs) {\n\n scope.$watch('currentStatus', function (status) {\n if (!status) return;\n scope.status = status;\n checkCompletedStatus();\n });\n scope.$on('$destroy', function () {\n if (completeAnimation) {\n completeAnimation.destroy(completeAnimationName);\n }\n });\n var statusChangeDebounced = debounce(commitStatusChanged, 1000, false);\n scope.changeTaskStatus = function () {\n scope.status = taskDrawingService().getNextStatus(scope.status).status;\n if (scope.status == \"OK\") {\n showCompleteAnimation();\n }\n var statusOptions = {\n taskId: scope.taskId,\n status: scope.status\n };\n statusChangeDebounced(statusOptions);\n }\n\n function checkCompletedStatus(){\n if (scope.status == \"OK\") {\n setTimeout(function() {\n showCompleteAnimation();\n }, 100);\n } else {\n if (completeAnimation) {\n completeAnimation.stop(completeAnimationName);\n }\n }\n }\n\n function commitStatusChanged(statusOptions) {\n boardTaskService().updateStatus(scope.taskId, statusOptions).then(function (result) {\n\n });\n }\n\n $rootScope.subscribe('TaskStatusUpdated', function (status) {\n updateTaskStatus(status.taskId, status.status);\n });\n\n function updateTaskStatus(id, status) {\n if (scope.taskId != id) return;\n scope.status = status;\n checkCompletedStatus();\n }\n\n var completeAnimation;\n var completeAnimationName = \"ok-animation\";\n function showCompleteAnimation() {\n if (completeAnimation) {\n completeAnimation.play();\n return;\n }\n var okContainer = $(elem).find(\".ok-animation\")[0]; // the dom element that will contain the animation\n completeAnimation = lottie.loadAnimation({\n container: okContainer,\n renderer: 'svg',\n name: completeAnimationName,\n loop: false,\n autoplay: true,\n path: 'https://assets3.lottiefiles.com/packages/lf20_sbJCHH.json' // the path to the animation json\n });\n\n okContainer.addEventListener('click', function () {\n completeAnimation.stop(completeAnimationName);\n scope.changeTaskStatus();\n });\n }\n }\n }\n }]);","import * as assetService from \"@common/services/assetService\"\nimport * as dashboardService from \"@common/services/dashboardService\"\nimport * as boardService from \"@common/services/boardService\"\n\nvar DigiLean = angular.module('DigiLean');\nDigiLean.controller('boardSettingsController',\n ['$scope', '$uibModalInstance', 'navigationService', 'options',\n function ($scope, $uibModalInstance, navigationService, options) {\n\n $scope.hasProjectModule = navigationService().hasModule(\"PROJECT\");\n $scope.useProjectGroup = true;\n $scope.selectedOwner = {};\n $scope.isProcessing = false;\n $scope.participants = [];\n $scope.selectedAssetId = null;\n $scope.selectedAssetType = \"\";\n $scope.name = \"\";\n $scope.description = \"\";\n $scope.isPublic = false;\n\n if (options.targetType == \"Board\") {\n boardService.getBoardInfo(options.targetId).then(function (board) {\n $scope.board = board;\n $scope.name = board.name;\n $scope.description = board.description;\n $scope.assetId = board.assetId;\n $scope.selectedAssetId = board.assetId;\n $scope.isPublic = board.isPublic;\n })\n }\n if (options.targetType == \"Dashboard\") {\n dashboardService.get(options.targetId).then(function (dashboard) {\n $scope.dashboard = dashboard;\n $scope.name = dashboard.title;\n $scope.description = dashboard.description;\n $scope.assetId = dashboard.assetId;\n $scope.selectedAssetId = dashboard.assetId;\n $scope.isPublic = dashboard.isPublic;\n })\n }\n if(options.includeProjects == false || options.includeCustomGroup == false){\n $scope.memberselectoroptions = {};\n if(options.includeProjects == false){\n $scope.memberselectoroptions.includeProject = false; \n }\n if(options.includeCustomGroup == false){\n $scope.memberselectoroptions.includeCustomGroup = false; \n }\n }\n\n $scope.memberSelectionChanged = function (selection) {\n $scope.selectedAssetId = selection.assetId;\n $scope.participants = selection.participants;\n $scope.selectedAssetType = selection.assetType;\n }\n $scope.nameChanged = function(name) {\n $scope.name = name;\n }\n\n $scope.descriptionChanged = function(description) {\n $scope.description = description;\n }\n\n $scope.setPublicStatus = function() {\n $scope.isPublic = !$scope.isPublic;\n }\n\n $scope.ok = function () {\n $scope.isProcessing = true;\n\n // If new asset, we need to create it then set it to board.\n\n if ($scope.selectedAssetType == \"CUSTOMIZED\") {\n var participants = [];\n $scope.participants.forEach(p => {\n var participant = {\n userId: p.userId,\n role: \"Member\"\n }\n participants.push(participant);\n });\n if ($scope.selectedAssetId == 0) {\n var customAsset = {\n name : $scope.name,\n participants : participants\n }\n assetService.createCustomAsset(customAsset).then(function(asset){\n $scope.selectedAssetId = asset.id;\n updateBoard();\n });\n } else {\n // Update list of participants\n assetService.updateCustomAssetMembers($scope.selectedAssetId, participants).then(function(asset){\n updateBoard();\n });\n }\n \n } else {\n updateBoard();\n }\n\n };\n\n var updateBoard = function() {\n \n\n var board = {\n description: $scope.description,\n isPublic: $scope.isPublic,\n assetId: $scope.selectedAssetId,\n }\n if ($scope.selectedAssetId) {\n board.assetId = $scope.selectedAssetId;\n }\n if (options.targetType == \"Board\") {\n board.name = $scope.name;\n if (!$scope.selectedAssetId) {\n board.assetId = $scope.board.assetId;\n } \n board.Owner = $scope.board.owner;\n board.OwnerDisplayName = $scope.board.ownerDisplayName;\n board.OwnerUserId = $scope.board.ownerUserId; \n\n boardService.update(options.targetId, board).then(function () {\n $scope.isProcessing = false;\n $uibModalInstance.close(board);\n });\n }\n if (options.targetType == \"Dashboard\") {\n var oldAssetId = $scope.dashboard.assetId;\n board.title = $scope.name;\n board.id = options.targetId;\n board.settings = $scope.dashboard.settings;\n dashboardService.saveDashboard(board).then(function () {\n if(oldAssetId !== $scope.selectedAssetId){\n dashboardService.updateDashboardAsset(board).then(function () {\n $scope.isProcessing = false;\n $uibModalInstance.close(board);\n });\n } else {\n $scope.isProcessing = false;\n $uibModalInstance.close(board);\n }\n });\n }\n }\n\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n }]);","import toaster from \"@common/components/toast\"\n\nangular.module('DigiLean').controller('languageLabelAdmin', ['$scope', '$filter', '$translate', 'languageAdminService', 'modalService','debounce',\n function ($scope, $filter, $translate, languageAdminService, modalService, debounce) {\n $scope.data = {\n query: null\n };\n $scope.$watch('data.query', function (q, old) {\n if (q !== null)\n $scope.searchQuery = angular.copy(q);\n });\n\n $scope.currentPage = 0;\n $scope.pageSize = 15;\n\n $scope.languages = languageAdminService().getSupportedLanguages();\n\n function findMissingTranslations(item) {\n let missing = []\n $scope.languages.forEach(lang => {\n if (lang.languageCode != \"en\") {\n const translation = item.translations.find(t => t.languageCode == lang.languageCode)\n if (translation && !translation.label)\n missing.push(lang.languageCode)\n }\n })\n return missing\n }\n $scope.translate = function (item) {\n // needed for the pagination calc\n const englishText = item.translations.find(t => t.languageCode == \"en\")\n if (!englishText || !englishText.label) {\n toaster.error(\"Got no english text for \"+ item.labelCode + \", can't translate\")\n return\n }\n\n const missingLangs = findMissingTranslations(item)\n if (missingLangs.length == 0) {\n toaster.info(\"No missing language translation for label \" + item.labelCode)\n return\n }\n\n \n const options = {\n fromLanguageCode: \"en\",\n textToTranslate: englishText.label,\n targetLanguagesCodes: missingLangs\n }\n \n languageAdminService().translate(options).then(function(result){\n // Add result to item translations;\n // Map result to language\n result.results.forEach(translationResult => {\n const translation = item.translations.find(t => t.languageCode == translationResult.languageCode)\n if (translation && !translation.label) { // don't override those who already have translation, must be blank\n translation.label = translationResult.value\n }\n })\n\n const labelsMsg = `Translated ${item.labelCode} for languages: ${missingLangs.join(\", \")}`\n toaster.success(`Translation OK
        ${labelsMsg}`, 25)\n $scope.saveItem(item)\n })\n }\n\n $scope.getData = function () {\n // needed for the pagination calc\n return $filter('filter')($scope.items, $scope.data.query)\n }\n $scope.removeItem = function (item) {\n $translate(['COMMON_CANCEL', 'COMMON_DELETE', 'ADMIN_MESSAGE_DELETE_CONFIRMATION']).then(function (translations) {\n var modalOptions = {\n closeButtonText: translations.COMMON_CANCEL,\n actionButtonText: translations.COMMON_DELETE,\n headerText: translations.COMMON_DELETE + ' ' + item.labelCode + '?',\n bodyText: translations.ADMIN_MESSAGE_DELETE_CONFIRMATION\n };\n\n modalService.showModal({}, modalOptions).then(function (result) {\n languageAdminService().delete(item.id).then(function (data) {\n var index = $scope.items.indexOf(item);\n $scope.items.splice(index, 1);\n $translate('COMMON_DELETED').then(function (msg) {\n toaster.info(msg);\n }, function (translationId) {\n $scope.headline = translationId;\n });\n }, function (err) {\n });\n });\n });\n }\n\n $scope.getLabel = function (item, languageCode) {\n var haslanguage = item.translations.find(t => t.languageCode == languageCode);\n if (haslanguage) {\n return haslanguage\n } else {\n var newLabel = { languageCode: languageCode, label: \"\" };\n return newLabel;\n }\n\n }\n\n $scope.setItemViewMode = function (item) {\n item.isEditMode = false;\n }\n $scope.setItemEditMode = function (item) {\n item.isEditMode = true;\n }\n\n $scope.addItem = function () {\n var item = {\n id: 0,\n labelCode: \"\",\n isWeb: true,\n isBackend: true,\n isMobile: true\n }\n item.translations = [];\n $scope.languages.forEach(lang => {\n var newLabel = { languageCode: lang.languageCode, label: \"\" };\n item.translations.push(newLabel);\n });\n item.isEditMode = true;\n $scope.data = {\n query: null\n };\n $scope.searchQuery = \"\";\n $scope.items.unshift(item);\n setTimeout(function () {\n $(\".project-name\").focus();\n }, 50);\n }\n\n $scope.items = [];\n\n var load = function () {\n\n languageAdminService().getList().then(function (items) {\n\n // map items to languages\n items.forEach(item => {\n var translations = [];\n $scope.languages.forEach(lang => {\n // check if item has language\n var label = $scope.getLabel(item, lang.languageCode);\n translations.push(label);\n });\n item.translations = translations;\n });\n $scope.items = items;\n });\n\n }\n load();\n\n \n\n $scope.saveItemDebounce = function (item) {\n if (item.labelCode == \"\") return;\n var languagecode = $scope.items.filter(i => i.labelCode == item.labelCode);\n if (languagecode.length > 1) {\n $translate('DASHBOARD_VISUALIZATION_ID_EXISTING').then(function (msg) {\n toaster.error(msg);\n }, function (translationId) {\n $scope.headline = translationId;\n });\n return;\n }\n if (item.id == 0) {\n if (hasValidTranslations(item)) {\n // Valid new language code\n languageAdminService().add(item).then(function (savedItem) {\n $translate('COMMON_SAVE_CUSTOM_FIELD').then(function (msg) {\n toaster.success(msg);\n }, function (translationId) {\n $scope.headline = translationId;\n });\n if(savedItem && savedItem.id){\n item.id= savedItem.id;\n }\n });\n } else {\n $translate('ADMIN_DATA_FIELD_MISSING').then(function (msg) {\n toaster.error(msg);\n }, function (translationId) {\n $scope.headline = translationId;\n });\n\n }\n } else {\n languageAdminService().update(item).then(function () {\n });\n }\n }\n $scope.saveItem = debounce($scope.saveItemDebounce, 1000, false);\n\n function hasValidTranslations(item) {\n var result = true;\n $scope.languages.forEach(lang => {\n // check if item has language\n var labelObj = $scope.getLabel(item, lang.languageCode);\n if (!labelObj || labelObj.label == \"\") {\n result = false;\n }\n });\n return result;\n\n }\n\n $scope.numberOfPages = function () {\n if ($scope.searchQuery)\n return Math.ceil($scope.getData().length / $scope.pageSize);\n else\n return Math.ceil($scope.items.length / $scope.pageSize);\n\n }\n\n\n }]);\n\n\n","import envConfig from \"@common/envConfig\";\n\nangular.module(\"DigiLean\").factory('languageAdminService', ['$http','$translate',\n function ($http,$translate) {\n function languageAdminService() {\n var resource = \"/languageAdmin\";\n var resourceUrl = envConfig.webApiUrl + resource;\n return {\n getSupportedLanguages: function(){\n var languages = [\n {languageCode: 'de',\n languageLabel: $translate.instant('COMMON_LANGUAGE_GERMAN'),\n nativeLabel: 'Deutsch'\n },\n {languageCode: 'en',\n languageLabel: $translate.instant('COMMON_LANGUAGE_ENGLISH'),\n nativeLabel: 'English'\n },\n {languageCode: 'es',\n languageLabel: $translate.instant('COMMON_LANGUAGE_SPANISH'),\n nativeLabel: 'Español'\n }, \n {languageCode: 'fr',\n languageLabel: $translate.instant('COMMON_LANGUAGE_FRENCH'),\n nativeLabel: 'Français'\n },\n {languageCode: 'it',\n languageLabel: $translate.instant('COMMON_LANGUAGE_ITALIAN'),\n nativeLabel: 'Italiano'\n },\n {languageCode: 'no',\n languageLabel: $translate.instant('COMMON_LANGUAGE_NORWEGIAN'),\n nativeLabel: 'Norsk'\n },\n {languageCode: 'sv',\n languageLabel: $translate.instant('COMMON_LANGUAGE_SWEDISH'),\n nativeLabel: 'Svenska'\n },\n {languageCode: 'tr',\n languageLabel: $translate.instant('COMMON_LANGUAGE_TURKISH'),\n nativeLabel: 'Türkçe'\n },\n {languageCode: 'pl',\n languageLabel: $translate.instant('COMMON_LANGUAGE_POLISH'),\n nativeLabel: 'Polski'\n },\n {languageCode: 'hu',\n languageLabel: $translate.instant('COMMON_LANGUAGE_HUNGARIAN'),\n nativeLabel: 'Magyar'\n }\n ]\n return languages;\n },\n getList: function(useCache) { \n if (!useCache) useCache = false;\n return $http.get(resourceUrl, { cache: useCache}).then(function (result) {\n return result.data;\n });\n },\n translate: function (options) {\n var url = resourceUrl + \"/translate/\";\n return $http.post(url, options).then(function (result) {\n return result.data;\n });\n },\n add: function (label) {\n return $http.post(resourceUrl, label).then(function (result) {\n return result.data;\n });\n },\n update: function (label) {\n return $http.put(resourceUrl, label).then(function (result) {\n return result.data;\n });\n },\n delete: function (id) {\n var url = resourceUrl + \"/delete/\" + id;\n return $http.delete(url).then(function (result) {\n return result.data;\n });\n },\n }\n }\n return languageAdminService;\n }]);","import * as customerService from \"@common/services/customers/customerService\"\nimport * as assetService from \"@common/services/assetService\"\nimport { hasDefaultAccess } from \"@common/components/dashboard/designer/common/userAccessService\"\n\n\nangular\n .module('DigiLean')\n .directive(\"datasourceValues\", ['$filter', '$translate', '$sce', 'areaService', 'projectService', 'dataService', 'NgTableParams', 'excelService', '$uibModal', 'dataListService',\n function ($filter, $translate, $sce, areaService, projectService, dataService, NgTableParams, excelService, $uibModal, dataListService) {\n return {\n templateUrl: 'datasourceValues.html',\n restrict: 'E',\n scope: {\n 'datasource': '=',\n 'selectedItemForUpdate': '=',\n 'filters': '=',\n 'timeperiod': '=',\n 'userAccess': '<',\n },\n link: function (scope, elem, attrs) {\n\n scope.columns = [];\n scope.registrations = [];\n scope.newValuesCounter = 0;\n scope.totalValues = 0;\n scope.allUsers = [];\n scope.selectedDataList = [];\n scope.dataLists = {};\n scope.isfiltered = false;\n\n scope.canEdit = true;\n\n scope.$watch('filters', function(){\n if(scope.filters && scope.filters.length > 0){\n scope.isfiltered = true;\n } else {\n scope.isfiltered = false;\n }\n })\n\n scope.$watch('userAccess', function (userAccess) {\n scope.canEdit = hasDefaultAccess(userAccess);\n });\n\n scope.$watch('timeperiod', function(){\n if(scope.timeperiod){\n scope.isfiltered = true;\n }\n })\n\n scope.$watch('datasource', function () {\n if (!scope.datasource) return;\n\n var listOperations = [];\n angular.forEach(scope.datasource.elements, function (element) {\n switch (element.type) {\n case \"asset\":\n listOperations.push(assetService.getAllAssets(true).then(function (data) {\n scope.assets = data;\n }));\n break;\n case \"area\":\n listOperations.push(areaService().getList(true).then(function (data) {\n scope.areas = data;\n }));\n break;\n case \"project\":\n listOperations.push(projectService().getList(true).then(function (data) {\n scope.projects = data;\n }));\n break;\n case \"user\":\n listOperations.push(customerService.getAllUsers().then(function (users) {\n scope.allUsers = users;\n }));\n break;\n case \"list\":\n var listOptions = { includeDeletedItems: false };\n listOperations.push(dataListService().getItems(element.dataListId, listOptions).then(function (list) {\n if (list) {\n scope.dataLists[element.sourceColumn] = list; \n }\n }));\n break;\n }\n\n });\n\n Promise.all(listOperations).then(() => {\n scope.getLatestValues();\n })\n\n\n });\n\n\n scope.importFromExcel = function () {\n //\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n templateUrl: 'excelImporter.html',\n controller: 'excelImporterController',\n resolve: {\n dataSourceId: function () {\n return scope.datasource.id;\n },\n }\n });\n // When user has created new suggestion\n modalInstance.result.then(function () {\n scope.getLatestValues();\n }, function () {\n //$log.info('Modal dismissed at: ' + new Date());\n });\n\n }\n\n\n scope.exportToExcel = function () {\n excelService().exportDataValues(scope.datasource.id);\n }\n\n\n\n scope.subscribe(\"DataValueAdded\", function (dataValue) {\n if (!scope.datasource) return;\n if (dataValue.dataSourceId === scope.datasource.id) {\n if (scope.datasource.primaryInputSource === \"automatic\") {\n scope.newValuesCounter += 1; // If automatic\n } else {\n scope.getLatestValues();\n }\n }\n });\n\n scope.subscribe(\"DataValueUpdated\", function (dataValue) {\n if (!scope.datasource) return;\n if (dataValue.dataSourceId === scope.datasource.id) {\n scope.getLatestValues();\n }\n });\n scope.subscribe(\"DataValueDeleted\", function (dataValueDeleted) {\n if (!scope.datasource) return;\n if (dataValueDeleted.dataSourceId === scope.datasource.id) {\n //scope.getLatestValues();\n var selected = $filter('filter')(scope.tableParams.data, { id: dataValueDeleted.valueId });\n if (selected.length > 0) {\n var index = scope.tableParams.data.indexOf(selected[0]);\n if (index > -1) {\n scope.tableParams.data.splice(index, 1);\n }\n }\n }\n });\n scope.edit = function (item) {\n scope.selectedItemForUpdate = item;\n }\n\n scope.delete = function (item) {\n dataService().delete(item.id).then(function () {\n\n });\n }\n scope.getValueForElement = function (element, item) {\n var sourceColumn = element.sourceColumn;\n var value = item[sourceColumn];\n return value;\n }\n\n scope.getLatestValues = function (params) {\n if (!scope.datasource) return;\n scope.newValuesCounter = 0;\n\n\n\n scope.buildColumns(scope.datasource);\n scope.tableParams = new NgTableParams({\n sorting: { valueDate: \"desc\" },\n },\n {\n getData: scope.getTableValues\n });\n\n }\n\n scope.getTableValues = function (params) {\n\n var sorting = [];\n // Build sortExpression for database to be able to deserialize, becuase NgTableParams.sorting is a dynamic object.\n for (var propt in params._params.sorting) {\n sorting.push({\n property: propt,\n direction: params._params.sorting[propt]\n });\n }\n // We will build params based on the built-in NgTableParams + our sorting array\n var dbParams = {\n page: params._params.page,\n count: params._params.count,\n filters: scope.filters,\n timePeriod: scope.timeperiod,\n sorting: sorting\n }\n return dataService().getTableValues(scope.datasource.id, dbParams).then(function (data) {\n angular.forEach(data.values, function (registration) {\n var asset = $filter('filter')(scope.assets, { id: registration.assetId }, true);\n if (asset && asset.length > 0) {\n registration.assetName = asset[0].name;\n } else {\n if (registration.assetId) {\n registration.assetName = registration.assetId;\n }\n }\n var area = $filter('filter')(scope.areas, { id: registration.areaId }, true);\n if (area && area.length > 0) {\n registration.areaName = area[0].name;\n } else {\n if (registration.areaId) {\n registration.areaName = registration.areaId;\n }\n }\n var project = $filter('filter')(scope.projects, { id: registration.projectId }, true);\n if (project && project.length > 0) {\n registration.projectName = project[0].displayName;\n } else {\n if (registration.projectId) {\n registration.projectName = registration.projectId;\n }\n }\n\n });\n scope.totalValues = data.total;\n params.total(data.total); // recal. page nav controls\n return data.values;\n });\n }\n scope.buildColumns = function (datasource) {\n scope.columns = [\n {\n title: $translate.instant(\"COMMON_DATE\"),\n field: 'valueDate',\n visible: true,\n sortable: 'valueDate',\n getValue: renderValue,\n dataType: \"date\"\n },\n {\n title: $translate.instant(\"COMMON_REGISTRATION\"),\n field: 'registrationDate',\n visible: true,\n sortable: 'registrationDate',\n getValue: renderValue,\n dataType: \"timestamp\"\n },\n {\n title: $translate.instant(\"COMMON_VALUE\"),\n field: 'value',\n sortable: 'value',\n getValue: renderValue,\n visible: true,\n dataType: \"text\"\n }\n ];\n var listIndex = -1;\n for (var i = 0; i < datasource.elements.length; i++) {\n var element = datasource.elements[i];\n var dataField = element.sourceColumn;\n if (dataField === \"assetId\") dataField = \"assetName\";\n if (dataField === \"areaId\") dataField = \"areaName\";\n if (dataField === \"projectId\") dataField = \"projectName\";\n scope.columns.push({\n title: element.label,\n field: dataField,\n getValue: renderValue,\n visible: true,\n sortable: dataField,\n dataType: element.type,\n sourceColumn: element.sourceColumn\n });\n }\n if(scope.canEdit)\n {\n var deleteColumn =\n {\n title: $translate.instant(\"COMMON_ACTION\"),\n visible: true,\n dataType: \"command\"\n }\n scope.columns.push(deleteColumn);\n }\n }\n\n function renderValue($scope, row) {\n var item = this;\n var field = item.field;\n var value = row[field];\n if (this.dataType === \"date\") {\n return $sce.trustAsHtml(``)\n }\n if (this.dataType === \"timestamp\") {\n return $sce.trustAsHtml(``)\n }\n if (this.dataType === \"bool\") {\n if (value === \"true\") {\n return \"\";\n } else {\n return \"\";\n }\n } if (this.dataType === \"user\") {\n var user = $filter('filter')(scope.allUsers, { userId: value }, true);\n if (user.length > 0) {\n return user[0].fullName;\n }\n }\n if (this.dataType === \"list\") {\n var listitem = $filter('filter')(scope.dataLists[this.sourceColumn], { id: parseInt(value) }, true);\n if (listitem.length > 0) {\n return listitem[0].name;\n }\n }\n return value;\n }\n\n\n }\n\n }\n }]);\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\nexport enum AssetRoleType {\n Member = 'Member',\n Viewer = 'Viewer',\n Owner = 'Owner',\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\nexport enum AuthenticationMode {\n Password = 0,\n AzureAd = 1,\n Mixed = 2,\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\nexport enum CustomerSettingKeys {\n Language = 'language',\n Currency = 'currency',\n Modules = 'modules',\n DateFormat = 'dateFormat',\n Fiscalmonth = 'fiscalmonth',\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\nexport enum CustomerSubscriptionType {\n Standard = 0,\n Professional = 1,\n Enterprise = 2,\n Custom = 3,\n None = 4,\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\nexport enum DatabaseType {\n Customer = 'Customer',\n CustomerData = 'CustomerData',\n StorageAccount = 'StorageAccount',\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\nexport enum DataSourceElementType {\n Area = 'area',\n Asset = 'asset',\n Board = 'board',\n Bool = 'bool',\n Description = 'description',\n List = 'list',\n Number = 'number',\n Project = 'project',\n Text = 'text',\n User = 'user',\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\nexport enum DeviceType {\n Android = 0,\n iOS = 1,\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\nexport enum EvaluationStatus {\n Meh = 0,\n Smile = 1,\n Frown = -1,\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\nexport enum GroupType {\n GENERAL = 'GENERAL',\n BUSINESSUNIT = 'BUSINESSUNIT',\n PROJECT = 'PROJECT',\n CUSTOMIZED = 'CUSTOMIZED',\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\nexport enum ImprovementStatus {\n Suggested = 'Suggested',\n Planned = 'Planned',\n InProgress = 'InProgress',\n Implemented = 'Implemented',\n Evaluated = 'Evaluated',\n Archived = 'Archived',\n Activated = 'Activated',\n Open = 'Open',\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\nexport enum IncidentSeverity {\n None = 0,\n Low = 1,\n Medium = 2,\n High = 3,\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\nexport enum IncidentStatus {\n New = 0,\n InProgress = 10,\n Resolved = 20,\n Rejected = 30,\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\nexport enum JobRunResult {\n Failed = 0,\n Success = 1,\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\nexport enum JobRunState {\n NotStarted = 0,\n Running = 1,\n Completed = 2,\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\nexport enum LearningItemType {\n Chapter = 'chapter',\n Page = 'page',\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\nexport enum LogMessageType {\n Success = 'success',\n Error = 'error',\n Warning = 'warning',\n Information = 'information',\n JobStarted = 'jobStarted',\n JobFinished = 'jobFinished',\n JobFailed = 'jobFailed',\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\nexport enum MonitorState {\n Success = 'success',\n RecentError = 'recentError',\n RecentNoRun = 'recentNoRun',\n NoRun = 'noRun',\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\nexport enum PublishState {\n NotPublished = 0,\n Organization = 1,\n HasLearningModule = 2,\n Public = 3,\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\nexport enum TeamsAccess {\n HasAccess = 'hasAccess',\n NewOrgNewUser = 'newOrgNewUser',\n ExistingOrgNewUser = 'existingOrgNewUser',\n ExistingOrgNoAutoSignup = 'existingOrgNoAutoSignup',\n WrongLicense = 'wrongLicense',\n DeletedUser = 'deletedUser',\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\nexport enum UserCheckupStatus {\n ActiveUser = 'activeUser',\n NotExist = 'notExist',\n ExistInCurrentInstallation = 'existInCurrentInstallation',\n ExistInAnotherInstallation = 'existInAnotherInstallation',\n}\n","import * as customerService from \"@common/services/customers/customerService\"\nimport * as timeService from \"@common/services/timeService\"\nimport toaster from \"@common/components/toast\"\n\nangular\n .module('DigiLean')\n .directive(\"organizationBillingAdmin\", ['$translate', '$filter', 'customerAccountService', '$uibModal',\n function ($translate, $filter, customerAccountService, $uibModal) {\n return {\n templateUrl: 'organizationBillingAdmin.html',\n restrict: 'E',\n scope: {\n\n },\n link: function (scope, elem, attrs) {\n scope.currency = \"USD\";\n scope.totalFee = 0;\n scope.paymentdetails = null;\n scope.validPaymentDetails = true;\n scope.hasReadAndAcceptedTerms = false;\n scope.missingReadAndAcceptedTerms = false;\n var firstRegistration = false;\n\n scope.updatedSubscription = false;\n var newStartDate = null;\n\n scope.translationData = {\n due: scope.due\n };\n\n scope.subscribe(\"UserAuthenticatedAndReady\", function (profile) {\n\n getSubscription();\n });\n \n\n function setTrialDateIfTrial(){\n if(scope.account.isTrial && scope.account.endDate != null){//In trial and has not ordered earlier\n scope.account.endDate = null;\n var trialPeriod = customerAccountService().getTrialPeriod();\n var newStartDate = moment(scope.account.startDate).add(trialPeriod,'days');\n scope.account.startDate = newStartDate.toDate();\n }\n }\n function setNewStartDate(){\n if(newStartDate){\n scope.account.startDate = newStartDate.toDate();\n }\n }\n scope.countryChanged = function (updated) {\n scope.paymentdetails.country = updated.countryCode;\n scope.validatePaymentDetails();\n }\n\n scope.readAndAccept = function (hasReadAndAcceptedTerms) {\n scope.missingReadAndAcceptedTerms = !hasReadAndAcceptedTerms;\n scope.hasReadAndAcceptedTerms = hasReadAndAcceptedTerms;\n }\n scope.updateAccount = function () {\n if(scope.account.isTrial && scope.account.endDate != null){//In trial and has not ordered earlier\n if(!scope.hasReadAndAcceptedTerms){\n scope.missingReadAndAcceptedTerms = true;\n return;\n }\n }\n setTrialDateIfTrial();\n // trengs dette? Det er nå ikke mulig å gå fra årlig abonnement til månedlig... \n setNewStartDate();\n customerAccountService().updateCustomerAccount(scope.account).then(function (result) {\n $translate('ADMIN_CONFIRM_ORDER').then(function (msg) {\n toaster.success(msg);\n scope.updatedSubscription = false;\n scope.account = result;\n })\n })\n }\n\n\n scope.openPlanDialog = function () {\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'customerAccountForm.html',\n controller: 'customerAccountModalController',\n resolve: {\n account: scope.account,\n updated: scope.updatedSubscription\n }\n });\n modalInstance.result.then(function (updated) {\n if(updated){\n scope.updatedSubscription = updated;\n \n presentPredictedFee();\n }\n }, function () {\n });\n }\n\n scope.updatePaymentDetails = function () {\n firstRegistration = false;\n if (scope.validatePaymentDetails()) {\n customerAccountService().updatePaymentDetails(scope.paymentdetails).then(function (result) {\n $translate('ADMIN_PAYMENT_DETAILS_UPDATED').then(function (msg) {\n toaster.success(msg);\n })\n })\n }\n }\n\n scope.validatePaymentDetails = function () {\n \n scope.validPaymentDetails = true;\n if(!firstRegistration){ \n if (!scope.paymentdetails.companyName) {\n scope.notValidCompanyName = true;\n scope.validPaymentDetails = false;\n } else {\n scope.notValidCompanyName = false;\n }\n if (!scope.paymentdetails.email) {\n scope.notValidEmail = true;\n scope.validPaymentDetails = false;\n } else {\n scope.notValidEmail = false;\n }\n if (!scope.paymentdetails.address) {\n scope.notValidAddress = true;\n scope.validPaymentDetails = false;\n } else {\n scope.notValidAddress = false;\n }\n if (!scope.paymentdetails.zip) {\n scope.notValidZip = true;\n scope.validPaymentDetails = false;\n } else {\n scope.notValidZip = false;\n if (isNaN(scope.paymentdetails.zip) || !Number.isInteger(Number(scope.paymentdetails.zip))) {\n scope.notValidZip = true;\n scope.validPaymentDetails = false;\n } else {\n scope.notValidZip = false;\n }\n }\n if (!scope.paymentdetails.city) {\n scope.notValidCity = true;\n scope.validPaymentDetails = false;\n } else {\n scope.notValidCity = false;\n }\n if (!scope.paymentdetails.country) {\n scope.notValidCountry = true;\n scope.validPaymentDetails = false;\n } else {\n scope.notValidCountry = false;\n }\n }\n return scope.validPaymentDetails;\n }\n\n \n scope.removeRegNumberWhiteSpace = function () {\n if (scope.paymentdetails.regnumber) {\n scope.paymentdetails.regnumber = scope.paymentdetails.regnumber.replace(/\\s/g, '');\n }\n }\n\n\n scope.openCancelSubscriptionDialog = function () {\n var endDate = calculateSubscriptionEndDate();\n var desc = $translate.instant(\"ADMIN_BILLING_CANCEL_SUBSCRIPTION\") + \" \" + endDate.format(\"MMM DD, YYYY\"); \n swal({\n title: $translate.instant(\"ADMIN_CANCEL_SUBSCRIPTION\"),\n text: desc,\n icon: \"error\",\n buttons: [$translate.instant(\"ADMIN_BACK_TO_SETTINGS\"),\n $translate.instant(\"ADMIN_CANCEL_SUBSCRIPTION\")],\n dangerMode: true,\n closeOnConfirm: false\n }).then((value) => {\n switch (value) {\n case true: // Yes to cancel\n customerAccountService().cancelSubscription(endDate).then(function (result) {\n scope.account = result;\n })\n\n break;\n default:\n }\n });\n }\n\n function calculateSubscriptionEndDate() {\n if(!scope.due){\n calculateDue();\n }\n var lastPayedDate = moment().add(scope.due - 1, 'days');\n if (scope.account.billing == 'YEARLY') {\n var daysThisMonth = moment().daysInMonth();\n if (scope.due <= daysThisMonth) { // subscription is not terminated more than a month before renewal => subscription extended a year and then terminated\n return lastPayedDate.add(1, 'year');\n } else {\n return lastPayedDate;\n }\n } else if (scope.account.billing == 'MONTHLY') {\n var startNextPayDate = moment().add(scope.due, 'days');\n var newEndDate = startNextPayDate.add(1, 'months');\n return newEndDate;\n } else { //FREE\n return lastPayedDate;\n }\n }\n\n scope.openReactivateDialog = function () {\n swal({\n title: $translate.instant('ADMIN_WELCOME_BACK'),\n text: \"\",\n icon: \"warning\",\n buttons: { reactivate: { text: $translate.instant('ADMIN_REACTIVATE_NOW'), className: \"sa-digilean-button\" } },\n dangerMode: true,\n closeOnClickOutside: true,\n closeOnEsc: true\n })\n .then((reactivate) => {\n if (reactivate) {\n swal($translate.instant('ADMIN_ACCOUNT_REACTIVATED'), {\n icon: \"success\",\n buttons: {\n confirm: {\n text: \"OK\",\n value: true,\n visible: true,\n className: \"sa-digilean-button\",\n closeModal: true,\n }\n }\n\n }).then((ok) => {\n customerAccountService().reactivateAccount().then(function (result) {\n scope.account.endDate = null;\n })\n })\n }\n });\n }\n\n scope.openFrequencyDialog = function () {\n swal({\n title: $translate.instant('ADMIN_CHANGE_FREQUENCY'),\n text: $translate.instant('ADMIN_CHANGE_FREQUENCY_DESC'),\n icon: \"\",\n buttons: {\n nochange: {\n text: $translate.instant('COMMON_CANCEL'),\n className: \"digilean-label-historical\",\n closeModal: true,\n value: false\n },\n monthly: {\n text: $translate.instant('COMMON_MONTHLY'),\n className: \"sa-digilean-button\",\n closeModal: true,\n value: \"MONTHLY\"\n },\n yearly: {\n text: $translate.instant('DASHBOARD_ANNUAL'),\n className: \"sa-digilean-button\",\n closeModal: true,\n value: \"YEARLY\"\n },\n\n },\n dangerMode: true,\n closeOnClickOutside: true,\n closeOnEsc: true\n }).then((value) => {\n switch (value) {\n\n case \"MONTHLY\":\n if (scope.account.billing != 'MONTHLY') {\n var endDateCurrentSubscription = calculateSubscriptionEndDate();\n newStartDate = endDateCurrentSubscription.add(1, 'days');\n //TODO should this information also be available in mail notification?\n scope.descNewSubscription = $translate.instant('ADMIN_BILLING_MONTHLY_INVOICE_VALID_FROM') + endDateCurrentSubscription.format(\"MMM DD, YYYY\"); \n scope.account.billing = 'MONTHLY';\n \n presentPredictedFee();\n \n scope.updatedSubscription = true;\n }\n break;\n\n case \"YEARLY\":\n if (scope.account.billing != 'YEARLY') {\n var endDateCurrentSubscription = calculateSubscriptionEndDate();\n\n newStartDate = moment().add(scope.due, 'days');\n scope.account.billing = 'YEARLY';\n scope.descNewSubscription = null;\n presentPredictedFee();\n scope.updatedSubscription = true;\n }\n break;\n\n default:\n }\n });\n }\n \n async function getSubscription() {\n const account = await customerAccountService().getCustomerAccount()\n scope.account = account;\n if (account.billing != \"FREE\") {\n await getPaymentDetails()\n calculateFee()\n if (scope.account.isTrial) {\n calculateTrialDue()\n } else {\n calculateDue()\n }\n }\n }\n getSubscription();\n\n function getPaymentDetails() {\n return customerAccountService().getPaymentDetails().then(function (details) {\n if (details) {\n scope.paymentdetails = details;\n if (details.billingCurrency) {\n scope.currency = details.billingCurrency;\n }\n } else {\n scope.paymentdetails = {\n companyName: \"\",\n email: \"\",\n address: \"\",\n regnumber: \"\",\n contactFirstName: \"\",\n contactLastName: \"\",\n zip: \"\",\n city: \"\",\n country: null,\n other: \"\"\n }\n firstRegistration = true;\n }\n \n customerService.getCountryList().then(function(countries){\n scope.countries = countries;\n if (scope.paymentdetails.country) {\n var match = $filter('filter')(scope.countries , { countryCode: scope.paymentdetails.country }, true);\n if (match.length > 0) {\n scope.paymentdetails.countryinfo = match[0];\n }\n }\n })\n return scope.paymentdetails\n })\n }\n\n function presentPredictedFee(){\n customerAccountService().getRecurringInvoiceFromInputData(scope.account).then(function (invoice) {\n scope.invoice = invoice;\n scope.totalFee = scope.invoice.sumExTax;\n })\n }\n\n\n async function calculateFee() {\n if (scope.account.subscription == \"ENTERPRISE\")\n return\n const invoice = await customerAccountService().getRecurringInvoice()\n scope.invoice = invoice;\n scope.totalFee = scope.invoice.sumExTax;\n }\n\n function calculateTrialDue() {\n var trialPeriodInDays = customerAccountService().getTrialPeriod();\n var daysInTrial = timeService.getDurationInDays(scope.account.startDate, moment());\n if(daysInTrial < 0){ //HAve already ordered and therefore startDate has been updated to beginning of pay period\n calculateDue();\n } else { \n if (!daysInTrial){ // start date not set\n var daysLeftInTrial = timeService.getDurationInDays(moment(),scope.account.endDate);\n if(daysLeftInTrial < 0){\n scope.due = 0;\n } else {\n scope.due = daysLeftInTrial;\n }\n } else {\n scope.due = trialPeriodInDays - daysInTrial;\n }\n scope.translationData = {\n due: scope.due\n };\n }\n }\n\n function calculateDue() {\n var startDate = moment(scope.account.startDate);\n if (scope.account.billing == 'YEARLY') {\n\n var dayOfYear = startDate.dayOfYear();\n var currentDayOfYear = moment().dayOfYear();\n var diff = dayOfYear - currentDayOfYear;\n if (diff >= 0) {\n scope.due = diff;\n } else { \n var totalDayInThisYear = moment().endOf(\"year\").dayOfYear();\n scope.due = totalDayInThisYear - currentDayOfYear + dayOfYear;\n }\n } else {\n var dayOfMonth = startDate.get('date');\n var currentDayOfMonth = moment().get('date');\n var diff = dayOfMonth - currentDayOfMonth;\n if (diff >= 0) {\n scope.due = diff;\n } else {\n var totalDayInThisMonth = moment().daysInMonth();\n scope.due = totalDayInThisMonth - currentDayOfMonth + dayOfMonth;\n }\n }\n scope.translationData = {\n due: scope.due\n };\n }\n }\n }\n }]);\n","import { BusinessUnit } from \"@api\"\nimport { getAllUnitsCached } from \"@common/services/businessUnitService\"\nimport * as customerService from \"@common/services/customers/customerService\"\nimport { DigiLeanNgScope } from \"@common/model/angularModel\"\nimport toaster from \"@common/components/toast\"\nimport { translateLabelInstant } from \"@common/services/language/DigiLeanLang\"\nimport angular from \"angular\"\nimport { handleThrownErrorMsg } from \"@common/services/error/aspNetErrorHandling\"\n\n\ninterface BusinessUnitExtended extends BusinessUnit {\n editLicenses?: boolean | false // non-mapped property used in businessunitAccount.ts\n activeUserLicenses?: number // non-mapped property used in businessunitAccount.ts\n}\n\ninterface IBusinessunitAccountScope extends DigiLeanNgScope {\n businessUnits: BusinessUnitExtended[]\n}\n\nangular\n.module('DigiLean')\n.directive(\"businessunitAccount\", [\n function () {\n return {\n templateUrl: 'businessunitAccount.html',\n restrict: 'E',\n scope: {\n },\n link: function ($scope: IBusinessunitAccountScope, elem, attrs) {\n\n $scope.userLicenses = 0\n\n $scope.businessUnits = []\n $scope.businessUnitsEnabled = false\n getAllUnitsCached().then(units => {\n $scope.businessUnits.push(...units)\n })\n\n $scope.toogleEditLicenses = function (unit: BusinessUnitExtended) {\n unit.editLicenses = !unit.editLicenses\n if(unit.editLicenses){\n customerService.getActiveUserLicenses(unit.id).then(function (result) {\n if (result)\n unit.activeUserLicenses = result\n })\n }\n }\n \n $scope.changeMaxLicenses = function (unit: BusinessUnitExtended) {\n $scope.messages = []\n if (unit.editLicenses){\n customerService.updateMaxBusinessUnitLicenses(unit).then(function (updatedUnit) {\n unit.editLicenses = false\n const msg = translateLabelInstant(\"COMMON_SAVED\")\n toaster.info(msg) \n }, handleExceptions)\n } \n }\n\n function handleExceptions(error: Error, fallbackErrorLabel?: string) {\n console.error(error)\n const errors = handleThrownErrorMsg(error)\n if (errors.length > 0)\n $scope.messages = errors\n else if (fallbackErrorLabel)\n $scope.messages = [fallbackErrorLabel]\n else\n $scope.messages = [\"COMMON_ERROR_MSG\"]\n }\n\n }\n }\n }])","import * as customerService from \"@common/services/customers/customerService\"\n\nangular\n .module('DigiLean')\n .controller(\"customerAccountModalController\", ['$scope', '$uibModalInstance', 'account', 'updated',\n function ($scope, $uibModalInstance, account, updated) {\n\n $scope.account = account;\n\n $scope.currentSubscription = account.subscription;\n $scope.currentRegularLicenses = account.userLicenses;\n $scope.currentMobileLicenses = account.mobileLicenses;\n\n $scope.showWarningMessageMobileUserLicenses = false;\n $scope.showWarningMessageUserLicenses = false;\n\n $scope.updated = updated;\n\n $scope.translationData = {\n currentSubscription: $scope.currentSubscription,\n currentRegularLicenses: $scope.currentRegularLicenses,\n currentMobileLicenses : $scope.currentMobileLicenses\n };\n\n $scope.translationData2 = {\n activeLicenses: $scope.activeLicenses\n };\n\n\n \n $scope.updateSubscription = function (sub) {\n $scope.account.subscription = sub;\n };\n\n $scope.checkActiveUsers = function (newNumber) {\n if(!newNumber || newNumber<10) {\n $scope.account.userLicenses = 10;\n return;\n }\n if($scope.activeLicenses){\n if(newNumber<$scope.activeLicenses){\n \n $scope.showWarningMessageUserLicenses = true;\n } else {\n $scope.showWarningMessageUserLicenses = false;\n }\n } else {\n customerService.getActiveUserLicenses().then(function (active) {\n $scope.activeLicenses = active;\n if(newNumber 10){\n $scope.account.userLicenses = $scope.account.userLicenses - 10;\n $scope.checkActiveUsers($scope.account.userLicenses);\n }\n }\n $scope.increaseRegular = function(){\n $scope.account.userLicenses = $scope.account.userLicenses + 10; \n $scope.checkActiveUsers($scope.account.userLicenses);\n }\n \n $scope.decreaseMobile = function(){\n if($scope.account.mobileLicenses >= 10){\n $scope.account.mobileLicenses = $scope.account.mobileLicenses - 10; \n } else {\n $scope.account.mobileLicenses = 0;\n }\n $scope.checkActiveMobileUsers($scope.account.mobileLicenses);\n }\n $scope.increaseMobile = function(){\n $scope.account.mobileLicenses = $scope.account.mobileLicenses + 10; \n $scope.checkActiveMobileUsers($scope.account.mobileLicenses); \n }\n \n\n $scope.ok = function () {\n if($scope.showWarningMessageMobileUserLicenses || $scope.showWarningMessageUserLicenses) return;\n if($scope.currentSubscription != $scope.account.subscription || \n $scope.currentRegularLicenses != $scope.account.userLicenses ||\n $scope.currentMobileLicenses != $scope.account.mobileLicenses){\n $scope.updated = true;\n }\n $uibModalInstance.close($scope.updated);\n };\n\n $scope.close = function () {\n $scope.account.subscription = $scope.currentSubscription;\n $scope.account.userLicenses = $scope.currentRegularLicenses;\n $scope.account.mobileLicenses = $scope.currentMobileLicenses;\n $uibModalInstance.dismiss('cancel');\n }\n }]);","import angular from \"angular\"\nimport toaster from \"@common/components/toast\"\nimport { DigiLeanNgScope } from \"@common/model/angularModel\"\nimport * as customerService from \"@common/services/customers/customerService\"\nimport { Asset, AssetRoleType, AssetUser, UserShortInfo } from \"@api\"\nimport * as assetService from \"@common/services/assetService\"\n\ninterface IAssetParticipantsScope extends DigiLeanNgScope {\n users: (UserShortInfo|AssetUser)[]\n participants: AssetUser[]\n asset: Asset\n headline: any\n addViewer: (user: AssetUser) => void\n add: (user: AssetUser) => void\n remove: (user: AssetUser) => void\n ok: () => void\n cancel: () => void\n}\n\nconst DigiLean = angular.module('DigiLean')\nDigiLean.controller('assetParticipantsController', ['$scope', '$uibModalInstance', '$translate', 'assetId','boardId',\n function ($scope: IAssetParticipantsScope, $uibModalInstance, $translate, assetId, boardId: number) {\n\n $scope.participants = []\n var loadUsers = function () {\n customerService.getAllUsers().then(function (users) {\n $scope.users = users\n customerService.getUsersForAsset(assetId).then(function (assetUsers) {\n $scope.participants = assetUsers\n filterUsers()\n })\n })\n }\n loadUsers()\n\n function filterUsers() {\n if (!Array.isArray($scope.participants) || $scope.participants.length === 0)\n return\n\n $scope.users = $scope.users.filter(u => !$scope.participants.some(p => p.userId == u.userId))\n }\n\n var getAsset = function () {\n assetService.getById(assetId).then(function (asset) {\n $scope.asset = asset\n })\n }\n getAsset()\n\n function updateRole(user, role: AssetRoleType) {\n const matchingUser = $scope.participants.find(p => p.userId == user.userId)\n if (matchingUser) {\n matchingUser.assetRole = role\n } else {\n user.assetRole = role\n $scope.participants.unshift(user)\n }\n filterUsers()\n }\n\n $scope.addOwner = function (user) {\n updateRole(user, AssetRoleType.Owner);\n }\n\n $scope.addViewer = function (user) {\n updateRole(user, AssetRoleType.Viewer);\n }\n\n $scope.add = function (user) {\n updateRole(user, AssetRoleType.Member);\n }\n\n $scope.remove = function (user) {\n\n $scope.users.unshift(user)\n\n const matchingUser = $scope.participants.find(p => p.userId == user.userId)\n if (matchingUser) {\n const i = $scope.participants.indexOf(matchingUser)\n $scope.participants.splice(i, 1)\n }\n }\n\n $scope.ok = function () {\n if (boardId) {\n customerService.giveAccessToUsersForBoard(boardId, $scope.participants).then(showAccessGiven)\n } else {\n customerService.giveAccessToUsersForAsset(assetId, $scope.participants).then(showAccessGiven)\n }\n }\n\n function showAccessGiven() {\n $uibModalInstance.close()\n // Raise signalr event\n $translate('ADMIN_MESSAGE_ASSET_MEMBERS_MODIFIED').then(function (msg) {\n toaster.success(msg)\n }, function (translationId) {\n $scope.headline = translationId\n })\n }\n\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel')\n }\n }])","import envConfig from \"@common/envConfig\";\n\n\nangular.module('DigiLean').factory('customerAccountService', ['$http', '$translate',\n function ($http, $translate) {\n function customerAccountService() {\n var resource = \"/customeraccount\";\n var resourceUrl = envConfig.webApiUrl + resource;\n return {\n createInvoice: function (invoice) {\n var url = resourceUrl + \"/createInvoice\";\n return $http.post(url, invoice).then(function (result) {\n return result.data;\n });\n },\n getInvoiceSummaryForPeriod: function (period) {\n var url = resourceUrl + \"/getInvoiceSummaryForPeriod?from=\" + period.from + \"&to=\" + period.to;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n getProductOrders: function () {\n var url = resourceUrl + \"/getProductOrders\";\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n getInvoicesForPeriod: function (period) {\n var url = resourceUrl + \"/getInvoicesForPeriod?from=\" + period.from + \"&to=\" + period.to;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n getRecurringInvoice: function () {\n var url = resourceUrl + \"/getRecurringInvoice\";\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n getRecurringInvoiceFromInputData: function (account) {\n var url = resourceUrl + \"/getRecurringInvoiceFromInputData\";\n return $http.post(url, account).then(function (result) {\n return result.data;\n });\n },\n getTrialPeriod: function () {\n return 14;\n },\n getSubscription: function () {\n var url = resourceUrl + \"/getSubscription\";\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n getPaymentDetails: function () {\n var url = resourceUrl + \"/getPaymentDetails\";\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n getCustomerAccount: function () {\n var url = resourceUrl + \"/getCustomerAccount\";\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n getStandardModules: function () {\n return [\n {\n id: \"IMPROVEMENT\",\n title: $translate.instant('COMMON_IMPROVEMENT'),\n icon: \"fal fa-lightbulb\",\n desc: $translate.instant('COMMON_IMPROVEMENT_DESC'),\n moduleId: 3\n },\n {\n id: \"DEVIATION\",\n title: $translate.instant('COMMON_DEVIATION'),\n icon: \"fa fa-exclamation-triangle\",\n desc: $translate.instant('COMMON_DEVIATION_DESC'),\n moduleId: 4\n },\n {\n id: \"PROJECT\",\n title: $translate.instant('COMMON_PROJECT'),\n icon: \"far fa-calendar-alt\",\n desc: $translate.instant('COMMON_PROJECT_DESC'),\n moduleId: 6\n },\n {\n id: \"A3\",\n title: $translate.instant('COMMON_A3'),\n icon: \"far fa-file\",\n desc: $translate.instant('COMMON_A3_DESC'),\n moduleId: 5\n }\n ];\n },\n getProfessionalModules: function () {\n return [\n // {\n // id:\"STRATEGY\",\n // title: $translate.instant('STRATEGY_STRATEGY'),\n // icon: \"fas fa-rocket\"\n // },\n {\n id: \"LEARNING\",\n title: $translate.instant('LEARNING_LEARNING_CENTER'),\n icon: \"fas fa-graduation-cap\",\n desc: $translate.instant('COMMON_LEARNING_DESC'),\n moduleId: 11\n }\n ];\n },\n cancelSubscription: function (endDate) {\n var url = resourceUrl + \"/cancelSubscription/\";\n return $http.put(url, endDate).then(function (result) {\n return result.data;\n });\n },\n updateCustomerProductOrder: function (order) {\n var url = resourceUrl + \"/updateCustomerProductOrder/\";\n return $http.put(url, order).then(function (result) {\n return result.data;\n });\n },\n updateCustomerAccount: function (account) {\n var url = resourceUrl + \"/updateCustomerAccount/\";\n return $http.put(url, account).then(function (result) {\n return result.data;\n });\n },\n updatePaymentDetails: function (customerPaymentDetails) {\n var url = resourceUrl + \"/UpdatePaymentDetails/\";\n return $http.put(url, customerPaymentDetails).then(function (result) {\n return result.data;\n });\n },\n reactivateAccount: function () {\n var url = resourceUrl + \"/reactivateAccount/\";\n return $http.put(url).then(function (result) {\n return result.data;\n });\n },\n\n }\n }\n return customerAccountService;\n }]);\n\n","import * as customerService from \"@common/services/customers/customerService\"\nimport * as assetService from \"@common/services/assetService\"\nangular\n .module('DigiLean')\n .controller(\"newMessageModalController\", ['$scope', '$filter', '$uibModalInstance','$translate', 'authService',\n function ($scope, $filter, $uibModalInstance, $translate, authService) {\n\n $scope.title = \"\";\n $scope.text = \"\";\n $scope.errormessage = \"\";\n $scope.uploadedFiles = [];\n \n $scope.filters = [];\n $scope.updateFilter = function (updatedSourceColumn, filters) {\n var hasFilter = $filter('filter')($scope.filters, { sourceColumn: updatedSourceColumn });\n // Remove existing filter connected to sourceColumn\n if (hasFilter && hasFilter.length > 0) {\n // Remove existing filter\n angular.forEach(hasFilter, function (filter, key) {\n var index = $scope.filters.indexOf(hasFilter[key]);\n $scope.filters.splice(index, 1);\n });\n }\n angular.forEach(filters, function (filter) {\n if (filter) {\n if($scope.filters === undefined){\n $scope.filters = [];\n }\n $scope.filters.push(filter);\n }\n });\n };\n\n \n $scope.titleChanged = function (content) {\n $scope.title = content;\n }\n\n $scope.textChanged = function (content) {\n $scope.text = content;\n }\n\n $scope.send = function () {\n $scope.errormessage = \"\";\n if(!$scope.title){\n $scope.errormessage = $translate.instant(\"ADMIN_DATA_FIELD_MISSING\") + \": \"\n + $translate.instant(\"COMMON_TITLE\");\n return;\n } \n \n var message = {\n title: $scope.title,\n text: $scope.text,\n files: $scope.uploadedFiles,\n isPublic: false\n };\n\n if(!$scope.filters || $scope.filters.length == 0){ //role defines how many assets user can send to\n if(authService.hasRole(\"Admin\")){\n message.isPublic = true;\n } else {\n message.assets = [];\n assetService.getList().then(function (assets) {\n assets.forEach(asset => {\n var messageAsset = \n {\n AssetId: asset.id\n }; \n message.assets.push(messageAsset);\n }) \n customerService.sendMessage(message).then(function (result) {\n });\n $uibModalInstance.close(message); \n });\n }\n } else { // message only to be sent to selected assets\n var assetIds = $scope.filters[0].items;\n message.assets = [];\n for(var i=0; i 0) {\n var currentIndex = $scope.quickAccess.indexOf(isFavorite[0]);\n $scope.quickAccess.splice(currentIndex, 1);\n saveQuickAccess();\n }\n var board = $filter('filter')($scope.allBoards, { id: board.id })\n if (board.length > 0) {\n board[0].isStar = false;\n }\n }\n var allProjects = [];\n function getBoards() {\n employeeService.getUserPreference(\"FlexiboardFavoriteBoards\").then(function (settings) {\n if (settings && settings.value) {\n angular.forEach(settings.value, function (board) {\n if (board) {\n board.isStar = true;\n board.hasAccess = false;\n $scope.quickAccess.push(board);\n }\n });\n }\n projectService().getList(true).then(function (projects) {\n allProjects = projects;\n folderService().getFlexiBoards().then(function (boards) {\n $scope.boards = boards;\n $scope.filteredBoards = boards;\n $scope.allBoards = boards.concat($scope.systemBoards);\n\n angular.forEach($scope.allBoards, function (board) {\n var isFavorite = $filter('filter')($scope.quickAccess, { id: board.id }, true)\n if (isFavorite.length > 0) {\n board.isStar = true;\n isFavorite[0].asset = board.asset;\n isFavorite[0].name = board.name;\n isFavorite[0].hasAccess = true;\n } else {\n board.isStar = false;\n }\n });\n // Remove quick access board no longer available\n var quickAccessBoardsToRemove = $filter('filter')($scope.quickAccess, { hasAccess: false });\n if (quickAccessBoardsToRemove.length > 0) {\n quickAccessBoardsToRemove.forEach(x => {\n // Only remove boards that are not system boards\n if(!(x.boardType == 'PERSONAL' || x.boardType == 'MYSPACE' || x.boardType == 'TEAMSPACE' || x.boardType == 'SYSTEMACTIVITY'|| x.boardType == 'TASKSEARCH')){\n var index = $scope.quickAccess.indexOf(x);\n $scope.quickAccess.splice(index, 1);\n }\n \n });\n saveQuickAccess();\n }\n\n mapBoardsToProject($scope.quickAccess, allProjects);\n mapBoardsToProject($scope.boards, allProjects);\n });\n });\n\n });\n\n }\n\n getBoards();\n\n function mapBoardsToProject(boards, projects) {\n angular.forEach(boards, function (board) {\n // if asset is project, add project to board\n if (board.asset && board.asset.projectId) {\n var project = $filter('filter')(allProjects, { id: board.asset.projectId }, true)\n if (project.length > 0) {\n board.project = project[0];\n }\n }\n });\n }\n\n $scope.newFlexiboard = function () {\n $state.go('newFlexiboard', {}, { reload: false });\n }\n\n function saveQuickAccess() {\n\n employeeService.updateUserPreference(\"FlexiboardFavoriteBoards\", $scope.quickAccess).then(function (settings) {\n $scope.publish(\"FlexiboardFavoriteBoardsChanged\", $scope.quickAccess);\n });\n }\n\n dragulaService.options($scope, 'folder-bag', {\n removeOnSpill: false,\n moves: function (el, container, target) {\n if (target.classList) {\n return target.classList.contains('parent-draggable');\n }\n return false;\n }\n });\n\n $scope.$on('board-bag.drop-model', function (el, target, source) {\n saveQuickAccess();\n });\n\n $scope.$on('board-bag.over', function (e, el, container) {\n container.addClass('drop-over');\n });\n\n $scope.$on('board-bag.out', function (e, el, container) {\n container.removeClass('drop-over');\n });\n\n }]);\n\n\n","import { RectangleObject } from \"@common/model/types\"\nimport {LitElement, html, css} from \"lit\"\nimport {customElement, property} from \"lit/decorators.js\"\n\n@customElement('resolution-displayer')\nexport class ResolutionDisplayer extends LitElement {\n static styles = css`\n :host {\n display: inline-block;\n }\n \n `\n \n private _res: RectangleObject = {width: 0, height: 0}\n @property({attribute: false})\n set res(value: RectangleObject | null) {\n if (value)\n this._res = value\n else\n this._res = {width: 0, height: 0}\n this.requestUpdate()\n }\n get res(): RectangleObject {\n return this._res\n }\n\n render() {\n return html`\n ${this.res.width}x${this.res.height}\n `\n }\n}\n ","import { RectangleObject } from \"@common/model/types\"\nimport { translateLabelInstant } from \"@common/services/language/DigiLeanLang\"\nimport * as staticFileService from \"@common/shared/staticFileService\"\nimport \"./resolutionDisplayer\"\nimport { Dashboard, DashboardWidget } from \"@api\"\n\nexport enum LayoutOption {\n Default = \"default\",\n Landscape = \"landscape\"\n}\n\nenum ScreenSize {\n Medium = \"medium\",\n Large = \"large\",\n ExtraLarge = \"extraLarge\"\n}\n\ninterface ScreenSizesConfig {\n type: ScreenSize,\n size: RectangleObject,\n translated?: string\n}\n\nexport interface LayoutMode {\n option: LayoutOption\n screenSize?: ScreenSize\n maxRows?: number\n}\n\nconst screenConfigurations: ScreenSizesConfig[] = [\n {\n type: ScreenSize.Medium,\n size: { width: 1500, height: 750 },\n translated: translateLabelInstant('DASHBOARD_SCREEN_SIZE_MEDIUM')\n },\n {\n type: ScreenSize.Large,\n size: { width: 2000, height: 1000 },\n translated: translateLabelInstant('DASHBOARD_SCREEN_SIZE_LARGE')\n },\n {\n type: ScreenSize.ExtraLarge,\n size: { width: 2700, height: 1350 },\n translated: translateLabelInstant('DASHBOARD_SCREEN_SIZE_EXTRALARGE')\n }\n]\nexport function getScreenConfiguration(screenSize: ScreenSize) {\n const config = screenConfigurations.find(sc => sc.type == screenSize)\n return config\n}\n\nexport function getLayoutOptions(option: LayoutOption) {\n let options = structuredClone(layoutOptions)\n options = options.filter(lo => lo.option === option)\n return options\n}\n// export function getScreenSizes() {\n// const sizes = Object.values(ScreenSize).filter((v) => isNaN(Number(v)))\n// return sizes\n// }\nexport function getScreenSizesConfiguration() {\n return screenConfigurations\n}\nexport interface LayoutOptionConfig {\n option: LayoutOption\n minRows: number\n maxRows: number\n translated?: string\n}\nconst defaultOption: LayoutOptionConfig = {\n option: LayoutOption.Default,\n minRows: 1,\n maxRows: 200\n}\n\nconst layoutOptions: LayoutOptionConfig[] = [\n defaultOption,\n {\n option: LayoutOption.Landscape,\n minRows: 20,\n maxRows: 20,\n translated: \"16:9 (40 x 20)\"\n },\n {\n option: LayoutOption.Landscape,\n minRows: 22,\n maxRows: 22,\n translated: \"16:10 (40 x 22)\"\n },\n {\n option: LayoutOption.Landscape,\n minRows: 24,\n maxRows: 24,\n translated: \"3:2 (40 x 24)\"\n },\n {\n option: LayoutOption.Landscape,\n minRows: 28,\n maxRows: 28,\n translated: \"4:3 (40 x 28)\"\n }\n]\n\nexport function getLayoutConfig(layoutMode: LayoutMode) {\n if (layoutMode.option == LayoutOption.Landscape && !layoutMode.maxRows)\n throw new Error(\"layoutmode landscape must have maxRows!\")\n\n if (layoutMode.option == LayoutOption.Default)\n return defaultOption\n\n // use weak comparison here as select element will make the value a string\n const config = layoutOptions.find(lc => lc.maxRows == layoutMode.maxRows)\n return config ?? defaultOption\n}\n\nexport function calculateLayoutFactor(screenSize: ScreenSize, current: RectangleObject) {\n \n const screenConfig = getScreenConfiguration(screenSize)\n if (!screenConfig)\n throw new Error(\"Unknown screen size\")\n\n const factorWidthFixed = (current.width / screenConfig.size.width).toFixed(2)\n const factorWidth = parseFloat(factorWidthFixed)\n return factorWidth\n}\n\nexport function getThemes() {\n return [\n {\n type: \"default\",\n name: translateLabelInstant(\"BOARD_TEXT_MODE_DARK\")\n },\n {\n type: \"custom\",\n name: translateLabelInstant(\"BOARD_TEXT_MODE_LIGHT\")\n },\n ]\n}\n\nexport function getBackgrounds() {\n return [\n {\n name: \"skyscraper\",\n previewUrl: staticFileService.image('skyscraper-preview.jpg'),\n url: staticFileService.image('skyscraper.jpg'),\n },\n {\n name: \"industry-crane\",\n previewUrl: staticFileService.image('industry-crane-preview.jpg'),\n url: staticFileService.image('industry-crane.jpg'),\n },\n {\n name: \"fjord\",\n previewUrl: staticFileService.image('fjord-preview.jpg'),\n url: staticFileService.image('fjord.jpg'),\n },\n {\n name: \"orange-landscape\",\n previewUrl: staticFileService.image('orange-landscape-preview.jpg'),\n url: staticFileService.image('orange-landscape.jpg'),\n },\n {\n name: \"orange-sky\",\n previewUrl: staticFileService.image('orange-sky-preview.jpg'),\n url: staticFileService.image('orange-sky.jpg'),\n },\n {\n name: \"industry\",\n previewUrl: staticFileService.image('industry-preview.jpg'),\n url: staticFileService.image('industry.jpg'),\n },\n {\n name: \"mountain\",\n previewUrl: staticFileService.image('mountain-preview.jpg'),\n url: staticFileService.image('mountain.jpg'),\n }\n\n ];\n}\n\ninterface PageState {\n title: string\n height: number\n}\nexport function isPossibleToConvertToLandscape(currentDashboard: Dashboard, maxHeight: number) {\n if (!currentDashboard || !currentDashboard.pages || currentDashboard.pages.length === 0)\n return false\n\n if (typeof maxHeight == \"string\")\n maxHeight = parseInt(maxHeight)\n\n const pageHeights = getPageHeights(currentDashboard)\n const errors = pageHeights.reduce((array: PageState[], page) => {\n if (page && page.height > maxHeight)\n array.push(page)\n return array\n }, [])\n \n return {\n isPossibleToChange: errors.length === 0,\n errors,\n maxHeight\n }\n}\n\ntype AppScale = { [key in ScreenSize]: number }\n// ScreenSize factor\nconst appScaleFactors: AppScale = {\n medium: 1,\n large: 0.8,\n extraLarge: 0.6\n}\n\nconst minAppSize = 2\nconst maxAppSize = 40\n\nexport function adjustAppSize(screenSize: ScreenSize, size: number) {\n let adjustedSize = 12\n \n if (!size)\n return adjustedSize\n\n if (!screenSize)\n return size\n\n if (screenSize === ScreenSize.Medium)\n return size\n\n const scaleFactor = appScaleFactors[screenSize]\n \n adjustedSize = Math.floor(size * scaleFactor)\n if (adjustedSize < minAppSize) return minAppSize\n if (adjustedSize > maxAppSize) return maxAppSize\n return adjustedSize;\n}\n\nfunction getPageHeights(dashboard: Dashboard) {\n if (!dashboard || !dashboard.pages || dashboard.pages.length == 0)\n return []\n\n return dashboard.pages.map(p => {\n const pageHeight = getPageHeightByWidgets(p.widgets)\n return { title: p.title, height: pageHeight } as PageState\n })\n}\n\nfunction getPageHeightByWidgets(widgets?: DashboardWidget[] | null) {\n if (!widgets || widgets.length === 0)\n return 0\n let max = 0\n widgets.forEach(w => {\n const height = (w.row ? w.row : 0) + w.sizeY\n if (height > max)\n max = height\n })\n return max\n}","import * as customerService from \"@common/services/customers/customerService\"\nimport { translateLabelInstant } from \"@common/services/language/DigiLeanLang\"\nimport * as dashboardService from \"@common/services/dashboardService\"\nimport * as layoutService from \"./flexiboardLayoutService\"\nimport * as displayService from \"@common/services/displayService\"\nimport * as employeeService from \"@common/services/employeeService\"\nimport toaster from \"@common/components/toast\"\nimport envConfig from \"@common/envConfig\"\n\nangular\n .module('DigiLean')\n .controller(\"flexiboardController\", ['$scope', '$element', '$state', '$stateParams', '$uibModal', 'authService', 'modalService', 'debounce', 'appstoreService',\n function ($scope, $element, $state, $stateParams, $uibModal, authService, modalService, debounce, appstoreService) {\n $scope.id = parseInt($stateParams.id);\n $scope.quickAccess = [];\n $scope.popularApps = appstoreService().getPopularApps();\n $scope.isInPresentationMode = false;\n $scope.isInTeams = false;\n if (envConfig.isTeamsMode) {\n $scope.isInTeams = true;\n }\n\n\n $scope.currentCustomerId = authService.getCurrentUser().customerId; //TOBE REMOVED when feature is ready\n $scope.screenSizesConfiguration = layoutService.getScreenSizesConfiguration()\n $scope.ratioOptions = layoutService.getLayoutOptions(\"landscape\")\n // Zoom\n $scope.zoom = 1;\n $scope.showZoom = true;\n var saveSettingsDebounced = debounce(function () {\n saveSettings();\n }, 2000, false);\n $scope.showZoomOption = function () {\n if ($scope.isAdmin || $scope.isBoardDesigner) {\n saveSettingsDebounced();\n }\n }\n $scope.zoomChangedHandler = function (zoom) {\n $scope.zoom = zoom;\n if ($scope.isAdminMode) {\n saveSettingsDebounced();\n }\n }\n\n // page service - will come via event when loaded (might be handled better)\n let pageService\n $scope.$on(\"grid-stack-loaded\", ($event, ps) => {\n pageService = ps\n pageService.setCurrentPage($scope.currentPage)\n calcLayoutFactor()\n })\n\n // Teams specific\n $scope.isConfigurableTab = false\n const params = new URLSearchParams(window.location.search)\n if (params.has(\"context\")) {\n const context = params.get(\"context\")\n $scope.isConfigurableTab = context == \"configTab\"\n }\n\n\n // Load board\n async function getDashboard() {\n const dashboard = await dashboardService.get($scope.id)\n $scope.userAccess = dashboard.userAccess\n loadDashboard(dashboard)\n checkFavorite()\n }\n getDashboard();\n\n const onWindowResize = debounce(() => {\n console.log(\"window resize debounced\")\n calcLayoutFactor()\n }, 500, false)\n\n window.addEventListener(\"resize\", onWindowResize)\n // Cleanup\n $scope.$on('$destroy', function () {\n removeBackgroundPosition()\n // remove position, will descrease index in stylesheet so we need to subtract one\n if (backgroundImageIndex) {\n backgroundImageIndex -= 1\n }\n removeBackground()\n window.removeEventListener(\"resize\", onWindowResize)\n\n document.removeEventListener(\"fullscreenchange\", fullscreenchanged);\n })\n\n /////////////////////////\n // Theme and Layout\n /////////////////////////\n\n var backgroundPostitionIndex = null;\n var createBackgroundStyle = function () {\n var styleSheet = document.styleSheets[0];\n backgroundPostitionIndex = styleSheet.insertRule(\"#page-wrapper:before { position: absolute }\", styleSheet.cssRules.length);\n }\n createBackgroundStyle();\n\n $scope.resetLayout = function () {\n $scope.selectedTheme = $scope.themes[0];\n $scope.opacity = 100;\n setOpacity($scope.opacity);\n $scope.backgroundImageUrl = \"\";\n removeBackground();\n saveSettings();\n }\n\n $scope.opacity = 100;\n var setOpacity = function (opacity) {\n var cssOpacity = \"0.\" + opacity;\n if (opacity == 100) {\n cssOpacity = 1;\n }\n if (opacity < 10) {\n cssOpacity = \"0.0\" + opacity;\n }\n var styleSheet = document.styleSheets[0];\n var index = styleSheet.insertRule(\"#page-wrapper:before { opacity: \" + cssOpacity + \"}\", styleSheet.cssRules.length);\n }\n $scope.setOpacity = function (opacity) {\n $scope.opacity = opacity;\n setOpacity(opacity);\n saveSettings();\n }\n\n // Theme\n $scope.themes = layoutService.getThemes()\n\n $scope.setTheme = function (theme) {\n $scope.selectedTheme = theme;\n saveSettings();\n }\n\n // Background\n var backgroundImageIndex = null;\n $scope.customBackgroundUrl = \"https://\";\n $scope.customBackgrounds = [];\n $scope.backgrounds = layoutService.getBackgrounds()\n\n $scope.selectBackground = function (background) {\n $scope.setBackgroundUrl(background.url);\n }\n $scope.addCustomBackgroundUrl = function (url) {\n $scope.customBackgrounds.push(url);\n $scope.backgroundImageUrl = url;\n setBackground(url);\n saveSettings();\n $scope.customBackgroundUrl = \"\";\n }\n $scope.removeCustomBackgroundUrl = function (url) {\n var index = $scope.customBackgrounds.indexOf(url);\n $scope.customBackgrounds.splice(index, 1);\n saveSettings();\n }\n $scope.setCustomBackgroundUrl = function (url) {\n $scope.backgroundImageUrl = url;\n setBackground(url);\n saveSettings();\n }\n $scope.setBackgroundUrl = function (url) {\n $scope.backgroundImageUrl = url;\n setBackground(url);\n saveSettings();\n }\n\n var setBackground = function (url) {\n removeBackground();\n var styleSheet = document.styleSheets[0];\n var backgroundStyle = \"position: fixed; top: 0, left: 0, width: 100vm; 100vh; image-orientation: from-image; background-repeat: no-repeat; background-position: left; background-size: contain; z-index: 0;\";\n backgroundImageIndex = styleSheet.insertRule(\"#page-wrapper:before { background-image: url(\" + url + \"); \" + backgroundStyle + \"}\", styleSheet.cssRules.length);\n }\n var removeBackgroundPosition = function () {\n if (backgroundPostitionIndex) {\n document.styleSheets[0].deleteRule(backgroundPostitionIndex);\n backgroundPostitionIndex = null;\n }\n }\n var removeBackground = function () {\n if (backgroundImageIndex) {\n document.styleSheets[0].deleteRule(backgroundImageIndex);\n backgroundImageIndex = null;\n }\n }\n /////////////////////////////\n // End theme and Layout\n /////////////////////////////\n\n function saveSettings() { // settings\n if (!$scope.currentDashboard) return;\n var settings = {\n theme: $scope.selectedTheme.type,\n zoom: $scope.zoom,\n showZoom: $scope.showZoom,\n background: {\n url: $scope.backgroundImageUrl,\n opacity: $scope.opacity\n },\n customBackgrounds: $scope.customBackgrounds,\n layoutMode: $scope.layoutMode,\n }\n\n $scope.currentDashboard.settings = JSON.stringify(settings);\n dashboardService.updateSettings($scope.currentDashboard.id, $scope.currentDashboard.settings).then(function (saved) {\n });\n }\n $scope.saveSettings = saveSettings\n\n \n\n $scope.isAdmin = authService.hasRole(\"Admin\")\n $scope.isBoardDesigner = authService.hasRole(\"BoardDesigner\")\n $scope.subscribe('UserAuthenticatedAndReady', function (profile) {\n $scope.isAdmin = authService.hasRole(\"Admin\")\n $scope.isBoardDesigner = authService.hasRole(\"BoardDesigner\")\n })\n\n customerService.getCurrent().then(function (customer) {\n $scope.logoUrl = customer.logoUrl;\n });\n\n $scope.updateTitle = function () {\n dashboardService.updateTitle($scope.currentDashboard.id, $scope.currentDashboard.title)\n };\n\n $scope.addToFavorites = function (currentboard) {\n currentboard.isStar = true;\n var board = {\n id: currentboard.id,\n name: currentboard.title,\n boardType: \"Dashboard\"\n };\n $scope.quickAccess.push(board);\n saveQuickAccess();\n }\n $scope.removeFromFavorites = function (currentboard) {\n currentboard.isStar = false\n var isFavorite = $scope.quickAccess.find(q => q.id == currentboard.id)\n if (isFavorite) {\n const currentIndex = $scope.quickAccess.indexOf(isFavorite)\n $scope.quickAccess.splice(currentIndex, 1)\n saveQuickAccess()\n }\n }\n function saveQuickAccess() {\n employeeService.updateUserPreference(\"FlexiboardFavoriteBoards\", $scope.quickAccess).then(function (settings) {\n $scope.publish(\"FlexiboardFavoriteBoardsChanged\", $scope.quickAccess);\n });\n }\n\n $scope.hasUpdatedLayout = false;\n $scope.refreshDashboard = function () {\n $scope.hasUpdatedLayout = false;\n getDashboard();\n }\n\n $scope.subscribe('DashboardUpdated', function (dashboard) {\n if ($scope.currentDashboard.id === dashboard.id) {\n $scope.hasUpdatedLayout = true;\n }\n });\n $scope.subscribe(\"DashboardSettingsUpdated\", (dashboardSettings) => {\n if ($scope.currentDashboard.id != dashboardSettings.dashboardId)\n return\n\n if (dashboardSettings.settings && typeof dashboardSettings.settings == \"string\") {\n const updatedSettings = JSON.parse(dashboardSettings.settings)\n if (updatedSettings.layoutMode.option !== $scope.layoutMode.option)\n $scope.hasUpdatedLayout = true\n }\n })\n\n $scope.subscribe('DashboardPageAdded', function (page) {\n if ($scope.currentDashboard.id === page.dashboardId) {\n $scope.currentDashboard.pages.push(page);\n toaster.success(translateLabelInstant(\"ADMIN_LEARNING_ADD_PAGE\"));\n $scope.currentPage = page;\n loadDashboard($scope.currentDashboard, $scope.currentPage);\n $scope.$apply();\n }\n });\n $scope.subscribe('DashboardPageDeleted', function (page) {\n if ($scope.currentDashboard.id === page.dashboardId) {\n const filtered = $scope.currentDashboard.pages.filter(p => p.id !== page.id);\n $scope.currentDashboard.pages = filtered;\n toaster.success(translateLabelInstant(\"COMMON_DELETED\"));\n loadDashboard($scope.currentDashboard, $scope.currentPage);\n $scope.$apply();\n }\n });\n /* DashboardWidgetAdded should only be sent to others, gridstack adds directly */\n /* We changed the logic to send to self as well, since one user can have two windows\n So we delay the event since the event more often comes before the response from backend\n */\n $scope.subscribe('DashboardWidgetAdded', function (widget) {\n if ($scope.currentPage.id === widget.dashboardPageId) {\n $scope.hasUpdatedLayout = true;\n }\n else {\n const page = $scope.currentDashboard.pages.find(p => p.id === widget.dashboardPageId);\n if (page)\n page.widgets.push(widget);\n }\n })\n /* TODO: Check if this is relevant in gridstack, who should handle this? */\n $scope.subscribe('DashboardWidgetRemoved', function (widget) {\n if ($scope.currentPage.id === widget.dashboardPageId) {\n $scope.hasUpdatedLayout = true;\n }\n else {\n let pageToRemoveFrom = $scope.currentDashboard.pages.find(p => p.id === widget.dashboardPageId);\n if (pageToRemoveFrom) {\n const filtered = pageToRemoveFrom.widgets.filter(w => w.id !== widget.id);\n pageToRemoveFrom.widgets = filtered;\n }\n }\n })\n // this event fires for all inluding current user\n $scope.subscribe(\"DashboardWidgetSettingsChanged\", (componentSettings) => {\n $scope.currentDashboard.pages.forEach((page) => {\n if (!page.widgets || !Array.isArray(page.widgets) || page.widgets.length == 0)\n return\n\n const widget = page.widgets.find(w => w.id == componentSettings.id)\n if (!widget)\n return\n\n if ($scope.currentPage.id === widget.dashboardPageId) {\n pageService.updateWidgetSettings(componentSettings)\n }\n else\n widget.settings = JSON.parse(componentSettings.settings)\n })\n })\n\n /* New event for updated widgets (component, location or size) from others */\n $scope.subscribe(\"DashboardWidgetChanged\", (updatedWidget) => {\n if ($scope.currentPage.id === updatedWidget.dashboardPageId) {\n $scope.hasUpdatedLayout = true;\n // pageService.updateWidgetFromOtherUser(widget) // risk of being source of ping pong\n } else {\n // update widgets for other pages\n const page = $scope.currentDashboard.pages.find(p => p.id === updatedWidget.dashboardPageId)\n if (page) {\n const index = page.widgets.findIndex(w => w.id === updatedWidget.id)\n if (index < 0) return\n\n if (updatedWidget.settings && typeof updatedWidget.settings === \"string\")\n updatedWidget.settings = JSON.parse(updatedWidget.settings)\n else\n updatedWidget.settings = null\n page.widgets.splice(index, 1, updatedWidget)\n }\n }\n })\n\n $scope.subscribe(\"Midnight\", function(date) {\n console.log(\"Flexiboard:: Midnight::\", date)\n if (!$scope.isAdminMode && pageService)\n pageService.reload()\n })\n\n $scope.layoutMode = {\n option: \"default\",\n screenSize: \"medium\"\n }\n\n // default value\n function resetLayoutStatus() {\n $scope.layoutStatus = { isPossibleToChange: true }\n }\n resetLayoutStatus()\n $scope.resetLayoutStatus = resetLayoutStatus\n\n $scope.setLayoutOption = function (layoutOption) {\n resetLayoutStatus()\n if (layoutOption === \"landscape\") {\n if (!$scope.layoutMode.maxRows)\n $scope.layoutMode.maxRows = \"28\" //default\n $scope.layoutStatus = layoutService.isPossibleToConvertToLandscape($scope.currentDashboard, $scope.layoutMode.maxRows) // will show errors for pages with too much height\n if (!$scope.layoutStatus.isPossibleToChange) { // dont switch if not possible\n return\n }\n } else {\n // when setting default mode reset default maxRows. maxRows is only relevant for landscape mode \n $scope.layoutMode.maxRows = \"28\"\n }\n\n $scope.layoutMode.option = layoutOption\n $scope.layoutMode = structuredClone($scope.layoutMode)\n setLayoutMode()\n }\n\n function layoutChanged() {\n $scope.layoutMode = structuredClone($scope.layoutMode)\n setLayoutMode()\n }\n\n $scope.layoutScreenChanged = (screen) => {\n layoutChanged()\n }\n $scope.layoutRatioChanged = (maxRows) => {\n console.log(\"maxRows\", maxRows)\n // need to validate here\n $scope.layoutStatus = layoutService.isPossibleToConvertToLandscape($scope.currentDashboard, $scope.layoutMode.maxRows) // will show errors for pages with too much height\n if (!$scope.layoutStatus.isPossibleToChange) { // reset to the highest possible maxRows from our options\n $scope.layoutMode.maxRows = \"28\"\n return\n }\n console.log(\"layoutMode.maxRows\", $scope.layoutMode.maxRows)\n layoutChanged()\n }\n $scope.layoutFactor = 1\n\n function calcLayoutFactor() {\n console.log(\"calcLayoutFactor\")\n if ($scope.layoutMode.option == \"default\") { // no scaling\n $scope.layoutFactor = 1\n return\n }\n\n const currentSize = getGridViewSize()\n $scope.currentSize = currentSize // debug info\n if (!$scope.layoutMode.screenSize)\n $scope.layoutMode.screenSize = \"medium\" // default value\n\n if (!$scope.layoutMode.maxRows) {\n $scope.layoutMode.maxRows = \"28\" // default - string will cause the selector to select it as well, as long as we use weak comparison ==\n }\n\n const previousFactor = $scope.layoutFactor\n const factor = layoutService.calculateLayoutFactor($scope.layoutMode.screenSize, currentSize)\n $scope.layoutFactor = factor\n\n if (factor !== previousFactor && $scope.currentPage && $scope.currentPage.widgets && $scope.currentPage.widgets.length > 0) {\n console.log(\"factor changed, send widget-resized\")\n $scope.$broadcast(\"widget-resized\", { allwidgets: true })\n }\n }\n\n let gridViewElement\n function getGridViewSize() {\n let gridViewSize = {\n width: 0,\n height: 0\n }\n getGridViewElement()\n if (gridViewElement) {\n gridViewSize.width = gridViewElement.offsetWidth\n gridViewSize.height = gridViewElement.offsetHeight\n }\n return gridViewSize\n }\n\n function getGridViewElement() {\n gridViewElement = $element[0].querySelector(\"#dashboard-page\")\n }\n\n function setLayoutMode() {\n console.log(\"setLayoutMode\", $scope.layoutMode)\n calcLayoutFactor()\n saveSettingsDebounced()\n }\n\n $scope.isClosed = true;\n $scope.isAdminMode = false;\n $scope.isDebugMode = false;\n\n $scope.currentIndex = null;\n\n $scope.adminMode = function () {\n $scope.isAdminMode = true;\n $scope.isClosed = false;\n if ($scope.isInPresentationMode) {\n $scope.togglePresentationView();\n }\n\n // Adjust height of widgets\n addSortableOnPageList();\n };\n\n if ($stateParams.mode) {\n if ($stateParams.mode == \"info\") {\n setTimeout(function () {\n startPresentationView();\n }, 100);\n\n } else {\n stopPresentationView();\n if ($stateParams.mode == \"admin\") {\n $scope.adminMode();\n } else if ($stateParams.mode == \"debug\")\n $scope.isDebugMode = true\n }\n } else {\n stopPresentationView();\n }\n\n $scope.selectPage = function (page) {\n // Get state for previous curretnPage => from pageservice\n //\n // currentpage =\n page.widgets.forEach(function (widget) {\n if (widget.settings && typeof widget.settings === \"string\") {\n widget.settings = JSON.parse(widget.settings)\n }\n })\n $scope.currentPage = page\n pageService.setCurrentPage(page)\n };\n\n\n $scope.giveWidgetFocus = function (widget) {\n var index = $scope.currentPage.widgets.indexOf(widget);\n $scope.currentPage.widgets.splice(index, 1);\n $scope.currentPage.widgets.push(widget);\n };\n\n $scope.togglePresentationView = function () {\n $scope.isInPresentationMode = !$scope.isInPresentationMode;\n if ($scope.isInPresentationMode) {\n startPresentationView();\n } else {\n stopPresentationView();\n }\n };\n\n\n // Rotate page (auto rotate)\n var rotatePageTimer;\n var isRotatingPage = false;\n $scope.rotateIntervals = [\n {\n title: translateLabelInstant(\"DASHBOARD_AUTO_ROTATE\"),\n interval: 30000\n } \n ];\n\n $scope.startRotationInterval = function (interval) {\n $scope.selectedInterval = interval;\n if (isRotatingPage) {\n stopRotationOfPage(); \n }\n startPresentationView();\n startRotationOfPage();\n };\n\n function stopRotationOfPage() {\n if (rotatePageTimer) {\n clearInterval(rotatePageTimer);\n }\n isRotatingPage = false;\n }\n function startRotationOfPage() {\n setFocus();\n if ($scope.selectedInterval.interval == 0) return;\n rotatePageTimer = setInterval(function () {\n if (!$scope.presentationPaused) {\n var pages = $scope.currentDashboard.pages;\n $scope.currentIndex = pages.indexOf($scope.currentPage);\n $scope.currentIndex += 1;\n\n $scope.selectPage(pages[Math.abs($scope.currentIndex % pages.length)]);\n } ''\n }, $scope.selectedInterval.interval);\n isRotatingPage = true;\n }\n\n // Extra event to handle ESC button use of close full screen\n function fullscreenchanged(event) \n {\n // document.fullscreenElement will be null when leaving fullscreenMode\n // https://developer.mozilla.org/en-US/docs/Web/API/Element/fullscreenchange_event\n if (!document.fullscreenElement) {\n stopPresentationView();\n }\n }\n\n document.addEventListener(\"fullscreenchange\", fullscreenchanged, false);\n\n function startPresentationView() {\n $scope.isInPresentationMode = true;\n $(\"#page-wrapper\").css(\"margin-left\", 0);\n $(\"#page-navigation-menu\").hide();\n $(\"#page-topnavbar\").hide();\n $(\"#page-footer\").hide();\n displayService.showFullScreen();\n\n $scope.publish(\"PresentationViewStarted\");\n setFocus();\n }\n\n function stopPresentationView() {\n $scope.isInPresentationMode = false;\n stopRotationOfPage();\n $(\"#page-wrapper\").css(\"margin-left\", '');\n $(\"#page-navigation-menu\").show();\n $(\"#page-topnavbar\").show();\n $(\"#page-footer\").show();\n $scope.publish(\"PresentationViewStopped\");\n displayService.hideFullScreen();\n }\n\n function setFocus() {\n //Set focus on dashboard\n var dashboard = document.querySelector(\"#flexiboard\");\n dashboard.focus();\n }\n\n $scope.next = function () {\n var numberOfPages = $scope.currentDashboard.pages.length;\n $scope.currentIndex++;\n\n $scope.selectPage($scope.currentDashboard.pages[$scope.currentIndex % numberOfPages]);\n };\n\n $scope.previous = function () {\n var numberOfPages = $scope.currentDashboard.pages.length;\n $scope.currentIndex = $scope.currentIndex > 0 ? $scope.currentIndex - 1 : 0;\n $scope.selectPage($scope.currentDashboard.pages[$scope.currentIndex % numberOfPages]);\n };\n\n $scope.copyFlexiboard = function () {\n var options = {\n dashboardAsTemplateId: $scope.id,\n assetId: null,\n operation: \"copy\"\n };\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'newFlexiboardConfiguration.html',\n controller: 'newFlexiboardConfigurationController',\n resolve: {\n options: function () {\n return options\n }\n }\n });\n modalInstance.result.then(function (result) {\n $state.go('flexiboard', { id: result.id }, { reload: false });\n $scope.publish(\"SendDashboardCreated\", result);\n });\n };\n\n $scope.saveAsTemplate = function () {\n // Test\n var options = {\n id: $scope.currentDashboard.id,\n title: $scope.currentDashboard.title,\n description: $scope.currentDashboard.description,\n operation: \"template\"\n };\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'newFlexiboardTemplate.html',\n controller: 'newFlexiboardTemplateController',\n resolve: {\n options: function () {\n return options\n }\n }\n });\n };\n\n $scope.delete = function () {\n\n const modalOptions = {\n closeButtonText: translateLabelInstant(\"COMMON_CANCEL\"),\n actionButtonText: translateLabelInstant(\"ADMIN_DELETED_BOARD\"),\n headerText: translateLabelInstant(\"COMMON_DELETE\") + ' ' + $scope.currentDashboard.title + '?',\n bodyText: translateLabelInstant(\"ADMIN_DELETED_BOARD_DESCRIPTION\")\n };\n\n modalService.showModal({}, modalOptions).then(function (result) {\n dashboardService.deleteDashboard($scope.currentDashboard.id).then(function (data) {\n toaster.info(translateLabelInstant(\"ADMIN_MESSAGE_BOARD_DELETED\"));\n $state.go('flexiboards');\n });\n });\n }\n\n function loadDashboard(dashboard, preferredPage) {\n //$scope.currentDashboard = null;\n $scope.currentPage = null;\n // Parse settings on dashboard\n if (dashboard.settings && typeof dashboard.settings === \"string\") {\n dashboard.settings = JSON.parse(dashboard.settings);\n\n if (dashboard.settings.zoom) {\n $scope.zoom = dashboard.settings.zoom;\n }\n if (dashboard.settings.showZoom != undefined) {\n $scope.showZoom = dashboard.settings.showZoom;\n }\n // set theme\n if (dashboard.settings.theme) {\n // Select theme\n var selectedTheme = $scope.themes.find(t => t.type == dashboard.settings.theme)\n if (selectedTheme)\n $scope.selectedTheme = selectedTheme\n\n if (dashboard.settings.background) {\n $scope.backgroundImageUrl = dashboard.settings.background.url;\n setBackground($scope.backgroundImageUrl);\n $scope.opacity = dashboard.settings.background.opacity;\n setOpacity($scope.opacity);\n }\n if (dashboard.settings.customBackgrounds) {\n $scope.customBackgrounds = dashboard.settings.customBackgrounds;\n }\n }\n\n if (dashboard.settings.layoutMode) {\n $scope.layoutMode = dashboard.settings.layoutMode\n calcLayoutFactor()\n }\n }\n if (!$scope.selectedTheme) {\n $scope.selectedTheme = $scope.themes[0];\n }\n\n // Parse settings on widget\n for (let i = 0; i < dashboard.pages.length; i++) {\n let page = dashboard.pages[i];\n for (let y = 0; y < page.widgets.length; y++) {\n let widget = page.widgets[y];\n if (widget.settings && typeof widget.settings === \"string\") {\n widget.settings = JSON.parse(widget.settings);\n } else {\n // try old settings\n if ($scope.currentDashboard && $scope.currentDashboard.pages) {\n const oldPage = $scope.currentDashboard.pages[i];\n if (oldPage && oldPage.widgets) {\n const oldWidget = oldPage.widgets[y];\n if (oldWidget) {\n widget.settings = oldWidget.settings;\n continue;\n }\n }\n }\n widget.settings = null;\n }\n }\n if (page.settings && typeof page.settings === \"string\") {\n page.settings = JSON.parse(page.settings);\n }\n }\n $scope.currentDashboard = dashboard\n if (preferredPage) {\n const currentPage = $scope.currentDashboard.pages.find(p => p.id === preferredPage.id);\n if (currentPage) {\n $scope.currentPage = currentPage\n } else {\n $scope.currentPage = $scope.currentDashboard.pages[0]\n }\n } else {\n $scope.currentPage = $scope.currentDashboard.pages[0]\n }\n if (pageService)\n pageService.setCurrentPage($scope.currentPage)\n }\n\n function checkFavorite() {\n employeeService.getUserPreference(\"FlexiboardFavoriteBoards\").then(function (settings) {\n if (settings && settings.value) {\n angular.forEach(settings.value, function (board) {\n if (board) {\n if (board.id == $scope.id) {\n $scope.currentDashboard.isStar = true;\n }\n $scope.quickAccess.push(board);\n }\n });\n }\n });\n }\n\n $scope.save = function () {\n $scope.commitChangesDebounced(); // Make sure we throttle, since so many events can call save.\n };\n\n var commitChanges = function () {\n if ($scope.currentDashboard.settings && typeof $scope.currentDashboard.settings !== \"string\") {\n $scope.currentDashboard.settings = JSON.stringify($scope.currentDashboard.settings);\n }\n $scope.currentDashboard.pages.forEach(function (page) {\n if (page.settings && typeof page.settings !== \"string\") {\n page.settings = JSON.stringify(page.settings);\n }\n page.widgets.forEach(function (widget) {\n if (widget.settings && typeof widget.settings !== \"string\") {\n widget.settings = JSON.stringify(widget.settings);\n }\n });\n });\n dashboardService.saveDashboard($scope.currentDashboard).then(function (savedDashboard) {\n if ($scope.currentDashboard.settings && typeof $scope.currentDashboard.settings == \"string\") {\n $scope.currentDashboard.settings = JSON.parse($scope.currentDashboard.settings);\n }\n $scope.currentDashboard.pages.forEach(function (page) {\n if (page.settings && typeof page.settings === \"string\") {\n page.settings = JSON.parse(page.settings);\n }\n });\n });\n return true;\n };\n // Debounce function so that save is not called too often.\n $scope.commitChangesDebounced = debounce(commitChanges, 2000, false);\n\n $scope.viewMode = function () {\n $scope.isAdminMode = false;\n $scope.isClosed = true;\n\n $(\"#pagelist\").sortable(\"disable\"); // Turn off sortable on pages\n\n dashboardService.generatePreview($scope.id)\n }\n\n $scope.edit = function (dashboard) {\n var options = {\n targetType: \"Dashboard\",\n targetId: $scope.id\n };\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'boardSettings.html',\n controller: 'boardSettingsController',\n resolve: {\n options: function () {\n return options;\n }\n }\n });\n modalInstance.result.then(function (dashboard) {\n $scope.currentDashboard.title = dashboard.title;\n }, function () {\n\n });\n\n };\n\n function addSortableOnPageList() {\n // add sortable\n setTimeout(function () {\n //\n // ^^^ this is required otherwise re-enabling sortable will not work!\n\n $(\"#pagelist\").sortable({\n disabled: false,\n update: pagesOrderChanged\n });\n $(\"#pagelist\").disableSelection();\n }, 500);\n }\n\n var pagesOrderChanged = function (ui, sender) {\n var pageList = $(\"#pagelist li\")\n angular.forEach(pageList, function (page, key) {\n var pageId = $(page).data(\"pageid\")\n if (pageId) {\n const currentPage = $scope.currentDashboard.pages.find(p => p.id == pageId)\n currentPage.sortOrder = key\n }\n })\n $scope.save()\n }\n\n $scope.addPage = function () {\n var page = {\n dashboardId: $scope.currentDashboard.id,\n title: translateLabelInstant(\"ADMIN_LEARNING_ADD_PAGE\"),\n widgets: []\n };\n dashboardService.addPage(page);\n };\n\n $scope.removePage = function (page) {\n\n if ($scope.currentDashboard.pages.length == 1) {\n swal({\n title: translateLabelInstant('BOARD_DELETE_PAGE_WARNING'),\n text: \"\",\n icon: \"info\",\n buttons: { showuserinfo: { text: translateLabelInstant('COMMON_CLOSE'), className: \"sa-digilean-button\" } },\n dangerMode: false,\n closeOnClickOutside: true,\n closeOnEsc: true\n })\n } else {\n const modalOptions = {\n closeButtonText: translateLabelInstant(\"COMMON_CANCEL\"),\n actionButtonText: translateLabelInstant(\"BOARD_DELETE_PAGE\"),\n headerText: translateLabelInstant(\"COMMON_DELETE\") + ' ' + page.title + '?',\n bodyText: translateLabelInstant(\"BOARD_DELETE_PAGE_DESC\")\n };\n\n modalService.showModal({}, modalOptions).then(function () {\n dashboardService.deletePage(page.id);\n })\n }\n }\n $scope.copyPage = function (page) {\n var options = {\n sourceId: $scope.currentDashboard.id,\n assetId: $scope.currentDashboard.assetId,\n };\n dashboardService.copyPage(page.id, options).then(function (newPage) {\n $scope.currentDashboard.pages.push(newPage);\n toaster.success(\"FLEXIBOARD_PAGE_COPIED\");\n $scope.selectPage(newPage);\n });\n }\n\n $scope.addAppToDashboard = function (app, appSize) {\n try {\n // Adjust size with layoutfactor\n const appCopy = structuredClone(app)\n appCopy.defaultXSize = layoutService.adjustAppSize($scope.layoutMode.screenSize, app.defaultXSize);\n appCopy.defaultYSize = layoutService.adjustAppSize($scope.layoutMode.screenSize, app.defaultYSize);\n if(appCopy.defaultYSize > $scope.layoutMode.maxRows) {\n appCopy.defaultYSize = parseInt($scope.layoutMode.maxRows)\n }\n pageService.addApp(appCopy)\n }\n catch (err) {\n const errTranslated = translateLabelInstant(err.message)\n toaster.error(errTranslated)\n }\n }\n\n $scope.tryFixLayout = async function () {\n if (!$scope.currentPage || !$scope.currentPage.widgets || $scope.currentPage.widgets.length === 0)\n return\n\n const fixedWidgets = await dashboardService.tryFixLayout($scope.id, $scope.currentPage.id)\n if (fixedWidgets && fixedWidgets.length > 0) {\n fixedWidgets.forEach((widget) => {\n const existing = $scope.currentPage.widgets.find(w => w.uId == widget.uId)\n if (existing) {\n existing.row = widget.row\n existing.col = widget.col\n }\n })\n if (pageService)\n pageService.refreshGridFromPageState()\n }\n\n }\n $scope.addApp = function () {\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'appstore.html',\n controller: 'appstoreController',\n });\n\n modalInstance.result.then(function (app) {\n $scope.addAppToDashboard(app);\n });\n };\n\n }]);\n","import * as staticFileService from \"@common/shared/staticFileService\"\n\nangular\n .module('DigiLean')\n .directive(\"weeklyBoardCard\", \n function () {\n return {\n templateUrl: 'weeklyBoardCard.html',\n restrict: 'E',\n scope: {\n \"board\": \"<\",\n },\n link: function (scope, elem, attrs) {\n scope.model = null;\n scope.isLoading = true;\n scope.$watch('board', function (board) {\n if (!board) return;\n \n scope.isLoading = false;\n if (board.boardType == \"Kanban\") {\n scope.previewUrl = staticFileService.previewImage(\"kanbanBoard.jpg\");\n }\n else {\n scope.previewUrl = staticFileService.previewImage(\"weeklyboard.jpg\");\n }\n \n\n });\n }\n }\n });\n","import * as staticFileService from \"@common/shared/staticFileService\"\n\nangular\n .module('DigiLean')\n .directive(\"yearlyBoardCard\", \n function () {\n return {\n templateUrl: 'yearlyBoardCard.html',\n restrict: 'E',\n scope: {\n \"board\" : \"<\",\n },\n link: function (scope, elem, attrs) {\n scope.isLoading = true;\n scope.$watch('board', function (board) {\n if (!board) return;\n scope.isLoading = false;\n });\n\n scope.url = staticFileService.image(\"timeboard.jpg\");\n\n\n }\n };\n });\n","import envConfig from \"@common/envConfig\";\n\nangular\n .module('DigiLean')\n .directive(\"dashboardCard\", ['$filter', 'authService',\n function ($filter, authService) {\n return {\n templateUrl: 'dashboardCard.html',\n restrict: 'E',\n scope: {\n \"board\" : \"<\",\n },\n link: function (scope, elem, attrs) {\n scope.model = null;\n scope.isLoading = true;\n \n scope.$watch('board', function (board) {\n if (!board) return;\n var customerId = board.customerId;\n if (!customerId || customerId == 0) {\n customerId = authService.getCurrentUser().customerId;\n }\n scope.subscribe(\"UserAuthenticatedAndReady\", function (profile) {\n customerId = authService.getCurrentUser().customerId;\n });\n\n var fileName = \"dashboard_\" + customerId + \"_\" + board.id + \".jpg\"; \n scope.previewUrl = envConfig.fileStoreUrl + \"/preview-images/\" + fileName;\n scope.isLoading = false;\n });\n }\n }\n }]);\n","import * as staticFileService from \"@common/shared/staticFileService\"\n\nangular\n .module('DigiLean')\n .directive(\"smartActionlistCard\", ['$translate',\n function ($translate) {\n return {\n templateUrl: 'smartActionlistCard.html',\n restrict: 'E',\n scope: {\n \"board\" : \"<\",\n },\n link: function (scope, elem, attrs) {\n scope.model = null;\n scope.isLoading = true;\n scope.previewUrl = staticFileService.image(\"smartActionlistCard.jpg\");\n scope.$watch('board', function (board) {\n if (!board) return;\n if (!board.name) {\n board.name = $translate.instant(\"BOARD_SMARTACTIONLIST\");\n }\n });\n }\n };\n }]);\n","import * as staticFileService from \"@common/shared/staticFileService\"\n\nangular\n .module('DigiLean')\n .directive(\"personalKanbanCard\", \n function () {\n return {\n templateUrl: 'personalKanbanCard.html',\n restrict: 'E',\n scope: {\n },\n link: function (scope, elem, attrs) {\n \n scope.url = staticFileService.image(\"personalkanban.jpg\");\n\n }\n };\n });\n","import * as staticFileService from \"@common/shared/staticFileService\"\n\nangular\n .module('DigiLean')\n .directive(\"performanceBoardCard\", \n function () {\n return {\n templateUrl: 'performanceBoardCard.html',\n restrict: 'E',\n scope: {\n \"board\" : \"<\",\n },\n link: function (scope, elem, attrs) {\n scope.previewUrl = staticFileService.image(\"performanceboard-card.jpg\");\n \n // scope.$watch('board', function (board) {\n // if (!board) return;\n // if (!board.name) {\n // board.name = $translate.instant(\"BOARD_SMARTACTIONLIST\");\n // }\n // });\n }\n };\n });\n","import * as staticFileService from \"@common/shared/staticFileService\"\n\nangular\n .module('DigiLean')\n .directive(\"taskSearchCard\", \n function () {\n return {\n templateUrl: 'taskSearchCard.html',\n restrict: 'E',\n scope: {\n },\n link: function (scope, elem, attrs) {\n scope.url = staticFileService.image(\"tasksearch.jpg\");\n }\n };\n });\n","import * as staticFileService from \"@common/shared/staticFileService\"\n\nangular\n .module('DigiLean')\n .directive(\"mySpaceCard\", \n function () {\n return {\n templateUrl: 'mySpaceCard.html',\n restrict: 'E',\n scope: {\n },\n link: function (scope, elem, attrs) {\n \n scope.url = staticFileService.image(\"myspace.jpg\");\n\n }\n };\n });\n","import * as staticFileService from \"@common/shared/staticFileService\"\n\nangular\n .module('DigiLean')\n .directive(\"teamSpaceCard\", \n function () {\n return {\n templateUrl: 'teamSpaceCard.html',\n restrict: 'E',\n scope: {\n },\n link: function (scope, elem, attrs) {\n \n scope.url = staticFileService.image(\"teamspace.jpg\");\n\n }\n }\n });\n","import * as staticFileService from \"@common/shared/staticFileService\"\n\nangular\n.module('DigiLean')\n .directive(\"customerKSCard\", \n function () {\n return {\n templateUrl: 'customerKSCard.html',\n restrict: 'E',\n scope: {\n },\n link: function (scope, elem, attrs) {\n \n scope.url = staticFileService.image(\"customerKS.jpg\");\n\n }\n };\n });\n","import * as dashboardService from \"@common/services/dashboardService\"\nimport * as staticFileService from \"@common/shared/staticFileService\"\nimport * as boardService from \"@common/services/boardService\"\nimport toaster from \"@common/components/toast\"\n\nvar DigiLean = angular.module('DigiLean'); DigiLean.controller('newFlexiboardController', ['$scope', '$state', '$stateParams', '$translate', '$uibModal', 'navigationService', 'authService', 'deviationService','modalService',\n function ($scope, $state, $stateParams, $translate, $uibModal, navigationService, authService, deviationService, modalService) {\n\n $scope.static = staticFileService;\n $scope.selectedTemplate = null;\n $scope.templates = [];\n $scope.isAdmin = authService.hasRole(\"Admin\");\n $scope.isBoardDesigner = authService.hasRole(\"BoardDesigner\");\n var assetId = parseInt($stateParams.assetid); //default 0\n var strategyGoalId = parseInt($stateParams.strategygoalid); //default 0\n $scope.source = $stateParams.source;\n \n function changeTemplate(template) {\n\n $scope.selectedTemplate = template;\n }\n\n $scope.smartActionListTemplate = createSmartActionListTemplate();\n $scope.weeklyBoardTemplate = createWeeklyBoardTemplate();\n $scope.yearlyBoardTemplate = createYearlyTemplate();\n $scope.kanbanBoardTemplate = createKanbanBoardTemplate();\n $scope.emptyBoardTemplate = createEmptyTemplate();\n $scope.eightWasteTemplate = {\n boardType: \"EightWasters\"\n };\n $scope.performanceBoardTemplate = {\n boardType: \"Performance\"\n };\n\n // Used for performanceboard\n deviationService().getAllDeviationTypes().then(function(deviationTypes) {\n $scope.deviationTypes = _.sortBy(deviationTypes, 'id');\n });\n\n if ($scope.isAdmin) {\n changeTemplate($scope.emptyBoardTemplate);\n } else {\n changeTemplate($scope.weeklyBoardTemplate);\n }\n\n var loadtemplates = function () {\n $scope.isLoading = true;\n $scope.templates = [];\n boardService.getTemplates().then(function (templates) {\n templates.forEach((t) => {\n if(t.boardType == 'Dashboard'){\n if($scope.isAdmin || $scope.isBoardDesigner){\n $scope.templates.push(t);\n }\n } else {\n $scope.templates.push(t);\n }\n });\n $scope.isLoading = false;\n });\n\n }\n loadtemplates();\n\n\n $scope.selectedTemplateChanged = function (template) {\n changeTemplate(template);\n }\n $scope.selectedEightWastersTemplate = function () {\n $scope.selectedTemplate = $scope.eightWasteTemplate;\n }\n\n $scope.selectedPerformanceBoardTemplate = function () {\n $scope.selectedTemplate = $scope.performanceBoardTemplate;\n }\n\n $scope.message = \"\";\n\n function associateWithStrategyGoal(boardId) {\n if (strategyGoalId && strategyGoalId > 0 && boardId) {\n boardService.addStrategyGoalToBoard(boardId, strategyGoalId).then(function (saved) {\n });\n }\n }\n\n function associateDashboardWithStrategyGoal(id) {\n if (strategyGoalId && strategyGoalId > 0 && id) {\n dashboardService.addStrategyGoalToDashboard(id, strategyGoalId).then(function (saved) {\n });\n }\n }\n\n function createSmartActionListTemplate() {\n return {\n boardType: \"SmartActionList\",\n name: $translate.instant(\"BOARD_SMARTACTIONLIST\"),\n description: $translate.instant(\"BOARD_SMARTACTIONLIST_DESCRIPTION\"),\n }\n }\n\n function createTaskBoard() {\n var template = $scope.selectedTemplate;\n var templateId = null;\n var operation = \"newTaskBoard\"\n if (template.id) {\n operation = \"newTaskBoardFromTemplate\"\n templateId = template.id;\n }\n var savetemplate = {\n templateId: templateId,\n board: {\n name: template.name,\n boardType: template.boardType,\n settings: template.settings\n },\n columns: [],\n rows: []\n };\n // set attributes\n if (template.attributes) savetemplate.attributes = template.attributes;\n // Parse columns\n angular.forEach(template.columns, function (col) {\n savetemplate.columns.push(\n {\n name: col.name,\n weekdayName: col.weekdayName,\n sortOrder: col.sortOrder,\n categoryStyle: JSON.stringify(col.categoryStyle)\n });\n });\n angular.forEach(template.rows, function (row) {\n savetemplate.rows.push(\n {\n name: row.name,\n sortOrder: row.sortOrder,\n categoryStyle: JSON.stringify(row.categoryStyle),\n weekdayName: row.weekdayName\n });\n });\n \n var options = {\n dashboardAsTemplateId: null,\n assetId: assetId,\n operation: operation,\n template: savetemplate,\n }\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'newFlexiboardConfiguration.html',\n controller: 'newFlexiboardConfigurationController',\n resolve: {\n options: function () {\n return options;\n }\n }\n });\n modalInstance.result.then(function (result) {\n if (operation == \"newTaskBoard\") {\n associateWithStrategyGoal(result.board.id);\n $scope.publish(\"SendBoardCreated\", result);\n $state.go('boarddesigner', { id: result.board.id, mode: \"admin\" });\n } else {\n associateWithStrategyGoal(result.id);\n $scope.publish(\"SendBoardCreated\", result);\n $state.go('boarddesigner', { id: result.id, mode: \"admin\" });\n }\n\n });\n }\n\n function getDeviationTypeId(index) {\n if (!$scope.deviationTypes || $scope.deviationTypes.length == 0) return 0;\n if ($scope.deviationTypes.length > index) {\n return $scope.deviationTypes[index].id;\n } else {\n return $scope.deviationTypes[0].id;\n }\n }\n function createPerformanceBoard() {\n if(navigationService().hasModule(\"DEVIATION\")){\n var template = $scope.selectedTemplate;\n var savetemplate = {\n board: {\n name: \"Performance Board\",\n assetId: null,\n boardType: template.boardType,\n settings: template.settings\n },\n columns: [],\n rows: []\n \n };\n savetemplate.columns.push(\n {\n name: \"Safety\",\n sortOrder: 0,\n categoryStyle: JSON.stringify({ // settings for column\n deviationTypeId: getDeviationTypeId(0),\n apps: [\n {\n type: \"greencross\",\n },\n {\n type: \"pareto\",\n },\n {\n type: \"deviationActionListResult\",\n },\n ]\n })\n }\n );\n savetemplate.columns.push(\n {\n name: \"Quality\",\n sortOrder: 1,\n categoryStyle: JSON.stringify({ // settings for column\n deviationTypeId: getDeviationTypeId(1),\n apps: [\n {\n type: \"Q\",\n },\n {\n type: \"pareto\",\n },\n {\n type: \"deviationActionListResult\",\n },\n ]\n })\n }\n );\n savetemplate.columns.push(\n {\n name: \"Cost\",\n sortOrder: 2,\n categoryStyle: JSON.stringify({ // settings for column\n deviationTypeId: getDeviationTypeId(2),\n apps: [\n {\n type: \"C\",\n },\n {\n type: \"pareto\",\n },\n {\n type: \"deviationActionListResult\",\n },\n ]\n })\n }\n );\n savetemplate.columns.push(\n {\n name: \"Delivery\",\n sortOrder: 3,\n categoryStyle: JSON.stringify({ // settings for column\n deviationTypeId: getDeviationTypeId(3),\n apps: [\n {\n type: \"D\",\n },\n {\n type: \"pareto\",\n },\n {\n type: \"deviationActionListResult\",\n },\n ]\n })\n }\n );\n savetemplate.columns.push(\n {\n name: \"People\",\n sortOrder: 4,\n categoryStyle: JSON.stringify({ // settings for column\n deviationTypeId: getDeviationTypeId(4),\n apps: [\n {\n type: \"P\",\n },\n {\n type: \"pareto\",\n },\n {\n type: \"deviationActionListResult\",\n },\n ]\n })\n }\n );\n var options = {\n dashboardAsTemplateId: null,\n assetId: assetId,\n operation: \"newPerformanceBoard\",\n template: savetemplate,\n includeCustomGroup: false,\n includeProject: false\n }\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'newFlexiboardConfiguration.html',\n controller: 'newFlexiboardConfigurationController',\n resolve: {\n options: function () {\n return options;\n }\n }\n });\n modalInstance.result.then(function (result) {\n $state.go('board', { id: result.board.id, mode: 'admin' }, { reload: false });\n });\n } else {\n swal({\n title: \"\",\n text: $translate.instant('BOARD_ACTIVATE_DEVIATION_MODULE'),\n icon: \"warning\",\n buttons: { ok: { text: $translate.instant('COMMON_OK'), className: \"sa-digilean-button\" } },\n dangerMode: true,\n closeOnClickOutside: true,\n closeOnEsc: true\n })\n }\n \n \n }\n\n function createYearlyBoard() {\n var template = $scope.selectedTemplate;\n var templateId = null;\n var operation = \"newTaskBoard\"\n if (template.id) {\n operation = \"newTaskBoardFromTemplate\"\n templateId = template.id;\n }\n var savetemplate = {\n templateId: templateId,\n board: {\n name: template.name,\n boardType: template.boardType,\n settings: template.settings\n },\n columns: [],\n rows: []\n };\n // set attributes\n if (template.attributes) savetemplate.attributes = template.attributes;\n\n angular.forEach(template.rows, function (row) {\n savetemplate.rows.push(\n {\n name: row.name,\n sortOrder: row.sortOrder,\n categoryStyle: JSON.stringify(row.categoryStyle),\n weekdayName: row.weekdayName\n });\n });\n var options = {\n dashboardAsTemplateId: null,\n assetId: assetId,\n operation: operation,\n template: savetemplate,\n }\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'newFlexiboardConfiguration.html',\n controller: 'newFlexiboardConfigurationController',\n resolve: {\n options: function () {\n return options;\n }\n }\n });\n modalInstance.result.then(function (result) {\n if (operation == \"newTaskBoard\") {\n associateWithStrategyGoal(result.board.id);\n $scope.publish(\"SendBoardCreated\", result);\n $state.go('boarddesigner', { id: result.board.id, mode: \"admin\"});\n } else {\n associateWithStrategyGoal(result.id);\n $scope.publish(\"SendBoardCreated\", result);\n $state.go('boarddesigner', { id: result.id, mode: \"admin\" });\n }\n });\n }\n\n\n \n $scope.deleteTemplate = function (template) {\n\n var modalOptions = {\n closeButtonText: $translate.instant(\"COMMON_CANCEL\"),\n actionButtonText: $translate.instant(\"COMMON_DELETE\"),\n headerText: $translate.instant(\"COMMON_DELETE\") + ' ' + template.name + '?',\n bodyText: $translate.instant(\"ADMIN_DELETED_BOARD_TEMPLATE_DESCRIPTION\")\n };\n\n modalService.showModal({}, modalOptions).then(function (result) {\n if (template.boardType == \"Dashboard\") {\n dashboardService.deleteTemplate(template.id).then(function () {\n $translate('ADMIN_MESSAGE_TEMPLATE_DELETED').then(function (msg) {\n toaster.success(msg);\n });\n $scope.selectedTemplate = null;\n loadtemplates();\n //$scope.publish(\"SendBoardDeleted\", board.id);\n });\n } else {\n boardService.deleteTemplate(template.id).then(function () {\n $translate('ADMIN_MESSAGE_TEMPLATE_DELETED').then(function (msg) {\n toaster.success(msg);\n });\n $scope.selectedTemplate = null;\n loadtemplates();\n //$scope.publish(\"SendBoardDeleted\", board.id);\n });\n }\n\n });\n };\n\n\n\n $scope.ok = function () {\n\n switch ($scope.selectedTemplate.boardType) {\n case \"Dashboard\":\n if ($scope.selectedTemplate.id) {\n createFlexiboard($scope.selectedTemplate.id, \"createFromTemplate\");\n }\n break;\n case \"SmartActionList\":\n if ($scope.selectedTemplate.id) {\n createSmartActionListFromTemplate($scope.selectedTemplate.id);\n } else {\n createSmartActionList(null);\n }\n\n break;\n case \"EmptyFlexiboard\":\n createFlexiboard(null);\n break;\n case \"Yearly\":\n createYearlyBoard();\n break;\n case \"EightWasters\":\n createFlexiboard(222);\n break;\n case \"Performance\":\n createPerformanceBoard();\n break;\n default:\n createTaskBoard();\n break;\n }\n\n }\n\n function createSmartActionListFromTemplate(templateId) {\n\n var options = {\n dashboardAsTemplateId: null,\n templateId: templateId,\n assetId: null,\n operation: \"newSmartActionListFromTemplate\",\n template: null,\n }\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'newFlexiboardConfiguration.html',\n controller: 'newFlexiboardConfigurationController',\n resolve: {\n options: function () {\n return options;\n }\n }\n });\n modalInstance.result.then(function (result) {\n associateWithStrategyGoal(result.board.id);\n $state.go('board', { id: result.board.id, mode: 'admin' }, { reload: false });\n });\n }\n\n function createSmartActionList() {\n var savetemplate = {\n board: {\n name: $translate.instant('DASHBOARD_SMARTACTIONLIST'),\n assetId: null,\n boardType: \"SmartActionList\",\n settings: JSON.stringify({\n IsWeeklyBoard: false\n })\n },\n columns: [\n {\n name: $translate.instant(\"COMMON_TITLE\"),\n sortOrder: 0,\n attributeType: \"title\"\n },\n {\n name: $translate.instant(\"COMMON_RESPONSIBLE\"),\n sortOrder: 1,\n attributeType: \"responsible\"\n },\n {\n name: $translate.instant(\"COMMON_SUBTASKS\"),\n sortOrder: 2,\n attributeType: \"subtasks\"\n },\n {\n name: $translate.instant(\"COMMON_DUE_DATE\"),\n sortOrder: 3,\n attributeType: \"duedate\"\n },\n {\n name: $translate.instant(\"COMMON_STATUS\"),\n sortOrder: 4,\n attributeType: \"status\"\n },\n {\n name: $translate.instant(\"IMPROVEMENT_PRIORITY\"),\n sortOrder: 5,\n attributeType: \"text\",\n settings: JSON.stringify({\n usePredefinedLabels: true,\n predefinedLabels: [\n { title: \"default\", fillColor: \"#ffffff\", background: \"#f1f1f1\", color: \"#f1f1f1\" },\n { title: $translate.instant(\"COMMON_HIGH\"), fillColor: \"#FEE4DF\", background: \"#E9573F\", color: \"#ffffff\" },\n { title: $translate.instant(\"COMMON_MEDIUM\"), fillColor: \"#FFF6DF\", background: \"#FCBB42\", color: \"#ffffff\" },\n { title: $translate.instant(\"COMMON_LOW\"), fillColor: \"#DFF3FB\", background: \"#3BAFDA\", color: \"#ffffff\" }\n ]\n })\n }],\n\n tasks: [\n {\n sortOrder: 0,\n title: $translate.instant(\"BOARD_EXAMPLE_TASK_1\")\n },\n {\n sortOrder: 1,\n title: $translate.instant(\"BOARD_EXAMPLE_TASK_2\")\n }\n ],\n cells: [\n ]\n };\n\n var options = {\n dashboardAsTemplateId: null,\n assetId: assetId,\n operation: \"newSmartActionList\",\n template: savetemplate,\n }\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'newFlexiboardConfiguration.html',\n controller: 'newFlexiboardConfigurationController',\n resolve: {\n options: function () {\n return options;\n }\n }\n });\n modalInstance.result.then(function (result) {\n associateWithStrategyGoal(result.board.id);\n $state.go('board', { id: result.board.id, mode: 'admin' }, { reload: false });\n });\n }\n // 222\n function createFlexiboard(templateId, operation) {\n var options = {\n assetId: assetId,\n operation: \"newFlexiboard\"\n }\n if (templateId) {\n options = {\n dashboardAsTemplateId: templateId,\n assetId: assetId,\n operation: operation,\n includeCustomGroup: false,\n includeProject: true\n }\n }\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'newFlexiboardConfiguration.html',\n controller: 'newFlexiboardConfigurationController',\n resolve: {\n options: function () {\n return options;\n }\n }\n });\n modalInstance.result.then(function (result) {\n associateDashboardWithStrategyGoal(result.id);\n $state.go('flexiboard', { id: result.id, mode: 'admin' }, { reload: false });\n $scope.publish(\"SendDashboardCreated\", result);\n });\n }\n\n\n function createEmptyTemplate() {\n var translations = {\n FLEXIBOARD_EMPTY_TEMPLATE_DESCRIPTION: $translate.instant(\"FLEXIBOARD_EMPTY_TEMPLATE_DESCRIPTION\"),\n FLEXIBOARD_EMPTY_TEMPLATE: $translate.instant(\"FLEXIBOARD_EMPTY_TEMPLATE\")\n }\n var template = {\n\n boardType: \"EmptyFlexiboard\",\n name: translations.FLEXIBOARD_EMPTY_TEMPLATE,\n description: translations.FLEXIBOARD_EMPTY_TEMPLATE_DESCRIPTION\n\n\n };\n return template;\n }\n\n function createYearlyTemplate() {\n var translations = {\n BOARD_YEARLY_BOARD: $translate.instant(\"BOARD_YEARLY_BOARD\"),\n BOARD_YEARLY_BOARD_DESCRIPTION: $translate.instant(\"BOARD_YEARLY_BOARD_DESCRIPTION\")\n }\n\n\n var template = {\n boardType: \"Yearly\",\n name: translations.BOARD_YEARLY_BOARD,\n description: translations.BOARD_YEARLY_BOARD_DESCRIPTION,\n settings: JSON.stringify({\n IsWeeklyBoard: false\n }),\n columns: [],\n rows: []\n }\n\n template.rows.push(\n {\n name: $translate.instant(\"COMMON_CATEGORY\") + \" A\",\n sortOrder: 0,\n categoryStyle: {\n backgroundColor: \"#f9f9f9\",\n foregroundColor: \"#676a6c\"\n }\n });\n template.rows.push(\n {\n name: $translate.instant(\"COMMON_CATEGORY\") + \" B\",\n sortOrder: 1,\n categoryStyle: {\n backgroundColor: \"#f9f9f9\",\n foregroundColor: \"#676a6c\"\n }\n });\n\n template.rows.push(\n {\n name: $translate.instant(\"COMMON_CATEGORY\") + \" C\",\n sortOrder: 2,\n categoryStyle: {\n backgroundColor: \"#f9f9f9\",\n foregroundColor: \"#676a6c\"\n }\n });\n return template;\n }\n\n function createWeeklyBoardTemplate() {\n var translations = {\n BOARD_WEEKLY_BOARD: $translate.instant(\"BOARD_WEEKLY_BOARD\"),\n BOARD_WEEKLY_BOARD_DESCRIPTION: $translate.instant(\"BOARD_WEEKLY_BOARD_DESCRIPTION\"),\n BOARD_NEW_BOARD: $translate.instant(\"BOARD_NEW_BOARD\"),\n COMMON_CATEGORY: $translate.instant(\"COMMON_CATEGORY\"),\n COMMON_MONDAY: $translate.instant(\"COMMON_MONDAY\"),\n COMMON_TUESDAY: $translate.instant(\"COMMON_TUESDAY\"),\n COMMON_WEDNESDAY: $translate.instant(\"COMMON_WEDNESDAY\"),\n COMMON_THURSDAY: $translate.instant(\"COMMON_THURSDAY\"),\n COMMON_FRIDAY: $translate.instant(\"COMMON_FRIDAY\"),\n }\n\n\n var template = {\n boardType: \"Weekly\",\n name: translations.BOARD_WEEKLY_BOARD,\n description: translations.BOARD_WEEKLY_BOARD_DESCRIPTION,\n settings: JSON.stringify({\n IsWeeklyBoard: true\n }),\n columns: [],\n rows: []\n }\n template.columns.push(\n {\n name: translations.COMMON_MONDAY,\n weekdayName: \"Monday\",\n sortOrder: 0,\n categoryStyle: {\n backgroundColor: \"#0182BD\",\n foregroundColor: \"#FFFFFF\"\n }\n });\n template.columns.push(\n {\n name: translations.COMMON_TUESDAY,\n weekdayName: \"Tuesday\",\n sortOrder: 1,\n categoryStyle: {\n backgroundColor: \"#0182BD\",\n foregroundColor: \"#FFFFFF\"\n }\n });\n template.columns.push(\n {\n name: translations.COMMON_WEDNESDAY,\n weekdayName: \"Wednesday\",\n sortOrder: 2,\n categoryStyle: {\n backgroundColor: \"#0182BD\",\n foregroundColor: \"#FFFFFF\"\n }\n });\n template.columns.push(\n {\n name: translations.COMMON_THURSDAY,\n weekdayName: \"Thursday\",\n sortOrder: 3,\n categoryStyle: {\n backgroundColor: \"#0182BD\",\n foregroundColor: \"#FFFFFF\"\n }\n });\n template.columns.push(\n {\n name: translations.COMMON_FRIDAY,\n weekdayName: \"Friday\",\n sortOrder: 4,\n categoryStyle: {\n backgroundColor: \"#0182BD\",\n foregroundColor: \"#FFFFFF\"\n }\n });\n template.rows.push(\n {\n name: translations.COMMON_CATEGORY + \" A\",\n sortOrder: 0,\n categoryStyle: {\n backgroundColor: \"#DBEDCD\",\n foregroundColor: \"#0182BD\"\n }\n });\n template.rows.push(\n {\n name: translations.COMMON_CATEGORY + \" B\",\n sortOrder: 1,\n categoryStyle: {\n backgroundColor: \"#FBEED2\",\n foregroundColor: \"#0182BD\"\n }\n });\n template.rows.push(\n {\n name: translations.COMMON_CATEGORY + \" C\",\n sortOrder: 2,\n categoryStyle: {\n backgroundColor: \"#EED2D7\",\n foregroundColor: \"#0182BD\"\n }\n });\n\n\n return template;\n\n }\n\n function createKanbanBoardTemplate() {\n\n var template = {\n boardType: \"Kanban\",\n name: $translate.instant(\"BOARD_KANBAN_BOARD\"),\n description: $translate.instant(\"BOARD_KANBAN_BOARD_DESCRIPTION\"),\n settings: JSON.stringify({\n IsWeeklyBoard: false\n }),\n columns: [],\n rows: []\n }\n template.columns.push(\n {\n name: $translate.instant(\"BOARD_TO_DO\"),\n sortOrder: 0,\n categoryStyle: {\n backgroundColor: \"#E3EDF8\",\n foregroundColor: \"#2E404F\"\n }\n });\n template.columns.push(\n {\n name: $translate.instant(\"COMMON_IN_PROGRESS\"),\n sortOrder: 1,\n categoryStyle: {\n backgroundColor: \"#C5DBF0\",\n foregroundColor: \"#2E404F\"\n }\n });\n template.columns.push(\n {\n name: $translate.instant(\"BOARD_WAITING\"),\n sortOrder: 2,\n categoryStyle: {\n backgroundColor: \"#3480BD\",\n foregroundColor: \"#E7E6E6\"\n }\n });\n template.columns.push(\n {\n name: $translate.instant(\"BOARD_DONE\"),\n sortOrder: 3,\n categoryStyle: {\n backgroundColor: \"#15507f\",\n foregroundColor: \"#E7E6E6\"\n }\n });\n template.rows.push(\n {\n name: $translate.instant(\"COMMON_HIGH\"),\n sortOrder: 0,\n categoryStyle: {\n backgroundColor: \"#EFA390\",\n foregroundColor: \"#264653\"\n }\n });\n template.rows.push(\n {\n name: $translate.instant(\"COMMON_NORMAL\"),\n sortOrder: 1,\n categoryStyle: {\n backgroundColor: \"#8B8B8B\",\n foregroundColor: \"#E3EDF8\"\n }\n });\n\n template.rows.push(\n {\n name: $translate.instant(\"COMMON_LOW\"),\n sortOrder: 2,\n categoryStyle: {\n backgroundColor: \"#b1b1b1\",\n foregroundColor: \"#E3EDF8\"\n }\n });\n\n return template;\n }\n\n }]);\n","import * as assetService from \"@common/services/assetService\"\nimport * as dashboardService from \"@common/services/dashboardService\"\nimport * as boardService from \"@common/services/boardService\"\n\nvar DigiLean = angular.module('DigiLean');\nDigiLean.controller('newFlexiboardConfigurationController', ['$scope', '$translate', '$uibModalInstance', 'smartActionListService', 'navigationService', 'options',\n function ($scope, $translate, $uibModalInstance, smartActionListService, navigationService, options) {\n $scope.hasProjectModule = navigationService().hasModule(\"PROJECT\");\n $scope.useProjectGroup = true;\n\n $scope.isProcessing = false;\n $scope.participants = [];\n $scope.selectedAssetId = null;\n $scope.selectedAssetType = \"\";\n $scope.name = \"\";\n $scope.description = \"\";\n $scope.isPublic = false;\n $scope.errormessage = null;\n\n var tabs = [\"Info\", \"Participants\"];\n $scope.indexTab = 0;\n $scope.selectTab = function (tab) {\n $scope.indexTab = tabs.indexOf(tab);\n }\n\n $scope.chooseMembers = true;\n if (options.assetId && options.assetId > 0) {\n $scope.chooseMembers = false;\n $scope.selectedAssetId = options.assetId;\n }\n if(options.hasOwnProperty('includeCustomGroup') || options.hasOwnProperty('includeProject')) {\n $scope.memberSelectorOptions = {\n includeCustomGroup : options.includeCustomGroup,\n includeProject: options.includeProject\n }\n }\n $scope.memberSelectionChanged = function (selection) {\n $scope.selectedAssetId = selection.assetId;\n $scope.participants = selection.participants;\n $scope.selectedAssetType = selection.assetType;\n validationFailed();\n }\n $scope.nameChanged = function (name) {\n $scope.name = name;\n if($scope.name){\n $scope.errormessage = null;\n }\n }\n\n $scope.descriptionChanged = function (description) {\n $scope.description = description;\n }\n\n $scope.setPublicStatus = function () {\n $scope.isPublic = !$scope.isPublic;\n }\n\n function validationFailed() {\n if (!$scope.name) {\n $scope.errormessage = $translate.instant('COMMON_NAME');\n $scope.selectTab(\"Info\");\n return true;\n }\n if (!$scope.selectedAssetId && $scope.selectedAssetType != \"CUSTOMIZED\") {\n $scope.errormessage = $translate.instant('COMMON_PARTICIPANTS');\n $scope.chooseMembers = true;\n $scope.selectTab(\"Participants\");\n return true;\n }\n $scope.errormessage = null;\n return false;\n }\n\n $scope.ok = function () {\n if (validationFailed()) return;\n $scope.isProcessing = true;\n\n if ($scope.selectedAssetType == \"CUSTOMIZED\") {\n var participants = [];\n $scope.participants.forEach(p => {\n var participant = {\n userId: p.userId,\n role: \"Member\"\n }\n participants.push(participant);\n });\n\n var customAsset = {\n name: $scope.name,\n participants: participants\n }\n assetService.createCustomAsset(customAsset).then(function (asset) {\n $scope.selectedAssetId = asset.id;\n createFlexiboard();\n });\n\n } else {\n createFlexiboard();\n }\n\n }\n\n function createFlexiboard() {\n var dashboard = {\n title: $scope.name,\n description: $scope.description,\n assetId: $scope.selectedAssetId,\n isPublic: $scope.isPublic\n };\n \n $scope.isProcessing = true;\n switch (options.operation) {\n case \"copy\":\n dashboard.sourceId = options.dashboardAsTemplateId;\n dashboardService.copyDashboard(options.dashboardAsTemplateId, dashboard).then(function (dashboard) {\n $scope.isProcessing = false;\n $uibModalInstance.close(dashboard);\n });\n break;\n case \"createFromTemplate\":\n dashboard.sourceId = options.dashboardAsTemplateId;\n dashboardService.createFromTemplate(options.dashboardAsTemplateId, dashboard).then(function (dashboard) {\n $scope.isProcessing = false;\n $uibModalInstance.close(dashboard);\n });\n break;\n case \"newFlexiboard\":\n dashboardService.addDashboard(dashboard).then(function (dashboard) {\n $scope.isProcessing = false;\n $uibModalInstance.close(dashboard);\n });\n break;\n case \"newSmartActionList\":\n options.template.board.assetId = $scope.selectedAssetId;\n options.template.board.name = $scope.name;\n smartActionListService().createsmartActionList(options.template).then(function (smartActionList) {\n $scope.isProcessing = false;\n $uibModalInstance.close(smartActionList);\n });\n break;\n case \"newSmartActionListFromTemplate\":\n smartActionListService().createSmartActionListFromTemplate(options.templateId, dashboard).then(function (smartActionList) {\n $scope.isProcessing = false;\n $uibModalInstance.close(smartActionList);\n });\n break;\n case \"newTaskBoardFromTemplate\":\n boardService.createFromTemplate(options.template.templateId, dashboard).then(function (board) {\n $scope.isProcessing = false;\n $uibModalInstance.close(board);\n });\n break;\n case \"newPerformanceBoard\":\n options.template.board.assetId = $scope.selectedAssetId;\n options.template.board.name = $scope.name;\n boardService.create(options.template).then(function (savedModel) {\n $scope.isProcessing = false;\n $uibModalInstance.close(savedModel);\n });\n break;\n case \"newTaskBoard\":\n options.template.board.assetId = $scope.selectedAssetId;\n options.template.board.name = $scope.name;\n boardService.create(options.template).then(function (savedModel) {\n $scope.isProcessing = false;\n $uibModalInstance.close(savedModel);\n });\n break;\n }\n }\n\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n }]);","import lottie from 'lottie-web';\nimport * as staticFileService from \"@common/shared/staticFileService\"\n\nangular\n .module('DigiLean')\n .directive(\"emptyFlexiboardPreview\", \n function () {\n return {\n templateUrl: 'emptyFlexiboardPreview.html',\n restrict: 'E',\n scope: {\n },\n link: function (scope, elem, attrs) {\n\n scope.imageUrl = staticFileService.image(\"flexiboard_create_new_app.gif\");\n \n \n // scope.imageUrl = staticFileService.image(\"emptyFlexiboardTemplate.jpg\");\n\n scope.animationUrl = require(\"./lotti-singel-barchart.json\");\n\n var okContainer = $(elem).find(\".singel-barchart-animation\")[0]; // the dom element that will contain the animation\n var completeAnimation = lottie.loadAnimation({\n container: okContainer,\n renderer: 'svg',\n name: \"lotti-singel-barchart\",\n loop: true,\n autoplay: true,\n path: 'https://assets10.lottiefiles.com/packages/lf20_X7iGbd.json' //https://lottiefiles.com/share/X7iGbd \n });\n\n }\n }\n });\n","export function createGuid() {\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, function(c) {\n let r = Math.random()*16|0, v = c === 'x' ? r : (r&0x3|0x8)\n return v.toString(16)\n })\n}\n","import { ComponentSettings, DashboardPage, DashboardWidget, UserAccessLevel } from \"@api\"\nimport { DigiLeanNgScope } from \"@common/model/angularModel\"\nimport { ICompileService } from \"angular\"\nimport { GridItemHTMLElement, GridStack, GridStackNode, GridStackWidget } from \"gridstack\"\nimport * as dashboardService from \"@common/services/dashboardService\"\nimport * as boardService from \"@common/services/boardService\"\nimport { DashboardApp } from \"@common/model/types\"\nimport { createGuid } from \"@common/services/helperFunctions\"\n\nimport widgetTemplate from \"./pageWidget.html\"\nimport { isObjectEqual } from \"@common/services/helperLib\"\n\n/**\n * Responsible for updating the grid UI, using gridstack as a framework\n * and the state of page widgets\n * \n * docs: https://github.com/gridstack/gridstack.js/tree/master/doc\n */\n\ninterface GridItemScope extends DigiLeanNgScope {\n widget: DashboardWidget\n}\n\nexport class PageService {\n private $pageContainerScope: DigiLeanNgScope\n private $compile: ICompileService\n private gridstack: GridStack\n\n // each visible widget $scope, used for calling $destroy when removed\n private pageWidgetScopes: GridItemScope[] = []\n\n // holder of state, shared by reference with flexiboardcontroller\n currentPage: DashboardPage | null = null\n\n constructor(scope: DigiLeanNgScope, compile: ICompileService, gs: GridStack) {\n this.$pageContainerScope = scope\n this.$compile = compile\n this.gridstack = gs\n this.setupEvents()\n this.pageWidgetScopes = []\n }\n\n setCurrentPage(page: DashboardPage) {\n this.currentPage = page\n this.refreshGridFromPageState()\n }\n\n /**\n * This is called when another user works with same page and and event is received\n */\n addWidgetFromOtherUser(widget: DashboardWidget) {\n this.addWidgetToPageStateOnly(widget)\n this.refreshGridFromPageState()\n }\n /**\n * This is called when another user deletes widget and event is received\n */\n removeWidgetFromOtherUser(uid: string) {\n this.removeWidgetFromStateOnly(uid)\n this.refreshGridFromPageState()\n }\n\n raiseWidgetSettingsChangedEvent(id: number, settings?: string | null) {\n // raise settings change event\n const settingsChanged: ComponentSettings = { id, settings }\n console.log(\"pageService: DashboardWidgetSettingsChanged publish\", settingsChanged)\n this.$pageContainerScope.publish(\"DashboardWidgetSettingsChanged\", settingsChanged)\n }\n\n // add new app from app store\n addApp(app: DashboardApp) {\n let sizeX = 12\n let sizeY = 12\n\n if (app.defaultXSize)\n sizeX = app.defaultXSize\n\n if (app.defaultYSize)\n sizeY = app.defaultYSize;\n\n if (!this.currentPage)\n throw new Error(\"No current page set\")\n\n\n const dummyWidget: DashboardWidget = {\n id: 0,\n uId: createGuid(), // used for assigning and id client side to identify the widget\n header: app.name,\n component: \"blank\",\n sizeX: sizeX,\n sizeY: sizeY,\n dashboardPageId: this.currentPage.id\n }\n\n const canAdd = this.canAddNewWidget(dummyWidget)\n if (!canAdd)\n throw new Error(\"FLEXIBOARD_NO_SPACE_FOR_APP\")\n\n\n const gridItem = this.addWidgetToGrid(dummyWidget)\n // get x,y that gridstack selected\n dummyWidget.col = gridItem.gridstackNode?.x\n dummyWidget.row = gridItem.gridstackNode?.y\n\n var newWidget = structuredClone(dummyWidget);\n newWidget.component = app.component\n // save to backend\n dashboardService.addWidget(newWidget).then((savedWidget) => {\n \n // remove placement widget\n this.removeWidgetFromGrid(dummyWidget.uId)\n this.addWidgetToGrid(savedWidget)\n this.addWidgetToPageStateOnly(savedWidget)\n })\n }\n\n reload() {\n this.removeAllWidgetsFromGrid()\n setTimeout(() => {\n this.refreshGridFromPageState()\n }, 2000)\n \n }\n\n /**\n * This is called only internally when widget is already in Grid, used when app is added from app store\n */\n private addWidgetToPageStateOnly(widget: DashboardWidget) {\n if (!this.currentPage) return\n if (!this.currentPage.widgets) this.currentPage.widgets = []\n\n const exists = this.currentPage.widgets.find(w => w.uId == widget.uId)\n if (exists) {\n console.warn(`WARNING: Widget ${widget.uId} already existed in internal state. Code smell`)\n return\n }\n this.currentPage.widgets.push(widget)\n }\n\n canAddNewWidget(dashboardWidget: DashboardWidget) {\n const gridItem = convertWidgetToGridStack(dashboardWidget, true)\n const willFit = this.gridstack.willItFit(gridItem)\n return willFit\n }\n\n private loadManyWidgetsToGrid(widgets: DashboardWidget[]) {\n widgets.forEach(w => this.addWidgetToGrid(w, false))\n }\n\n addWidgetToGrid(widget: DashboardWidget, isNew?: boolean) {\n const widgetOptions = convertWidgetToGridStack(widget, isNew)\n\n let newScope = this.$pageContainerScope.$new() as GridItemScope\n newScope.widget = widget\n if (newScope.isDebugMode)\n newScope.widgetOptions = widgetOptions\n\n const compiled = this.$compile(widgetTemplate)(newScope) as JQuery\n\n const wrappedEl = createWrapperElements(compiled[0])\n const gridItem = this.gridstack.addWidget(wrappedEl, widgetOptions)\n\n this.pageWidgetScopes.push(newScope)\n return gridItem\n }\n\n findWidgetUid(uid: string) {\n const widget = this.currentPage?.widgets?.find(w => w.uId == uid)\n return widget\n }\n updateWidgetSettings(incomingComponentSettings: ComponentSettings) {\n if (!this.currentPage || !this.currentPage.widgets || !Array.isArray(this.currentPage.widgets))\n return\n\n const widgetToUpdate = this.currentPage.widgets.find(w => w.id == incomingComponentSettings.id)\n\n if (!widgetToUpdate)\n return\n\n if (!widgetToUpdate.settings && !incomingComponentSettings.settings)\n return\n\n const incomingSettings = JSON.parse(incomingComponentSettings.settings!)\n if (isObjectEqual(incomingSettings, widgetToUpdate.settings))\n console.log(\"settings equality = no changes\")\n else {\n console.log(\"settings equality = changed\")\n widgetToUpdate.settings = incomingSettings\n }\n }\n removeWidgetFromStateOnly(uid: string) {\n if (this.currentPage && this.currentPage.widgets) {\n const index = this.currentPage.widgets.findIndex(w => w.uId == uid)\n if (index > -1) {\n this.currentPage.widgets.splice(index, 1)\n this.refreshGridFromPageState()\n }\n }\n }\n\n async removeWidgetBackend(widget: DashboardWidget, deleteBoard: boolean) {\n await dashboardService.deleteWidget(widget.id)\n\n this.removeWidgetFromStateOnly(widget.uId)\n // All boards component also needs to be deleted? Esp smartactionlist\n if (deleteBoard || widget.component == 'a3table' || widget.component == \"3ctable\") {\n ///@ts-ignore\n const boardId = widget.settings.boardId\n boardService.deleteBoard(boardId)\n }\n }\n private removeWidgetFromGrid(uid: string) {\n const gridItems = this.gridstack.getGridItems()\n const gridItem = gridItems.find(g => g.gridstackNode?.id === uid)\n if (gridItem)\n this.gridstack.removeWidget(gridItem)\n \n const scope = this.pageWidgetScopes.find(s => s.widget.uId == uid)\n if (scope) {\n scope.$destroy() // important, will not happen by removing DOM!\n const index = this.pageWidgetScopes.indexOf(scope)\n this.pageWidgetScopes.splice(index, 1)\n }\n }\n // cleanup\n private removeAllWidgetsFromGrid() {\n this.gridstack.removeAll()\n this.pageWidgetScopes.forEach(scope => scope.$destroy())\n this.pageWidgetScopes = []\n }\n\n /**\n * When we know state has changed, check for updates and update grid view\n */\n refreshGridFromPageState() {\n if (!this.currentPage || !this.currentPage.widgets)\n return\n\n const widgetsNewState = this.currentPage.widgets\n const gridItems = this.gridstack.getGridItems()\n \n const currentWidgetIdsInGrid = gridItems.map(gi => gi.gridstackNode?.id!)\n\n this.gridstack.batchUpdate();\n\n const deletedWidgetIds = currentWidgetIdsInGrid.filter(id => !widgetsNewState.find(wNew => wNew.uId === id))\n if (deletedWidgetIds.length > 0) {\n deletedWidgetIds.forEach(id => {\n this.removeWidgetFromGrid(id)\n })\n }\n const addedWidgets = widgetsNewState.filter(w => !currentWidgetIdsInGrid.find(id => id === w.uId))\n if (addedWidgets.length > 0)\n this.loadManyWidgetsToGrid(addedWidgets)\n\n // this is needed when reload flexiboard occours\n const neitherAddedNorRemoved = widgetsNewState.filter(w => currentWidgetIdsInGrid.find(id => id === w.uId))\n neitherAddedNorRemoved.forEach(w => this.updateWidgetFromState(w))\n\n this.gridstack.batchUpdate(false);\n }\n private updateWidgetFromState(widget: DashboardWidget) {\n if (!widget)\n return\n\n const scope = this.pageWidgetScopes.find(ws => ws.widget.uId == widget.uId)\n if (scope)\n scope.widget = widget\n\n const gridItem = this.gridstack.getGridItems().find(g => g.gridstackNode?.id === widget.uId)\n\n if (!gridItem || !gridItem.gridstackNode)\n return\n\n const updateGs = convertWidgetToGridStack(widget) // to update positions and size\n this.gridstack.update(gridItem.gridstackNode.el!, updateGs)\n \n }\n setupEvents() {\n \n this.gridstack.on('resizestop', (event: Event, el: GridItemHTMLElement) => {\n if (el.gridstackNode)\n \n this.broadcastWidgetResizeEvent(el.gridstackNode)\n })\n\n this.gridstack.on('change', (e: Event, nodes: GridStackNode[]) => {\n if (!this.$pageContainerScope.isAdminMode) return;\n if (!nodes)\n return\n nodes.forEach(node => {\n if (!node.id)\n return\n\n this.checkNodeUpdatesAndSave(node.id, node)\n })\n })\n }\n\n private checkNodeUpdatesAndSave(uid: string, node: GridStackNode) {\n const widget = this.findWidgetUid(uid)\n if (!widget)\n return\n if (widget.col != node.x || widget.row != node.y || widget.sizeX != node.w || widget.sizeY != node.h) {\n widget.col = node.x\n widget.row = node.y\n widget.sizeX = node.w!,\n widget.sizeY = node.h!\n dashboardService.updateWidget(widget)\n }\n }\n\n broadcastWidgetResizeEvent(node: GridStackNode) {\n const widget = this.findWidgetUid(node.id!)\n this.$pageContainerScope.$broadcast(\"widget-resized\", widget)\n }\n\n getGridItem(uid: string) {\n const gridItems = this.gridstack.getGridItems()\n const gridItem = gridItems.find(g => g.gridstackNode?.id === uid)\n return gridItem\n }\n\n /**\n * Clone\n */\n\n async cloneWidget(uid: string) {\n\n const widget = this.findWidgetUid(uid)\n if (!widget)\n throw new Error(\"WIDGET_NOT_FOUND\")\n\n if (!this.canAddNewWidget(widget))\n throw new Error(\"FLEXIBOARD_NO_SPACE_FOR_APP\")\n\n // add blank widget first time, avoid all sort of things to happen before it's cloned in backend\n // but use it to get grid placement\n const placementWidget: DashboardWidget = {\n id: 0,\n uId: createGuid(),\n sizeX: widget.sizeX,\n sizeY: widget.sizeY,\n component: \"blank\"\n }\n const gridItem = this.addWidgetToGrid(placementWidget)\n // get x,y that gridstack selected\n placementWidget.col = gridItem.gridstackNode?.x\n placementWidget.row = gridItem.gridstackNode?.y\n \n // pass on the placement to copy method\n const savedWidget = await dashboardService.copyWidget(widget.id, placementWidget)\n if (savedWidget.settings && typeof savedWidget.settings === \"string\")\n savedWidget.settings = JSON.parse(savedWidget.settings)\n else\n savedWidget.settings = null\n\n // remove placement widget\n this.removeWidgetFromGrid(placementWidget.uId)\n // draw real widget with component updated settings\n this.addWidgetToGrid(savedWidget)\n \n this.addWidgetToPageStateOnly(savedWidget) // to keep in state when switching pages back and forth\n }\n changeWidget(uid: string, component: string, name: string) {\n const widget = this.findWidgetUid(uid)\n if (!widget)\n return\n widget.component = component\n widget.header = name\n \n widget.settings = null\n dashboardService.updateWidget(widget)\n }\n destroy() {\n console.log(\"pageService: Destroy\")\n this.removeAllWidgetsFromGrid()\n ///@ts-ignore\n this.$pageContainerScope = null\n ///@ts-ignore\n this.$compile = null\n ///@ts-ignore\n this.gridstack = null\n ///@ts-ignore\n this.pageWidgetScopes = null\n }\n}\n\nexport function convertWidgetToGridStack(dWidget: DashboardWidget, isNew?: boolean) {\n const widget: GridStackWidget = {\n w: dWidget.sizeX,\n h: dWidget.sizeY,\n id: dWidget.uId\n }\n if (!isNew) {\n widget.x = dWidget.col\n widget.y = dWidget.row\n }\n\n return widget\n}\n\nfunction createWrapperElements(widgetEl: HTMLElement) {\n const wrapper = document.createElement(\"div\")\n wrapper.classList.add(\"grid-stack-item\")\n wrapper.appendChild(widgetEl)\n return wrapper\n}\n\nexport function getWidgetCordsFromElement(gridItem: HTMLElement) {\n let x = 0\n let y = 0\n let w = 0\n let h = 0\n const yStr = gridItem.getAttribute(\"gs-y\")\n const xStr = gridItem.getAttribute(\"gs-x\")\n const wStr = gridItem.getAttribute(\"gs-w\")\n const hStr = gridItem.getAttribute(\"gs-h\")\n try {\n if (yStr)\n y = parseInt(yStr)\n if (xStr)\n x = parseInt(xStr)\n if (wStr)\n w = parseInt(wStr)\n if (hStr)\n h = parseInt(hStr)\n }\n catch (err) {\n console.error(err)\n }\n\n return { x, y, w, h }\n}\n","import { LayoutMode, LayoutOption, LayoutOptionConfig, getLayoutConfig } from \"../flexiboardLayoutService\"\nimport angular from \"angular\"\nimport \"gridstack/dist/gridstack.min.css\"\nimport { GridStack, GridStackOptions, GridStackWidget } from \"gridstack\"\nimport { NgComponent, DigiLeanNgScope } from \"@common/model/angularModel\"\nimport { DashboardWidget, UserAccessLevel } from \"@api\"\nimport { PageService } from \"./pageService\"\nimport { debounce } from \"lodash\"\nimport \"./flexiboardPageContainer.css\"\nimport toaster from \"@common/components/toast\"\nimport { translateLabelInstant } from \"@common/services/language/DigiLeanLang\"\n\n// https://stackoverflow.com/questions/37420381/angularjs-compile-a-directive-with-an-object-as-an-attribute-parameter\n\nexport interface PageViewGridStackCtrl extends NgComponent {\n isAdminMode: boolean\n assetId?: string\n userAccess?: UserAccessLevel\n layoutFactor: number\n layoutMode: LayoutMode\n isDebugMode: boolean\n}\n\nconst DigiLean = angular.module('DigiLean')\nDigiLean.component('flexiboardPageContainer', \n {\n template: '
        ',\n bindings: {\n 'isAdminMode': '<',\n 'assetId': '<',\n 'userAccess': '<',\n 'layoutFactor': '<',\n 'layoutMode': '<',\n 'isDebugMode': '<',\n 'dashboardTitle': '<',\n 'pageTitle': '<'\n },\n controller: ['$element', '$scope', '$compile', '$uibModal',\n function(this: PageViewGridStackCtrl, $element: JQuery, $scope: DigiLeanNgScope, $compile, $uibModal) {\n let $ctrl = this\n \n const gridOptions: GridStackOptions = {\n column: 40, // can't be changed without changing the CSS\n minRow: 20,\n maxRow: 20,\n margin: 0,\n alwaysShowResizeHandle: false,\n float: true, // true means that widget will stay excactly where you place them, false will make them \"float up\"\n handle: \".widget-drag-handle\",\n resizable: {\n autoHide: false,\n handles: \"e,s,n,w,se,sw,nw\"\n }\n }\n\n let pageService: PageService | null = null\n let gridstack: GridStack | null = null\n let gridEl: HTMLDivElement | null = null\n\n const gridObserver = new MutationObserver((mutationList: MutationRecord[]) => {\n for (const mutation of mutationList) {\n if (mutation.type === \"attributes\" && mutation.attributeName === \"gs-current-row\") {\n getAndSetCurrentHeight()\n }\n }\n })\n\n function layoutChanged() {\n console.log(\"layoutChanged\")\n if (!$ctrl.layoutMode || !$ctrl.layoutMode.option)\n return\n \n console.log(\"layoutChanged\", $ctrl.layoutMode)\n const layoutConfig = getLayoutConfig($ctrl.layoutMode)\n setLayoutConfig(layoutConfig)\n }\n\n function setLayoutConfig(config: LayoutOptionConfig) {\n \n gridOptions.maxRow = config.maxRows\n\n // POC default mode minRows depending on adminMode\n if (config.option == LayoutOption.Default && $ctrl.isAdminMode)\n gridOptions.minRow = 200 // config.maxRows\n else\n gridOptions.minRow = config.minRows\n \n initializeGridStackDebounced()\n }\n\n function setAdminOrViewMode() {\n if ($ctrl.isAdminMode)\n setAdminMode()\n else\n setViewMode()\n }\n\n function getAndSetCurrentHeight() {\n if (!gridEl)\n return\n const currentRow = gridEl.getAttribute(\"gs-current-row\")\n if (currentRow) {\n // console.log(\"gs-current-row\", currentRow)\n let gridContainer = getContainer()\n gridContainer.style.setProperty(\"--gs-current-row\", currentRow)\n syncGridMarkingLines(currentRow)\n }\n }\n\n // create a marker for each 10th row in the grid in admin mode\n function syncGridMarkingLines(currentRow: string) {\n const rowsTotal = parseInt(currentRow)\n if (!rowsTotal || rowsTotal < 10)\n return\n\n const numberOfMarkingLines = Math.floor(rowsTotal/10)\n let gridContainer = getContainer()\n if (!gridContainer)\n return\n\n const currentMarkingLines = gridContainer.querySelectorAll(\"div.grid-marking-line\")\n if (currentMarkingLines.length === numberOfMarkingLines)\n return\n\n currentMarkingLines.forEach((el) => {\n gridContainer.removeChild(el)\n })\n for (let i = 1; i <= numberOfMarkingLines; i++) {\n const markingLine = document.createElement(\"div\")\n markingLine.classList.add(\"grid-marking-line\")\n const row = `${i * 10}`\n markingLine.innerHTML = row\n markingLine.style.setProperty(\"--grid-marking-row\", row)\n gridContainer.appendChild(markingLine)\n }\n }\n\n function getContainer() {\n let parentElement = $element[0]\n return parentElement.querySelector(\"#digilean-grid-stack-container\") as HTMLDivElement\n }\n function setAdminMode() {\n gridstack?.enable()\n }\n function setViewMode() {\n gridstack?.disable()\n }\n \n const nativeFullScreenApps = [\"webviewer\", \"pdfdisplayer\"]\n $scope.openAppInFullScreen = async function (widget: DashboardWidget) {\n\n if (widget.settings) {\n const settingsType = typeof widget.settings\n if (settingsType == \"string\")\n widget.settings = JSON.parse(widget.settings)\n }\n\n const widgetEl = $element[0].querySelector(`#widget${widget.id}`)\n\n // allow native fullscreen for specific apps. Needs widget element\n if (widgetEl && nativeFullScreenApps.includes(widget.component)) {\n try {\n await widgetEl.requestFullscreen({ navigationUI: \"show\" })\n return\n }\n catch (err) {\n console.log(\"error opening fullscreen\", err)\n }\n }\n\n \n // default back to fullscreen dialog\n const options = {\n widgetEl,\n widget: widget,\n assetId: $ctrl.assetId,\n title: $ctrl.dashboardTitle,\n subTitle: $ctrl.pageTitle,\n userAccess: $ctrl.userAccess\n }\n const modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n windowClass: 'full-screen',\n templateUrl: 'fullscreenWidget.html',\n controller: 'fullscreenWidgetController',\n resolve: {\n options: function () {\n return options\n }\n }\n })\n \n modalInstance.result.then((app) => { }, (err) => { })\n }\n\n $ctrl.$onInit = function() {\n copyValuesToScrope()\n layoutChanged()\n initializeGridStackDebounced()\n setAdminOrViewMode()\n }\n\n const initializeGridStackDebounced = debounce(initializeGridStack, 1000)\n function initializeGridStack() {\n console.log(`flexiboardPageContainer: initializeGridStack: Start. Layout: minRows=${gridOptions.minRow}, maxRows=${gridOptions.maxRow}`)\n // first time\n if (!gridstack) {\n console.log(\"flexiboardPageContainer: initializeGridStack: First time, create grid\")\n let gridContainer = getContainer()\n gridContainer.innerHTML = \"\" // remove all previous elements\n gridEl = document.createElement(\"div\") // create brand new element, important when switching layout mode\n gridEl.setAttribute(\"id\", \"digilean-grid-stack\")\n gridContainer.appendChild(gridEl)\n \n gridObserver.observe(gridEl, {attributes: true})\n gridstack = GridStack.init(gridOptions, gridEl)\n \n pageService = new PageService($scope, $compile, gridstack)\n $scope.$emit(\"grid-stack-loaded\", pageService)\n }\n else {\n console.log(\"flexiboardPageContainer: initializeGridStack: Only adjust layout\")\n // just reset layout rows without reloading widgets\n gridstack.opts.minRow = gridOptions.minRow\n gridstack.opts.maxRow = gridOptions.maxRow\n gridstack.engine.maxRow = gridOptions.maxRow!\n \n // do something to make the grid apply the new row settings\n const dummyWidget: GridStackWidget = { w: 1, h: 1, id: \"dummy\"}\n gridstack.willItFit(dummyWidget)\n const gridItem = gridstack.addWidget(dummyWidget)\n if (gridItem)\n gridstack.removeWidget(gridItem)\n }\n setAdminOrViewMode()\n \n }\n\n function copyValuesToScrope() {\n $scope.isAdminMode = $ctrl.isAdminMode\n $scope.layoutFactor = $ctrl.layoutFactor\n $scope.userAccess = $ctrl.userAccess ?? \"\"\n $scope.assetId = $ctrl.assetId ?? 0\n $scope.isDebugMode = $ctrl.isDebugMode ?? false\n }\n $ctrl.$onChanges = function (changes) {\n copyValuesToScrope()\n if (changes.layoutMode) {\n if (changes.layoutMode.currentValue)\n layoutChanged()\n }\n if (changes.isAdminMode) {\n // POC default mode minRows depending on adminMode\n if ($ctrl.layoutMode.option == LayoutOption.Default)\n layoutChanged()\n else\n setAdminOrViewMode()\n }\n }\n\n $scope.removeWidget = function(uid: string) {\n const widget = pageService?.findWidgetUid(uid)\n if (!widget) {\n console.warn(\"Widget was to be removed but not found by id\", uid)\n return\n }\n var deleteSmartActionList = false;\n // Check for extra confirmation regarding linked boards\n if (widget.component == 'smartactionlist') {\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'widgetDeleteConfirmation.html',\n controller: 'widgetDeleteConfirmation',\n windowClass: 'newdeviation-modal-window',\n resolve: {\n widget: function () {\n return widget;\n }\n }\n });\n modalInstance.result.then(function (answer) {\n if (answer == \"all\") deleteSmartActionList = true\n pageService?.removeWidgetBackend(widget, deleteSmartActionList)\n }, function () {\n return\n })\n } else {\n pageService?.removeWidgetBackend(widget, false)\n }\n }\n \n $scope.cloneApp = async function(uid: string) {\n if (uid) {\n try {\n await pageService?.cloneWidget(uid)\n }\n catch (err: any) {\n toaster.error(translateLabelInstant(err.message))\n }\n }\n }\n $scope.changeWidget = async function(uid: string) {\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'appstore.html',\n controller: 'appstoreController',\n windowClass: 'newdeviation-modal-window',\n });\n \n const result = await modalInstance.result\n pageService?.changeWidget(uid, result.component, result.name)\n }\n\n $ctrl.$onDestroy = function() {\n pageService?.destroy()\n gridObserver.disconnect()\n gridstack?.destroy(true)\n gridstack = null\n pageService = null\n }\n }\n ]\n }\n)","import * as dashboardService from \"@common/services/dashboardService\"\nimport { fixTransparentText } from \"@common/services/helperLib\"\nimport { isObjectEqual } from \"@common/services/helperLib\"\n\nangular\n .module('DigiLean')\n .directive(\"widget\", ['$sce', 'debounce',\n function ($sce, debounce) {\n return {\n templateUrl: 'widget.html',\n restrict: 'E',\n scope: {\n 'widgetid': '<',\n 'header': '<',\n 'component': '<',\n 'assetId': '<',\n 'isAdminMode': '<',\n 'model': '<',\n 'settings': '<',\n 'userAccess': '<',\n 'globalTimePeriod': '<',\n 'layoutFactor': '<',\n 'isDebugMode': '<'\n },\n link: function (scope, elem, attrs) {\n\n fixTransparentText(scope.settings)\n scope.componentSettings = scope.settings; // initial settings, don't watch for changes. Changes will come via events\n scope.isWidgetReadyToLoad = true;\n\n let previouslySavedSettings = structuredClone(scope.settings)\n console.log(`WidgetController: Id: ${scope.widgetid} Component: '${scope.component}' Initialize`)\n // this event fires for all inluding current user\n scope.subscribe(\"DashboardWidgetSettingsChanged\", function (componentSettings) {\n // console.log(`WidgetController: Id: ${scope.widgetid} Component: '${scope.component}' DashboardWidgetSettingsChanged event`, componentSettings)\n if (componentSettings.id == parseInt(scope.widgetid)) {\n const updatedSettings = JSON.parse(componentSettings.settings);\n if(!isObjectEqual(scope.componentSettings, updatedSettings)){\n scope.componentSettings = updatedSettings;\n previouslySavedSettings = structuredClone(updatedSettings)\n }\n }\n })\n\n function settingsChangeHandler(settings) {\n if (scope.widgetid == 0) return; // the widget is not yet saved to the backend\n // check if settings did not really change\n if (isObjectEqual(previouslySavedSettings, settings)) {\n console.log(`WidgetController: Id: ${scope.widgetid} settingsChangeHandler: settings object was equal`)\n return\n }\n const componentSettings = {\n id: scope.widgetid,\n settings: JSON.stringify(settings)\n }\n dashboardService.saveComponentSettings(scope.widgetid, componentSettings).then(() => {\n console.log(`WidgetController: Id: ${scope.widgetid} Component: '${scope.component}' settings saved to backend`)\n }, \n (err) => console.log(`WidgetController: Id: ${scope.widgetid} Component: '${scope.component}' error saving component settings `, err)\n )\n }\n scope.settingsChangeHandler = settingsChangeHandler\n\n // used by non-angular components\n scope.onSettingsChangedEvent = function (e) {\n const orgEvt = e.originalEvent\n const settings = orgEvt.detail.settings\n settingsChangeHandler(settings)\n }\n },\n controller: ['$scope','$element', function ($scope, $element) {\n $scope.disableDebugMode = function () {\n $scope.isDebugMode = false;\n }\n\n function broadcastResize() {\n $scope.$broadcast(\"widget-resized\", { widgetid: $scope.widgetid })\n }\n const broadcastResizeDebounced = debounce(broadcastResize, 100, false)\n\n let resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n if (entry.target.nodeName == \"DIV\" && entry.contentBoxSize) {\n // const wrapper = entry.target\n // const contentBoxSize = wrapper.getBoundingClientRect()\n // console.log(`WidgetController:Resize observed. width=${contentBoxSize.width}, height=${contentBoxSize.height}`)\n // console.log(\"WidgetController:Resize observed. component =\", $scope.component)\n broadcastResizeDebounced()\n }\n }\n })\n\n function fullScreenChanged(e) {\n const widgetEl = $element[0]\n const isFullscreen = document.fullscreenElement == widgetEl\n console.log(\"isFullScreen\", isFullscreen)\n $scope.isFullscreen = isFullscreen\n }\n\n function closeFullScreen() {\n const widgetEl = $element[0]\n if (document.fullscreenElement == widgetEl)\n document.exitFullscreen()\n }\n $scope.closeFullScreen = closeFullScreen\n if ($element) {\n const widgetEl = $element[0]\n const contentEl = widgetEl.closest(\".grid-stack-item-content\")\n if (contentEl) { // widget is also used in A3 (with gridster) so make sure we are in grid-stack mode\n resizeObserver.observe(contentEl)\n }\n widgetEl.addEventListener(\"fullscreenchange\", fullScreenChanged)\n }\n $scope.$on('$destroy', function () {\n console.log(`WidgetController: Destroy ${$scope.widgetid}`)\n resizeObserver.disconnect()\n resizeObserver = null\n if ($element)\n $element[0].removeEventListener(\"fullscreenchange\", fullScreenChanged)\n })\n }]\n }\n }]);\n","import { getDefaultAppStyle, getDefaultAppTheme, calcDefaultAppFontSize } from \"@common/components/dashboard/designer/common/appStyleService\"\n\nangular\n .module('DigiLean')\n .directive(\"webViewer\", ['$sce',\n function ($sce) {\n return {\n templateUrl: 'webviewer.html',\n restrict: 'E',\n scope: {\n 'isAdminMode': '<',\n 'settings': '<',\n 'settingsChangeHandler': '&',\n 'layoutFactor': '<'\n },\n link: function (scope, elem, attrs) {\n\n console.log(\"webviewer link\")\n scope.theme = getDefaultAppTheme()\n scope.themeChangedEvent = function($event) {\n scope.theme = $event.detail\n scope.updateSettings()\n }\n \n scope.appStyle = getDefaultAppStyle()\n function calcStyles() {\n scope.appStyle[\"font-size\"] = calcDefaultAppFontSize(scope.layoutFactor)\n }\n calcStyles()\n scope.$watch('layoutFactor', calcStyles)\n\n scope.title = \"\"\n scope.titleChangedEvent = function($event) {\n scope.title = $event.detail\n scope.updateSettings()\n }\n \n scope.trustSrc = function(src) {\n return $sce.trustAsResourceUrl(src);\n }\n // Dashboard Settings handling\n scope.$watch('settings', function (settings) {\n scope.settings = settings;\n if (scope.settings) {\n scope.title = settings.title;\n scope.url = settings.url;\n if (settings.theme) {\n scope.theme = settings.theme;\n }\n }\n \n });\n\n scope.changeTheme= function(theme){\n scope.theme = theme;\n scope.updateSettings();\n }\n \n scope.updateSettings = function () {\n // fix url\n var url = scope.url;\n url = url.replace(/&/g, '&');\n scope.url = url;\n var componentSettings = {\n title: scope.title,\n url: scope.url,\n theme: scope.theme\n };\n scope.settingsChangeHandler({ settings: componentSettings });\n }\n \n //scope.$on(\"widget-resized\", function (event, args) {\n //resizeFrame()\n //})\n\n }\n }\n }]);\n","import * as staticFileService from \"@common/shared/staticFileService\"\n\nangular.module('DigiLean').factory('appstoreService', ['$translate', 'authService', 'navigationService',\n function ($translate, authService, navigationService) {\n function appstoreService() {\n return {\n getPopularApps: function () {\n var list = [\n \"smartactionlist\",\n \"singlevalue\",\n \"diagrameditor\",\n \"targetgraph\",\n \"texteditor\",\n \"smiley\",\n \"multichart\",\n ]\n\n var apps = this.getApps();\n var quickListApps = [];\n list.forEach(app => {\n // filter\n for (let index = 0; index < apps.length; index++) {\n const element = apps[index];\n if (element.component == app) {\n quickListApps.push(element);\n continue;\n }\n }\n });\n return quickListApps;\n },\n\n getApps: function () {\n var board = $translate.instant(\"COMMON_BOARD\");\n var project = $translate.instant(\"COMMON_PROJECT\");\n var customized = $translate.instant(\"DASHBOARD_CUSTOMIZED\");\n var improvement = $translate.instant(\"COMMON_IMPROVEMENT\");\n var deviation = $translate.instant(\"COMMON_DEVIATION\");\n var registration = $translate.instant(\"COMMON_REGISTRATION\");\n var general = $translate.instant(\"COMMON_GENERAL\");\n var tasks = $translate.instant(\"COMMON_TASKS\");\n var strategy = $translate.instant(\"STRATEGY_STRATEGY\");\n var apps = [\n {\n name: $translate.instant(\"DASHBOARD_SINGLE_VALUE\"),\n component: \"singlevalue\",\n category: \"KPI\",\n imageUrl: staticFileService.image(\"singlevalue.jpg\"),\n previewImageUrl: staticFileService.previewImage(\"singlevalue.jpg\"),\n description: $translate.instant(\"DASHBOARD_SINGLE_VALUE_DESC\"),\n defaultXSize: 8,\n defaultYSize: 4\n },\n {\n name: $translate.instant(\"DASHBOARD_SINGLE_VALUE_TARGET\"),\n component: \"singlevaluetarget\",\n category: \"KPI\",\n imageUrl: staticFileService.image(\"singlevaluetarget.jpg\"),\n previewImageUrl: staticFileService.previewImage(\"singlevaluetarget.jpg\"),\n description: $translate.instant(\"DASHBOARD_SINGLE_VALUE_TARGET_DESC\"),\n defaultXSize: 8,\n defaultYSize: 4\n },\n {\n name: $translate.instant(\"DASHBOARD_TARGET_GRAPH\"),\n component: \"targetgraph\",\n category: \"KPI\",\n imageUrl: staticFileService.image(\"targetgraph.jpg\"),\n previewImageUrl: staticFileService.previewImage(\"targetgraph.jpg\"),\n description: $translate.instant(\"DASHBOARD_TARGET_GRAPH_DESC\"),\n defaultXSize: 13,\n defaultYSize: 10\n },\n {\n name: $translate.instant(\"DASHBOARD_MIN_MAX_CHART\"),\n component: \"minmaxchart\",\n category: \"KPI\",\n imageUrl: staticFileService.image(\"minmaxchart.jpg\"),\n previewImageUrl: staticFileService.previewImage(\"minmaxchart.jpg\"),\n description: $translate.instant(\"DASHBOARD_MIN_MAX_CHART_DESC\"),\n defaultXSize: 13,\n defaultYSize: 10\n },\n {\n name: $translate.instant(\"DASHBOARD_TREND_BARCHART\"),\n component: \"trendbarchart\",\n category: customized,\n imageUrl: staticFileService.image(\"trendbarchart.jpg\"),\n previewImageUrl: staticFileService.previewImage(\"trendbarchart.jpg\"),\n description: $translate.instant(\"DASHBOARD_TREND_BARCHART_DESC\"),\n defaultXSize: 13,\n defaultYSize: 10\n },\n {\n name: $translate.instant(\"DASHBOARD_PIE_CHART\"),\n component: \"piechart\",\n category: customized,\n imageUrl: staticFileService.image('piechart.jpg'),\n previewImageUrl: staticFileService.previewImage('piechart.jpg'),\n description: $translate.instant(\"DASHBOARD_PIE_CHART_DESC\"),\n defaultXSize: 10,\n defaultYSize: 10\n },\n\n {\n name: $translate.instant(\"DASHBOARD_STACKED_BAR_CHART\"),\n component: \"barchart\",\n category: customized,\n imageUrl: staticFileService.image(\"barchart.jpg\"),\n previewImageUrl: staticFileService.previewImage(\"barchart.jpg\"),\n description: $translate.instant(\"DASHBOARD_STACKED_BAR_CHART_DESC\"),\n defaultXSize: 20,\n defaultYSize: 20\n },\n {\n name: $translate.instant(\"DASHBOARD_STACKED_GROUPED_BAR_CHART\"),\n component: \"stackedhorizantalbarchart\",\n category: customized,\n imageUrl: staticFileService.image(\"stackedHorizontalBarChart.jpg\"),\n previewImageUrl: staticFileService.previewImage(\"stackedHorizontalBarChart.jpg\"),\n description: $translate.instant(\"DASHBOARD_STACKED_GROUPED_BAR_CHART_DESC\"),\n defaultXSize: 20,\n defaultYSize: 20\n },\n {\n name: $translate.instant(\"DASHBOARD_SPLIT_PACKED_BUBBLE_CHART\"), \n component: \"splitPackedBubbleChart\",\n category: customized,\n imageUrl: staticFileService.image(\"splitPackedBubbleChart.jpg\"),\n previewImageUrl: staticFileService.previewImage(\"splitPackedBubbleChart.jpg\"),\n description: $translate.instant(\"DASHBOARD_SPLIT_PACKED_BUBBLE_CHART_DESC\"),\n defaultXSize: 13,\n defaultYSize: 12\n },\n \n {\n name: \"Pareto\",\n component: \"pareto\",\n category: customized,\n imageUrl: staticFileService.image('pareto.jpg'),\n previewImageUrl: staticFileService.previewImage('pareto.jpg'),\n description: $translate.instant(\"DASHBOARD_PARETO_CHART_DESC\"),\n defaultXSize: 13,\n defaultYSize: 10\n },\n {\n name: $translate.instant(\"DASHBOARD_COMPARE_CHART\"),\n component: \"comparechart\",\n category: customized,\n imageUrl: staticFileService.image(\"comparechart.jpg\"),\n previewImageUrl: staticFileService.previewImage(\"comparechart.jpg\"),\n description: $translate.instant(\"DASHBOARD_COMPARE_CHART_DESC\"),\n defaultXSize: 20,\n defaultYSize: 10\n },\n {\n name: $translate.instant(\"DASHBOARD_MULTI_CHART\"),\n component: \"multichart\",\n category: customized,\n imageUrl: staticFileService.image(\"multichart.jpg\"),\n previewImageUrl: staticFileService.previewImage(\"multichart.jpg\"),\n description: $translate.instant(\"DASHBOARD_MULTI_CHART_DESC\"),\n defaultXSize: 13,\n defaultYSize: 10\n },\n {\n name: $translate.instant(\"DASHBOARD_LIVE_TREND\"),\n component: \"livetrend\",\n category: customized,\n imageUrl: staticFileService.image(\"livetrend.jpg\"),\n previewImageUrl: staticFileService.previewImage(\"livetrend.jpg\"),\n description: $translate.instant(\"DASHBOARD_LIVE_TREND_DESC\"),\n defaultXSize: 13,\n defaultYSize: 10\n },\n {\n name: $translate.instant(\"DASHBOARD_RADAR_CHART\"),\n component: \"radarchart\",\n category: customized,\n imageUrl: staticFileService.image('radarchart.jpg'),\n previewImageUrl: staticFileService.previewImage('radarchart.jpg'),\n description: $translate.instant(\"DASHBOARD_RADAR_CHART_DESC\"),\n defaultXSize: 10,\n defaultYSize: 10\n },\n {\n name: $translate.instant(\"DASHBOARD_SINGLE_VALUE_REGISTRATION\"),\n component: \"singlevalueregistration\",\n category: registration,\n imageUrl: staticFileService.image(\"singlevalueregistration.jpg\"),\n previewImageUrl: staticFileService.previewImage(\"singlevalueregistration.jpg\"),\n description: $translate.instant(\"DASHBOARD_SINGLE_VALUE_REGISTRATION_DESC\"),\n defaultXSize: 8,\n defaultYSize: 4\n },\n {\n name: $translate.instant(\"BOARD_PRODUCTION_BOARD\"),\n component: \"productionboard\",\n category: registration,\n imageUrl: staticFileService.image(\"productionboard.jpg\"),\n previewImageUrl: staticFileService.previewImage(\"productionboard.jpg\"),\n description: $translate.instant(\"BOARD_PRODUCTION_BOARD_DESCRIPTION\"),\n defaultXSize: 40,\n defaultYSize: 20\n }, \n {\n name: $translate.instant(\"DASHBOARD_KPI_GREENCROSS\"),\n component: \"greencross\",\n category: registration,\n imageUrl: staticFileService.image(\"greencross.jpg\"),\n previewImageUrl: staticFileService.previewImage(\"greencross.jpg\"),\n description: $translate.instant(\"DASHBOARD_KPI_GREENCROSS_DESC\"),\n defaultXSize: 10,\n defaultYSize: 10\n },\n {\n name: \"5S\",\n component: \"5s\",\n category: registration,\n imageUrl: staticFileService.image(\"fives.jpg\"),\n previewImageUrl: staticFileService.previewImage(\"5s.jpg\"),\n description: $translate.instant(\"DASHBOARD_KPI_5S_DESC\"),\n defaultXSize: 10,\n defaultYSize: 10\n },\n {\n name: \"A\",\n component: \"A\",\n category: registration,\n imageUrl: staticFileService.image(\"a.jpg\"),\n previewImageUrl: staticFileService.previewImage(\"a.jpg\"),\n description: $translate.instant(\"DASHBOARD_KPI_A_DESC\"),\n defaultXSize: 10,\n defaultYSize: 10\n },\n {\n name: \"C\",\n component: \"C\",\n category: registration,\n imageUrl: staticFileService.image(\"c.jpg\"),\n previewImageUrl: staticFileService.previewImage(\"c.jpg\"),\n description: $translate.instant(\"DASHBOARD_KPI_C_DESC\"),\n defaultXSize: 10,\n defaultYSize: 10\n },\n {\n name: \"D\",\n component: \"D\",\n category: registration,\n imageUrl: staticFileService.image(\"d.jpg\"),\n previewImageUrl: staticFileService.previewImage(\"d.jpg\"),\n description: $translate.instant(\"DASHBOARD_KPI_D_DESC\"),\n defaultXSize: 10,\n defaultYSize: 10\n },{\n name: \"I\",\n component: \"I\",\n category: registration,\n imageUrl: staticFileService.image(\"i.jpg\"),\n previewImageUrl: staticFileService.previewImage(\"i.jpg\"),\n description: $translate.instant(\"DASHBOARD_KPI_I_DESC\"),\n defaultXSize: 10,\n defaultYSize: 10\n },\n {\n name: \"K\",\n component: \"K\",\n category: registration,\n imageUrl: staticFileService.image(\"k.jpg\"),\n previewImageUrl: staticFileService.previewImage(\"k.jpg\"),\n description: $translate.instant(\"DASHBOARD_KPI_K_DESC\"),\n defaultXSize: 10,\n defaultYSize: 10\n },\n {\n name: \"L\",\n component: \"L\",\n category: registration,\n imageUrl: staticFileService.image(\"l.jpg\"),\n previewImageUrl: staticFileService.previewImage(\"l.jpg\"),\n description: $translate.instant(\"DASHBOARD_KPI_L_DESC\"),\n defaultXSize: 10,\n defaultYSize: 10\n },\n {\n name: \"P\",\n component: \"P\",\n category: registration,\n imageUrl: staticFileService.image(\"p.jpg\"),\n previewImageUrl: staticFileService.previewImage(\"p.jpg\"),\n description: $translate.instant(\"DASHBOARD_KPI_P_DESC\"),\n defaultXSize: 10,\n defaultYSize: 10\n },\n {\n name: \"Q\",\n component: \"Q\",\n category: registration,\n imageUrl: staticFileService.image(\"q.jpg\"),\n previewImageUrl: staticFileService.previewImage(\"q.jpg\"),\n description: $translate.instant(\"DASHBOARD_KPI_Q_DESC\"),\n defaultXSize: 10,\n defaultYSize: 10\n },\n {\n name: $translate.instant(\"DASHBOARD_KPI_DYNAMIC\"),\n component: \"dailykpidynamic\",\n category: registration,\n imageUrl: staticFileService.image(\"dailykpidynamic.jpg\"),\n previewImageUrl: staticFileService.previewImage(\"dailykpidynamic.jpg\"),\n description: $translate.instant(\"DASHBOARD_KPI_DYNAMIC_DESC\"),\n defaultXSize: 10,\n defaultYSize: 10\n },\n {\n name: $translate.instant(\"DASHBOARD_TEXTEDITOR\"),\n component: \"texteditor\",\n category: registration,\n imageUrl: staticFileService.image(\"texteditor.jpg\"),\n previewImageUrl: staticFileService.previewImage(\"texteditor.jpg\"),\n description: $translate.instant(\"DASHBOARD_TEXTEDITOR_DESC\"),\n defaultXSize: 16,\n defaultYSize: 10\n },\n {\n name: $translate.instant(\"DIAGRAMEDITOR\"),\n component: \"diagrameditor\",\n category: registration,\n imageUrl: staticFileService.image(\"diagram-editor.jpg\"),\n previewImageUrl: staticFileService.previewImage(\"diagram-editor-fishbone.jpg\"),\n description: $translate.instant(\"DASHBOARD_DIAGRAMEDITOR_DESC\"),\n defaultXSize: 16,\n defaultYSize: 10\n },{\n name: $translate.instant(\"COMMON_REGISTRATION\"),\n component: \"registration\",\n category: registration,\n imageUrl: staticFileService.image(\"register.jpg\"),\n previewImageUrl: staticFileService.previewImage(\"register.jpg\"),\n description: $translate.instant(\"DASHBOARD_REGISTRATION_DESC\"),\n defaultXSize: 20,\n defaultYSize: 20\n },\n {\n name: $translate.instant(\"DASHBOARD_DATASOURCE_VALUES_LIST\"),\n component: \"datasourcevalueslist\",\n category: general,\n imageUrl: staticFileService.image(\"datasourcevalueslist.jpg\"),\n previewImageUrl: staticFileService.previewImage(\"datasourcevalueslist.jpg\"),\n description: $translate.instant(\"DASHBOARD_DATASOURCE_VALUES_LIST_DESC\"),\n defaultXSize: 24,\n defaultYSize: 20\n },\n {\n name: $translate.instant(\"COMMON_MESSAGES\"),\n component: \"messagedisplayer\",\n category: general,\n imageUrl: staticFileService.image(\"messagedisplayer.jpg\"),\n previewImageUrl: staticFileService.previewImage(\"messagedisplayer.jpg\"),\n description: $translate.instant(\"DASHBOARD_MESSAGE_DISPLAYER_DESCRIPTION\"),\n defaultXSize: 16,\n defaultYSize: 12\n },\n {\n name: $translate.instant(\"DASHBOARD_IMAGE_DISPLAYER_TEXT\"),\n component: \"imagedisplayer\",\n category: general,\n imageUrl: staticFileService.image(\"imagedisplayer.png\"),\n previewImageUrl: staticFileService.previewImage(\"imagedisplayer.png\"),\n description: $translate.instant(\"DASHBOARD_IMAGE_DISPLAYER_DESCRIPTION\"),\n defaultXSize: 10,\n defaultYSize: 10\n },\n {\n name: $translate.instant(\"DASHBOARD_PDF_DISPLAYER_TEXT\"),\n component: \"pdfdisplayer\",\n category: general,\n imageUrl: staticFileService.image(\"pdfdisplayer.png\"),\n previewImageUrl: staticFileService.previewImage(\"pdfdisplayer.jpg\"),\n description: $translate.instant(\"DASHBOARD_PDF_DISPLAYER_DESCRIPTION\"),\n defaultXSize: 10,\n defaultYSize: 16\n },\n {\n name: $translate.instant(\"DASHBOARD_WEB_VIEWER_TEXT\"),\n component: \"webviewer\",\n category: general,\n imageUrl: staticFileService.image(\"webviewer.jpg\"),\n previewImageUrl: staticFileService.previewImage(\"webviewer.jpg\"),\n description: $translate.instant(\"DASHBOARD_WEB_VIEWER_DESCRIPTION\"),\n defaultXSize: 16,\n defaultYSize: 12\n },\n {\n name: $translate.instant(\"DASHBOARD_COUNTDOWN_APP_TITLE\"),\n component: \"daycounter\",\n category: general,\n imageUrl: staticFileService.image(\"daycounter.jpg\"),\n previewImageUrl: staticFileService.previewImage(\"daycounter.jpg\"),\n description: $translate.instant(\"DASHBOARD_COUNTDOWN_APP_DESCRIPTION\"),\n defaultXSize: 8,\n defaultYSize: 8\n },\n {\n name: $translate.instant(\"DASHBOARD_SMILEY_APP_TITLE\"),\n component: \"smiley\",\n category: registration,\n imageUrl: staticFileService.image(\"smileyApp.jpg\"),\n previewImageUrl: staticFileService.previewImage(\"smiley.jpg\"),\n description: $translate.instant(\"DASHBOARD_SMILEY_APP_DESCRIPTION\"),\n defaultXSize: 8,\n defaultYSize: 8\n },\n {\n name: $translate.instant(\"BOARD_ACTION_LIST\"),\n component: \"actionList\",\n category: tasks,\n imageUrl: staticFileService.image(\"actionList.png\"),\n previewImageUrl: staticFileService.previewImage(\"actionList.png\"),\n description: $translate.instant(\"BOARD_ACTION_LIST_DESCRIPTION\"),\n defaultXSize: 16,\n defaultYSize: 12\n },\n {\n name: $translate.instant(\"DASHBOARD_PERSONAL_CALENDAR\"),\n component: \"personalcalendar\",\n category: board,\n imageUrl: staticFileService.image(\"personal-calendar.jpg\"),\n previewImageUrl: staticFileService.previewImage(\"personal-calendar.jpg\"),\n description: $translate.instant(\"DASHBOARD_PERSONAL_CALENDAR_DESC\"),\n defaultXSize: 18,\n defaultYSize: 16\n },\n {\n name: $translate.instant(\"DASHBOARD_TEAM_CALENDAR\"),\n component: \"teamboardcalendar\",\n category: board,\n imageUrl: staticFileService.image(\"team-calendar.jpg\"),\n previewImageUrl: staticFileService.previewImage(\"team-calendar.jpg\"),\n description: $translate.instant(\"DASHBOARD_TEAM_CALENDAR_DESC\"),\n defaultXSize: 18,\n defaultYSize: 16\n },\n {\n name: $translate.instant(\"DASHBOARD_TEAM_TASKS\"),\n component: \"teamtasks\",\n category: board,\n imageUrl: staticFileService.image(\"teamtask.jpg\"),\n previewImageUrl: staticFileService.previewImage(\"teamtask.jpg\"),\n description: $translate.instant(\"DASHBOARD_TEAM_TASKS_DESC\"),\n defaultXSize: 20,\n defaultYSize: 12\n },\n {\n name: $translate.instant(\"BOARD_YEARLY_BOARD\"),\n component: \"timeboard\",\n category: board,\n imageUrl: staticFileService.image(\"timeboard.jpg\"),\n previewImageUrl: staticFileService.previewImage(\"timeboard.jpg\"),\n description: $translate.instant(\"BOARD_YEARLY_BOARD_DESCRIPTION\"),\n defaultXSize: 40,\n defaultYSize: 20\n },\n {\n name: $translate.instant(\"DASHBOARD_3C_APP_TITLE\"),\n component: \"3ctable\",\n category: tasks,\n imageUrl: staticFileService.image(\"3ctable.jpg\"),\n previewImageUrl: staticFileService.previewImage(\"3ctable.jpg\"),\n description: $translate.instant(\"DASHBOARD_3C_APP_DESCRIPTION\"),\n defaultXSize: 16,\n defaultYSize: 12\n },\n {\n name: $translate.instant(\"PROJECT_PROJECT_PORTFOLIO\"),\n component: \"projectboard\",\n category: project,\n imageUrl: staticFileService.image(\"projectboardApp.jpg\"),\n previewImageUrl: staticFileService.previewImage(\"projectboardApp.jpg\"),\n description: $translate.instant(\"BOARD_PROJECT_BOARD_DESCRIPTION\"),\n defaultXSize: 40,\n defaultYSize: 20\n },\n {\n name: $translate.instant(\"DASHBOARD_SMARTTABLE\"),\n component: \"smarttable\",\n category: board,\n imageUrl: staticFileService.image(\"projectboardApp.jpg\"),\n previewImageUrl: staticFileService.previewImage(\"smarttable.jpg\"),\n description: $translate.instant(\"DASHBOARD_SMARTTABLE_DESCRIPTION\"),\n defaultXSize: 16,\n defaultYSize: 6\n },\n {\n name: $translate.instant(\"DASHBOARD_SMARTACTIONLIST\"),\n component: \"smartactionlist\",\n category: board,\n imageUrl: staticFileService.image(\"smartactionlist.jpg\"),\n previewImageUrl: staticFileService.previewImage(\"smartactionlist.jpg\"),\n description: $translate.instant(\"DASHBOARD_SMARTACTIONLIST_DESCRIPTION\"),\n defaultXSize: 30,\n defaultYSize: 10\n },\n {\n name: $translate.instant(\"BOARD_WEEKLY_BOARD\"),\n component: \"weeklyboard\",\n category: board,\n imageUrl: staticFileService.image(\"weeklyboard.jpg\"),\n previewImageUrl: staticFileService.previewImage(\"weeklyboard.jpg\"),\n description: $translate.instant(\"BOARD_WEEKLY_BOARD_DESCRIPTION\"),\n defaultXSize: 40,\n defaultYSize: 20\n },\n {\n name: $translate.instant(\"BOARD_KANBAN_BOARD\"),\n component: \"kanbanboard\",\n category: board,\n imageUrl: staticFileService.image(\"kanbanBoard.jpg\"),\n previewImageUrl: staticFileService.previewImage(\"kanbanBoard.jpg\"),\n description: $translate.instant(\"BOARD_KANBAN_BOARD_DESCRIPTION\"),\n defaultXSize: 40,\n defaultYSize: 20\n },\n \n ];\n if (navigationService().hasModule(\"IMPROVEMENT\")) {\n apps.push({\n name: $translate.instant(\"IMPROVEMENT_PRIORITY_MATRIX\"),\n component: \"prioritymatrix\",\n category: improvement,\n imageUrl: staticFileService.image(\"prioritymatrix.jpg\"),\n previewImageUrl: staticFileService.previewImage(\"prioritymatrix.jpg\"),\n description: $translate.instant(\"DASHBOARD_PRIORITYMATRIX_DESC\"),\n defaultXSize: 28,\n defaultYSize: 20\n\n });\n apps.push({\n name: $translate.instant(\"IMPROVEMENT_ONGOING\"),\n component: \"ongoingimprovement\",\n category: improvement,\n imageUrl: staticFileService.image(\"ongoingimprovement.png\"),\n previewImageUrl: staticFileService.previewImage(\"ongoingimprovement.jpg\"),\n description: $translate.instant(\"DASHBOARD_ONGOING_IMPROVEMENT_DESC\"),\n defaultXSize: 28,\n defaultYSize: 20\n\n });\n apps.push({\n name: $translate.instant(\"DASHBOARD_RANKING\"),\n component: \"range\",\n category: improvement,\n imageUrl: staticFileService.image(\"range-improvement.jpg\"),\n previewImageUrl: staticFileService.previewImage(\"range-improvement.jpg\"),\n description: $translate.instant(\"DASHBOARD_RANKING_DESC\"),\n defaultXSize: 10,\n defaultYSize: 10\n });\n }\n if (navigationService().hasModule(\"A3\")) {\n apps.push({\n name: \"A3 \" + $translate.instant(\"A3_VIEWER\"),\n component: \"a3viewer\",\n category: \"A3\",\n imageUrl: staticFileService.image(\"a3viewer.jpg\"),\n previewImageUrl: staticFileService.previewImage(\"a3viewer.jpg\"),\n description: $translate.instant(\"A3_VIEWER_DESCRIPTION\"),\n defaultXSize: 40,\n defaultYSize: 20\n });\n apps.push({ \n name: $translate.instant(\"A3_TABLE\"),\n component: \"a3table\",\n category: \"A3\",\n imageUrl: staticFileService.image(\"a3table.jpg\"),\n previewImageUrl: staticFileService.previewImage(\"a3table.jpg\"),\n description: $translate.instant(\"A3_TABLE_DESC\"),\n defaultXSize: 40,\n defaultYSize: 20\n });\n }\n if (navigationService().hasModule(\"DEVIATION\")) {\n apps.push({\n name: $translate.instant(\"DEVIATION_NEW_DEVIATION\"),\n component: \"quickincidentregistration\",\n category: deviation,\n imageUrl: staticFileService.image(\"quickincidentregistration.jpg\"),\n previewImageUrl: staticFileService.previewImage(\"quickincidentregistration.jpg\"),\n description: $translate.instant(\"DASHBOARD_QUICK_INCIDENT_REGISTRATION_DESC\"),\n defaultXSize: 6,\n defaultYSize: 6\n\n });\n apps.push({\n name: $translate.instant(\"IMPROVEMENT_ONGOING\"),\n component: \"ongoingdeviation\",\n category: deviation,\n imageUrl: staticFileService.image(\"ongoingdeviation.jpg\"),\n previewImageUrl: staticFileService.previewImage(\"ongoingdeviation.jpg\"),\n description: $translate.instant(\"DASHBOARD_ONGOING_DEVIATION_DESC\"),\n defaultXSize: 28,\n defaultYSize: 20\n\n });\n apps.push({\n name: $translate.instant(\"DEVIATION_PARETO_CHALLENGES\"),\n component: \"deviationcategorysummary\",\n category: deviation,\n imageUrl: staticFileService.image(\"paretoDeviationCategories.jpg\"),\n previewImageUrl: staticFileService.previewImage(\"deviationCategorySummary.jpg\"),\n description: $translate.instant(\"DEVIATION_PARETO_CHALLENGES\"),\n defaultXSize: 14,\n defaultYSize: 12\n });\n }\n\n if (navigationService().hasModule(\"STRATEGY\")) {\n apps.push({\n name: $translate.instant(\"STRATEGY_BREAKDOWN\"),\n component: \"strategymapchart\",\n category: strategy,\n imageUrl: staticFileService.image(\"strategymapchart.jpg\"),\n previewImageUrl: staticFileService.previewImage(\"strategymapchart.jpg\"),\n description: $translate.instant(\"STRATEGY_BREAKDOWN_DESC\"),\n defaultXSize: 28,\n defaultYSize: 20\n\n });\n }\n\n if (authService.hasRole(\"KaizenAdmin\")) {\n apps.push({\n name: \"Debugger app, only for development\",\n component: \"debug\",\n category: \"Kaizen Solutions\",\n imageUrl: staticFileService.image(\"debugApp.jpg\"),\n previewImageUrl: staticFileService.previewImage(\"debugApp.jpg\"),\n description: \"DEBUGGING\",\n defaultXSize: 12,\n defaultYSize: 12\n });\n \n apps.push({\n name: $translate.instant(\"DASHBOARD_USERS_ONLINE\"),\n component: \"usersonline\",\n category: \"Kaizen Solutions\",\n imageUrl: staticFileService.image(\"usersonline.jpg\"),\n previewImageUrl: staticFileService.previewImage(\"usersonline.jpg\"),\n description: $translate.instant(\"DASHBOARD_USERS_ONLINE_DESC\")\n });\n\n }\n return apps;\n },\n\n\n };\n }\n return appstoreService;\n }]);","import envConfig from \"@common/envConfig\";\n\nangular.module(\"DigiLean\").factory('projectService', ['$http', '$translate',\n function ($http, $translate) {\n function projectService() {\n var resource = \"/project\";\n var resourceUrl = envConfig.webApiUrl + resource;\n\n return {\n getPostIts: function () {\n return [\n {\n id:0,\n title: \"default\",\n fillColor: \"#ffffff\",\n background: \"#f1f1f1\",\n color: \"#f1f1f1\"\n },\n {\n id:1,\n title: $translate.instant('DASHBOARD_OVERDUE'), // orange \n // fillColor: \"#FFCE54\", \n fillColor: \"#FFF6DF\",\n background: \"#FCBB42\",\n color: \"#ffffff\",\n },\n {\n id:2,\n title: $translate.instant('COMMON_OK'), // green\n // fillColor: \"#A0D468\",\n fillColor: \"#EDF7E3\",\n background: \"#8CC152\",\n color: \"#ffffff\",\n },\n {\n id:3,\n title: $translate.instant('COMMON_IN_PROGRESS'), //blue \n // fillColor: \"#4FC1E9\",\n fillColor: \"#DFF3FB\",\n background: \"#3BAFDA\",\n color: \"#ffffff\",\n },\n {\n id:4,\n title: $translate.instant('DASHBOARD_STUCK'), // red\n // fillColor: \"#FC6E51\",\n fillColor: \"#FEE4DF\",\n background: \"#E9573F\",\n color: \"#ffffff\",\n },\n {\n id:5,\n title: $translate.instant('BOARD_WAITING'), // pink\n // fillColor: \"#EC87C0\",\n fillColor: \"#FBE9F3\", \n background: \"#D770AD\",\n color: \"#ffffff\",\n }\n\n ];\n },\n \n getStatus: function () {\n return [\n { sortorder: 1,\n translatedText: $translate.instant('PROJECT_ON_HOLD'),\n description: $translate.instant('PROJECT_ON_HOLD_DESC'), \n dbCode: \"ONHOLD\",\n background:'#d9534f',\n color: '#fff'\n\n },\n { sortorder: 4,\n translatedText: $translate.instant('PROJECT_PROSPECT'), \n description: $translate.instant('PROJECT_PROSPECT_DESC'), \n dbCode: \"PROSPECT\",\n background:'#3bafda',\n color: '#fff'\n\n },\n { sortorder: 5,\n translatedText: $translate.instant('PROJECT_NOT_STARTED'), \n description: $translate.instant('PROJECT_NOT_STARTED_DESC'), \n dbCode: \"NOTSTARTED\",\n background:'#f8ac59',\n color: '#fff'\n\n },\n { sortorder: 10,\n translatedText: $translate.instant('COMMON_IN_PROGRESS'), \n description: $translate.instant('PROJECT_IN_PROGRESS_DESC'),\n dbCode: \"INPROGRESS\",\n background: '#5cb85c',\n color: '#fff'\n },\n {\n sortorder: 20,\n translatedText: $translate.instant('DEVIATION_CLOSED'), \n description: $translate.instant('PROJECT_CLOSED_DESC'),\n dbCode: \"CLOSED\",\n background: '#434348',\n color: '#fff'\n }\n ];\n },\n addProject: function (project) {\n var url = resourceUrl;\n return $http.post(url, project).then(function (result) {\n return result.data;\n });\n },\n addProjects: function (projects) {\n var url = resourceUrl + \"/addList\";\n return $http.post(url, projects).then(function (result) {\n return result.data;\n });\n },\n saveImage: function (projectId, imageId) {\n var url = resourceUrl + \"/saveImage\";\n var options = {\n projectId: projectId,\n imageId: imageId\n }\n return $http.put(url, options).then(function (result) {\n return result.data;\n });\n },\n hasAccess: function (projectId) {\n var url = resourceUrl + \"/hasAccess/\" + projectId;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n getProjectCustomerStats: function () {\n var url = resourceUrl + \"/getProjectCustomerStats/\";\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n getCustomerProjectsDeliveredOnTime: function() {\n var url = resourceUrl + \"/getCustomerProjectsDeliveredOnTime/\";\n return $http.get(url).then(function(result){\n return result.data;\n });\n },\n getCustomerProjectNoOfSuggestions: function() {\n var url = resourceUrl + \"/getCustomerProjectNoOfSuggestions/\";\n return $http.get(url).then(function(result){\n return result.data;\n });\n },\n getCustomerProjectNoOfDeviations: function() {\n var url = resourceUrl + \"/getCustomerProjectNoOfDeviations/\";\n return $http.get(url).then(function(result){\n return result.data;\n });\n },\n getLinks: function(projectId) {\n var url = resourceUrl + \"/getLinks/\" + projectId;\n return $http.get(url).then(function(result){\n return result.data;\n });\n },\n addLink: function (projectId, link) {\n var url = resourceUrl + \"/\" + projectId + \"/addLink\";\n return $http.post(url, link).then(function (result) {\n return result.data;\n });\n },\n deleteLink: function (projectId, linkId) {\n var url = resourceUrl + \"/\" + projectId + \"/deleteLink/\" + linkId;\n return $http.delete(url).then(function (result) {\n return result.data;\n });\n },\n getAttachments: function(projectId) {\n var url = resourceUrl + \"/getAttachments/\" + projectId;\n return $http.get(url).then(function(result){\n return result.data;\n });\n },\n addAttachment: function (projectId, fileInfo) {\n var url = resourceUrl + \"/\" + projectId + \"/addAttachment\";\n return $http.post(url, fileInfo).then(function (result) {\n return result.data;\n });\n },\n\n deleteAttachment: function (projectId, attachmentId) {\n var url = resourceUrl + \"/\" + projectId + \"/deleteAttachment/\" + attachmentId;\n return $http.delete(url).then(function (result) {\n return result.data;\n });\n },\n addProjectToBoard: function (projectId, boardId, sortOrder) {\n var url = resourceUrl + \"/addProjectToBoard/\";\n var projectBoard = {\n projectId: projectId,\n boardId: boardId,\n sortOrder: sortOrder\n }\n return $http.post(url, projectBoard).then(function (result) {\n return result.data;\n });\n },\n getBoardForProject: function (projectId) {\n var url = resourceUrl + \"/getBoardForProject/\" + projectId;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n removeProjectFromBoard: function (projectId, boardId, projectBoardId) {\n var url = resourceUrl + \"/removeProjectFromBoard/\";\n var projectBoard = {\n projectId: projectId,\n boardId: boardId,\n id: projectBoardId\n }\n return $http.post(url, projectBoard).then(function (result) {\n return result.data;\n });\n },\n addProjectAttributeToBoard: function (attribute) {\n var url = resourceUrl + \"/AddProjectAttributeToBoard/\";\n return $http.post(url, attribute).then(function (result) {\n return result.data;\n });\n },\n deleteProjectAttribute: function(attribute) {\n var url = resourceUrl + \"/DeleteProjectAttribute/\" + attribute.id;\n return $http.delete(url).then(function (result) {\n return result.data;\n });\n },\n updateProjectBoardSortOrder: function (boardId, sortOrder) {\n var url = resourceUrl + \"/updateProjectBoardSortOrder/\" + boardId ;\n return $http.put(url, sortOrder).then(function (result) {\n return result.data;\n });\n },\n updateProjectBoardRowSortOrder: function (boardId, sortOrder) {\n var url = resourceUrl + \"/updateProjectBoardRowSortOrder/\" + boardId ;\n return $http.put(url, sortOrder).then(function (result) {\n return result.data;\n });\n },\n updateProjectAttribute: function (attribute) {\n var url = resourceUrl + \"/updateProjectAttribute/\";\n return $http.put(url, attribute).then(function (result) {\n return result.data;\n });\n },\n updateProjectBoardAttribute: function (col) {\n var updated = {\n id: col.id,\n name: col.name,\n boardId: col.boardId\n }\n if (col.settings) { \n updated.settings = JSON.stringify(col.settings);\n }\n var url = resourceUrl + \"/updateProjectBoardAttribute/\";\n return $http.put(url, updated).then(function (result) {\n return result.data;\n });\n },\n getList: function (useCache){\n if (!useCache) useCache = false;\n return $http.get(resourceUrl, { cache: useCache}).then(function(result){\n return result.data;\n });\n },\n getOngoingProjects: function() {\n var url = resourceUrl + \"/getOngoingProjects/\";\n return $http.get(url).then(function(result){\n return result.data;\n });\n },\n getNextMilestonesForProject: function(projectId) {\n var url = resourceUrl + \"/GetNextMilestonesForProject/\" + projectId;\n return $http.get(url).then(function(result){\n return result.data;\n });\n },\n getMemberProjectPortfolio: function () { \n var url = resourceUrl + \"/GetMemberProjectPortfolio\";\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n getMemberProjectPortfolioInfo: function () { \n var url = resourceUrl + \"/GetMemberProjectPortfolioInfo\";\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n getProjectPortfolioForAdmin: function () { \n var url = resourceUrl + \"/GetProjectPortfolioForAdmin\";\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n \n \n /* could be useful\n getProgressProjects: function (){\n \n var currentfilter = [{\n sourceColumn: \"Status\",\n operator: \"InList\",\n items: [\"INPROGRESS\"]\n \n },{\n sourceColumn: \"Category\",\n operator: \"NotContain\",\n items: [\"A3\"]\n \n }]; \n var options= {\n filters: currentfilter\n }\n var url = resourceUrl + \"/getFilteredProjects\";\n return $http.post(url, options).then(function(result){\n return result.data;\n });\n },*/\n getActiveProjects: function (){\n \n var currentfilter = [{\n sourceColumn: \"Status\",\n operator: \"InList\",\n items: [\"New\", \"NOTSTARTED\",\"INPROGRESS\"]\n \n }]; \n var options= {\n filters: currentfilter\n }\n var url = resourceUrl + \"/getFilteredProjects\";\n return $http.post(url, options).then(function(result){\n return result.data;\n });\n },\n \n getMyProjects: function (){\n var url = resourceUrl + \"/getMyProjects\";\n return $http.get(url).then(function(result){\n return result.data;\n });\n },\n getProjectsInfo: function (){\n var url = resourceUrl + \"/GetProjectsInfo\";\n return $http.get(url).then(function(result){\n return result.data;\n });\n },\n \n getMyProjectsInfo: function (){\n var url = resourceUrl + \"/GetMyProjectsInfo\";\n return $http.get(url).then(function(result){\n return result.data;\n });\n }, \n GetMyProjectsMiniInfo: function (){ // only id and name\n var url = resourceUrl + \"/GetMyProjectsMiniInfo\";\n return $http.get(url).then(function(result){\n return result.data;\n });\n }, \n getUserProjects: function (userid){ \n var url = resourceUrl + \"/GetUserProjects/\" + userid;\n return $http.get(url).then(function(result){\n return result.data;\n });\n }, \n getBoardsForProject: function (projectId){\n var url = resourceUrl + \"/GetBoardsForProject/\"+ projectId;\n return $http.get(url).then(function(result){\n return result.data;\n });\n },\n getA3ForProject: function (projectId){\n var url = resourceUrl + \"/GetA3ForProject/\"+ projectId;\n return $http.get(url).then(function(result){\n return result.data;\n });\n },\n getDashboardsForProject: function (projectId){\n var url = resourceUrl + \"/GetDashboardsForProject/\"+ projectId;\n return $http.get(url).then(function(result){\n return result.data;\n });\n },\n getProjectListWithDeviation: function (){\n var url = resourceUrl + \"/getProjectListWithDeviation\";\n return $http.get(url).then(function(result){\n return result.data;\n });\n },\n getProjectListWithSuggestion: function (){\n var url = resourceUrl + \"/getProjectListWithSuggestion\";\n return $http.get(url).then(function(result){\n return result.data;\n });\n },\n getProjectListWithA3: function (){\n var url = resourceUrl + \"/getProjectListWithA3\";\n return $http.get(url).then(function(result){\n return result.data;\n });\n },\n getProjectInfo: function (projectId){\n var url = resourceUrl + \"/getProjectInfo/\" + projectId;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n getMilestone: function (milestoneId){\n var url = resourceUrl + \"/getMilestone/\" + milestoneId;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n \n \n updateParticipants: function (projectId, participantGroup) {\n var url = resourceUrl + \"/\" + projectId + \"/updateParticipants\";\n return $http.put(url, participantGroup).then(function (result) {\n return result.data;\n });\n },\n\n getMilestonesForProject: function (projectId) {\n var url = resourceUrl + \"/getMilestonesForProject/\" + projectId;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n\n \n\n getUsers: function (projectId) {\n var url = resourceUrl + \"/getUsers/\" + projectId;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n\n getProjectCustomers: function () {\n var url = resourceUrl + \"/getProjectCustomers/\";\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n\n createNewCustomer: function (customer) {\n var url = resourceUrl + \"/createNewCustomer/\";\n return $http.post(url,customer).then(function (result) {\n return result.data;\n });\n },\n saveUserProjects: function (userId, userprojects) {\n var url = resourceUrl + \"/SaveUserProjects/\" + userId;\n return $http.post(url, userprojects).then(function (result) {\n return result.data;\n });\n },\n \n updateCustomerInfo: function (customer) {\n var url = resourceUrl + \"/updateCustomerInfo/\";\n return $http.put(url,customer).then(function (result) {\n return result.data;\n });\n },\n updateProjectName: function (id, name) {\n var project = {\n id: id,\n name: name\n }\n var url = resourceUrl + \"/updateProjectName/\";\n return $http.put(url,project).then(function (result) {\n return result.data;\n });\n },\n updateOwner: function (projectid, user) {\n var project = {\n id: projectid,\n owner: user.fullName,\n ownerUserId : user.userId,\n ownerDisplayName: user.displayName\n }\n var url = resourceUrl + \"/updateOwner/\";\n return $http.put(url,project).then(function (result) {\n return result.data;\n });\n },\n addUser: function (projectid, user) {\n if(!user.assetRole){\n user.assetRole = 'Member';\n }\n var projectuser = {\n projectId: projectid,\n userId : user.userId,\n role: user.assetRole \n }\n var url = resourceUrl + \"/addUser/\";\n return $http.put(url,projectuser).then(function (result) {\n return result.data;\n });\n },\n removeUser: function (projectid, userId) {\n var projectuser = {\n projectId: projectid,\n userId : userId \n }\n var url = resourceUrl + \"/removeUser/\";\n return $http.put(url,projectuser).then(function (result) {\n return result.data;\n });\n },\n updateProjectStatus: function (id, dbstatus) {\n var project = {\n id: id,\n status: dbstatus\n }\n var url = resourceUrl + \"/updateProjectStatus/\";\n return $http.put(url,project).then(function (result) {\n return result.data;\n });\n },\n updateProjectNumber: function (id, projectNumber) {\n var project = {\n id: id,\n projectNumber: projectNumber\n }\n var url = resourceUrl + \"/updateProjectNumber/\";\n return $http.put(url,project).then(function (result) {\n return result.data;\n });\n },\n updateCustomer: function (id, customerId) {\n var project = {\n id: id,\n projectCustomerId: customerId\n }\n var url = resourceUrl + \"/updateProjectCustomer/\";\n return $http.put(url,project).then(function (result) {\n return result.data;\n });\n },\n deleteProjectCustomer: function (id) {\n var url = resourceUrl + \"/deleteProjectCustomer/\" + id;\n return $http.delete(url).then(function (result) {\n return result.data;\n });\n },\n /*\n updateStartDate: function (dateinfo) {\n var project = {\n id: dateinfo.id,\n startDate: dateinfo.startDate,\n estimatedStartDate: dateinfo.estimatedStartDate,\n \n }\n var url = resourceUrl + \"/updateStartDate/\";\n return $http.put(url,project).then(function (result) {\n return result.data;\n });\n },*/\n deleteProject: function (projectId) {\n var url = resourceUrl + \"/deleteProject/\" + projectId;\n return $http.delete(url).then(function (result) {\n return result.data;\n });\n },\n deleteMilestone: function (milestoneId) {\n var url = resourceUrl + \"/deleteMilestone/\" + milestoneId;\n return $http.delete(url).then(function (result) {\n return result.data;\n });\n },\n \n createMilestone: function (milestone) {\n var url = resourceUrl + \"/createMilestone/\";\n return $http.post(url,milestone).then(function (result) {\n return result.data;\n });\n },\n \n updateMilestone: function (milestone) {\n var url = resourceUrl + \"/updateMilestone/\";\n return $http.put(url,milestone).then(function (result) {\n return result.data;\n });\n },\n\n updateEstimatedStartDate: function (id, date) {\n var projectDate = {\n projectId: id,\n actionDate: date\n }\n var url = resourceUrl + \"/updateEstimatedStartDate/\" + id;\n return $http.put(url,projectDate).then(function (result) {\n return result.data;\n });\n },\n updateStartDate: function (id, date) {\n var projectDate = {\n projectId: id,\n actionDate: date\n }\n var url = resourceUrl + \"/updateStartDate/\" + id;\n return $http.put(url,projectDate).then(function (result) {\n return result.data;\n });\n },\n updateEstimatedEndDate: function (id, date) {\n var projectDate = {\n projectId: id,\n actionDate: date\n }\n var url = resourceUrl + \"/updateEstimatedEndDate/\" + id;\n return $http.put(url,projectDate).then(function (result) {\n return result.data;\n });\n },\n updateEndDate: function (id, endDate) {\n var projectDate = {\n projectId: id,\n actionDate: endDate\n }\n var url = resourceUrl + \"/updateEndDate/\" + id;\n return $http.put(url,projectDate).then(function (result) {\n return result.data;\n });\n },\n updateProjectDescription: function (id, description) {\n var projectDescription = {\n id: id,\n description: description\n }\n var url = resourceUrl + \"/updateProjectDescription/\";\n return $http.put(url,projectDescription).then(function (result) {\n return result.data;\n });\n },\n \n };\n }\n return projectService;\n }]);","import * as customerService from \"@common/services/customers/customerService\"\nimport * as profileService from \"@common/services/user/profileService\"\nimport * as timeService from \"@common/services/timeService\"\nimport * as boardService from \"@common/services/boardService\"\nimport * as translationService from \"@common/services/translationService\"\nimport * as employeeService from \"@common/services/employeeService\"\nimport * as profileImageService from \"@common/services/user/profileImageService\"\nimport envConfig from \"@common/envConfig\"\n\nangular\n .module('DigiLean')\n .directive(\"projectBoard\", ['$filter', '$state', '$translate', 'projectService', '$uibModal', 'excelService','navigationService', 'modalService', 'orderByFilter',\n function ($filter, $state, $translate, projectService, $uibModal, excelService, navigationService, modalService, orderByFilter) {\n return {\n templateUrl: 'projectboard.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'isAdminMode': '=',\n 'options': ' 0) {\n foundColumn[0].sort = \"none\"; //reset saved sortorder, but not changing settings \n }\n }\n if (!column.sort) column.sort = \"none\";\n column.sort = getNextSortOrder(column.sort);\n $scope.sortColumn = column;\n $scope.sortColumnIndex = $scope.projectColumns.indexOf(column);\n if (column.sort == \"none\") {\n $scope.projects = orderByFilter($scope.projects, 'sortOrder');\n }\n if (column.sort == \"asc\") {\n $scope.projects = orderByFilter($scope.projects, getSortValue, false);\n }\n if (column.sort == \"desc\") {\n $scope.projects = orderByFilter($scope.projects, getSortValue, true);\n }\n if($scope.isAdminMode) {\n if(column.sort == \"desc\" || column.sort == \"asc\"){\n $scope.settingsSortColumn = {\n id: column.id,\n attributeType: column.attributeType,\n sort: column.sort,\n };\n } else {\n $scope.settingsSortColumn = null;\n }\n updateSettings();\n }\n }\n\n var getNextSortOrder = function (currentSortOrder) {\n if (currentSortOrder == \"none\") return \"asc\";\n if (currentSortOrder == \"asc\") return \"desc\";\n if (currentSortOrder == \"desc\") return \"none\";\n }\n\n var getSortValue = function (project) {\n if (project.cellModels) {\n var cell = project.cellModels[$scope.sortColumnIndex];\n return cell.getSortValue();\n }\n return project.name;\n\n }\n\n function setSettings(){\n if ($scope.board.settings) {\n $scope.settings = JSON.parse($scope.board.settings);\n if ($scope.settings.settingsSortColumn) {\n $scope.settingsSortColumn = $scope.settings.settingsSortColumn;\n }\n } \n }\n \n // load users\n async function getAllUsers() {\n $scope.users = await profileImageService.getAllUsersIncludeProfileImage()\n }\n getAllUsers();\n\n $scope.$watch('query', function () {\n $scope.searchQuery = angular.copy($scope.query);\n });\n\n $scope.$watch(\"isAdminMode\", function () {\n\n });\n $scope.$watch(\"options\", function (options) {\n setHeightBasedOnOptions($scope.options);\n });\n\n $scope.toggleViewMode = function (viewMode) {\n $scope.viewMode = viewMode;\n }\n\n $scope.exportToExcel = function () {\n excelService().exportProjectBoard($scope.board.id);\n }\n\n function setHeightBasedOnOptions(options) {\n if (!options) {\n setHeight();\n return;\n }\n if (options.targetHeight) {\n setHeight(options.targetHeight);\n } else {\n setHeight();\n }\n }\n\n function setHeight(targetHeight) {\n if (!targetHeight) {\n var boardContainer = $(elem).find(\".project-board-container\");\n\n var offset = boardContainer.offset();\n var windowHeight = $(window).height();\n var boardTargetHeight = windowHeight - offset.top - 20;\n if (boardTargetHeight < 500) boardTargetHeight = 500;\n boardContainer.css(\"height\", boardTargetHeight);\n } else {\n var optionsHeight = 80;\n var boardTableHeight = targetHeight - optionsHeight\n $(elem).find(\".project-board-container\").css(\"height\", boardTableHeight);\n }\n\n\n }\n $scope.search = function (query) {\n //$scope.searchPerformed = false;\n $scope.searchQuery = angular.copy(query);\n // $scope.searchResult = true;\n }\n\n $scope.showMoreColumns = function () {\n\n var options = {\n context: \"project\"\n }\n var modalInstance = $uibModal.open({ backdrop: 'static',\n templateUrl: 'projectCellSelection.html',\n controller: 'projectCellSelectionController',\n windowClass: 'fullDeviation-modal-window',\n resolve: {\n options:options\n }\n });\n modalInstance.result.then(function (result) {\n if (result) {\n $scope.addColumn(result); //addColumn('textfromapp')\n }\n });\n };\n\n var updatedEditable = function () {\n // if ($scope.canEdit && $scope.isAdminMode) {\n // $scope.editable = true;\n // } else {\n // $scope.editable = false;\n // }\n if ($scope.isAdminMode) {\n $scope.editable = true;\n } else {\n $scope.editable = false;\n }\n $scope.editable = true;\n }\n\n // Drag and drop of rows events\n $scope.$on('row-header-bag.drop-model', function (e, el) {\n if($scope.canEdit){\n var rowOrder = $scope.projects;\n var sortOrder = [];\n for (var i = 0; i < $scope.projects.length; i++) {\n var row = $scope.projects[i];\n var rowOrder = {\n rowId: row.id,\n sortOrder: i\n }\n sortOrder.push(rowOrder)\n }\n projectService().updateProjectBoardRowSortOrder($scope.board.id, sortOrder).then(function () {\n\n });\n }\n\n });\n // Drag and drop of columns events\n $scope.$on('column-header-bag.drop-model', function (e, el) {\n if($scope.canEdit){\n var columnOrder = $scope.projectColumns;\n var sortOrder = [];\n for (var i = 0; i < $scope.projectColumns.length; i++) {\n var column = $scope.projectColumns[i];\n var columnOrder = {\n boardAttributeId: column.id,\n sortOrder: i\n }\n sortOrder.push(columnOrder)\n }\n projectService().updateProjectBoardSortOrder($scope.board.id, sortOrder).then(function () {\n\n });\n }\n });\n $scope.$on('column-header-bag.drag', function (e, el) {\n $(el).find(\".drag-drop-icon\").hide();\n $(el).find(\".option-icon\").hide();\n el.addClass('drag-moved');\n });\n\n $scope.$on('column-header-bag.drop', function (e, el) {\n $(el).find(\".drag-drop-icon\").show();\n $(el).find(\".option-icon\").show();\n el.removeClass('drag-moved');\n });\n\n $scope.$on('column-header-bag.dragend', function (e, el) {\n $(el).find(\".drag-drop-icon\").show();\n $(el).find(\".option-icon\").show();\n });\n\n $scope.$on('column-header-bag.over', function (e, el) {\n el.addClass('drag-over');\n })\n $scope.$on('column-header-bag.out', function (e, el) {\n el.removeClass('drag-over');\n });\n\n $scope.$watch(\"model\", function () {\n if ($scope.model == null) return;\n $scope.board = $scope.model.board;\n\n boardService.canEdit($scope.board.id).then(function (canEdit) {\n $scope.canEdit = canEdit;\n $scope.editable = canEdit;\n \n });\n\n navigationService().isBoardAdmin($scope.board.id).then(function (isAdmin) {\n $scope.hasBoardDesignerPrivileges = isAdmin;\n });\n\n $scope.projectColumns = $scope.model.attributes;\n $scope.projects = $scope.model.projects;\n $scope.title = $scope.board.name;\n if ($scope.projects) {\n for (var i = 0; i < $scope.projects.length; i++) {\n var project = $scope.projects[i];\n project.cellModels = [];\n calculateProjectAttributes(project, $scope.projectColumns)\n }\n setSettings();\n setTimeout(function () {\n setColumnSorting();\n }, 500);\n \n }\n checkFavorite();\n });\n\n $scope.subscribe(\"BoardNameUpdated\", function (boardname) {\n if (boardname.boardId === $scope.board.id) {\n $scope.title = boardname.name;\n }\n });\n\n\n\n $scope.subscribe(\"ProjectBoardAttributeUpdated\", function (boardattribute) {\n if (boardattribute.boardId === $scope.board.id) {\n // $scope.projectColumns\n var hasColumn = $filter('filter')($scope.projectColumns, { id: boardattribute.id }, true);\n if (hasColumn.length > 0) {\n var column = hasColumn[0];\n if (column.name !== boardattribute.name) {\n column.name = boardattribute.name;\n }\n if (boardattribute.settings) {\n column.settings = JSON.parse(boardattribute.settings);\n }\n //TODO: antar vi kan legge til endring i kolonnerekkefølgen også på dette tidspunktet\n }\n }\n });\n\n\n $scope.subscribe(\"ProjectAddedToBoard\", function (projectBoardItem) {\n if (projectBoardItem.boardId === $scope.board.id) {\n var isPartOfBoard = $filter('filter')($scope.projects, { projectBoardId: projectBoardItem.id });\n if (isPartOfBoard === undefined || isPartOfBoard.length === 0) {\n var project = {\n project: projectBoardItem.project,\n attributes: [],\n projectBoardId: projectBoardItem.id\n }\n project.cellModels = [];\n calculateProjectAttributes(project, $scope.projectColumns);\n $scope.projects.push(project);\n }\n }\n });\n $scope.subscribe(\"ProjectRemovedFromBoard\", function (projectBoardItem) {\n var isPartOfBoard = $filter('filter')($scope.projects, { projectBoardId: projectBoardItem.id });\n if (isPartOfBoard && isPartOfBoard.length === 1) {\n var projectItem = isPartOfBoard[0];\n projectItem.cssState = \"animated slideOutRight\"; // Add animation\n var index = $scope.projects.indexOf(projectItem);\n if (index > -1) {\n $scope.projects.splice(index, 1);\n }\n\n }\n });\n $scope.subscribe(\"ProjectBoardSortOrderChanged\", function (payLoad) {\n if (payLoad.boardId === $scope.board.id) {\n boardService.get(payLoad.boardId).then(function (model) {\n $scope.model = model;\n });\n }\n });\n\n $scope.subscribe(\"ProjectBoardRowSortOrderChanged\", function (payLoad) {\n if (payLoad.boardId === $scope.tableId) {\n boardService.get(payLoad.boardId).then(function (model) {\n $scope.model = model;\n });\n }\n });\n $scope.subscribe(\"ProjectDeleted\", function (payLoad) {\n var foundProject = null;\n for (var p = 0; p < $scope.projects.length; p++) {\n if ($scope.projects[p].id === payLoad.id) {\n foundProject = $scope.projects[p];\n foundProject.cssState = \"animated slideOutRight\";\n $scope.projects.splice(p, 1);\n break;\n }\n }\n });\n\n\n var calculateProjectAttributes = function (project, boardAttributes) {\n project.id = project.project.id;\n for (let index = 0; index < boardAttributes.length; index++) {\n let attribute = boardAttributes[index];\n var cellModel = {\n project: project.project,\n column: attribute,\n boardAttributeId: attribute.id,\n projectAttribute: null\n };\n var hasAttribute = $filter('filter')(project.attributes, { projectBoardAttributeId: attribute.id }, true);\n if (hasAttribute.length > 0) {\n attribute = hasAttribute[0];\n if (attribute.value) {\n attribute.value = JSON.parse(attribute.value);\n }\n cellModel.projectAttribute = attribute;\n } else {\n // Create default attribute\n cellModel.projectAttribute = {\n id: 0,\n projectId: project.project.id,\n projectBoardAttributeId: attribute.id,\n value: null\n }\n }\n if (cellModel.column.settings && typeof (cellModel.column.settings) === \"string\") {\n cellModel.column.settings = JSON.parse(cellModel.column.settings);\n }\n // calculateColumnSum(boardAttributes[index]);\n project.cellModels.push(cellModel)\n }\n }\n\n var addAttributeToProjects = function (attribute) {\n for (let index = 0; index < $scope.projects.length; index++) {\n var project = $scope.projects[index];\n var cellModel = {\n project: project.project,\n column: attribute,\n boardAttributeId: attribute.id,\n projectAttribute: null\n }\n // Create default attribute\n cellModel.projectAttribute = {\n id: 0,\n projectId: project.project.id,\n projectBoardAttributeId: attribute.id,\n value: null\n }\n project.cellModels.push(cellModel)\n }\n }\n\n function setColumnSorting(){\n if(!$scope.projects) return;\n if($scope.settingsSortColumn){\n var foundColumn = $filter('filter')($scope.projectColumns, { id: $scope.settingsSortColumn.id }, true);\n if (foundColumn.length > 0) {\n $scope.sortColumnIndex = $scope.projectColumns.indexOf(foundColumn[0]);\n foundColumn[0].sort = $scope.settingsSortColumn.sort;\n if (foundColumn[0].sort == \"asc\") {\n $scope.projects = orderByFilter($scope.projects, getSortValue, false);\n }\n if (foundColumn[0].sort == \"desc\") {\n $scope.projects = orderByFilter($scope.projects, getSortValue, true);\n }\n }\n }\n }\n\n $scope.toggleAdminMode = function () {\n $scope.isAdminMode = !$scope.isAdminMode;\n }\n $scope.columnNameUpdated = function (column) {\n projectService().updateProjectBoardAttribute(column).then(function (attribute) {\n\n })\n }\n $scope.titleUpdated = function (title) {\n var boardName = {\n boardId: $scope.board.id,\n name: title\n }\n boardService.updateName($scope.board.id, boardName).then(function (result) {\n });\n }\n\n\n $scope.addColumn = function (type) {\n if (type === \"numberAutomatic\") {\n addNumberAutomaticColumn(type);\n } else if (type === \"textfromapp\") {\n addTextFromAppColumn(type);\n } else if (type === \"targetfromapp\") {\n addTargetFromAppColumn(type);\n } else {\n var headertext = translationService.getTranslatedSmartColumnName(type);\n if (headertext === \"\") {\n headertext = type.charAt(0).toUpperCase() + type.slice(1);\n }\n\n var attribute = {\n boardId: $scope.board.id,\n name: headertext,\n attributeType: type,\n sortOrder: $scope.projectColumns.length - 1\n }\n projectService().addProjectAttributeToBoard(attribute).then(function (savedAttribute) {\n\n })\n\n }\n }/*\n $scope.periodChangedHandler = function (timePeriod) {\n if (!timePeriod.timeframe) return;\n if (scope.timePeriod && scope.timePeriod.period.from === timePeriod.period.from && scope.timePeriod.period.to === timePeriod.period.to) return;\n scope.timePeriod = timePeriod;\n scope.options.timePeriod = timePeriod;\n loadData();\n col.settings.timePeriod = timePeriod; //result = timePeriod.timeframe e.g.\"all\"\n var payload = {\n boardAttributeId: col.id,\n timePeriod: col.settings.timePeriod\n }\n $scope.publish(\"ProjectNumberCellAutomaticTimeframeUpdated\", payload);\n \n projectService().updateProjectBoardAttribute(col).then(function (attribute) {\n\n })\n }*/\n $scope.editTimeframe = function (col) {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'timeframeSelectorModal.html',\n controller: 'timeframeSelectorModal',\n resolve: {\n timePeriod: function () {\n return col.settings.timePeriod;\n }\n }\n });\n\n modalInstance.result.then(function (result) {\n col.settings.timePeriod = result; //result = timePeriod.timeframe e.g.\"all\"\n \n var payload = {\n boardAttributeId: col.id,\n timePeriod: col.settings.timePeriod\n }\n $scope.publish(\"ProjectNumberCellAutomaticTimeframeUpdated\", payload);\n\n projectService().updateProjectBoardAttribute(col).then(function (attribute) {\n\n })\n\n });\n\n }\n $scope.getTimeframeLabel = function (timeframe) {\n return timeService.getTimeframeLabel(timeframe);\n }\n $scope.predefinedIcons = function (col) {\n if (!col.settings) {\n col.settings = {};\n }\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'predefinedIcons.html',\n controller: 'predefinedIcons',\n resolve: {\n labels: function () {\n return col.settings.predefinedIcons;\n }\n }\n });\n\n modalInstance.result.then(function (result) {\n if (!col.settings) {\n col.settings = {};\n }\n col.settings.predefinedIcons = result;\n var payload = {\n type: 'project',\n boardAttributeId: col.id,\n columnId: col.id,\n predefinedIcons: col.settings.predefinedIcons\n }\n $scope.publish(\"SmartIconCellSelectorUpdated\", payload);\n projectService().updateProjectBoardAttribute(col).then(function (attribute) {\n\n })\n\n });\n }\n $scope.predefinedLabels = function (col) {\n if (col.settings.usePredefinedLabels) {\n var dataSource = null;\n var filters = null;\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'predefinedLabels.html',\n controller: 'predefinedLabels',\n resolve: {\n labels: function () {\n return col.settings.predefinedLabels;\n }\n }\n });\n\n modalInstance.result.then(function (result) {\n col.settings.predefinedLabels = result;\n var payload = {\n boardAttributeId: col.id,\n predefinedLabels: col.settings.predefinedLabels,\n usePredefinedLabels: col.settings.usePredefinedLabels\n }\n $scope.publish(\"ProjectTextCellLabelUpdated\", payload);\n\n projectService().updateProjectBoardAttribute(col).then(function (attribute) {\n\n })\n\n });\n } else {\n col.settings.usePredefinedLabels = false;\n var payload = {\n projectAttributeId: col.id,\n predefinedLabels: col.settings.predefinedLabels,\n usePredefinedLabels: col.settings.usePredefinedLabels\n }\n $scope.publish(\"ProjectTextCellLabelUpdated\", payload);\n\n projectService().updateProjectBoardAttribute(col).then(function (attribute) {\n\n })\n }\n }\n\n \n $scope.changeDateColor = function (col) {\n\n if (col.settings.changeColor) {\n if(!col.settings.changeColorXDaysBefore){\n col.settings.changeColorXDaysBefore = 1;\n }\n var payload = {\n projectAttributeId: col.id,\n changeColor: col.settings.changeColor,\n changeColorXDaysBefore: col.settings.changeColorXDaysBefore\n }\n $scope.publish(\"ProjectDateColorCellUpdated\", payload);\n\n projectService().updateProjectBoardAttribute(col).then(function (attribute) {\n\n })\n } else {\n col.settings.changeColor = false;\n var payload = {\n projectAttributeId: col.id,\n changeColor: col.settings.changeColor,\n changeColorXDaysBefore: col.settings.changeColorXDaysBefore\n }\n $scope.publish(\"ProjectDateColorCellUpdated\", payload);\n\n projectService().updateProjectBoardAttribute(col).then(function (attribute) {\n\n })\n }\n }\n\n $scope.updateChangeColorXDaysBefore = function (col) {\n col.settings.changeColor = true;\n var payload = {\n projectAttributeId: col.id,\n changeColor: col.settings.changeColor,\n changeColorXDaysBefore: col.settings.changeColorXDaysBefore\n }\n $scope.publish(\"ProjectDateColorCellUpdated\", payload);\n\n projectService().updateProjectBoardAttribute(col).then(function (attribute) {\n\n })\n \n }\n\n \n $scope.columnWidthChangeHandler = function(col){\n if(col){\n projectService().updateProjectBoardAttribute(col).then(function (attribute) {\n })\n }\n }\n\n function addTextFromAppColumn(type) {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n templateUrl: 'cellCloneSelectorForm.html',\n controller: 'cellCloneSelectorController',\n resolve: {\n celltype: function () {\n return type\n }\n }\n });\n\n modalInstance.result.then(function (result) {\n var test = result;\n if (result) {\n /*var cellSettings = JSON.stringify({\n visualizationType: result.name, \n cloneId: result.id\n });*/\n var cellSettings = JSON.stringify({\n visualizationType: result\n })\n var attribute = {\n boardId: $scope.board.id,\n name: result,\n attributeType: type,\n sortOrder: $scope.projectColumns.length - 1,\n settings: cellSettings,\n\n }\n projectService().addProjectAttributeToBoard(attribute).then(function (savedAttribute) {\n });\n }\n\n }, function () {\n\n });\n };\n function addTargetFromAppColumn(type) {\n\n //var visualizationType = null;\n var modalInstance = $uibModal.open({ backdrop: 'static',\n templateUrl: 'targetVisualizationSelectorForm.html',\n controller: 'targetVisualizationSelectorController'\n });\n\n modalInstance.result.then(function (result) {\n\n var cellSettings = JSON.stringify({\n visualizationType: result\n })\n var attribute = {\n boardId: $scope.board.id,\n name: result,\n attributeType: type,\n sortOrder: $scope.projectColumns.length - 1,\n settings: cellSettings,\n\n }\n projectService().addProjectAttributeToBoard(attribute).then(function (savedAttribute) {\n });\n\n }, function () {\n\n });\n };\n function addNumberAutomaticColumn(type) {\n\n var dataSource = null;\n var filters = null;\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'dataSourceSingleSelector.html',\n controller: 'dataSourceSingleSelector',\n windowClass: 'newdeviation-modal-window',\n resolve: {\n hasDataSerie: function () {\n return false;\n },\n dataSource: function () {\n return dataSource;\n },\n filters: function () {\n return filters;\n },\n withTarget: function () {\n return false;\n },\n type: function () {\n return \"PROJECT\";\n },\n externalOnly: function () {\n return false;\n }\n }\n });\n\n modalInstance.result.then(function (result) {\n\n var timePeriod = {\n timeframe: \"all\",\n period: timeService.getTimePeriod(\"all\")\n }\n\n var unit = null;\n if (result.dataSource.valueElement) {\n unit = result.dataSource.valueElement.unit;\n }\n\n\n var cellSettings = JSON.stringify({\n dataSource: result.dataSource,\n timePeriod: timePeriod,\n filters: result.filters,\n aggregateType: \"SUM\",\n unit: unit,\n unitPlacement: \"right\"\n })\n var attribute = {\n boardId: $scope.board.id,\n name: result.dataSource.title,\n attributeType: type,\n sortOrder: $scope.projectColumns.length - 1,\n settings: cellSettings,\n\n }\n projectService().addProjectAttributeToBoard(attribute).then(function (savedAttribute) {\n })\n\n });\n };\n\n $scope.deleteColumn = function (column) {\n projectService().deleteProjectAttribute(column);\n }\n\n $scope.updateAggregateType = function (col) {\n var payload = {\n projectAttributeId: col.id,\n aggregateType: col.settings.aggregateType\n }\n $scope.publish(\"ProjectNumberCellAggregateTypeUpdated\", payload);\n\n projectService().updateProjectBoardAttribute(col).then(function (attribute) {\n })\n };\n $scope.updateUnit = function (col) {\n var payload = {\n projectAttributeId: col.id,\n unit: col.settings.unit\n }\n $scope.publish(\"ProjectNumberCellUnitUpdated\", payload);\n\n projectService().updateProjectBoardAttribute(col).then(function (attribute) {\n })\n };\n $scope.updateUnitPlacement = function (col) {\n var payload = {\n projectAttributeId: col.id,\n unitPlacement: col.settings.unitPlacement\n }\n $scope.publish(\"ProjectNumberCellUnitPlacementUpdated\", payload);\n\n projectService().updateProjectBoardAttribute(col).then(function (attribute) {\n })\n };\n $scope.updateDecimals = function (col) {\n var payload = {\n projectAttributeId: col.id,\n decimals: col.settings.decimals\n }\n $scope.publish(\"ProjectNumberCellDecimalUpdated\", payload);\n\n\n projectService().updateProjectBoardAttribute(col).then(function (attribute) {\n\n })\n\n };\n\n\n\n $scope.subscribe(\"ProjectBoardAttributeAdded\", function (attribute) {\n if (attribute.boardId === $scope.board.id) {\n var hasColumn = $filter('filter')($scope.projectColumns, { id: attribute.id }, true);\n if (hasColumn.length === 0) {\n if (attribute.settings) {\n attribute.settings = JSON.parse(attribute.settings);\n }\n addAttributeToProjects(attribute);\n $scope.projectColumns.push(attribute);\n }\n }\n });\n $scope.subscribe(\"ProjectBoardAttributeDeleted\", function (attribute) {\n /*var hasColumn = $filter('filter')($scope.projectColumns, { id: attribute.id }, true);\n if (hasColumn.length > 0) {\n var column = hasColumn[0];\n var index = $scope.projectColumns.indexOf(column);\n $scope.projectColumns.splice(index, 1);\n }*/\n if (attribute.boardId === $scope.board.id) {\n boardService.get(attribute.boardId).then(function (model) {\n $scope.model = model;\n });\n }\n });\n\n $scope.projectAttributeChangeHandler = function (projectAttribute) {\n if (projectAttribute.value) {\n projectAttribute.value = JSON.stringify(projectAttribute.value);\n }\n\n projectService().updateProjectAttribute(projectAttribute).then(function (savedAttribute) {\n // Parse value again\n projectAttribute.id = savedAttribute.id;\n if (savedAttribute.value) {\n projectAttribute.value = JSON.parse(savedAttribute.value);\n }\n });\n }\n\n $scope.addExisting = function (projecttype) {\n\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'projectSelectorModal.html',\n controller: 'projectSelectorController',\n resolve: {\n existing: function () {\n return $scope.projects;\n }\n }\n });\n\n modalInstance.result.then(function (exisitingProject) {\n if (exisitingProject) {\n var lastInList = getHighestSortOrder() + 1;\n projectService().addProjectToBoard(exisitingProject.id, $scope.model.board.id, lastInList).then(function (projectboard) {\n });\n }\n }, function () {\n });\n\n\n }\n $scope.addProject = function () {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'projectNewModal.html',\n controller: 'projectNewController',\n resolve: {\n existing: function () {\n return $scope.projects;\n }\n }\n });\n\n modalInstance.result.then(function (newproject) {\n\n if (newproject) {\n\n projectService().addProject(newproject).then(function (createdProject) {\n var lastInList = getHighestSortOrder() + 1;\n projectService().addProjectToBoard(createdProject.id, $scope.model.board.id, lastInList).then(function (projectboard) {\n\n });\n });\n }\n }, function () {\n });\n }\n\n\n\n\n $scope.addSmarttableRow = function () {\n var newItem = {\n name: $translate.instant('COMMON_NEW'),\n category: \"SmartTable\"\n };\n\n projectService().addProject(newItem).then(function (createdProject) {\n var lastInList = getHighestSortOrder();\n projectService().addProjectToBoard(createdProject.id, $scope.model.board.id, lastInList).then(function (projectboard) {\n\n });\n });\n }\n\n function getHighestSortOrder(){\n var highestSortOrder = 1;\n for(var i=0; i<$scope.projects.length; i++){\n if($scope.projects[i].sortOrder >= highestSortOrder){\n highestSortOrder = $scope.projects[i].sortOrder + 1;\n }\n }\n\n return highestSortOrder;\n }\n\n $scope.deleteBoard = function () {\n if (!$scope.hasBoardDesignerPrivileges) return;\n $translate(['COMMON_CANCEL', 'COMMON_DELETE', 'ADMIN_DELETED_BOARD', 'ADMIN_DELETED_BOARD_DESCRIPTION']).then(function (translations) {\n var modalOptions = {\n closeButtonText: translations.COMMON_CANCEL,\n actionButtonText: translations.ADMIN_DELETED_BOARD,\n headerText: translations.COMMON_DELETE + ' ' + $scope.title + '?',\n bodyText: translations.ADMIN_DELETED_BOARD_DESCRIPTION\n };\n\n modalService.showModal({}, modalOptions).then(function (result) {\n boardService.deleteBoard($scope.model.board.id).then(function () {\n $state.go('myspace');\n $scope.publish(\"SendBoardDeleted\", $scope.model.board.id);\n });\n });\n\n });\n }\n\n $scope.delete = function (projectinfo) {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'projectDeleteModal.html',\n controller: 'projectDeleteController',\n resolve: {\n board: $scope.model.board,\n projectInfo: projectinfo\n\n }\n });\n\n modalInstance.result.then(function (result) {\n }, function () {\n });\n }\n\n\n $scope.calculateNumberCellTotal = function (colDef) {\n var total = 0;\n for (var i = 0; i < colDef.projectAttributes.length; i++) {\n /*var cellNumber = $filter('filter')(project.attributes, { projectBoardAttributeId: attribute.id }, true);\n if (hasAttribute.length > 0) {\n var attribute = hasAttribute[0];\n if (attribute.value) {\n attribute.value = JSON.parse(attribute.value);\n }\n cellModel.projectAttribute = attribute;\n }*/\n var value = colDef.projectAttributes[i].value;\n var valueObject = JSON.parse(value);\n var cellNumber = valueObject.number;\n if (cellNumber) {\n total = total + cellNumber;\n }\n }\n return total;\n }\n\n $scope.addToFavorites = function () {\n $scope.isStar = true;\n var board = {\n id: $scope.board.id,\n name: $scope.title\n };\n $scope.quickAccess.push(board);\n saveQuickAccess();\n }\n $scope.removeFromFavorites = function () {\n $scope.isStar = false;\n var isFavorite = $filter('filter')($scope.quickAccess, { id: $scope.board.id })\n if (isFavorite.length > 0) {\n var currentIndex = $scope.quickAccess.indexOf(isFavorite[0]);\n $scope.quickAccess.splice(currentIndex, 1);\n saveQuickAccess();\n }\n }\n\n function updateSettings() {\n if ($scope.isAdminMode) {\n var settings = {\n boardId: $scope.board.id,\n settingsSortColumn: $scope.settingsSortColumn\n };\n // Save as board settings\n boardService.updateSettings($scope.board.id, settings);\n }\n }\n function saveQuickAccess() {\n employeeService.updateUserPreference(\"ProjectPortfolioFavorites\", $scope.quickAccess).then(function (settings) {\n $scope.publish(\"ProjectPortfolioFavoritesChanged\", $scope.quickAccess);\n });\n }\n\n function checkFavorite(){\n employeeService.getUserPreference(\"ProjectPortfolioFavorites\").then(function (settings) {\n if (settings && settings.value) {\n angular.forEach(settings.value, function (board) {\n if (board) {\n if(board.id == $scope.board.id){\n $scope.isStar = true;\n }\n $scope.quickAccess.push(board);\n }\n });\n }\n });\n }\n\n }\n }\n }]);","import * as timeService from \"@common/services/timeService\"\n\nangular\n .module('DigiLean')\n .directive(\"projectportfolioTimeview\", ['$filter', '$uibModal', '$state', 'boardTaskService', 'dragulaService', 'yearlyboardRenderService', 'monthlyRenderService', 'weeklyRenderService', 'boardRowProvider', 'actionListRowProvider','debounce',\n function ($filter, $uibModal, $state, boardTaskService, dragulaService, yearlyboardRenderService, monthlyRenderService, weeklyRenderService, boardRowProvider, actionListRowProvider, debounce) {\n return {\n templateUrl: 'projectportfolioTimeview.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'options': '=',\n 'boardId' : '=',\n 'optionsChangeHandler': '&?'\n },\n link: function (scope, elem, attrs) {\n var yearlyViewModeProvider = {\n viewMode: \"year\",\n renderService: yearlyboardRenderService,\n load: function () { loadYear() }\n }\n var monthlyViewModeProvider = {\n viewMode: \"month\",\n renderService: monthlyRenderService,\n load: function () { loadMonth() }\n }\n var weeklyViewModeProvider = {\n viewMode: \"week\",\n renderService: weeklyRenderService,\n load: function () { loadWeek() }\n }\n\n //var locale = 'fr';\n\n // Row provider\n var rowProvider = boardRowProvider; // Default provider\n\n // Possible categories to group by => Category should provide rows\n scope.categories = []\n scope.selectedCategory = []\n scope.useCategorySelection = false; // Active when smartActionList\n\n scope.months = timeService.getMonths();\n scope.data = {\n rows: [],\n tasks: []\n }\n\n // Task detail level\n scope.taskDetailLevel = \"compact\";\n scope.showPostIts = false;\n scope.postIts = null;\n // --------- SET DEFAULT TiMES -----------\n scope.selectedYear = moment().year(); // Get currentYear if not set\n var currentMonth = moment().month();\n var month = scope.months[currentMonth];\n month.weeks = timeService.getWeeksInMonth(scope.selectedYear, month.id);\n scope.selectedMonth = month;\n setMonthSelection();\n var currentWeek = moment().isoWeek();\n var hasWeek = $filter('filter')(scope.selectedMonth.weeks, { number: currentWeek }, true);\n if (hasWeek.length > 0) {\n scope.selectedWeek = hasWeek[0];\n } else {\n scope.selectedWeek = scope.selectedMonth.weeks[0];\n }\n setWeekSelection();\n var getDisplayPeriods = function () {\n return {\n year: scope.selectedYear,\n month: scope.selectedMonth,\n week: scope.selectedWeek,\n }\n }\n\n // --------- SET VIEW MODES -----------\n scope.selectedViewMode = yearlyViewModeProvider;\n scope.viewModeSelection = 'year';\n var currentViewMode = \"year\";\n\n\n\n // SETUP AND OPTIONS\n scope.showTeamMembers = false;\n scope.showHeader = false;\n scope.useActionList = false;\n scope.showWrench = true;\n scope.isUnprocessedFilterActive = false;\n\n scope.goToProjectHub = function (projectid) {\n $state.go('projectDetails', { id: projectid }, { reload: false });\n }\n\n // filter\n /*\n scope.filterUser = function (user) {\n for (let index = 0; index < scope.data.tasks.length; index++) {\n const task = scope.data.tasks[index];\n\n if (!user) { // If no user is filter, then all are visible\n task.isVisible = true;\n task.animate(\"fadeInLeft\");\n continue;\n }\n // If selected user, than apply filter\n if (task.responsibleUserId == user.userId) {\n task.isVisible = true;\n task.animate(\"fadeInLeft\");\n } else {\n task.isVisible = false;\n task.animate(\"fadeOutRight\");\n }\n\n }\n\n }\n\n scope.resetFilter = function () {\n scope.isUnprocessedFilterActive = false;\n for (let index = 0; index < scope.data.tasks.length; index++) {\n const task = scope.data.tasks[index]; \n task.isVisible = true;\n task.animate(\"fadeInLeft\");\n }\n }\n\n scope.filterOnStatusBlank = function () {\n scope.isUnprocessedFilterActive = true;\n for (let index = 0; index < scope.data.tasks.length; index++) {\n const task = scope.data.tasks[index];\n\n // If status is not blank, than apply filter\n if (task.status == 'blank') {\n task.isVisible = true;\n task.animate(\"fadeInLeft\");\n } else {\n task.isVisible = false;\n task.animate(\"fadeOutRight\");\n }\n\n }\n }*/\n\n scope.$watch(\"options\", function (options) {\n if (!options) return;\n if (options.showTeamMembers) {\n scope.showTeamMembers = options.showTeamMembers;\n }\n if (options.showHeader) {\n scope.showHeader = options.showHeader;\n }\n if (options.useActionList) {\n scope.useActionList = options.useActionList;\n scope.useCategorySelection = true;\n // Set actionlist rowProvider\n rowProvider = actionListRowProvider;\n }\n\n if (options.taskDetailLevel) {\n scope.taskDetailLevel = options.taskDetailLevel;\n }\n if (options.viewModeSelection) {\n scope.viewModeSelection = options.viewModeSelection;\n }\n if (options.hideWrench) {\n scope.showWrench = false;\n }\n scope.selectedViewMode.load();\n \n })\n\n scope.$watch(\"viewModeSelection\", function (viewMode) {\n // View Mode \n if (viewMode == currentViewMode) return;\n if (viewMode == \"year\") {\n scope.selectedViewMode = yearlyViewModeProvider;\n scope.taskDetailLevel = \"compact\";\n }\n if (viewMode == \"month\") {\n setMonthSelection(scope.selectedMonth);\n scope.selectedViewMode = monthlyViewModeProvider;\n }\n if (viewMode == \"week\") {\n setWeekSelection(scope.selectedWeek);\n scope.selectedViewMode = weeklyViewModeProvider;\n scope.taskDetailLevel = \"normal\";\n }\n if (scope.options && scope.options.taskDetailLevel) {\n scope.taskDetailLevel = scope.options.taskDetailLevel;\n }\n currentViewMode = viewMode;\n scope.selectedViewMode.load();\n })\n\n scope.notfiyOptionsChanged = function () {\n /* not sure if we want this functinality\n if (!scope.optionsChangeHandler) return;\n scope.options.taskDetailLevel = scope.taskDetailLevel;\n scope.options.viewModeSelection = scope.viewModeSelection;\n scope.optionsChangeHandler({ options: scope.options });*/\n }\n\n var getSelectedTimeOptions = function () {\n var timeOptions = {\n year: scope.selectedYear,\n month: scope.selectedMonth,\n week: scope.selectedWeek\n }\n if (scope.selectedMonth) {\n timeOptions.firstWeek = timeOptions.month.weeks[0];\n timeOptions.lastWeek = timeOptions.month.weeks[timeOptions.month.weeks.length - 1];\n }\n if (scope.selectedWeek) {\n timeOptions.firstDay = timeOptions.week.days[0];\n timeOptions.lastDay = timeOptions.week.days[timeOptions.week.days.length - 1];\n }\n return timeOptions;\n }\n\n var renderService = function () {\n return scope.selectedViewMode.renderService;\n }\n\n scope.selectedCategoryChanged = function () {\n // create rows and load data;\n scope.createLayoutAndLoad();\n }\n\n scope.selectMonth = function (month, refreshData) {\n scope.selectedMonth = month;\n scope.selectedMonth.weeks = timeService.getWeeksInMonth(scope.selectedYear, month.id);\n setMonthSelection(month);\n // Also adjust week to be in correct month\n scope.selectedWeek = month.weeks[0];\n setWeekSelection(scope.selectedWeek);\n if (scope.viewModeSelection == \"year\") {\n scope.viewModeSelection = \"month\";\n } else {\n if (refreshData) {\n scope.selectedViewMode.load();\n }\n }\n };\n\n function setMonthSelection(selectedMonth) {\n for (let index = 0; index < scope.months.length; index++) {\n const element = scope.months[index];\n\n if (selectedMonth && element.id == selectedMonth.id) {\n element.state = \"month-selected\"\n } else {\n element.state = \"month-unselected\"\n }\n }\n }\n\n scope.selectWeek = function (week, refreshData) {\n scope.selectedWeek = week;\n setWeekSelection(week);\n\n if (scope.viewModeSelection == \"month\") {\n scope.viewModeSelection = \"week\";\n } else {\n if (refreshData) {\n scope.selectedViewMode.load();\n }\n }\n\n\n };\n function setWeekSelection(selectedWeek) {\n for (let index = 0; index < scope.selectedMonth.weeks.length; index++) {\n const element = scope.selectedMonth.weeks[index];\n if (selectedWeek && element.number == selectedWeek.number) {\n element.state = \"week-selected\"\n } else {\n element.state = \"week-unselected\"\n }\n }\n }\n\n /*scope.subscribe(\"TaskAssigned\", function (status) {\n if (!scope.useActionList) return;\n if (!scope.useCategorySelection) return;\n if (!scope.selectedCategory) return;\n var task = getTask(status.taskId);\n if (!task) return;\n if (scope.selectedCategory.model.attributeType == \"responsible\") {\n setTimeout(function () {\n scope.createLayoutAndLoad();\n }, 500);\n }\n });*/\n\n scope.subscribe(\"TaskDeleted\", function (taskId) {\n var task = getTask(taskId);\n if (task) {\n var service = renderService();\n task.animate(\"bounce\");\n var index = scope.data.tasks.indexOf(task);\n scope.data.tasks.splice(index, 1);\n service().reCalculateRow(scope.data, task.rowCategoryId, getSelectedTimeOptions());\n }\n });\n scope.subscribe('TaskDurationUpdated', function (durationUpdated) {\n var task = getTask(durationUpdated.taskId);\n if (!task) return;\n updateTaskDuration(task, durationUpdated);\n });\n /*\n scope.subscribe('TaskDateMoved', function (taskMoved) {\n var task = getTask(taskMoved.taskId);\n if (!task && scope.useActionList) {\n // Check if this a task that was just assigned a date\n var actionListTasks = scope.model.actionList.tasks;\n var taskExistInActionList = $filter('filter')(actionListTasks, { id: taskMoved.taskId });\n if (taskExistInActionList[0]) {\n addTask(taskExistInActionList[0]);\n }\n return;\n }\n if (!task) return;\n var startDate = task.startTime;\n if (!startDate) startDate = taskMoved.boardDate;\n var durationUpdated = {\n taskId: taskMoved.taskId,\n startTime: startDate,\n endTime: taskMoved.boardDate\n }\n updateTaskDuration(task, durationUpdated);\n });*/\n scope.subscribe('TaskStartDateUpdated', function (taskMoved) {\n var task = getTask(taskMoved.taskId);\n if (!task) return;\n var startDate = taskMoved.startTime;\n if (!startDate) startDate = task.endTime;\n var durationUpdated = {\n taskId: taskMoved.taskId,\n startTime: startDate,\n endTime: task.endTime\n }\n updateTaskDuration(task, durationUpdated);\n });\n\n function updateTaskDuration(task, durationUpdated) {\n var start = moment(durationUpdated.startTime).toDate().getTime();\n var end = moment(durationUpdated.endTime).toDate().getTime();\n var durationStart = moment(durationUpdated.startTime);\n var durationEnd = moment(durationUpdated.endTime);\n var service = renderService();\n // If task is moved out from time scope we need to remove it\n if ((durationStart < scope.currentTimePeriod.from && durationEnd < scope.currentTimePeriod.from) ||\n (durationStart > scope.currentTimePeriod.to && durationEnd > scope.currentTimePeriod.to)) {\n task.animate(\"slideOutRight\");\n setTimeout(function () {\n var index = scope.data.tasks.indexOf(task)\n scope.data.tasks.splice(index, 1);\n service().calculateDuration(task, getSelectedTimeOptions());\n service().reCalculateRow(scope.data, task.rowCategoryId, getSelectedTimeOptions());\n }, 1000);\n // return;\n } else if (task.startTime.getTime() != start || task.endTime.getTime() != end) {\n task.startTime = moment(durationUpdated.startTime);\n task.endTime = moment(durationUpdated.endTime);\n task.duration = timeService.getDurationInDays(task.startTime, task.endTime);\n task.animate(\"rubberBand\");\n // We need to check if task has changed timeperiod out of current scope\n\n service().calculateDuration(task, getSelectedTimeOptions());\n service().reCalculateRow(scope.data, task.rowCategoryId, getSelectedTimeOptions());\n\n\n }\n }\n\n scope.editable = false;\n\n function checkBoardSettings(settingsAsString) {\n if (settingsAsString) {\n scope.settings = JSON.parse(settingsAsString);\n if (scope.settings && scope.settings.boardOptions) {\n var viewMode = scope.settings.boardOptions.viewModeSelection;\n if (viewMode == \"year\") {\n scope.selectedViewMode = yearlyViewModeProvider;\n scope.taskDetailLevel = \"compact\";\n }\n if (viewMode == \"month\") {\n setMonthSelection(scope.selectedMonth);\n scope.selectedViewMode = monthlyViewModeProvider;\n }\n if (viewMode == \"week\") {\n setWeekSelection(scope.selectedWeek);\n scope.selectedViewMode = weeklyViewModeProvider;\n scope.taskDetailLevel = \"normal\";\n }\n if (scope.settings.boardOptions.taskDetailLevel) {\n scope.taskDetailLevel = scope.settings.boardOptions.taskDetailLevel;\n }\n scope.viewModeSelection = viewMode;\n currentViewMode = viewMode;\n }\n }\n }\n\n function createRows(model) {\n var rowIndex = 0;\n var rows = [];\n for (let index = 0; index < model.length; index++) {\n const row = model[index].project;\n row.index = rowIndex;\n row.type =\"boardcategory\";\n row.taskRows = [];\n rows.push(row);\n rowIndex += 1;\n }\n return rows;\n }\n scope.$watch(\"model\", function (model) {\n if (scope.model == null) return;\n scope.model = model;\n scope.categories = createRows(scope.model);\n\n scope.createLayoutAndLoad();\n });\n\n scope.subscribe(\"ProjectAddedToBoard\", function (projectBoardItem) {\n if (projectBoardItem.boardId === scope.boardId) { \n scope.createLayoutAndLoad();\n }\n });\n\n scope.subscribe(\"BoardSettingUpdated\", function (boardsettinginfo) {\n if (boardsettinginfo.boardId === scope.boardId) {\n checkBoardSettings(boardsettinginfo.settings);\n }\n });\n scope.createLayoutAndLoad = function () {\n scope.data.rows = createRows(scope.model);\n scope.selectedViewMode.load();\n }\n\n scope.previousYear = function () {\n selectYear(scope.selectedYear - 1);\n }\n scope.nextYear = function () {\n selectYear(scope.selectedYear + 1);\n }\n scope.previousMonth = function (refreshData) {\n var previousMonth = scope.selectedMonth.id - 1;\n if (previousMonth == 0) {\n previousMonth = 12;\n scope.selectedYear -= 1;\n }\n var previousMonthIndex = previousMonth - 1; // subtract index\n var month = scope.months[previousMonthIndex];\n month.weeks = timeService.getWeeksInMonth(scope.selectedYear, month.id);\n scope.selectMonth(month, refreshData);\n }\n scope.nextMonth = function (refreshData) {\n var nextMonth = scope.selectedMonth.id + 1;\n if (nextMonth == 13) {\n nextMonth = 1;\n scope.selectedYear += 1;\n }\n var nextMonthIndex = nextMonth - 1; // subtract for index\n var month = scope.months[nextMonthIndex];\n month.weeks = timeService.getWeeksInMonth(scope.selectedYear, month.id);\n scope.selectMonth(month, refreshData);\n }\n scope.previousWeek = function () {\n var currentWeekIndex = scope.selectedMonth.weeks.indexOf(scope.selectedWeek);\n var currentWeekNumber = scope.selectedWeek.number;\n var previousWeekIndex = currentWeekIndex - 1;\n if (currentWeekIndex == 0) { // First week, so we need to go back a month\n scope.previousMonth(false);\n previousWeekIndex = scope.selectedMonth.weeks.length - 1;\n }\n var previousWeek = scope.selectedMonth.weeks[previousWeekIndex];\n if (previousWeekIndex == (scope.selectedMonth.weeks.length - 1) && previousWeek.number == currentWeekNumber) {\n previousWeek = scope.selectedMonth.weeks[previousWeekIndex - 1];\n }\n scope.selectWeek(previousWeek, true);\n }\n scope.nextWeek = function () {\n var currentWeekIndex = scope.selectedMonth.weeks.indexOf(scope.selectedWeek);\n var currentWeekNumber = scope.selectedWeek.number;\n var nextWeekIndex = currentWeekIndex + 1;\n if (nextWeekIndex > (scope.selectedMonth.weeks.length - 1)) { // Last week of month, so we need to go forward a month\n scope.nextMonth(false);\n nextWeekIndex = 0;\n }\n var nextWeek = scope.selectedMonth.weeks[nextWeekIndex];\n // If week is share between two months, we need to move it to the next\n if (nextWeekIndex == 0 && nextWeek.number == currentWeekNumber) {\n nextWeek = scope.selectedMonth.weeks[1];\n }\n scope.selectWeek(nextWeek, true);\n }\n\n var selectYear = function (year) {\n scope.selectedYear = year;\n // Adjust month\n var month = scope.months[0];\n month.weeks = timeService.getWeeksInMonth(scope.selectedYear, month.id);\n scope.selectedMonth = month;\n setMonthSelection(month);\n scope.selectedWeek = month.weeks[0];\n setWeekSelection(scope.selectedWeek);\n\n scope.selectedViewMode.load();\n }\n\n var initTask = function (task) {\n // Add animation function\n task.animate = function (animation) {\n task.animationClass = \"animated \" + animation;\n setTimeout(function () {\n task.animationClass = \"\";\n // Make sure animated class is removed\n $(elem).find(\".task[data-id=\" + task.id + \"]\").removeClass(\"animated\");\n }, 2000);\n };\n }\n\n scope.createTask = function ($event, row, targetMode, targetPeriodIndex, taskOptions) {\n if (!scope.editable) return;\n var targetCell = $(\".drop-row[data-rowindex='\" + row.index + \"'] td[data-cell-id='\" + targetPeriodIndex + \"']\");\n $(targetCell).addClass(\"active-cell\");\n\n if (!taskOptions && scope.postIts) {\n taskOptions = {\n postIts: scope.postIts\n }\n }\n var rowId = null;\n if (!scope.useActionList) {\n rowId = row.id;\n }\n var startTime, endTime;\n\n if (targetMode == \"month\") {\n // TargetPeriod = month object\n // month in moment is 0 based, so 9 is actually october, subtract 1 to compensate\n // array is 'year', 'month', 'day', etc\n startTime = moment([scope.selectedYear, targetPeriodIndex - 1]).toDate();\n endTime = moment(startTime).endOf('month').toDate();\n }\n if (targetMode == \"week\") {\n // TargetPeriod = month object\n var selectedWeek = $filter('filter')(scope.selectedMonth.weeks, { number: targetPeriodIndex })[0];\n //var selectedWeek = scope.selectedMonth.weeks[targetPeriodIndex -1];\n startTime = selectedWeek.startDate,\n endTime = selectedWeek.endDate\n }\n if (targetMode == \"day\") {\n // TargetPeriod = day object\n\n var day = scope.selectedWeek.days[targetPeriodIndex - 1];\n startTime = day.date,\n endTime = day.date\n }\n\n var task = {\n boardId: scope.board.id,\n id: 0,\n rowCategoryId: rowId,\n startTime: startTime,\n endTime: endTime,\n title: \"\",\n status: 'blank',\n tags: \"\"\n }\n\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'newYearlyTask.html',\n controller: 'newYearlyTaskController',\n resolve: {\n task: function () {\n return task;\n },\n options: function () {\n return taskOptions;\n },\n users: function () {\n return scope.users;\n }\n }\n });\n\n modalInstance.result.then(function (result) {\n // publish update\n $(targetCell).removeClass(\"active-cell\");\n }, function () {\n $(targetCell).removeClass(\"active-cell\");\n });\n\n }\n\n scope.taskDurationChangedHandler = function (task) {\n var service = renderService();\n clearAnimations();\n task.animate(\"rubberBand\");\n service().calculateDuration(task, getSelectedTimeOptions());\n service().reCalculateRow(scope.data, task.rowCategoryId, getSelectedTimeOptions());\n //if(task.subTaskCount >0)\n //updateSubTaskDueDate(task, 30);\n\n };\n\n function couldMoveSubTasks(task) {\n if (task.subTaskCount > 0 && task.subTaskCount > task.subTaskCompletedCount) {\n return true;\n }\n return false;\n }\n\n function updateSubTaskDueDate(task, days) {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'moveSubTask.html',\n controller: 'moveSubTaskController',\n resolve: {\n parenttask: function () {\n return task;\n },\n days: function () {\n return days;\n }\n }\n });\n\n modalInstance.result.then(function (result) {\n }, function () {\n });\n }\n\n var renderTasks = function (tasks, renderOptions) {\n\n for (let index = 0; index < tasks.length; index++) {\n const task = tasks[index];\n renderTask(task, renderOptions);\n }\n }\n\n var renderTask = function (task, renderOptions) {\n var actionListTasks = [];\n if (scope.useActionList) {\n actionListTasks = scope.model.actionList.tasks;\n }\n if (!task.startTime) {\n task.startTime = task.endTime;\n }\n initTask(task);\n task.users = scope.users;\n if (renderOptions && renderOptions.animationClass) {\n task.animate(renderOptions.animationClass);\n }\n var service = renderService();\n service().calculateDuration(task, getSelectedTimeOptions());\n // if using action list, we need to merge cellModels to the task\n if (scope.useActionList) {\n // Find \n var row = scope.data.rows[0];\n var actionListTask = $filter('filter')(actionListTasks, { id: task.id });\n if (actionListTask.length > 0) {\n // extend task with attributes\n task.attributes = actionListTask[0].cellModels;\n row = rowProvider().getRowForTask(scope.model, scope.selectedCategory, scope.data.rows, task);\n }\n\n\n service().addTaskToRow(task, row, getSelectedTimeOptions());\n\n } else {\n // Find correct category\n var category = $filter('filter')(scope.data.rows, { id: task.rowCategoryId });\n if (category.length > 0) {\n var row = category[0];\n service().addTaskToRow(task, row, getSelectedTimeOptions());\n }\n }\n }\n\n var clearAnimations = function () {\n for (let index = 0; index < scope.data.tasks.length; index++) {\n const task = scope.data.tasks[index];\n task.animationClass = \"\";\n }\n }\n\n function isWithinTimePeriod(startTime, endTime, timePeriod){\n var result = false;\n if(startTime && endTime && timePeriod){ //valid input\n var timeperiodfrom = moment(timePeriod.from);\n var timeperiodto = moment(timePeriod.to);\n if(moment(timeperiodfrom).isBefore(startTime)\n && moment(startTime).isBefore(timeperiodto)){\n return true;\n }\n if(moment(timeperiodfrom).isBefore(endTime)\n && moment(endTime).isBefore(timeperiodto)){\n return true;\n }\n if(moment(startTime).isBefore(timeperiodfrom)\n && moment(timeperiodto).isBefore(endTime)){\n return true;\n }\n }\n return result;\n }\n\n function setValidProjectInfoInPeriod(timePeriod, includeMilestone){\n for (let index = 0; index < scope.model.length; index++) {\n var startTime = scope.model[index].project.startDate;\n if(!startTime){\n startTime = scope.model[index].project.estimatedStartDate;\n }\n \n var endTime = scope.model[index].project.endDate;\n if(!endTime){\n endTime = scope.model[index].project.estimatedEndDate;\n }\n if(isWithinTimePeriod(startTime, endTime, scope.currentTimePeriod)){\n var task = {rowCategoryId:scope.model[index].project.id,\n title: scope.model[index].project.name,\n startTime: startTime,\n endTime: endTime,\n responsibleUserId: scope.model[index].project.ownerUserId,\n responsibleUser: scope.model[index].project.owner,\n responsibleDisplayName: scope.model[index].project.ownerDisplayName};\n scope.data.tasks.push(task);\n }\n if(scope.model[index].project.milestones){\n for(let m=0; m < scope.model[index].project.milestones.length; m++){\n var date = scope.model[index].project.milestones[m].actualDate;\n if(!date){\n date = scope.model[index].project.milestones[m].plannedDate;\n }\n //TODO add color logic when missed milestone, completed milestone etc\n if(isWithinTimePeriod(date, date, scope.currentTimePeriod)){\n var task = {rowCategoryId:scope.model[index].project.id,\n title: scope.model[index].project.milestones[m].name,\n startTime: date,\n endTime: date,\n type: \"milestone\"};\n scope.data.tasks.push(task);\n }\n }\n }\n }\n }\n\n scope.currentTimePeriod = null;\n var loadYear = function () {\n if(scope.model){\n var displayYear = getDisplayPeriods().year;\n var year = scope.selectedYear;\n var renderOptions = {\n animationClass: \"slideInLeft\"\n }\n if (year && year > displayYear) {\n renderOptions.animationClass = \"slideInRight\";\n }\n scope.data.tasks = [];\n for (let index = 0; index < scope.data.rows.length; index++) {\n const row = scope.data.rows[index];\n row.taskRows = [];\n row.isRecalculating = true;\n }\n\n var startTime = moment([year, 1]).toDate();\n startTime = moment(startTime).startOf('year').toDate();\n var endTime = moment(startTime).endOf('year').toDate();\n\n var timePeriod = {\n from: startTime,\n to: endTime\n };\n scope.currentTimePeriod = timePeriod;\n setValidProjectInfoInPeriod(scope.currentTimePeriod, true);\n renderTasks(scope.data.tasks, renderOptions);\n for (let index = 0; index < scope.data.rows.length; index++) {\n const row = scope.data.rows[index];\n row.isRecalculating = false;\n }\n }\n }\n\n var loadMonth = function () {\n if(scope.model){\n var displayMonth = getDisplayPeriods().month;\n var month = scope.selectedMonth;\n var startTime = month.weeks[0].startDate;\n var endTime = month.weeks[month.weeks.length - 1].endDate;\n var timePeriod = {\n from: startTime,\n to: endTime\n };\n\n var renderOptions = {\n animationClass: \"slideInLeft\"\n }\n if (month && month > displayMonth) {\n renderOptions.animationClass = \"slideInRight\";\n }\n scope.data.tasks = [];\n for (let index = 0; index < scope.data.rows.length; index++) {\n const row = scope.data.rows[index];\n row.taskRows = [];\n row.isRecalculating = true;\n }\n\n scope.currentTimePeriod = timePeriod;\n setValidProjectInfoInPeriod(scope.currentTimePeriod, true);\n renderTasks(scope.data.tasks, renderOptions);\n for (let index = 0; index < scope.data.rows.length; index++) {\n const row = scope.data.rows[index];\n row.isRecalculating = false;\n }\n }\n }\n var loadWeek = function () {\n if(scope.model){\n var displaWeek = getDisplayPeriods().week;\n var week = scope.selectedWeek;\n var renderOptions = {\n animationClass: \"slideInLeft\"\n }\n if (week && week > displaWeek) {\n renderOptions.animationClass = \"slideInRight\";\n }\n scope.data.tasks = [];\n for (let index = 0; index < scope.data.rows.length; index++) {\n const row = scope.data.rows[index];\n row.taskRows = [];\n row.isRecalculating = true;\n }\n\n var timePeriod = {\n from: scope.selectedWeek.startDate,\n to: scope.selectedWeek.endDate\n };\n scope.currentTimePeriod = timePeriod;\n setValidProjectInfoInPeriod(scope.currentTimePeriod, true);\n boardTaskService().getProjectPortfolioTasksForPeriod(scope.boardId, timePeriod).then(function (tasks) {\n //scope.data.tasks.concat(tasks);\n if(tasks && tasks.length>0){\n for (let i = 0; i < tasks.length; i++) {\n scope.data.tasks.push(tasks[i]); \n }\n }\n renderTasks(scope.data.tasks, renderOptions);\n for (let index = 0; index < scope.data.rows.length; index++) {\n const row = scope.data.rows[index];\n row.isRecalculating = false;\n }\n });\n }\n }\n var getTask = function (taskId) {\n var task = $filter('filter')(scope.data.tasks, { id: taskId });\n if (task.length === 1) return task[0];\n return null;\n }\n var getRowById = function (rowId) {\n return $filter('filter')(scope.data.rows, { id: rowId })[0];\n }\n\n var getRowByIndex = function (index) {\n return $filter('filter')(scope.data.rows, { index: index })[0];\n }\n //::::::::::::::::::::::\n // DRAG AND DROP \n //::::::::::::::::::::::\n\n dragulaService.options(scope, 'task-container-bag', {\n revertOnSpill: true,\n removeOnSpill: true,\n copy: true,\n accepts: function (el, target, source, sibling) {\n var canAccept = $(target).hasClass(\"drop-row-cell\");\n // console.log(canAccept);\n return canAccept;\n },\n moves: function (el, target, source, sibling) {\n return scope.editable;\n },\n\n });\n scope.$on('task-container-bag.drag', function (container, source, el) {\n $(\".drop-row\").css('z-index', 10);\n $(\".gu-mirror\").css('width', 1000);\n el.removeClass('animated');\n });\n scope.$on('task-container-bag.drop', function (container, source, el) {\n var targetOptions = {\n targetYear: parseInt(el.attr(\"data-year\")),\n targetMonth: parseInt(el.attr(\"data-month\")),\n targetYearEnd: parseInt(el.attr(\"data-year-end\")),\n targetWeek: parseInt(el.attr(\"data-week-index\")),\n targetDay: parseInt(el.attr(\"data-day\"))\n }\n var dropRowElement = $(source).closest(\".drop-row\");\n var rowIndex = parseInt(dropRowElement.attr(\"data-rowindex\"));\n var targetRow = getRowByIndex(rowIndex);\n var targetCellId = parseInt(el.attr(\"data-cell-id\"))\n\n // Check if post it\n var postItElement = $(source).hasClass(\"post-it\");\n if (postItElement) {\n var taskOptions = {\n color: $(source).attr(\"data-color\"),\n postIts: scope.postIts\n }\n // If we use smartactionlist we need to apply row attributes\n if (scope.useActionList) {\n var attribute = targetRow.getAttribute();\n taskOptions.attribute = attribute;\n }\n\n var targetMode = \"month\";\n if (scope.selectedViewMode.viewMode == \"month\") targetMode = \"week\";\n if (scope.selectedViewMode.viewMode == \"week\") targetMode = \"day\";\n // Create Task\n scope.createTask(null, targetRow, targetMode, targetCellId, taskOptions);\n // Reset drop\n $(\".drop-row\").css('z-index', 1);\n $(\".drop-row .post-it\").remove();\n return;\n }\n\n // Find task being dropped\n var taskElement = $(source).find(\".task\");\n var taskId = parseInt(taskElement.attr(\"data-id\"));\n var task = getTask(taskId);\n if (!task) return;\n var origionalEndTime = task.endTime;\n var origionalBoardDate = task.boardDate;\n var previousRowIndex = task.rowIndex;\n targetRow.isRecalculating = true;\n var targetCategoryId = parseInt(el.attr(\"data-category-id\"));\n task.animate(\"bounce\");\n // Gonna use a timeout for smoother redrawing\n setTimeout(function () {\n // Render layout again to adapt drop\n var previousRowId = task.rowCategoryId;\n task.rowCategoryId = targetCategoryId;\n task.rowIndex = rowIndex;\n // move task in structure\n var service = renderService();\n if (scope.useActionList) {\n // update cell according to row(smartcolumn)\n targetRow.updateTask(scope.selectedCategory, task);\n }\n service().moveTask(task, targetOptions, getSelectedTimeOptions());\n service().reCalculateRowByIndex(scope.data, previousRowIndex, getSelectedTimeOptions());\n service().reCalculateRowByIndex(scope.data, rowIndex, getSelectedTimeOptions());\n\n scope.commitDurationChanged(task);\n if (couldMoveSubTasks(task)) {\n var changedDuration = timeService.getDurationInDays(origionalEndTime, task.endTime);\n if (changedDuration != 0) {\n updateSubTaskDueDate(task, changedDuration);\n }\n }\n if (!scope.useActionList && previousRowId != targetCategoryId) {\n scope.commitRowPositionUpdatedDebounced(task.id, previousRowId, targetCategoryId);\n }\n // Clean up drop row\n $(\".drop-row\").css('z-index', 1);\n $(\".drop-row .task-container\").remove();\n targetRow.isRecalculating = false;\n }, 600);\n \n });\n\n\n scope.$on('task-container-bag.over', function (container, source, el) {\n // highlight drop cell\n el.addClass('drag-over');\n var taskElement = $(source.context).find(\".task\");\n var taskId = parseInt(taskElement.attr(\"data-id\"));\n var task = getTask(taskId);\n if (!task) return;\n var targetMonthNumber = parseInt(el.attr(\"data-month\"));\n var targetWeekNumber = parseInt(el.attr(\"data-week-index\"));\n var targetDayNumber = parseInt(el.attr(\"data-day\"));\n\n if (scope.selectedViewMode.viewMode == \"year\") {\n for (let index = targetMonthNumber; index < (targetMonthNumber + task.durationInMonthsCurrentYear); index++) {\n $(el).siblings(\"[data-month='\" + index + \"']\").addClass('drag-over');\n }\n }\n if (scope.selectedViewMode.viewMode == \"month\") {\n for (let index = targetWeekNumber; index < (targetWeekNumber + task.durationInWeeksCurrentMonth); index++) {\n $(el).siblings(\"[data-week-index='\" + index + \"']\").addClass('drag-over');\n }\n }\n if (scope.selectedViewMode.viewMode == \"week\") {\n for (let index = targetDayNumber; index < (targetDayNumber + task.durationInDaysCurrentWeek); index++) {\n $(el).siblings(\"[data-day='\" + index + \"']\").addClass('drag-over');\n }\n }\n\n })\n scope.$on('task-container-bag.out', function (container, source, el) {\n // remove highlight of target cell\n el.removeClass('drag-over');\n el.siblings().removeClass('drag-over');\n });\n\n/*\n scope.updateRowPosition = function (taskId, fromRowId, toRowId) {\n var position = {\n taskId: taskId,\n fromRowId: fromRowId,\n toRowId: toRowId\n }\n boardTaskService().updateRowPosition(position).then(function (updateTask) {\n\n });\n }\n\n scope.saveDuration = function (task) {\n var duration = {\n startTime: task.startTime,\n endTime: task.endTime\n }\n boardTaskService().updateDuration(task.id, duration).then(function (updateTask) {\n\n });\n }*/\n\n // Debounce function so that save is called to often.\n scope.commitRowPositionUpdatedDebounced = debounce(scope.updateRowPosition, 1000, false);\n scope.commitDurationChanged = debounce(scope.saveDuration, 1000, false);\n\n scope.saveAsTemplate = function () {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'newboardtemplate.html',\n controller: 'newboardtemplateController',\n resolve: {\n board: function () {\n return scope.model.board;\n }\n }\n });\n\n modalInstance.result.then(function (result) {\n\n });\n }\n\n }\n }\n }]);\n","import * as customerService from \"@common/services/customers/customerService\"\n\nvar DigiLean = angular.module('DigiLean');\nDigiLean.directive(\"projectParticipants\", ['$filter', 'projectService',\n function ($filter, projectService) {\n return {\n templateUrl: 'projectParticipants.html',\n restrict: 'E',\n scope: {\n 'projectId': '='\n },\n link: function (scope, elem, attrs) {\n\n scope.participants = [];\n var loadUsers = function () {\n customerService.getAllUsers().then(function (users) {\n scope.users = users;\n projectService().getUsers(scope.projectId).then(function (projectUsers) {\n if(projectUsers){\n scope.participants = projectUsers;\n for (var i = 0; i < projectUsers.length; i++) {\n scope.users = $filter('filter')(scope.users, NotLikeIdFilter(\"userId\", projectUsers[i].userId));\n }\n }\n });\n });\n }\n \n\n scope.$watch(\"projectId\", function () {\n if (!scope.projectId) return;\n loadUsers();\n });\n\n scope.subscribe(\"ProjectOwnerUpdated\", function (project) {\n if (project.id == scope.projectId) {\n loadUsers(); \n }\n });\n scope.subscribe(\"ProjectParticipantAdded\", function (projectuserinfo) {\n if (projectuserinfo.projectId == scope.projectId) {\n var matchingParticipant = $filter('filter')(scope.participants, { userId: projectuserinfo.userId }, true);\n if (matchingParticipant.length == 0) {\n var matchingUser = $filter('filter')(scope.users, { userId: projectuserinfo.userId }, true);\n if (matchingUser.length > 0) {\n scope.participants.unshift(matchingUser[0]); \n var i = scope.users.indexOf(matchingUser[0]);\n scope.users.splice(i, 1);\n } \n } \n }\n });\n\n function NotLikeIdFilter(property, userId) {\n return function (item) {\n if (item[property] === null) return false;\n var id = item[property];\n return id !== userId;\n \n }\n }\n\n scope.add = function (user) {\n user.assetRole = \"Member\";\n scope.participants.unshift(user);\n \n var matchingUser = $filter('filter')(scope.users, { userId: user.userId }, true);\n if (matchingUser.length > 0) {\n projectService().addUser(scope.projectId, matchingUser[0]).then(function (user) {\n var i = scope.users.indexOf(matchingUser[0]);\n scope.users.splice(i, 1);\n }); \n }\n };\n \n scope.remove = function (user) {\n scope.users.unshift(user);\n \n var matchingUser = $filter('filter')(scope.participants, { userId: user.userId }, true);\n if (matchingUser.length > 0) {\n projectService().removeUser(scope.projectId, matchingUser[0].userId).then(function (user) {\n var i = scope.participants.indexOf(matchingUser[0]);\n scope.participants.splice(i, 1);\n });\n \n }\n };\n\n }\n\n }\n }]);\n","import toaster from \"@common/components/toast\"\n\nangular\n .module('DigiLean')\n .directive(\"projectCustomerCell\", ['$filter', '$translate','projectService','modalService','authService',\n function ($filter, $translate, projectService,modalService, authService) {\n return {\n templateUrl: 'projectCustomerCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'editable': '=',\n 'projectAttributeChangeHandler': '&',\n },\n link: function (scope, elem, attrs) {\n scope.customers = null;\n scope.customer = null;\n scope.q = null;\n \n scope.isAdmin = authService.hasRole(\"Admin\") || authService.hasRole(\"ProjectAdmin\");\n // if page is refreshed we need to refresh\n scope.subscribe(\"UserAuthenticatedAndReady\", function (profile) {\n scope.isAdmin = authService.hasRole(\"Admin\") || authService.hasRole(\"ProjectAdmin\");\n });\n\n scope.$watch('model', function (projectModel) {\n var value = scope.model.projectAttribute.value;\n if (value) {\n setValue(value);\n }\n });\n\n scope.$watch(\"model\", function (model) {\n if (scope.model && scope.model.project) {\n \n projectService().getProjectInfo(scope.model.project.id).then(function (projectInfo) { \n \n if(projectInfo){\n scope.projectInfo = projectInfo;\n if(scope.projectInfo.projectCustomerId){\n setProjectCustomer();\n }\n }\n });\n } \n model.getSortValue = function() {\n if (scope.customer) {\n return scope.customer.name;\n }\n return \"\";\n }\n });\n\n scope.subscribe(\"ProjectCustomerUpdated\", function (project) {\n if (project.id == scope.model.project.id) {\n scope.customer = project.projectCustomer;\n }\n });\n\n scope.subscribe(\"ProjectCustomerCreated\", function (newCustomer) {\n projectService().getProjectCustomers().then(function (customers) {\n scope.customers = customers; \n });\n });\n\n\n var setValue = function (value) {\n scope.customer = value;\n } \n\n\n projectService().getProjectCustomers().then(function (customers) {\n scope.customers = customers;\n setProjectCustomer(); \n });\n\n scope.newCustomer = function (newname) {\n $translate(['COMMON_CANCEL', 'COMMON_SUBMIT', 'ADMIN_NEW_CUSTOMER']).then(function (translations) {\n \n swal({\n text: translations.ADMIN_NEW_CUSTOMER,\n content: \"input\",\n button: {\n text: translations.COMMON_SUBMIT,\n closeModal: true,\n closeOnClickOutside: true,\n closeOnEsc: true\n },\n }).then(name => {\n if (!name) throw null;\n \n var registration = {\n id: 0,\n name: name\n };\n var matching = $filter('filter')(scope.customers, { name: name }, true);\n if (matching.length > 0) {\n scope.selectCustomer(matching[0]);\n scope.q = null;\n } else {\n projectService().createNewCustomer(registration).then(function (customer) {\n $translate('ADMIN_MESSAGE_CUSTOMER_CREATED').then(function (msg) {\n toaster.success(msg);\n projectService().getProjectCustomers().then(function (customers) {\n scope.customers = customers;\n var matching = $filter('filter')(scope.customers, { id: customer.id }, true);\n if (matching.length > 0) {\n scope.selectCustomer(matching[0]);\n scope.q = null;\n }\n });\n }, function (translationId) {\n $scope.headline = translationId;\n });\n });\n }\n })\n }); \n\n };\n\n /*\n scope.newCustomer = function (newname) {\n $translate(['COMMON_CANCEL', 'COMMON_SUBMIT', 'ADMIN_MESSAGE_NEW_CUSTOMER']).then(function (translations) {\n var modalOptions = {\n closeButtonText: translations.COMMON_CANCEL,\n actionButtonText: translations.COMMON_SUBMIT,\n headerText: translations.COMMON_SUBMIT + ' ' + newname + '?',\n bodyText: translations.ADMIN_MESSAGE_NEW_CUSTOMER\n };\n \n modalService.showModal({}, modalOptions).then(function (result) {\n var registration = {\n id: 0,\n name: newname\n };\n projectService().createNewCustomer(registration).then(function (customer) {\n $translate('ADMIN_MESSAGE_CUSTOMER_CREATED').then(function (msg) {\n toaster.success(msg);\n projectService().getProjectCustomers().then(function (customers) {\n scope.customers = customers;\n var matching = $filter('filter')(scope.customers, { id: customer.id }, true);\n if (matching.length > 0) {\n scope.selectCustomer(matching[0]);\n scope.q = null;\n }\n });\n }, function (translationId) {\n $scope.headline = translationId;\n });\n });\n });\n \n }); \n };*/\n scope.selectCustomer = function (customer) {\n scope.customer = customer;\n projectService().updateCustomer(scope.model.project.id, customer.id).then(function (registeredcustomer) {\n }); \n };\n\n function setProjectCustomer(){\n if (scope.projectInfo && scope.projectInfo.projectCustomerId && scope.customers) {\n var matching = $filter('filter')(scope.customers, { id: scope.projectInfo.projectCustomerId }, true);\n if (matching.length > 0) {\n scope.customer = matching[0];\n } \n }\n \n } \n\n }\n }\n }]);\n","import * as timeService from \"@common/services/timeService\"\n\nangular\n .module('DigiLean')\n .directive(\"numberCellAutomatic\", ['$filter', 'debounce', 'projectService','dataService','mathService',\n function ($filter, debounce, projectService, dataService, mathService) {\n return {\n templateUrl: 'numberCellAutomatic.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'editable': '=',\n 'projectAttributeChangeHandler': '&',\n }, \n link: function (scope, elem, attrs) {\n scope.number = null;\n scope.unit = null;\n scope.unitPlacement = \"right\";\n scope.lastDate = null;\n scope.projectId = null;\n scope.color = \"#676a6c\";\n scope.background = \"inherit\";\n scope.customColorBackground = \"#a9a9a9\";\n scope.postIts = projectService().getPostIts();\n var filters = [];\n var dataSource = null;\n var period = null; \n scope.projectAttributeId = null;\n scope.decimals = null;\n var settings = null;\n\n scope.$watch('model', function (model) {\n var value = model.projectAttribute.value;\n scope.projectAttributeId = model.boardAttributeId;\n settings = model.column.settings;\n //TODO: if settings.timePeriod.timeframe == \"last\"\n if (settings.timePeriod.timeframe !== \"last\") { \n period = timeService.getTimePeriod(settings.timePeriod.timeframe);\n } else {\n period = timeService.getTimePeriod(\"all\");\n }\n scope.projectId = model.project.id;\n if (settings) {\n if(settings.dataSource){\n dataSource = settings.dataSource;\n }\n if(value){\n scope.color = value.color;\n scope.background = value.background;\n }\n if(settings.decimals !== null || settings.decimals !== undefined){\n scope.decimals = settings.decimals;\n }\n if(settings.unit){\n scope.unit = settings.unit;\n if(settings.unitPlacement){\n scope.unitPlacement = settings.unitPlacement;\n }\n }\n if(settings.filters){\n filters = settings.filters.slice();\n var existingProjectFilter = $filter('filter')(filters, { sourceColumn: \"projectId\" });\n if (existingProjectFilter.length > 0) {\n var index = filters.indexOf(existingProjectFilter[0]);\n filters.splice(index, 1);\n }\n }\n var projectfilter = {\n items: [scope.projectId],\n operator: \"InList\",\n sourceColumn: \"projectId\"\n }\n filters.push(projectfilter);\n scope.updateValue(dataSource.id);\n if(model.column.projectAttribute){\n setColor(model.column.projectAttribute);\n }\n } \n model.getSortValue = function () {\n return scope.number;\n }\n });\n \n scope.subscribe(\"ProjectNumberCellAutomaticTimeframeUpdated\", function (value) {\n if(scope.projectAttributeId === value.boardAttributeId){ \n scope.lastDate = null;\n settings.timePeriod.timeframe = value.timePeriod.timeframe;\n scope.updateValue(dataSource.id);\n }\n });\n scope.subscribe(\"ProjectNumberCellDecimalUpdated\", function (value) {\n if(scope.projectAttributeId === value.projectAttributeId){\n scope.decimals = value.decimals;\n scope.updateValue(dataSource.id);\n }\n });\n scope.subscribe(\"ProjectNumberCellUnitUpdated\", function (value) {\n if(scope.projectAttributeId === value.projectAttributeId){\n scope.unit = value.unit;\n }\n });\n scope.subscribe(\"ProjectNumberCellUnitPlacementUpdated\", function (value) {\n if(scope.projectAttributeId === value.projectAttributeId){\n scope.unitPlacement = value.unitPlacement;\n }\n });\n scope.subscribe(\"DataValueAdded\", function (value) {\n scope.updateValue(value.dataSourceId);\n });\n scope.subscribe(\"DataValueUpdated\", function (value) {\n scope.updateValue(value.dataSourceId);\n });\n scope.subscribe(\"DataValueDeleted\", function (value) {\n scope.updateValue(value.dataSourceId);\n });\n\n function getLastValue(){\n if (settings.timePeriod.timeframe === \"last\") {\n period = null;\n } else {\n if(!period){\n period = timeService.getTimePeriod(\"all\");\n }\n }\n dataService().getLastDate(dataSource.id, period, filters).then(function (fromDate) {\n scope.lastDate = moment(fromDate).toDate();\n var toDate = moment(fromDate).endOf('day');\n var dayperiod = {\n from:fromDate,\n to:toDate\n };\n \n var options = {\n timePeriod: dayperiod,\n filters: filters,\n };\n\n dataService().getSumForPeriod(dataSource.id, options).then(function (sum) {\n scope.number = sum;\n var payload = {\n projectAttributeId: scope.projectAttributeId,\n projectId: scope.projectId,\n value: scope.number\n } \n scope.publish(\"ProjectNumberCellUpdated\", payload);\n\n if(scope.decimals !== null) {\n if(scope.decimals !== undefined) {\n scope.number = mathService().roundNumber(scope.number, scope.decimals);\n }\n } \n });\n });\n\n }\n\n function getAll(){\n \n period = timeService.getTimePeriod(\"all\");\n \n dataService().getLastDate(dataSource.id, null, filters).then(function (lastDate) {\n \n if(!lastDate || lastDate === \"\"){ //No data\n return;\n }\n var toDate = moment(lastDate).endOf('day');\n var newperiod = {\n from:period.from,\n to:toDate.toDate().toJSON()\n };\n \n var formula = null;\n if(dataSource.valueElement.unit == \"%\"){\n formula = \"average\";\n }\n var options = {\n timePeriod: newperiod,\n filters: filters,\n formula: formula\n };\n\n dataService().getSumForPeriod(dataSource.id, options).then(function (sum) {\n scope.number = sum;\n var payload = {\n projectAttributeId: scope.projectAttributeId,\n projectId: scope.projectId,\n value: scope.number\n } \n scope.publish(\"ProjectNumberCellUpdated\", payload);\n if(scope.decimals !== null) {\n if(scope.decimals !== undefined) {\n scope.number = mathService().roundNumber(scope.number, scope.decimals);\n }\n } \n });\n });\n\n }\n scope.updateValue = function (id) {\n if (!dataSource) return;\n if (dataSource.id !== id) return;\n if (settings.timePeriod.timeframe === \"last\") {\n getLastValue();\n } else if(settings.timePeriod.timeframe === \"all\" ){\n getAll();\n } else{\n period = timeService.getTimePeriod(settings.timePeriod.timeframe);\n\n var formula = null;\n if(dataSource.valueElement.unit == \"%\"){\n formula = \"average\";\n }\n var options = {\n timePeriod: period,\n filters: filters,\n formula: formula\n };\n dataService().getSumForPeriod(dataSource.id, options).then(function (sum) {\n \n scope.number = sum;\n var payload = {\n projectAttributeId: scope.projectAttributeId,\n projectId: scope.projectId,\n value: scope.number\n } \n scope.publish(\"ProjectNumberCellUpdated\", payload);\n if(scope.decimals !== null) {\n if(scope.decimals !== undefined) {\n scope.number = mathService().roundNumber(scope.number, scope.decimals);\n }\n } \n });\n }\n \n };\n \n var setColor = function(cell) {\n if(cell && cell.background){\n scope.background = cell.background;\n scope.color = cell.color;\n }\n \n var predefinedPostIt = $filter('filter')(scope.postIts, { background: scope.background });\n if (predefinedPostIt.length > 0) {\n scope.selectedPostIt = predefinedPostIt[0];\n } else //Custom color \n {\n scope.selectedPostIt = { title: \"custom\", background: scope.background };\n scope.customColorBackground = cell.background;\n }\n }\n/*\n function updateCellSumToTotalSum(sum) {\n var projectSum = {projectId: scope.projectId,\n cellNumber: scope.number};\n var existingSumForProject = $filter('filter')(scope.model.column.projectAttributes, { projectId: projectId });\n \n if (existingSumForProject && existingSumForProject.length > 0) {\n var index = scope.model.column.projectAttributes.indexOf(existingSumForProject);\n scope.model.column.projectAttributes[index] = projectSum;\n } else {\n scope.model.column.projectAttributes.push(projectSum);\n } \n }*/\n \n /*\n scope.subscribe(\"ProjectAttributeUpdated\", function (attribute) {\n if (attribute.projectId == scope.model.project.id && attribute.projectBoardAttributeId == scope.model.boardAttributeId) {\n if (attribute.settings) {\n // setValue(attribute);\n }\n }\n });*/\n\n scope.selectColor = function (postIt) {\n scope.selectedPostIt = postIt;\n if(postIt.title === 'default'){\n scope.background = \"inherit\";\n scope.color = \"#676a6c\";\n } else {\n scope.background = postIt.background;\n scope.color = \"#ffffff\";\n }\n scope.commitChangesDebounced();\n }\n scope.selectCustomColor = function (color) {\n scope.selectedPostIt = { title: \"custom\", background: color };\n scope.background = color;\n scope.color = \"#ffffff\";\n scope.commitChangesDebounced();\n }\n\n scope.saveChanges = function() {\n var value = {\n background: scope.background,\n color: scope.color,\n //dataSource: dataSource\n }\n scope.model.projectAttribute.value = value;\n scope.projectAttributeChangeHandler({projectAttribute: scope.model.projectAttribute})\n }\n\n // Debounce function so that save is called to often.\n scope.commitChangesDebounced = debounce(scope.saveChanges, 1000, false);\n\n }\n }\n }]);\n","import * as timeService from \"@common/services/timeService\"\nangular\n .module('DigiLean')\n .directive(\"projectStartDateCell\", ['projectService',\n function (projectService) {\n return {\n templateUrl: 'projectStartDateCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'editable': '=',\n 'projectAttributeChangeHandler': '&',\n },\n link: function (scope, elem, attrs) {\n scope.color = \"#0099DE\";\n scope.dateMissed = false;\n scope.date = null;\n scope.value = null;\n \n\n scope.changeColor = false,\n scope.changeColorXDaysBefore = 1;\n\n scope.updateStartDate = function($event) {\n const date = $event.originalEvent.detail\n scope.date.startDate = date\n projectService().updateStartDate(scope.model.project.id,scope.date.startDate).then(function (savedDate) {\n checkDate()\n })\n }\n\n scope.updateEstimatedStartDate = function($event) {\n const date = $event.originalEvent.detail\n scope.date.estimatedStartDate = date\n projectService().updateEstimatedStartDate(scope.model.project.id,scope.date.estimatedStartDate).then(function (savedDate) { \n checkDate()\n })\n }\n \n\n scope.$watch(\"model\", function (model) {\n if (scope.model && scope.model.project) {\n var settings = model.column.settings;\n if (settings) {\n if(settings.changeColor && settings.changeColorXDaysBefore){\n scope.changeColor = true;\n scope.changeColorXDaysBefore = settings.changeColorXDaysBefore;\n }\n }\n \n projectService().getProjectInfo(scope.model.project.id).then(function (date) { \n \n if(date){\n scope.date = date;\n if(scope.date.estimatedStartDate){\n scope.date.estimatedStartDate = moment(date.estimatedStartDate).toDate();\n }\n if(scope.date.startDate){\n scope.date.startDate = moment(date.startDate).toDate();\n }\n \n scope.date.datePicker = {\n opened: false\n },\n scope.date.estimatedDatePicker = {\n opened: false\n }\n checkDate();\n } else {\n createTempDate();\n }\n });\n } else {\n createTempDate();\n }\n if(scope.model){\n model.getSortValue = function () {\n if (scope.date) {\n if(scope.date.startDate){\n return scope.date.startDate;\n } else {\n return scope.date.estimatedStartDate;\n } \n } else {\n if(scope.model.project && scope.model.project.startDate){\n return moment(scope.model.project.startDate).toDate();\n } else if (scope.model.project && scope.model.project.estimatedStartDate){\n return moment(scope.model.project.estimatedStartDate).toDate();\n } else {\n return null;\n }\n }\n return null;\n }\n }\n });\n\n scope.subscribe(\"ProjectDateColorCellUpdated\", function (value) {\n if(scope.model.boardAttributeId === value.projectAttributeId){\n scope.changeColor = value.changeColor;\n scope.changeColorXDaysBefore = value.changeColorXDaysBefore;\n }\n });\n \n scope.subscribe(\"ProjectStartDateUpdated\", function (project) {\n if (project.id == scope.model.project.id) {\n scope.date.startDate = moment(project.startDate).toDate();\n checkDate();\n }\n });\n scope.subscribe(\"ProjectEstimatedStartDateUpdated\", function (project) {\n if (project.id == scope.model.project.id) {\n scope.date.estimatedStartDate = moment(project.estimatedStartDate).toDate();\n checkDate();\n }\n });\n function createTempDate(){\n var projectid = null;\n if(scope.model && scope.model.project){\n projectid = scope.model.project.id;\n }\n scope.date = {\n id: projectid,\n startDate: null,\n estimatedStartDate: null,\n datePicker : {\n opened: false\n },\n estimatedDatePicker : {\n opened: false\n }\n };\n }\n\n function checkDate() {\n scope.date.status = \"\";\n if (scope.date) {\n scope.dateMissed = false;\n\n scope.date.startDate = timeService.validateDate(scope.date.startDate);\n scope.date.estimatedStartDate = timeService.validateDate(scope.date.estimatedStartDate);\n \n if (scope.date.startDate) {\n scope.date.status = \"completed\";\n var diff = moment.duration(moment(scope.date.startDate).diff(moment(scope.date.estimatedStartDate)));\n var days = diff.asDays();\n if(!isNaN(days)){\n scope.date.diffPlannedVSActual = Math.round(days);\n }else {\n scope.date.diffPlannedVSActual = null;\n }\n } else if (scope.date.estimatedStartDate) {\n //check if overdue/missed\n \n var duration = moment.duration(moment().startOf('day').diff(moment(scope.date.estimatedStartDate).startOf('day')));\n var days = duration.asDays();\n if (days > 1) {\n scope.date.status = \"missed\";\n scope.date.diffToPlannedDate = Math.trunc(days);\n scope.dateMissed = true;\n } else {\n scope.date.status = \"future\";\n scope.date.diffToPlannedDate = Math.round(days)*-1;\n }\n }\n }\n }\n }\n }\n }]);\n","import * as timeService from \"@common/services/timeService\"\n\nangular\n .module('DigiLean')\n .directive(\"projectEndDateCell\", ['projectService',\n function (projectService) {\n return {\n templateUrl: 'projectEndDateCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'editable': '=',\n 'projectAttributeChangeHandler': '&',\n },\n link: function (scope, elem, attrs) {\n scope.color = \"#0099DE\";\n scope.dateMissed = false;\n scope.date = null;\n scope.value = null;\n\n scope.changeColor = false,\n scope.changeColorXDaysBefore = 1;\n\n scope.updateEndDate = function($event) {\n const date = $event.originalEvent.detail\n scope.date.endDate = date\n projectService().updateEndDate(scope.model.project.id,scope.date.endDate).then(function (savedDate) { \n checkDate();\n });\n }\n\n scope.updateEstimatedEndDate = function($event) {\n const date = $event.originalEvent.detail\n scope.date.estimatedEndDate = date\n projectService().updateEstimatedEndDate(scope.model.project.id,scope.date.estimatedEndDate).then(function (savedDate) { \n checkDate()\n })\n }\n \n\n scope.$watch(\"model\", function (model) {\n if (scope.model && scope.model.project) {\n\n var settings = model.column.settings;\n if (settings) {\n if(settings.changeColor && settings.changeColorXDaysBefore){\n scope.changeColor = true;\n scope.changeColorXDaysBefore = settings.changeColorXDaysBefore;\n }\n }\n \n projectService().getProjectInfo(scope.model.project.id).then(function (date) { \n \n if(date){\n scope.date = date;\n if(scope.date.estimatedEndDate){\n scope.date.estimatedEndDate = moment(date.estimatedEndDate).toDate();\n }\n if(scope.date.endDate){\n scope.date.endDate = moment(date.endDate).toDate();\n }\n \n scope.date.datePicker = {\n opened: false\n },\n scope.date.estimatedDatePicker = {\n opened: false\n }\n checkDate();\n } else {\n createTempDate();\n }\n });\n } else {\n createTempDate();\n }\n if(scope.model){\n model.getSortValue = function() {\n if (scope.date) {\n if(scope.date.endDate){\n return scope.date.endDate;\n } else {\n return scope.date.estimatedEndDate;\n } \n } else {\n if(scope.model.project && scope.model.project.endDate){\n return moment(scope.model.project.endDate).toDate();\n } else if (scope.model.project && scope.model.project.estimatedEndDate){\n return moment(scope.model.project.estimatedEndDate).toDate();\n } else {\n return null;\n }\n }\n return null;\n }\n }\n });\n\n scope.subscribe(\"ProjectDateColorCellUpdated\", function (value) {\n if(scope.model.boardAttributeId === value.projectAttributeId){\n scope.changeColor = value.changeColor;\n scope.changeColorXDaysBefore = value.changeColorXDaysBefore;\n }\n });\n\n scope.subscribe(\"ProjectEndDateUpdated\", function (project) {\n if (project.id == scope.model.project.id) {\n scope.date.endDate = moment(project.endDate).toDate();\n checkDate();\n }\n });\n scope.subscribe(\"ProjectEstimatedEndDateUpdated\", function (project) {\n if (project.id == scope.model.project.id) {\n scope.date.estimatedEndDate = moment(project.estimatedEndDate).toDate();\n checkDate();\n }\n });\n\n function createTempDate(){\n var projectid = null;\n if(scope.model && scope.model.project){\n projectid = scope.model.project.id;\n }\n scope.date = {\n id: projectid,\n endDate: null,\n estimatedEndDate: null,\n datePicker : {\n opened: false\n },\n estimatedDatePicker : {\n opened: false\n }\n };\n }\n\n function checkDate() {\n scope.date.status = \"\";\n if (scope.date) {\n scope.date.endDate = timeService.validateDate(scope.date.endDate);\n scope.date.estimatedEndDate = timeService.validateDate(scope.date.estimatedEndDate);\n scope.dateMissed = false;\n \n if (scope.date.endDate) {\n scope.date.status = \"completed\";\n var diff = moment.duration(moment(scope.date.endDate).diff(moment(scope.date.estimatedEndDate)));\n var days = diff.asDays();\n if(!isNaN(days)){\n scope.date.diffPlannedVSActual = Math.round(days);\n }else {\n scope.date.diffPlannedVSActual = null;\n }\n } else if (scope.date.estimatedEndDate) {\n //check if overdue/missed\n \n var duration = moment.duration(moment().endOf('day').diff(moment(scope.date.estimatedEndDate).endOf('day')));\n var days = duration.asDays();\n if (days > 1) {\n scope.date.status = \"missed\";\n scope.date.diffToPlannedDate = Math.trunc(days);\n scope.dateMissed = true;\n } else {\n scope.date.status = \"future\";\n scope.date.diffToPlannedDate = Math.round(days)*-1;\n }\n }\n }\n }\n }\n }\n }]);\n","import * as timeService from \"@common/services/timeService\"\n\nangular\n .module('DigiLean')\n .directive(\"projectMilestoneCell\", ['$filter', 'projectService',\n function ($filter, projectService) {\n return {\n templateUrl: 'projectMilestoneCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'editable': '=',\n 'projectAttributeChangeHandler': '&',\n },\n link: function (scope, elem, attrs) {\n scope.color = \"#0099DE\";\n scope.milestoneMissed = false;\n var createNew = false;\n scope.milestone = null;\n scope.value = null;\n scope.changeColor = false,\n scope.changeColorXDaysBefore = 1;\n\n scope.opened = false;\n\n scope.update = function (newValue) {\n if (scope.milestone && !createNew) {\n scope.value = newValue;\n scope.saveChanges();\n } else {\n createNew();\n }\n }\n\n scope.$watch(\"model\", function (model) {\n var value = model.projectAttribute.value;\n var settings = model.column.settings;\n if (value) {\n setValue(value);\n } else {\n createTempMilestone();\n }\n if (settings) {\n if(settings.changeColor && settings.changeColorXDaysBefore){\n scope.changeColor = true;\n scope.changeColorXDaysBefore = settings.changeColorXDaysBefore;\n }\n }\n model.getSortValue = function () {\n if (scope.milestone) {\n if(scope.milestone.actualDate){\n return scope.milestone.actualDate;\n } else {\n return scope.milestone.plannedDate;\n } \n } else {\n if(scope.model.project && scope.model.project.milestones && scope.milestoneId){\n var foundMilestone = $filter('filter')(scope.model.project.milestones, { id: scope.milestoneId });\n if (foundMilestone.length > 0) {\n if(foundMilestone[0].actualDate){\n return moment(foundMilestone[0].actualDate).toDate();\n } else if(foundMilestone[0].plannedDate){\n return moment(foundMilestone[0].plannedDate).toDate();\n } else {\n return null;\n }\n } else {\n return null;\n }\n } else {\n return null;\n }\n }\n }\n });\n\n scope.subscribe(\"ProjectDateColorCellUpdated\", function (value) {\n if(scope.model.boardAttributeId === value.projectAttributeId){\n scope.changeColor = value.changeColor;\n scope.changeColorXDaysBefore = value.changeColorXDaysBefore;\n }\n });\n\n var setValue = function (value) {\n\n //scope.value = moment(value.value).toDate();\n scope.milestoneId = value.milestoneId;\n projectService().getMilestone(scope.milestoneId).then(function (milestone) {\n\n if (milestone) {\n scope.milestone = milestone;\n if (scope.milestone.plannedDate) {\n scope.milestone.plannedDate = moment(milestone.plannedDate).toDate();\n }\n if (scope.milestone.actualDate) {\n scope.milestone.actualDate = moment(milestone.actualDate).toDate();\n }\n\n scope.milestone.datePicker = {\n opened: false\n },\n scope.milestone.estimatedDatePicker = {\n opened: false\n }\n\n checkMilestone();\n } else {\n createTempMilestone();\n }\n });\n }\n\n scope.subscribe(\"ProjectAttributeUpdated\", function (attribute) {\n if (attribute.projectId == scope.model.project.id && attribute.projectBoardAttributeId == scope.model.boardAttributeId) {\n if (attribute.value) {\n setValue(attribute.value);\n }\n }\n });\n\n scope.subscribe(\"ProjectMilestoneUpdated\", function (milestone) {\n if (milestone.id == scope.milestoneId) {\n if (milestone.plannedDate) {\n scope.milestone.plannedDate = moment(milestone.plannedDate).toDate();\n }\n if (milestone.actualDate) {\n scope.milestone.actualDate = moment(milestone.actualDate).toDate();\n }\n scope.milestone.datePicker = {\n opened: false\n }, scope.milestone.estimatedDatePicker = {\n opened: false\n };\n checkMilestone();\n }\n });\n\n scope.subscribe(\"ProjectBoardAttributeUpdated\", function (boardattribute) {\n if (boardattribute.id === scope.model.boardAttributeId) {\n if (scope.milestone.name !== boardattribute.name) {\n scope.milestone.name = boardattribute.name;\n }\n }\n });\n\n function createTempMilestone() {\n createNew = true;\n scope.milestone = {\n name: scope.model.column.name,//$translate.instant('PROJECT_MILESTONE'),\n projectId: scope.model.project.id,\n plannedDate: null,\n completedDate: null,\n datePicker : {\n opened: false\n },\n estimatedDatePicker : {\n opened: false\n }\n };\n }\n\n scope.savePlannedDate = function($event) {\n const date = $event.originalEvent.detail\n scope.milestone.plannedDate = date\n scope.saveChanges()\n }\n scope.saveActualDate = function($event) {\n const date = $event.originalEvent.detail\n scope.milestone.actualDate = date\n scope.saveChanges()\n }\n scope.saveChanges = function () {\n if (scope.model.column.name) {\n scope.milestone.name = scope.model.column.name;\n }\n if (!createNew) {\n projectService().updateMilestone(scope.milestone).then(function (milestone) {\n checkMilestone();\n saveCellAttributes();\n });\n } else {\n createNewMilestone();\n }\n\n }\n\n function createNewMilestone() {\n projectService().createMilestone(scope.milestone).then(function (milestone) {\n scope.milestone = milestone;\n scope.milestone.datePicker = {\n opened: false\n }, scope.milestone.estimatedDatePicker = {\n opened: false\n };\n createNew = false;\n if (milestone.actualDate) {\n scope.milestone.actualDate = moment(milestone.actualDate).toDate();\n }\n if (milestone.plannedDate) {\n scope.milestone.plannedDate = moment(milestone.plannedDate).toDate();\n }\n saveCellAttributes();\n checkMilestone();\n });\n }\n\n function saveCellAttributes() {\n var value = {\n milestoneId: scope.milestone.id\n }\n scope.model.projectAttribute.value = value;\n scope.projectAttributeChangeHandler({ projectAttribute: scope.model.projectAttribute })\n }\n\n function checkMilestone() {\n if (scope.milestone) {\n scope.milestone.actualDate = timeService.validateDate(scope.milestone.actualDate);\n scope.milestone.plannedDate = timeService.validateDate(scope.milestone.plannedDate);\n scope.milestoneMissed = false;\n if (scope.milestone.actualDate) {\n scope.milestone.status = \"completed\";\n var diff = moment.duration(moment(scope.milestone.actualDate).diff(moment(scope.milestone.plannedDate)));//moment.duration(moment(scope.milestone.actualDate).diff(moment(scope.milestone.plannedDate)));\n if (!isNaN(diff)) {\n scope.milestone.diffPlannedVSActual = diff.asDays();\n } else {\n scope.milestone.diffPlannedVSActual = null;\n }\n } else if (scope.milestone.plannedDate) {\n //check if overdue/missed\n\n var duration = moment.duration(moment().startOf('day').diff(moment(scope.milestone.plannedDate)));\n var days = duration.asDays();\n if (days >= 1) {\n scope.milestone.status = \"missed\";\n scope.milestone.diffToPlannedDate = Math.trunc(days);\n scope.milestoneMissed = true;\n } else {\n scope.milestone.status = \"future\";\n scope.milestone.diffToPlannedDate = Math.round(days) * -1;\n }\n }\n }\n }\n }\n }\n }]);\n","import * as employeeService from \"@common/services/employeeService\"\n\nangular\n .module('DigiLean')\n .controller(\"projectGridController\", ['$state', '$scope', '$filter', '$translate','authService', 'projectService', 'orderByFilter', '$uibModal',\n function ($state, $scope, $filter, $translate,authService, projectService,orderByFilter, $uibModal) {\n\n $scope.isAdmin = authService.hasRole(\"Admin\") || authService.hasRole(\"ProjectAdmin\");\n // if page is refreshed we need to refresh\n $scope.subscribe(\"UserAuthenticatedAndReady\", function (profile) {\n $scope.isAdmin = authService.hasRole(\"Admin\") || authService.hasRole(\"ProjectAdmin\");\n });\n $scope.otherprojects = [];\n\n function getStatusOrder(dbstatus) {\n switch (dbstatus) {\n case \"New\":\n return 1;\n case \"Plan\":\n return 2;\n case \"Do\":\n return 3;\n case \"Check\":\n return 4;\n case \"Act\":\n return 5;\n case \"Closed\":\n return 6;\n default:\n return 0;\n }\n }\n\n function getProjects() {\n employeeService.getUserPreference(\"ProjectFavorites\").then(function (settings) {\n if (settings && settings.value) {\n angular.forEach(settings.value, function (board) {\n if (board) {\n board.isStar = true;\n board.hasAccess = false;\n $scope.quickAccess.push(board);\n }\n });\n }\n projectService().getMyProjectsInfo().then(function (projects) {\n $scope.projects = projects;\n for (var i = 0; i < $scope.projects.length; i++) {\n checkMilestones($scope.projects[i]);\n angular.forEach($scope.projects, function (project) {\n var isFavorite = $filter('filter')($scope.quickAccess, { id: project.id })\n if (isFavorite.length > 0) {\n project.isStar = true;\n isFavorite[0].asset = project.asset;\n isFavorite[0].name = project.name;\n isFavorite[0].hasAccess = true;\n } else {\n project.isStar = false;\n }\n });\n }\n\n // Remove quick access board no longer available\n var quickAccessBoardsToRemove = $filter('filter')($scope.quickAccess, { hasAccess: false });\n if (quickAccessBoardsToRemove.length > 0) {\n quickAccessBoardsToRemove.forEach(x => {\n var index = $scope.quickAccess.indexOf(x);\n $scope.quickAccess.splice(index, 1);\n });\n saveQuickAccess();\n } else {\n sortProjects();\n }\n \n getOtherProjects();\n });\n\n });\n\n }\n\n getProjects();\n\n\n\n $scope.addProject = function () {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'projectNewModal.html',\n controller: 'projectNewController',\n resolve: {\n existing: function () {\n return $scope.projects;\n }\n }\n });\n\n modalInstance.result.then(function (newproject) {\n\n if (newproject) {\n\n projectService().addProject(newproject).then(function (createdProject) {\n\n $state.go('selectedProject', { id: createdProject.id }, { reload: false });\n });\n }\n }, function () {\n });\n }\n\n function sortProjects() {\n $scope.projects = orderByFilter($scope.projects, 'isStar', true);\n }\n\n // Favoriotes / Quick access\n $scope.quickAccess = [];\n $scope.addToQuickAccess = function (project) {\n project.isStar = true;\n $scope.quickAccess.push(project);\n saveQuickAccess();\n }\n\n\n\n $scope.removeFromQuickAccess = function (project) {\n project.isStar = false;\n var isFavorite = $filter('filter')($scope.quickAccess, { id: project.id })\n if (isFavorite.length > 0) {\n var currentIndex = $scope.quickAccess.indexOf(isFavorite[0]);\n $scope.quickAccess.splice(currentIndex, 1);\n saveQuickAccess();\n }\n var project = $filter('filter')($scope.projects, { id: project.id })\n if (project.length > 0) {\n project[0].isStar = false;\n }\n \n }\n function saveQuickAccess() {\n\n employeeService.updateUserPreference(\"ProjectFavorites\", $scope.quickAccess).then(function (settings) {\n $scope.publish(\"ProjectFavoritesChanged\", $scope.quickAccess);\n });\n sortProjects();\n }\n\n function getOtherProjects() {\n if ($scope.isAdmin) {\n projectService().getProjectsInfo().then(function (projects) {\n var allActiveProjects = projects;\n\n for (var i = 0; i < allActiveProjects.length; i++) {\n var inMyProjectList = $filter('filter')($scope.projects, { id: allActiveProjects[i].id }, true);\n if (inMyProjectList.length == 0) {\n checkMilestones(allActiveProjects[i]);\n $scope.otherprojects.push(allActiveProjects[i]);\n }\n }\n });\n\n }\n }\n\n\n function diffSinceToday(date) {\n var today = moment().startOf('day');\n var target = moment(date).startOf('day');\n var days = today.diff(target, 'days');\n return days\n }\n\n\n\n\n function checkMilestones(project) {\n project.milestoneMissed = false;\n //start date\n if (!project.startDate && project.estimatedStartDate) {\n var target = moment(project.estimatedStartDate).startOf('day');\n var days = diffSinceToday(target)\n if (days >= 1) {\n project.milestoneMissed = true;\n }\n var milestone = {\n name: $translate.instant('PROJECT_START_DATE'),\n plannedDate: project.estimatedStartDate,\n status: \"missed\"\n }\n addNextMilestone(project, milestone, days);\n }\n if (project.milestones && project.milestones.length > 0) {\n \n for (var i = 0; i < project.milestones.length; i++) {\n if (project.milestones[i].actualDate) {\n project.milestones[i].status = \"completed\";\n } else if (project.milestones[i].plannedDate) {\n //check if overdue/missed\n\n var today = moment().startOf('day');\n var target = moment(project.milestones[i].plannedDate).startOf('day');;\n var days = today.diff(target, 'days'); \n if (days >= 1) {\n project.milestones[i].status = \"missed\";\n project.milestoneMissed = true;\n } else {\n project.milestones[i].status = \"future\";\n }\n addNextMilestone(project, project.milestones[i], days);\n }\n }\n }\n //end date\n if (!project.endDate && project.estimatedEndDate) {\n var target = moment(project.estimatedEndDate).startOf('day');\n var days = diffSinceToday(target)\n if (days >= 1) {\n project.milestoneMissed = true;\n }\n var milestone = {\n name: $translate.instant('PROJECT_COMPLETION_DATE'),\n plannedDate: project.estimatedEndDate,\n status: \"missed\"\n }\n addNextMilestone(project, milestone, days);\n }\n }\n\n function addNextMilestone(project, milestone, days) {\n\n if (project.nextMilestone) {\n if (moment(project.nextMilestone.milestone.plannedDate).isAfter(moment(milestone.plannedDate))) {\n project.nextMilestone = {\n milestone: milestone,\n days: Math.abs(days)\n }\n }\n } else {\n project.nextMilestone = {\n milestone: milestone,\n days: Math.abs(days)\n }\n }\n }\n }]);\n\n\n\n","import * as employeeService from \"@common/services/employeeService\"\n\nangular\n .module('DigiLean')\n .controller(\"projectDetailsController\", ['$scope', '$state', '$stateParams', '$filter', '$uibModal', '$translate', 'authService','projectService','navigationService',\n function ($scope, $state, $stateParams, $filter, $uibModal, $translate, authService, projectService, navigationService) {\n\n $scope.project = null;\n $scope.customers = null;\n $scope.owner = {};\n $scope.selectedStatusOption = {};\n\n $scope.projectId = parseInt($stateParams.id);\n $scope.canEdit = false;\n $scope.titlehaserror = false;\n $scope.participants = [];\n\n $scope.isStar = false;\n $scope.quickAccess = [];\n\n $scope.imageId = null;\n $scope.editImage = false;\n $scope.imageUrl = null;\n\n $scope.hasImprovementModule = navigationService().hasModule(\"IMPROVEMENT\");\n $scope.hasDeviationModule = navigationService().hasModule(\"DEVIATION\");\n \n $scope.subscribe(\"UserAuthenticatedAndReady\", function(profile) {\n $scope.hasImprovementModule = navigationService().hasModule(\"IMPROVEMENT\");\n $scope.hasDeviationModule = navigationService().hasModule(\"DEVIATION\"); \n });\n $scope.isAdmin = authService.hasRole(\"Admin\") || authService.hasRole(\"ProjectAdmin\");\n // if page is refreshed we need to refresh\n $scope.subscribe(\"UserAuthenticatedAndReady\", function (profile) {\n $scope.isAdmin = authService.hasRole(\"Admin\") || authService.hasRole(\"ProjectAdmin\");\n });\n if($scope.isAdmin){\n $scope.canEdit = true;\n }\n\n $scope.settingProjectCategory =\n {\n groupColumn: \"problemCategoryId\",\n stackingColumn: \"status\",\n filters: [{\n sourceColumn: \"projectId\",\n operator: \"InList\",\n items: [$scope.projectId]\n }]\n }\n get();\n\n $scope.editProject = function () {\n $state.go('selectedProject', { id: $scope.projectId }, { reload: false });\n }\n\n \n\n\n $scope.setImageViewMode = function () {\n $scope.editImage = false;\n };\n $scope.setImageEditMode = function () {\n $scope.editImage = true;\n };\n\n projectService().getUsers($scope.projectId).then(function (projectUsers) {\n if (projectUsers) {\n $scope.users = projectUsers;\n\n }\n });\n function get() {\n projectService().hasAccess($scope.projectId).then(function (hasAccess) {\n if (hasAccess) {\n projectService().getProjectInfo($scope.projectId).then(function (project) {\n $scope.project = project;\n \n if(!$scope.canEdit){\n var userId = authService.getCurrentUser().userId;\n if($scope.project.ownerUserId == userId){\n //project owner may edit\n $scope.canEdit = true;\n }\n }\n \n $scope.imageId = $scope.project.imageId;\n $scope.imageUrl = $scope.project.imagePreviewUrl;\n if (!$scope.imageUrl) {\n $scope.editImage = true;\n }\n \n $scope.statusOptions = projectService().getStatus();\n $scope.selectedStatusOption = $filter('filter')($scope.statusOptions, { dbCode: $scope.project.status }, true)[0];\n \n setProjectCustomer();\n checkFavorite();\n });\n } else {\n swal({\n title: $translate.instant(\"COMMON_NO_ACCESS\"),\n text: $translate.instant(\"COMMON_REQUIRED_GROUP_MEMBERSHIP\"),\n icon: \"warning\",\n buttons: { ok: { text: $translate.instant('COMMON_OK'), className: \"sa-digilean-button\" } },\n dangerMode: true,\n closeOnConfirm: true,\n closeOnClickOutside: true,\n closeOnEsc: true\n });\n }\n }); \n }\n\n function setProjectCustomer() {\n if ($scope.project && $scope.project.projectCustomer && $scope.customers) {\n var matching = $filter('filter')($scope.customers, { id: $scope.project.projectCustomerId }, true);\n if (matching.length > 0) {\n $scope.selectedCustomer = matching[0];\n\n }\n }\n\n }\n\n $scope.editMilestones = function () {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'projectMilestoneListForm.html',\n controller: 'projectMilestoneListModalController',\n resolve: {\n projectId: function () {\n return $scope.projectId;\n }\n }\n });\n }\n \n \n \n\n projectService().getProjectCustomers().then(function (customers) {\n $scope.customers = customers;\n setProjectCustomer();\n });\n\n $scope.addToFavorites = function () {\n $scope.isStar = true;\n var project = {\n id: $scope.projectId,\n name: $scope.project.name\n };\n $scope.quickAccess.push(project);\n saveQuickAccess();\n }\n $scope.removeFromFavorites = function () {\n $scope.isStar = false;\n var isFavorite = $filter('filter')($scope.quickAccess, { id: $scope.projectId })\n if (isFavorite.length > 0) {\n var currentIndex = $scope.quickAccess.indexOf(isFavorite[0]);\n $scope.quickAccess.splice(currentIndex, 1);\n saveQuickAccess();\n }\n }\n function saveQuickAccess() {\n employeeService.updateUserPreference(\"ProjectFavorites\", $scope.quickAccess).then(function (settings) {\n $scope.publish(\"ProjectFavoritesChanged\", $scope.quickAccess);\n });\n }\n\n function checkFavorite(){\n employeeService.getUserPreference(\"ProjectFavorites\").then(function (settings) {\n if (settings && settings.value) {\n angular.forEach(settings.value, function (project) {\n if (project) {\n if(project.id == $scope.projectId){\n $scope.isStar = true;\n }\n $scope.quickAccess.push(project);\n }\n });\n }\n });\n }\n }]);\n","import * as employeeService from \"@common/services/employeeService\"\n\nangular\n .module('DigiLean')\n .controller(\"projectPortfolioController\", ['$scope', '$state', '$filter', '$uibModal', 'authService', 'projectService',\n function ($scope, $state, $filter, $uibModal, authService, projectService) {\n\n $scope.otherprojects = [];\n $scope.quickAccess = [];\n\n $scope.isAdmin = authService.hasRole(\"Admin\") || authService.hasRole(\"ProjectAdmin\");\n // if page is refreshed we need to refresh\n $scope.subscribe(\"UserAuthenticatedAndReady\", function (profile) {\n $scope.isAdmin = authService.hasRole(\"Admin\") || authService.hasRole(\"ProjectAdmin\");\n });\n\n function loadPortfolio() {\n employeeService.getUserPreference(\"ProjectPortfolioFavorites\").then(function (settings) {\n if (settings && settings.value) {\n $scope.quickAccess = settings.value;\n }\n projectService().getMemberProjectPortfolio().then(function (portfolios) {\n angular.forEach(portfolios, function (portfolio) {\n var isFavorite = $filter('filter')($scope.quickAccess, { id: portfolio.id })\n if (isFavorite.length > 0) {\n portfolio.isStar = true;\n } else {\n portfolio.isStar = false;\n }\n });\n sortByFavorites(portfolios);\n $scope.portfoliotables = portfolios;\n\n });\n\n });\n };\n\n function sortByFavorites(portfolios) {\n portfolios.sort(function(a, b){return b.isStar - a.isStar});\n }\n\n loadPortfolio();\n\n \n\n $scope.removeFromQuickAccess = function (portfolio) {\n portfolio.isStar = false;\n var isFavorite = $filter('filter')($scope.quickAccess, { id: portfolio.id })\n if (isFavorite.length > 0) {\n var currentIndex = $scope.quickAccess.indexOf(isFavorite[0]);\n $scope.quickAccess.splice(currentIndex, 1);\n sortByFavorites($scope.portfoliotables);\n saveQuickAccess();\n }\n }\n $scope.addToQuickAccess = function (portfolio) {\n portfolio.isStar = true;\n $scope.quickAccess.push(portfolio);\n sortByFavorites($scope.portfoliotables);\n saveQuickAccess();\n }\n function saveQuickAccess() {\n\n employeeService.updateUserPreference(\"ProjectPortfolioFavorites\", $scope.quickAccess).then(function (settings) {\n $scope.publish(\"ProjectPortfolioFavoritesChanged\", $scope.quickAccess);\n });\n }\n\n $scope.createNew = function () {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'newProjectPortfolioConfiguration.html',\n controller: 'newProjectPortfolioConfigurationController'\n });\n\n modalInstance.result.then(function (newId) {\n $state.go('board', { id: newId }, { reload: false });\n });\n\n }\n\n\n }]);\n\n\n\n","import * as assetService from \"@common/services/assetService\"\nimport * as boardService from \"@common/services/boardService\"\n\nvar DigiLean = angular.module('DigiLean');\nDigiLean.controller('newProjectPortfolioConfigurationController', ['$scope', '$uibModalInstance', 'projectBoardService',\n function ($scope, $uibModalInstance, projectBoardService) {\n\n $scope.useProjectGroup = true;\n\n $scope.isProcessing = false;\n $scope.participants = [];\n $scope.selectedAssetId = null;\n $scope.selectedAssetType = \"\";\n $scope.name = \"\";\n $scope.description = \"\";\n $scope.isPublic = false;\n\n $scope.options = {\n includeProject: false\n }\n \n\n $scope.projectBoardTemplate = createProjectTemplate();\n\n $scope.memberSelectionChanged = function (selection) {\n $scope.selectedAssetId = selection.assetId;\n $scope.participants = selection.participants;\n $scope.selectedAssetType = selection.assetType;\n }\n $scope.nameChanged = function(name) {\n $scope.name = name;\n }\n\n $scope.descriptionChanged = function(description) {\n $scope.description = description;\n }\n\n $scope.setPublicStatus = function() {\n $scope.isPublic = !$scope.isPublic;\n }\n\n function createProjectTemplate() {\n\n var template = {\n board: {\n boardType: \"Project\",\n name: \"\",\n description: \"\",\n settings: JSON.stringify({\n IsWeeklyBoard: false\n })\n },\n columns: [],\n rows: [],\n attributes: projectBoardService().getStandardProjectColumns()\n \n };\n return template;\n }\n\n $scope.ok = function () {\n // if (!$scope.hasSelectedAsset) return;\n $scope.isProcessing = true;\n \n if ($scope.selectedAssetType == \"CUSTOMIZED\") {\n var participants = [];\n $scope.participants.forEach(p => {\n var participant = {\n userId: p.userId,\n role: \"Member\"\n }\n participants.push(participant);\n });\n \n var customAsset = {\n name : $scope.name,\n participants : participants\n }\n assetService.createCustomAsset(customAsset).then(function(asset){\n $scope.selectedAssetId = asset.id;\n create();\n });\n \n } else {\n create();\n } \n }\n\n function create(){\n $scope.projectBoardTemplate.board.name = $scope.name;\n $scope.projectBoardTemplate.board.description = $scope.description;\n $scope.projectBoardTemplate.board.isPublic = $scope.isPublic\n $scope.projectBoardTemplate.board.assetId = $scope.selectedAssetId;\n\n\n boardService.create($scope.projectBoardTemplate).then(function (savedModel) {\n var newBoardId = savedModel.board.id;\n $scope.isProcessing = false;\n $uibModalInstance.close(newBoardId); \n });\n \n }\n\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n }]);","import { getAuthUser } from \"@common/stores/userStore\"\nimport * as timeService from \"@common/services/timeService\"\n\nangular.module('DigiLean').directive(\"projectMessages\", ['projectMessageService','$translate', 'modalService',\n function (projectMessageService, $translate, modalService) {\n return {\n templateUrl: 'projectMessages.html',\n restrict: 'E',\n scope: {\n 'projectId': '<',\n 'isEditMode': '<',\n },\n link: function (scope, elem, attrs) {\n\n const authUser = getAuthUser()\n scope.messageText = \"\"\n scope.showNewMessage = false;\n scope.isLoading = true;\n scope.showAddMessage = function() {\n scope.showNewMessage = true;\n }\n scope.addMessage = function() {\n var message = {\n text: scope.messageText,\n projectId: scope.projectId\n }\n scope.showNewMessage = false;\n //scope.isLoading = true;\n projectMessageService.addMessage(scope.projectId, message).then(function(message){\n scope.messageText = \"\";\n /*scope.isLoading = false;\n scope.messages.unshift(message);\n calculateTimeElapsed();*/\n });\n }\n scope.editMessage = function(msg) {\n msg.isEditing = true\n }\n scope.saveMessage = function(msg) {\n projectMessageService.editMessage(scope.projectId, msg).then(data => {\n msg.isEditing = false\n })\n }\n scope.deleteMessage = function(messageId) {\n // ADMIN_MESSAGE_DELETE_CONFIRMATION\n $translate(['COMMON_CANCEL', 'COMMON_DELETE', 'COMMON_MESSAGE', 'ADMIN_MESSAGE_DELETE_CONFIRMATION']).then(function (translations) {\n var modalOptions = {\n closeButtonText: translations.COMMON_CANCEL,\n actionButtonText: translations.COMMON_DELETE,\n headerText: translations.COMMON_DELETE + ' ' + translations.COMMON_MESSAGE + '?',\n bodyText: translations.ADMIN_MESSAGE_DELETE_CONFIRMATION \n };\n \n modalService.showModal({}, modalOptions).then(function (result) {\n projectMessageService.deleteMessage(scope.projectId, messageId).then(function (data) { \n const newMessageList = scope.messages.filter(m => m.id !== messageId)\n scope.messages = newMessageList\n });\n });\n });\n }\n\n function getMessages() {\n scope.isLoading = true;\n projectMessageService.getMessages(scope.projectId).then(function(messages){\n scope.isLoading = false;\n messages.forEach(message => {\n // replace linebreaks\n message.text = message.text.replace(/\\r\\n|\\r|\\n/g, \"
        \");\n });\n scope.messages = messages; \n scope.isLoading = false;\n calculateTimeElapsed();\n })\n }\n\n scope.$watch('projectId', function (projectId) {\n // apply\n if (!projectId) return;\n getMessages()\n });\n\n scope.canUserChange = function(msg) {\n if (msg.senderUserId == authUser.userId)\n return true\n if (authUser.roles && Array.isArray(authUser.roles) && authUser.roles.includes(\"Admin\"))\n return true\n return false\n }\n \n var translateOptions = {\n month: $translate.instant('COMMON_TIMEELAPSED_MONTH'),\n days: $translate.instant('COMMON_TIMEELAPSED_DAYS'),\n hours: $translate.instant('COMMON_TIMEELAPSED_HOURS'),\n mins: $translate.instant('COMMON_TIMEELAPSED_MINUTES'),\n seconds: $translate.instant('COMMON_TIMEELAPSED_SECONDS'),\n now: $translate.instant('COMMON_TIMEELAPSED_NOW')\n }\n var calculateTimeElapsed = function () {\n // Recalculate time elapsed\n scope.messages.forEach(function (message) {\n message.timeElapsed = timeService.getTimeElapsed(message.sendTime, translateOptions);\n });\n }\n\n scope.subscribe(\"ProjectMessageAdded\", function () {\n getMessages()\n });\n scope.subscribe(\"ProjectMessageEdited\", function () {\n getMessages()\n });\n scope.subscribe(\"ProjectMessageDeleted\", function () {\n getMessages()\n });\n scope.$on(\"$destroy\", function () {\n \n });\n }\n\n }\n }]);\n","import envConfig from \"@common/envConfig\";\n\nangular.module(\"DigiLean\").factory('projectMessageService', ['$http',\n function ($http) {\n var resource = \"/projectmessage\";\n var resourceUrl = envConfig.webApiUrl + resource;\n return {\n addMessage: function (projectId, message) {\n var url = resourceUrl + \"/addMessage/\" + projectId;\n return $http.post(url, message).then(function (result) {\n return result.data;\n });\n },\n getMessages: function(projectId) {\n var url = resourceUrl + \"/getMessages/\" + projectId;\n return $http.get(url).then(function(result){\n return result.data;\n });\n },\n editMessage: function (projectId, message) {\n var url = resourceUrl + \"/editMessage/\" + projectId;\n return $http.put(url, message).then(function (result) {\n return result.data;\n });\n },\n deleteMessage: function(projectId, messageId) {\n var url = resourceUrl + \"/deleteMessage/\" + projectId + \"/\" + messageId\n return $http.delete(url).then(function (result) {\n return result.data;\n });\n }\n };\n \n }]);","import * as customerService from \"@common/services/customers/customerService\"\nimport toaster from \"@common/components/toast\"\n\nangular\n .module('DigiLean')\n .controller(\"selectedProjectController\", ['$scope', '$state', '$stateParams', '$filter', '$translate', '$uibModal', 'contactlistService', 'projectService', 'modalService',\n function ($scope, $state, $stateParams, $filter, $translate, $uibModal, contactlistService, projectService, modalService) {\n\n $scope.project = null;\n \n $scope.owner = {};\n $scope.contact = null;\n $scope.contacts = [];\n $scope.qcontact = \"\";\n\n $scope.customers = null;\n $scope.customer = null;\n $scope.q = null;\n\n $scope.selectedStatusOption = {};\n\n $scope.projectId = parseInt($stateParams.id);\n $scope.canEdit = false;\n $scope.canEditMilestones = true;\n $scope.titlehaserror = false;\n $scope.participants = [];\n $scope.users = [];\n\n $scope.activityLog = [];\n\n $scope.imageId = null;\n $scope.editImage = false;\n $scope.imageUrl = null;\n\n get();\n \n $scope.setImageViewMode = function () {\n $scope.editImage = false;\n };\n $scope.setImageEditMode = function () {\n $scope.editImage = true;\n };\n\n $scope.canEdit = true;\n\n $scope.goToProjectHub = function () {\n $state.go('projectDetails', { id: $scope.projectId }, { reload: false });\n }\n\n $scope.createNewCustomer = function(customername){\n var customer = {\n projectId: $scope.projectId,\n name: customername\n };\n\n projectService().createNewCustomer(customer).then(function (newcustomer) {\n $scope.updateCustomer(newcustomer);\n });\n };\n\n $scope.updateCustomer = function(customer){\n $scope.customer = customer;\n projectService().updateCustomer($scope.projectId, customer.id).then(function (registeredcustomer) {\n }); \n };\n\n $scope.newCustomer = function (newname) {\n $translate(['COMMON_CANCEL', 'COMMON_SUBMIT', 'ADMIN_MESSAGE_NEW_CUSTOMER']).then(function (translations) {\n var modalOptions = {\n closeButtonText: translations.COMMON_CANCEL,\n actionButtonText: translations.COMMON_SUBMIT,\n headerText: translations.COMMON_SUBMIT + ' ' + newname + '?',\n bodyText: translations.ADMIN_MESSAGE_NEW_CUSTOMER\n };\n \n modalService.showModal({}, modalOptions).then(function (result) {\n var registration = {\n id: 0,\n name: newname\n };\n projectService().createNewCustomer(registration).then(function (customer) {\n $translate('ADMIN_MESSAGE_CUSTOMER_CREATED').then(function (msg) {\n toaster.success(msg);\n projectService().getProjectCustomers().then(function (customers) {\n $scope.customers = customers;\n var matching = $filter('filter')($scope.customers, { id: customer.id }, true);\n if (matching.length > 0) {\n $scope.customer = matching[0];\n $scope.q = null;\n }\n });\n }, function (translationId) {\n $scope.headline = translationId;\n });\n });\n });\n \n }); \n };\n\n $scope.updateContact = function(contact){\n if($scope.contact){\n $scope.contact.isSelected = false;\n }\n $scope.contact = contact;\n $scope.contact.isSelected = true;\n contactlistService().updateProjectContactPerson(contact.id,$scope.projectId).then(function (registeredcontact) {\n }); \n };\n\n \n // File upload\n $scope.uploadedFiles = []; // For uploading new attachments, will be connected to dropzone.\n $scope.imageUploaded = function (file) {\n $scope.imageId = file.id;\n projectService().saveImage($scope.projectId, file.id).then(function(result) {\n $scope.imageUrl = result.imagePreviewUrl;\n $scope.editImage = false;\n });\n };\n\n $scope.delete = function () {\n $translate(['COMMON_CANCEL', 'COMMON_DELETE', 'ADMIN_MESSAGE_DELETE_PROJECT_CONFIRMATION']).then(function (translations) {\n var modalOptions = {\n closeButtonText: translations.COMMON_CANCEL,\n actionButtonText: translations.COMMON_DELETE,\n headerText: translations.COMMON_DELETE + ' ' + $scope.project.name + '?',\n bodyText: translations.ADMIN_MESSAGE_DELETE_PROJECT_CONFIRMATION \n };\n \n modalService.showModal({}, modalOptions).then(function (result) { \n projectService().deleteProject($scope.projectId).then(function (deletedProject) {\n $state.go('myspace');\n });\n });\n });\n \n };\n\n $scope.updateEstimatedStartDate = function($event) {\n const date = $event.originalEvent.detail\n $scope.project.estimatedStartDate = date\n projectService().updateEstimatedStartDate($scope.projectId, date).then(function (date) {\n })\n }\n\n $scope.updateStartDate = function($event) {\n const date = $event.originalEvent.detail\n $scope.project.startDate = date\n projectService().updateStartDate($scope.projectId, date).then(function (date) {\n });\n };\n\n $scope.updateEstimatedEndDate = function($event) {\n const date = $event.originalEvent.detail\n $scope.project.estimatedEndDate = date\n projectService().updateEstimatedEndDate($scope.projectId, date).then(function (date) {\n });\n };\n\n $scope.updateEndDate = function($event) {\n const date = $event.originalEvent.detail\n $scope.project.endDate = date\n projectService().updateEndDate($scope.projectId, date).then(function (date) {\n });\n };\n\n $scope.updateProjectName = function(name) {\n projectService().updateProjectName($scope.projectId, name).then(()=>{}, err => {\n toaster.error(err.data.errors.Name[0])\n });\n };\n\n $scope.updateProjectDescription = function(description) {\n projectService().updateProjectDescription($scope.projectId, description).then(function (date) {\n });\n };\n \n\n function updateParticipants(users) {\n $scope.project.hasCustomizedGroup = true;\n // Set up users to select from\n $scope.users = $scope.allUsers.slice();\n $scope.participants = users;\n // Remove current participant so we can refresh the list\n for (var i = 0; i < users.length; i++) {\n var matchingUser = $filter('filter')($scope.users, { userId: users[i].userId }, true);\n if (matchingUser.length > 0) {\n var index = $scope.users.indexOf(matchingUser[0]);\n $scope.users.splice(index, 1);\n }\n }\n }\n\n function get() {\n projectService().getProjectInfo($scope.projectId).then(function (project) {\n $scope.project = project;\n if ($scope.project.estimatedStartDate) {\n $scope.project.estimatedStartDate = moment($scope.project.estimatedStartDate).toDate();\n }\n if ($scope.project.startDate) {\n $scope.project.startDate = moment($scope.project.startDate).toDate();\n }\n if ($scope.project.estimatedEndDate) {\n $scope.project.estimatedEndDate = moment($scope.project.estimatedEndDate).toDate();\n }\n if ($scope.project.endDate) {\n $scope.project.endDate = moment($scope.project.endDate).toDate();\n }\n $scope.imageId = $scope.project.imageId;\n $scope.imageUrl = $scope.project.imagePreviewUrl;\n if (!$scope.imageUrl) {\n $scope.editImage = true;\n }\n\n $scope.statusOptions = projectService().getStatus();\n $scope.selectedStatusOption = $filter('filter')($scope.statusOptions, { dbCode: $scope.project.status }, true)[0];\n \n getAllUsers($scope.project.ownerUserId);\n setProjectCustomer();\n\n contactlistService().getList().then(function (items) {\n $scope.contacts = items;\n setProjectContact();\n });\n });\n }\n\n function setProjectCustomer(){\n if ($scope.project && $scope.project.projectCustomer && $scope.customers) {\n var matching = $filter('filter')($scope.customers, { id: $scope.project.projectCustomerId }, true);\n if (matching.length > 0) {\n $scope.selectedCustomer = matching[0];\n $scope.customer = matching[0];\n $scope.customer.isSelected = true; \n } \n } \n } \n\n function setProjectContact(){\n contactlistService().getProjectContactPerson($scope.projectId).then(function (contact) {\n if(contact){\n var matching = $filter('filter')($scope.contacts, { id: contact.id }, true);\n if (matching.length > 0) {\n $scope.contact = matching[0];\n $scope.contact.isSelected = true; \n } \n }\n });\n } \n\n $scope.clearContact = function () {\n contactlistService().deleteProjectContactPerson($scope.projectId).then(function () {\n if($scope.contact){\n $scope.contact.isSelected = false;\n }\n $scope.contact = null;\n });\n }; \n\n $scope.newContact = function (name) {\n var suggestedName = \"\";\n var suggestedCompany = \"\";\n if(name){\n suggestedName = name;\n }\n if($scope.customer){\n suggestedCompany = $scope.customer.name;\n }\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'newContactPersonForm.html',\n controller: 'newContactPersonModalController',\n resolve: {\n contact: function () {\n return {\n id: 0,\n firstName: suggestedName,\n lastName: \"\",\n title: \"\",\n email: \"\",\n phoneNumber: \"\",\n companyName: suggestedCompany\n };\n }\n \n }\n });\n \n // When user has created new contact\n modalInstance.result.then(function (newcontact) {\n contactlistService().getList().then(function (items) {\n $scope.contacts = items;\n var matching = $filter('filter')($scope.contacts, { id: newcontact.id }, true);\n if (matching.length > 0) {\n $scope.updateContact(matching[0]); \n };\n });\n }, function () {\n });\n };\n\n projectService().getProjectCustomers().then(function (customers) {\n $scope.customers = customers; \n setProjectCustomer(); \n });\n\n $scope.statusChanged = function (status) {\n projectService().updateProjectStatus($scope.projectId, status.dbCode).then(function (result) {\n \n });\n }\n\n $scope.updateProjectNumber = function (number) {\n projectService().updateProjectNumber($scope.projectId, number).then(function (result) {\n \n });\n }\n \n function getAllUsers(ownerId) {\n customerService.getAllUsers().then(function (users) {\n $scope.users = users;\n if (ownerId) {\n var matchingUser = $filter('filter')($scope.users, { userId: ownerId }, true);\n if (matchingUser.length > 0) {\n $scope.owner = matchingUser[0];\n }\n }\n });\n }\n\n $scope.ownerChanged = function (owner) {\n if (owner) {\n\n projectService().updateOwner($scope.projectId, owner).then(function (registeredowner) {\n });\n }\n }\n }]);\n","import * as customerService from \"@common/services/customers/customerService\"\nimport * as boardService from \"@common/services/boardService\"\nimport * as profileImageService from \"@common/services/user/profileImageService\"\n\nangular\n .module('DigiLean')\n .controller(\"newtasktoprojecttasklistController\", ['$scope', '$filter', '$uibModalInstance', '$translate', 'boardTaskService', 'projectService', 'projectId',\n function ($scope, $filter, $uibModalInstance, $translate, boardTaskService, projectService, projectId) {\n\n\n $scope.boards = {};\n $scope.selectedEmployee = {};\n var translatedProjectTaskList = $translate.instant('PROJECT_PROJECT_TASKS');\n $scope.selectedBoard = null;//translatedPersonalBoard;\n // the new action object\n $scope.task = {\n id: 0,\n priorityStatus: 0,\n isActionItem: true,\n status: 'blank'\n };\n\n\n $scope.emptyUser = {\n id: '',\n userName: null,\n profileImageUrl: null,\n fullName: null,\n displayName: null\n }\n /* Froala has some issues unless given a little pause before showing */\n $scope.isFormReady = false;\n setTimeout(function () {\n $scope.isFormReady = true;\n }, 100);\n\n\n var projectBoardId = null; // the project's default task list\n\n projectService().getBoardsForProject(projectId).then(function (boards) {\n $scope.boards = boards;\n projectService().getBoardForProject(projectId).then(function (board) {\n projectBoardId = board.id;\n var existboard = $filter('filter')($scope.boards, { id: board.id }, true);\n if (existboard.length > 0) {\n $scope.selectedBoard = existboard[0];\n } else {\n $scope.boards.unshift(board);\n $scope.selectedBoard = board;\n }\n });\n });\n\n async function getAllUsers() {\n $scope.allusers = await profileImageService.getAllUsersIncludeProfileImage()\n $scope.employees = $scope.allusers\n }\n getAllUsers()\n\n\n $scope.boardDateChanged = function($event) {\n const date = $event.originalEvent.detail\n $scope.task.boardDate = date\n }\n\n\n // Make sure boardDate is date object \n $scope.descriptionChanged = function (content) {\n $scope.task.text = content\n }\n\n $scope.changePriorityStatus = function (priority) {\n $scope.task.priorityStatus = priority;\n }\n\n\n $scope.selectUser = function (user) {\n\n $scope.task.responsibleImageUrl = user.profileImageUrl;\n $scope.task.responsibleUserId = user.id;\n $scope.task.responsibleUser = user.fullName;\n $scope.task.responsibleDisplayName = user.displayName;\n if (user.id == '') {\n $scope.task.user = null;\n } else {\n $scope.task.user = user;\n }\n }\n\n $scope.getUserListForBoard = function (board) {\n if (board.id == projectBoardId) {\n $scope.employees = $scope.allusers;\n if ($scope.task && $scope.task.responsibleUserId) {\n $scope.task.user = $filter('filter')($scope.allusers, { id: $scope.task.responsibleUserId }, true)[0];\n }\n } else {\n boardService.getUserListForBoard(board.id).then(function (data) {\n angular.forEach(data, function (employee, key) {\n employee.fullName = employee.firstName + \" \" + employee.lastName;\n });\n $scope.employees = data;\n if (data.length > 0) {\n if ($scope.task && $scope.task.responsibleUserId) {\n $scope.task.user = $filter('filter')(data, { id: $scope.task.responsibleUserId }, true)[0];\n }\n }\n });\n }\n }\n\n $scope.ok = function () {\n if (!$scope.selectedBoard) return;\n\n $scope.task.boardId = $scope.selectedBoard.id;\n\n boardTaskService().addTask($scope.task).then(function (taskId) {\n $scope.task.id = taskId;\n $scope.publish(\"SendCreateActionListItem\", $scope.task);\n $scope.task.board = $scope.selectedBoard;\n $uibModalInstance.close($scope.task);\n });\n\n };\n\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n\n\n /*\n setTimeout(function () {\n $(\"#taskTags\").tagit({\n // availableTags: sampleTags,\n // This will make Tag-it submit a single form value, as a comma-delimited field.\n singleField: true,\n singleFieldNode: $('#tagsSelected')\n });\n }, 200);*/\n }]);","import envConfig from \"@common/envConfig\";\n\n\nangular.module(\"DigiLean\").factory('suggestionService', ['$rootScope', '$http', '$translate',\n function ($rootScope, $http, $translate) {\n function suggestionService() {\n var resource = \"/suggestion\";\n var resourceUrl = envConfig.webApiUrl + resource;\n var improvementUrl = envConfig.webApiUrl + \"//improvement\";\n return {\n getNextStatus: function (currentStatus) {\n if (currentStatus === \"Suggested\") return \"Implemented\"; // New to Resolved\n if (currentStatus === \"Planned\") return \"Implemented\"; // IN progress to Resolved\n if (currentStatus === \"InProgress\") return \"Implemented\"; // Resolved to Rejected\n if (currentStatus === \"Implemented\") return \"Archived\"; // Rejected to New\n if (currentStatus === \"Evaluated\") return \"Archived\"; // Rejected to New\n if (currentStatus === \"Archived\") return \"Planned\"; // Rejected to New\n return \"Planned\";\n },\n /* If the sortable identificator is modified, remember to update the OngoingFilterSettings.cs in backend */\n getAllColumns: function (renderValue) {\n return [\n {\n title: $translate.instant(\"COMMON_STATUS\"),\n field: 'status',\n visible: true,\n sortable: 'status',\n getValue: renderValue,\n dataType: \"text\"\n },\n {\n title: $translate.instant(\"COMMON_TITLE\"),\n field: 'title',\n visible: true,\n sortable: 'title',\n getValue: renderValue,\n dataType: \"text\"\n },\n {\n title: $translate.instant(\"IMPROVEMENT_PRIORITY\"),\n field: 'priorityStatus',\n visible: true,\n sortable: 'priorityStatus',\n getValue: renderValue,\n dataType: \"int\"\n },\n {\n title: $translate.instant(\"COMMON_CATEGORY\"),\n field: 'category',\n visible: true,\n sortable: 'category',\n getValue: renderValue,\n dataType: \"text\"\n },\n {\n title: $translate.instant(\"COMMON_ASSET\"),\n field: 'assetName',\n sortable: 'assetName',\n getValue: renderValue,\n visible: true,\n dataType: \"text\"\n },\n {\n title: $translate.instant(\"COMMON_PROJECT\"),\n field: 'projectName',\n sortable: 'projectName',\n getValue: renderValue,\n visible: true,\n dataType: \"text\"\n },\n {\n title: $translate.instant(\"COMMON_SUGGESTED_BY\"),\n field: 'suggestedBy',\n sortable: 'suggestedBy',\n getValue: renderValue,\n visible: true,\n dataType: \"text\"\n },\n {\n title: $translate.instant(\"COMMON_RESPONSIBLE\"),\n field: 'responsibleUser',\n sortable: 'responsibleUser',\n getValue: renderValue,\n visible: true,\n dataType: \"text\"\n },\n {\n title: $translate.instant(\"COMMON_DUE_DATE\"),\n field: 'dueDate',\n visible: true,\n sortable: 'dueDate',\n getValue: renderValue,\n dataType: \"date\"\n },\n {\n title: $translate.instant(\"COMMON_COST\"),\n field: 'cost',\n visible: true,\n sortable: 'cost',\n getValue: renderValue,\n dataType: \"number\"\n },\n {\n title: $translate.instant(\"COMMON_BENEFIT\"),\n field: 'benefit',\n visible: true,\n sortable: 'benefit',\n getValue: renderValue,\n dataType: \"number\"\n },\n {\n title: $translate.instant(\"COMMON_COST_HOURS\"),\n field: 'costHours',\n visible: true,\n sortable: 'costHours',\n getValue: renderValue,\n dataType: \"number\"\n },\n {\n title: $translate.instant(\"COMMON_BENEFIT_HOURS\"),\n field: 'benefitHours',\n visible: true,\n sortable: 'benefitHours',\n getValue: renderValue,\n dataType: \"number\"\n },\n {\n title: $translate.instant(\"COMMON_SUGGESTED\"),\n field: 'suggestionDate',\n visible: true,\n sortable: 'suggestionDate',\n getValue: renderValue,\n dataType: \"date\"\n },\n {\n title: $translate.instant(\"DASHBOARD_COMPLETED\"),\n field: 'statusImplementedDate',\n visible: true,\n sortable: 'statusImplementedDate',\n getValue: renderValue,\n dataType: \"date\"\n },\n {\n title: $translate.instant(\"COMMON_LAST_CHANGED\"),\n field: 'lastModified',\n visible: true,\n sortable: 'lastModified',\n getValue: renderValue,\n dataType: \"date\"\n },\n {\n title: $translate.instant(\"COMMON_ID\"),\n field: 'id',\n visible: false,\n sortable: 'id',\n getValue: renderValue,\n dataType: \"number\"\n },\n ];\n },\n get: function (id) {\n var url = resourceUrl + \"/\" + id;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n getLikesForSuggestion: function (id) {\n var url = resourceUrl + \"/getLikesForSuggestion/\" + id;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n getList: function () {\n return $http.get(resourceUrl).then(function (result) {\n return result.data;\n });\n },\n\n getTableValues: function (tableParams) {\n var url = envConfig.webApiUrl + \"/improvement/getTableValues/\";\n return $http.post(url, tableParams).then(function (result) {\n return result.data;\n });\n },\n\n getOngoingFiltered: function (filterModel) {\n var url = envConfig.webApiUrl + \"/improvement/getongoingfiltered\";\n return $http.post(url, filterModel).then(function (result) {\n return result.data;\n });\n },\n\n getTotalNumberOfImprovements: function (includeArchived) {\n if (!includeArchived) includeArchived = false;\n var url = envConfig.webApiUrl + \"/improvement/getTotalNumberOfImprovements?archived=\" + includeArchived;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n \n getLatestSuggestions: function (page, pageSize) {\n var url = envConfig.webApiUrl + \"/improvement/getLatestSuggestions?page=\" + page + \"&pagesize=\" + pageSize;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n\n getImplementedSuggestionByAsset: function (timeperiod) {\n var url = envConfig.webApiUrl + \"/improvement/getImplementedSuggestionByAsset/\";\n return $http.post(url, timeperiod).then(function (result) {\n return result.data;\n });\n },\n\n getSuggestionStatuses: function () {\n return [\n {\n status: \"Suggested\"\n },\n {\n status: \"Planned\"\n },\n {\n status: \"Implemented\"\n },\n {\n status: \"Archived\"\n }\n ];\n },\n canEdit: function (id) {\n var url = resourceUrl + \"/canedit/\" + id;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n\n getPriorityStatusText: function (prioritystatusno) {\n switch (prioritystatusno) {\n case 1:\n return $translate.instant('IMPROVEMENT_LOW_EFFORT_HIGH_EFFECT');\n case 2:\n return $translate.instant('IMPROVEMENT_HIGH_EFFORT_HIGH_EFFECT');\n case 3:\n return $translate.instant('IMPROVEMENT_LOW_EFFORT_LOW_EFFECT');\n case 4:\n return $translate.instant('IMPROVEMENT_HIGH_EFFORT_LOW_EFFECT');\n default:\n return $translate.instant('IMPROVEMENT_NOT_PRIORITIZED');\n\n }\n },\n\n getMySuggestions: function () {\n var url = resourceUrl + \"/getMySuggestions/\";\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n getMyDigiLeanFeedback: function() {\n const url = resourceUrl + \"/getMyDigiLeanFeedback\"\n return $http.get(url).then(function (result) {\n return result.data\n })\n },\n commentOnFeedback: function(feedbackId, comment) {\n const url = `${resourceUrl}/${feedbackId}/commentOnFeedback`\n return $http.post(url, comment).then(function (result) {\n return result.data\n })\n },\n getUserListForSuggestion: function (id) {\n var url = resourceUrl + \"/getUserListForSuggestion/\" + id;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n getCustomerSuggestions: function () {\n var url = resourceUrl + \"/getCustomerSuggestions/\";\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n\n getListByStatus: function (status, timePeriod) {\n\n var url = resourceUrl + \"/getbystatus/\" + status;\n return $http.post(url, timePeriod).then(function (result) {\n return result.data;\n });\n },\n\n getListByAsset: function (assetid) {\n\n var url = improvementUrl + \"/GetSuggestionsByAsset/\" + assetid;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n\n getListByUser: function () {\n var url = resourceUrl + \"/getbyuserid/\"; // Don't need userid, because backend will know user who asks\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n\n addSuggestion: function (suggestion) {\n return $http.post(resourceUrl, suggestion).then(function (result) {\n return result.data;\n });\n },\n updateResponsible: function (data) {\n resourceUrl = resourceUrl + \"/UpdateResponsible/\";\n return $http.put(resourceUrl, data).then(function (result) {\n return result.data;\n });\n },\n addFeedBackToDigiLean: function (suggestion) {\n var url = resourceUrl + \"/AddFeedBackToDigiLean\";\n return $http.post(url, suggestion).then(function (result) {\n return result.data;\n });\n },\n\n addAttachment: function (suggestionId, fileInfo) {\n var url = resourceUrl + \"/\" + suggestionId + \"/addAttachment\";\n return $http.post(url, fileInfo).then(function (result) {\n return result.data; \n });\n },\n\n deleteAttachment: function (suggestionId, attachmentId) {\n var url = resourceUrl + \"/\" + suggestionId + \"/deleteAttachment/\" + attachmentId;\n return $http.delete(url).then(function (result) {\n return result.data;\n });\n },\n\n addComment: function (options) {\n var url = resourceUrl + \"/\" + options.suggestionId + \"/addcomment\";\n return $http.post(url, options).then(function (result) {\n return result.data; // comment object is returned\n });\n },\n getComments: function (suggestionId) {\n var url = resourceUrl + \"/getComments/\" + suggestionId;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n deleteComment: function (suggestionId, commentId) {\n var url = resourceUrl + \"/\" + suggestionId + \"/deleteComment/\" + commentId;\n return $http.delete(url).then(function (result) {\n return result.data;\n });\n },\n addLike: function (suggestionId) {\n var url = resourceUrl + \"/\" + suggestionId + \"/addlike\";\n return $http.post(url).then(function (result) {\n return result.data; // like object is returned\n });\n },\n\n removeLike: function (suggestionId) {\n var url = resourceUrl + \"/\" + suggestionId + \"/removelike\";\n return $http.delete(url).then(function (result) {\n return result.data; // like object is returned\n });\n },\n\n /* Suggestion must contain all relevant data since the entire row will be updated, except roi*/\n updateSuggestion: function (suggestion) {\n var url = resourceUrl + \"/\" + suggestion.id;\n return $http.put(url, suggestion).then(function (result) {\n return result.data;\n });\n },\n\n deleteSuggestion: function (id) {\n var url = resourceUrl + \"/\" + id;\n return $http.delete(url).then(function (result) {\n return result.data;\n });\n },\n\n updateImprovementStrategyGoal: function(suggestion){\n var url = resourceUrl + \"/\" + suggestion.id + \"/updateImprovementStrategyGoal\";\n return $http.put(url, suggestion).then(function (result) {\n return result.data;\n });\n },\n\n changePriorityStatus: function (options) {\n var url = resourceUrl + \"/\" + options.suggestionId + \"/changestatus\";\n return $http.put(url, options).then(function () {\n return;\n });\n },\n updateStatus: function (status) {\n var url = resourceUrl + \"/\" + status.suggestionId + \"/updatestatus\";\n return $http.put(url, status).then(function () {\n return;\n });\n },\n updateROI: function (roi) {\n var url = resourceUrl + \"/\" + roi.suggestionId + \"/updateROI\";\n return $http.put(url, roi).then(function () {\n return;\n });\n },\n updateStatusOnCustomerSuggestion: function (options) {\n var url = resourceUrl + \"/\" + options.suggestionId + \"/UpdateStatusOnCustomerSuggestion\";\n return $http.put(url, options).then(function () {\n return;\n });\n },\n\n activate: function (activationList) {\n var url = resourceUrl + \"/activate\";\n return $http.post(url, activationList).then(function (result) {\n return result.data;\n });\n },\n\n getImprovementsForAssetWithActionItems: function (assetId) {\n var url = resourceUrl + \"/GetImprovementsForAssetWithActionItems/\" + assetId;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n\n //TODO: implement functionality\n getNoOfSuggestionByAssetAndStatusAndMonth: function(timePeriod) {\n var url = envConfig.webApiUrl + \"/improvement/GetAssetMonthCountOnStatus/\";\n return $http.post(url, timePeriod).then(function (result) {\n return result.data;\n }); \n },\n \n getSuggestionsByFilter: function (options) {\n var url = resourceUrl + \"/getSuggestionsByFilter\";\n return $http.post(url, options).then(function (result) {\n return result.data;\n });\n }, \n\n getSuggestionsForPeriod: function (options) {\n var url = resourceUrl + \"/getSuggestionsForPeriod\";\n return $http.post(url, options).then(function (result) {\n return result.data;\n });\n }, \n\n\n getLeadTimeForAssets: function(timePeriod) {\n var url = envConfig.webApiUrl + \"/improvement/getLeadTimeForAssets/\";\n return $http.post(url, timePeriod).then(function (result) {\n return result.data;\n });\n },\n getTopImprovementInitiatives: function(timePeriod) {\n var url = envConfig.webApiUrl + \"/improvement/getTopImprovementInitiatives/\";\n return $http.post(url, timePeriod).then(function (result) {\n return result.data;\n });\n },\n getTopTimeImprovementInitiatives: function(timePeriod) {\n var url = envConfig.webApiUrl + \"/improvement/getTopTimeImprovementInitiatives/\";\n return $http.post(url, timePeriod).then(function (result) {\n return result.data;\n });\n },\n getTimeEstimatedInitiatives: function(timePeriod) {\n var url = envConfig.webApiUrl + \"/improvement/getTimeEstimatedInitiatives/\";\n return $http.post(url, timePeriod).then(function (result) {\n return result.data;\n });\n },\n getTimeRealization: function(timePeriod) {\n var url = envConfig.webApiUrl + \"/improvement/getTimeRealization/\";\n return $http.post(url, timePeriod).then(function (result) {\n return result.data;\n });\n },\n getTimeInitiativeMonthlyRealized: function (timePeriod) {\n var url = envConfig.webApiUrl + \"/improvement/GetTimeInitiativeMonthlyRealized/\";\n return $http.post(url, timePeriod).then(function (result) {\n return result.data;\n }); \n },\n getEstimatedInitiatives: function(timePeriod) {\n var url = envConfig.webApiUrl + \"/improvement/getEstimatedInitiatives/\";\n return $http.post(url, timePeriod).then(function (result) {\n return result.data;\n });\n },\n getRealization: function(timePeriod) {\n var url = envConfig.webApiUrl + \"/improvement/getRealization/\";\n return $http.post(url, timePeriod).then(function (result) {\n return result.data;\n });\n },\n getRealizationForAssets: function(timePeriod) {\n var url = envConfig.webApiUrl + \"/improvement/getRealizationForAssets/\";\n return $http.post(url, timePeriod).then(function (result) {\n return result.data;\n });\n },\n getTimeRealizationForAssets: function(timePeriod) {\n var url = envConfig.webApiUrl + \"/improvement/getTimeRealizationForAssets/\";\n return $http.post(url, timePeriod).then(function (result) {\n return result.data;\n });\n },\n\n getRoiForAssets: function (timePeriod) {\n var url = envConfig.webApiUrl + \"/improvement/getRoiForAssets/\";\n return $http.post(url, timePeriod).then(function (result) {\n return result.data;\n });\n },\n\n getNoImprovementPerStatus: function (assetId) {\n if(assetId === null){\n assetId = 0;\n }\n var url = envConfig.webApiUrl + \"/improvement/getNoImprovementPerStatus/\" + assetId;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n\n getNoProjectImprovementPerStatus: function (projectId) {\n var url = envConfig.webApiUrl + \"/improvement/getNoProjectImprovementPerStatus/\" + projectId;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n \n\n getNoMyImprovementStatus: function () {\n var url = envConfig.webApiUrl + \"/improvement/getMySuggestionsStatusNumber/\";\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n getCategories: function () {\n var url = resourceUrl + \"/getCategories\";\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n\n createCategory: function (category) {\n var url = envConfig.webApiUrl + \"/improvementAdmin/addCategory\";\n return $http.post(url, category).then(function (result) {\n return result.data;\n });\n },\n updateCategory: function (category) {\n var url = envConfig.webApiUrl + \"/improvementAdmin/updateCategory\";\n return $http.put(url, category).then(function (result) {\n return result.data;\n });\n },\n\n deleteCategory: function (id) {\n var url = envConfig.webApiUrl + \"/improvementAdmin/deleteCategory/\" + id;\n return $http.delete(url).then(function (result) {\n return result.data;\n });\n },\n getA3Status:function(suggestionstatus){\n switch (suggestionstatus) {\n case 'Suggested':\n return \"New\";\n case 'Planned':\n return \"Plan\";\n case 'InProgress':\n return \"Do\";\n case 'Implemented':\n return \"\";\n case 'Evaluated':\n return \"Act\";\n default:\n return null;\n }\n },\n }\n }\n return suggestionService;\n }]);\n","import * as customerService from \"@common/services/customers/customerService\"\nimport * as timeService from \"@common/services/timeService\"\n\nvar DigiLean = angular.module('DigiLean');\nDigiLean.controller('myMessagesController', ['$scope', '$state', '$filter', '$translate','$uibModal', 'authService',\n function ($scope, $state, $filter, $translate, $uibModal, authService) {\n $scope.isLoading = true;\n $scope.canWrite = authService.hasRole(\"Admin\") || authService.hasRole(\"MessageWriter\");\n $scope.subscribe('UserAuthenticatedAndReady', function (profile) {\n var hasAccess = $filter('filter')(profile.modules, { name: \"IMPROVEMENT\" });\n $scope.canWrite = authService.hasRole(\"Admin\") || authService.hasRole(\"MessageWriter\");\n });\n\n $scope.allMessages = [];\n $scope.messages = [];\n\n $scope.subscribe(\"MessageReceived\", function () {\n getMessages();\n });\n \n $scope.subscribe(\"ProjectMessageAdded\", function () {\n getMessages();\n });\n\n $scope.subscribe(\"ProjectMessageEdited\", function () {\n getMessages();\n });\n $scope.subscribe(\"ProjectMessageDeleted\", function () {\n getMessages();\n });\n $scope.goTo = function (msg) {\n if(msg.projectId != null){\n $state.go('projectDetails', { id: msg.projectId }, { reload: false });\n }\n }\n\n function getMessages() {\n customerService.getMessages().then(function (result) {\n $scope.allMessages = result;\n $scope.isLoading = false;\n $scope.allMessages.forEach(message => {\n // replace linebreaks\n message.text = message.text.replace(/\\r\\n|\\r|\\n/g, \"
        \");\n if (message.isPublic){\n message.typeColor = \"#5ab700\";\n message.type = $translate.instant('COMMON_ALL');\n } else if (message.recipientUserId != null){\n message.typeColor = \"#F8AC59\"\n message.type = $translate.instant('COMMON_PERSONAL');\n } else if (message.projectId != null){\n message.typeColor = \"#0099DE\"\n message.type = $translate.instant('COMMON_PROJECT');\n } else if (message.assetId != null){\n message.typeColor = \"#f0ad4e\"\n message.type = $translate.instant('COMMON_TEAM_BOARD');\n } else {\n message.typeColor = \"#D770AD\"\n message.type = $translate.instant('COMMON_ASSET');\n }\n })\n $scope.$applyAsync()\n calculateTimeElapsed();\n });\n }\n getMessages();\n\n $scope.createNew = function () {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'newMessageModal.html',\n controller: 'newMessageModalController',\n windowClass: 'assetselector-modal-window',\n resolve: {\n }\n });\n };\n\n var calculateTimeElapsed = function () {\n // Recalculate time elapsed\n $scope.allMessages.forEach(function (message) {\n timeService.addTimeElapsedForMsg(message);\n });\n };\n\n\n }]);","import * as employeeService from \"@common/services/employeeService\"\n\nangular\n .module('DigiLean')\n .directive(\"priorityMatrix\", ['$filter', 'authService', '$uibModal', 'suggestionService',\n function ($filter, authService, $uibModal, suggestionService) {\n return {\n templateUrl: 'priorityMatrix.html',\n restrict: 'E',\n scope: {\n 'filterSource': '@',\n 'widgetSettingsFilter': '<',\n 'filterChangedHandler': '&',\n 'context': '@'\n },\n link: function (scope, elem, attrs) {\n scope.userid = authService.getCurrentUser().userId;\n\n // if page is refreshed we need to refresh the access to modules\n scope.subscribe(\"UserAuthenticatedAndReady\", function (profile) {\n scope.userid = profile.user.id;\n });\n\n scope.filter = null;\n scope.$watch('filterSource', function (filterSource) {\n if (filterSource == \"userpreference\") {\n employeeService.getUserPreference(\"ImprovementPriorityFilter\").then(function (filterpreferences) {\n if (filterpreferences && filterpreferences.value) {\n scope.filter = filterpreferences.value;\n }\n });\n }\n });\n scope.$watch('widgetSettingsFilter', function (filter) {\n if (scope.filterSource == \"widget\" && filter) {\n scope.filter = filter;\n }\n });\n scope.filterChanged = function (filter) {\n if (scope.filterSource == \"widget\") {\n // Pass on filter to widget\n scope.filterChangedHandler({ filter: filter });\n } else {\n if (!filter) { // Clear filter\n employeeService.deleteUserPreference(\"ImprovementPriorityFilter\").then(function () {\n });\n } else { // update\n employeeService.updateUserPreference(\"ImprovementPriorityFilter\", filter).then(function () {\n\n });\n }\n }\n }\n // Get all 3 years back\n var startDate = moment().subtract(36, 'month').startOf(\"month\");\n var endDate = moment().endOf('month');\n scope.timePeriod = {\n from: startDate.utc().toDate().toJSON(),\n to: endDate.utc().toDate().toJSON()\n }\n\n scope.new = {\n list: [],\n filteredList: []\n };\n scope.suggestionStatus1 = {\n list: [],\n filteredList: []\n };\n scope.suggestionStatus2 = {\n list: [],\n filteredList: []\n };\n scope.suggestionStatus3 = {\n list: [],\n filteredList: []\n };\n scope.suggestionStatus4 = {\n list: [],\n filteredList: []\n };\n\n\n // UI SORTABLE => Drag and drop, SuggestionList\n scope.suggestionSortableOptions = {\n connectWith: \".suggestioncontainer\",\n receive: changePriorityStatus\n };\n // Priority matrix options pr \n scope.matrixSortableOptions = {\n connectWith: \"#suggestionList, .suggestioncontainer\",\n receive: changePriorityStatus\n };\n\n function changePriorityStatus(e, ui) {\n var target = ui.item.sortable.droptarget[0];\n var prioritystatus = $(target).attr(\"data-prioritystatus\");\n var source = ui.item.sortable.source[0];\n var sourceStatus = $(source).attr(\"data-prioritystatus\");\n var suggestion = ui.item.sortable.model;\n // alert(\"from priority: \" + sourceStatus + \" to: \" + prioritystatus);\n var status = \"Suggested\";\n if (prioritystatus > 0) status = \"Planned\";\n var statusData = {\n suggestionId: suggestion.id,\n status: status,\n priorityStatus: parseInt(prioritystatus)\n };\n\n suggestionService().changePriorityStatus(statusData).then(function () {\n // if status also has changed we need to notify\n if (suggestion.status !== statusData.status) {\n suggestionService().updateStatus(statusData).then(function () {\n\n });\n\n }\n });\n };\n\n\n scope.subscribe(\"ImprovementLikeAdded\", function (like) {\n var existingSuggestions = $filter('filter')(scope.new.list, { id: like.improvementSuggestionId }, true);\n if (existingSuggestions.length === 1) {\n var index = scope.new.list.indexOf(existingSuggestions[0]);\n scope.new.list[index].likes.push(like);\n }\n });\n\n scope.subscribe(\"ImprovementLikeRemoved\", function (like) {\n var inList = $filter('filter')(scope.new.list, { id: like.improvementSuggestionId }, true);\n if (inList.length === 1) {\n var existingLike = $filter('filter')(inList[0].likes, { id: like.id }, true);\n if (existingLike.length == 1) {\n var index = inList[0].likes.indexOf(existingLike[0]);\n inList[0].likes.splice(index, 1);\n }\n\n }\n });\n\n scope.subscribe(\"ImprovementTitleChanged\", function (improvementTitle) {\n var existingSuggestions = $filter('filter')(scope.new.list, { id: improvementTitle.suggestionId }, true);\n if (existingSuggestions.length === 1) {\n var index = scope.new.list.indexOf(existingSuggestions[0]);\n scope.new.list[index].title = improvementTitle.newText;\n scope.new.list[index].cssClass = \"animated bounce\";\n // check filtered list\n var existingfilteredSuggestions = $filter('filter')(scope.new.filteredList, { id: improvementTitle.suggestionId }, true);\n if (existingfilteredSuggestions.length === 1) {\n var index = scope.new.filteredList.indexOf(existingfilteredSuggestions[0]);\n scope.new.filteredList[index].title = improvementTitle.newText;\n scope.new.filteredList[index].cssClass = \"animated bounce\";\n }\n } else {\n existingSuggestions = $filter('filter')(scope.suggestionStatus1.list, { id: improvementTitle.suggestionId }, true);\n if (existingSuggestions.length === 1) {\n var index = scope.suggestionStatus1.list.indexOf(existingSuggestions[0]);\n scope.suggestionStatus1.list[index].title = improvementTitle.newText;\n scope.suggestionStatus1.list[index].cssClass = \"animated bounce\";\n // check filtered list\n var existingfilteredSuggestions = $filter('filter')(scope.suggestionStatus1.filteredList, { id: improvementTitle.suggestionId }, true);\n if (existingfilteredSuggestions.length === 1) {\n var index = scope.suggestionStatus1.filteredList.indexOf(existingfilteredSuggestions[0]);\n scope.suggestionStatus1.filteredList[index].title = improvementTitle.newText;\n scope.suggestionStatus1.filteredList[index].cssClass = \"animated bounce\";\n }\n } else {\n existingSuggestions = $filter('filter')(scope.suggestionStatus2.list, { id: improvementTitle.suggestionId }, true);\n if (existingSuggestions.length === 1) {\n var index = scope.suggestionStatus2.list.indexOf(existingSuggestions[0]);\n scope.suggestionStatus2.list[index].title = improvementTitle.newText;\n scope.suggestionStatus2.list[index].cssClass = \"animated bounce\";\n // check filtered list\n var existingfilteredSuggestions = $filter('filter')(scope.suggestionStatus2.filteredList, { id: improvementTitle.suggestionId }, true);\n if (existingfilteredSuggestions.length === 1) {\n var index = scope.suggestionStatus2.filteredList.indexOf(existingfilteredSuggestions[0]);\n scope.suggestionStatus2.filteredList[index].title = improvementTitle.newText;\n scope.suggestionStatus2.filteredList[index].cssClass = \"animated bounce\";\n }\n } else {\n existingSuggestions = $filter('filter')(scope.suggestionStatus3.list, { id: improvementTitle.suggestionId }, true);\n if (existingSuggestions.length === 1) {\n var index = scope.suggestionStatus3.list.indexOf(existingSuggestions[0]);\n scope.suggestionStatus3.list[index].title = improvementTitle.newText;\n scope.suggestionStatus3.list[index].cssClass = \"animated bounce\";\n // check filtered list\n var existingfilteredSuggestions = $filter('filter')(scope.suggestionStatus3.filteredList, { id: improvementTitle.suggestionId }, true);\n if (existingfilteredSuggestions.length === 1) {\n var index = scope.suggestionStatus3.filteredList.indexOf(existingfilteredSuggestions[0]);\n scope.suggestionStatus3.filteredList[index].title = improvementTitle.newText;\n scope.suggestionStatus3.filteredList[index].cssClass = \"animated bounce\";\n }\n } else {\n existingSuggestions = $filter('filter')(scope.suggestionStatus4.list, { id: improvementTitle.suggestionId }, true);\n if (existingSuggestions.length === 1) {\n var index = scope.suggestionStatus4.list.indexOf(existingSuggestions[0]);\n scope.suggestionStatus4.list[index].title = improvementTitle.newText;\n scope.suggestionStatus4.list[index].cssClass = \"animated bounce\";\n // check filtered list\n var existingfilteredSuggestions = $filter('filter')(scope.suggestionStatus4.filteredList, { id: improvementTitle.suggestionId }, true);\n if (existingfilteredSuggestions.length === 1) {\n var index = scope.suggestionStatus4.filteredList.indexOf(existingfilteredSuggestions[0]);\n scope.suggestionStatus4.filteredList[index].title = improvementTitle.newText;\n scope.suggestionStatus4.filteredList[index].cssClass = \"animated bounce\";\n }\n }\n } \n }\n }\n }\n });\n\n\n\n\n\n scope.subscribe(\"ImprovementResponsibleChanged\", function (improvementResponsible) {\n // find suggestion by id\n var existingSuggestions = $filter('filter')(scope.new.list, { id: improvementResponsible.suggestionId }, true);\n if (existingSuggestions.length === 1) {\n var index = scope.new.list.indexOf(existingSuggestions[0]);\n scope.new.list[index].responsibleUserId = improvementResponsible.newResponsibleUserId;\n scope.new.list[index].responsibleUser = improvementResponsible.newResponsibleUser;\n scope.new.list[index].cssClass = \"animated bounce\"; // Add animation\n\n var existingfilteredSuggestions = $filter('filter')(scope.new.filteredList, { id: improvementResponsible.suggestionId }, true);\n if (existingfilteredSuggestions.length === 1) {\n var index = scope.new.filteredList.indexOf(existingfilteredSuggestions[0]);\n scope.new.filteredList[index].responsibleUserId = improvementResponsible.newResponsibleUserId;\n scope.new.filteredList[index].responsibleUser = improvementResponsible.newResponsibleUser;\n scope.new.filteredList[index].cssClass = \"animated bounce\"; // Add animation\n }\n }\n });\n\n scope.subscribe(\"ImprovementUpdated\", function (suggestion) {\n suggestion.cssClass = \"animated bounce\"; // Add animation\n // find suggestion by id\n suggestionService().get(suggestion.id).then(function (fullSuggestion) {\n var existingSuggestions = $filter('filter')(scope.new.list, { id: fullSuggestion.id }, true);\n if (existingSuggestions.length === 1) {\n var index = scope.new.list.indexOf(existingSuggestions[0]);\n fullSuggestion.cssClass = \"animated bounce\";\n scope.new.list[index] = fullSuggestion;\n }\n\n var existingfilteredSuggestions = $filter('filter')(scope.new.filteredList, { id: fullSuggestion.id }, true);\n if (existingfilteredSuggestions.length === 1) {\n var index2 = scope.new.filteredList.indexOf(existingfilteredSuggestions[0]);\n fullSuggestion.cssClass = \"animated bounce\";\n scope.new.filteredList[index2] = fullSuggestion;\n }\n });\n\n });\n\n\n function removeAnmiation(suggestion) {\n setTimeout(function () {\n suggestion.cssState = \"\";\n }, 1000);\n }\n\n scope.filterById = function (value) {\n return (scope.filterValues.indexOf(value.id) !== -1);\n };\n\n\n scope.suggestionOpenForEdit = function (suggestionInfo) {\n suggestionService().get(suggestionInfo.id).then(function (suggestion) {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: scope.animationsEnabled,\n templateUrl: 'fullImprovementInfoForm.html',\n controller: 'fullImprovementModalController',\n windowClass: 'fullSuggestion-modal-window',\n resolve: {\n suggestion: function () {\n return suggestion;\n },\n activeTab: function () {\n return \"Info\";\n }\n }\n });\n modalInstance.result.then(function (updatedSuggestion) {\n suggestion.roi = updatedSuggestion.roi;\n });\n });\n }\n\n\n scope.showComments = function (suggestion) {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: scope.animationsEnabled,\n templateUrl: 'fullImprovementInfoForm.html',\n controller: 'fullImprovementModalController',\n windowClass: 'fullSuggestion-modal-window',\n resolve: {\n suggestion: function () {\n return suggestion;\n },\n activeTab: function () {\n return \"Comments\";\n }\n }\n });\n modalInstance.result.then(function (updatedSuggestion) {\n suggestion.roi = updatedSuggestion.roi;\n });\n\n }\n\n scope.likedByMe = function (suggestion) {\n if (suggestion.likes) {\n for (var i = 0; i < suggestion.likes.length; i++) {\n if (suggestion.likes[i].likedByUserId === scope.userid) {\n return true;\n }\n }\n }\n return false;\n }\n\n scope.commentedByMe = function (suggestion) {\n if (suggestion.comments) {\n for (var i = 0; i < suggestion.comments.length; i++) {\n if (suggestion.comments[i].commentedByUserId === scope.userid) {\n return true;\n }\n }\n }\n return false;\n }\n\n scope.addComment = function (suggestion) {\n if (typeof suggestion.comments === 'undefined') {\n suggestion.comments = [];\n }\n\n var currentComment = {\n suggestionId: suggestion.id,\n comment: suggestion.activeComment\n };\n suggestionService().addComment(currentComment).then(function (savedComment) {\n suggestion.comments.push(savedComment);\n });\n suggestion.activeComment = \"\";\n }\n\n scope.like = function (item) {\n //item.isLiked = !item.isLiked;\n if (!scope.likedByMe(item)) {\n suggestionService().addLike(item.id).then(function (like) {\n // Like event will increase counter\n });\n } else {\n suggestionService().removeLike(item.id).then(function () {\n });\n }\n }\n\n\n // Add suggestion\n scope.newItem = function () {\n\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'newSuggestionForm.html',\n controller: 'newSuggestionModalController',\n resolve: {\n suggestion: function () {\n return {\n id: 0,\n title: \"\",\n text: \"\",\n suggestedBy: \"\",\n suggestionDate: new Date(),\n showComments: false,\n likes: [],\n comments: [],\n }\n }\n\n }\n });\n\n // When user has created new suggestion\n modalInstance.result.then(function (suggestion) {\n suggestionService().addSuggestion(suggestion).then(function (savedsuggestion) {\n });\n }, function () {\n //$log.info('Modal dismissed at: ' + new Date());\n });\n\n };\n }\n }\n\n }]);","import * as assetService from \"@common/services/assetService\"\n\nangular\n .module('DigiLean')\n .controller(\"suggestionListModalController\", ['$scope', '$filter', '$uibModalInstance', '$uibModal', 'suggestionService', 'authService', 'options',\n function ($scope, $filter, $uibModalInstance, $uibModal, suggestionService, authService, options) {\n\n $scope.options = options;\n $scope.suggestions = [];\n $scope.isAdmin = authService.hasRole(\"Admin\") ||authService.hasRole(\"ImprovementAdmin\");\n\n if (options && options.timePeriod)\n {\n suggestionService().getSuggestionsForPeriod($scope.options).then(function (suggestions) {\n $scope.suggestions = suggestions;\n setDateStyleToSuggestions($scope.suggestions);\n assetService.getAllAssets().then(function (assets) {\n $scope.assets = assets;\n for (var i = 0; i < $scope.suggestions.length; i++) {\n var a = $filter('filter')($scope.assets,{ id: $scope.suggestions[i].followUpAssetId },true);\n if (a && a.length > 0) {\n $scope.suggestions[i].followUpGroup = a[0].name;\n }\n }\n });\n });\n }\n else\n {\n suggestionService().getSuggestionsByFilter($scope.options).then(function (suggestions) {\n $scope.suggestions = suggestions; \n setDateStyleToSuggestions($scope.suggestions);\n assetService.getAllAssets().then(function (assets) {\n $scope.assets = assets;\n assignAssetNameToSuggestions(suggestions);\n suggestionService().getCategories().then(function (items) {\n $scope.categories = items;\n assignCategoryNameToSuggestions(suggestions);\n });\n /*\n for (var i = 0; i < $scope.suggestions.length; i++) {\n \n var a = $filter('filter')($scope.assets, { id: $scope.suggestions[i].responsibleUserId }, true);\n if (a && a.length > 0) {\n $scope.suggestions[i].responsibleUserId = a[0].name;\n }\n }*/\n \n }); \n });\n }\n\n\n function assignAssetNameToSuggestions(suggestions) {\n suggestions.forEach(function (suggestion) {\n if (suggestion.assetId) {\n var asset = $filter('filter')($scope.assets, { id: suggestion.assetId }, true);\n if (asset.length === 1) {\n suggestion.assetName = asset[0].name;\n }\n }\n });\n }\n function assignCategoryNameToSuggestions(suggestions) {\n suggestions.forEach(function (suggestion) {\n if (suggestion.categoryId) {\n var category = $filter('filter')($scope.categories, { id: suggestion.categoryId }, true);\n if (category.length === 1) {\n suggestion.category = category[0].name;\n }\n }\n });\n }\n\n $scope.close = function () {\n $uibModalInstance.dismiss('cancel');\n }\n\n $scope.openSuggestion = function (suggestion) {\n suggestionService().get(suggestion.id).then(function (suggestion) {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n templateUrl: 'fullImprovementInfoForm.html',\n controller: 'fullImprovementModalController',\n windowClass: 'fullSuggestion-modal-window',\n resolve: {\n suggestion: function () {\n return suggestion;\n },\n activeTab: function () {\n return \"Info\";\n }\n }\n });\n });\n };\n\n function setDateStyleToSuggestions(suggestions){\n suggestions.forEach(function (suggestion) {\n if(suggestion.status === \"Suggested\" || suggestion.status === \"Planned\" || suggestion.status === \"InProgress\"){\n suggestion.dateStyleClass = getDateStyle(suggestion.dueDate);\n }\n });\n }\n\n function getDateStyle(date) {\n if (!date) return \"\";\n // Overdue check\n\n var overdue = \"\";\n var duration = moment.duration(moment().diff(moment(date)));\n var days = duration.asDays();\n if (days > 1) {\n overdue = \"overdue\";\n }\n return overdue;\n }\n }]);","import * as customerService from \"@common/services/customers/customerService\"\nimport * as profileService from \"@common/services/user/profileService\"\nimport * as timeService from \"@common/services/timeService\"\nimport * as boardService from \"@common/services/boardService\"\nimport * as profileImageService from \"@common/services/user/profileImageService\"\nimport toaster from \"@common/components/toast\"\n\nangular\n .module('DigiLean')\n .directive(\"improvementActionList\", ['$translate', '$uibModal', 'suggestionService', 'actionlistService', 'taskDrawingService', 'boardTaskService',\n function ($translate, $uibModal, suggestionService, actionlistService, taskDrawingService, boardTaskService) {\n return {\n templateUrl: 'improvementActionList.html',\n restrict: 'E',\n scope: {\n 'suggestionid': '=',\n 'assetId': '<'\n },\n link: function (scope, elem, attrs) {\n scope.users = [];\n scope.allusers = [];\n scope.items = [];\n scope.boards = [];\n scope.canEdit = true;\n scope.showMoreButton = true;\n\n scope.boardoptions = {\n mandatory: false\n }\n\n scope.$watch(\"suggestionid\", function () {\n if (!scope.suggestionid) return;\n\n // Get actionlist\n actionlistService().getActionListForImprovementSuggestion(scope.suggestionid).then(function (items) {\n if (items.length !== 0) {\n scope.items = items;\n setResponsible();\n }\n });\n\n boardService.getAllBoardNames().then(function (data) {\n scope.boards = data;\n });\n });\n\n scope.$watch(\"assetId\", async function () {\n if (!scope.suggestionid)\n return;\n const users = await suggestionService().getUserListForSuggestion(scope.suggestionid)\n const usersWithImages = await profileImageService.getProfileImagesForUsers(users)\n scope.users = usersWithImages;\n if (scope.users && scope.users.length > 0) {\n setResponsible();\n } else {\n getAllUsers();\n }\n });\n\n function setBoardDate(item, date) {\n if (date) {\n item.boardDate = moment(date).toDate();\n } else {\n item.boardDate = null;\n }\n }\n\n scope.loadMoreUsers = async function () {\n if (scope.allusers.length > 0) {\n scope.users = scope.allusers;\n scope.showMoreButton = false;\n } else {\n \n scope.users = await getAllUsers()\n scope.showMoreButton = false;\n \n }\n }\n\n function setResponsible() {\n if (scope.items) {\n scope.items.forEach(function (item) {\n setResponsibleFromAllUsers(item)\n \n setBoardDate(item, item.boardDate);\n item.datePicker = {\n opened: false\n }\n });\n }\n }\n\n async function setResponsibleFromAllUsers(task) {\n if (!task.responsibleUserId)\n return\n\n await getAllUsers()\n\n const user = scope.allusers.find(u => u.id == task.responsibleUserId)\n if (user)\n task.user = user\n }\n\n async function getAllUsers() {\n if (scope.allusers.length == 0) {\n scope.allusers = await profileImageService.getAllUsersIncludeProfileImage()\n }\n return scope.allusers;\n }\n\n scope.setActive = function (task) {\n task.active = true;\n setTimeout(function () {\n $(elem).find(\".project-name\").focus();\n }, 50);\n }\n\n scope.add = function () {\n var item = {\n title: \"\",\n boardDate: moment().utc().toDate(),\n user: null\n }\n actionlistService().createImprovementActionItem(scope.suggestionid, item).then(function (actionItem) {\n if (actionItem.boardDate) {\n actionItem.boardDate = moment(actionItem.boardDate).toDate();\n }\n actionItem.datePicker = {\n opened: false\n }\n scope.items.unshift(actionItem);\n scope.setActive(actionItem);\n scope.publish(\"SendCreateActionListItem\", actionItem);\n });\n }\n\n // Datepicker setup\n scope.formats = ['dd.MM.yyyy', 'dd-MMMM-yyyy', 'yyyy/MM/dd', 'yyyy-MM-dd', 'shortDate']\n scope.format = scope.formats[0];\n scope.altInputFormats = ['M!/d!/yyyy'];\n scope.opened = false;\n scope.datepickerOpen = function (task) {\n task.datePicker.opened = true;\n }\n scope.dateOptions = timeService.globalDatePickerOptions();\n\n\n scope.delete = function (item) {\n actionlistService().deleteActionItem(item.id)\n };\n\n scope.saveItemDescription = function (task) {\n task.active = false;\n var taskDescription = {\n taskId: task.id,\n description: task.title\n };\n actionlistService().updateItemDescription(task.id, taskDescription).then(function () {\n $translate('DEVIATION_ACTION_ITEM_SAVED').then(function (msg) {\n toaster.success(msg);\n });\n scope.publish(\"SendTaskDescriptionUpdated\", taskDescription);\n });\n }\n\n scope.userChangeHandler = function (userinfo) {\n if (userinfo) {\n var user = userinfo.user;\n var item = userinfo.model;\n item.user = user;\n // \n actionlistService().assignActionListItemUser(item.id, user)\n }\n }\n\n scope.openTask = function (activeTab, subtask) {\n if (!activeTab) activeTab = \"Info\";\n var options = {\n canChangeBoard: false\n };\n\n boardTaskService().get(subtask.id).then(function (task) {\n $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'boardTask.html',\n controller: 'boardTaskController',\n resolve: {\n task: function () {\n return task;\n },\n activeTab: function () {\n return activeTab;\n },\n options: function () {\n return options;\n }\n }\n });\n })\n\n }\n\n scope.changeActionDate = function (item, event) {\n const date = event.originalEvent.detail\n item.boardDate = date\n var actionDate = {\n taskId: item.id,\n actionDate: item.boardDate\n };\n if (item.boardId) {\n boardTaskService().updateDate(item.id, item.boardDate).then(function (taskMoved) {\n //Subtask will not be updated if any...\n $translate('DEVIATION_ACTION_ITEM_SAVED').then(function (msg) {\n toaster.success(msg);\n });\n // publish event on change\n scope.publish(\"SendTaskDateUpdated\", actionDate);\n });\n } else {\n actionlistService().updateItemActionDate(actionDate).then(function () {\n $translate('DEVIATION_ACTION_ITEM_SAVED').then(function (msg) {\n toaster.success(msg);\n });\n // publish event on change\n scope.publish(\"SendTaskDateUpdated\", actionDate);\n });\n }\n }\n\n scope.updateResponsible = function (user, item) {\n item.user = user;\n actionlistService().assignActionListItemUser(item.id, user)\n }\n\n\n scope.changeStatus = function (item) {\n if (!scope.canEdit) return;\n item.status = taskDrawingService().getNextStatus(item.status).status;\n var status = {\n taskId: item.id,\n status: item.status\n };\n actionlistService().updateStatus(status)\n }\n\n scope.clearSelectedUser = function (task) {\n var emptyUser = {\n userId: null,\n fullName: \"\",\n displayName: \"\"\n }\n scope.selectUser(task, emptyUser);\n\n };\n scope.selectUser = function (task, user) {\n task.user = user;\n task.ResponsibleUserId\n var userDetails = {\n userId: user.userId,\n userName: user.fullName,\n userDisplayName: user.displayName,\n previousUserId: task.responsibleUserId,\n previousUserName: task.responsibleUser\n };\n // save\n var options = {\n taskId: task.id,\n user: userDetails\n }\n boardTaskService().assignUser(options);\n task.responsibleUserId = user.userId;\n task.responsibleDisplayName = user.displayName;\n task.responsibleUser = user.fullName;\n //mapResponsibleToColumn(task);\n //mapResponsibleToRow(task);\n };\n\n scope.autoGrow = function (element) {\n element.style.height = \"5px\";\n element.style.height = (element.scrollHeight) + \"px\";\n }\n\n setTimeout(function () {\n // Applied globally on all textareas with the \"autoExpand\" class\n $(document)\n .one('focus.autoExpand', 'textarea.autoExpand', function () {\n var savedValue = this.value;\n this.value = '';\n this.baseScrollHeight = this.scrollHeight;\n this.value = savedValue;\n })\n .on('input.autoExpand', 'textarea.autoExpand', function () {\n var minRows = this.getAttribute('data-min-rows') | 0, rows;\n this.rows = minRows;\n rows = Math.ceil((this.scrollHeight - this.baseScrollHeight) / 17);\n this.rows = minRows + rows;\n });\n }, 1500);\n scope.subscribe('TaskStatusUpdated', function (status) {\n var task = scope.items.find(i => i.id == status.taskId)\n if (task) {\n task.status = status.status;\n }\n });\n scope.subscribe('TaskDeleted', function (id) {\n var task = scope.items.find(i => i.id ==id )\n if (task) {\n var index = scope.items.indexOf(task);\n if (index > -1) {\n task.cssState = \"animated slideOutLeft\"; // Add animation\n setTimeout(function () {\n scope.items.splice(index, 1);\n }, 300);\n }\n }\n });\n scope.subscribe('TaskCommentAdded', function (comment) {\n var task = scope.items.find(i => i.id == comment.boardTaskId)\n if (task) {\n task.commentCount = comment.taskCommentCount;\n }\n });\n scope.subscribe('TaskUpdated', function (updatedTask) {\n var task = scope.items.find(i => i.id == updatedTask.id)\n if (task) {\n task.status = updatedTask.status;\n task.title = updatedTask.title;\n task.text = updatedTask.text;\n task.description = updatedTask.description;\n task.attachmentCount = updatedTask.attachmentCount;\n task.commentCount = updatedTask.commentCount;\n setBoardDate(task, updatedTask.boardDate);\n task.responsibleUserId = updatedTask.responsibleUserId;\n setResponsible();\n }\n });\n }\n }\n }]);\n","import * as assetService from \"@common/services/assetService\"\n\nangular\n .module('DigiLean')\n .directive(\"improvementFilter\", ['$filter', '$translate', 'strategyService', 'suggestionService', 'authService', 'projectService', 'navigationService',\n function ($filter, $translate, strategyService, suggestionService, authService, projectService, navigationService) {\n return {\n templateUrl: 'improvementFilter.html',\n restrict: 'E',\n scope: {\n 'filter': '<',\n 'filterChangedHandler': '&',\n 'new': '=',\n 'planned': '=',\n 'inprogress': '=',\n 'implemented': '=',\n 'evaluated': '=',\n 'timePeriod': '='\n },\n link: function (scope, elem, attrs) {\n scope.isFilterActive = false;\n scope.likesFilterActive = false;\n scope.myResponsibleFilterActive = false;\n scope.assets = [];\n scope.categories = [];\n scope.projects = [];\n scope.goals = [];\n scope.statuses = [scope.new, scope.planned, scope.inprogress, scope.implemented, scope.evaluated];\n\n scope.hasStrategyModule = navigationService().hasModule(\"STRATEGY\");\n scope.subscribe(\"UserAuthenticatedAndReady\", function(profile) {\n scope.hasStrategyModule = navigationService().hasModule(\"STRATEGY\"); \n });\n scope.$watch('filter', function (filter) {\n if (filter) {\n scope.filterPreferences = filter;\n filterByUserPreference();\n }\n });\n scope.$watch('new', function () {\n if (scope.new) {\n scope.statuses = [scope.new, scope.planned, scope.inprogress, scope.implemented, scope.evaluated];\n loadAssets();\n loadCategories();\n loadProjects();\n loadGoals();\n }\n });\n\n scope.$watch('timePeriod', function (value) {\n if (value) {\n getAllData();\n filterByUserPreference();\n }\n });\n\n // Events\n scope.subscribe(\"NewImprovement\", function (newSuggestion) {\n var isPartOfContainer = $filter('filter')(scope.new.list, { id: newSuggestion.id });\n if (isPartOfContainer.length === 0) {\n suggestionService().get(newSuggestion.id).then(function (suggestion) {\n suggestion.cssState = \"animated slideInDown\"; // Add animation\n scope.new.list.unshift(suggestion);\n removeAnmiation(suggestion);\n if (scope.isFilterActive) {\n filterSuggestions();\n }\n });\n }\n });\n function removeAnmiation(suggestion) {\n setTimeout(function () {\n suggestion.cssState = \"\";\n }, 1000);\n }\n\n function filterByUserPreference() {\n\n if (scope.filterPreferences) {\n if (scope.filterPreferences.priority) {\n setPriorityFilterPreferences(scope.filterPreferences.priority);\n }\n if (scope.filterPreferences.asset) {\n setAssetFilterPreferences(scope.filterPreferences.asset);\n }\n if (scope.filterPreferences.project) {\n setProjectFilterPreferences(scope.filterPreferences.project);\n }\n if (scope.filterPreferences.goal) {\n setGoalFilterPreferences(scope.filterPreferences.project);\n }\n if (scope.filterPreferences.category) {\n setCategoryFilterPreferences(scope.filterPreferences.category);\n }\n if (scope.filterPreferences.status) {\n setStatusFilterPreferences(scope.filterPreferences.status);\n }\n if (scope.filterPreferences.myResponsible) {\n scope.myResponsibleFilterActive = true;\n }\n if (scope.filterPreferences.likes) {\n scope.likesFilterActive = true;\n }\n filterSuggestions();\n }\n\n }\n\n scope.filterProject = function (project) {\n project.filteredAndInResultList = !project.filteredAndInResultList;\n if (project.filteredAndInResultList) {\n if (scope.filterPreferences && scope.filterPreferences.project) {\n scope.filterPreferences.project.push(project.id);\n } else {\n if (scope.filterPreferences) {\n scope.filterPreferences.project = [project.id];\n } else {\n scope.filterPreferences = {\n project: [project.id]\n };\n }\n scope.filterPreferences.project = [project.id];\n }\n } else { // remove from filter\n if (scope.filterPreferences.project) {\n var index = scope.filterPreferences.project.indexOf(project.id);\n scope.filterPreferences.project.splice(index, 1);\n }\n }\n updateFilterPreferences();\n filterSuggestions();\n }\n scope.filterGoal = function (goal) {\n goal.filteredAndInResultList = !goal.filteredAndInResultList;\n if (goal.filteredAndInResultList) {\n if (scope.filterPreferences && scope.filterPreferences.goal) {\n scope.filterPreferences.goal.push(goal.id);\n } else {\n if (scope.filterPreferences) {\n scope.filterPreferences.goal = [goal.id];\n } else {\n scope.filterPreferences = {\n goal: [goal.id]\n };\n }\n scope.filterPreferences.goal = [goal.id];\n }\n } else { // remove from filter\n if (scope.filterPreferences.goal) {\n var index = scope.filterPreferences.goal.indexOf(goal.id);\n scope.filterPreferences.goal.splice(index, 1);\n }\n }\n updateFilterPreferences();\n filterSuggestions();\n }\n\n function setProjectFilterPreferences(preferences) {\n angular.forEach(preferences, function (projectId) {\n for (var t = 0; t < scope.projects.length; t++) {\n if (scope.projects[t].id === projectId) {\n scope.projects[t].filteredAndInResultList = true;\n break;\n }\n }\n });\n }\n function setPriorityFilterPreferences(preferences) {\n angular.forEach(preferences, function (filteredId) {\n for (var i = 0; i < scope.priorityOptions.length; i++) {\n if (scope.priorityOptions[i].priorityDB === filteredId) {\n scope.priorityOptions[i].filteredAndInResultList = true;\n break;\n }\n }\n });\n }\n function setAssetFilterPreferences(preferences) {\n angular.forEach(preferences, function (filteredAssetId) {\n for (var a = 0; a < scope.assets.length; a++) {\n if (scope.assets[a].id === filteredAssetId) {\n scope.assets[a].filteredAndInResultList = true;\n break;\n }\n }\n });\n }\n function setCategoryFilterPreferences(preferences) {\n angular.forEach(preferences, function (filteredId) {\n for (var i = 0; i < scope.categories.length; i++) {\n if (scope.categories[i].id === filteredId) {\n scope.categories[i].filteredAndInResultList = true;\n break;\n }\n }\n });\n }\n function setStatusFilterPreferences(preferences) {\n angular.forEach(preferences, function (hiddenStatus) {\n for (var i = 0; i < scope.statuses.length; i++) {\n if (scope.statuses[i].status === hiddenStatus) {\n scope.statuses[i].hide = true;\n break;\n }\n }\n });\n }\n function setGoalFilterPreferences(preferences) {\n angular.forEach(preferences, function (id) {\n for (var t = 0; t < scope.goals.length; t++) {\n if (scope.goals[t].id === id) {\n scope.goals[t].filteredAndInResultList = true;\n break;\n }\n }\n });\n }\n function getData(improvementStatus) {\n suggestionService().getListByStatus(improvementStatus.status, scope.timePeriod).then(function (result) {\n for (var s = 0; s < result.length; s++) {\n result[s].dateStyleClass = getDateStyle(result[s].dueDate);\n //setReleatedGoals(result[s]);\n }\n\n improvementStatus.list = result;\n improvementStatus.filteredList = result;\n if (scope.isFilterActive) {\n filterSuggestions();\n }\n });\n }\n\n\n function getAllData() {\n getData(scope.new);\n getData(scope.planned);\n getData(scope.inprogress);\n getData(scope.implemented);\n getData(scope.evaluated);\n }\n\n //getAllData();\n\n function getDateStyle(date) {\n if (!date) return \"\";\n // Overdue check\n var overdue = \"\";\n var duration = moment.duration(moment().diff(moment(date)));\n var days = duration.asDays();\n if (days > 1) {\n overdue = \"overdue\";\n }\n return overdue;\n }\n\n\n \n scope.hideStatus = function (status) {\n status.hide = !status.hide;\n if (status.hide) {\n if (scope.filterPreferences && scope.filterPreferences.status) {\n scope.filterPreferences.status.push(status.status);\n } else {\n if (scope.filterPreferences) {\n scope.filterPreferences.status = [status.status];\n } else {\n scope.filterPreferences = {\n status: [status.status]\n };\n }\n scope.filterPreferences.status = [status.status];\n }\n } else { // remove from filter\n if (scope.filterPreferences.status) {\n var index = scope.filterPreferences.status.indexOf(status.status);\n scope.filterPreferences.status.splice(index, 1);\n }\n }\n updateFilterPreferences();\n };\n scope.priorityOptions = [\n {\n priorityDB: 1,\n translated: $translate.instant('IMPROVEMENT_LOW_EFFORT_HIGH_EFFECT'),\n cssClass: \"highEffectLowEffort\",\n filteredAndInResultList: false\n }, {\n priorityDB: 2,\n translated: $translate.instant('IMPROVEMENT_HIGH_EFFORT_HIGH_EFFECT'),\n cssClass: \"highEffectHighEffort\",\n filteredAndInResultList: false\n }, {\n priorityDB: 3,\n translated: $translate.instant('IMPROVEMENT_LOW_EFFORT_LOW_EFFECT'),\n cssClass: \"lowEffectlowEffort\",\n filteredAndInResultList: false\n }, {\n priorityDB: 4,\n translated: $translate.instant('IMPROVEMENT_HIGH_EFFORT_LOW_EFFECT'),\n cssClass: \"lowEffectHighEffort\",\n filteredAndInResultList: false\n }, {\n priorityDB: 0,\n translated: $translate.instant('IMPROVEMENT_NOT_PRIORITIZED'),\n cssClass: \"btn-default\",\n filteredAndInResultList: false\n }\n ];\n\n function loadAssets() {\n assetService.getAllAssets().then(function (assets) {\n scope.assets = assets;\n resetAssetFilter();\n filterByUserPreference();\n });\n }\n function loadCategories() {\n suggestionService().getCategories().then(function (items) {\n scope.categories = items;\n resetCategoryFilter();\n filterByUserPreference();\n });\n }\n function loadProjects() {\n projectService().getProjectListWithSuggestion().then(function (items) {\n scope.projects = items;\n resetProjectFilter();\n filterByUserPreference();\n });\n }\n function loadGoals() {\n strategyService().getBreakthroughObjectives().then(function (result) {\n scope.goals = result;\n resetGoalFilter();\n filterByUserPreference();\n });\n }\n scope.toggleLikesFilter = function () {\n scope.likesFilterActive = !scope.likesFilterActive;\n if (scope.likesFilterActive) {\n if (scope.filterPreferences) {\n scope.filterPreferences.likes = true;\n } else {\n scope.filterPreferences = {\n likes: true\n };\n }\n } else { // remove from filter\n scope.filterPreferences.likes = null;\n }\n filterSuggestions();\n updateFilterPreferences();\n }\n\n scope.toggleMyResponsibleFilter = function () {\n scope.myResponsibleFilterActive = !scope.myResponsibleFilterActive;\n if (scope.myResponsibleFilterActive) {\n if (scope.filterPreferences) {\n scope.filterPreferences.myResponsible = true;\n } else {\n scope.filterPreferences = {\n myResponsible: true\n };\n }\n } else { // remove from filter\n scope.filterPreferences.myResponsible = null;\n }\n filterSuggestions();\n updateFilterPreferences();\n }\n\n function resetProjectFilter() {\n angular.forEach(scope.projects, function (project) {\n project.filteredAndInResultList = false;\n });\n }\n function resetGoalFilter() {\n angular.forEach(scope.goals, function (goal) {\n goal.filteredAndInResultList = false;\n });\n }\n function resetAssetFilter() {\n angular.forEach(scope.assets, function (asset) {\n asset.filteredAndInResultList = false;\n });\n }\n\n function resetCategoryFilter() {\n angular.forEach(scope.categories, function (category) {\n category.filteredAndInResultList = false;\n });\n }\n function resetPriorityFilter() {\n angular.forEach(scope.priorityOptions, function (item) {\n item.filteredAndInResultList = false;\n });\n }\n scope.filterPriority = function (priority) {\n priority.filteredAndInResultList = !priority.filteredAndInResultList;\n if (priority.filteredAndInResultList) {\n if (scope.filterPreferences && scope.filterPreferences.priority) {\n scope.filterPreferences.priority.push(priority.priorityDB);\n } else {\n if (scope.filterPreferences) {\n scope.filterPreferences.priority = [priority.priorityDB];\n } else {\n scope.filterPreferences = {\n priority: [priority.priorityDB]\n };\n }\n scope.filterPreferences.priority = [priority.priorityDB];\n }\n } else { // remove from filter\n if (scope.filterPreferences.priority) {\n var index = scope.filterPreferences.priority.indexOf(priority.priorityDB);\n scope.filterPreferences.priority.splice(index, 1);\n }\n }\n updateFilterPreferences();\n filterSuggestions();\n }\n scope.filterAsset = function (asset) {\n asset.filteredAndInResultList = !asset.filteredAndInResultList;\n if (asset.filteredAndInResultList) {\n if (scope.filterPreferences && scope.filterPreferences.asset) {\n scope.filterPreferences.asset.push(asset.id);\n } else {\n if (scope.filterPreferences) {\n scope.filterPreferences.asset = [asset.id];\n } else {\n scope.filterPreferences = {\n asset: [asset.id]\n };\n }\n scope.filterPreferences.asset = [asset.id];\n }\n } else { // remove from filter\n if (scope.filterPreferences.asset) {\n var index = scope.filterPreferences.asset.indexOf(asset.id);\n scope.filterPreferences.asset.splice(index, 1);\n }\n }\n updateFilterPreferences();\n filterSuggestions();\n }\n scope.filterCategory = function (category) {\n category.filteredAndInResultList = !category.filteredAndInResultList;\n if (category.filteredAndInResultList) {\n if (scope.filterPreferences && scope.filterPreferences.category) {\n scope.filterPreferences.category.push(category.id);\n } else {\n if (scope.filterPreferences) {\n scope.filterPreferences.category = [category.id];\n } else {\n scope.filterPreferences = {\n category: [category.id]\n };\n }\n scope.filterPreferences.category = [category.id];\n }\n } else { // remove from filter\n if (scope.filterPreferences.category) {\n var index = scope.filterPreferences.category.indexOf(category.id);\n scope.filterPreferences.category.splice(index, 1);\n }\n }\n updateFilterPreferences();\n filterSuggestions();\n }\n\n function updateFilterPreferences() {\n scope.filterChangedHandler({ filter: scope.filterPreferences });\n }\n\n function resetStatusFilter() {\n angular.forEach(scope.statuses, function (status) {\n status.hide = false;\n });\n }\n scope.removeFilter = function () {\n resetStatusFilter();\n resetAssetFilter();\n resetCategoryFilter();\n resetPriorityFilter();\n resetProjectFilter();\n resetGoalFilter();\n scope.myResponsibleFilterActive = false;\n scope.likesFilterActive = false;\n filterSuggestions();\n resetFilterPreferences();\n };\n\n function resetFilterPreferences() {\n scope.filterPreferences = null;\n updateFilterPreferences();\n\n }\n\n function filterSuggestions() {\n scope.new.filteredList = scope.new.list;\n scope.planned.filteredList = scope.planned.list;\n scope.inprogress.filteredList = scope.inprogress.list;\n scope.implemented.filteredList = scope.implemented.list;\n scope.evaluated.filteredList = scope.evaluated.list;\n\n var assetsToShow = $filter('filter')(scope.assets, { filteredAndInResultList: true }, true);\n if (assetsToShow.length > 0) {\n scope.isFilterActive = true;\n scope.new.filteredList = getFilteredListByAssets(scope.new.filteredList, assetsToShow);\n scope.planned.filteredList = getFilteredListByAssets(scope.planned.filteredList, assetsToShow);\n scope.inprogress.filteredList = getFilteredListByAssets(scope.inprogress.filteredList, assetsToShow);\n scope.implemented.filteredList = getFilteredListByAssets(scope.implemented.filteredList, assetsToShow);\n scope.evaluated.filteredList = getFilteredListByAssets(scope.evaluated.filteredList, assetsToShow);\n }\n\n var categoriesToShow = $filter('filter')(scope.categories, { filteredAndInResultList: true }, true);\n if (categoriesToShow.length > 0) {\n scope.isFilterActive = true;\n scope.new.filteredList = getFilteredListByCategories(scope.new.filteredList, categoriesToShow);\n scope.planned.filteredList = getFilteredListByCategories(scope.planned.filteredList, categoriesToShow);\n scope.inprogress.filteredList = getFilteredListByCategories(scope.inprogress.filteredList, categoriesToShow);\n scope.implemented.filteredList = getFilteredListByCategories(scope.implemented.filteredList, categoriesToShow);\n scope.evaluated.filteredList = getFilteredListByCategories(scope.evaluated.filteredList, categoriesToShow);\n }\n\n var activePriorityFilter = priorityFilterActive();\n if (activePriorityFilter.length > 0) {\n scope.isFilterActive = true;\n scope.new.filteredList = $filter('filter')(scope.new.filteredList, valueInList('priorityStatus', activePriorityFilter));\n scope.planned.filteredList = $filter('filter')(scope.planned.filteredList, valueInList('priorityStatus', activePriorityFilter));\n scope.inprogress.filteredList = $filter('filter')(scope.inprogress.filteredList, valueInList('priorityStatus', activePriorityFilter));\n scope.implemented.filteredList = $filter('filter')(scope.implemented.filteredList, valueInList('priorityStatus', activePriorityFilter));\n scope.evaluated.filteredList = $filter('filter')(scope.evaluated.filteredList, valueInList('priorityStatus', activePriorityFilter));\n }\n\n if (scope.likesFilterActive) {\n scope.isFilterActive = true;\n scope.new.filteredList = $filter('filter')(scope.new.filteredList, hasValuesInListFilter('likes'));\n scope.planned.filteredList = $filter('filter')(scope.planned.filteredList, hasValuesInListFilter('likes'));\n scope.inprogress.filteredList = $filter('filter')(scope.inprogress.filteredList, hasValuesInListFilter('likes'));\n scope.implemented.filteredList = $filter('filter')(scope.implemented.filteredList, hasValuesInListFilter('likes'));\n scope.evaluated.filteredList = $filter('filter')(scope.evaluated.filteredList, hasValuesInListFilter('likes'));\n }\n var projectsToShow = $filter('filter')(scope.projects, { filteredAndInResultList: true }, true);\n if (projectsToShow.length > 0) {\n scope.isFilterActive = true;\n scope.new.filteredList = getFilteredListByProjects(scope.new.filteredList, projectsToShow);\n scope.planned.filteredList = getFilteredListByProjects(scope.planned.filteredList, projectsToShow);\n scope.inprogress.filteredList = getFilteredListByProjects(scope.inprogress.filteredList, projectsToShow);\n scope.implemented.filteredList = getFilteredListByProjects(scope.implemented.filteredList, projectsToShow);\n scope.evaluated.filteredList = getFilteredListByProjects(scope.evaluated.filteredList, projectsToShow);\n }\n var goalsToShow = $filter('filter')(scope.goals, { filteredAndInResultList: true }, true);\n if (goalsToShow.length > 0) {\n scope.isFilterActive = true;\n scope.new.filteredList = getFilteredListByGoals(scope.new.filteredList, goalsToShow);\n scope.planned.filteredList = getFilteredListByGoals(scope.planned.filteredList, goalsToShow);\n scope.inprogress.filteredList = getFilteredListByGoals(scope.inprogress.filteredList, goalsToShow);\n scope.implemented.filteredList = getFilteredListByGoals(scope.implemented.filteredList, goalsToShow);\n scope.evaluated.filteredList = getFilteredListByGoals(scope.evaluated.filteredList, goalsToShow);\n }\n\n if (scope.myResponsibleFilterActive) {\n var userid = authService.getCurrentUser().userId;\n scope.isFilterActive = true;\n scope.new.filteredList = $filter('filter')(scope.new.filteredList, { responsibleUserId: userid });\n scope.planned.filteredList = $filter('filter')(scope.planned.filteredList, { responsibleUserId: userid });\n scope.inprogress.filteredList = $filter('filter')(scope.inprogress.filteredList, { responsibleUserId: userid });\n scope.implemented.filteredList = $filter('filter')(scope.implemented.filteredList, { responsibleUserId: userid });\n scope.evaluated.filteredList = $filter('filter')(scope.evaluated.filteredList, { responsibleUserId: userid });\n }\n }\n function valueInList(property, list) {\n return function (item) {\n for (var i = 0; i < list.length; i++) {\n if (item[property] === list[i]) return true;\n }\n return false;\n }\n }\n function hasValuesInListFilter(property) {\n return function (item) {\n if (item[property] && item[property].length > 0) return true;\n return false;\n }\n }\n function getFilteredListByProjects(list, projects) {\n if (projects.length === 0) return list;\n var filteredList = [];\n for (var i = 0; i < list.length; i++) {\n var suggestion = list[i];\n for (var j = 0; j < projects.length; j++) {\n var project = projects[j];\n if (suggestion.projectId === project.id) {\n filteredList.push(suggestion);\n }\n }\n }\n return filteredList;\n }\n function getFilteredListByGoals(list, goals) {\n if (goals.length === 0) return list;\n var filteredList = [];\n for (var i = 0; i < list.length; i++) {\n var suggestion = list[i];\n for (var j = 0; j < goals.length; j++) {\n var goal = goals[j];\n if(suggestion.goals){\n for (var k = 0; k < suggestion.goals.length; k++) {\n if (suggestion.goals[k].strategyGoalId === goal.id) {\n filteredList.push(suggestion);\n break;\n }\n }\n }\n }\n }\n return filteredList;\n }\n function getFilteredListByAssets(list, assets) {\n if (assets.length === 0) return list;\n var filteredList = [];\n for (var i = 0; i < list.length; i++) {\n var suggestion = list[i];\n for (var j = 0; j < assets.length; j++) {\n var asset = assets[j];\n if (suggestion.assetId === asset.id) {\n filteredList.push(suggestion);\n }\n }\n }\n return filteredList;\n }\n function getFilteredListByCategories(list, categories) {\n if (categories.length === 0) return list;\n var filteredList = [];\n for (var i = 0; i < list.length; i++) {\n var suggestion = list[i];\n for (var j = 0; j < categories.length; j++) {\n var category = categories[j];\n if (suggestion.categoryId === category.id) {\n filteredList.push(suggestion);\n }\n }\n }\n return filteredList;\n }\n function priorityFilterActive() {\n var filteredPriority = [];\n angular.forEach(scope.priorityOptions, function (priority) {\n if (priority.filteredAndInResultList) {\n filteredPriority.push(priority.priorityDB);\n }\n });\n return filteredPriority;\n }\n }\n }\n }]);\n","import * as assetService from \"@common/services/assetService\"\n\nangular\n .module('DigiLean')\n .directive(\"improvementPriorityFilter\", ['$filter', 'navigationService', 'strategyService', 'suggestionService', 'projectService',\n function ($filter, navigationService, strategyService, suggestionService, projectService) {\n return {\n templateUrl: 'improvementPriorityFilter.html',\n restrict: 'E',\n scope: {\n 'filter': '<',\n 'filterChangedHandler': '&',\n 'new': '=',\n 'suggestionStatus1': '=',\n 'suggestionStatus2': '=',\n 'suggestionStatus3': '=',\n 'suggestionStatus4': '=',\n 'timePeriod': '='\n },\n link: function (scope, elem, attrs) {\n scope.isFilterActive = false;\n scope.likesFilterActive = false;\n scope.assets = [];\n scope.categories = [];\n scope.projects = [];\n scope.goals = [];\n\n // TODO Hvorfor er dette kommentert ut? Hva omm kunden tidligere hadde prosjektmodul og nå har tatt den bort...\n // Dessuten gjør vi et ekstra backendkall som ikke er nødvendig.\n // scope.hasProjectModule = navigationService().hasModule(\"PROJECT\");\n // scope.subscribe(\"UserAuthenticatedAndReady\", function(profile) {\n // scope.hasProjectModule = navigationService().hasModule(\"PROJECT\"); \n // });\n scope.hasStrategyModule = navigationService().hasModule(\"STRATEGY\");\n scope.subscribe(\"UserAuthenticatedAndReady\", function(profile) {\n scope.hasStrategyModule = navigationService().hasModule(\"STRATEGY\"); \n });\n scope.$watch('filter', function (filter) {\n if (filter) {\n scope.filterPreferences = filter;\n filterByUserPreference();\n }\n });\n scope.$watch('new', function () {\n if (scope.new) {\n loadAssets();\n loadCategories();\n loadProjects();\n loadGoals();\n }\n });\n\n scope.$watch('timePeriod', function (value) {\n /*Checking if the given value is not undefined*/\n if (value) {\n getAllData();\n filterByUserPreference();\n }\n });\n\n // Events\n scope.subscribe(\"NewImprovement\", function (newSuggestion) {\n var isPartOfContainer = $filter('filter')(scope.new.list, { id: newSuggestion.id });\n if (isPartOfContainer.length === 0) {\n suggestionService().get(newSuggestion.id).then(function (suggestion) {\n suggestion.cssState = \"animated slideInDown\"; // Add animation\n scope.new.list.unshift(suggestion);\n removeAnmiation(suggestion);\n if (scope.isFilterActive) {\n filterSuggestions();\n }\n });\n }\n });\n function removeAnmiation(suggestion) {\n setTimeout(function () {\n suggestion.cssState = \"\";\n }, 500);\n }\n scope.subscribe(\"ImprovementDeleted\", function (improvement) {\n // find suggestion by id\n var id = improvement.id;\n removeFromList(scope.suggestionStatus1, id);\n removeFromList(scope.suggestionStatus2, id);\n removeFromList(scope.suggestionStatus3, id);\n removeFromList(scope.suggestionStatus4, id);\n\n var existingSuggestions = $filter('filter')(scope.new.list, { id: id }, true);\n if (existingSuggestions.length > 0) {\n // Apply animation\n var index = scope.new.list.indexOf(existingSuggestions[0]);\n existingSuggestions[0].cssClass = \"animated slideOutLeft\"; // Add animation\n scope.new.list[index] = existingSuggestions[0]; \n\n // Then remove\n setTimeout(function () {\n scope.new.list.splice(index, 1);\n var existingfilteredSuggestions = $filter('filter')(scope.new.filteredList, { id: id }, true);\n if (existingfilteredSuggestions.length > 0) {\n // Apply animation\n var indexfiltered = scope.new.filteredList.indexOf(existingfilteredSuggestions[0]);\n existingfilteredSuggestions[0].cssClass = \"animated slideOutLeft\"; // Add animation\n scope.new.filteredList[indexfiltered] = existingfilteredSuggestions[0];\n // Then remove\n setTimeout(function () {\n scope.new.filteredList.splice(indexfiltered, 1);\n }, 500);\n }\n }, 500);\n }\n });\n\n // When another has changed status, we'll sync the changes\n scope.subscribe(\"ImprovementChangedStatus\", function (statusData) {\n removeFromList(scope.new, statusData.suggestionId);\n removeFromList(scope.suggestionStatus1, statusData.suggestionId);\n removeFromList(scope.suggestionStatus2, statusData.suggestionId);\n removeFromList(scope.suggestionStatus3, statusData.suggestionId);\n removeFromList(scope.suggestionStatus4, statusData.suggestionId);\n\n if (statusData.status === \"Suggested\" || statusData.status === \"Planned\") {\n addToSuggestionList(statusData);\n }\n });\n\n function addToSuggestionList(changedSuggestion) {\n suggestionService().get(changedSuggestion.suggestionId).then(function (suggestion) {\n suggestion.cssState = \"animated slideInDown\"; // Add animation\n if (changedSuggestion.status === \"Suggested\") {\n scope.new.list.unshift(suggestion);\n } else {\n if (suggestion.priorityStatus === 1) {\n addIfNotAlreadyInList(scope.suggestionStatus1.list, suggestion);\n } else if (suggestion.priorityStatus === 2) {\n addIfNotAlreadyInList(scope.suggestionStatus2.list, suggestion);\n } else if (suggestion.priorityStatus === 3) {\n addIfNotAlreadyInList(scope.suggestionStatus3.list, suggestion);\n } else if (suggestion.priorityStatus === 4) {\n addIfNotAlreadyInList(scope.suggestionStatus4.list, suggestion);\n }\n\n }\n filterSuggestions();\n removeAnmiation(suggestion);\n });\n }\n\n function addIfNotAlreadyInList(list, suggestion) {\n var inList = $filter('filter')(list, { id: suggestion.id }, true);\n if (inList.length === 0) {\n list.unshift(suggestion);\n }\n }\n\n scope.subscribe(\"ImprovementPriorityChanged\", function (priority) {\n var existInSuggestedList = $filter('filter')(scope.new.list, { id: priority.suggestionId }, true);\n if (existInSuggestedList.length === 1) {\n removeFromList(scope.new, priority.suggestionId);\n filterSuggestions();\n return;\n }\n\n suggestionService().get(priority.suggestionId).then(function (suggestion) {\n suggestion.cssState = \"animated slideInDown\"; // Add animation\n\n // priority should only be concerned within mattrix\n removeFromList(scope.suggestionStatus1, priority.suggestionId);\n removeFromList(scope.suggestionStatus2, priority.suggestionId);\n removeFromList(scope.suggestionStatus3, priority.suggestionId);\n removeFromList(scope.suggestionStatus4, priority.suggestionId);\n\n switch (priority.newPriority) {\n case 1:\n addIfNotAlreadyInList(scope.suggestionStatus1.list, suggestion);\n break;\n case 2:\n addIfNotAlreadyInList(scope.suggestionStatus2.list, suggestion);\n break;\n case 3:\n addIfNotAlreadyInList(scope.suggestionStatus3.list, suggestion);\n break;\n case 4:\n addIfNotAlreadyInList(scope.suggestionStatus4.list, suggestion);\n break;\n }\n removeAnmiation(suggestion);\n filterSuggestions();\n });\n\n\n });\n\n function removeFromList(container, id) {\n // is part of list\n var isPartOfContainer = $filter('filter')(container.list, { id: id }, true);\n if (isPartOfContainer.length > 0) {\n var currentSuggestion = isPartOfContainer[0];\n var index = container.list.indexOf(currentSuggestion);\n container.list.splice(index, 1);\n }\n // is part of list\n var isPartOfFilteredContainer = $filter('filter')(container.filteredList, { id: id }, true);\n if (isPartOfFilteredContainer.length > 0) {\n var currentSuggestion = isPartOfFilteredContainer[0];\n var index = container.filteredList.indexOf(currentSuggestion);\n container.filteredList.splice(index, 1);\n }\n }\n\n function filterByUserPreference() {\n\n if (scope.filterPreferences) {\n if (scope.filterPreferences.asset) {\n setAssetFilterPreferences(scope.filterPreferences.asset);\n }\n if (scope.filterPreferences.project) {\n setProjectFilterPreferences(scope.filterPreferences.project);\n }\n if (scope.filterPreferences.goal) {\n setGoalFilterPreferences(scope.filterPreferences.goal);\n }\n if (scope.filterPreferences.category) {\n setCategoryFilterPreferences(scope.filterPreferences.category);\n }\n if (scope.filterPreferences.status) {\n setStatusFilterPreferences(scope.filterPreferences.status);\n }\n if (scope.filterPreferences.likes) {\n scope.likesFilterActive = true;\n }\n filterSuggestions();\n\n }\n }\n\n scope.filterProject = function (project) {\n project.filteredAndInResultList = !project.filteredAndInResultList;\n if (project.filteredAndInResultList) {\n if (scope.filterPreferences && scope.filterPreferences.project) {\n scope.filterPreferences.project.push(project.id);\n } else {\n if (scope.filterPreferences) {\n scope.filterPreferences.project = [project.id];\n } else {\n scope.filterPreferences = {\n project: [project.id]\n };\n }\n scope.filterPreferences.project = [project.id];\n }\n } else { // remove from filter\n if (scope.filterPreferences.project) {\n var index = scope.filterPreferences.project.indexOf(project.id);\n scope.filterPreferences.project.splice(index, 1);\n }\n }\n updateFilterPreferences();\n filterSuggestions();\n }\n\n scope.filterGoal = function (goal) {\n goal.filteredAndInResultList = !goal.filteredAndInResultList;\n if (goal.filteredAndInResultList) {\n if (scope.filterPreferences && scope.filterPreferences.goal) {\n scope.filterPreferences.goal.push(goal.id);\n } else {\n if (scope.filterPreferences) {\n scope.filterPreferences.goal = [goal.id];\n } else {\n scope.filterPreferences = {\n goal: [goal.id]\n };\n }\n scope.filterPreferences.goal = [goal.id];\n }\n } else { // remove from filter\n if (scope.filterPreferences.goal) {\n var index = scope.filterPreferences.goal.indexOf(goal.id);\n scope.filterPreferences.goal.splice(index, 1);\n }\n }\n updateFilterPreferences();\n filterSuggestions();\n }\n\n function setAssetFilterPreferences(preferences) {\n angular.forEach(preferences, function (filteredAssetId) {\n for (var a = 0; a < scope.assets.length; a++) {\n if (scope.assets[a].id === filteredAssetId) {\n scope.assets[a].filteredAndInResultList = true;\n break;\n }\n }\n });\n }\n function setProjectFilterPreferences(preferences) {\n angular.forEach(preferences, function (projectId) {\n for (var t = 0; t < scope.projects.length; t++) {\n if (scope.projects[t].id === projectId) {\n scope.projects[t].filteredAndInResultList = true;\n break;\n }\n }\n });\n }\n function setGoalFilterPreferences(preferences) {\n angular.forEach(preferences, function (id) {\n for (var t = 0; t < scope.goals.length; t++) {\n if (scope.goals[t].id === id) {\n scope.goals[t].filteredAndInResultList = true;\n break;\n }\n }\n });\n }\n function setCategoryFilterPreferences(preferences) {\n angular.forEach(preferences, function (filteredId) {\n for (var i = 0; i < scope.categories.length; i++) {\n if (scope.categories[i].id === filteredId) {\n scope.categories[i].filteredAndInResultList = true;\n break;\n }\n }\n });\n }\n\n\n function getAllData() {\n suggestionService().getListByStatus(\"Suggested\", scope.timePeriod).then(function (suggestions) {\n suggestions.forEach(function (suggestion) {\n suggestion.activeComment = \"\";\n scope.new.list.push(suggestion);\n });\n scope.new.filteredList = scope.new.list;\n\n suggestionService().getListByStatus(\"Planned\", scope.timePeriod).then(function (suggestions) {\n for (var i = 0; i < suggestions.length; i++) {\n switch (suggestions[i].priorityStatus) {\n case 1:\n scope.suggestionStatus1.list.push(suggestions[i]);\n break;\n case 2:\n scope.suggestionStatus2.list.push(suggestions[i]);\n break;\n case 3:\n scope.suggestionStatus3.list.push(suggestions[i]);\n break;\n case 4:\n scope.suggestionStatus4.list.push(suggestions[i]);\n break;\n }\n }\n scope.suggestionStatus1.filteredList = scope.suggestionStatus1.list;\n scope.suggestionStatus2.filteredList = scope.suggestionStatus2.list;\n scope.suggestionStatus3.filteredList = scope.suggestionStatus3.list;\n scope.suggestionStatus4.filteredList = scope.suggestionStatus4.list;\n\n if (scope.isFilterActive) {\n filterSuggestions();\n }\n\n });\n });\n\n }\n\n scope.statuses = [scope.new, scope.planned, scope.inprogress, scope.implemented, scope.evaluated];\n\n\n function loadAssets() {\n assetService.getAllAssets().then(function (assets) {\n scope.assets = assets;\n resetAssetFilter();\n filterByUserPreference();\n });\n }\n function loadProjects() {\n projectService().getProjectListWithSuggestion().then(function (items) {\n scope.projects = items;\n resetProjectFilter();\n filterByUserPreference();\n });\n }\n function loadCategories() {\n suggestionService().getCategories().then(function (items) {\n scope.categories = items;\n resetCategoryFilter();\n filterByUserPreference();\n });\n }\n function loadGoals() {\n strategyService().getBreakthroughObjectives().then(function (items) {\n scope.goals = items;\n resetGoalFilter();\n filterByUserPreference();\n });\n\n }\n\n scope.toggleLikesFilter = function () {\n scope.likesFilterActive = !scope.likesFilterActive;\n if (scope.likesFilterActive) {\n if (scope.filterPreferences) {\n scope.filterPreferences.likes = true;\n } else {\n scope.filterPreferences = {\n likes: true\n };\n }\n } else { // remove from filter\n scope.filterPreferences.likes = null;\n }\n filterSuggestions();\n updateFilterPreferences();\n }\n\n\n function resetAssetFilter() {\n angular.forEach(scope.assets, function (asset) {\n asset.filteredAndInResultList = false;\n });\n }\n function resetProjectFilter() {\n angular.forEach(scope.projects, function (project) {\n project.filteredAndInResultList = false;\n });\n }\n function resetGoalFilter() {\n angular.forEach(scope.goals, function (goal) {\n goal.filteredAndInResultList = false;\n });\n }\n\n function resetCategoryFilter() {\n angular.forEach(scope.categories, function (category) {\n category.filteredAndInResultList = false;\n });\n }\n\n scope.filterAsset = function (asset) {\n asset.filteredAndInResultList = !asset.filteredAndInResultList;\n if (asset.filteredAndInResultList) {\n if (scope.filterPreferences && scope.filterPreferences.asset) {\n scope.filterPreferences.asset.push(asset.id);\n } else {\n if (scope.filterPreferences) {\n scope.filterPreferences.asset = [asset.id];\n } else {\n scope.filterPreferences = {\n asset: [asset.id]\n };\n }\n scope.filterPreferences.asset = [asset.id];\n }\n } else { // remove from filter\n if (scope.filterPreferences.asset) {\n var index = scope.filterPreferences.asset.indexOf(asset.id);\n scope.filterPreferences.asset.splice(index, 1);\n }\n }\n updateFilterPreferences();\n filterSuggestions();\n }\n scope.filterCategory = function (category) {\n category.filteredAndInResultList = !category.filteredAndInResultList;\n if (category.filteredAndInResultList) {\n if (scope.filterPreferences && scope.filterPreferences.category) {\n scope.filterPreferences.category.push(category.id);\n } else {\n if (scope.filterPreferences) {\n scope.filterPreferences.category = [category.id];\n } else {\n scope.filterPreferences = {\n category: [category.id]\n };\n }\n scope.filterPreferences.category = [category.id];\n }\n } else { // remove from filter\n if (scope.filterPreferences.category) {\n var index = scope.filterPreferences.category.indexOf(category.id);\n scope.filterPreferences.category.splice(index, 1);\n }\n }\n updateFilterPreferences();\n filterSuggestions();\n }\n\n function updateFilterPreferences() {\n scope.filterChangedHandler({ filter: scope.filterPreferences });\n }\n\n scope.removeFilter = function () {\n //resetStatusFilter();\n resetAssetFilter();\n resetProjectFilter();\n resetGoalFilter();\n resetCategoryFilter();\n scope.likesFilterActive = false;\n filterSuggestions();\n resetFilterPreferences();\n };\n\n function resetFilterPreferences() {\n scope.filterPreferences = null;\n updateFilterPreferences();\n\n }\n\n function filterSuggestions() {\n scope.new.filteredList = scope.new.list;\n scope.suggestionStatus1.filteredList = scope.suggestionStatus1.list;\n scope.suggestionStatus2.filteredList = scope.suggestionStatus2.list;\n scope.suggestionStatus3.filteredList = scope.suggestionStatus3.list;\n scope.suggestionStatus4.filteredList = scope.suggestionStatus4.list;\n\n var assetsToShow = $filter('filter')(scope.assets, { filteredAndInResultList: true }, true);\n if (assetsToShow.length > 0) {\n scope.isFilterActive = true;\n scope.new.filteredList = getFilteredListByAssets(scope.new.filteredList, assetsToShow);\n scope.suggestionStatus1.filteredList = getFilteredListByAssets(scope.suggestionStatus1.filteredList, assetsToShow);\n scope.suggestionStatus2.filteredList = getFilteredListByAssets(scope.suggestionStatus2.filteredList, assetsToShow);\n scope.suggestionStatus3.filteredList = getFilteredListByAssets(scope.suggestionStatus3.filteredList, assetsToShow);\n scope.suggestionStatus4.filteredList = getFilteredListByAssets(scope.suggestionStatus4.filteredList, assetsToShow);\n }\n\n var projectsToShow = $filter('filter')(scope.projects, { filteredAndInResultList: true }, true);\n if (projectsToShow.length > 0) {\n scope.isFilterActive = true;\n scope.new.filteredList = getFilteredListByProjects(scope.new.filteredList, projectsToShow);\n scope.suggestionStatus1.filteredList = getFilteredListByProjects(scope.suggestionStatus1.filteredList, projectsToShow);\n scope.suggestionStatus2.filteredList = getFilteredListByProjects(scope.suggestionStatus2.filteredList, projectsToShow);\n scope.suggestionStatus3.filteredList = getFilteredListByProjects(scope.suggestionStatus3.filteredList, projectsToShow);\n scope.suggestionStatus4.filteredList = getFilteredListByProjects(scope.suggestionStatus4.filteredList, projectsToShow);\n }\n\n var goalsToShow = $filter('filter')(scope.goals, { filteredAndInResultList: true }, true);\n if (goalsToShow.length > 0) {\n scope.isFilterActive = true;\n scope.new.filteredList = getFilteredListByGoals(scope.new.filteredList, goalsToShow);\n scope.suggestionStatus1.filteredList = getFilteredListByGoals(scope.suggestionStatus1.filteredList, goalsToShow);\n scope.suggestionStatus2.filteredList = getFilteredListByGoals(scope.suggestionStatus2.filteredList, goalsToShow);\n scope.suggestionStatus3.filteredList = getFilteredListByGoals(scope.suggestionStatus3.filteredList, goalsToShow);\n scope.suggestionStatus4.filteredList = getFilteredListByGoals(scope.suggestionStatus4.filteredList, goalsToShow);\n }\n\n var categoriesToShow = $filter('filter')(scope.categories, { filteredAndInResultList: true }, true);\n if (categoriesToShow.length > 0) {\n scope.isFilterActive = true;\n scope.new.filteredList = getFilteredListByCategories(scope.new.filteredList, categoriesToShow);\n scope.suggestionStatus1.filteredList = getFilteredListByCategories(scope.suggestionStatus1.filteredList, categoriesToShow);\n scope.suggestionStatus2.filteredList = getFilteredListByCategories(scope.suggestionStatus2.filteredList, categoriesToShow);\n scope.suggestionStatus3.filteredList = getFilteredListByCategories(scope.suggestionStatus3.filteredList, categoriesToShow);\n scope.suggestionStatus4.filteredList = getFilteredListByCategories(scope.suggestionStatus4.filteredList, categoriesToShow);\n }\n\n if (scope.likesFilterActive) {\n scope.isFilterActive = true;\n scope.new.filteredList = $filter('filter')(scope.new.filteredList, hasValuesInListFilter('likes'));\n scope.suggestionStatus1.filteredList = $filter('filter')(scope.suggestionStatus1.filteredList, hasValuesInListFilter('likes'));\n scope.suggestionStatus2.filteredList = $filter('filter')(scope.suggestionStatus2.filteredList, hasValuesInListFilter('likes'));\n scope.suggestionStatus3.filteredList = $filter('filter')(scope.suggestionStatus3.filteredList, hasValuesInListFilter('likes'));\n scope.suggestionStatus4.filteredList = $filter('filter')(scope.suggestionStatus4.filteredList, hasValuesInListFilter('likes'));\n }\n }\n\n function hasValuesInListFilter(property) {\n return function (item) {\n if (item[property] && item[property].length > 0) return true;\n return false;\n }\n }\n function getFilteredListByAssets(list, assets) {\n if (assets.length === 0) return list;\n var filteredList = [];\n for (var i = 0; i < list.length; i++) {\n var suggestion = list[i];\n for (var j = 0; j < assets.length; j++) {\n var asset = assets[j];\n if (suggestion.assetId === asset.id) {\n filteredList.push(suggestion);\n }\n }\n }\n return filteredList;\n }\n function getFilteredListByProjects(list, projects) {\n if (projects.length === 0) return list;\n var filteredList = [];\n for (var i = 0; i < list.length; i++) {\n var suggestion = list[i];\n for (var j = 0; j < projects.length; j++) {\n var project = projects[j];\n if (suggestion.projectId === project.id) {\n filteredList.push(suggestion);\n }\n }\n }\n return filteredList;\n }\n function getFilteredListByGoals(list, goals) {\n if (goals.length === 0) return list;\n var filteredList = [];\n for (var i = 0; i < list.length; i++) {\n var suggestion = list[i];\n for (var j = 0; j < goals.length; j++) {\n var goal = goals[j];\n if(suggestion.goals){\n for (var k = 0; k < suggestion.goals.length; k++) {\n if (suggestion.goals[k].strategyGoalId === goal.id) {\n filteredList.push(suggestion);\n break;\n }\n }\n }\n }\n }\n return filteredList;\n }\n function getFilteredListByCategories(list, categories) {\n if (categories.length === 0) return list;\n var filteredList = [];\n for (var i = 0; i < list.length; i++) {\n var suggestion = list[i];\n for (var j = 0; j < categories.length; j++) {\n var category = categories[j];\n if (suggestion.categoryId === category.id) {\n filteredList.push(suggestion);\n }\n }\n }\n return filteredList;\n }\n\n }\n }\n }]);\n","import { getCompanySetting } from \"@common/stores/companySettingsStore\"\nimport * as customerService from \"@common/services/customers/customerService\"\n\nangular\n .module('DigiLean')\n .directive(\"initiativeRealizationPerGroup\", ['$translate', 'suggestionService',\n function ($translate, suggestionService) {\n return {\n templateUrl: 'initiativeRealizationPerGroup.html',\n restrict: 'E',\n scope: {\n 'header': '@',\n 'component': '@'\n },\n link: function (scope, elem, attrs) {\n scope.timeframe = \"thisyear\";\n\n scope.options = {\n timePeriod: {\n timeframe: \"thisyear\",\n useDefaultTimeframes: true,\n timeframes:[]\n }\n };\n \n var chartHeight = 400;\n var grafcolor = ['#2A2E36', '#0099DE', '#5cb85c', '#0077B5', '#5e5e5e', '#f8ac59', '#434348'],\n graphtextcolor = '#ffffff';\n\n var initiatives = [];\n \n\n var yAxisText = \"\";\n var unrealizedLabel = \"\";\n var realizedLabel = \"\";\n var currency = customerService.getDefaultCurrency()\n getCompanySetting(\"currency\").then(function (setting) {\n if (setting) {\n currency = setting\n }\n $translate(['A3_REALIZED', 'COMMON_ESTIMATED']).then(function (translations) {\n \n yAxisText = currency;\n realizedLabel = translations.A3_REALIZED;\n unrealizedLabel = translations.COMMON_ESTIMATED;\n getData();\n });\n });\n \n\n scope.periodChangedHandler = function (timePeriod) {\n scope.timePeriod = timePeriod.period;\n scope.timeframe = timePeriod.timeframe;\n getData();\n }\n\n function getData() {\n if (!scope.timePeriod) return;\n var realized = [],\n estimated = [],\n labelcategories = [];\n suggestionService().getRealizationForAssets(scope.timePeriod).then(function (result) {\n initiatives = result;\n\n if(result && result.length > 10){ \n chartHeight = 400 + 30*(result.length -10);\n }\n // Build the data arrays\n for (var i = 0; i < result.length; i++) {\n var estimatedValue = 0;\n if(result[i].estimated){\n estimatedValue = result[i].estimated;\n }\n var realizedValue = 0;\n if(result[i].realized){\n realizedValue = result[i].realized;\n } \n if(result[i].assetName){\n labelcategories.push(result[i].assetName);\n } else {\n labelcategories.push($translate.instant('COMMON_UNDEFINED')); \n }\n \n estimated.push(estimatedValue); \n realized.push(realizedValue);\n }\n\n var renderElement = $(elem).find(\".initiativeRealizationPerGroup\")[0];\n if (renderElement)\n Highcharts.chart({\n chart: {\n renderTo: renderElement,\n type: 'bar',\n height: chartHeight,\n },\n title: {\n text: ''\n },\n xAxis: {\n categories: labelcategories \n },\n yAxis: {\n min: 0,\n title: {\n text: yAxisText \n }\n },\n credits: {\n enabled: false\n },\n exporting: { enabled: false },\n legend: {\n reversed: true\n },\n plotOptions: {\n series: {\n stacking: 'normal',\n },bar: {\n dataLabels: { \n formatter: function(){\n return this.point.name\n },\n enabled: true\n }\n }\n },\n series: [\n {\n name: unrealizedLabel,\n data: estimated,\n color: grafcolor[5] \n },\n {\n name: realizedLabel, \n data: realized,\n color: grafcolor[2]\n }]\n });\n });\n }\n }\n }\n }]);\n","import { getCompanySetting } from \"@common/stores/companySettingsStore\"\nimport * as customerService from \"@common/services/customers/customerService\"\n\nangular\n .module('DigiLean')\n .directive(\"topImprovementInitiatives\", ['$filter', '$state','$translate', '$uibModal','suggestionService',\n function ($filter, $state,$translate, $uibModal,suggestionService) {\n return {\n templateUrl: 'topImprovementInitiatives.html',\n restrict: 'E',\n scope: {\n 'header': '@',\n 'component': '@'\n },\n link: function (scope, elem, attrs) {\n scope.timeframe = \"thisyear\";\n\n scope.options = {\n timePeriod: {\n timeframe: \"thisyear\",\n useDefaultTimeframes: true,\n timeframes:[]\n }\n };\n \n var chartHeight = 400;\n var grafcolor = ['#2A2E36', '#0099DE', '#5cb85c', '#0077B5', '#5e5e5e', '#f8ac59', '#434348'],\n graphtextcolor = '#ffffff';\n\n var initiatives = [];\n \n\n var yAxisText = \"\";\n var unrealizedLabel = \"\";\n var realizedLabel = \"\";\n var currency = customerService.getDefaultCurrency(); \n\n getCompanySetting(\"currency\").then(function (setting) {\n if (setting) {\n currency = setting\n }\n $translate(['A3_REALIZED', 'COMMON_ESTIMATED']).then(function (translations) {\n \n yAxisText = currency;\n realizedLabel = translations.A3_REALIZED;\n unrealizedLabel = translations.COMMON_ESTIMATED;\n getData();\n });\n });\n \n\n scope.periodChangedHandler = function (timePeriod) {\n scope.timePeriod = timePeriod.period;\n scope.timeframe = timePeriod.timeframe;\n getData();\n }\n\n function getMoreInfo(index){\n var selected = initiatives[index];\n if(selected && selected.improvementSuggestionId){\n suggestionService().get(selected.improvementSuggestionId).then(function (suggestion) {\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n templateUrl: 'fullImprovementInfoForm.html',\n controller: 'fullImprovementModalController',\n windowClass: 'fullSuggestion-modal-window',\n resolve: {\n suggestion: function () {\n return suggestion;\n },\n activeTab: function () {\n return \"Info\";\n }\n }\n });\n modalInstance.result.then(function (updatedSuggestion) {\n scope.getValues();\n });\n });\n } else if(selected && selected.a3Id){\n $state.go('a3wizard', { id: selected.a3Id });\n }\n }\n\n function getData() {\n if (!scope.timePeriod) return;\n var realized = [],\n estimated = [],\n labelcategories = [];\n suggestionService().getTopImprovementInitiatives(scope.timePeriod).then(function (result) {\n initiatives = result;\n\n if(result && result.length > 10){ \n chartHeight = 400 + 30*(result.length -10);\n }\n // Build the data arrays\n for (var i = 0; i < result.length; i++) {\n var estimatedValue = 0;\n if(result[i].estimated){\n var text = '';\n if(result[i].endDate){\n text = moment(result[i].endDate).format(\"MMM DD, YYYY\");\n }\n estimatedValue = [text, result[i].estimated];\n }\n var realizedValue = 0;\n if(result[i].realized){\n var text = '';\n if(result[i].endDate){\n text = moment(result[i].endDate).format(\"MMM DD, YYYY\");\n }\n realizedValue = [text,result[i].realized];\n } \n labelcategories.push(result[i].title);\n estimated.push(estimatedValue); \n realized.push(realizedValue);\n }\n\n var renderElement = $(elem).find(\".topimprovementinitiatives\")[0];\n if (renderElement)\n Highcharts.chart({\n chart: {\n renderTo: renderElement,\n type: 'bar',\n height: chartHeight,\n },\n title: {\n text: ''\n },\n xAxis: {\n categories: labelcategories \n },\n yAxis: {\n min: 0,\n title: {\n text: yAxisText \n }\n },\n credits: {\n enabled: false\n },\n exporting: { enabled: false },\n legend: {\n reversed: true\n },\n plotOptions: {\n series: {\n stacking: 'normal',\n point: {\n events: {\n click: function(te) {\n getMoreInfo(this.x);\n }\n }\n }\n },bar: {\n dataLabels: { \n formatter: function(){\n return this.point.name\n },\n enabled: true\n }\n }\n },\n series: [\n {\n name: unrealizedLabel,\n data: estimated,\n color: grafcolor[5] \n },{\n name: realizedLabel, \n data: realized,\n color: grafcolor[2]\n }]\n });\n });\n }\n }\n }\n }]);\n","import { getCompanySetting } from \"@common/stores/companySettingsStore\"\nimport * as customerService from \"@common/services/customers/customerService\"\n\nangular\n .module('DigiLean')\n .directive(\"roiperassetImprovement\", ['$translate', 'suggestionService',\n function ($translate, suggestionService) {\n return {\n templateUrl: 'roiperassetImprovement.html',\n restrict: 'E',\n scope: {\n 'header': '@',\n 'component': '@'\n },\n link: function (scope, elem, attrs) {\n var roicategories = [],\n assetCost = [],\n assetGain = [],\n assetROI = [];\n var grafcolor = ['#2A2E36', '#0099DE', '#23c6c8', '#0077B5', '#5e5e5e', '#f8ac59', '#434348'];\n\n scope.timeframe = \"thisyear\";\n\n scope.options = {\n timePeriod: {\n timeframe: \"thisyear\",\n useDefaultTimeframes: true,\n timeframes:[]\n }\n };\n scope.periodChangedHandler = function (timePeriod) {\n scope.timePeriod = timePeriod.period;\n scope.timeframe = timePeriod.timeframe;\n getData();\n }\n \n function getData() {\n if (!scope.timePeriod) return;\n var roicategories = [],\n assetCost = [],\n assetGain = [],\n assetROI = [];\n suggestionService().getRoiForAssets(scope.timePeriod).then(function (result) {\n var currency = customerService.getDefaultCurrency(); \n getCompanySetting(\"currency\").then(function (setting) {\n if (setting) {\n currency = setting\n }\n \n \n var roiperassetdata = result;\n // Build the data arrays\n for (var i = 0; i < roiperassetdata.length; i++) {\n if(roiperassetdata[i].asset){\n roicategories.push(roiperassetdata[i].asset);\n } else {\n roicategories.push($translate.instant(\"COMMON_UNDEFINED\"));\n }\n \n assetCost.push(roiperassetdata[i].cost);\n assetGain.push(roiperassetdata[i].gain);\n assetROI.push(roiperassetdata[i].roi * 100); // We are going to show ROI in percentage so multiple factor with 100\n }\n\n var roi = $(elem).find(\".roiperasset\");\n Highcharts.chart({\n chart: {\n renderTo: roi[0],\n type: 'column'\n },\n title: {\n text: ''\n },\n credits: {\n enabled: false\n },\n exporting: { enabled: false },\n yAxis: [{\n title: {\n text: currency\n }, \n }, {\n title: {\n text: 'ROI (%)'\n },\n labels: {\n format: '{value} %'\n },\n \n opposite: true, //støtter negativ roi\n plotLines: [{ // zero plane\n value: 0,\n color: '#ccd6eb',\n width: 1,\n zIndex: 0\n }]\n \n }],\n xAxis: {\n categories: roicategories\n },\n tooltip: {\n valueSuffix: ' ' + currency\n },\n plotOptions: {\n column: {\n borderWidth: 0\n }\n },\n series: [\n {\n name: cost,\n data: assetCost,\n yAxis: 0,\n color: '#ed5565'\n }, {\n name: gain,\n data: assetGain,\n yAxis: 0,\n color: '#5db85d' //'#23c6c8'\n }, {\n name: 'ROI',\n data: assetROI,\n yAxis: 1,\n color: '#0099de',\n tooltip: {\n valueSuffix: ' %'\n }\n }\n ]\n });\n });\n })\n\n }\n var cost = \"\";\n var gain = \"\";\n $translate(['COMMON_COST', 'COMMON_GAIN']).then(function (translations) {\n cost = translations.COMMON_COST;\n gain = translations.COMMON_GAIN;\n getData();\n });\n }\n }\n }]);\n","export function translateOldFilter(filter, userid) {\n const newFilter = [];\n if(!filter) return newFilter;\n // status should not be translated, only ignored\n if (filter.goal || filter.priority || filter.asset || filter.category || filter.project || filter.myResponsible || filter.status) {\n // old filter detected\n if (filter.priority) {\n const itemFilter = generateItemFilter(\"priorityStatus\", filter.priority)\n if (itemFilter)\n newFilter.push(itemFilter)\n }\n if (filter.asset) {\n const itemFilter = generateItemFilter(\"assetId\", filter.asset)\n if (itemFilter)\n newFilter.push(itemFilter)\n }\n if (filter.category) {\n const itemFilter = generateItemFilter(\"categoryId\", filter.category)\n if (itemFilter)\n newFilter.push(itemFilter)\n }\n if (filter.project) {\n const itemFilter = generateItemFilter(\"S.projectId\", filter.project)\n if (itemFilter)\n newFilter.push(itemFilter)\n }\n if (filter.goal) {\n const itemFilter = generateItemFilter(\"Goal.Id\", filter.goal)\n if (itemFilter)\n newFilter.push(itemFilter)\n }\n if (filter.myResponsible) {\n const itemFilter = generateItemFilter(\"responsibleUserId\", [userid])\n if (itemFilter)\n newFilter.push(itemFilter)\n }\n } else\n return filter\n \n return newFilter\n}\n\nfunction generateItemFilter(sourceColumn, items) {\n if (!items || !Array.isArray(items) || items.length === 0)\n return null\n \n let itemFilter = {\n sourceColumn: sourceColumn,\n operator: \"InList\",\n items: []\n }\n // const itemsString = items.map(i => `${i}`)\n itemFilter.items = items\n return itemFilter\n}","import { getCompanySetting } from \"@common/stores/companySettingsStore\"\nimport * as customerService from \"@common/services/customers/customerService\"\nimport * as assetService from \"@common/services/assetService\"\nimport { getUserProfile } from \"@common/stores/userStore\"\n\nangular\n .module('DigiLean')\n .controller(\"newSuggestionModalController\", ['$scope', '$uibModalInstance', '$filter', 'navigationService', 'projectService', 'suggestionService', 'strategyService', 'mathService', 'suggestion',\n function ($scope, $uibModalInstance, $filter, navigationService, projectService, suggestionService, strategyService, mathService, suggestion) {\n\n // the new action object\n $scope.suggestion = suggestion;\n $scope.asset = null;\n $scope.assets = [];\n $scope.categories = [];\n $scope.selectedCategory = \"\";\n $scope.uploadedFiles = [];\n $scope.users = [];\n\n $scope.hasStrategy = navigationService().hasModule(\"STRATEGY\");\n $scope.goals = [];\n $scope.hasProject = navigationService().hasModule(\"PROJECT\");\n $scope.project = null;\n $scope.projects = [];\n\n // Changed handler for text => HtmlTextArea\n $scope.descriptionChanged = function (content) {\n $scope.suggestion.text = content;\n }\n // if page is refreshed we need to refresh the access to modules\n $scope.subscribe(\"UserAuthenticatedAndReady\", function (profile) {\n $scope.hasProject = navigationService().hasModule(\"PROJECT\");\n loadProjects();\n $scope.hasStrategy = navigationService().hasModule(\"STRATEGY\");\n loadGoals();\n });\n\n $scope.currency = customerService.getDefaultCurrency()\n getCompanySetting(\"currency\").then(function (setting) {\n if (setting) {\n $scope.currency = setting\n }\n })\n\n function loadProjects() {\n if ($scope.hasProject) {\n projectService().getOngoingProjects().then(function (projects) {\n $scope.projects = projects;\n $scope.projectmodel = { projectId: $scope.suggestion.projectId,\n projects: $scope.projects}\n });\n }\n }\n loadProjects();\n\n $scope.projectChangeHandler = function (projectinfo) {\n if (projectinfo) {\n $scope.suggestion.projectId = projectinfo.project.id;\n } else {\n $scope.suggestion.projectId = null;\n } \n }\n\n $scope.assetChangeHandler = function (assetinfo) {\n if (assetinfo) {\n $scope.suggestion.assetId = assetinfo.asset.id;\n $scope.asset = assetinfo.asset;\n customerService.getUsersForAsset(assetinfo.asset.id).then(function (assetUsers) {\n $scope.users = assetUsers;\n angular.forEach($scope.users, function (user, key) {\n user.fullName = user.firstName + \" \" + user.lastName;\n });\n var match = $filter('filter')($scope.users, { userId: $scope.user.userId });\n if (match.length > 0) {\n $scope.user = match[0];\n }\n });\n } else {\n $scope.suggestion.assetId = null;\n $scope.asset = null;\n } \n $scope.suggestion.goals = null;\n loadGoals();\n }\n\n function loadGoals() {\n if ($scope.hasStrategy) {\n if ($scope.asset && $scope.asset.id) {\n loadTeamGoals();\n } else {\n loadBreakthroughGoals();\n }\n }\n }\n\n function loadTeamGoals() {\n strategyService().getAllActiveTeamGoals($scope.asset.id).then(function (goals) {\n if (goals && goals.length > 0) {\n $scope.goals = goals;\n $scope.breakgoals = [];\n } else {\n $scope.goals = [];\n loadBreakthroughGoals();\n }\n });\n }\n\n function loadBreakthroughGoals() {\n strategyService().getActiveBreakthroughObjectives().then(function (result) {\n $scope.breakgoals = result;\n $scope.goals = [];\n });\n }\n \n loadGoals();\n \n function refresh() {\n const currentUser = getUserProfile()\n $scope.users.push(currentUser);\n $scope.user = currentUser;\n $scope.user.userId = currentUser.id;\n $scope.user.fullName = $scope.user.firstName + \" \" + $scope.user.lastName;\n $scope.suggestion.suggestedByUserId = $scope.user.userId;\n $scope.suggestion.suggestedBy = $scope.user.fullName;\n }\n refresh();\n\n assetService.getList().then(function (assets) {\n $scope.assets = assets;\n for (var k = 0; k < $scope.assets.length; k++) {\n $scope.assets[k].cssLevel = \"level-\" + $scope.assets[k].level; \n }\n\n if ($scope.suggestion.assetId) {\n var match = $filter('filter')($scope.assets, { id: $scope.suggestion.assetId }, true);\n if (match.length > 0) {\n $scope.asset = match[0];\n }\n }\n $scope.assetmodel = { assetId: $scope.suggestion.assetId,\n assets: $scope.assets};\n\n });\n\n suggestionService().getCategories().then(function (categories) {\n $scope.categories = categories;\n });\n\n $scope.categoryChanged = function (category) {\n $scope.selectedCategory = category;\n }\n\n $scope.changeProject = function (project) {\n $scope.project = project;\n if ($scope.project && $scope.project.id) {\n $scope.suggestion.projectId = $scope.project.id;\n } else {\n $scope.suggestion.projectId = null;\n }\n };\n\n $scope.changeSuggestedBy = function (user) {\n $scope.user = user;\n };\n\n $scope.checkEstimatedCostOfInvestment = function () {\n $scope.suggestion.estimatedCostOfInvestment = mathService().correctForComma($scope.suggestion.estimatedCostOfInvestment);\n $scope.estimatedCostOfInvestmentIsInvalid = !mathService().isNumeric($scope.suggestion.estimatedCostOfInvestment, true);\n };\n $scope.checkEstimatedGainOfInvestment = function () {\n $scope.suggestion.estimatedGainOfInvestment = mathService().correctForComma($scope.suggestion.estimatedGainOfInvestment);\n $scope.estimatedGainOfInvestmentIsInvalid = !mathService().isNumeric($scope.suggestion.estimatedGainOfInvestment, true);\n };\n $scope.checkEstimatedTimeInvested = function () {\n $scope.suggestion.estimatedCostOfInvestmentHours = mathService().correctForComma($scope.suggestion.estimatedCostOfInvestmentHours);\n $scope.estimatedTimeInvestedIsInvalid = !mathService().isNumeric($scope.suggestion.estimatedCostOfInvestmentHours, true);\n };\n $scope.checkEstimatedTimeGained = function () {\n $scope.suggestion.estimatedGainOfInvestmentHours = mathService().correctForComma($scope.suggestion.estimatedGainOfInvestmentHours);\n $scope.estimatedTimeGainIsInvalid = !mathService().isNumeric($scope.suggestion.estimatedGainOfInvestmentHours, true);\n };\n\n\n $scope.toggleGoal = function (goal) {\n if ($scope.suggestion.goals) {\n var match = $filter('filter')($scope.suggestion.goals, goal.id);\n if (match.length > 0) {\n var index = $scope.suggestion.goals.indexOf(match[0]);\n $scope.suggestion.goals.splice(index, 1);\n } else {\n $scope.suggestion.goals.push(goal.id);\n }\n } else {\n $scope.suggestion.goals = [goal.id];\n }\n };\n\n function addMissingBreakthroughGoals() {\n if ($scope.suggestion.goals) {\n for (var i = 0; i < $scope.suggestion.goals.length; i++) {\n var match = $filter('filter')($scope.goals, $scope.suggestion.goals[i], true);\n if (match.length > 0) {\n var breakthroughgoalid = match[0].id;\n var exists = $filter('filter')($scope.suggestion.goals, breakthroughgoalid, true);\n if (exists.length == 0) {\n $scope.suggestion.goals.push(breakthroughgoalid);\n }\n }\n }\n }\n }\n\n\n $scope.ok = function () {\n // Get asset\n if ($scope.asset) {\n $scope.suggestion.assetId = $scope.asset.id;\n addMissingBreakthroughGoals();\n }\n $scope.suggestion.attachments = $scope.uploadedFiles;\n $scope.suggestion.suggestedByUserId = $scope.user.userId;\n $scope.suggestion.suggestedBy = $scope.user.fullName;\n\n if ($scope.selectedCategory !== '') {\n $scope.suggestion.categoryId = $scope.selectedCategory.id;\n }\n if ($scope.estimatedTimeGainIsInvalid || \n $scope.estimatedTimeInvestedIsInvalid || \n $scope.estimatedGainOfInvestmentIsInvalid || \n $scope.estimatedCostOfInvestmentIsInvalid) {\n return;\n }\n $uibModalInstance.close($scope.suggestion);\n };\n\n $scope.close = function () {\n $uibModalInstance.dismiss('cancel');\n }\n }]);\n","import { translateOldFilter } from \"@common/shared/filterTranslator\"\nimport { getDefaultAppStyle, getDefaultAppTheme, calcDefaultAppFontSize } from \"@common/components/dashboard/designer/common/appStyleService\"\n\n\nangular\n .module('DigiLean')\n .directive(\"ongoingImprovementApp\", ['authService','debounce',\n function (authService, debounce) {\n return {\n templateUrl: 'ongoingImprovementApp.html',\n restrict: 'E',\n scope: {\n 'isAdminMode': '=',\n 'settings': '=',\n 'settingsChangeHandler': '&',\n 'layoutFactor': '<'\n },\n link: function (scope, elem, attrs) {\n\n scope.title = \"\";\n scope.filter = null;\n scope.timePeriod = null;\n scope.theme = getDefaultAppTheme()\n scope.viewMode = \"Kanban\";\n // Dashboard Settings handling\n scope.$watch('settings', function (settings) {\n scope.settings = settings;\n if (scope.settings) {\n if (scope.settings.title) {\n scope.title = scope.settings.title;\n }\n if (scope.settings.theme) {\n scope.theme = scope.settings.theme;\n }\n if (scope.settings.viewMode) {\n scope.viewMode = scope.settings.viewMode;\n }\n if (scope.settings.listColumns) {\n scope.listColumns = scope.settings.listColumns;\n }\n if (scope.settings.timePeriod) {\n scope.timePeriod = scope.settings.timePeriod;\n }\n if (scope.settings.sorting) {\n scope.sorting = scope.settings.sorting;\n }\n const userid = authService.getCurrentUser().userId;\n const translatedFilter = translateOldFilter(settings.filter, userid);\n scope.filter = translatedFilter;\n \n }\n resizeDebounced();\n\n scope.appSettings = {\n viewMode: scope.viewMode,\n filter: scope.filter,\n listColumns: scope.listColumns,\n timePeriod: scope.timePeriod,\n sorting: scope.sorting\n };\n });\n \n scope.updateSettings = function () {\n if (scope.isAdminMode == false) return;\n var componentSettings = {\n title: scope.title,\n theme: scope.theme,\n filter: scope.filter,\n listColumns: scope.listColumns,\n viewMode: scope.viewMode,\n timePeriod: scope.timePeriod,\n sorting: scope.sorting\n };\n scope.settingsChangeHandler({ settings: componentSettings });\n }\n\n scope.titleChangedEvent = function($event) {\n scope.title = $event.detail\n scope.updateSettings()\n }\n \n scope.themeChangedEvent = function($event) {\n scope.theme = $event.detail\n scope.updateSettings()\n }\n \n scope.appStyle = getDefaultAppStyle()\n function calcStyles() {\n scope.appStyle[\"font-size\"] = calcDefaultAppFontSize(scope.layoutFactor)\n }\n calcStyles()\n\n scope.settingsChanged = function (settings) {\n if (!scope.isAdminMode) return;\n if (settings.viewMode) {\n scope.viewMode = settings.viewMode;\n }\n if (settings.timePeriod) {\n scope.timePeriod = settings.timePeriod;\n }\n if (settings.filter) {\n scope.filter = settings.filter;\n }\n if (settings.listColumns) {\n scope.listColumns = settings.listColumns;\n }\n if (settings.sorting) {\n scope.sorting = settings.sorting;\n }\n scope.updateSettings(); \n }\n \n scope.$on(\"widget-resized\", function (event, args) {\n resizeDebounced();\n });\n\n function resize() {\n var host = $(elem).closest(\".grid-stack-item-content\");\n if (host.length == 0)\n host = $(elem).closest(\".modal-body\")\n \n if (host.length == 0) return;\n var height = host.height();\n\n var headerHeight = 0;\n var container = $(elem).find(\".ongoing-improvement-container\");\n if (container.length === 0) return;\n $(container).css(\"height\", (height - headerHeight));\n }\n const resizeDebounced = debounce(resize, 200, false)\n resizeDebounced();\n }\n }\n }]);\n","import { getCompanySetting } from \"@common/stores/companySettingsStore\"\nimport * as customerService from \"@common/services/customers/customerService\"\nimport * as assetService from \"@common/services/assetService\"\nimport * as timeService from \"@common/services/timeService\"\n\nvar DigiLean = angular.module('DigiLean');\nDigiLean.controller('fullImprovementModalController', ['$scope', '$filter', '$uibModal', '$uibModalInstance', '$translate', 'strategyService', 'navigationService', 'authService', 'activityService', 'suggestionService', 'suggestion', 'activeTab', 'modalService', 'projectService','a3Service','mathService',\n function ($scope, $filter, $uibModal, $uibModalInstance, $translate, strategyService,navigationService, authService, activityService, suggestionService, suggestion, activeTab, modalService, projectService,a3Service, mathService) {\n $scope.assets = [];\n $scope.selectedAsset = {};\n $scope.projects = [];\n //$scope.selectedProject = {};\n $scope.categories = [];\n $scope.selectedCategory = {};\n suggestion.asset = null;\n $scope.suggestion = suggestion;\n if ($scope.suggestion.dueDate) {\n $scope.suggestion.dueDate = moment($scope.suggestion.dueDate).toDate();\n }\n\n $scope.authentication = authService\n $scope.canEdit = false;\n // Chceck if user is allowed to edit task\n suggestionService().canEdit($scope.suggestion.id).then(function (canEdit) {\n $scope.canEdit = canEdit;\n });\n \n $scope.statuses = [];\n $scope.selectedStatus = {};\n var statusChanged = false;\n $scope.priorityStatusText = \"\"; // gui translated status text\n var oldPriority = $scope.suggestion.priorityStatus;\n var newPriority = $scope.suggestion.priorityStatus;\n $scope.selectedPriority = {};\n\n $scope.activityLog = [];\n\n var confirmEvaluationStatusDialog = false;\n var changedDueDate = false;\n var newDueDate = null;\n var oldDueDate = suggestion.dueDate;\n var changedROIInfo = false;\n\n $scope.selectedResponsible = {};\n var oldResponsible = suggestion.reponsibleDisplayName;\n var oldResponsibleUserId = suggestion.responsibleUserId;\n var newResponsible = oldResponsible;\n var newResponsibleUserId = oldResponsibleUserId;\n\n var userid = authService.getCurrentUser().userId;\n updateUserLikeStatus($scope.suggestion);\n\n // Default check of modules. Will work unless page is refreshed \n $scope.hasBoard = navigationService().hasModule(\"BOARD\");\n $scope.hasProject = navigationService().hasModule(\"PROJECT\");\n $scope.hasA3 = navigationService().hasModule(\"A3\");\n $scope.hasStrategy = navigationService().hasModule(\"STRATEGY\");\n $scope.goals = [];\n $scope.modifyGoal = false;\n $scope.relatedGoals = false;\n var changedGoal = false;\n loadGoals();\n \n // Changed handler for text => HtmlTextArea\n $scope.descriptionChanged = function(content) {\n $scope.suggestion.text = content;\n }\n\n // if page is refreshed we need to refresh the access to modules\n $scope.subscribe(\"UserAuthenticatedAndReady\", function (profile) {\n $scope.hasBoard = navigationService().hasModule(\"BOARD\");\n $scope.hasProject = navigationService().hasModule(\"PROJECT\");\n $scope.hasA3 = navigationService().hasModule(\"A3\");\n loadProjects();\n $scope.hasStrategy = navigationService().hasModule(\"STRATEGY\");\n loadGoals();\n userid = profile.user.id;\n updateUserLikeStatus($scope.suggestion);\n });\n\n \n function loadGoals(){\n if($scope.hasStrategy){\n if($scope.suggestion.asset && $scope.suggestion.asset.id){\n loadTeamGoals($scope.suggestion.asset.id);\n } else if($scope.suggestion.assetId){\n loadTeamGoals($scope.suggestion.assetId);\n } else {\n loadBreakthroughGoals(); \n } \n }\n }\n function loadTeamGoals(assetId){\n strategyService().getAllTeamGoals(assetId).then(function(goals){ \n if(goals && goals.length > 0){\n $scope.goals = goals;\n var relatedGoals = $scope.suggestion.goals;\n if(relatedGoals && relatedGoals.length>0){\n for(var i=0; i<$scope.goals.length; i++){\n var matching = $filter('filter')(relatedGoals, { strategyGoalId: $scope.goals[i].id}, true);\n if (matching.length > 0) {\n $scope.goals[i].selected = true;\n $scope.relatedGoals = true;\n for(var c=0; c<$scope.goals[i].childGoals.length; c++){\n var matchingChild = $filter('filter')(relatedGoals, { strategyGoalId: $scope.goals[i].childGoals[c].id}, true);\n if (matchingChild.length > 0) {\n $scope.goals[i].childGoals[c].selected = true;\n }\n }\n }\n }\n }\n } else {\n $scope.goals = [];\n loadBreakthroughGoals();\n }\n });\n }\n\n function loadBreakthroughGoals(){\n strategyService().getBreakthroughObjectives().then(function (goals) {\n if(goals && goals.length > 0){\n $scope.goals = goals;\n var relatedGoals = $scope.suggestion.goals;\n if(relatedGoals && relatedGoals.length>0){\n for(var i=0; i<$scope.goals.length; i++){\n var matching = $filter('filter')(relatedGoals, { strategyGoalId: $scope.goals[i].id}, true);\n if (matching.length > 0) {\n $scope.goals[i].selected = true;\n $scope.relatedGoals = true;\n }\n }\n }\n }\n });\n }\n\n function updateUserLikeStatus(suggestion) {\n //\n var existingLike = $filter('filter')(suggestion.likes, { likedByUserId: userid }, true);\n if (existingLike.length > 0) {\n suggestion.isLiked = true;\n } else {\n suggestion.isLiked = false;\n }\n }\n\n $scope.likeSuggestion = function (item) {\n item.isLiked = !item.isLiked;\n if (item.isLiked) {\n suggestionService().addLike(item.id).then(function (like) {\n // Like event will increase counter\n });\n } else {\n suggestionService().removeLike(item.id).then(function () {\n });\n }\n }\n\n $scope.toggleGoal = function(goal) {\n if($scope.modifyGoal){\n changedGoal = true;\n if($scope.suggestion.goals){\n var matching = $filter('filter')($scope.suggestion.goals, { strategyGoalId: goal.id }, true);\n if (matching.length > 0) {\n var index =$scope.suggestion.goals.indexOf(matching[0]);\n if (index > -1) {\n $scope.suggestion.goals.splice(index, 1);\n unselectGoal(goal);\n }\n }else {\n $scope.relatedGoals = true;\n var improvementStrategyGoal = {\n id: 0,\n improvementSuggestionId: $scope.suggestion.id,\n strategyGoal: goal,\n strategyGoalId: goal.id\n }\n $scope.suggestion.goals.unshift(improvementStrategyGoal); \n var breakthrougGoalList = $filter('filter')($scope.goals, { id: goal.id }, true);\n if(breakthrougGoalList.length > 0){\n breakthrougGoalList[0].selected = true;\n }\n }\n } else {\n var improvementStrategyGoal = {\n id: 0,\n improvementSuggestionId: $scope.suggestion.id,\n strategyGoal: goal,\n strategyGoalId: goal.id\n }\n $scope.suggestion.goals = [improvementStrategyGoal];\n var breakthrougGoalList = $filter('filter')($scope.goals, { id: goal.id }, true);\n if(breakthrougGoalList.length > 0){\n breakthrougGoalList[0].selected = true;\n }\n }\n }\n };\n $scope.toggleSubGoal = function(goal) {\n changedGoal = true;\n if($scope.suggestion.goals){\n var matching = $filter('filter')($scope.suggestion.goals, { strategyGoalId: goal.id }, true);\n if (matching.length > 0) {\n var index =$scope.suggestion.goals.indexOf(matching[0]);\n if (index > -1) {\n $scope.suggestion.goals.splice(index, 1);\n }\n } else {\n $scope.relatedGoals = true;\n var improvementStrategyGoal = {\n id: 0,\n improvementSuggestionId: $scope.suggestion.id,\n strategyGoal: goal,\n strategyGoalId: goal.id\n }\n $scope.suggestion.goals.unshift(improvementStrategyGoal); \n addMissingBreakthroughGoal(goal);\n }\n } else {\n var breakthrougGoalList = $filter('filter')($scope.goals, { id: goal.breakthroughgoalid }, true);\n if(breakthrougGoalList.length > 0){\n var breakthrougGoal = {\n id: 0,\n improvementSuggestionId: $scope.suggestion.id,\n strategyGoal: breakthrougGoalList[0],\n strategyGoalId: breakthrougGoalList[0].id\n };\n breakthrougGoalList[0].selected = true;\n var improvementStrategyGoal = {\n id: 0,\n improvementSuggestionId: $scope.suggestion.id,\n strategyGoal: goal,\n strategyGoalId: goal.id\n }\n $scope.suggestion.goals = [breakthrougGoal,improvementStrategyGoal];\n $scope.relatedGoals = true;\n }\n }\n };\n function unselectGoal(goal){\n var breakthrougGoalList = $filter('filter')($scope.goals, { id: goal.id }, true);\n if(breakthrougGoalList.length > 0){\n breakthrougGoalList[0].selected = false;\n if(breakthrougGoalList[0].childGoals){\n for(var i=0; i 0) {\n var index =$scope.suggestion.goals.indexOf(matchingSubgoalslist[0]);\n if (index > -1) {\n $scope.suggestion.goals.splice(index, 1);\n }\n }\n }\n }\n }\n }\n function addMissingBreakthroughGoal(subgoal){\n var exists = $filter('filter')($scope.suggestion.goals, { strategyGoalId: subgoal.breakThroughGoalId }, true);\n if(exists.length == 0){\n var breakthrougGoalList = $filter('filter')($scope.goals, { id: subgoal.breakThroughGoalId }, true);\n if (breakthrougGoalList.length > 0){\n breakthrougGoalList[0].selected = true;\n var breakthrougGoal = {\n id: 0,\n improvementSuggestionId: $scope.suggestion.id,\n strategyGoal: breakthrougGoalList[0],\n strategyGoalId: breakthrougGoalList[0].id\n };\n $scope.suggestion.goals.unshift(breakthrougGoal);\n }\n }\n }\n\n \n function updateGoals(){\n if(changedGoal){\n // remove goals not related to asset\n if($scope.suggestion.goals && $scope.suggestion.assetId){\n var validGoalsForAsset = []\n for(var i=0; i<$scope.suggestion.goals.length; i++){\n var goalList = $filter('filter')($scope.goals, { id: $scope.suggestion.goals[i].strategyGoalId }, true);\n if (goalList.length > 0){ \n validGoalsForAsset.unshift($scope.suggestion.goals[i]);\n if(goalList[0].childGoals){\n for(var c=0; c 0){ \n validGoalsForAsset.unshift(subgoalList[0]);\n \n }\n }\n }\n }\n }\n $scope.suggestion.goals = validGoalsForAsset;\n }\n suggestionService().updateImprovementStrategyGoal($scope.suggestion).then(function (data) {\n });\n }\n }\n \n // \n var tabs = [\"Info\", \"Attachments\", \"ROI\", \"Time\", \"Evaluation\", \"Action\", \"Comments\", \"History\"];\n $scope.indexTab = tabs.indexOf(activeTab);\n $scope.selectTab = function (tab) {\n $scope.indexTab = tabs.indexOf(tab);\n if (tab === \"History\") {\n getActivityLog();\n } else if (tab === \"Comments\") {\n sortCommentOrder();\n }\n };\n\n $scope.subscribe(\"ImprovementLikeAdded\", function (like) {\n if ($scope.suggestion.id === like.improvementSuggestionId) {\n var likeExists = $filter('filter')($scope.suggestion.likes, { id: like.id }, true);\n if (likeExists.length === 0) {\n $scope.suggestion.likes.push(like);\n updateUserLikeStatus($scope.suggestion);\n }\n }\n });\n\n \n $scope.subscribe(\"ImprovementLikeRemoved\", function (like) {\n if ($scope.suggestion.id === like.improvementSuggestionId) {\n var existingLike = $filter('filter')($scope.suggestion.likes, { id: like.id }, true);\n if (existingLike.length == 1) {\n var index = $scope.suggestion.likes.indexOf(existingLike[0]);\n $scope.suggestion.likes.splice(index, 1);\n }\n\n }\n })\n\n $scope.currency = customerService.getDefaultCurrency(); \n getCompanySetting(\"currency\").then(function (setting) {\n if (setting) {\n $scope.currency = setting\n }\n });\n\n\n // File upload\n $scope.uploadedFiles = []; // For uploading new attachments, will be connected to dropzone.\n $scope.fileUploaded = function (file) {\n suggestionService().addAttachment($scope.suggestion.id, file).then(function (improvementAttachment) {\n improvementAttachment.cssState = \"animated slideInDown\";\n setTimeout(function () {\n improvementAttachment.cssState = \"\";\n }, 500);\n $scope.suggestion.attachments.push(improvementAttachment);\n // Send event\n $scope.publish(\"SendSuggestionAttachmentAdded\", improvementAttachment);\n });\n };\n\n function sortCommentOrder() {\n if ($scope.suggestion.comments) {\n $scope.suggestion.comments.sort(function (a, b) {\n // Turn your strings into dates, and then subtract them\n // to get a value that is either negative, positive, or zero.\n return new Date(b.commentDate) - new Date(a.commentDate);\n });\n }\n }\n\n \n $scope.toggleModifyGoal = function () {\n $scope.modifyGoal = !$scope.modifyGoal;\n };\n $scope.deleteAttachment = function (attachment) {\n suggestionService().deleteAttachment($scope.suggestion.id, attachment.id).then(function (improvementAttachment) {\n // Send event\n attachment.cssState = \"animated slideOutLeft\";\n setTimeout(function () {\n var index = $scope.suggestion.attachments.indexOf(attachment);\n $scope.suggestion.attachments.splice(index, 1);\n }, 500);\n $scope.publish(\"SendSuggestionAttachmentDeleted\", attachment);\n });\n };\n\n //Modified propertie flag\n var categoryChanged = false;\n\n function loadProjects() {\n if ($scope.hasProject) {\n projectService().getOngoingProjects().then(function (projects) {\n $scope.projects = projects;\n $scope.projectmodel = { projectId: $scope.suggestion.projectId,\n projects: $scope.projects}\n });\n }\n }\n loadProjects();\n\n $scope.projectChangeHandler = function (projectinfo) {\n if (projectinfo) {\n $scope.suggestion.projectId = projectinfo.project.id;\n } else {\n $scope.suggestion.projectId = null;\n } \n }\n\n $scope.assetChangeHandler = function (assetinfo) {\n if (assetinfo) {\n $scope.suggestion.assetId = assetinfo.asset.id;\n $scope.suggestion.asset = assetinfo.asset;\n customerService.getUsersForAsset(assetinfo.asset.id).then(function (data) {\n data = data.filter(u => u.assetRole !== 'Viewer')\n angular.forEach(data, function (employee, key) {\n if (employee.screenName) {\n employee.fullName = employee.firstName + \" \" + employee.lastName;\n } else {\n employee.screenName = employee.firstName;\n employee.fullName = employee.firstName + \" \" + employee.lastName;\n }\n });\n $scope.employees = data;\n if (suggestion.responsibleUserId) {\n var responsible = $filter('filter')(data, { userId: suggestion.responsibleUserId }, true);\n if (responsible.length > 0) {\n $scope.selectedResponsible = responsible[0];\n }\n }\n \n });\n if($scope.hasStrategy){\n changedGoal = true;\n //reset selected goals\n for(var i=0; i<$scope.goals.length; i++){\n $scope.goals[i].selected = false;\n }\n //remove sub goals from previous asset\n if($scope.suggestion.goals){\n var selectedBreakthrougGoals = []\n for(var g=0; g<$scope.suggestion.goals.length; g++){\n if($scope.suggestion.goals[g].strategyGoal.level == 0){\n selectedBreakthrougGoals.unshift($scope.suggestion.goals[g]);\n }\n }\n $scope.suggestion.goals = selectedBreakthrougGoals;\n }\n loadTeamGoals(assetinfo.asset.id);\n }\n } else {\n $scope.suggestion.assetId = null;\n $scope.suggestion.asset = null;\n } \n\n\n\n \n }\n\n assetService.getAllAssets().then(function (data) {\n $scope.assets = data;\n for (var k = 0; k < $scope.assets.length; k++) {\n $scope.assets[k].cssLevel = \"level-\" + $scope.assets[k].level; \n }\n if (suggestion.assetId) {\n var selectedAssets = $filter('filter')(data, { id: suggestion.assetId }, true);\n if (selectedAssets.length > 0) {\n suggestion.asset = selectedAssets[0];\n\n customerService.getUsersForAsset(suggestion.assetId).then(function (data) {\n data = data.filter(u => u.assetRole !== 'Viewer')\n angular.forEach(data, function (employee, key) {\n if (employee.screenName) {\n employee.fullName = employee.firstName + \" \" + employee.lastName;\n } else {\n employee.screenName = employee.firstName;\n employee.fullName = employee.firstName + \" \" + employee.lastName;\n }\n });\n $scope.employees = data;\n if (suggestion.responsibleUserId) {\n var responsible = $filter('filter')(data, { userId: suggestion.responsibleUserId }, true);\n if (responsible.length > 0) {\n $scope.selectedResponsible = responsible[0];\n }\n }\n });\n }\n }\n $scope.assetmodel = { assetId: $scope.suggestion.assetId,\n assets: $scope.assets};\n });\n\n suggestionService().getCategories().then(function (categories) {\n $scope.categories = categories;\n if (suggestion.categoryId) {\n var match = $filter('filter')(categories, { id: suggestion.categoryId }, true);\n if (match.length > 0) {\n $scope.selectedCategory = match[0];\n }\n }\n });\n\n function translateStatuses() {\n $translate(['COMMON_NEW', 'IMPROVEMENT_PLANNED', 'COMMON_IN_PROGRESS', 'IMPROVEMENT_IMPLEMENTED', 'IMPROVEMENT_EVALUATED', 'IMPROVEMENT_ARCHIVED']).then(function (translations) {\n $scope.statuses = [\n {\n statusDisplayText: translations.COMMON_NEW,\n statusDatabaseText: \"Suggested\"\n },\n {\n statusDisplayText: translations.IMPROVEMENT_PLANNED,\n statusDatabaseText: \"Planned\"\n },\n {\n statusDisplayText: translations.COMMON_IN_PROGRESS,\n statusDatabaseText: \"InProgress\"\n },\n {\n statusDisplayText: translations.IMPROVEMENT_IMPLEMENTED,\n statusDatabaseText: \"Implemented\"\n },\n {\n statusDisplayText: translations.IMPROVEMENT_EVALUATED,\n statusDatabaseText: \"Evaluated\"\n },\n {\n statusDisplayText: translations.IMPROVEMENT_ARCHIVED,\n statusDatabaseText: \"Archived\"\n }];\n setSelectedStatus();\n });\n\n }\n\n function setSelectedStatus() {\n\n if (suggestion.status === 'Activated' || suggestion.status === 'Planned' || suggestion.status === 'Open') {\n $scope.selectedStatus = $scope.statuses[1];\n } else {\n $scope.selectedStatus = $filter('filter')($scope.statuses, { statusDatabaseText: suggestion.status }, true)[0];\n }\n }\n translateStatuses();\n\n function translatePriorities() {\n $translate(['IMPROVEMENT_LOW_EFFORT_HIGH_EFFECT', 'IMPROVEMENT_HIGH_EFFORT_HIGH_EFFECT', 'IMPROVEMENT_LOW_EFFORT_LOW_EFFECT', 'IMPROVEMENT_HIGH_EFFORT_LOW_EFFECT', 'IMPROVEMENT_NOT_PRIORITIZED']).then(function (translations) {\n $scope.priorities = [\n {\n priorityDisplayText: translations.IMPROVEMENT_LOW_EFFORT_HIGH_EFFECT,\n priorityDatabase: 1\n },\n {\n priorityDisplayText: translations.IMPROVEMENT_HIGH_EFFORT_HIGH_EFFECT,\n priorityDatabase: 2\n },\n {\n priorityDisplayText: translations.IMPROVEMENT_LOW_EFFORT_LOW_EFFECT,\n priorityDatabase: 3\n },\n {\n priorityDisplayText: translations.IMPROVEMENT_HIGH_EFFORT_LOW_EFFECT,\n priorityDatabase: 4\n },\n {\n priorityDisplayText: translations.IMPROVEMENT_NOT_PRIORITIZED,\n priorityDatabase: 0\n }];\n setSelectedPriority();\n });\n\n }\n\n function setSelectedPriority() {\n var pri = $filter('filter')($scope.priorities, { priorityDatabase: suggestion.priorityStatus }, true);\n if (pri.length > 0) {\n $scope.selectedPriority = pri[0];\n }\n }\n translatePriorities();\n\n function translateLabels() {\n\n switch (suggestion.priorityStatus) {\n case 1:\n $translate('IMPROVEMENT_LOW_EFFORT_HIGH_EFFECT').then(function (trans) {\n $scope.priorityStatusText = trans;\n });\n break;\n case 2:\n $translate('IMPROVEMENT_HIGH_EFFORT_HIGH_EFFECT').then(function (trans) {\n $scope.priorityStatusText = trans;\n });\n break;\n case 3:\n $translate('IMPROVEMENT_LOW_EFFORT_LOW_EFFECT').then(function (trans) {\n $scope.priorityStatusText = trans;\n });\n break;\n case 4:\n $translate('IMPROVEMENT_HIGH_EFFORT_LOW_EFFECT').then(function (trans) {\n $scope.priorityStatusText = trans;\n });\n break;\n default:\n $translate('IMPROVEMENT_NOT_PRIORITIZED').then(function (trans) {\n $scope.priorityStatusText = trans;\n });\n }\n }\n translateLabels();\n\n // History\n function getActivityLog() {\n var activityRequest = {\n activity: \"ImprovementSuggestion\",\n activityId: $scope.suggestion.id\n };\n var $translate = $filter('translate');\n var translateOptions = {\n month: $translate('COMMON_TIMEELAPSED_MONTH'),\n days: $translate('COMMON_TIMEELAPSED_DAYS'),\n hours: $translate('COMMON_TIMEELAPSED_HOURS'),\n mins: $translate('COMMON_TIMEELAPSED_MINUTES'),\n seconds: $translate('COMMON_TIMEELAPSED_SECONDS'),\n now: $translate('COMMON_TIMEELAPSED_NOW')\n };\n activityService().getLogForActivity(activityRequest).then(function (logItems) {\n logItems.forEach(function (activity) {\n activity.occured = timeService.getTimeElapsed(activity.activityDate, translateOptions);\n if (activity.payLoad && typeof activity.payLoad === \"string\") {\n activity.payLoad = JSON.parse(activity.payLoad); // Payload gives the whole object, in this case the Task.\n }\n });\n $scope.activityLog = logItems;\n\n });\n }\n\n $scope.setStatusChanged = function (status) {\n if (status) {\n $scope.suggestion.status = status.statusDatabaseText;\n statusChanged = true;\n }\n };\n\n function isStringANumber(value) {\n return mathService().isNumeric(value, true);\n }\n $scope.checkEstimatedTimeInvested = function () {\n $scope.suggestion.estimatedCostOfInvestmentHours = mathService().correctForComma($scope.suggestion.estimatedCostOfInvestmentHours);\n $scope.estimatedTimeInvestedIsInvalid = !isStringANumber($scope.suggestion.estimatedCostOfInvestmentHours);\n };\n $scope.checkEstimatedTimeGained = function () {\n $scope.suggestion.estimatedGainOfInvestmentHours = mathService().correctForComma($scope.suggestion.estimatedGainOfInvestmentHours);\n $scope.estimatedTimeGainIsInvalid = !isStringANumber($scope.suggestion.estimatedGainOfInvestmentHours);\n };\n $scope.checkTimeInvested = function () {\n $scope.suggestion.costOfInvestmentHours = mathService().correctForComma($scope.suggestion.costOfInvestmentHours);\n $scope.timeInvestedIsInvalid = !isStringANumber($scope.suggestion.costOfInvestmentHours);\n };\n $scope.checkTimeGained = function () {\n $scope.suggestion.gainOfInvestmentHours = mathService().correctForComma($scope.suggestion.gainOfInvestmentHours);\n $scope.timeGainIsInvalid = !isStringANumber($scope.suggestion.gainOfInvestmentHours);\n };\n $scope.CheckEstimatedCostOfInvestment = function () {\n changedROIInfo = true;\n $scope.suggestion.estimatedCostOfInvestment = mathService().correctForComma($scope.suggestion.estimatedCostOfInvestment);\n $scope.estimatedCostOfInvestmentIsInvalid = !isStringANumber($scope.suggestion.estimatedCostOfInvestment);\n };\n $scope.checkEstimatedGainOfInvestment = function () {\n changedROIInfo = true;\n $scope.suggestion.estimatedGainOfInvestment = mathService().correctForComma($scope.suggestion.estimatedGainOfInvestment);\n $scope.estimatedGainOfInvestmentIsInvalid = !isStringANumber($scope.suggestion.estimatedGainOfInvestment);\n };\n $scope.checkCostOfInvestment = function () {\n changedROIInfo = true;\n $scope.suggestion.costOfInvestment = mathService().correctForComma($scope.suggestion.costOfInvestment);\n $scope.costOfInvestmentIsInvalid = !isStringANumber($scope.suggestion.costOfInvestment);\n };\n $scope.checkGainOfInvestment = function () {\n changedROIInfo = true;\n $scope.suggestion.gainOfInvestment = mathService().correctForComma($scope.suggestion.gainOfInvestment);\n $scope.gainOfInvestmentIsInvalid = !isStringANumber($scope.suggestion.gainOfInvestment);\n };\n\n\n $scope.like = function () {\n $scope.suggestion.isLiked = !$scope.suggestion.isLiked;\n if ($scope.suggestion.isLiked) {\n suggestionService().addLike($scope.suggestion.id).then(function (like) {\n // Like event will increase counter\n });\n } else {\n suggestionService().removeLike($scope.suggestion.id).then(function () {\n });\n }\n };\n\n $scope.toA3 = function () {\n var assetId = \"\";\n if ($scope.suggestion.assetId) {\n assetId = $scope.suggestion.assetId;\n }\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'newA3Form.html',\n controller: 'newA3ModalController',\n resolve: {\n a3: function () {\n return {\n id: 0,\n title: $scope.suggestion.title,\n assetId: assetId,\n improvementSuggestionId: $scope.suggestion.id,\n goal: \"\",\n }\n }\n }\n });\n return modalInstance.result.then(function (a3) {\n $scope.suggestion.a3Id = a3.id;\n $scope.publish(\"SendImprovementActivatedtoA3\", $scope.suggestion);\n }\n );\n };\n\n $scope.priorityChanged = function (priority) {\n if (priority) {\n newPriority = priority.priorityDatabase;\n $scope.suggestion.priorityStatus = priority.priorityDatabase;\n }\n };\n\n $scope.categoryChanged = function (category) {\n if (category) {\n $scope.suggestion.categoryId = category.id;\n $scope.selectedCategory = category;\n categoryChanged = true;\n }\n };\n\n /*\n $scope.assetChanged = function (asset) {\n customerService.getUsersForAsset(asset.id).then(function (data) {\n data = data.filter(u => u.assetRole !== 'Viewer')\n angular.forEach(data, function (employee, key) {\n if (employee.screenName) {\n employee.fullName = employee.firstName + \" \" + employee.lastName;\n } else {\n employee.screenName = employee.firstName;\n employee.fullName = employee.firstName + \" \" + employee.lastName;\n }\n });\n $scope.employees = data;\n if (suggestion.responsibleUserId) {\n var responsible = $filter('filter')(data, { userId: suggestion.responsibleUserId }, true);\n if (responsible.length > 0) {\n $scope.selectedResponsible = responsible[0];\n }\n }\n \n });\n if($scope.hasStrategy){\n changedGoal = true;\n //reset selected goals\n for(var i=0; i<$scope.goals.length; i++){\n $scope.goals[i].selected = false;\n }\n //remove sub goals from previous asset\n if($scope.suggestion.goals){\n var selectedBreakthrougGoals = []\n for(var g=0; g<$scope.suggestion.goals.length; g++){\n if($scope.suggestion.goals[g].strategyGoal.level == 0){\n selectedBreakthrougGoals.unshift($scope.suggestion.goals[g]);\n }\n }\n $scope.suggestion.goals = selectedBreakthrougGoals;\n }\n loadTeamGoals(asset.id);\n }\n };*/\n\n $scope.projectChanged = function (project) {\n $scope.suggestion.projectId = project.id;\n };\n\n $scope.responsibleChanged = function (user) {\n if (user) {\n $scope.suggestion.responsibleUserId = user.userId;\n $scope.suggestion.responsibleUser = user.fullName;\n $scope.suggestion.responsibleDisplayName = user.screenName;\n newResponsible = user.fullName;\n newResponsibleUserId = user.userId;\n }\n }\n\n $scope.setEvaluationStatus = function (status) {\n $scope.suggestion.evaluationStatus = status;\n confirmEvaluationStatusDialog = true;\n };\n\n $scope.setEvaluationTextChanged = function (text) {\n confirmEvaluationStatusDialog = true;\n };\n\n function confirmEvaluationStatus() {\n $translate(['COMMON_NO', 'DASHBOARD_CHANGE_STATUS', 'COMMON_YES', 'IMPROVEMENT_CHANGE_STATUS_CONFIRMATION']).then(function (translations) {\n var modalOptions = {\n closeButtonText: translations.COMMON_NO,\n actionButtonText: translations.COMMON_YES,\n headerText: translations.DASHBOARD_CHANGE_STATUS + '?',\n bodyText: translations.IMPROVEMENT_CHANGE_STATUS_CONFIRMATION\n };\n\n modalService.show({}, modalOptions).then(function (result) {\n $scope.suggestion.statusEvaluatedDate = moment().toDate();\n $scope.suggestion.status = \"Evaluated\";\n confirmEvaluationStatusDialog = false;\n $scope.ok();\n },\n function () {\n confirmEvaluationStatusDialog = false;\n $scope.ok();\n });\n });\n }\n\n $scope.getPriorityStatusText = function (prioritystatusno) {\n return suggestionService().getPriorityStatusText(prioritystatusno);\n };\n\n customerService.getAllUsers().then(function (users) {\n $scope.allUsers = users;\n });\n \n $scope.subscribe(\"SuggestionCommentedOn\", function(c) {\n $scope.totalComments += 1;\n });\n $scope.saveComment = function(comment) {\n comment.suggestionId = suggestion.id;\n return suggestionService().addComment(comment);\n };\n $scope.comments = [];\n suggestionService().getComments(suggestion.id).then(function(suggestionComments) {\n $scope.totalComments = suggestionComments.total;\n $scope.comments = suggestionComments.comments;\n });\n $scope.showAddComment = true;\n $scope.addComment = function (comment) {\n return $scope.saveComment(comment).then(function (savedComment) {\n $scope.comments.push(savedComment);\n });\n };\n $scope.deleteComment = function (comment) {\n return suggestionService().deleteComment(suggestion.id, comment.id).then(function() {\n $scope.totalComments -= 1;\n });\n };\n $scope.dueDateChanged = function (event) {\n const date = event.originalEvent.detail\n suggestion.dueDate = date\n changedDueDate = true\n newDueDate = date\n }\n\n $scope.updateDueDate = function () {\n /*\n boardTaskService().updateDate(task.id, task.boardDate).then(function (taskMoved) {\n $scope.publish(\"SendChangedSuggestionDueDate\", taskMoved);\n });*/\n };\n\n $scope.ok = function () {\n if (confirmEvaluationStatusDialog && $scope.suggestion.status !== \"Evaluated\") {\n confirmEvaluationStatus();\n return;\n }\n if ($scope.suggestion.asset) {\n $scope.suggestion.assetId = $scope.suggestion.asset.id;\n $scope.suggestion.assetName = $scope.suggestion.asset.name;\n }\n\n if ($scope.changedDueDate) {\n $scope.updateDueDate();\n }\n\n if(changedROIInfo){\n updateROI();\n }\n updateGoals();\n\n suggestionService().updateSuggestion($scope.suggestion).then(function (suggestion) {\n $scope.publish(\"SendImprovementUpdated\", suggestion);\n\n if (categoryChanged) {\n var changedCategory =\n {\n suggestionId: suggestion.id,\n categoryName: $scope.selectedCategory.name,\n categoryId: $scope.suggestion.categoryId\n };\n $scope.publish(\"SendImprovementChangedCategory\", changedCategory);\n categoryChanged = false;\n }\n\n $scope.suggestion = suggestion;\n if(statusChanged && $scope.suggestion.a3Id){\n \n $translate(['COMMON_CANCEL', 'COMMON_UPDATE_STATUS', 'COMMON_CHANGE_STATUS', 'IMPROVEMENT_UPDATE_A3_STATUS']).then(function (translations) {\n var modalOptions = {\n closeButtonText: translations.COMMON_CANCEL,\n actionButtonText: translations.COMMON_UPDATE_STATUS,\n headerText: translations.COMMON_CHANGE_STATUS,\n bodyText: translations.IMPROVEMENT_UPDATE_A3_STATUS\n };\n \n modalService.showModal({}, modalOptions).then(function (result) {\n var newstatus = suggestionService().getA3Status($scope.suggestion.status);\n \n if(newstatus){\n a3Service().updateA3Status($scope.suggestion.a3Id, newstatus).then(function () {\n });\n }\n \n });\n });\n }\n \n $uibModalInstance.close($scope.suggestion);\n });\n\n };\n\n function updateROI(){\n var improvementROI =\n {\n suggestionId : $scope.suggestion.id,\n newEstimatedCostOfInvestment : $scope.suggestion.estimatedCostOfInvestment, \n newCostOfInvestment : $scope.suggestion.costOfInvestment,\n newEstimatedGainOfInvestment: $scope.suggestion.estimatedGainOfInvestment,\n newGainOfInvestment: $scope.suggestion.gainOfInvestment\n \n }\n suggestionService().updateROI(improvementROI).then(function (roisuggestion) {\n return roisuggestion;\n });\n }\n\n $scope.deleteSuggestion = function (suggestion) {\n var id = suggestion.id;\n\n var modalOptions = {\n closeButtonText: $translate.instant(\"COMMON_CANCEL\"),\n actionButtonText: $translate.instant(\"ADMIN_DELETE_SUGGESTION\"),\n headerText: $translate.instant(\"COMMON_DELETE\") + ' ' + $translate.instant(\"COMMON_SUGGESTION\") + '?',\n bodyText: $translate.instant(\"ADMIN_DELETE_SUGGESTION_DESCRIPTION\")\n };\n\n modalService.showModal({}, modalOptions).then(function (result) {\n suggestionService().deleteSuggestion(id).then(function (result) {\n\n if (result.affectedTaskIds && result.affectedTaskIds.length > 0) {\n $scope.publish(\"SendTasksDeleted\", result.affectedTaskIds);\n }\n if (result.affectedA3TaskIds && result.affectedA3TaskIds.length > 0) {\n $scope.publish(\"SendTasksDeleted\", result.affectedA3TaskIds);\n }\n if (result.affectedA3Ids && result.affectedA3Ids.length > 0) {\n angular.forEach(result.affectedA3Ids, function (id, key) {\n $scope.publish(\"SendA3Deleted\", id);\n });\n }\n $uibModalInstance.close($scope.suggestion);\n });\n\n });\n }\n\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n\n }]);","import * as assetService from \"@common/services/assetService\"\n\nangular\n .module('DigiLean')\n .directive(\"improvementListFilter\", ['$uibModal', '$filter', '$translate', 'suggestionService', 'strategyService', 'authService', 'navigationService', 'projectService', 'debounce',\n function ($uibModal, $filter, $translate, suggestionService, strategyService ,authService, navigationService, projectService, debounce) {\n return {\n templateUrl: 'improvementListFilter.html',\n restrict: 'E',\n scope: {\n 'filterInitial': '<',\n 'onFilterChanged': '&',\n 'options': '<',\n 'showHeader': \"<\"\n },\n link: function (scope, elem, attrs) {\n\n scope.isSearchWordActive = false;\n scope.isFilterActive = false;\n scope.likesFilterActive = false;\n scope.myResponsibleFilterActive = false;\n scope.mySuggestionFilterActive = false;\n scope.overdueFilterActive = false;\n scope.assets = []\n scope.projects = []\n scope.categories = []\n\n scope.showArchived = true;\n\n \n scope.hasStrategyModule = navigationService().hasModule(\"STRATEGY\");\n scope.subscribe(\"UserAuthenticatedAndReady\", function(profile) {\n scope.hasStrategyModule = navigationService().hasModule(\"STRATEGY\"); \n });\n\n scope.statuses = [\n { id: 'Suggested', name: $translate.instant(\"COMMON_NEW\"), filteredAndInResultList: false },\n { id: 'Planned', name: $translate.instant(\"IMPROVEMENT_PLANNED\"), filteredAndInResultList: false },\n { id: 'InProgress', name: $translate.instant(\"COMMON_IN_PROGRESS\"), filteredAndInResultList: false },\n { id: 'Implemented', name: $translate.instant(\"IMPROVEMENT_IMPLEMENTED\"), filteredAndInResultList: false },\n { id: 'Evaluated', name: $translate.instant(\"IMPROVEMENT_EVALUATED\"), filteredAndInResultList: false },\n { id: 'Archived', name: $translate.instant(\"IMPROVEMENT_ARCHIVED\"), filteredAndInResultList: false }\n ]\n\n scope.priorityOptions = [\n {\n priorityDB: 1,\n translated: $translate.instant('IMPROVEMENT_LOW_EFFORT_HIGH_EFFECT'),\n cssClass: \"highEffectLowEffort\",\n filteredAndInResultList: false\n }, {\n priorityDB: 2,\n translated: $translate.instant('IMPROVEMENT_HIGH_EFFORT_HIGH_EFFECT'),\n cssClass: \"highEffectHighEffort\",\n filteredAndInResultList: false\n }, {\n priorityDB: 3,\n translated: $translate.instant('IMPROVEMENT_LOW_EFFORT_LOW_EFFECT'),\n cssClass: \"lowEffectlowEffort\",\n filteredAndInResultList: false\n }, {\n priorityDB: 4,\n translated: $translate.instant('IMPROVEMENT_HIGH_EFFORT_LOW_EFFECT'),\n cssClass: \"lowEffectHighEffort\",\n filteredAndInResultList: false\n }, {\n priorityDB: 0,\n translated: $translate.instant('IMPROVEMENT_NOT_PRIORITIZED'),\n cssClass: \"btn-default\",\n filteredAndInResultList: false\n }\n ];\n\n scope.$watch('options', function (options) {\n if (!options) return;\n if (options.showArchived === false) {\n scope.showArchived = false;\n }\n });\n\n function resetListFilter(list) {\n list.forEach(item => {\n item.filteredAndInResultList = false\n })\n }\n scope.toggleLikesFilter = function () {\n scope.likesFilterActive = !scope.likesFilterActive\n filterDebounce();\n }\n\n scope.toggleOverdueFilter = function () {\n scope.overdueFilterActive = !scope.overdueFilterActive\n filterDebounce();\n }\n\n scope.filterPriority = function (priority) {\n priority.filteredAndInResultList = !priority.filteredAndInResultList\n filterDebounce();\n }\n\n scope.clearFilter = function() {\n scope.resetFilter();\n if (scope.onFilterChanged) {\n scope.onFilterChanged({filter: scope.filter})\n }\n }\n scope.resetFilter = function () {\n scope.query = \"\"\n resetListFilter(scope.statuses);\n resetListFilter(scope.assets);\n resetListFilter(scope.projects);\n resetListFilter(scope.categories);\n resetListFilter(scope.goals);\n resetListFilter(scope.priorityOptions);\n scope.overdueFilterActive = false;\n scope.myResponsibleFilterActive = false;\n scope.mySuggestionFilterActive = false;\n scope.overdueFilterActive = false;\n scope.filter = [];\n }\n\n scope.toggleMyResponsibleFilter = function () {\n scope.myResponsibleFilterActive = !scope.myResponsibleFilterActive\n filterDebounce()\n }\n\n function getAllData() {\n let promises = []\n promises.push(assetService.getAllAssets().then(assets => {\n scope.assets = _.sortBy(assets, function (i) { return i.name.toLowerCase() })\n return true\n }))\n promises.push(suggestionService().getCategories().then(categories => {\n scope.categories = categories\n return true\n }))\n promises.push(projectService().getProjectListWithSuggestion().then(function (projects) {\n scope.projects = _.sortBy(projects, function (i) { return i.name.toLowerCase() })\n return true\n }))\n promises.push(strategyService().getBreakthroughObjectives().then(function (result) {\n scope.goals = result\n return true\n }))\n \n Promise.all(promises).then(() => {\n addInitialFilter()\n })\n }\n getAllData()\n\n\n scope.search = function () {\n if (scope.query) {\n scope.isSearchWordActive = true;\n } else {\n scope.isSearchWordActive = false;\n }\n filterDebounce()\n }\n\n scope.toggleMySuggestionFilter = function () {\n scope.mySuggestionFilterActive = !scope.mySuggestionFilterActive\n filterDebounce()\n }\n\n scope.filterStatus = function (status) {\n status.filteredAndInResultList = !status.filteredAndInResultList\n filterDebounce()\n }\n scope.filterAsset = function (asset) {\n asset.filteredAndInResultList = !asset.filteredAndInResultList\n filterDebounce()\n }\n scope.filterProject = function (project) {\n project.filteredAndInResultList = !project.filteredAndInResultList\n filterDebounce()\n }\n scope.filterCategory = function (category) {\n category.filteredAndInResultList = !category.filteredAndInResultList\n filterDebounce()\n }\n scope.filterGoal = function(goal) {\n goal.filteredAndInResultList = !goal.filteredAndInResultList\n filterDebounce()\n }\n\n function addToFilterIfActive(filter, list, sourceColumn, property) {\n var itemToShow = list.filter(l => l.filteredAndInResultList)\n if (itemToShow.length > 0) {\n \n let itemFilter = {\n sourceColumn: sourceColumn,\n operator: \"InList\",\n items: []\n }\n itemToShow.forEach(item => {\n itemFilter.items.push(item[property])\n })\n filter.push(itemFilter)\n }\n }\n\n const filterDebounce = debounce(setFilter, 500, false)\n function setFilter() {\n\n let filter = []\n addToFilterIfActive(filter, scope.priorityOptions, \"priorityStatus\", \"priorityDB\")\n addToFilterIfActive(filter, scope.statuses, \"status\", \"id\")\n addToFilterIfActive(filter, scope.assets, \"assetId\", \"id\")\n addToFilterIfActive(filter, scope.projects, \"S.projectId\", \"id\")\n addToFilterIfActive(filter, scope.categories, \"categoryId\", \"id\")\n addToFilterIfActive(filter, scope.goals, \"Goals.StrategyGoalId\", \"id\")\n if (scope.myResponsibleFilterActive) {\n var userid = authService.getCurrentUser().userId\n var itemFilter = {\n sourceColumn: \"responsibleUserId\",\n operator: \"InList\",\n items: [userid]\n }\n filter.push(itemFilter)\n }\n if (scope.mySuggestionFilterActive) {\n let userid = authService.getCurrentUser().userId\n let itemFilter = {\n sourceColumn: \"suggestedByUserId\",\n operator: \"InList\",\n items: [userid]\n }\n filter.push(itemFilter)\n }\n if (scope.overdueFilterActive) {\n let itemFilter = {\n sourceColumn: \"dueDate\",\n operator: \"LessThanDate\",\n items: [moment().subtract(1, 'days')]\n }\n let notImplementedFilter = {\n sourceColumn: \"statusImplementedDate\",\n operator: \"IsNull\",\n items: []\n }\n filter.push(itemFilter)\n filter.push(notImplementedFilter)\n }\n if (scope.isSearchWordActive && scope.query) {\n // Check for ID filter\n if (isNumeric(scope.query)) {\n // Check if suggestion is ID and show.\n suggestionService().get(scope.query).then(function (suggestion) {\n if (suggestion) {\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n templateUrl: 'fullImprovementInfoForm.html',\n controller: 'fullImprovementModalController',\n windowClass: 'fullSuggestion-modal-window',\n resolve: {\n suggestion: function () {\n return suggestion\n },\n activeTab: function () {\n return \"Info\"\n }\n }\n });\n }\n });\n }\n let itemFilter = {\n sourceColumn: \"title\",\n operator: \"Contains\",\n items: [scope.query]\n }\n filter.push(itemFilter)\n }\n if (scope.onFilterChanged) {\n scope.onFilterChanged({filter})\n }\n }\n\n function isNumeric(num) {\n return !isNaN(num)\n }\n \n\n function addInitialFilter() {\n if (scope.filterInitial) {\n let filter = scope.filterInitial\n updateGuiFromFilter(filter, scope.priorityOptions, \"priorityStatus\", \"priorityDB\")\n updateGuiFromFilter(filter, scope.statuses, \"status\", \"id\")\n updateGuiFromFilter(filter, scope.assets, \"assetId\", \"id\")\n updateGuiFromFilter(filter, scope.projects, \"S.projectId\", \"id\")\n updateGuiFromFilter(filter, scope.categories, \"categoryId\", \"id\")\n updateGuiFromFilter(filter, scope.goals, \"Goals.StrategyGoalId\", \"id\")\n scope.myResponsibleFilterActive = updateGuiFromFilterSpecialCase(filter, \"responsibleUserId\")\n scope.mySuggestionFilterActive = updateGuiFromFilterSpecialCase(filter, \"suggestedByUserId\")\n scope.overdueFilterActive = updateGuiFromFilterSpecialCase(filter, \"dueDate\")\n }\n }\n function updateGuiFromFilter(filter, list, sourceColumn, property) {\n const appl = filter.find(f => f.sourceColumn == sourceColumn)\n if (appl) {\n const itemsint = stringtoint(appl.items)\n list.forEach(l => {\n const propVal = l[property]\n if (appl.items.includes(propVal) || itemsint.includes(propVal))\n l.filteredAndInResultList = true\n })\n }\n }\n function stringtoint(listofstr) {\n try {\n if (!listofstr)\n return []\n return listofstr.map(str => parseInt(str))\n }\n catch(e) { return []}\n }\n function updateGuiFromFilterSpecialCase(filter, sourceColumn) {\n const appl = filter.find(f => f.sourceColumn == sourceColumn)\n return !!appl\n }\n\n\n }\n\n }\n }]);\n","import * as pdfService from \"@common/services/pdfService\"\nimport envConfig from \"@common/envConfig\"\n\nangular\n .module('DigiLean')\n .directive(\"improvementListResult\", ['$filter', 'debounce', 'navigationService', 'suggestionService', '$uibModal', 'NgTableParams', 'excelService',\n function ($filter, debounce, navigationService, suggestionService, $uibModal, NgTableParams, excelService) {\n return {\n templateUrl: 'improvementListResult.html',\n restrict: 'E',\n scope: {\n 'filterParams': '<',\n 'options': '<',\n 'tableParamsChanged': '&?',\n 'columnListChanged': '&'\n },\n link: function (scope, elem, attrs) {\n scope.columns = [];\n scope.totalValues = 0;\n scope.totalMatchingRecords = 0;\n var isFilterLoaded = false;\n var isOptionsLoaded = false;\n // default values\n scope.sorting = [];\n scope.pageCount = 25;\n scope.tableSorting = { lastModified: \"desc\" };\n // Options\n scope.showFilter = false;\n scope.showFileGenerators = false;\n scope.showArchived = false;\n scope.isTeamsMode = envConfig.isTeamsMode;\n \n \n function renderValue($scope, row) {\n var item = this;\n var field = item.field;\n var value = row[field];\n if (this.dataType === \"date\") {\n return $filter('date')(value, \"mediumDate\");\n }\n if (this.dataType === \"timestamp\") {\n return $filter('date')(value, \"dd.MM.yyyy HH:mm:ss\");\n }\n if (this.dataType === \"bool\") {\n if (value === \"true\") {\n return \"\";\n } else {\n return \"\";\n }\n }\n return value;\n }\n \n scope.allColumns = suggestionService().getAllColumns(renderValue);\n\n scope.hasProjectModule = navigationService().hasModule(\"PROJECT\");\n if (!scope.hasProjectModule) {\n //remove project specific column\n scope.allColumns = scope.allColumns.filter(c => c.field !== \"projectName\");\n }\n\n\n scope.timePeriod = null;\n scope.$watch('filterParams', function (params) {\n if (!params) return;\n isFilterLoaded = true;\n if (!params.filter) {\n scope.filter = [];\n } else {\n scope.filter = params.filter;\n }\n if (params.timePeriod) {\n scope.timePeriod = params.timePeriod;\n }\n if (params.sorting) {\n scope.tableSorting = params.sorting;\n }\n if (params.listColumns) {\n params.listColumns.forEach((c) => {\n var column = $filter('filter')(scope.allColumns, { field: c.field })[0];\n if (column) {\n column.visible = c.visible;\n }\n })\n }\n\n if (isFilterLoaded) {\n scope.getValues();\n }\n });\n function getTotalCount() {\n suggestionService().getTotalNumberOfImprovements(scope.showArchived).then(function (count) {\n scope.totalValues = count;\n });\n }\n\n scope.$watch('options', function (options) {\n if (!options) {\n scope.showFileGenerators = true;\n scope.showFilter = true;\n scope.showArchived = true;\n } else {\n // Apply options\n scope.showFileGenerators = options.showFileGenerators;\n scope.showFilter = options.showFilter;\n scope.showArchived = options.showArchived;\n }\n isOptionsLoaded = true;\n getTotalCount();\n scope.getValues();\n });\n\n\n scope.filterChanged = function (filter) {\n scope.filter = filter\n scope.getValues();\n }\n\n scope.openSuggestion = function (suggestionInfo) {\n suggestionService().get(suggestionInfo.id).then(function (suggestion) {\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n templateUrl: 'fullImprovementInfoForm.html',\n controller: 'fullImprovementModalController',\n windowClass: 'fullSuggestion-modal-window',\n resolve: {\n suggestion: function () {\n return suggestion;\n },\n activeTab: function () {\n return \"Info\";\n }\n }\n });\n modalInstance.result.then(function (updatedSuggestion) {\n scope.tableParams.reload();\n });\n });\n\n }\n scope.exportToPDF= function () {\n var columns = getColumns();\n var dbParams = {\n page: 1,\n count: 5000,\n sorting: scope.sorting,\n filters: scope.filter,\n columns: columns,\n timePeriod: scope.timePeriod\n }\n pdfService.createImprovementListReport(dbParams); \n }\n\n scope.exportToExcel = function () {\n var columns = getColumns();\n var dbParams = {\n page: 1,\n count: 5000,\n sorting: scope.sorting,\n filters: scope.filter,\n columns: columns,\n timePeriod: scope.timePeriod\n }\n excelService().exportImprovementValues(dbParams); \n }\n\n scope.getValueForElement = function (element, item) {\n var sourceColumn = element.sourceColumn;\n var value = item[sourceColumn];\n return value;\n }\n\n scope.getValues = function (params) {\n if (!isOptionsLoaded || !isFilterLoaded) return;\n scope.buildColumns();\n scope.tableParams = new NgTableParams({\n sorting: scope.tableSorting,\n count: scope.pageCount,\n },\n {\n getData: scope.getTableValues\n });\n }\n\n function removeArchivedInFilter() {\n if(scope.filter) { \n scope.filter.forEach((f) => {\n if(f.sourceColumn === \"status\") {\n f.items.forEach((item) => {\n if(item.value === \"Archived\") {\n f.items.splice(f.items.indexOf(item), 1);\n }\n })\n } else {\n const archivedFilter = {\n sourceColumn: \"status\",\n operator: \"InList\",\n items: [\"Suggested\", \"Planned\", \"InProgress\", \"Implemented\", \"Evaluated\"]\n }\n scope.filter.push(archivedFilter)\n }\n })\n } else {\n scope.filter = [];\n const archivedFilter = {\n sourceColumn: \"status\",\n operator: \"InList\",\n items: [\"Suggested\", \"Planned\", \"InProgress\", \"Implemented\", \"Evaluated\"]\n }\n scope.filter.push(archivedFilter)\n }\n }\n\n scope.getTableValues = function (params) {\n\n var sorting = [];\n // Build sortExpression for database to be able to deserialize, becuase NgTableParams.sorting is a dynamic object.\n for (var propt in params._params.sorting) {\n sorting.push({\n property: propt,\n direction: params._params.sorting[propt]\n });\n }\n scope.sorting = sorting;\n // Resolve paging;\n if (scope.tableSorting != params._params.sorting) {\n scope.tableSorting = params._params.sorting;\n raiseTableParamsChanged();\n }\n //TODO test if both new and old filters works\n\n if (!scope.showArchived) {\n removeArchivedInFilter();\n }\n\n // We will build params based on the built-in NgTableParams + our sorting array\n var dbParams = {\n page: params._params.page,\n count: params._params.count,\n sorting: scope.sorting,\n filters: scope.filter,\n timePeriod: scope.timePeriod\n }\n return suggestionService().getTableValues(dbParams).then(function (data) { \n scope.totalMatchingRecords = data.total;\n params.total(data.total); // recal. page nav controls\n // check values\n data.values.forEach(value => {\n value.isOverdue = isOverdue(value.dueDate, value.statusImplementedDate);\n });\n return data.values;\n\n });\n }\n\n var raiseTableParamsChanged = function () {\n if (!scope.tableParamsChanged) return;\n // Raise settings changeHandler\n var tableParamsSettings = {\n sorting: scope.tableSorting,\n pageCount: scope.pageCount\n }\n scope.tableParamsChanged({ params: tableParamsSettings });\n\n }\n\n scope.buildColumns = function (datasource) {\n scope.columns = $filter('filter')(scope.allColumns, { visible: true });\n }\n\n var getColumns = function() {\n var columns = [];\n scope.columns.forEach((c) => {\n columns.push({\n field : c.field\n });\n })\n return columns;\n }\n\n scope.selectColumn = function (column) {\n column.visible = !column.visible;\n scope.columnListChanged({\n listColumns: {\n listColumns: scope.allColumns\n }\n });\n scope.buildColumns();\n }\n\n function isOverdue(date, implementedDate) {\n // Overdue check\n\n if (!date) return false;\n if (implementedDate) return false;\n var duration = moment.duration(moment().diff(moment(date)));\n var days = duration.asDays();\n if (days > 1) {\n return true;\n }\n return false;\n }\n\n // Event handling\n const getDataDebounce = debounce(() => {\n if (scope.tableParams) {\n scope.tableParams.reload();\n }\n }, 1000, false);\n scope.subscribe(\"ImprovementTitleChanged\", function (improvementTitle) {\n refreshIfExists(improvementTitle.suggestionId);\n });\n scope.subscribe(\"ImprovementResponsibleChanged\", function (improvementResponsible) {\n refreshIfExists(improvementResponsible.suggestionId);\n });\n scope.subscribe(\"ImprovementUpdated\", function (suggestion) {\n refreshIfExists(suggestion.id);\n });\n scope.subscribe(\"NewImprovement\", function (suggestion) {\n getDataDebounce();\n });\n\n scope.subscribe(\"ImprovementChangedStatus\", async function (status) {\n refreshIfExists(status.suggestionId);\n });\n\n scope.subscribe(\"ImprovementPriorityChanged\", function (priority) {\n refreshIfExists(priority.suggestionId);\n });\n\n scope.subscribe(\"ImprovementDeleted\", function (suggestion) {\n refreshIfExists(suggestion.suggestionId);\n });\n\n var refreshIfExists = function(suggestionId) {\n var isItemInList = scope.tableParams.data.find((item) => item.id == suggestionId);\n if (isItemInList) getDataDebounce();\n }\n\n }\n\n }\n }]);\n\n\n","import { cloneDeep } from \"lodash\"\nexport function translateOldImprovementSettings(settings, currentUserId, dueDate) {\n\n if (!settings)\n return {}\n \n \n\n // old filter had not the filter dimention\n if (Array.isArray(settings)){\n let converted = {\n filter: []\n };\n converted.filter = cloneDeep(settings);\n return converted\n } else if(!settings.filter) {\n let converted = {\n filter: []\n };\n\n // asset -> assetId\n if (settings.asset && Array.isArray(settings.asset)) {\n const itemFilter = generateItemFilter(\"assetId\", settings.asset)\n converted.filter.push(itemFilter)\n }\n // category -> categoryId\n if (settings.category && Array.isArray(settings.category)) {\n const itemFilter = generateItemFilter(\"categoryId\", settings.category)\n converted.filter.push(itemFilter)\n }\n\n // project -> projectId\n if (settings.project && Array.isArray(settings.project)) {\n const itemFilter = generateItemFilter(\"projectId\", settings.project)\n converted.filter.push(itemFilter)\n }\n // priority -> priority\n if (settings.priority && Array.isArray(settings.priority)) {\n const itemFilter = generateItemFilter(\"priority\", settings.priority)\n converted.filter.push(itemFilter)\n }\n // status -> status\n if (settings.status && Array.isArray(settings.status)) {\n const itemFilter = generateItemFilter(\"status\", settings.status)\n converted.filter.push(itemFilter)\n }\n // mySuggestion -> suggestedByUserId\n if (settings.myRegistration) {\n const itemFilter = generateItemFilter(\"suggestedByUserId\", [currentUserId])\n converted.filter.push(itemFilter)\n }\n //myResponsible -> mySuggestionFilterActive\n if (settings.myResponsible) {\n const itemFilter = generateItemFilter(\"responsibleUserId\", [currentUserId])\n converted.filter.push(itemFilter)\n }\n\n // overdueFilterActive\n if (settings.overdueFilterActive) {\n const dueDateFilter = {\n sourceColumn: \"dueDate\",\n operator: \"LessThanDate\",\n items: [dueDate]\n }\n converted.filter.push(dueDateFilter)\n const statusImplementedFilter = {\n sourceColumn: \"statusImplementedDate\",\n operator: \"IsNull\",\n items: []\n }\n converted.filter.push(statusImplementedFilter)\n }\n return converted;\n\n // timeframe \n /*if (settings.filter.timeframe) {\n converted.timePeriod = {\n timeframe: settings.filter.timeframe,\n period: settings.filter.timePeriod\n }\n }*/\n } else {\n return settings //cloneDeep(settings)\n }\n \n}\n\nfunction generateItemFilter(sourceColumn, items) {\n if (!items || !Array.isArray(items) || items.length === 0)\n return null\n \n let itemFilter = {\n sourceColumn: sourceColumn,\n operator: \"InList\",\n items: []\n }\n\n itemFilter.items = items\n return itemFilter\n}","import * as dragula from \"dragula\"\nimport { translateLabelInstant } from \"@common/services/language/DigiLeanLang\"\nimport { translateOldImprovementSettings } from \"@common/shared/settingsTranslatorImprovement\"\nimport * as employeeService from \"@common/services/employeeService\"\n\nangular\n .module('DigiLean')\n .directive('ongoingImprovement', ['$stateParams', '$filter', '$uibModal', 'suggestionService', 'debounce', 'authService',\n function ($stateParams, $filter, $uibModal, suggestionService, debounce, authService) {\n return {\n templateUrl: 'ongoingImprovement.html',\n restrict: 'E',\n scope: {\n 'context': '@',\n 'viewMode': '@',\n 'appTitle': '@',\n 'appTheme': ' 0;\n }\n\n scope.timePeriod = null;\n scope.isSettingsLoaded = false;\n\n // Kanban column options\n const toggleAllKanbanColumns = function (visible) {\n scope.showNewColumn = visible;\n scope.showPlannedColumn = visible;\n scope.ShowInProgressColumn = visible;\n scope.showImplementedColumn = visible;\n scope.showEvaluatedColumn = visible;\n }\n toggleAllKanbanColumns(false); // Default hidden untill filter resolves.\n\n // default timeperiod\n var timeSettings = {\n timeframe: \"30\",\n useDefaultTimeframes: true,\n timeframes: [],\n period: null,\n getTimePeriod: function () {\n return {\n useDefaultTimeframes: timeSettings.useDefaultTimeframes,\n timeframes: timeSettings.timeframes,\n timeframe: timeSettings.timeframe,\n period: timeSettings.period\n }\n },\n setTimePeriod: function (timeframe, period) {\n timeSettings.timeframe = timeframe;\n timeSettings.period = period;\n // debounce, to make sure not starting loading several timeframes.\n scope.options = {\n timePeriod: timeSettings.getTimePeriod()\n }\n }\n }\n\n scope.setTimePeriodDebounced = debounce(timeSettings.setTimePeriod, 100, false);\n // Default options\n scope.setTimePeriodDebounced(timeSettings.timeframe, timeSettings.period);\n\n scope.periodChangedHandler = function (timePeriod) {\n if (scope.timePeriod && timePeriod.period\n && scope.timePeriod.from === timePeriod.period.from\n && scope.timePeriod.to === timePeriod.period.to) {\n return;\n }\n scope.timePeriod = timePeriod;\n getDataDebounce();\n scope.settingsChanged();\n };\n\n scope.selectColumn = function (column) {\n column.visible = !column.visible;\n scope.listColumns = scope.allColumns;\n setFilterOptions();\n scope.settingsChanged();\n }\n\n scope.columnListChangeHandler = function (listColumns) {\n if (listColumns) {\n scope.listColumns = listColumns.listColumns;\n }\n scope.settingsChanged();\n }\n\n // ViewMode\n scope.toggleViewMode = function (viewMode) {\n scope.viewMode = viewMode;\n scope.settingsChanged();\n }\n\n // Title\n scope.$watch('appTitle', function (title) {\n if (title) {\n scope.title = title;\n }\n });\n // Theme\n scope.$watch('appTheme', function (theme) {\n if (theme) {\n scope.theme = theme;\n }\n });\n\n // /* FILTER * /;\n scope.filter = null;\n\n var userid = authService.getCurrentUser().userId\n var dueDate = moment().subtract(1, 'days');\n\n scope.$watch('context', function (context) {\n if (context == \"standAlone\") {\n employeeService.getUserPreference(\"ImprovementOngoingFilter\").then(function (filterpreferences) {\n if (filterpreferences && filterpreferences.value) {\n var userSettings = filterpreferences.value;\n // assign settings\n // Check to see if the settings are old, old settings do not have viewMode\n if (!userSettings.viewMode) {\n if (userSettings.timePeriod) {\n scope.settings = {\n filter: userSettings,\n timePeriod: {\n timeframe: userSettings.timeframe,\n period: userSettings.timePeriod\n }\n }\n } else {\n scope.settings = {\n filter: userSettings\n }\n }\n } else {\n scope.settings = userSettings;\n if (userSettings.viewMode && userSettings.viewMode == \"List\") {\n scope.viewMode = userSettings.viewMode;\n }\n }\n\n scope.settings = translateOldImprovementSettings(scope.settings, userid, dueDate)\n }\n });\n }\n });\n\n scope.$watch('settings', function (settings) {\n // Apply other settings\n scope.isSettingsLoaded = true;\n if (settings) {\n settings = translateOldImprovementSettings(settings, userid, dueDate);\n\n if (settings.title) {\n scope.title = settings.title;\n }\n if (settings.theme) {\n scope.theme = settings.theme;\n }\n if (settings.filter) {\n scope.filter = settings.filter;\n }\n if (settings.sorting) {\n sorting = settings.sorting;\n }\n if (settings.listColumns) {\n scope.listColumns = settings.listColumns;\n scope.listColumns.forEach((c) => {\n var column = $filter('filter')(scope.allColumns, { field: c.field }, true);\n if (column && column.length >= 0) {\n column[0].visible = c.visible;\n }\n })\n }\n\n if (settings.timePeriod) {\n scope.setTimePeriodDebounced(settings.timePeriod.timeframe, settings.timePeriod.period);\n }\n }\n });\n\n var setFilterOptions = function () {\n scope.filterWithTimePeriod = {\n filter: scope.filter,\n timePeriod: scope.timePeriod.period,\n listColumns: scope.listColumns,\n sorting: sorting\n }\n }\n scope.tableParamsChanged = function (params) {\n // When sorting or page size has changed in List\n sorting = params.sorting;\n scope.settingsChanged();\n }\n\n scope.settingsChanged = function () {\n if (!scope.isSettingsLoaded) return;\n // Raise settings changeHandler\n var appSettings = {\n filter: scope.filter,\n viewMode: scope.viewMode,\n listColumns: scope.listColumns,\n sorting: sorting,\n timePeriod: {\n period: scope.timePeriod.period,\n timeframe: scope.timePeriod.timeframe\n }\n }\n if (scope.context == \"app\" && scope.settingsChangedHandler) {\n\n scope.settingsChangedHandler({ settings: appSettings });\n }\n if (scope.context == \"standAlone\" && scope.isSettingsLoaded) {\n // Handle setting internally\n employeeService.updateUserPreference(\"ImprovementOngoingFilter\", appSettings).then(function () {\n\n });\n }\n }\n\n scope.filterChanged = function (filter) {\n scope.filter = filter;\n getDataDebounce();\n // Raise settings changed event\n scope.settingsChanged();\n };\n\n function resetData() {\n scope.data = {\n new: [],\n planned: [],\n progress: [],\n implemented: [],\n evaluated: []\n }\n }\n resetData()\n\n const getdata = async () => {\n if (!scope.timePeriod) return;\n let promises = []\n setFilterOptions();\n getTotalNumberOfImprovements();\n toggleKanbanColumnsBasedOnFilter();\n\n if (scope.showNewColumn) promises.push(getValuesByStatus(\"Suggested\").then(d => { scope.data.new = d; return d.total }))\n if (scope.showPlannedColumn) promises.push(getValuesByStatus(\"Planned\").then(d => { scope.data.planned = d; return d.total }))\n if (scope.ShowInProgressColumn) promises.push(getValuesByStatus(\"InProgress\").then(d => { scope.data.progress = d; return d.total }))\n if (scope.showImplementedColumn) promises.push(getValuesByStatus(\"Implemented\").then(d => { scope.data.implemented = d; return d.total }))\n if (scope.showEvaluatedColumn) promises.push(getValuesByStatus(\"Evaluated\").then(d => { scope.data.evaluated = d; return d.total }))\n Promise.all(promises).then(all => {\n scope.totalItems = all.reduce((a, b) => a + b, 0);\n });\n }\n\n const toggleKanbanColumnsBasedOnFilter = function () {\n if (scope.filter && Array.isArray(scope.filter)) {\n // Check if filter on status\n const found = scope.filter.find((item) => item.sourceColumn == 'status')\n if (found) {\n scope.showNewColumn = found.items.indexOf(\"Suggested\") > -1;\n scope.showPlannedColumn = found.items.indexOf(\"Planned\") > -1\n scope.ShowInProgressColumn = found.items.indexOf(\"InProgress\") > -1\n scope.showImplementedColumn = found.items.indexOf(\"Implemented\") > -1\n scope.showEvaluatedColumn = found.items.indexOf(\"Evaluated\") > -1\n return;\n }\n }\n toggleAllKanbanColumns(true);\n }\n\n const getDataDebounce = debounce(getdata, 500, false);\n\n const getValuesByStatus = function (status) {\n\n let filters = []\n if (scope.filter && Array.isArray(scope.filter)) {\n // copy elements to local filter by spread operator ...\n filters = [...scope.filter]\n }\n\n const statusFilter = {\n sourceColumn: \"status\",\n operator: \"InList\",\n items: [status]\n }\n filters.push(statusFilter)\n\n\n const sorting = [{\n direction: \"desc\",\n property: \"lastModified\"\n }]\n const tableParams = {\n page: pageNum,\n count: pageSize,\n sorting,\n filters\n }\n\n const filterModel = {\n tableParams,\n timePeriod: scope.timePeriod.period,\n }\n return suggestionService().getOngoingFiltered(filterModel).then(function (data) {\n if(status !== \"Implemented\" && status !== \"Evaluated\") {\n data.values.forEach(value => {\n value.dateStyleClass = getDateStyle(value.dueDate)\n })\n }\n return data\n })\n }\n\n /* Paging */\n scope.pageNumChanged = function ($event) {\n pageNum = $event.detail.pageNum ? $event.detail.pageNum : 1\n getDataDebounce()\n }\n scope.pageSizeChanged = function ($event) {\n pageSize = $event.detail.pageSize ? $event.detail.pageSize : 10\n getDataDebounce()\n }\n\n function getTotalNumberOfImprovements() {\n suggestionService().getTotalNumberOfImprovements(false).then(function (count) {\n scope.totalNumberOfImprovements = count;\n });\n }\n\n\n /* Drag and drop */\n let drake;\n scope.columnLoaded = function (column) {\n if (drake && drake.containers && column)\n drake.containers.push(column)\n }\n function setupDragula() {\n drake = dragula({ revertOnSpill: true }) // append containers\n drake.on(\"over\", (el, container) => {\n container.classList.add(\"hover\");\n });\n drake.on(\"out\", (el, container) => {\n container.classList.remove(\"hover\");\n });\n drake.on(\"drop\", (el, target, source, sibling) => {\n const fromStatus = source.dataset.status\n const toStatus = target.dataset.status\n const id = el.dataset.id\n if (fromStatus == toStatus)\n return false\n\n const changedStatus = {\n suggestionId: id,\n status: toStatus\n }\n draggedSuggestionId = id;\n suggestionService().updateStatus(changedStatus).then(() => {\n }, (err) => {\n source.appendChild(el)\n return\n })\n })\n }\n\n setupDragula();\n\n scope.openSuggestion = function (suggestionInfo) {\n suggestionService().get(suggestionInfo.id).then(function (suggestion) {\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n templateUrl: 'fullImprovementInfoForm.html',\n controller: 'fullImprovementModalController',\n windowClass: 'fullSuggestion-modal-window',\n resolve: {\n suggestion: function () {\n return suggestion;\n },\n activeTab: function () {\n return \"Info\";\n }\n }\n });;\n });\n }\n\n if ($stateParams.id && scope.context != 'app') {\n var suggestion = {\n id: parseInt($stateParams.id)\n }\n scope.openSuggestion(suggestion);\n }\n\n function getDateStyle(date) {\n if (!date) return \"\";\n // Overdue check\n\n var overdue = \"\";\n var duration = moment.duration(moment().diff(moment(date)));\n var days = duration.asDays();\n if (days > 1) {\n overdue = \"overdue\";\n }\n return overdue;\n }\n\n\n /* EVENT HANDLE CODE */\n var updateSuggestion = function (suggestionId) {\n if (scope.showNewColumn) checkAndReplace(scope.data.new.values, suggestionId)\n if (scope.showPlannedColumn) checkAndReplace(scope.data.planned.values, suggestionId)\n if (scope.ShowInProgressColumn) checkAndReplace(scope.data.progress.values, suggestionId)\n if (scope.showImplementedColumn) checkAndReplace(scope.data.implemented.values, suggestionId)\n if (scope.showEvaluatedColumn) checkAndReplace(scope.data.evaluated.values, suggestionId)\n }\n\n var getListByStatus = function (status) {\n switch (status) {\n case \"Suggested\":\n return scope.data.new.values;\n case \"Planned\":\n return scope.data.planned.values;\n case \"InProgress\":\n return scope.data.progress.values;\n case \"Implemented\":\n return scope.data.implemented.values;\n case \"Evaluated\":\n return scope.data.evaluated.values;\n default:\n return [];\n }\n }\n\n\n function checkAndReplace(datalist, suggestionId) {\n const suggestion = datalist.find(s => s.id == suggestionId)\n if (suggestion)\n replaceSuggestion(datalist, suggestionId, suggestion)\n }\n\n async function replaceSuggestion(list, suggestionId, existingSuggestion) {\n const dbSuggestion = await getSuggestionDb(suggestionId)\n if (dbSuggestion.attachments && dbSuggestion.attachments.length > 0) {\n dbSuggestion.firstAttachmentFileInfo = dbSuggestion.attachments[dbSuggestion.attachments.length - 1].fileInfo;\n }\n const index = list.indexOf(existingSuggestion)\n list.splice(index, 1, dbSuggestion)\n dbSuggestion.dateStyleClass = getDateStyle(dbSuggestion.dueDate)\n dbSuggestion.cssState = \"animated bounce\"\n removeAnmiation(dbSuggestion)\n }\n\n async function getSuggestionDb(id) {\n const dbSuggestion = await suggestionService().get(id)\n setViewFieldsFromDb(dbSuggestion)\n return dbSuggestion\n }\n\n function setViewFieldsFromDb(suggestion) {\n if (suggestion.comments && suggestion.comments.length > 0)\n suggestion.commentCount = suggestion.comments.length\n if (suggestion.asset)\n suggestion.assetName = suggestion.asset.name\n }\n\n function removeFromList(list, suggestionId) {\n const currentSuggestion = list.find(l => l.id == suggestionId)\n if (!currentSuggestion)\n return null;\n\n const index = list.indexOf(currentSuggestion)\n list.splice(index, 1)\n return currentSuggestion;\n }\n\n function removeAnmiation(suggestion) {\n setTimeout(function () {\n suggestion.cssState = \"\"\n }, 1000)\n }\n\n scope.subscribe(\"ImprovementTitleChanged\", function (improvementTitle) {\n updateSuggestion(improvementTitle.suggestionId);\n });\n scope.subscribe(\"ImprovementResponsibleChanged\", function (improvementResponsible) {\n updateSuggestion(improvementResponsible.suggestionId);\n });\n scope.subscribe(\"ImprovementUpdated\", function (suggestion) {\n updateSuggestion(suggestion.id);\n });\n scope.subscribe(\"NewImprovement\", function (suggestion) {\n getDataDebounce();\n });\n\n scope.subscribe(\"ImprovementChangedStatus\", function (status) {\n updateStatus(status);\n });\n\n var updateStatus = function(status) {\n // First check if suggestion already in correc status, then no need to remove\n var list = getListByStatus(status.status);\n if (list.find(s => s.id == status.suggestionId)) return;\n\n if (scope.showNewColumn) {\n var suggestion = removeFromList(scope.data.new.values, status.suggestionId);\n if (suggestion) addSuggestionToStatusColumn(suggestion, status.status);\n } \n if (scope.showPlannedColumn) {\n var suggestion = removeFromList(scope.data.planned.values, status.suggestionId);\n if (suggestion) addSuggestionToStatusColumn(suggestion, status.status);\n } \n if (scope.ShowInProgressColumn) {\n var suggestion = removeFromList(scope.data.progress.values, status.suggestionId);\n if (suggestion) addSuggestionToStatusColumn(suggestion, status.status);\n } \n if (scope.showImplementedColumn) {\n var suggestion = removeFromList(scope.data.implemented.values, status.suggestionId);\n if (suggestion) addSuggestionToStatusColumn(suggestion, status.status);\n } \n if (scope.showEvaluatedColumn) {\n var suggestion = removeFromList(scope.data.evaluated.values, status.suggestionId);\n if (suggestion) addSuggestionToStatusColumn(suggestion, status.status);\n } \n }\n\n var addSuggestionToStatusColumn = function(suggestion, status) {\n suggestion.status = status;\n suggestion.cssState = \"animated bounce\"\n var list = getListByStatus(status);\n // Need to delay unshift to avoid updates issues in the list.\n setTimeout(() => {\n list.unshift(suggestion);\n removeAnmiation(suggestion)\n }, 500);\n \n }\n\n scope.subscribe(\"ImprovementPriorityChanged\", function (priority) {\n updateSuggestion(priority.suggestionId);\n });\n\n scope.subscribe(\"ImprovementDeleted\", function (suggestion) {\n if (scope.showNewColumn) removeFromList(scope.data.new.values, suggestion.suggestionId)\n if (scope.showPlannedColumn) removeFromList(scope.data.planned.values, suggestion.suggestionId)\n if (scope.ShowInProgressColumn) removeFromList(scope.data.progress.values, suggestion.suggestionId)\n if (scope.showImplementedColumn) removeFromList(scope.data.implemented.values, suggestion.suggestionId)\n if (scope.showEvaluatedColumn) removeFromList(scope.data.evaluated.values, suggestion.suggestionId)\n\n });\n\n\n scope.newItem = function () {\n const modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'newSuggestionForm.html',\n controller: 'newSuggestionModalController',\n resolve: {\n suggestion: function () {\n return {\n id: 0,\n title: \"\",\n text: \"\",\n suggestedBy: \"\",\n suggestionDate: new Date(),\n showComments: false,\n likes: [],\n comments: [],\n }\n }\n }\n })\n\n modalInstance.result.then(function (suggestion) {\n suggestionService().addSuggestion(suggestion)\n }, () => { })\n }\n }\n };\n }]);\n\n\n","import { getUserProfile } from \"@common/stores/userStore\"\n\nangular.module('DigiLean').factory('userProvider', [\n function () {\n function userProvider() {\n return {\n getUserLanguage: function () { \n let language = \"en\"\n const userprofile = getUserProfile()\n if (userprofile.preferredLanguage)\n language = userprofile.preferredLanguage\n return language;\n },\n };\n }\n return userProvider;\n }]);\n\n","import * as assetService from \"@common/services/assetService\"\n\nangular\n .module('DigiLean')\n .controller(\"deviationListModalController\", ['$scope', '$translate','$filter', '$uibModalInstance', '$uibModal', 'deviationService', 'authService', 'options',\n function ($scope, $translate, $filter, $uibModalInstance, $uibModal, deviationService, authService, options) {\n\n $scope.options = options;\n $scope.deviations = [];\n $scope.isAdmin = authService.hasRole(\"Admin\") || authService.hasRole(\"DeviationAdmin\");\n \n if(options && options.timePeriod){\n deviationService().getDeviationsForPeriod($scope.options).then(function (deviations) {\n $scope.deviations = deviations; \n setDateStyleToDeviations($scope.deviations);\n assetService.getAllAssets().then(function (assets) {\n $scope.assets = assets;\n \n for (var i = 0; i < $scope.deviations.length; i++) {\n \n var a = $filter('filter')($scope.assets, { id: $scope.deviations[i].followUpAssetId }, true);\n if (a && a.length > 0) {\n $scope.deviations[i].followUpGroup = a[0].name;\n }\n }\n \n }); \n });\n } else {\n deviationService().getDeviationsByFilter($scope.options).then(function (deviations) {\n $scope.deviations = deviations; \n setDateStyleToDeviations($scope.deviations);\n assetService.getList().then(function (assets) {\n $scope.assets = assets;\n\n for (var i = 0; i < $scope.deviations.length; i++) {\n \n var a = $filter('filter')($scope.assets, { id: $scope.deviations[i].followUpAssetId }, true);\n if (a && a.length > 0) {\n $scope.deviations[i].followUpGroup = a[0].name;\n }\n }\n \n }); \n });\n }\n\n $scope.close = function () {\n $uibModalInstance.dismiss('cancel');\n }\n\n $scope.openDeviation = function (deviation) {\n // if($scope.isAdmin){\n deviationService().get(deviation.id).then(function (deviation) {\n \n var modalInstance = $uibModal.open({ backdrop: 'static',\n templateUrl: 'fullDeviation.html',\n controller: 'fullDeviationController',\n windowClass: 'full-screen',\n resolve: {\n deviation: function () {\n return deviation;\n },\n activeTab: function () {\n return \"Info\";\n }\n }\n });\n },\n function (response) {\n if (response.status === 404){\n swal({\n title: $translate.instant(\"COMMON_NO_ACCESS\"),\n text: $translate.instant(\"COMMON_REQUIRED_GROUP_MEMBERSHIP\"),\n icon: \"warning\",\n buttons: [$translate.instant(\"COMMON_OK\")],\n dangerMode: true,\n closeOnConfirm: true,\n closeOnClickOutside: true,\n closeOnEsc: true\n });\n }\n });/*\n } else {\n swal({\n title: $translate.instant(\"COMMON_NO_ACCESS\"),\n text: $translate.instant(\"COMMON_REQUIRED_GROUP_MEMBERSHIP\"),\n icon: \"warning\",\n buttons: [$translate.instant(\"COMMON_OK\")],\n dangerMode: true,\n closeOnConfirm: true,\n closeOnClickOutside: true,\n closeOnEsc: true\n });\n }*/\n }\n\n function setDateStyleToDeviations(items){\n items.forEach(function (item) {\n if(item.status < 20 ){\n item.dateStyleClass = getDateStyle(item.dueDate);\n }\n });\n }\n\n function getDateStyle(date) {\n if (!date) return \"\";\n // Overdue check\n\n var overdue = \"\";\n var duration = moment.duration(moment().diff(moment(date)));\n var days = duration.asDays();\n if (days > 1) {\n overdue = \"overdue\";\n }\n return overdue;\n }\n }]);","import * as assetService from \"@common/services/assetService\"\n\nangular\n .module('DigiLean')\n .directive(\"deviationFilter\", ['$filter', '$translate', 'navigationService', 'areaService', 'projectService', 'deviationService', 'authService',\n function ($filter, $translate, navigationService, areaService, projectService, deviationService, authService) {\n return {\n templateUrl: 'deviationFilter.html',\n restrict: 'E',\n scope: {\n 'filter': '<',\n 'filterChangedHandler': '&',\n 'new': '=',\n 'inprogress': '=',\n 'implemented': '=',\n 'rejected': '=',\n 'timePeriod': '=',\n 'showArchive': '='\n },\n link: function (scope, elem, attrs) {\n scope.isFilterActive = false;\n scope.consequenceFilterActive = false;\n scope.myResponsibleFilterActive = false;\n scope.myRegistrationFilterActive = false;\n scope.assets = [];\n scope.categories = [];\n scope.projects = [];\n scope.areas = [];\n scope.deviationtypes = [];\n\n scope.hasProjectModule = navigationService().hasModule(\"PROJECT\");\n scope.subscribe(\"UserAuthenticatedAndReady\", function (profile) {\n scope.hasProjectModule = navigationService().hasModule(\"PROJECT\");\n });\n\n scope.$watch('filter', function (filter) {\n if (filter) {\n scope.filterPreferences = filter;\n filterByUserPreference();\n }\n });\n scope.subscribe(\"DeviationArchived\", function (deviation) {\n var existingDeviation = getExistingDeviation(deviation.id);\n if (existingDeviation) {\n existingDeviation.archivedDate = deviation.archivedDate; \n filter();\n }\n });\n \n scope.subscribe(\"DeviationUnArchived\", function (deviation) {\n var existingDeviation = getExistingDeviation(deviation.id);\n if (existingDeviation) {\n existingDeviation.archivedDate = null;\n filter();\n }\n });\n\n scope.subscribe(\"DeviationCreated\", function (deviation) {\n var isPartOfContainer = $filter('filter')(scope.new.list, { id: deviation.id });\n if (isPartOfContainer.length === 0) {\n deviationService().get(deviation.id, false).then(function (deviation) {\n deviation.cssState = \"animated slideInDown\"; // Add animation\n if (deviation.status == 20) {\n var isPartOfImpContainer = $filter('filter')(scope.implemented.list, { id: deviation.id });\n if (isPartOfImpContainer.length === 0) {\n scope.implemented.list.unshift(deviation);\n }\n } else {\n scope.new.list.unshift(deviation);\n }\n filter();\n removeAnmiation(deviation);\n });\n } else {\n filter();\n }\n });\n\n function removeAnmiation(deviation) {\n setTimeout(function () {\n deviation.cssState = \"\";\n }, 1000);\n }\n \n scope.toggleArchive = function () {\n filter();\n }\n function updateFilterPreferences() {\n scope.filterChangedHandler({ filter: scope.filterPreferences });\n }\n\n scope.severityOptions = [\n {\n severityDB: 1,\n translated: $translate.instant('COMMON_LOW'),\n cssClass: \"low-severity-button\",\n filteredAndInResultList: false\n }, {\n severityDB: 2,\n translated: $translate.instant('COMMON_MEDIUM'),\n cssClass: \"medium-severity-button\",\n filteredAndInResultList: false\n }, {\n severityDB: 3,\n translated: $translate.instant('COMMON_HIGH'),\n cssClass: \"high-severity-button\",\n filteredAndInResultList: false\n }, {\n severityDB: 0,\n translated: $translate.instant('COMMON_NOT_SPECIFIED'),\n cssClass: \"btn-default\",\n filteredAndInResultList: false\n }\n ];\n\n scope.$watch('new', function () {\n if (scope.new) {\n loadAssets();\n loadCategories();\n loadProjects();\n loadAreas();\n loadDeviationTypes();\n }\n });\n\n scope.$watch('timePeriod', function (value) {\n if (value) {\n getAllData();\n filterByUserPreference();\n }\n });\n\n\n\n function filterByUserPreference() {\n if (scope.filterPreferences) {\n if (scope.filterPreferences.severity) {\n setSeverityFilterPreferences(scope.filterPreferences.severity);\n }\n if (scope.filterPreferences.archiveFilter) {\n setArchiveFilterPreferences(scope.filterPreferences.archiveFilter);\n }\n if (scope.filterPreferences.asset) {\n setAssetFilterPreferences(scope.filterPreferences.asset);\n }\n if (scope.filterPreferences.category) {\n setCategoryFilterPreferences(scope.filterPreferences.category);\n }\n if (scope.filterPreferences.deviationtype) {\n setDeviationTypeFilterPreferences(scope.filterPreferences.deviationtype);\n }\n if (scope.filterPreferences.area) {\n setAreaFilterPreferences(scope.filterPreferences.area);\n }\n if (scope.filterPreferences.project) {\n setProjectFilterPreferences(scope.filterPreferences.project);\n }\n if (scope.filterPreferences.myRegistration) {\n scope.myRegistrationFilterActive = true;\n }\n if (scope.filterPreferences.myResponsible) {\n scope.myResponsibleFilterActive = true;\n }\n if (scope.filterPreferences.consequence) {\n scope.consequenceFilterActive = true;\n }\n filter();\n }\n \n \n //});\n }\n\n function setSeverityFilterPreferences(preferences) {\n angular.forEach(preferences, function (filteredId) {\n for (var i = 0; i < scope.severityOptions.length; i++) {\n if (scope.severityOptions[i].severityDB === filteredId) {\n scope.severityOptions[i].filteredAndInResultList = true;\n break;\n }\n }\n });\n }\n function setArchiveFilterPreferences(preferences) {\n angular.forEach(preferences, function (option) {\n for (var i = 0; i < scope.archiveOptions.length; i++) {\n if (scope.archiveOptions[i].option === option.option) {\n scope.archiveOptions[i].isSelected = option.isSelected;\n break;\n }\n }\n });\n }\n function setDeviationTypeFilterPreferences(preferences) {\n angular.forEach(preferences, function (filteredTypeId) {\n for (var t = 0; t < scope.deviationtypes.length; t++) {\n if (scope.deviationtypes[t].id === filteredTypeId) {\n scope.deviationtypes[t].filteredAndInResultList = true;\n break;\n }\n }\n });\n }\n function setProjectFilterPreferences(preferences) {\n angular.forEach(preferences, function (projectId) {\n for (var t = 0; t < scope.projects.length; t++) {\n if (scope.projects[t].id === projectId) {\n scope.projects[t].filteredAndInResultList = true;\n break;\n }\n }\n });\n }\n function setAreaFilterPreferences(preferences) {\n angular.forEach(preferences, function (areaId) {\n for (var t = 0; t < scope.areas.length; t++) {\n if (scope.areas[t].id === areaId) {\n scope.areas[t].filteredAndInResultList = true;\n break;\n }\n }\n });\n }\n function setAssetFilterPreferences(preferences) {\n angular.forEach(preferences, function (filteredAssetId) {\n for (var a = 0; a < scope.assets.length; a++) {\n if (scope.assets[a].id === filteredAssetId) {\n scope.assets[a].filteredAndInResultList = true;\n break;\n }\n }\n });\n }\n function setCategoryFilterPreferences(preferences) {\n angular.forEach(preferences, function (filteredId) {\n for (var i = 0; i < scope.categories.length; i++) {\n if (scope.categories[i].id === filteredId) {\n scope.categories[i].filteredAndInResultList = true;\n break;\n }\n }\n });\n }\n function getData(deviationStatus) {\n deviationService().getListByStatus(deviationStatus.status, scope.timePeriod).then(function (result) {\n for (var s = 0; s < result.length; s++) {\n result[s].dateStyleClass = getDateStyle(result[s].dueDate);\n // result[s].unitLabel = unitService().getUnitLabel(result[s].unit);\n }\n deviationStatus.list = result;\n deviationStatus.filteredList = result;\n if (scope.isFilterActive) {\n filter();\n }\n });\n }\n\n\n function getAllData() {\n getData(scope.new);\n getData(scope.inprogress);\n getData(scope.implemented);\n getData(scope.rejected);\n }\n\n\n function getDateStyle(date) {\n if (!date) return \"\";\n // Overdue check\n var overdue = \"\";\n var duration = moment.duration(moment().diff(moment(date)));\n var days = duration.asDays();\n if (days > 1) {\n overdue = \"overdue\";\n }\n return overdue;\n }\n\n function loadAssets() {\n assetService.getAssetsWithDeviation().then(function (assets) {\n scope.assets = assets;\n resetAssetFilter();\n filterByUserPreference();\n });\n }\n function loadCategories() {\n deviationService().getProblemCategoriesWithDeviation().then(function (items) {\n scope.categories = items;\n resetCategoryFilter();\n filterByUserPreference();\n });\n }\n\n\n function loadProjects() {\n projectService().getProjectListWithDeviation().then(function (items) {\n scope.projects = items;\n resetProjectFilter();\n filterByUserPreference();\n });\n }\n function loadAreas() {\n areaService().getAreasWithDeviation().then(function (items) {\n scope.areas = items;\n resetAreaFilter()\n filterByUserPreference();\n });\n }\n\n function loadDeviationTypes() {\n deviationService().getDeviationTypes().then(function (types) {\n scope.deviationtypes = types;\n resetDeviationTypeFilter();\n filterByUserPreference();\n });\n\n }\n\n scope.toggleMyRegistrationFilter = function () {\n scope.myRegistrationFilterActive = !scope.myRegistrationFilterActive;\n if (scope.myRegistrationFilterActive) {\n if (scope.filterPreferences) {\n scope.filterPreferences.myRegistration = true;\n } else {\n scope.filterPreferences = {\n myRegistration: true\n };\n }\n } else { // remove from filter\n scope.filterPreferences.myRegistration = null;\n }\n filter();\n updateFilterPreferences();\n }\n\n scope.toggleMyResponsibleFilter = function () {\n scope.myResponsibleFilterActive = !scope.myResponsibleFilterActive;\n if (scope.myResponsibleFilterActive) {\n if (scope.filterPreferences) {\n scope.filterPreferences.myResponsible = true;\n } else {\n scope.filterPreferences = {\n myResponsible: true\n };\n }\n } else { // remove from filter\n scope.filterPreferences.myResponsible = null;\n }\n filter();\n updateFilterPreferences();\n }\n\n scope.toggleConsequenceFilter = function () {\n scope.consequenceFilterActive = !scope.consequenceFilterActive;\n if (scope.consequenceFilterActive) {\n if (scope.filterPreferences) {\n scope.filterPreferences.consequence = true;\n } else {\n scope.filterPreferences = {\n consequence: true\n };\n }\n } else { // remove from filter\n scope.filterPreferences.consequence = null;\n }\n filter();\n updateFilterPreferences();\n }\n\n \n\n function resetAssetFilter() {\n angular.forEach(scope.assets, function (asset) {\n asset.filteredAndInResultList = false;\n });\n }\n\n function resetDeviationTypeFilter() {\n angular.forEach(scope.deviationtypes, function (type) {\n type.filteredAndInResultList = false;\n });\n }\n\n function resetProjectFilter() {\n angular.forEach(scope.projects, function (project) {\n project.filteredAndInResultList = false;\n });\n }\n function resetAreaFilter() {\n angular.forEach(scope.areas, function (area) {\n area.filteredAndInResultList = false;\n });\n }\n function resetCategoryFilter() {\n angular.forEach(scope.categories, function (category) {\n category.filteredAndInResultList = false;\n });\n }\n function resetSeverityFilter() {\n angular.forEach(scope.severityOptions, function (item) {\n item.filteredAndInResultList = false;\n });\n }\n function resetArchiveFilter() {\n scope.showArchive = false;\n }\n scope.filterSeverity = function (severity) {\n severity.filteredAndInResultList = !severity.filteredAndInResultList;\n if (severity.filteredAndInResultList) {\n if (scope.filterPreferences && scope.filterPreferences.severity) {\n scope.filterPreferences.severity.push(severity.severityDB);\n } else {\n if (scope.filterPreferences) {\n scope.filterPreferences.severity = [severity.severityDB];\n } else {\n scope.filterPreferences = {\n severity: [severity.severityDB]\n };\n }\n scope.filterPreferences.severity = [severity.severityDB];\n }\n } else { // remove from filter\n if (scope.filterPreferences.severity) {\n var index = scope.filterPreferences.severity.indexOf(severity.severityDB);\n scope.filterPreferences.severity.splice(index, 1);\n }\n }\n filter();\n updateFilterPreferences();\n }\n\n scope.filterDeviationType = function (deviationtype) {\n deviationtype.filteredAndInResultList = !deviationtype.filteredAndInResultList;\n if (deviationtype.filteredAndInResultList) {\n if (scope.filterPreferences && scope.filterPreferences.deviationtype) {\n scope.filterPreferences.deviationtype.push(deviationtype.id);\n } else {\n if (scope.filterPreferences) {\n scope.filterPreferences.deviationtype = [deviationtype.id];\n } else {\n scope.filterPreferences = {\n deviationtype: [deviationtype.id]\n };\n }\n scope.filterPreferences.deviationtype = [deviationtype.id];\n }\n } else { // remove from filter\n if (scope.filterPreferences.deviationtype) {\n var index = scope.filterPreferences.deviationtype.indexOf(deviationtype.id);\n scope.filterPreferences.deviationtype.splice(index, 1);\n }\n }\n updateFilterPreferences();\n filter();\n }\n scope.filterArea = function (area) {\n area.filteredAndInResultList = !area.filteredAndInResultList;\n if (area.filteredAndInResultList) {\n if (scope.filterPreferences && scope.filterPreferences.area) {\n scope.filterPreferences.area.push(area.id);\n } else {\n if (scope.filterPreferences) {\n scope.filterPreferences.area = [area.id];\n } else {\n scope.filterPreferences = {\n area: [area.id]\n };\n }\n scope.filterPreferences.area = [area.id];\n }\n } else { // remove from filter\n if (scope.filterPreferences.area) {\n var index = scope.filterPreferences.area.indexOf(area.id);\n scope.filterPreferences.area.splice(index, 1);\n }\n }\n updateFilterPreferences();\n filter();\n }\n scope.filterProject = function (project) {\n project.filteredAndInResultList = !project.filteredAndInResultList;\n if (project.filteredAndInResultList) {\n if (scope.filterPreferences && scope.filterPreferences.project) {\n scope.filterPreferences.project.push(project.id);\n } else {\n if (scope.filterPreferences) {\n scope.filterPreferences.project = [project.id];\n } else {\n scope.filterPreferences = {\n project: [project.id]\n };\n }\n scope.filterPreferences.project = [project.id];\n }\n } else { // remove from filter\n if (scope.filterPreferences.project) {\n var index = scope.filterPreferences.project.indexOf(project.id);\n scope.filterPreferences.project.splice(index, 1);\n }\n }\n updateFilterPreferences();\n filter();\n }\n scope.filterAsset = function (asset) {\n asset.filteredAndInResultList = !asset.filteredAndInResultList;\n if (asset.filteredAndInResultList) {\n if (scope.filterPreferences && scope.filterPreferences.asset) {\n scope.filterPreferences.asset.push(asset.id);\n } else {\n if (scope.filterPreferences) {\n scope.filterPreferences.asset = [asset.id];\n } else {\n scope.filterPreferences = {\n asset: [asset.id]\n };\n }\n scope.filterPreferences.asset = [asset.id];\n }\n } else { // remove from filter\n if (scope.filterPreferences.asset) {\n var index = scope.filterPreferences.asset.indexOf(asset.id);\n scope.filterPreferences.asset.splice(index, 1);\n }\n }\n updateFilterPreferences();\n filter();\n }\n scope.filterCategory = function (category) {\n category.filteredAndInResultList = !category.filteredAndInResultList;\n if (category.filteredAndInResultList) {\n if (scope.filterPreferences && scope.filterPreferences.category) {\n scope.filterPreferences.category.push(category.id);\n } else {\n if (scope.filterPreferences) {\n scope.filterPreferences.category = [category.id];\n } else {\n scope.filterPreferences = {\n category: [category.id]\n };\n }\n scope.filterPreferences.category = [category.id];\n }\n } else { // remove from filter\n if (scope.filterPreferences.category) {\n var index = scope.filterPreferences.category.indexOf(category.id);\n scope.filterPreferences.category.splice(index, 1);\n }\n }\n updateFilterPreferences();\n filter();\n }\n\n function updateFilterPreferences() {\n scope.filterChangedHandler({ filter: scope.filterPreferences });\n }\n\n\n scope.removeFilter = function () {\n resetAssetFilter();\n resetCategoryFilter();\n resetSeverityFilter();\n resetArchiveFilter();\n resetProjectFilter();\n resetAreaFilter();\n resetDeviationTypeFilter();\n scope.myResponsibleFilterActive = false;\n scope.myRegistrationFilterActive = false;\n scope.consequenceFilterActive = false;\n filter();\n resetFilterPreferences();\n };\n\n function resetFilterPreferences() {\n scope.filterPreferences = null;\n updateFilterPreferences();\n }\n\n function filter() {\n scope.new.filteredList = scope.new.list;\n scope.inprogress.filteredList = scope.inprogress.list;\n scope.implemented.filteredList = scope.implemented.list;\n scope.rejected.filteredList = scope.rejected.list;\n\n var assetsToShow = $filter('filter')(scope.assets, { filteredAndInResultList: true }, true);\n if (assetsToShow.length > 0) {\n scope.isFilterActive = true;\n scope.new.filteredList = getFilteredListByAssets(scope.new.filteredList, assetsToShow);\n scope.inprogress.filteredList = getFilteredListByAssets(scope.inprogress.filteredList, assetsToShow);\n scope.implemented.filteredList = getFilteredListByAssets(scope.implemented.filteredList, assetsToShow);\n scope.rejected.filteredList = getFilteredListByAssets(scope.rejected.filteredList, assetsToShow);\n }\n\n var areasToShow = $filter('filter')(scope.areas, { filteredAndInResultList: true }, true);\n if (areasToShow.length > 0) {\n scope.isFilterActive = true;\n scope.new.filteredList = getFilteredListByAreas(scope.new.filteredList, areasToShow);\n scope.inprogress.filteredList = getFilteredListByAreas(scope.inprogress.filteredList, areasToShow);\n scope.implemented.filteredList = getFilteredListByAreas(scope.implemented.filteredList, areasToShow);\n scope.rejected.filteredList = getFilteredListByAreas(scope.rejected.filteredList, areasToShow);\n }\n\n var typesToShow = $filter('filter')(scope.deviationtypes, { filteredAndInResultList: true }, true);\n if (typesToShow.length > 0) {\n scope.isFilterActive = true;\n scope.new.filteredList = getFilteredListByDeviationTypes(scope.new.filteredList, typesToShow);\n scope.inprogress.filteredList = getFilteredListByDeviationTypes(scope.inprogress.filteredList, typesToShow);\n scope.implemented.filteredList = getFilteredListByDeviationTypes(scope.implemented.filteredList, typesToShow);\n scope.rejected.filteredList = getFilteredListByDeviationTypes(scope.rejected.filteredList, typesToShow);\n }\n\n var prjectsToShow = $filter('filter')(scope.projects, { filteredAndInResultList: true }, true);\n if (prjectsToShow.length > 0) {\n scope.isFilterActive = true;\n scope.new.filteredList = getFilteredListByProjects(scope.new.filteredList, prjectsToShow);\n scope.inprogress.filteredList = getFilteredListByProjects(scope.inprogress.filteredList, prjectsToShow);\n scope.implemented.filteredList = getFilteredListByProjects(scope.implemented.filteredList, prjectsToShow);\n scope.rejected.filteredList = getFilteredListByProjects(scope.rejected.filteredList, prjectsToShow);\n }\n\n var categoriesToShow = $filter('filter')(scope.categories, { filteredAndInResultList: true }, true);\n if (categoriesToShow.length > 0) {\n scope.isFilterActive = true;\n scope.new.filteredList = getFilteredListByCategories(scope.new.filteredList, categoriesToShow);\n scope.inprogress.filteredList = getFilteredListByCategories(scope.inprogress.filteredList, categoriesToShow);\n scope.implemented.filteredList = getFilteredListByCategories(scope.implemented.filteredList, categoriesToShow);\n scope.rejected.filteredList = getFilteredListByCategories(scope.rejected.filteredList, categoriesToShow);\n }\n\n var activeSeverityFilter = severityFilterActive();\n if (activeSeverityFilter.length > 0) {\n scope.isFilterActive = true;\n scope.new.filteredList = $filter('filter')(scope.new.filteredList, valueInList('severity', activeSeverityFilter));\n scope.inprogress.filteredList = $filter('filter')(scope.inprogress.filteredList, valueInList('severity', activeSeverityFilter));\n scope.implemented.filteredList = $filter('filter')(scope.implemented.filteredList, valueInList('severity', activeSeverityFilter));\n scope.rejected.filteredList = $filter('filter')(scope.rejected.filteredList, valueInList('severity', activeSeverityFilter));\n }\n\n\n scope.isFilterActive = true;\n scope.new.filteredList = getArchiveDateListByOptions(scope.new.filteredList);\n scope.inprogress.filteredList = getArchiveDateListByOptions(scope.inprogress.filteredList);\n scope.implemented.filteredList = getArchiveDateListByOptions(scope.implemented.filteredList);\n scope.rejected.filteredList = getArchiveDateListByOptions(scope.rejected.filteredList);\n\n\n if (scope.consequenceFilterActive) {\n scope.isFilterActive = true;\n scope.new.filteredList = $filter('filter')(scope.new.filteredList, hasValuesInListFilter('consequences'));\n scope.inprogress.filteredList = $filter('filter')(scope.inprogress.filteredList, hasValuesInListFilter('consequences'));\n scope.implemented.filteredList = $filter('filter')(scope.implemented.filteredList, hasValuesInListFilter('consequences'));\n scope.rejected.filteredList = $filter('filter')(scope.rejected.filteredList, hasValuesInListFilter('consequences'));\n }\n\n if (scope.myResponsibleFilterActive) {\n var userid = authService.getCurrentUser().userId;\n scope.isFilterActive = true;\n scope.new.filteredList = $filter('filter')(scope.new.filteredList, { ownerUserId: userid });\n scope.inprogress.filteredList = $filter('filter')(scope.inprogress.filteredList, { ownerUserId: userid });\n scope.implemented.filteredList = $filter('filter')(scope.implemented.filteredList, { ownerUserId: userid });\n scope.rejected.filteredList = $filter('filter')(scope.rejected.filteredList, { ownerUserId: userid });\n }\n\n if (scope.myRegistrationFilterActive) {\n var userid = authService.getCurrentUser().userId;\n scope.isFilterActive = true;\n scope.new.filteredList = $filter('filter')(scope.new.filteredList, { createdByUserId: userid });\n scope.inprogress.filteredList = $filter('filter')(scope.inprogress.filteredList, { createdByUserId: userid });\n scope.implemented.filteredList = $filter('filter')(scope.implemented.filteredList, { createdByUserId: userid });\n scope.rejected.filteredList = $filter('filter')(scope.rejected.filteredList, { createdByUserId: userid });\n }\n }\n\n\n\n function getArchiveDateListByOptions(list) {\n\n var filteredList = [];\n for (var i = 0; i < list.length; i++) {\n var deviation = list[i];\n if (!scope.showArchive && !deviation.archivedDate) {\n filteredList.push(deviation);\n }\n if (scope.showArchive && deviation.archivedDate) {\n filteredList.push(deviation);\n }\n }\n return filteredList;\n\n }\n\n function valueInList(property, list) {\n return function (item) {\n for (var i = 0; i < list.length; i++) {\n if (item[property] === list[i]) return true;\n }\n return false;\n }\n }\n function hasValuesInListFilter(property) {\n return function (item) {\n if (item[property] && item[property].length > 0) return true;\n return false;\n }\n }\n function getFilteredListByAssets(list, assets) {\n if (assets.length === 0) return list;\n var filteredList = [];\n for (var i = 0; i < list.length; i++) {\n var deviation = list[i];\n for (var j = 0; j < assets.length; j++) {\n var asset = assets[j];\n if (deviation.followUpAssetId === asset.id) {\n filteredList.push(deviation);\n }\n }\n }\n return filteredList;\n }\n function getFilteredListByAreas(list, areas) {\n if (areas.length === 0) return list;\n var filteredList = [];\n for (var i = 0; i < list.length; i++) {\n var deviation = list[i];\n for (var j = 0; j < areas.length; j++) {\n var area = areas[j];\n if (deviation.areaId === area.id) {\n filteredList.push(deviation);\n }\n }\n }\n return filteredList;\n }\n function getFilteredListByDeviationTypes(list, deviationtypes) {\n if (deviationtypes.length === 0) return list;\n var filteredList = [];\n for (var i = 0; i < list.length; i++) {\n var deviation = list[i];\n for (var j = 0; j < deviationtypes.length; j++) {\n var type = deviationtypes[j];\n if (deviation.deviationTypeId === type.id) {\n filteredList.push(deviation);\n }\n }\n }\n return filteredList;\n }\n function getFilteredListByProjects(list, projects) {\n if (projects.length === 0) return list;\n var filteredList = [];\n for (var i = 0; i < list.length; i++) {\n var deviation = list[i];\n for (var j = 0; j < projects.length; j++) {\n var project = projects[j];\n if (deviation.projectId === project.id) {\n filteredList.push(deviation);\n }\n }\n }\n return filteredList;\n }\n function getFilteredListByCategories(list, categories) {\n if (categories.length === 0) return list;\n var filteredList = [];\n for (var i = 0; i < list.length; i++) {\n var deviation = list[i];\n var deviationCategories = deviation.categories;\n if (deviationCategories && deviationCategories.length > 0) {\n for (var j = 0; j < categories.length; j++) {\n var match = $filter('filter')(deviationCategories, { problemCategoryId: categories[j].id }, true);\n if (match.length === 1) {\n filteredList.push(deviation);\n }\n }\n }\n }\n return filteredList;\n }\n\n function severityFilterActive() {\n var filteredSeverity = [];\n angular.forEach(scope.severityOptions, function (severity) {\n if (severity.filteredAndInResultList) {\n filteredSeverity.push(severity.severityDB);\n }\n });\n return filteredSeverity;\n }\n\n function getExistingDeviation(deviationId) {\n var isPartOfContainer = $filter('filter')(scope.new.list, { id: deviationId }, true);\n if (isPartOfContainer.length > 0) { return isPartOfContainer[0] };\n isPartOfContainer = $filter('filter')(scope.inprogress.list, { id: deviationId }, true);\n if (isPartOfContainer.length > 0) { return isPartOfContainer[0] };\n isPartOfContainer = $filter('filter')(scope.implemented.list, { id: deviationId }, true);\n if (isPartOfContainer.length > 0) { return isPartOfContainer[0] };\n isPartOfContainer = $filter('filter')(scope.rejected.list, { id: deviationId }, true);\n if (isPartOfContainer.length > 0) { return isPartOfContainer[0] };\n return null;\n }\n\n }\n }\n }]);\n","import * as customerService from \"@common/services/customers/customerService\"\n\nangular\n .module('DigiLean')\n .directive(\"deviationActionListResult\", ['$filter', '$translate', 'deviationService', '$uibModal', 'NgTableParams','boardTaskService', 'actionlistService',\n function ($filter, $translate, deviationService, $uibModal, NgTableParams, boardTaskService, actionlistService) {\n return {\n templateUrl: 'deviationActionListResult.html',\n restrict: 'E',\n scope: {\n 'filter': '<',\n 'boardid': '=',\n 'columnid': '='\n },\n link: function (scope, elem, attrs) {\n\n scope.columns = [];\n scope.registrations = [];\n scope.allUsers = [];\n scope.selectedDataList = [];\n scope.responsibleSetting = \"noname\";\n\n var deviationTypeId = null;\n var followupAssetId = null;\n\n\n // Filter handling\n scope.$watch('filter', function (filter) {\n if (!filter) {\n scope.filter = [];\n } else {\n for(var i=0; i< filter.length; i++){\n if(filter[i].sourceColumn == 'deviationTypeId'){\n deviationTypeId = filter[i].items[0];\n } else if(filter[i].sourceColumn == 'followUpAssetId'){\n followupAssetId = filter[i].items[0];\n }\n }\n }\n scope.getValues();\n });\n\n function getAllUsers(){\n if(!scope.users){\n customerService.getAllUsers().then(function (users) {\n scope.users = users;\n });\n }\n }\n getAllUsers();\n\n \n scope.opened = [];\n scope.overdueFilterActive = false;\n\n scope.subscribe(\"NewTask\", function (task) {\n if (task.boardId === scope.boardid) {\n scope.getValues();\n }\n });\n\n scope.subscribe(\"DeviationActionItemAdded\", function (item) {\n if (item.deviationTypeId == deviationTypeId && item.assetId == followupAssetId){\n scope.getValues();\n }\n });\n\n scope.subscribe('TaskDeleted', function (id) {\n var task = $filter('filter')(scope.items, { id: id }, true);\n if (task.length > 0) {\n var item = task[0];\n var index = scope.items.indexOf(item);\n if (index > -1) {\n item.cssState = \"animated slideOutLeft\"; // Add animation\n setTimeout(function () {\n scope.items.splice(index, 1);\n }, 300);\n }\n }\n });\n\n scope.subscribe('TaskDescriptionUpdated', function (descriptionUpdate) {\n var task = $filter('filter')(scope.items, { id: descriptionUpdate.taskId }, true);\n if (task.length > 0) {\n scope.$apply(function () {\n task[0].title = descriptionUpdate.description;\n });\n }\n });\n\n scope.subscribe('TaskAssigned', function (status) {\n var task = $filter('filter')(scope.items, { id: status.taskId }, true);\n if (task.length > 0) {\n scope.$apply(function () {\n task[0].responsibleUserId = status.userId;\n });\n }/*\n if (status.taskId == scope.model.task.id) {\n var matchingUser = $filter('filter')(scope.users, { userId: status.userId }, true);\n if (matchingUser.length > 0) {\n scope.displayName = matchingUser[0].ownerDisplayName;\n scope.user = matchingUser[0];\n scope.model.task.responsibleUserId = scope.user.userId;\n scope.model.task.responsibleUser= scope.user.fullName;\n scope.model.task.responsibleDisplayName = scope.user.displayName;\n } else {\n scope.displayName = \"\";\n scope.user = null;\n }\n }*/\n });\n\n scope.subscribe('TaskDateUpdated', function (status) {\n var task = $filter('filter')(scope.items, { id: status.taskId }, true);\n if (task.length > 0) {\n scope.$apply(function () {\n task[0].boardDate = moment(status.actionDate).toDate();\n task[0].isOverdue = isOverdue(task[0].boardDate, task[0].status);\n });\n }\n });\n\n scope.userChangeHandler = function (userinfo) {\n if (userinfo) {\n var user = userinfo.user;\n var item = userinfo.model;\n item.user = user;\n // \n actionlistService().assignActionListItemUser(item.id, user).then(function () { \n }); \n }\n }\n\n\n scope.changeActionDate = function (item, $event) {\n const date = $event.originalEvent.detail\n item.boardDate = date\n if (item.boardDate) { // Valid date format\n item.error = false;\n var actionDate = {\n taskId: item.id,\n actionDate: item.boardDate\n };\n actionlistService().updateItemActionDate(actionDate).then(function () {\n scope.publish(\"SendTaskDateUpdated\", actionDate);\n });\n } else {\n $translate('COMMON_NOT_VALID_DATE').then(function (trans) {\n item.error = trans;\n });\n\n }\n }\n\n scope.openDeviation = function (deviationid) {\n if (deviationid) {\n deviationService().get(deviationid).then(function (deviation) {\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n templateUrl: 'fullDeviation.html',\n controller: 'fullDeviationController',\n windowClass: 'full-screen',\n resolve: {\n deviation: function () {\n return deviation;\n },\n activeTab: function () {\n return \"Info\";\n }\n }\n });\n });\n }\n }\n\n\n scope.getValueForElement = function (element, item) {\n var sourceColumn = element.sourceColumn;\n var value = item[sourceColumn];\n return value;\n }\n\n \n\n scope.openTask = function (activeTab, subtask) {\n if (!activeTab) activeTab = \"Info\";\n var options = {\n canChangeBoard: false,\n users: scope.users\n };\n\n boardTaskService().get(subtask.id).then(function (task) {\n $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'boardTask.html',\n controller: 'boardTaskController',\n resolve: {\n task: function () {\n return task;\n },\n activeTab: function () {\n return activeTab;\n },\n options: function () {\n return options;\n }\n }\n });\n })\n\n }\n\n\n scope.getValues = function (params) {\n scope.buildColumns();\n scope.tableParams = new NgTableParams({\n sorting: { boardDate: \"desc\" },\n count: 15,\n },\n {\n getData: scope.getTableValues\n });\n\n }\n scope.sorting = \"\";\n scope.getTableValues = function (params) {\n\n var sorting = [];\n // Build sortExpression for database to be able to deserialize, becuase NgTableParams.sorting is a dynamic object.\n for (var propt in params._params.sorting) {\n sorting.push({\n property: propt,\n direction: params._params.sorting[propt]\n });\n }\n scope.sorting = sorting;\n // We will build params based on the built-in NgTableParams + our sorting array\n var dbParams = {\n page: params._params.page,\n count: params._params.count,\n sorting: scope.sorting,\n filters: scope.filter\n }\n var boardTableValues = {\n boardId: scope.boardid,\n columnId: scope.columnid,\n tableParams: dbParams\n }\n return deviationService().getActionTableValues(boardTableValues).then(function (data) {\n scope.totalMatchingRecords = data.total;\n params.total(data.total); // recal. page nav controls\n // check values\n data.values.forEach(value => {\n value.isOverdue = isOverdue(value.boardDate, value.status);\n });\n scope.items = data.values;\n return data.values;\n\n });\n }\n scope.buildColumns = function (datasource) {\n scope.columns = [\n {\n title: $translate.instant(\"COMMON_STATUS\"),\n field: 'status',\n visible: true,\n sortable: 'status',\n getValue: renderValue,\n dataType: \"text\"\n },\n {\n title: $translate.instant(\"DEVIATION_ACTIONS\"),\n field: 'title',\n visible: true,\n sortable: 'title',\n getValue: renderValue,\n dataType: \"text\"\n },\n {\n title: $translate.instant(\"DEVIATION_SEVERITY\"),\n field: 'severity',\n visible: true,\n sortable: 'severity',\n getValue: renderValue,\n dataType: \"int\"\n },\n {\n title: $translate.instant(\"COMMON_RESPONSIBLE\"),\n field: 'responsibleDisplayName',\n sortable: 'responsibleDisplayName',\n getValue: renderValue,\n visible: true,\n dataType: \"text\"\n },\n {\n title: $translate.instant(\"COMMON_DUE_DATE\"),\n field: 'boardDate',\n visible: true,\n sortable: 'boardDate',\n getValue: renderValue,\n dataType: \"date\"\n },\n ];\n\n }\n\n function renderValue($scope, row) {\n var item = this;\n var field = item.field;\n var value = row[field];\n if (this.dataType === \"date\") {\n return $filter('date')(value, \"mediumDate\");\n }\n if (this.dataType === \"timestamp\") {\n return $filter('date')(value, \"dd.MM.yyyy HH:mm:ss\");\n }\n if (this.dataType === \"bool\") {\n if (value === \"true\") {\n return \"\";\n } else {\n return \"\";\n }\n }\n return value;\n }\n\n function isOverdue(date, status) {\n // Overdue check\n\n if (!date) return false;\n if (status == 'OK') return false;\n var duration = moment.duration(moment().diff(moment(date)));\n var days = duration.asDays();\n if (days > 1) {\n return true;\n }\n return false;\n }\n\n }\n\n }\n }]);\n","import * as customerService from \"@common/services/customers/customerService\"\nimport * as profileService from \"@common/services/user/profileService\"\nimport * as boardService from \"@common/services/boardService\"\nimport * as profileImageService from \"@common/services/user/profileImageService\"\nimport toaster from \"@common/components/toast\"\n\nangular\n .module('DigiLean')\n .directive(\"deviationActionList\", ['$translate', '$uibModal', 'actionlistService', 'taskDrawingService', 'boardTaskService',\n function ($translate, $uibModal, actionlistService, taskDrawingService, boardTaskService) {\n return {\n templateUrl: 'deviationActionList.html',\n restrict: 'E',\n scope: {\n 'deviationid': '=',\n 'users': '<',\n 'canEdit': '='\n },\n link: function (scope, elem, attrs) {\n scope.users = [];\n scope.allusers = [];\n scope.items = [];\n scope.boards = [];\n scope.showMoreButton = true;\n\n scope.boardoptions = {\n mandatory: false\n }\n\n scope.$watch(\"deviationid\", function () {\n if (!scope.deviationid) return;\n\n // Get actionlist\n actionlistService().getActionListForDeviation(scope.deviationid).then(function (items) {\n if (items.length !== 0) {\n scope.items = items;\n scope.items.forEach(function (item) {\n setBoardDate(item, item.boardDate);\n });\n }\n setResponsible();\n });\n boardService.getAllBoardNames().then(function (data) {\n scope.boards = data;\n });\n });\n\n function setBoardDate(item, date) {\n if (date) {\n item.boardDate = moment(date).toDate();\n } else {\n item.boardDate = null;\n }\n\n }\n\n scope.$watch(\"users\", function () {\n if (!scope.users)\n return;\n setResponsible();\n });\n\n scope.loadMoreUsers = async function () {\n if (scope.allusers.length > 0) {\n scope.users = scope.allusers;\n scope.showMoreButton = false;\n } else {\n scope.allusers = await profileImageService.getAllUsersIncludeProfileImage()\n scope.users = scope.allusers\n scope.showMoreButton = false;\n }\n }\n\n async function setResponsibleFromAllUsers(task) {\n if (!task.responsibleUserId)\n return\n\n if (scope.allusers.length == 0) {\n scope.allusers = await profileImageService.getAllUsersIncludeProfileImage()\n }\n const user = scope.allusers.find(u => u.id == task.responsibleUserId)\n if (user)\n task.user = user\n }\n function setResponsible() {\n if (scope.items) {\n scope.items.forEach(function (item) {\n setResponsibleFromAllUsers(item)\n \n setBoardDate(item, item.boardDate);\n item.datePicker = {\n opened: false\n }\n });\n }\n }\n\n scope.openTask = function (activeTab, subtask) {\n if (!activeTab) activeTab = \"Info\";\n var options = {\n canChangeBoard: false\n };\n\n boardTaskService().get(subtask.id).then(function (task) {\n $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'boardTask.html',\n controller: 'boardTaskController',\n resolve: {\n task: function () {\n return task;\n },\n activeTab: function () {\n return activeTab;\n },\n options: function () {\n return options;\n }\n }\n });\n })\n\n }\n\n scope.setActive = function (task) {\n task.active = true;\n setTimeout(function () {\n $(elem).find(\".project-name\").focus();\n }, 50);\n }\n\n scope.add = function () {\n var item = {\n title: \"\",\n boardDate: moment().utc().toDate(),\n user: null\n }\n actionlistService().createDevationActionItem(scope.deviationid, item).then(function (actionItem) {\n if (actionItem.boardDate) {\n actionItem.boardDate = moment(actionItem.boardDate).toDate();\n }\n actionItem.datePicker = {\n opened: false\n }\n scope.items.unshift(actionItem);\n scope.setActive(actionItem);\n scope.publish(\"SendCreateActionListItem\", actionItem);\n });\n }\n\n // Also need to subscribe to events where tasks are changed by other users\n\n scope.delete = function (item) {\n actionlistService().deleteActionItem(item.id).then(function () {\n });\n };\n\n scope.saveItemDescription = function (task) {\n task.active = false;\n var taskDescription = {\n taskId: task.id,\n description: task.title\n };\n actionlistService().updateItemDescription(task.id, taskDescription).then(function () {\n $translate('DEVIATION_ACTION_ITEM_SAVED').then(function (msg) {\n toaster.success(msg);\n });\n scope.publish(\"SendTaskDescriptionUpdated\", taskDescription);\n });\n }\n\n scope.changeActionDate = function (item, event) {\n const date = event.originalEvent.detail\n item.boardDate = date\n var actionDate = {\n taskId: item.id,\n actionDate: item.boardDate\n };\n if (item.boardId) {\n boardTaskService().updateDate(item.id, item.boardDate).then(function (taskMoved) {\n //Subtask will not be updated if any...\n $translate('DEVIATION_ACTION_ITEM_SAVED').then(function (msg) {\n toaster.success(msg);\n });\n // publish event on change\n scope.publish(\"SendTaskDateUpdated\", actionDate);\n });\n } else {\n\n actionlistService().updateItemActionDate(actionDate).then(function () {\n $translate('DEVIATION_ACTION_ITEM_SAVED').then(function (msg) {\n toaster.success(msg);\n });\n // publish event on change\n scope.publish(\"SendTaskDateUpdated\", actionDate);\n });\n }\n }\n\n scope.userChangeHandler = function (userinfo) {\n if (userinfo) {\n var user = userinfo.user;\n var item = userinfo.model;\n item.user = user;\n // \n actionlistService().assignActionListItemUser(item.id, user).then(function () {\n });\n }\n }\n\n\n scope.changeStatus = function (item) {\n if (!scope.canEdit) return;\n item.status = taskDrawingService().getNextStatus(item.status).status;\n var status = {\n taskId: item.id,\n status: item.status\n };\n actionlistService().updateStatus(status).then(function () {\n\n });\n }\n\n scope.clearSelectedUser = function (task) {\n var emptyUser = {\n userId: null,\n fullName: \"\",\n displayName: \"\"\n }\n scope.selectUser(task, emptyUser);\n };\n scope.selectUser = function (task, user) {\n if (!scope.canEdit) return;\n task.user = user;\n task.ResponsibleUserId\n var userDetails = {\n userId: user.userId,\n userName: user.fullName,\n userDisplayName: user.displayName,\n previousUserId: task.responsibleUserId,\n previousUserName: task.responsibleUser\n };\n // save\n var options = {\n taskId: task.id,\n user: userDetails\n }\n boardTaskService().assignUser(options);\n task.responsibleUserId = user.userId;\n task.responsibleDisplayName = user.displayName;\n task.responsibleUser = user.fullName;\n };\n\n scope.autoGrow = function (element) {\n element.style.height = \"5px\";\n element.style.height = (element.scrollHeight) + \"px\";\n }\n\n setTimeout(function () {\n // Applied globally on all textareas with the \"autoExpand\" class\n $(document)\n .one('focus.autoExpand', 'textarea.autoExpand', function () {\n var savedValue = this.value;\n this.value = '';\n this.baseScrollHeight = this.scrollHeight;\n this.value = savedValue;\n })\n .on('input.autoExpand', 'textarea.autoExpand', function () {\n var minRows = this.getAttribute('data-min-rows') | 0, rows;\n this.rows = minRows;\n rows = Math.ceil((this.scrollHeight - this.baseScrollHeight) / 17);\n this.rows = minRows + rows;\n });\n }, 1500);\n\n scope.subscribe('TaskDeleted', function (id) {\n const task = scope.items.find(i => i.id == id)\n if (task) {\n var index = scope.items.indexOf(task);\n if (index > -1) {\n item.cssState = \"animated slideOutLeft\"; // Add animation\n setTimeout(function () {\n scope.items.splice(index, 1);\n }, 300);\n }\n }\n });\n scope.subscribe('TaskStatusUpdated', function (status) {\n const task = scope.items.find(i => i.id == status.taskId)\n if (task) {\n task.status = status.status;\n }\n });\n scope.subscribe('TaskCommentAdded', function (comment) {\n const task = scope.items.find(i => i.id == comment.boardTaskId)\n if (task) {\n task.commentCount = comment.taskCommentCount;\n }\n });\n scope.subscribe('TaskUpdated', function (updatedTask) {\n const task = scope.items.find(i => i.id == updatedTask.id)\n if (task) {\n task.status = updatedTask.status;\n task.title = updatedTask.title;\n task.text = updatedTask.text;\n task.description = updatedTask.description;\n task.attachmentCount = updatedTask.attachmentCount;\n task.commentCount = updatedTask.commentCount;\n setBoardDate(task, updatedTask.boardDate);\n task.responsibleUserId = updatedTask.responsibleUserId;\n setResponsible();\n }\n });\n }\n }\n }]);\n","import envConfig from \"@common/envConfig\";\n\n\nangular.module(\"DigiLean\").factory('fileService', ['$http',\n function ($http) {\n function fileService() {\n var resource = \"/files\";\n var resourceUrl = envConfig.webApiUrl + resource;\n\n return {\n getFilesForTask: function (taskId) {\n resourceUrl = resourceUrl + \"/getFilesForTask/\" + taskId;\n return $http.get(resourceUrl).then(function (result) {\n return result.data;\n });\n },\n\n getTest: function() {\n return \"test\";\n }\n }\n }\n return fileService;\n }]);\n","import {html, css, LitElement} from \"lit\"\n\nclass PagerElement extends LitElement {\n\n constructor() {\n super()\n this.total = 0\n this._pagesTotal = 0\n this._currentPageSize = 10\n this._currentPage = 1\n this._pagesArr = []\n this._pageSizes = [10, 25, 50, 100]\n }\n\n styles() {\n return css`\n div.pagerelement {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n }\n div.pagerelement .pagination {\n margin: 20px 0 0 0;\n }\n `\n }\n\n static get properties() {\n return {\n total: {type: Number},\n pagesize: {type: Number}\n }\n }\n\n set pagesize(value) {\n this.setPageSize(value)\n }\n dispatchCustomEvent(name, detail) {\n const options = {\n detail,\n bubbles: true,\n composed: true\n }\n this.dispatchEvent(new CustomEvent(name, options))\n }\n setPage(pageNum) {\n this._currentPage = pageNum\n this.dispatchCustomEvent(\"pagenumchanged\", {pageNum})\n this.requestUpdate()\n }\n setPageSize(pageSize) {\n this._currentPageSize = pageSize\n this.dispatchCustomEvent(\"pagesizechanged\", {pageSize})\n this.requestUpdate()\n }\n decrement() {\n if (this._currentPage < 2)\n return\n this.setPage(this._currentPage-1)\n }\n increment() {\n if (this._currentPage >= this._pagesTotal)\n return\n this.setPage(this._currentPage+1)\n }\n updateNums() {\n const pager = this.getPager(this.total, this._currentPage, this._currentPageSize)\n this._pagesArr = pager.pages\n this._pagesTotal = pager.totalPages\n if (this._currentPage > this._pagesTotal) \n this.setPage(1)\n }\n getPager(totalItems, currentPage, pageSize) {\n currentPage = currentPage || 1\n pageSize = pageSize || 10\n const totalPages = Math.ceil(totalItems / pageSize)\n let startPage, endPage\n if (totalPages <= 10) {\n startPage = 1\n endPage = totalPages\n } else {\n if (currentPage <= 6) {\n startPage = 1\n endPage = 10\n } else if (currentPage + 4 >= totalPages) {\n startPage = totalPages - 9\n endPage = totalPages\n } else {\n startPage = currentPage - 5\n endPage = currentPage + 4\n }\n }\n const startIndex = (currentPage - 1) * pageSize\n const endIndex = Math.min(startIndex + pageSize - 1, totalItems - 1)\n const pages = _.range(startPage, endPage + 1)\n\n return { totalItems, currentPage, pageSize, totalPages, startPage, endPage, startIndex, endIndex, pages }\n }\n render() {\n this.updateNums()\n return html`\n \n
        \n \n\n \n
        \n `\n }\n createRenderRoot() {\n return this\n }\n}\ncustomElements.define('pager-element', PagerElement)","import angular from \"angular\"\nimport { NgComponent } from \"@common/model/angularModel\"\nimport \"./appHeaderTitle.css\"\n\nconst digiLean = angular.module(\"DigiLean\")\n\ninterface layoutStyle {\n \"font-size\": string\n}\n\ninterface IndexPageScope extends NgComponent {\n layoutFactor: number\n isAdminMode: boolean\n title: string\n icon?: string\n iconShow?: string\n titleEdit: string\n titleStyle: layoutStyle\n}\n\ndigiLean.component(\"appHeaderTitle\", \n{\n transclude: true,\n bindings: {\n 'layoutFactor': '<',\n 'isAdminMode': '<',\n 'title': '<'\n },\n templateUrl: \"appHeaderTitle.html\",\n controller: ['$element', function(this: IndexPageScope, $element: JQuery) {\n \n let $ctrl = this\n\n const defaultWrapperStyle = {\n \"font-size\": \"1.6rem\",\n \"padding\": \"1rem 1rem 0 1rem\"\n }\n $ctrl.wrapperStyle = defaultWrapperStyle\n\n $ctrl.titleEdit = \"\"\n \n function calcStyle() {\n if ($ctrl.layoutFactor) {\n\n const paddingStyle = $ctrl.layoutFactor + \"rem\"\n $ctrl.wrapperStyle = {\n \"font-size\": 1.4 * $ctrl.layoutFactor + \"rem\",\n \"padding\": `${paddingStyle} ${paddingStyle} 0 ${paddingStyle}`,\n }\n\n } else {\n $ctrl.wrapperStyle = defaultWrapperStyle\n }\n }\n\n $ctrl.$onInit = function() {\n calcStyle()\n if ($ctrl.title)\n $ctrl.titleEdit = $ctrl.title\n }\n $ctrl.$onChanges = function (changes) {\n if (changes.layoutFactor && changes.layoutFactor.currentValue)\n calcStyle()\n \n if (changes.title && changes.title.currentValue)\n $ctrl.titleEdit = changes.title.currentValue\n }\n $ctrl.titleUpdated = function() {\n const detail = $ctrl.titleEdit\n const options = {detail, bubbles: true, composed: true}\n $element[0].dispatchEvent(new CustomEvent(\"title-changed\", options))\n }\n \n }]\n})","import { Theme } from \"@common/model/types\"\nimport {LitElement, html, css} from \"lit\"\nimport {customElement} from \"lit/decorators.js\"\n// import { classMap } from \"lit/directives/class-map.js\"\nimport {styleMap} from \"lit/directives/style-map.js\"\n\n\nconst themes: Theme[] = [\n {\n background: \"var(--digilean-primary-text)\",\n fillColor: \"var(--digilean-secondary-background)\",\n color: \"inherit\"\n },\n {\n fillColor: \"#FFF6DF\", // orange\n background: \"#FCBB42\"\n },\n {\n fillColor: \"#EDF7E3\", // green\n background: \"#8CC152\"\n },\n {\n fillColor: \"#DFF3FB\", //blue\n background: \"#0099de\" //\"#3BAFDA\"\n },\n {\n fillColor: \"#FEE4DF\", // red\n background: \"#E9573F\"\n },\n {\n fillColor: \"#FBE9F3\", // pink\n background: \"#D770AD\"\n }\n]\n\n@customElement('theme-selector')\nexport class DigiLeanThemeSelector extends LitElement {\n \n static styles = css`\n :host {\n display: flex;\n flex-direction: row;\n }\n\n .post-it {\n margin-left:7px;\n margin-right:1px;\n height: 24px;\n width: 24px;\n margin: 5px;\n border: 1px solid darkgrey;\n cursor: pointer;\n }\n `\n\n \n onSelect(theme: Theme) {\n const options = {\n detail: theme,\n bubbles: true,\n composed: true\n }\n this.dispatchEvent(new CustomEvent(\"theme-selected\", options))\n }\n\n render() {\n \n return themes.map(theme => {\n const themeStyles = {\n \"backgroundColor\": theme.fillColor,\n \"border\": \"2px solid \" + theme.background\n }\n return html`\n
        this.onSelect(theme)}\n style=${styleMap(themeStyles)}>\n
        \n `\n }) \n \n }\n}","import {LitElement, html, css} from \"lit\"\nimport {customElement, property, state} from \"lit/decorators.js\"\nimport { systemHub } from \"@common/services/systemHub\"\nimport { Heartbeat } from \"@api\"\nimport { formatDateTimeLong, parseDateFromString } from \"@common/services/datetime/dateTimeFormattingLocale\"\n\n@customElement('heartbeat-indicator')\nexport class HeartbeatIndicator extends LitElement {\n static styles = css`\n :host {\n display: inline-flex;\n flex-direction: row;\n gap: 1rem;\n\n }\n @keyframes rubberBand {\n from {transform: scale3d(1, 1, 1);}\n\n 30% {transform: scale3d(1.25, 0.75, 1);}\n\n 40% {transform: scale3d(0.75, 1.25, 1);}\n\n 50% {transform: scale3d(1.15, 0.85, 1);}\n\n 65% {transform: scale3d(.95, 1.05, 1);}\n\n 75% { transform: scale3d(1.05, .95, 1); }\n\n to { transform: scale3d(1, 1, 1);}\n }\n .active {\n color: var(--digilean-danger);\n animation: 1s linear 1s infinite rubberBand;\n }\n `\n\n intervalId = 0\n _lastHeartBeat: Date | undefined\n\n @property({attribute: true})\n get lastheartbeat() {\n if (!this._lastHeartBeat)\n return \"\"\n\n const isDate = (this._lastHeartBeat instanceof Date)\n if (isDate)\n return this._lastHeartBeat.toISOString()\n return \"\"\n }\n set lastheartbeat(value: string) {\n if (!value)\n return\n\n const date = parseDateFromString(value)\n if (date) {\n this.setLast(date)\n const diff = this.getDiff()\n if (diff < 15000)\n this.isActive = true\n }\n }\n\n @property({attribute: true})\n connectorid = \"\"\n\n @property({attribute: true, type: Boolean})\n showlabel = false\n \n connectedCallback(): void {\n super.connectedCallback()\n\n systemHub.on(\"HeartbeatReceived\", (heartbeat: Heartbeat) => {\n if (heartbeat.id == this.connectorid) {\n this.isActive = true\n \n this.setLast(new Date())\n if (this.showlabel)\n this.requestUpdate()\n }\n })\n\n this.startInterval()\n }\n\n setLast(date: Date) {\n this._lastHeartBeat = date\n this.title = formatDateTimeLong(this._lastHeartBeat)\n }\n disconnectedCallback(): void {\n if (this.intervalId)\n window.clearInterval(this.intervalId)\n }\n\n startInterval() {\n if (this.intervalId === 0)\n this.intervalId = window.setInterval(() => this.checkIfStillAlive(), 5000)\n }\n\n checkIfStillAlive() {\n if (!this.isActive || !this._lastHeartBeat)\n return\n \n const diff = this.getDiff()\n if (diff > 15000)\n this.isActive = false\n }\n\n getDiff() {\n if (!this._lastHeartBeat)\n return 10000000\n const timeNow = new Date().getTime()\n const timeLast = this._lastHeartBeat.getTime()\n const diff = timeNow - timeLast\n return diff\n }\n\n @state()\n isActive = false\n \n render() {\n let icon = \"fa fa-heart fa-2x\"\n // \n const lastBeat = this._lastHeartBeat ? formatDateTimeLong(this._lastHeartBeat) : \"\"\n return html`\n \n ${this.showlabel ? html`` : \"\"}\n `\n }\n}\n","\nimport angular from \"angular\"\nimport { NgComponent } from \"@common/model/angularModel\"\nimport { getUserProfile } from \"@common/stores/userStore\"\nimport * as helpSearchService from \"./helpSearchService\"\nimport {SearchResult, Article} from \"./SearchResult\"\nimport envConfig from \"@common/envConfig\"\n\nconst DigiLean = angular.module('DigiLean')\nDigiLean.component('helpSearch', {\n templateUrl: \"helpSearch.html\",\n controller: ['learningPublicService', function(this:NgComponent, learningPublicService) {\n let $ctrl = this as NgComponent\n\n $ctrl.isLoading = false\n $ctrl.showArticle = false\n $ctrl.userName = getUserProfile().firstName\n $ctrl.showBackBtn = false\n $ctrl.showResult = true;\n $ctrl.articles = null;\n $ctrl.articlePageId = null;\n $ctrl.articleUrl = \"\"\n $ctrl.showClearBtn = false\n $ctrl.inputValue = '';\n $ctrl.learningMaterials = []\n\n let searchEl: HTMLInputElement\n let resultEl: HTMLDivElement\n let popoverEl: HTMLDivElement\n let footerEl: HTMLDivElement\n\n $ctrl.$onInit = async function() {\n resultEl = document.querySelector(\"#search-result\")! \n popoverEl = document.querySelector(\"#help-search-popover\")!\n footerEl = document.querySelector(\"#article-footer\")!\n searchEl = document.querySelector(\"digilean-input#search-input\")!\n $ctrl.learningMaterials = await learningPublicService.getPublishedMaterials()\n }\n\n $ctrl.search = async function() {\n console.log(\"search\")\n $ctrl.isLoading = true\n const searchPhrase = searchEl.value \n $ctrl.response = null;\n $ctrl.showClearBtn = true\n try {\n let response = await helpSearchService.postQuestion(searchPhrase) as SearchResult\n $ctrl.response = response\n }\n catch(error)\n {\n $ctrl.answer = \"Error fetching data\"\n }\n finally{\n $ctrl.isLoading = false\n $ctrl.showResult = true\n resultEl.innerHTML = $ctrl.response.summary + \"

        The summary is generated by AI.


        Relevant links to DigiLEANS learning material:

        \"\n\n }\n }\n\n $ctrl.backBtnClicked = function() {\n $ctrl.showBackBtn = false\n $ctrl.showArticle = false\n $ctrl.showResult = true\n }\n\n $ctrl.clearBtnClicked = function() {\n $ctrl.showClearBtn = false\n $ctrl.showResult = false\n searchEl.value = \"\"\n }\n\n $ctrl.closePopover = function()\n {\n popoverEl.hidePopover();\n }\n \n $ctrl.viewArticle = async function (article:Article) {\n console.log(article)\n $ctrl.articlePageId = article.pageId\n $ctrl.showArticle = true\n $ctrl.showResult = false\n $ctrl.showBackBtn = true\n let url = `${envConfig.websiteUrl}/#/learning/external/${article.learningMaterialId}?pageid=0`\n let foundArticle = $ctrl.learningMaterials.find(l => l.id === article.learningMaterialId)\n if(foundArticle)\n {\n footerEl.innerHTML = `Link to this article's full learning material:
        ${foundArticle.title}`\n }\n }\n }]\n})\n\n","import backend from \"@common/services/backendHttp\"\nimport {SearchResult} from \"./SearchResult\"\n\nconst resourceUrl = \"api/ai\"\n\nexport function postQuestion(questionText){\n const url = resourceUrl + \"/questionpage\"\n return backend.post(url, questionText)\n}\n","// DigiLEAN files that are shared between web and teams\n// CSS\n\n// main files\nimport '@common/css/colors.css';\nimport '@common/css/theme.css';\nimport '@common/css/global.css'\nimport '@common/css/style.css'\nimport '@common/css/spinkit.css'\n\n// language\nimport \"@common/services/language/DigiLeanAngularLang\"\n\n// services\nimport '@common/shared/activityService';\nimport '@common/shared/excelService';\n\nimport '@common/shared/mathService';\nimport '@common/shared/targetService';\nimport '@common/shared/layoutService';\nimport '@common/shared/modal/modalService';\nimport '@common/shared/navigationService';\nimport '@common/shared/modulesService';\nimport '@common/shared/pubSubService';\nimport '@common/shared/smartcellService';\n\nimport '@common/shared/settingsService';\nimport '@common/components/A3/a3Service';\nimport '@common/components/admin/area/areaService';\nimport '@common/components/admin/contactlist/contactlistService';\nimport '@common/shared/folderService';\nimport '@common/shared/notificationService';\nimport '@common/shared/favoriteService';\nimport '@common/components/dashboard/designer/appstore/smarttable/smarttableService';\nimport '@common/components/board/boardTaskService';\n\n// data\nimport '@common/components/data/dataService';\nimport '@common/components/data/dataListService';\nimport '@common/components/data/dataSourceService';\nimport '@common/components/data/dataFilterService';\nimport '@common/components/data/timeframeSelector/timeframeSelector';\nimport \"@common/components/data/timeframeSelector/timeframeSelector.css\"\nimport '@common/components/data/dataseriesselector/dataseriesselectorModalController';\nimport '@common/components/data/dataseriesselector/dataseriesselectorStepsController';\nimport '@common/components/data/dataseriesselector/dataseriesselectorStepsController';\nimport '@common/components/data/dataseriesselector/a3selectors/a3categoryselector/a3categoryselector';\nimport '@common/components/data/dataseriesselector/strategygoalSelector/strategygoalSelector';\nimport '@common/components/data/definitions/datasourcesingle/dataSourceSingleSelector';\nimport '@common/components/data/definitions/datasourcegroup/dataSourceGroupSelector';\nimport '@common/components/data/definitions/datasourcestackedgroup/dataSourceStackedGroupSelector';\nimport '@common/components/data/definitions/datasourceTarget/datasourceTarget';\nimport '@common/components/data/latestValue/latestDataValue';\nimport '@common/components/data/importExportService';\nimport '@common/components/data/excelImport/excelImporterController';\nimport '@common/components/data/excelImport/excelImportValues';\nimport '@common/components/data/unitLabel/unitLabel';\nimport '@common/components/data/dataseriesselector/dataSourceFilter';\nimport '@common/components/data/dataseriesselector/assetselector/assetselectorcontroller';\nimport '@common/components/data/dataseriesselector/areaselector/areaselector';\nimport '@common/components/data/dataseriesselector/projectSelector/projectSelector';\nimport '@common/components/data/dataseriesselector/consequenceSelector/consequenceSelector';\nimport '@common/components/data/dataseriesselector/unitSelector/unitSelector';\nimport '@common/components/data/dataseriesselector/businessunitSelector/businessunitSelector';\nimport '@common/components/data/dataseriesselector/unitSelector/unitSelector';\nimport '@common/components/data/dataseriesselector/userselector/userselector';\nimport '@common/components/data/dataseriesselector/boardselector/boardselector';\nimport '@common/components/data/dataseriesselector/datalistselector/datalistselector';\nimport '@common/components/data/dataseriesselector/boolselector/boolselectorcontroller';\nimport '@common/components/data/dataseriesselector/improvementselectors/prioritystatusselector/prioritystatusselector';\nimport '@common/components/data/dataseriesselector/improvementselectors/improvementcategoryselector/improvementcategoryselector';\nimport '@common/components/data/dataseriesselector/a3selectors/a3templateselector/a3templateselector';\nimport '@common/components/data/dataseriesselector/deviationselectors/problemcategoryselector/problemcategoryselector';\nimport '@common/components/data/dataseriesselector/deviationselectors/deviationseverityselector/deviationseverityselector';\nimport '@common/components/data/dataseriesselector/deviationselectors/deviationtypeselector/deviationtypeselector';\nimport '@common/components/data/dataseriesselector/deviationselectors/problemreasonselector/problemreasonselector';\nimport '@common/components/data/dataseriesselector/boardselectors/boardstatusselector/boardstatusselector';\nimport '@common/components/data/dataseriesselector/numberselector/numberselectorcontroller';\nimport '@common/components/data/dataseriesselector/stringselector/stringselectorcontroller';\nimport '@common/components/data/dataseriesselector/dataseries-selector.css';\nimport \"@common/components/data/datavaluesList/datavaluesListModalController\"\nimport \"@common/components/data/dataSourceSearchFilter\"\nimport '@common/components/data/dataseriesselector/tasktagselector/tasktagselector';\nimport '@common/components/data/timeframeSelector/timeframeSelectorModal';\n\nimport '@common/shared/layout/clock/countdown';\nimport '@common/shared/layout/ibox/iboxExpandButtonController';\nimport '@common/shared/layout/assetSelector/assetSelectorDropdown';\nimport '@common/shared/layout/assetSelector/assetSelectorModalController';\nimport '@common/shared/layout/assetMultiSelector/assetMultiSelectorController';\nimport '@common/components/admin/assets/assets.css';\nimport '@common/shared/layout/projectSelector/projectSelectorDropdown';\nimport '@common/shared/layout/userSelector/userSelectorDropdown';\nimport '@common/shared/layout/boardTaskSelector/boardTaskSelectorDropdown';\nimport '@common/shared/modal/fullscreen/fullscreenWidgetController';\nimport '@common/shared/modal/fullscreen/fullscreenWidget.css';\nimport '@common/shared/filters/colorFilter';\nimport '@common/shared/filters/deviationSeverityTranslationFilter';\nimport '@common/shared/filters/improvementPriorityTranslationFilter';\nimport '@common/shared/filters/unsafe';\n\n// components\nimport '@common/shared/dates/datePicker'\nimport '@common/shared/dates/datePickerSlot'\nimport \"@common/components/customer/customerLookup\"\n\n// vue\nimport { defineCustomElement } from \"vue\"\n\n// directives\nimport '@common/components/document/dropzone/dropzone'\nimport '@common/components/document/fileinfo/fileinfo';\nimport '@common/components/document/imagefileinfo/imagefileinfo';\nimport '@common/components/document/videofileinfo/videofileinfo';\nimport '@common/components/board/boardresolver/boardResolverController';\nimport '@common/shared/errorHandling/errorHandling'\nimport '@common/shared/ngEnter/ngEnter'\nimport \"@common/shared/auth/modulesDirective\"\nimport \"@common/shared/auth/subscriptionDirective\"\nimport '@common/shared/auth/rolesDirective';\n\n// custom elements\n\nimport \"@common/components/digilean/DigiLeanButton\"\nimport \"@common/components/digilean/DigiLeanLogo\"\nimport \"@common/components/digilean/DigiLeanInput\"\nimport \"@common/components/digilean/DigileanJsonEditor\"\nimport \"@common/components/digilean/DigileanDialog\"\nimport \"@common/components/icons/DigileanChecked\"\nimport \"@common/components/icons/DigileanFailed\"\nimport \"@common/components/icons/DigileanWorking\"\nimport \"@common/components/icons/DigiLeanOkWithErrors\"\nimport \"@common/components/icons/spinnerIcon\"\nimport \"@common/shared/dates/dateViewer\"\nimport \"@common/shared/dates/dateTimeViewer\"\nimport \"@common/components/translation/translateLabel\"\n\nimport \"@common/components/users/userDebug\"\n\nimport \"@common/components/users/userTokenViewer\"\n\nimport \"@common/components/appConfigDebug\"\n\nimport \"@common/components/admin/apiclients/apiScopesDialog\"\nimport \"@common/components/icons/fontawesome\"\n\nimport \"@common/components/viewers/pdfViewer\"\n\nimport businessUnitMembers from \"@common/components/admin/assets/businessUnitMembers.vue\"\ncustomElements.define('business-unit-members', defineCustomElement(businessUnitMembers))\n\nimport \"@common/components/dashboard/designer/appstore/pdfDisplayer/pdfDisplayerAppNg\"\nimport \"@common/components/dashboard/designer/appstore/pdfDisplayer/pdfDisplayerApp.css\"\n\nimport FileUploader from \"@common/components/document/fileUploader.vue\"\ncustomElements.define('file-uploader', defineCustomElement(FileUploader))\n\nimport businessUnit from \"@common/components/translation/businessUnit.vue\"\ncustomElements.define('business-unit', defineCustomElement(businessUnit))\n\nimport \"@common/components/digilean/digiLeanPopup\"\nimport \"@common/components/toast/toastMaster\"\n\n// Strategy\nimport '@common/components/strategy/strategyService';\n\n// dashboard \nimport '@common/components/dashboard/dashboard.css';\nimport '@common/components/dashboard/designer/appstore/3cTable/threeCTableApp';\nimport '@common/components/dashboard/designer/appstore/3cTable/threeCTable';\nimport '@common/components/dashboard/designer/appstore/3cTable/threeCTable.css';\nimport '@common/components/dashboard/designer/appstore/3cTable/threeCService';\nimport '@common/components/dashboard/designer/appstore/3cTable/cells/threeCDateCell';\nimport '@common/components/dashboard/designer/appstore/3cTable/cells/threeCOwnerCell';\nimport '@common/components/dashboard/designer/appstore/3cTable/cells/threeCStatusCell';\nimport '@common/components/dashboard/designer/appstore/3cTable/cells/threeCTextCell';\nimport '@common/components/dashboard/designer/appstore/smartCommon/commonCellSelectionController';\nimport '@common/components/dashboard/designer/appstore/smartCommon/smartProgressCell/smartProgressCell';\nimport '@common/components/dashboard/designer/appstore/smartCommon/smartPersonCell/smartPersonCell';\nimport '@common/components/dashboard/designer/appstore/smartCommon/smartDateCell/smartDateCell';\nimport '@common/components/dashboard/designer/appstore/smartCommon/smartTextCell/smartCommonTextCell';\nimport '@common/components/dashboard/designer/appstore/smartCommon/smartTargetCell/smartTargetCell';\nimport '@common/components/dashboard/designer/appstore/smartCommon/smartLinkCell/smartLinkCell';\nimport '@common/components/dashboard/designer/appstore/smartCommon/smartRowNoCell/smartRowNoCell';\nimport '@common/components/dashboard/designer/appstore/smartCommon/smartRiskCell/smartRiskCell';\nimport '@common/components/dashboard/designer/appstore/smartCommon/smartRatingCell/smartRatingCell';\nimport '@common/components/dashboard/designer/appstore/smartCommon/smartCheckCell/smartCheckCell';\nimport '@common/components/dashboard/designer/appstore/smartCommon/smartNumberCellAutomatic/smartCommonNumberCellAutomatic';\nimport '@common/components/dashboard/designer/appstore/smartCommon/smartNumberCellAggregate/smartCommonNumberCellAggregate';\nimport '@common/components/dashboard/designer/appstore/smartCommon/smartNumberCell/smartCommonNumberCell';\nimport '@common/components/dashboard/designer/appstore/smartCommon/smartColumnWidthConfig/smartColumnWidthConfig';\nimport '@common/components/dashboard/designer/appstore/smartCommon/smartIconCell/smartIconCell';\nimport '@common/components/dashboard/designer/appstore/smartCommon/smartIconCell/predefinedIcons';\nimport '@common/components/dashboard/designer/appstore/smarttable/templates/smarttableNameCell/smarttableNameCell';\nimport '@common/components/dashboard/designer/appstore/smarttable/templates/customerCell/smarttableCustomerCell';\nimport '@common/components/dashboard/designer/appstore/smarttable/templates/textCell/smarttableTextCell';\nimport '@common/components/dashboard/designer/appstore/smarttable/templates/linkCell/smarttableLinkCell';\nimport '@common/components/dashboard/designer/appstore/smarttable/templates/numberCell/smarttableNumberCell';\nimport '@common/components/dashboard/designer/appstore/smarttable/templates/numberCellAutomatic/smarttableNumberCellAutomatic';\nimport '@common/components/dashboard/designer/appstore/smarttable/templates/numberCellAggregate/smarttableNumberCellAggregate';\nimport '@common/components/dashboard/designer/appstore/smarttable/templates/smarttableTargetCell/smarttableTargetCell';\nimport '@common/components/dashboard/designer/appstore/smarttable/templates/personCell/smarttablePersonCell';\nimport '@common/components/dashboard/designer/appstore/smarttable/templates/dateCell/smarttableDateCell';\nimport '@common/components/dashboard/designer/appstore/smarttable/templates/startDateCell/smarttableStartDateCell';\nimport '@common/components/dashboard/designer/appstore/smarttable/templates/endDateCell/smarttableEndDateCell';\nimport '@common/components/dashboard/designer/appstore/smarttable/templates/ownerCell/smarttableOwnerCell';\nimport \"@common/components/dashboard/smarttable/templates/progressCell/smarttableProgressCell\"\nimport \"@common/components/dashboard/smarttable/templates/progressCell/smarttableProgressbar\"\nimport \"@common/components/dashboard/greencross/datasourceDailyKPITarget\"\nimport '@common/components/dashboard/designer/appstore/smartActionList/smartActionListApp';\nimport '@common/components/dashboard/designer/appstore/smartActionList/smartActionListService';\nimport '@common/components/dashboard/designer/appstore/smartActionList/taskActions/taskActions';\nimport '@common/components/dashboard/designer/appstore/smartActionList/taskActions/taskActions.css';\nimport '@common/components/dashboard/designer/appstore/smartActionList/templates/linkCell/smartactionlistLinkCell';\nimport '@common/components/dashboard/designer/appstore/smartActionList/templates/smartactionlistStatusCell/smartactionlistStatusCell';\nimport '@common/components/dashboard/designer/appstore/smartActionList/templates/smartActionListTitleCell/smartActionListTitleCell';\nimport '@common/components/dashboard/designer/appstore/smartActionList/templates/smartActionListTaskdescriptionCell/smartActionListTaskdescriptionCell';\nimport '@common/components/dashboard/designer/appstore/smartActionList/templates/responsibleCell/smartactionlistResponsibleCell';\nimport '@common/components/dashboard/designer/appstore/smartActionList/templates/dueDateCell/smartActionListDueDateCell';\nimport '@common/components/dashboard/designer/appstore/smartActionList/templates/startDateCell/smartactionlistStartDateCell';\nimport '@common/components/dashboard/designer/appstore/smartActionList/templates/textCell/smartactionlistTextCell';\nimport '@common/components/dashboard/designer/appstore/smartActionList/templates/dateCell/smartactionlistDateCell';\nimport '@common/components/dashboard/designer/appstore/smartActionList/templates/lastModifiedDatecell/smartactionlistLastModifiedDateCell';\nimport '@common/components/dashboard/designer/appstore/smartActionList/templates/smartactionlistTargetCell/smartactionlistTargetCell';\nimport '@common/components/dashboard/designer/appstore/smartActionList/templates/personCell/smartactionlistPersonCell';\nimport '@common/components/dashboard/designer/appstore/smartActionList/templates/progressCell/smartactionlistProgressCell';\nimport '@common/components/dashboard/designer/appstore/smartActionList/templates/progressCellSubTasks/smartactionlistProgressCellSubTasks';\nimport '@common/components/dashboard/designer/appstore/smartActionList/templates/numberCell/smartactionlistNumberCell';\nimport '@common/components/dashboard/designer/appstore/smartActionList/templates/numberCellAggregate/smartactionlistNumberCellAggregate';\nimport '@common/components/dashboard/designer/appstore/smartActionList/templates/numberCellAutomatic/smartactionlistNumberCellAutomatic';\nimport '@common/components/dashboard/designer/appstore/smartActionList/templates/subTasksCell/subTasksCell';\nimport '@common/components/dashboard/designer/appstore/deviationCategorySummary/deviationCategorySummary';\nimport '@common/components/dashboard/designer/appstore/actionList/actionListApp';\nimport '@common/components/dashboard/designer/appstore/actionList/actionListApp.css';\nimport '@common/components/dashboard/barchart/barchartcontroller';\nimport '@common/components/dashboard/designer/appstore/comparechart/comparechart';\nimport '@common/components/dashboard/designer/appstore/debug/debugApp';\nimport '@common/components/dashboard/designer/appstore/a3viewer/a3Viewer';\nimport '@common/components/dashboard/designer/appstore/a3viewer/a3ViewerApp';\nimport '@common/components/dashboard/designer/appstore/a3viewer/a3viewer.css';\nimport '@common/components/dashboard/designer/appstore/calendar/personalcalendar';\nimport '@common/components/dashboard/designer/appstore/calendar/teamcalendar';\nimport '@common/components/dashboard/designer/appstore/daycounter/daycounter';\nimport '@common/components/dashboard/designer/appstore/greencross/kpiLetterBase';\nimport '@common/components/dashboard/designer/appstore/imagedisplayer/imagedisplayer';\nimport '@common/components/dashboard/designer/appstore/messagedisplayer/messagedisplayer';\nimport '@common/components/dashboard/designer/appstore/quickIncidentRegistration/quickIncidentRegistrationApp';\nimport '@common/components/dashboard/designer/appstore/quickIncidentRegistration/quickIncidentRegistrationConfigurationController';\nimport '@common/shared/messages/messageAttachment';\n\n// board\nimport '@common/components/board/template/newboardtemplateController';\nimport '@common/components/board/assetMessage/assetMessage';\nimport '@common/components/board/newBoard/newBoardFromTemplateController';\nimport '@common/components/board/postits/postitHub';\nimport '@common/components/board/postits/postitPredefinedTags';\nimport '@common/components/board/postits/timeboardPostits';\nimport '@common/components/board/boardDesigner/boardDesignerController';\nimport '@common/components/board/boardresolver/boardDesignerResolverController';\nimport '@common/components/board/boardDesigner/boardCategoryDetailsController';\nimport '@common/components/board/boardTask/boardTaskController';\nimport '@common/components/board/boardTask/newBoardTaskController';\nimport '@common/components/board/boardTask/subtask/subtaskStatus';\nimport '@common/components/board/taskattachments/taskattachments';\nimport '@common/components/board/taskattachments/taskattachment';\nimport '@common/components/board/productionboard/productionBoard';\nimport '@common/components/board/productionboard/productionBoardApp';\nimport '@common/components/board/productionboard/productionBoardRowConfigurationController';\nimport '@common/components/board/productionboard/productionBoardMandatoryFieldsController';\nimport '@common/components/board/productionboard/productionBoard.css';\nimport '@common/components/board/yearlyboard/yearlyboard';\nimport '@common/components/board/yearlyboard/yearlyboardDesigner';\nimport '@common/components/board/yearlyboard/yearlyboardRenderService';\nimport '@common/components/board/yearlyboard/yearlyboard.css';\nimport '@common/components/board/yearlyboard/monthlyRenderService';\nimport '@common/components/board/yearlyboard/weeklyRenderService';\nimport '@common/components/board/yearlyboard/boardRowProvider';\nimport '@common/components/board/yearlyboard/actionListRowProvider';\nimport '@common/components/board/yearlyboard/tasks/yearlyTask';\nimport '@common/components/board/yearlyboard/tasks/yearlyTask.css';\nimport '@common/components/board/yearlyboard/tasks/newYearlyTaskController';\nimport '@common/components/board/boardLayout';\nimport '@common/components/board/selector/threeCBoardSelector';\nimport '@common/components/board/selector/memberBoardSelector';\nimport '@common/components/board/selector/memberBoardSelector.css';\nimport '@common/components/board/dynamicBoard';\nimport '@common/components/board/smartKanban/smartKanban';\nimport '@common/components/board/smartKanban/smartKanbanCard';\nimport '@common/components/board/smartKanban/smartKanban.css';\nimport '@common/components/board/smartKanban/columnProviders/statusColumnProvider';\nimport '@common/components/board/smartKanban/columnProviders/responsibleColumnProvider';\nimport '@common/components/board/smartKanban/columnProviders/predefinedLabelColumnProvider';\nimport '@common/components/board/cloneInfo/cloneInfoController';\nimport '@common/components/board/parenttaskInfo/parenttaskInfoController';\nimport '@common/components/board/clonetask/clonedeleteController';\nimport '@common/components/board/clonetask/clonetaskController';\nimport '@common/components/board/movetask/movetaskController';\nimport '@common/components/board/newBoard/boardtypes/weeklyBoard/weeklyBoardPreview';\nimport '@common/components/board/newBoard/boardtypes/projectBoard/projectBoardPreview';\nimport '@common/components/board/newBoard/boardtypes/smartactionlist/smartActionListPreview';\nimport '@common/components/board/newBoard/boardtypes/yearlyBoard/yearlyBoardPreview';\nimport '@common/components/board/moveOrCloneSelector/moveOrCloneSelector';\nimport '@common/components/board/repeatInfo/repeatInfoController';\nimport '@common/components/board/repeattask/repeattaskController';\nimport '@common/components/board/repeattask/repeatdeleteController';\nimport '@common/components/board/tasktoactionlist/tasktoactionlistController';\nimport '@common/components/board/boardController';\nimport '@common/components/board/taskDrawingService';\nimport '@common/components/board/boardDrawService';\n\nimport '@common/components/board/connectedusers/connectedUsers';\nimport '@common/components/board/personal/personalboardController';\nimport '@common/components/board/personal/personalboardFilter';\nimport '@common/components/board/personal/personalTaskCard';\nimport '@common/components/board/board.css';\nimport '@common/components/board/boardDesigner/boardDesigner.css';\nimport '@common/components/board/personal/personalboard.css';\nimport '@common/components/board/postits/postit.css';\n\nimport '@common/components/tasks/subtasks/moveSubTaskController';\nimport '@common/components/tasks/personal/3Ctask';\n\n// tasks\nimport '@common/components/tasks/personaltaskListController';\nimport '@common/components/tasks/taskList/taskListModalController';\nimport '@common/components/tasks/taskList/projectTaskList';\nimport '@common/components/tasks/taskstatus/personalTaskStatus';\nimport '@common/components/tasks/subtasks/subTaskList';\nimport '@common/components/tasks/subtasks/subTaskList.css';\nimport '@common/components/tasks/subtasks/taskUserSelector';\nimport '@common/components/tasks/subtasks/taskUserSelector.css';\nimport '@common/components/tasks/subtasks/taskBoardSelector';\nimport '@common/components/tasks/subtasks/taskBoardSelector.css';\n\nimport '@common/components/tasks/subtasks/newSubTaskList';\nimport '@common/components/tasks/taskstatus/animationTaskStatus';\nimport '@common/components/tasks/taskSearch/taskList';\nimport '@common/components/tasks/taskSearch/taskListFilter';\nimport '@common/components/tasks/taskSearch/taskListResult';\nimport '@common/components/tasks/taskSearch/taskListResult.css';\nimport '@common/components/tasks/team/teamspaceController';\nimport '@common/components/tasks/team/teamKanban';\nimport '@common/components/tasks/team/teamKanbanCard';\nimport '@common/shared/tasks/taskStatus';\nimport '@common/shared/tasks/taskStatus.css';\n\n// admin\nimport '@common/components/admin/boards/boardSettingsController';\nimport '@common/components/admin/language/languageLabelAdmin';\nimport '@common/components/admin/language/languageAdminService';\nimport '@common/components/admin/data/datasourceValues';\nimport '@common/components/admin/contactlist/newContactPersonModalController';\nimport '@common/components/admin/organization/billing/organizationBillingAdmin';\nimport '@common/components/admin/organization/billing/businessunitAccount';\nimport '@common/components/admin/organization/billing/customerAccountModalController';\nimport '@common/components/admin/assets/assetParticipantsController';\nimport '@common/components/admin/admin.css';\nimport '@common/components/admin/organization/customerAccountService';\nimport '@common/components/admin/organization/messagecenter/newmessage/newMessageModalController';\n\n// flexiboard\nimport '@common/components/flexiboard/flexiboardsController';\nimport '@common/components/flexiboard/flexiboardController';\nimport '@common/components/flexiboard/flexiboardCards/defaultBoardCard';\nimport '@common/components/flexiboard/flexiboardCards/weeklyBoardCard';\nimport '@common/components/flexiboard/flexiboardCards/yearlyBoardCard';\nimport '@common/components/flexiboard/flexiboardCards/dashboardCard';\nimport '@common/components/flexiboard/flexiboardCards/smartActionlistCard';\nimport '@common/components/flexiboard/flexiboardCards/personalKanbanCard';\nimport '@common/components/flexiboard/flexiboardCards/performanceBoardCard';\nimport '@common/components/flexiboard/flexiboardCards/taskSearchCard';\nimport '@common/components/flexiboard/flexiboardCards/mySpaceCard';\nimport '@common/components/flexiboard/flexiboardCards/teamSpaceCard';\nimport '@common/components/flexiboard/flexiboardCards/customerKSCard';\nimport '@common/components/flexiboard/newFlexiboard/newFlexiboardController';\nimport '@common/components/flexiboard/newFlexiboard/newFlexiboardConfigurationController';\nimport '@common/components/flexiboard/flexiboardtemplates/emptyFlexiboardPreview/emptyFlexiboardPreview';\nimport '@common/components/flexiboard/flexiboard.css';\nimport '@common/components/flexiboard/flexiboardCards/flexiboardCards.css';\nimport '@common/components/flexiboard/flexiboardPage/flexiboardPageContainer';\n\nimport '@common/components/dashboard/designer/widget/widgetController';\nimport '@common/components/dashboard/designer/widget/widget.css';\nimport '@common/components/dashboard/delete/widgetDeleteConfirmation'\n\nimport '@common/components/dashboard/designer/appstore/webviewer/webviewer';\nimport '@common/components/dashboard/designer/appstore/webviewer/webviewer.css';\n\nimport '@common/components/dashboard/designer/appstore/appstoreService';\nimport '@common/components/dashboard/designer/appstore/appstoreController';\n\n// project\nimport '@common/components/project/projectService';\nimport '@common/components/project/projectboard/projectBoardService';\nimport '@common/components/project/projectboard/projectboard';\nimport '@common/components/project/projectboard/projectboard.css';\nimport '@common/components/project/projectportfolio/projectportfolioTimeview';\nimport '@common/components/project/projectIncidentSummary/projectIncidentSummary';\nimport '@common/components/project/projectImprovementSummary/projectImprovementSummary';\nimport '@common/components/project/links/projectLinks';\nimport '@common/components/project/milestones/milestones';\nimport '@common/components/project/projectParticipants/projectParticipants';\nimport '@common/components/project/projectboard/projectCellSelectionController';\nimport '@common/components/project/projectboard/targetVisualizationSelector/targetProjectVisualizationController';\nimport '@common/components/project/projectboard/targetVisualizationSelector/targetVisualizationSelectorController';\nimport '@common/components/project/projectboard/templates/projectNameCell/projectNameCell';\nimport '@common/components/project/projectboard/templates/projectDescriptionCell/projectDescriptionCell';\nimport '@common/components/project/projectboard/templates/projectStatusCell/projectStatusCell';\nimport '@common/components/project/projectboard/templates/projectLinkToHubCell/projectLinkToHubCell';\nimport '@common/components/project/projectboard/templates/projectNumberCell/projectNumberCell';\nimport '@common/components/project/projectboard/templates/customerCell/projectCustomerCell';\nimport '@common/components/project/projectboard/templates/contactPersonCell/projectContactPersonCell';\nimport '@common/components/project/projectboard/templates/textCell/projectTextCell';\nimport '@common/components/project/projectboard/templates/textCell/predefinedLabels';\nimport '@common/components/project/projectboard/templates/numberCell/numberCell';\nimport '@common/components/project/projectboard/templates/numberCellAutomatic/numberCellAutomatic';\nimport '@common/components/project/projectboard/templates/numberCellAggregate/numberCellAggregate';\nimport '@common/components/project/projectboard/templates/projectTargetCell/projectTargetCell';\nimport '@common/components/project/projectboard/templates/targetFromAppCell/targetFromAppCell';\nimport '@common/components/project/projectboard/templates/textFromAppCell/textFromAppCell';\nimport '@common/components/project/projectboard/templates/personCell/projectPersonCell';\nimport '@common/components/project/projectboard/templates/dateCell/projectDateCell';\nimport '@common/components/project/projectboard/templates/startDateCell/projectStartDateCell';\nimport '@common/components/project/projectboard/templates/endDateCell/projectEndDateCell';\nimport '@common/components/project/projectboard/templates/ownerCell/ownerCell';\nimport '@common/components/project/projectboard/templates/projectParticipantsCell/projectParticipantsCell';\nimport '@common/components/project/projectboard/templates/projectParticipantsCell/projectParticipantModalController';\nimport '@common/components/project/projectboard/templates/milestoneCell/projectMilestoneCell';\nimport '@common/components/project/projectboard/templates/milestoneCell/projectNextMilestoneCell';\nimport '@common/components/project/projectboard/templates/projectTasksCell/projectTasksCell';\nimport '@common/components/project/projectboard/templates/progressTasksCell/projectProgressTasksCell';\nimport \"@common/components/project/projectboard/templates/progressCell/progressbar\"\nimport \"@common/components/project/projectboard/templates/progressCell/projectProgressCell\"\nimport '@common/components/project/projectGrid/projectGridController';\nimport '@common/components/project/projectGrid/projectDetailsController';\nimport '@common/components/project/projectGrid/projectMilestoneSummary/projectMilestoneSummary';\nimport '@common/components/project/projectGrid/projectMilestone/projectMilestoneListModalController';\nimport '@common/components/project/projectGrid/projectOnTime/projectOnTime';\nimport '@common/components/project/projectResourceLinks/projectResourceLinks';\nimport '@common/components/project/projectboard/projectselector/projectSelectorController';\nimport '@common/components/project/projectboard/projectselector/projectNewController';\nimport '@common/components/project/projectboard/cellcloneselector/cellCloneSelectorController';\nimport '@common/components/project/projectportfolio/projectPortfolioController';\nimport '@common/components/project/projectportfolio/newProjectPortfolioConfigurationController';\nimport '@common/components/project/customerstatusController';\nimport '@common/components/project/messages/projectMessages';\nimport '@common/components/project/messages/projectMessageService';\nimport '@common/components/project/selectedProjectController';\nimport '@common/components/project/projectTask/newtasktoprojecttasklistController';\nimport '@common/components/project/project.css';\n\n// IMPROVEMENT\nimport '@common/components/improvement/improvement.css';\nimport '@common/components/improvement/suggestionService';\nimport '@common/components/improvement/mymessages/myMessagesController';\nimport '@common/components/improvement/priorityMatrix/priorityMatrix';\nimport '@common/components/improvement/priorityMatrix/priorityMatrixApp';\nimport '@common/components/improvement/suggestionList/suggestionListModalController';\nimport '@common/components/improvement/improvementActionList/improvementActionList';\nimport '@common/components/improvement/improvementFilter/improvementFilter';\nimport '@common/components/improvement/improvementPriorityFilter/improvementPriorityFilter';\nimport '@common/components/improvement/leadtimeImprovement/leadtimeImprovementController';\nimport '@common/components/improvement/initiativeRealizationPerGroup/initiativeRealizationPerGroupController';\nimport '@common/components/improvement/initiativeRealizationPerGroup/initiativeTimeRealizationPerGroupController';\nimport '@common/components/improvement/topImprovementInitiatives/topImprovementInitiativesController';\nimport '@common/components/improvement/topImprovementInitiatives/topTimeImprovementInitiativesController';\nimport '@common/components/improvement/monthlystatusImprovement/monthlystatusImprovementController';\nimport '@common/components/improvement/rangeImprovement/rangeImprovementController';\nimport '@common/components/improvement/roiperassetImprovement/roiperassetImprovementController';\nimport '@common/components/improvement/widgetImprovementStatus/widgetImprovementStatus';\nimport '@common/components/improvement/likes/likesController';\nimport '@common/components/improvement/newSuggestionModalController';\nimport '@common/components/improvement/ongoingimprovement/ongoingImprovementApp';\nimport '@common/components/improvement/improvementstatusController';\nimport '@common/components/improvement/fullImprovementModalController';\n\nimport '@common/components/improvement/improvementList/improvementList';\nimport '@common/components/improvement/improvementList/improvementListFilter';\nimport '@common/components/improvement/improvementList/improvementListResult';\n\nimport '@common/components/improvement/ongoingimprovement/ongoingImprovement';\nimport '@common/components/improvement/ongoingimprovement/improvementCommonService';\nimport '@common/components/improvement/ongoingimprovement/improvementColumn';\nimport '@common/components/improvement/ongoingimprovement/ongoingImprovement.css';\n\nimport '@common/components/users/userProvider';\n\n// DEVIATION / incident\nimport '@common/components/deviation/deviationList/deviationListModalController';\nimport '@common/components/deviation/deviationFilter/deviationFilter';\nimport '@common/components/deviation/status/deviationStatusController';\nimport '@common/components/deviation/evaluation/deviationEvaluationController';\nimport '@common/components/deviation/status/leadtimeDeviationController';\nimport '@common/components/deviation/status/monthlystatusDeviationController';\nimport '@common/components/deviation/status/monthlyStatusDeviationArea';\nimport '@common/components/deviation/status/monthlyStatusDeviationSeverity';\nimport '@common/components/deviation/evaluation/deviationCauseSummary/deviationCauseSummary';\nimport '@common/components/deviation/evaluation/deviationConsequenceSummary/deviationConsequenceSummary';\nimport '@common/components/deviation/evaluation/deviationEvaluationList/deviationEvaluationList';\n\nimport '@common/components/dashboard/designer/appstore/deviationactions/deviationActionListResult';\nimport '@common/components/deviation/deviationActionList/deviationActionList';\nimport '@common/components/deviation/deviationActionList/deviationActionList.css';\n\n// shared\nimport '@common/shared/debounce';\nimport '@common/shared/fileService';\nimport '@common/shared/paging/pagerService';\nimport '@common/shared/paging/pager';\nimport '@common/shared/paging/pager.css';\nimport '@common/shared/paging/pagerElement';\n\nimport \"@common/components/dashboard/designer/common/appHeaderTitle/appHeaderTitle\"\nimport \"@common/components/dashboard/designer/common/flexiboard-apps.css\"\nimport \"@common/components/theme/themeSelector\"\nimport \"@common/components/monitoring/heartbeatIndicator\"\n\n\nimport \"@common/components/helpSearch/helpSearch\"\nimport \"@common/components/helpSearch/helpSearch.css\"","import angular from \"angular\"\nimport { authUser } from \"@common/stores/userStore\"\nimport { DigiLeanAuthUser, DigiLeanRole, RoleArray } from \"@common/model/types\"\nimport digiLeanOidc from \"@common/services/auth/digileanOidc\"\n\nangular.module('DigiLean').factory('authService', ['moduleCache', '$rootScope',\n function (moduleCache, $rootScope) {\n \n let currentUser: DigiLeanAuthUser = {loggedIn: false, roles: new RoleArray()}\n authUser.subscribe(u => {\n currentUser = u\n if (currentUser.loggedIn) {\n setTimeout(() => {\n try {\n $rootScope.publish(\"userLoggedIn\", u)\n }\n catch (e) {}\n }, 500)\n }\n })\n\n digiLeanOidc.events.addUserSignedOut(() => {\n logOut() // this ensures user logs out properly when another tab signs out. We don't want it for Teams, so place it here instead of in the common digileanOidc file.\n })\n\n function login() {\n return digiLeanOidc.login()\n }\n\n function logOut() {\n digiLeanOidc.signOut()\n moduleCache.removeAll()\n }\n\n function getAccessToken() {\n return currentUser.token\n }\n\n return {\n isCurrentUser: function(userId: string) {\n return currentUser.userId === userId\n },\n getCurrentUser: () => {\n return currentUser\n },\n login,\n renew: digiLeanOidc.silentRenew,\n logOut,\n getAccessToken,\n hasRole: (role: DigiLeanRole) => {\n if (!currentUser.roles)\n return false\n const hasRole = currentUser.roles.hasRole(role)\n return hasRole\n }\n }\n }])\n\n","import { authUser } from \"@common/stores/userStore\"\nimport { getConnectionId } from \"@common/services/systemHub\"\n\nangular.module('DigiLean').factory('authInterceptorService', ['$q', 'authService', 'errorHandling', \n function ($q, authService, errorHandling) {\n\n var authInterceptorServiceFactory = {};\n let authData = {}\n let sub = authUser.subscribe(u => {\n authData = u\n })\n var _request = function (config) {\n\n config.headers = config.headers || {};\n \n if (authData && authData.token && !config.noAuth) {\n config.headers.Authorization = 'Bearer ' + authData.token;\n } else {\n //authService.login();\n console.log(\"not logged in\");\n }\n\n const connectionId = getConnectionId()\n config.headers.Connectionid = connectionId\n return config;\n };\n\n var _responseError = function (rejection) {\n // manager.signinRedirect();\n if (rejection.status === 401) {\n return authService.renew();\n }\n\n if (rejection.status === 403 ) {\n errorHandling.handleForbidden(rejection)\n }\n\n if (!rejection.config) { // Fix of loadingbar issue with missing config.\n rejection.config = {\n headers: {}\n };\n\n }\n return $q.reject(rejection);\n };\n\n authInterceptorServiceFactory.request = _request;\n authInterceptorServiceFactory.responseError = _responseError;\n\n return authInterceptorServiceFactory;\n }]);","import toaster from \"@common/components/toast\"\n\nangular\n .module('DigiLean')\n .directive(\"clock\", ['$interval', '$translate',\n function ($interval, $translate) {\n return {\n templateUrl: 'clock.html',\n restrict: 'E',\n scope: {\n 'mode': '@'\n },\n link: function (scope, element, attrs) {\n scope.hours = \"..\";\n scope.minutes = \"..\";\n scope.seconds = \"..\";\n\n scope.showHours = true;\n scope.showMinutes = true;\n scope.showSeconds = false;\n\n scope.nearTheEnd = false;\n scope.isCountdownFinished = false;\n var stopTime,\n countDownTime; // so that we can cancel the time updates\n\n // Clock\n scope.mode = \"clock\";\n scope.changeClockMode = function (mode) {\n scope.mode = mode;\n }\n\n scope.$watch(\"mode\", function () {\n scope.nearTheEnd = false;\n scope.isCountdownFinished = false;\n switch (scope.mode) {\n case \"countDown15\":\n startCountDown(15 * 60); // 15 min * 60 sec\n break;\n default:\n startClock();\n break;\n }\n });\n\n var currentSeconds = 0;\n function startCountDown(seconds) {\n currentSeconds = seconds;\n updateCountDown();\n scope.showHours = false;\n scope.showMinutes = true;\n scope.showSeconds = true;\n $interval.cancel(stopTime);\n countDownTime = $interval(countDown, 1000);\n }\n\n function countDown() {\n if (currentSeconds <= 30) {\n scope.nearTheEnd = true;\n }\n if (currentSeconds < 0) {\n scope.isCountdownFinished = true;\n $interval.cancel(countDownTime);\n \n toaster.error(`15 ${$translate.instant(\"NAV_CLOCK_COUNTDOWN_FINISHED_TEXT\")}
        \n ${$translate.instant(\"NAV_CLOCK_COUNTDOWN_FINISHED\")}`, 0);\n return;\n }\n updateCountDown();\n currentSeconds -= 1;\n }\n\n function updateCountDown() {\n var minutes = Math.floor(currentSeconds / 60);\n var seconds = currentSeconds - minutes * 60;\n scope.minutes = addLeadingZero(minutes);\n scope.seconds = addLeadingZero(seconds);\n }\n\n function startClock() {\n scope.showHours = true;\n scope.showMinutes = true;\n scope.showSeconds = false;\n $interval.cancel(countDownTime);\n stopTime = $interval(updateTime, 1000);\n }\n\n\n function addLeadingZero(val) {\n if (val < 10) return \"0\" + val;\n return val;\n }\n\n\n function updateTime() {\n var now = moment();\n scope.hours = addLeadingZero(now.hours());\n scope.minutes = addLeadingZero(now.minutes());\n scope.seconds = addLeadingZero(now.seconds());\n }\n\n\n\n\n // listen on DOM destroy (removal) event, and cancel the next UI update\n // to prevent updating time after the DOM element was removed.\n element.on('$destroy', function () {\n $interval.cancel(countDownTime);\n $interval.cancel(stopTime);\n });\n\n }\n }\n }]);\n","import toaster from \"@common/components/toast\"\n// Obsolete\nangular\n .module('DigiLean')\n .directive(\"versionChecker\", ['$translate', 'versionService',\n function ($translate, versionService) {\n return {\n restrict: 'E',\n link: function (scope, elem, attrs) {\n\n // title\n scope.updateTitle = \"\";\n scope.updateText = \"\";\n // subscribe to version event + check local version vs new.\n $translate(['SYSTEM_UPDATE_TITLE', 'SYSTEM_UPDATE_TEXT']).then(function (translations) {\n\n scope.updateTitle = translations.SYSTEM_UPDATE_TITLE;\n scope.updateText = translations.SYSTEM_UPDATE_TEXT;\n checkVersion();\n });\n\n var displayUpdate = function (version) {\n toaster.info(scope.updateText, scope.updateTitle);\n\n }\n\n // If a \"live\" version is published\n scope.subscribe(\"NewVersion\", function (version) {\n displayUpdate(version);\n });\n\n var checkVersion = function () {\n // Get latest version and check if matches our cached version number\n versionService().getLatestVersion().then(function (version) {\n if (!version) return;\n scope.version = version;\n // Get local version and compare.\n var currentVersion = localStorage.get(\"versionNumber\");\n if (!currentVersion || currentVersion !== version.versionNumber) {\n displayUpdate(version);\n }\n });\n }\n }\n }\n }]);\n","import envConfig from \"@common/envConfig\";\n\n\nangular.module(\"DigiLean\").factory('evaluationService', ['$http',\nfunction ($http) {\n function evaluationService() {\n var resource = \"/evaluation\";\n var resourceUrl = envConfig.webApiUrl + resource;\n return {\n getMyEvaluationForPage: function(isExternal, pageId) { \n isExternal = !!isExternal\n const url = `${resourceUrl}/getMyEvaluationForPage/${pageId}?isExternal=${isExternal}`\n return $http.get(url).then(function (result) {\n return result.data\n })\n },\n\n getEvaluationsForPage: function(isExternal, pageId) { \n isExternal = !!isExternal\n const url = `${resourceUrl}/GetEvaluationsForPage/${pageId}?isExternal=${isExternal}`\n return $http.get(url).then(function (result) {\n return result.data\n })\n },\n evaluatePage: function (isExternal, pageId, evaluation) {\n isExternal = !!isExternal\n const url = `${resourceUrl}/EvaluatePage/${pageId}?isExternal=${isExternal}`\n return $http.put(url, evaluation).then(function (result) {\n return result.data\n })\n },\n removeEvaluationFromPage: function (isExternal, pageId) {\n isExternal = !!isExternal\n const url = `${resourceUrl}/removeEvaluationFromPage/${pageId}?isExternal=${isExternal}`\n return $http.delete(url).then(function (result) {\n return result.data\n })\n },\n }\n }\n return evaluationService;\n}]);","import Dropzone from \"dropzone\";\nimport { getAuthUser } from \"@common/stores/userStore\"\nimport envConfig from \"@common/envConfig\";\n\nangular\n .module('DigiLean')\n .directive(\"dropzoneLocal\",\n function () {\n return {\n restrict: 'A',\n scope: {\n 'uploadedfile': '=',\n 'fileParsedHandler': '&',\n 'acceptedFiles': '@',\n 'uploadPath': '@',\n },\n link: function (scope, element, attrs) {\n const authUser = getAuthUser()\n angular.element(document).ready(function () {\n\n var uploadUrl = envConfig.webApiUrl;\n \n Dropzone.autoDiscover = false;\n if (scope.uploadPath) {\n uploadUrl = envConfig.webApiUrl + scope.uploadPath;\n }\n var config = {\n url: uploadUrl,\n maxFilesize: 100,\n paramName: \"uploadfile\",\n maxThumbnailFilesize: 8,\n uploadMultiple: false,\n autoProcessQueue: true,\n withCredentials: true,\n maxFiles: 10,\n acceptedFiles: scope.acceptedFiles,\n headers: {\n 'Authorization': 'Bearer ' + authUser.token\n }\n };\n\n var eventHandlers = {\n\n 'success': function (file, response) {\n // response can have more than one filinfo, so we need to match the file of the event\n\n scope.fileParsedHandler({ data: response });\n\n setTimeout(function () {\n dropzone.removeFile(file);\n }, 1000);\n\n\n },\n // 'complete': function (file, response) {\n // if (file.status ==\"error\") {\n\n // var errorResponse = file.xhr.response;\n // var errorMessage = errorResponse.exceptionMessage;\n // console.log('error: ' + errorMessage);\n // }\n //}\n //,\n 'addedfile': function (file, response) {\n console.log('added file');\n },\n \n 'drop': function (file, response) {\n console.log('dropped file');\n }\n };\n\n var dropzone = new Dropzone(element[0], config);\n\n // add paste event listener to the page\n document.onpaste = function (event) {\n var items = (event.clipboardData || event.originalEvent.clipboardData).items;\n for (var index in items) {\n var item = items[index];\n if (item.kind === 'file') {\n // adds the file to your dropzone instance\n dropzone.addFile(item.getAsFile())\n }\n }\n }\n\n angular.forEach(eventHandlers, function (handler, event) {\n dropzone.on(event, handler);\n });\n\n });\n\n scope.processDropzone = function () {\n dropzone.processQueue();\n };\n\n scope.resetDropzone = function () {\n dropzone.removeAllFiles();\n }\n }\n }\n });\n","import envConfig from \"@common/envConfig\";\n\nangular.module(\"DigiLean\").factory('hoursService', ['$http', \n function ($http) {\n function hoursService() {\n var resource = \"/hours\";\n var resourceUrl = envConfig.webApiUrl + resource;\n return {\n getProjectHours: function (timePeriod) {\n var url = resourceUrl + \"/GetProjectHours\";\n return $http.post(url, timePeriod).then(function(result){\n return result.data;\n });\n },\n approveHours: function (hours) {\n var url = resourceUrl + \"/approveHours\";\n return $http.post(url, hours).then(function(result){\n return result.data;\n });\n },\n unApproveHours: function (hours) {\n var url = resourceUrl + \"/unApproveHours\";\n return $http.post(url, hours).then(function(result){\n return result.data;\n });\n },\n };\n }\n return hoursService;\n }]);","import * as customerService from \"@common/services/customers/customerService\"\nimport * as pdfService from \"@common/services/pdfService\"\n\nangular\n .module('DigiLean').directive(\"invoiceReport\", ['$filter','hoursService','dataService','dataListService','dataSourceService',\n function ($filter, hoursService, dataService, dataListService, dataSourceService) {\n return {\n templateUrl: 'invoiceReport.html',\n restrict: 'E',\n scope: {\n\n },\n link: function (scope, elem, attrs) {\n scope.isLoading = false;\n scope.isProcessing = false;\n scope.options = {\n timePeriod: {\n timeframe: \"month\",\n useDefaultTimeframes: true\n }\n };\n\n \n\n scope.currentTimePeriod = null;\n scope.loadValues = function (project) {\n project.showDetails = !project.showDetails;\n if (project.hasLoadedValues) return;\n project.hasLoadedValues = true;\n project.isLoadingValues = true;\n var queryOptions = {\n timePeriod: scope.currentTimePeriod,\n filters: [\n // Filter on project\n {\n sourceColumn: \"projectId\",\n operator: \"InList\",\n items: [project.projectId]\n },\n // { // Fakturertbart\n // sourceColumn: \"dimension3\",\n // operator: \"InList\",\n // items: [\"true\"]\n // }\n ]\n }\n dataService().getValuesForPeriod(scope.dataSourceId, queryOptions).then(function (values) {\n values.forEach(value => {\n value.valueDate = moment(value.valueDate).toDate();\n var activity = $filter('filter')(scope.activityCodes, { id: parseInt(value.dimension)}, true);\n if (activity.length > 0) {\n value.activity = activity[0].name;\n }\n var person = $filter('filter')(scope.users, { id: value.dimension2 });\n if (person.length > 0) {\n value.responsible = person[0].fullName;\n }\n });\n project.values = values;\n project.isLoadingValues = false;\n });\n }\n scope.periodChangedHandler = function (timePeriod) {\n if (!timePeriod.timeframe) return;\n scope.currentTimePeriod = timePeriod.period;\n scope.isLoading = true;\n hoursService().getProjectHours(timePeriod.period).then(function (result) {\n result.projectHours.forEach(project => {\n // Extend object for loading values state.\n project.showDetails = false;\n project.hasLoadedValues = false;\n project.isLoadingValues = false;\n project.values = [];\n });\n scope.projects = result.projectHours;\n scope.isLoading = false;\n scope.dataSourceId = result.dataSourceId;\n scope.sumHours = result.totalHours;\n scope.invoiceHours = result.invoiceHours;\n });\n\n };\n scope.printPdf = function(project) {\n pdfService.printProjectHoursReport(project.projectId, scope.currentTimePeriod);\n }\n // Load activityList\n var listOptions = { includeDeletedItems: false };\n dataListService().getFeatureList(\"HourRegistration\", listOptions).then(function (list) {\n if (list) {\n scope.activityCodes = list.items;\n }\n });\n // Load Persons\n customerService.getAllUsers().then(function (users) {\n scope.users = users;\n });\n\n dataSourceService().getFeatureSource(\"ReactivateCustomerAccount\").then(function (source) {\n if (source) {\n var dataSourceId = source.id;\n scope.reactivateSettings = {\n title: \"Reaktiverte kunder\",\n timePeriod: {\n timeframe: \"year\"\n },\n dataSource: source,\n groupedBy: \"dimension\"\n }\n }\n })\n\n }\n\n }\n }]);\n","import * as timeService from \"@common/services/timeService\"\nimport * as employeeService from \"@common/services/employeeService\"\n\nangular\n .module('DigiLean').directive(\"hoursRegistration\", ['$filter', '$uibModal', 'projectService', 'dataService', 'dataListService', 'dataSourceService', 'authService', 'hoursService',\n function ($filter, $uibModal, projectService, dataService, dataListService, dataSourceService, authService, hoursService) {\n return {\n templateUrl: 'hoursRegistration.html',\n restrict: 'E',\n scope: {\n\n },\n link: function (scope, elem, attrs) {\n\n // Hours datasource - FeatureKey => HourRegistration\n // Dimension = Aktivitet (DataListe)\n // Dimension2 = Registrert av (Person => userid)\n // Dimension3 = Fakturerbar (bool)\n // Dimension4 = Godkjent (bool)\n\n var userid = authService.getCurrentUser().userId;\n scope.subscribe('UserAuthenticatedAndReady', function (profile) {\n userid = profile.user.id;\n loadDataForWeek();\n });\n scope.isLoading = true;\n scope.isProcessing = false;\n scope.activityCodes = [];\n var projectIdHoliday = null;\n var projectIdLunch = null;\n\n scope.openDropdown = function() {\n setTimeout(function () {\n $(\".hour-registration-input\").focus();\n $(\".hour-registration-input\").select();\n }, 50);\n }\n\n function loadDataForWeek() {\n if (!scope.selectedWeek) return;\n var options = {\n timePeriod: {\n from: scope.selectedWeek.startDate,\n to: scope.selectedWeek.endDate\n },\n filters: [\n // Filter on current user\n {\n sourceColumn: \"dimension2\",\n operator: \"InList\",\n items: [userid]\n }\n ]\n };\n dataService().getValuesForPeriod(scope.dataSource.id, options).then(function (values) {\n createRows(values, false);\n checkApprovalStatus(values);\n });\n // LoadDashboard\n loadDashboard(scope.dataSource.id);\n }\n\n function createRows(values, createEmptyRows) {\n // Sort\n\n // group by project\n var projectRows = [];\n values.forEach(value => {\n // map activity\n value.activity = value.dimension;\n var activity = $filter('filter')(scope.activityCodes, { id: parseInt(value.dimension) }, true);\n if (activity.length > 0) {\n value.activity = activity[0];\n }\n // group on projects and activity\n var projectInList = $filter('filter')(projectRows, { id: value.projectId, activityId: value.dimension }, true);\n if (projectInList.length > 0) {\n projectInList[0].values.push(value);\n } else {\n var projectRow = {\n id: value.projectId,\n activityId: value.dimension,\n activity: value.activity,\n values: [value]\n }\n projectRows.push(projectRow);\n }\n });\n // Create project rows for quick acces that hasn't a value\n scope.quickAccess.forEach(project => {\n var match = $filter('filter')(projectRows, { id: project.id }, true);\n if (match.length == 0) {\n var projectRow = {\n id: project.id,\n activityId: null,\n activity: \"\",\n values: []\n }\n projectRows.push(projectRow);\n }\n });\n\n projectRows = _.sortBy(projectRows, 'id');\n // Create Row.\n projectRows.forEach(row => {\n var match = $filter('filter')(scope.projects, { id: row.id }, true);\n row.project = {\n id: row.id,\n displayName: \"unknown\"\n }\n if (match.length > 0) {\n row.project = match[0];\n }\n\n if (createEmptyRows) {\n row.values = [];\n }\n scope.table.addRow(scope.table, row, scope.selectedWeek);\n });\n scope.table.calculateTotal();\n }\n // projectlist => Get All to match values, but probably need some favorite\n employeeService.getUserPreference(\"HourRegistrationProjects\").then(function (settings) {\n if (settings && settings.value) {\n angular.forEach(settings.value, function (project) {\n if (project) {\n scope.quickAccess.push({\n id: project.id,\n name: project.name,\n projectNumber: project.projectNumber\n });\n }\n });\n }\n projectService().getList(true).then(function (projects) {\n scope.projects = projects;\n scope.projects.forEach(project => {\n var hasQuickAccess = $filter('filter')(scope.quickAccess, { id: project.id }, true)\n if (hasQuickAccess.length > 0) {\n project.isStar = true;\n } else {\n project.isStar = false;\n }\n if (project.projectNumber == \"002\") {\n projectIdHoliday = project.id;\n } else if (project.projectNumber == \"001\") {\n projectIdLunch = project.id;\n }\n });\n loadFeature()\n });\n });\n\n\n // Feature list and Datasource\n function loadFeature() {\n var listOptions = { includeDeletedItems: false };\n dataListService().getFeatureList(\"HourRegistration\", listOptions).then(function (list) {\n if (list) {\n scope.activityCodes = list.items;\n }\n dataSourceService().getFeatureSource(\"HourRegistration\").then(function (source) {\n if (source) {\n scope.dataSource = source;\n // When all feature info is loaded, we can setup the rest\n setupTimeOptions();\n\n dataSourceService().getFeatureSource(\"NormalWorkingHours\").then(function (normalhourssource) {\n scope.normalHoursSource = normalhourssource;\n calculateFlexitime();\n });\n }\n })\n calculateHolidays();\n });\n }\n\n\n // favorite\n scope.quickAccess = [];\n function saveQuickAccess() {\n employeeService.updateUserPreference(\"HourRegistrationProjects\", scope.quickAccess).then(function (settings) {\n });\n }\n scope.addToQuickAccess = function (project) {\n project.isStar = true;\n scope.quickAccess.push({\n id: project.id,\n name: project.name,\n projectNumber: project.projectNumber\n })\n saveQuickAccess();\n }\n scope.removeFromQuickAccess = function (project) {\n project.isStar = false;\n var isFavorite = $filter('filter')(scope.quickAccess, { id: project.id }, true)\n if (isFavorite.length > 0) {\n var currentIndex = scope.quickAccess.indexOf(isFavorite[0]);\n scope.quickAccess.splice(currentIndex, 1);\n saveQuickAccess();\n }\n }\n\n\n function createRow(table, projectRow, week) {\n var row = {\n id: projectRow.project.id,\n project: projectRow.project,\n activity: projectRow.activity,\n activityId: projectRow.activityId,\n hoursTotal: 0,\n invoiceHours: 0,\n days: [],\n calculateTotal: function () {\n let sum = this.days.reduce((s, f) => {\n return s + f.hoursTotal; // return the sum of the accumulator and the current time, as the the new accumulator\n }, 0);\n this.hoursTotal = sum;\n let invoicesum = this.days.reduce((s, f) => {\n return s + f.invoiceHours; // return the sum of the accumulator and the current time, as the the new accumulator\n }, 0);\n this.invoiceHours = invoicesum;\n table.calculateTotal();\n }\n }\n // Calcluate Days\n week.days.forEach(dayInWeek => {\n // add values\n var day = {\n day: dayInWeek,\n hours: 0,\n hoursTotal: 0,\n invoiceHours: 0,\n newRegistration: {\n hours: 0,\n description: \"\",\n isInvoiceable: row.project.isInvoiceable,\n },\n setHours: function (hours) {\n this.newRegistration.hours = hours;\n },\n deleteRegistration: function (registration) {\n var currentDay = this;\n dataService().delete(registration.id).then(function () {\n var index = day.registrations.indexOf(registration);\n currentDay.registrations.splice(index, 1);\n currentDay.calculateTotal();\n calculateFlexitime();\n calculateHolidays();\n })\n },\n saveRegistration: function () {\n var hours = this.newRegistration.hours.toString();\n hours = hours.replace(\",\", \".\");\n hours = parseFloat(hours);\n // Save datavalue\n var registration = {\n hours: hours,\n description: this.newRegistration.description,\n isInvoiceable: this.newRegistration.isInvoiceable.toString(),\n };\n // Convert to DataValue and save\n scope.isProcessing = true;\n var utcDate = moment.utc(this.day.date).format();\n var activityId = null;\n if (row.activity) activityId = row.activity.id;\n var dataValue = {\n valueDate: utcDate,\n value: hours,\n dimension: activityId,\n projectId: row.project.id,\n dimension2: userid,\n dimension3: registration.isInvoiceable,\n description: registration.description\n };\n\n dataService().add(scope.dataSource.id, dataValue).then(function (savedValue) {\n scope.isProcessing = false;\n registration.id = savedValue.id;\n calculateFlexitime();\n if (dataValue.projectId == projectIdHoliday) {\n calculateHolidays();\n }\n });\n this.registrations.push(registration);\n this.calculateTotal();\n // Clear newRegistration\n this.newRegistration.hours = 0;\n this.newRegistration.description = \"\";\n },\n registrations: [],\n calculateTotal: function () {\n let sum = this.registrations.reduce((s, f) => {\n return s + f.hours; // return the sum of the accumulator and the current time, as the the new accumulator\n }, 0);\n this.hoursTotal = sum;\n var invoicesum = 0;\n this.registrations.forEach(element => {\n if (element.isInvoiceable == 'true') {\n invoicesum += element.hours\n }\n });\n this.invoiceHours = invoicesum;\n row.calculateTotal();\n }\n }\n\n row.days.push(day);\n // Add and calulate values to day\n if (projectRow.values) {\n mapValuesToDay(day, projectRow.values);\n day.calculateTotal();\n }\n\n });\n return row;\n }\n\n function mapValuesToDay(day, values) {\n for (let index = 0; index < values.length; index++) {\n const value = values[index];\n var dayDate = moment(day.day.date).date();\n var valueDate = moment(value.valueDate).date();\n if (dayDate == valueDate) {\n // var invoiceHours = 0;\n day.registrations.push(\n {\n id: value.id,\n activity: value.activity,\n hours: value.value,\n isInvoiceable: value.dimension3,\n description: value.description,\n isApproved: value.dimension4\n }\n );\n }\n }\n }\n\n function setupTable(week) {\n var table = {\n rows: [],\n days: [],\n addRow: function (table, row, week) {\n // Check if project exists\n initProject(row.project);\n var rowIndex = 0;\n var row = createRow(table, row, week);\n var hasProjectRow = $filter('filter')(this.rows, { id: row.id });\n if (hasProjectRow.length > 0) {\n hasProjectRow[0].rowSpan = hasProjectRow.length + 1;\n row.hasParent = true;\n var currentIndex = this.rows.indexOf(hasProjectRow[0]);\n rowIndex = currentIndex + hasProjectRow.length;\n } else {\n row.hasParent = false;\n row.rowSpan = 1;\n }\n if (rowIndex == 0) {\n this.rows.push(row);\n } else {\n this.rows.splice(rowIndex, 0, row);\n }\n\n },\n hoursTotal: 0,\n invoiceHours: 0,\n calculateTotal: function () {\n // total pr row.\n let sum = this.rows.reduce((s, f) => {\n return s + f.hoursTotal; // return the sum of the accumulator and the current time, as the the new accumulator\n }, 0);\n this.hoursTotal = sum;\n sum = this.rows.reduce((s, f) => {\n return s + f.invoiceHours; // return the sum of the accumulator and the current time, as the the new accumulator\n }, 0);\n this.invoiceHours = sum;\n // Calculate total pr day.\n for (let index = 0; index < this.days.length; index++) {\n const dayInWeek = this.days[index];\n var daySum = 0;\n var invoiceSum = 0;\n this.rows.forEach(row => {\n // Get total for day in each row\n daySum += row.days[index].hoursTotal;\n invoiceSum += row.days[index].invoiceHours;\n });\n dayInWeek.hoursTotal = daySum;\n dayInWeek.invoiceHours = invoiceSum;\n }\n }\n }\n // Create days\n week.days.forEach(dayInWeek => {\n var day = {\n day: dayInWeek,\n hoursTotal: 0,\n invoiceHours: 0,\n }\n table.days.push(day);\n });\n // Create rows based on project\n scope.table = table;\n }\n\n function initProject(project) {\n // INternal project should be \"000-099\"\n if (project.projectNumber && project.projectNumber.length == 3 && project.projectNumber.substring(0, 1) == \"0\") {\n project.isInvoiceable = false;\n } else {\n project.isInvoiceable = true;\n }\n }\n\n // Add project\n scope.addRow = function () {\n\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'projectSelectorModal.html',\n controller: 'projectSelectorController',\n resolve: {\n existing: function () {\n return []; // To be replaced with existing project list\n }\n }\n });\n\n modalInstance.result.then(function (exisitingProject) {\n if (exisitingProject) {\n // Load project and create Row\n // map project to project list\n var project = $filter('filter')(scope.projects, { id: exisitingProject.id }, true);\n if (project.length > 0) {\n exisitingProject = project[0];\n }\n var row = {\n id: exisitingProject.id,\n project: exisitingProject\n }\n scope.table.addRow(scope.table, row, scope.selectedWeek);\n }\n }, function () {\n });\n\n }\n\n // Approval\n scope.isWeekApproved = false;\n function checkApprovalStatus(values) {\n // If one or more values not approved => week is not approved\n var approvedValues = $filter('filter')(values, { dimension4: \"true\" });\n if (values.length > 0 && approvedValues.length == values.length) {\n scope.isWeekApproved = true;\n } else {\n scope.isWeekApproved = false;\n }\n }\n scope.approveHours = function (status) {\n // Get all registrations and send the for approval.\n var rows = scope.table.rows;\n var registrations = [];\n rows.forEach(row => {\n row.days.forEach(day => {\n registrations = registrations.concat(day.registrations);\n });\n });\n var list = [];\n registrations.forEach(reg => {\n list.push({\n id: reg.id\n });\n });\n if (list.length > 0) {\n if (status) {\n hoursService().approveHours(list);\n scope.isWeekApproved = true;\n } else {\n hoursService().unApproveHours(list);\n scope.isWeekApproved = false;\n }\n\n }\n }\n\n // Week and time setup\n scope.selectWeek = function (week) {\n scope.selectedWeek = week;\n // SETUP TABLE\n setupTable(scope.selectedWeek, []);\n // Load data\n loadDataForWeek();\n\n }\n\n function setupTimeOptions() {\n scope.months = timeService.getMonths();\n scope.selectedYear = moment().year(); // Get currentYear if not set\n var currentMonth = moment().month();\n var month = scope.months[currentMonth];\n month.weeks = timeService.getWeeksInMonth(scope.selectedYear, month.id);\n scope.selectedMonth = month;\n var currentWeek = moment().isoWeek();\n var hasWeek = $filter('filter')(scope.selectedMonth.weeks, { number: currentWeek }, true);\n if (hasWeek.length > 0) {\n scope.selectWeek(hasWeek[0]);\n } else {\n scope.selectWeek(scope.selectedMonth.weeks[0]);\n }\n }\n\n function getPreviousWeek() {\n var currentWeekIndex = scope.selectedMonth.weeks.indexOf(scope.selectedWeek);\n var currentWeekNumber = scope.selectedWeek.number;\n var previousWeekIndex = currentWeekIndex - 1;\n if (currentWeekIndex == 0) { // First week, so we need to go back a month\n scope.previousMonth(false);\n previousWeekIndex = scope.selectedMonth.weeks.length - 1;\n }\n var previousWeek = scope.selectedMonth.weeks[previousWeekIndex];\n if (previousWeekIndex == (scope.selectedMonth.weeks.length - 1) && previousWeek.number == currentWeekNumber) {\n previousWeek = scope.selectedMonth.weeks[previousWeekIndex - 1];\n }\n return previousWeek;\n }\n scope.previousWeek = function () {\n var previousWeek = getPreviousWeek();\n scope.selectWeek(previousWeek);\n }\n scope.nextWeek = function () {\n var currentWeekIndex = scope.selectedMonth.weeks.indexOf(scope.selectedWeek);\n var currentWeekNumber = scope.selectedWeek.number;\n var nextWeekIndex = currentWeekIndex + 1;\n if (nextWeekIndex > (scope.selectedMonth.weeks.length - 1)) { // Last week of month, so we need to go forward a month\n scope.nextMonth(false);\n nextWeekIndex = 0;\n }\n var nextWeek = scope.selectedMonth.weeks[nextWeekIndex];\n // If week is share between two months, we need to move it to the next\n if (nextWeekIndex == 0 && nextWeek.number == currentWeekNumber) {\n nextWeek = scope.selectedMonth.weeks[1];\n }\n scope.selectWeek(nextWeek, true);\n }\n var selectYear = function (year) {\n scope.selectedYear = year;\n // Adjust month\n var month = scope.months[0];\n month.weeks = timeService.getWeeksInMonth(scope.selectedYear, month.id);\n scope.selectedMonth = month;\n setMonthSelection(month);\n scope.selectedWeek = month.weeks[0];\n setWeekSelection(scope.selectedWeek);\n }\n\n scope.selectMonth = function (month) {\n scope.selectedMonth = month;\n scope.selectedMonth.weeks = timeService.getWeeksInMonth(scope.selectedYear, month.id);\n // Also adjust week to be in correct month\n scope.selectedWeek = month.weeks[0];\n };\n\n scope.previousYear = function () {\n selectYear(scope.selectedYear - 1);\n }\n scope.nextYear = function () {\n selectYear(scope.selectedYear + 1);\n }\n scope.previousMonth = function (refreshData) {\n var previousMonth = scope.selectedMonth.id - 1;\n if (previousMonth == 0) {\n previousMonth = 12;\n scope.selectedYear -= 1;\n }\n var previousMonthIndex = previousMonth - 1; // subtract index\n var month = scope.months[previousMonthIndex];\n month.weeks = timeService.getWeeksInMonth(scope.selectedYear, month.id);\n scope.selectMonth(month, refreshData);\n }\n scope.nextMonth = function (refreshData) {\n var nextMonth = scope.selectedMonth.id + 1;\n if (nextMonth == 13) {\n nextMonth = 1;\n scope.selectedYear += 1;\n }\n var nextMonthIndex = nextMonth - 1; // subtract for index\n var month = scope.months[nextMonthIndex];\n month.weeks = timeService.getWeeksInMonth(scope.selectedYear, month.id);\n scope.selectMonth(month, refreshData);\n }\n\n\n\n // Dashboard settings\n function loadDashboard(dataSourceId) {\n scope.thisMonthSettings = {\n title: \"Denne måneden\",\n timePeriod: {\n timeframe: \"month\"\n },\n dataSource: {\n id: dataSourceId,\n valueElement: {\n unit: \"Timer\"\n }\n },\n filters: [\n // Filter on current user\n {\n sourceColumn: \"dimension2\",\n operator: \"InList\",\n items: [userid]\n }\n ],\n decimals: 1\n }\n scope.thisMonthInvoicedSettings = {\n title: \"Fakturerbart\",\n timePeriod: {\n timeframe: \"month\"\n },\n dataSource: {\n id: dataSourceId,\n valueElement: {\n unit: \"Timer\"\n }\n },\n filters: [\n // Filter on current user\n {\n sourceColumn: \"dimension2\",\n operator: \"InList\",\n items: [userid]\n },\n {\n sourceColumn: \"dimension3\",\n operator: \"InList\",\n items: [\"true\"]\n }\n ],\n decimals: 1\n }\n scope.thisYearSettings = {\n title: \"I år\",\n timePeriod: {\n timeframe: \"year\"\n },\n dataSource: {\n id: dataSourceId,\n valueElement: {\n unit: \"Timer\"\n }\n },\n filters: [\n // Filter on current user\n {\n sourceColumn: \"dimension2\",\n operator: \"InList\",\n items: [userid]\n }\n ],\n decimals: 1\n }\n scope.thisYearInvoicedSettings = {\n title: \"Fakturerbart\",\n timePeriod: {\n timeframe: \"year\"\n },\n dataSource: {\n id: dataSourceId,\n valueElement: {\n unit: \"Timer\"\n }\n },\n filters: [\n // Filter on current user\n {\n sourceColumn: \"dimension2\",\n operator: \"InList\",\n items: [userid]\n },\n {\n sourceColumn: \"dimension3\",\n operator: \"InList\",\n items: [\"true\"]\n }\n ],\n decimals: 1\n }\n scope.thisMonthPieSettings = {\n title: \"Fordeling pr prosjekt\",\n timePeriod: {\n timeframe: \"month\"\n },\n dataSource: {\n id: dataSourceId,\n valueElement: {\n unit: \"Timer\"\n }\n },\n filters: [\n // Filter on current user\n {\n sourceColumn: \"dimension2\",\n operator: \"InList\",\n items: [userid]\n }\n ],\n groupedBy: \"projectId\"\n }\n\n calculateFlexitime();\n calculateHolidays();\n }\n\n function calculateFlexitime() {\n if(!scope.normalHoursSource || !scope.dataSource) return;\n\n var ytd = timeService.getTimePeriod(\"YTD\");\n var options = {\n timePeriod: ytd,\n filters: [\n // Filter on current user\n {\n sourceColumn: \"dimension2\",\n operator: \"InList\",\n items: [userid]\n }\n ]\n };\n dataService().getSumForPeriod(scope.dataSource.id, options).then(function (totalregisteredhours) {\n scope.totalRegisteredHours = totalregisteredhours;\n options.filters.push({\n sourceColumn: \"description\",\n operator: \"InList\",\n items: [\"overtid\", \"Overtid\", \"overtime\", \"Overtime\"]\n });\n \n dataService().getSumForPeriod(scope.dataSource.id, options).then(function (totalovertime) {\n options.filters = null;\n dataService().getSumForPeriod(scope.normalHoursSource.id, options).then(function (normalworkinghours) {\n scope.normalWorkingHours = normalworkinghours;\n scope.flexitimeYTDSum = scope.totalRegisteredHours - totalovertime - scope.normalWorkingHours;\n });\n });\n });\n }\n\n scope.addLunchForThisWeek = function () {\n if (!projectIdLunch) return;\n var week = scope.selectedWeek;\n var days = week.days;\n var promises = [];\n days.slice(0, 5).forEach(day => { // Only add lunch for weekdays\n var dataValue = {\n valueDate: moment.utc(day.date).format(),\n value: 0.5,\n projectId: projectIdLunch,\n dimension2: userid,\n dimension3: \"false\",\n };\n promises.push(dataService().add(scope.dataSource.id, dataValue));\n });\n Promise.all(promises).then(function () {\n setupTable(scope.selectedWeek, []);\n loadDataForWeek();\n calculateFlexitime();\n });\n }\n\n function calculateHolidays(){\n if(!projectIdHoliday || !scope.dataSource) return;\n var thisyear = timeService.getTimePeriod(\"thisyear\");\n var options = {\n timePeriod: thisyear,\n filters: [\n // Filter on current user\n {\n sourceColumn: \"dimension2\",\n operator: \"InList\",\n items: [userid]\n },\n {\n sourceColumn: \"projectId\",\n operator: \"InList\",\n items: [projectIdHoliday]\n }\n ]\n };\n dataService().getSumForPeriod(scope.dataSource.id, options).then(function (totalregisteredhours) {\n scope.totalHolidayHours = totalregisteredhours;\n scope.totalHolidayDays = totalregisteredhours / 8;\n });\n }\n\n }\n\n }\n }]);\n","import envConfig from \"@common/envConfig\";\n\nangular.module(\"DigiLean\").factory('strategyGoalService', ['$http',\n function ($http) {\n function strategyGoalService() {\n var resource = \"/strategyGoal\";\n var resourceUrl = envConfig.webApiUrl + resource;\n\n return {\n getGoal: function (goalId) {\n var url = resourceUrl + \"/getGoal/\" + goalId;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n }, \n createGoal: function (goal) {\n var url = resourceUrl + \"/createGoal/\";\n return $http.post(url, goal).then(function (result) {\n return result.data;\n });\n },\n createGoals: function (goals) {\n var url = resourceUrl + \"/createGoals/\";\n return $http.post(url, goals).then(function (result) {\n return result.data;\n });\n },\n updateGoal: function (goal) {\n var url = resourceUrl + \"/updateGoal/\" + goal.id;\n return $http.post(url, goal).then(function (result) {\n return result.data;\n });\n },\n moveStrategyGoal: function (goal) {\n var url = resourceUrl + \"/MoveStrategyGoal/\";\n return $http.post(url, goal).then(function (result) {\n return result.data;\n });\n },\n deleteGoal: function (goalId) {\n var url = resourceUrl + \"/deleteGoal/\" + goalId;\n return $http.delete(url).then(function (result) {\n return result.data;\n });\n },\n\n updateAsset: function (goalId, assetid) {\n var url = resourceUrl + \"/\" + goalId + \"/UpdateAsset/\" + assetid;\n return $http.put(url).then(function () {\n return;\n });\n },\n\n updateColor: function (goalId, color) {\n var strategyGoalColor = {\n goalId: goalId,\n color: color\n }\n var url = resourceUrl + \"/updateColor/\" + goalId;\n return $http.put(url,strategyGoalColor).then(function (result) {\n return result.data;\n });\n },\n \n \n updateName: function (goalId, name) {\n var strategyGoalName = {\n goalId: goalId,\n name: name\n }\n var url = resourceUrl + \"/updateName/\" + goalId;\n return $http.put(url,strategyGoalName).then(function (result) {\n return result.data;\n });\n },\n\n updateStartDate: function (goalId, date) {\n var projectDate = {\n actionDate: date\n }\n var url = resourceUrl + \"/updateStartDate/\" + goalId;\n return $http.put(url,projectDate).then(function (result) {\n return result.data;\n });\n }, \n updateEndDate: function (goalId, date) {\n var projectDate = {\n actionDate: date\n }\n var url = resourceUrl + \"/updateEndDate/\" + goalId;\n return $http.put(url,projectDate).then(function (result) {\n return result.data;\n });\n }, \n updateDescription: function (goal) {\n var url = resourceUrl + \"/updateDescription/\" + goal.id;\n return $http.put(url,goal).then(function (result) {\n return result.data;\n });\n }, \n \n };\n }\n return strategyGoalService;\n }]);","import * as assetService from \"@common/services/assetService\"\n\nangular\n .module('DigiLean')\n .directive(\"strategyMap\", ['authService',\n function (authService) {\n return {\n templateUrl: 'strategyMap.html',\n restrict: 'E',\n scope: {\n\n },\n link: function (scope, elem, attrs) {\n\n \n \n getAssetList();\n scope.subscribe(\"UserAuthenticatedAndReady\", function(profile) { \n scope.isAdmin = authService.hasRole(\"Admin\") || authService.hasRole(\"StrategyAdmin\"); \n getAssetList();\n });\n\n function getAssetList() {\n scope.isAdmin = authService.hasRole(\"Admin\") || authService.hasRole(\"StrategyAdmin\");\n scope.selectAsset = null;\n if(scope.isAdmin){\n assetService.getAllAssets(true).then(function (assets) {\n scope.assets = assets; \n for (var k = 0; k < scope.assets.length; k++) {\n scope.assets[k].cssLevel = \"level-\" + scope.assets[k].level; \n } \n scope.selectAssetId = null;\n // loadStrategyMap();\n });\n } else {\n assetService.getList().then(function (assets) {\n scope.assets = assets; \n if(scope.assets.length>0){\n scope.selectAsset = scope.assets[0];\n scope.selectAssetId = scope.selectAsset.id;\n }\n for (var k = 0; k < scope.assets.length; k++) {\n scope.assets[k].cssLevel = \"level-\" + scope.assets[k].level; \n \n } \n //scope.loadStrategyMapByAsset(scope.selectAsset);\n \n });\n }\n \n \n };\n scope.toplevel = function () {\n scope.selectAsset = null;\n scope.selectAssetId = null;\n //loadStrategyMap();\n };\n // Live styling / to use to pick up our colors on goals\n var sheet = window.document.styleSheets[0];\n\n scope.loadStrategyMapByAsset = function (asset) {\n scope.selectAssetId = asset.id;\n scope.selectAsset = asset;\n }\n\n \n /* // Events\n $rootScope.subscribe('StrategyGoalColorUpdated', function (goal) {\n if (!goal.parentId) goal.parentId = 0;\n sheet.insertRule(\"[node-id='\" + goal.id + \"'] rect { fill: \" + goal.color + \"; }\", sheet.cssRules.length);\n });\n\n $rootScope.subscribe('StrategyGoalAssetUpdated', function (goal) {\n var node = chart.get(goal.strategyGoalId);\n chart.updateNode({\n id: goal.strategyGoalId,\n pid: node.pid,\n name: node.name,\n title: goal.assetName,\n // img: node.img\n });\n });\n\n $rootScope.subscribe('StrategyGoalNameUpdated', function (goal) {\n if (!goal.parentId) goal.parentId = 0;\n var node = chart.get(goal.id);\n chart.updateNode({\n id: goal.id,\n pid: goal.parentId,\n name: goal.name,\n title: node.title,\n // img: node.img\n });\n });\n \n $rootScope.subscribe('StrategyGoalCreated', function (goal) {\n if (!goal.parentId) goal.parentId = 0;\n if (goal.asset) {\n goal.assetName = goal.asset.name;\n }\n sheet.insertRule(\"[node-id='\" + goal.id + \"'] rect { fill: \" + goal.color + \"; }\", sheet.cssRules.length);\n chart.addNode(\n {\n id: goal.id,\n pid: goal.parentId,\n name: goal.name,\n title: goal.assetName,\n // img: \"https://digileanfiles.blob.core.windows.net/profile-images/Medium-d58549fd-5e91-4d48-84c1-770803a84584-cropped.jpg\"\n });\n });\n */\n /*\n $rootScope.subscribe('StrategyGoalDeleted', function (goal) {\n chart.removeNode(goal.id);\n });\n\n // Load strategy\n function loadStrategyMap() {\n strategyService().getStrategyMap().then(function (strategy) {\n var topNode = {\n id: 0,\n name: strategy.strategy.vision,\n childGoals: strategy.goals\n }\n // Set strategy as topNode\n topNode.childGoals.forEach(goal => {\n goal.parent = topNode;\n });\n\n scope.strategy = topNode;\n drawChart(scope.strategy); // OrgChart.js\n });\n }\n\n\n scope.loadStrategyMapByAsset = function (asset) {\n scope.selectAsset = asset;\n strategyService().getStrategyMapByAsset(asset.id).then(function (strategy) {\n var topNode = {\n id: 0,\n name: strategy.strategy.vision,\n childGoals: strategy.goals\n }\n // Set strategy as topNode\n topNode.childGoals.forEach(goal => {\n goal.parent = topNode;\n });\n\n scope.strategy = topNode;\n drawChart(scope.strategy); // OrgChart.js\n });\n }\n\n // DEBUG - Should remove.\n strategyService().fixStrategy().then(function () {\n\n });\n*/\n\n/*\n\n // Custom template for vision topnode\n OrgChart.templates.visionTemplate = Object.assign({}, OrgChart.templates.olivia);\n OrgChart.templates.visionTemplate.size = [500, 120];\n OrgChart.templates.visionTemplate.node =\n '';\n OrgChart.templates.visionTemplate.ripple = {\n radius: 100,\n color: \"#2f4050\",\n rect: null\n };\n OrgChart.templates.visionTemplate.field_0 = '{val}';\n OrgChart.templates.visionTemplate.nodeMenuButton = '';//'';\n\n OrgChart.templates.goalTemplate = Object.assign({}, OrgChart.templates.ana);\n OrgChart.templates.goalTemplate.field_0 = '{val}';\n OrgChart.templates.goalTemplate.field_1 = '{val}';\n\n function createNodes(chart, strategy) {\n createNode(chart, strategy, null);\n chart.draw(OrgChart.action.init);\n }\n\n function createNode(chart, goal, parent) {\n // Create style rule so each goal is assigned correct color.\n sheet.insertRule(\"[node-id='\" + goal.id + \"'] rect { fill: \" + goal.color + \"; }\", sheet.cssRules.length);\n if (!parent) {\n chart.add(\n {\n id: goal.id,\n name: goal.name,\n tags: [\"StrategicVision\"],\n title: \"\"\n });\n } else {\n chart.add(\n {\n id: goal.id,\n pid: parent.id,\n name: goal.name,\n title: goal.assetName,\n tags: [\"GoalNode\"],\n // img: \"https://digileanfiles.blob.core.windows.net/profile-images/Medium-d58549fd-5e91-4d48-84c1-770803a84584-cropped.jpg\"\n });\n\n }\n\n if (!goal.childGoals) return;\n goal.childGoals.forEach(child => {\n createNode(chart, child, goal);\n });\n }\n\n var chart;\n function drawChart(strategy) {\n chart = new OrgChart(document.getElementById(\"strategy-org-chart\"), {\n enableTouch: false, // Enable touch instead of mouse for particular devices with touchscreen/touchpad/trackpad.\n nodeBinding: {\n field_0: \"name\",\n field_1: \"title\",\n img_0: \"img\"\n },\n nodeMenu: createMenu(),\n tags: {\n \"StrategicVision\": {\n template: \"visionTemplate\"\n },\n \"GoalNode\": {\n template: \"goalTemplate\"\n }\n },\n\n toolbar: {\n fullScreen: true,\n zoom: true,\n fit: true,\n expandAll: true\n },\n });\n chart.on('click', function (sender, args) {\n // args.node is the goal that is clicked..\n if(args.node.id != 0){\n strategyService().canEditGoal(args.node.id).then(function (canEdit) {\n if(canEdit){\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'strategyCardPopup.html',\n controller: 'strategyCardPopup',\n resolve: {\n goalId: function () {\n return args.node.id;\n }\n\n }\n });\n\n modalInstance.result.then(function (result) {\n\n });\n }\n });\n \n }\n return false;\n // return false; to cancel the operation\n });\n createNodes(chart, strategy);\n chart.fit();\n }\n\n var emptyIcon = ''\n // Our custom node menu\n function createMenu() {\n return {\n editGoal: {\n icon: emptyIcon, // Needs an icon, so we just going to provide an empty svg for now\n text: $translate.instant(\"STRATEGY_EDIT_GOAL\"), \n onClick: editGoal\n },\n addGoal: {\n icon: emptyIcon, // Needs an icon, so we just going to provide an empty svg for now\n text: $translate.instant(\"STRATEGY_SUB_GOAL_NEW\"), \n onClick: addGoal\n },\n deleteGoal: {\n icon: emptyIcon, // Needs an icon, so we just going to provide an empty svg for now\n text: $translate.instant(\"STRATEGY_DELETE_GOAL\"), \n onClick: deleteGoal\n }\n }\n }\n\n function editGoal(sender) {\n var goalId = sender;\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'goalEditPopup.html',\n controller: 'goalEditPopup',\n resolve: {\n goalId: function () {\n return goalId;\n }\n\n }\n });\n modalInstance.result.then(function (result) {\n\n });\n }\n\n\n function addGoal(sender) {\n var parentGoalId = sender;\n if (parentGoalId == 0) { // Means it's directly under strategy\n\n }\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'goalCreatePopup.html',\n controller: 'goalCreatePopup',\n resolve: {\n goalId: function () {\n return parentGoalId;\n }\n\n }\n });\n modalInstance.result.then(function (result) {\n\n });\n }\n\n function deleteGoal(sender) {\n var goalId = sender;\n if (goalId == 0) return;\n swal({\n title: $translate.instant(\"STRATEGY_GOAL_DELETE_QUESTION\"),\n text: $translate.instant(\"STRATEGY_GOAL_DELETE_DESCRIPTION\"),\n icon: \"error\",\n buttons: [$translate.instant(\"COMMON_CANCEL\"),\n $translate.instant(\"STRATEGY_GOAL_DELETE_BUTTON\")],\n dangerMode: true,\n closeOnConfirm: false\n }).then((value) => {\n switch (value) {\n case true: // Yes to delete\n strategyGoalService().deleteGoal(goalId).then(function () {\n\n });\n break;\n default:\n }\n });\n }\n*/\n }\n\n }\n }]);","import OrgChart from './../../../../thirdparty/orgchart/orgchart.js';\nangular\n .module('DigiLean')\n .directive(\"strategyMapChart\", ['$rootScope', '$filter', '$translate', '$uibModal', 'strategyService', 'authService', 'strategyGoalService',\n function ($rootScope, $filter, $translate, $uibModal, strategyService, authService, strategyGoalService) {\n return {\n templateUrl: 'strategyMapChart.html',\n restrict: 'E',\n scope: {\n 'assetId': '<',\n 'targetHeight': '<'\n },\n link: function (scope, elem, attrs) {\n scope.$watch(\"assetId\", function () {\n if (scope.assetId) {\n loadStrategyMapByAsset(scope.assetId);\n } else {\n if (authService.hasRole(\"Admin\") || authService.hasRole(\"StrategyAdmin\")) {\n loadStrategyMap();\n scope.editable = true;\n }\n }\n });\n\n scope.$watch(\"targetHeight\", function (targetHeight) {\n if (!targetHeight) return;\n if (!chart) return;\n chart.fit();\n });\n\n \n\n $rootScope.subscribe('StrategyGoalDeleted', function (goal) {\n chart.removeNode(goal.id);\n });\n\n // Load strategy\n function loadStrategyMap() {\n strategyService().getStrategyMap().then(function (strategy) {\n var topNode = {\n id: 0,\n name: strategy.strategy.vision,\n childGoals: strategy.goals\n }\n // Set strategy as topNode\n topNode.childGoals.forEach(goal => {\n goal.parent = topNode;\n });\n\n scope.strategy = topNode;\n drawCollapseChart(scope.strategy); // OrgChart.js\n });\n }\n\n\n function loadStrategyMapByAsset(assetId) {\n //scope.selectAsset = asset;\n strategyService().getStrategyMapByAsset(assetId).then(function (strategy) {\n var topNode = {\n id: 0,\n name: strategy.strategy.vision,\n childGoals: strategy.goals\n }\n // Set strategy as topNode\n topNode.childGoals.forEach(goal => {\n goal.parent = topNode;\n });\n\n scope.strategy = topNode;\n drawChart(scope.strategy); // OrgChart.js\n });\n }\n\n // Live styling / to use to pick up our colors on goals\n var sheet = window.document.styleSheets[0];\n // Events\n $rootScope.subscribe('StrategyGoalColorUpdated', function (goal) {\n if (!goal.parentId) goal.parentId = 0;\n sheet.insertRule(\"[node-id='\" + goal.id + \"'] rect { fill: \" + goal.color + \"; }\", sheet.cssRules.length);\n });\n\n $rootScope.subscribe('StrategyGoalAssetUpdated', function (goal) {\n var node = chart.get(goal.strategyGoalId);\n chart.updateNode({\n id: goal.strategyGoalId,\n pid: node.pid,\n name: node.name,\n title: goal.assetName,\n // img: node.img\n });\n });\n\n $rootScope.subscribe('StrategyGoalNameUpdated', function (goal) {\n if (!goal.parentId) goal.parentId = 0;\n var node = chart.get(goal.id);\n chart.updateNode({\n id: goal.id,\n pid: goal.parentId,\n name: goal.name,\n title: node.title,\n // img: node.img\n });\n });\n\n $rootScope.subscribe('StrategyGoalCreated', function (goal) {\n if (!goal.parentId) goal.parentId = 0;\n if (goal.assetName) {\n goal.assetName = goal.assetName;\n }\n sheet.insertRule(\"[node-id='\" + goal.id + \"'] rect { fill: \" + goal.color + \"; }\", sheet.cssRules.length);\n chart.addNode(\n {\n id: goal.id,\n pid: goal.parentId,\n name: goal.name,\n title: goal.assetName,\n // img: \"https://digileanfiles.blob.core.windows.net/profile-images/Medium-d58549fd-5e91-4d48-84c1-770803a84584-cropped.jpg\"\n });\n });\n\n // Custom template for vision topnode\n OrgChart.templates.visionTemplate = Object.assign({}, OrgChart.templates.olivia);\n OrgChart.templates.visionTemplate.size = [500, 120];\n OrgChart.templates.visionTemplate.node =\n '';\n OrgChart.templates.visionTemplate.ripple = {\n radius: 100,\n color: \"#2f4050\",\n rect: null\n };\n OrgChart.templates.visionTemplate.field_0 = '{val}';\n OrgChart.templates.visionTemplate.nodeMenuButton = '';//'';\n\n OrgChart.templates.goalTemplate = Object.assign({}, OrgChart.templates.ana);\n OrgChart.templates.goalTemplate.field_0 = '{val}';\n OrgChart.templates.goalTemplate.field_1 = '{val}';\n\n function createNodes(chart, strategy) {\n createNode(chart, strategy, null);\n chart.draw(OrgChart.action.init);\n }\n\n function createNode(chart, goal, parent) {\n // Create style rule so each goal is assigned correct color.\n sheet.insertRule(\"[node-id='\" + goal.id + \"'] rect { fill: \" + goal.color + \"; }\", sheet.cssRules.length);\n if (!parent) {\n chart.add(\n {\n id: goal.id,\n name: goal.name,\n tags: [\"StrategicVision\"],\n title: \"\"\n });\n } else {\n chart.add(\n {\n id: goal.id,\n pid: parent.id,\n name: goal.name,\n title: goal.assetName,\n tags: [\"GoalNode\"],\n // img: \"https://digileanfiles.blob.core.windows.net/profile-images/Medium-d58549fd-5e91-4d48-84c1-770803a84584-cropped.jpg\"\n });\n\n }\n\n if (!goal.childGoals) return;\n goal.childGoals.forEach(child => {\n createNode(chart, child, goal);\n });\n }\n\n function findDepth(map) {\n var maxDepth = 0;\n map.childGoals.forEach(function (algo) {\n findParamListDepth(algo.childGoals, 0);\n });\n\n function findParamListDepth(paramList, depth) {\n ++depth;\n paramList.forEach(function (paramObj) {\n var child = paramObj.childGoals;\n if (child) {\n findParamListDepth(child, depth);\n return;\n }\n });\n maxDepth = Math.max(maxDepth, depth);\n }\n return maxDepth;\n }\n var chart;\n function drawChart(strategy) {\n var strategyMapNode = $(elem).find(\"#strategy-org-chart\")[0]\n chart = new OrgChart(strategyMapNode, {\n enableTouch: false, // Enable touch instead of mouse for particular devices with touchscreen/touchpad/trackpad.\n enableDragDrop: scope.editable,\n menu: {\n pdfPreview: {\n text: \"PDF \" + $translate.instant(\"COMMON_PREVIEW\"),\n icon: OrgChart.icon.pdf(24, 24, '#7A7A7A'),\n onClick: preview\n },\n pdf: { text: \"PDF\" },\n png: { text: \"PNG\" },\n svg: { text: \"SVG\" },\n csv: { text: \"CSV\" }\n }, \n nodeBinding: {\n field_0: \"name\",\n field_1: \"title\",\n img_0: \"img\"\n },\n nodeMenu: createMenu(),\n // This is the default menu\n // nodeMenu: {\n\n // // details: { text: \"Details\" },\n // // edit: { text: \"Edit\" },\n // // add: { text: \"Add\" },\n // // remove: { text: \"Remove\" }\n // },\n tags: {\n \"StrategicVision\": {\n template: \"visionTemplate\"\n },\n \"GoalNode\": {\n template: \"goalTemplate\"\n }\n },\n\n toolbar: {\n fullScreen: true,\n zoom: true,\n fit: true,\n expandAll: true\n },\n });\n chart.on('click', function (sender, args) {\n // args.node is the goal that is clicked..\n if (args.node.id != 0) {\n strategyService().canEditGoal(args.node.id).then(function (canEdit) {\n if (canEdit) {\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'strategyCardPopup.html',\n controller: 'strategyCardPopup',\n resolve: {\n goalId: function () {\n return args.node.id;\n }\n\n }\n });\n\n modalInstance.result.then(function (result) {\n\n });\n } else {\n showAccessPopup();\n }\n });\n\n }\n return false;\n // return false; to cancel the operation\n });\n createNodes(chart, strategy);\n chart.fit();\n chart.on('exportstart', function(sender, args){\n args.styles += getCssText();\n });\n chart.on('exportend', function(sender, args){\n args.filename = $translate.instant(\"STRATEGY_STRATEGY\") +\".\"+ args.ext;\n });\n }\n function drawCollapseChart(strategy) {\n \n var strategyMapNode = $(elem).find(\"#strategy-org-chart\")[0]\n \n chart = new OrgChart(strategyMapNode, {\n enableTouch: false, // Enable touch instead of mouse for particular devices with touchscreen/touchpad/trackpad.\n enableDragDrop: scope.editable, \n nodeBinding: {\n field_0: \"name\",\n field_1: \"title\",\n img_0: \"img\"\n },\n menu: {\n pdfPreview: {\n text: \"PDF \" + $translate.instant(\"COMMON_PREVIEW\"),\n icon: OrgChart.icon.pdf(24, 24, '#7A7A7A'),\n onClick: preview\n },\n pdf: { text: \"PDF\" },\n png: { text: \"PNG\" },\n svg: { text: \"SVG\" },\n csv: { text: \"CSV\" }\n },\n collapse: {\n level: 2,\n allChildren: true\n },\n nodeMenu: createMenu(),\n tags: {\n \"StrategicVision\": {\n template: \"visionTemplate\"\n },\n \"GoalNode\": {\n template: \"goalTemplate\"\n }\n },\n toolbar: {\n fullScreen: true,\n zoom: true,\n fit: true,\n expandAll: true\n },\n });\n chart.on('click', function (sender, args) {\n // args.node is the goal that is clicked..\n if (args.node.id != 0) {\n strategyService().canEditGoal(args.node.id).then(function (canEdit) {\n if (canEdit) {\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'strategyCardPopup.html',\n controller: 'strategyCardPopup',\n resolve: {\n goalId: function () {\n return args.node.id;\n }\n\n }\n });\n\n modalInstance.result.then(function (result) {\n\n });\n } else {\n showAccessPopup();\n }\n });\n\n }\n return false;\n // return false; to cancel the operation\n });\n chart.on('drop', function (sender, draggedNodeId, droppedNodeId) {\n if(scope.editable){\n var goal = {\n Id: draggedNodeId,\n ParentId: droppedNodeId\n } \n //new parentId = droppedNodeId\n // How to handle sortorder? both on strategyboard and strategygoal?\n\n strategyGoalService().moveStrategyGoal(goal).then(function (result) {\n });\n \n } else {\n return false;\n }\n });\n createNodes(chart, strategy);\n chart.fit();\n chart.on('exportstart', function(sender, args){\n args.styles += getCssText();\n });\n chart.on('exportend', function(sender, args){\n args.filename = $translate.instant(\"STRATEGY_STRATEGY\") +\".\"+ args.ext;\n });\n }\n function getCssText(){\n var cssFullText = \"\";\n return cssFullText;\n }\n\n function showAccessPopup() {\n swal({\n title: $translate.instant(\"COMMON_NO_ACCESS\"),\n text: $translate.instant(\"COMMON_REQUIRED_GROUP_MEMBERSHIP\"),\n icon: \"warning\",\n buttons: [$translate.instant(\"COMMON_OK\")],\n dangerMode: true,\n closeOnConfirm: true,\n closeOnClickOutside: true,\n closeOnEsc: true\n });\n }\n\n function preview() {\n OrgChart.pdfPrevUI.show(chart, {\n format: 'A4'\n });\n }\n \n\n var emptyIcon = ''\n // Our custom node menu\n function createMenu() {\n if(scope.editable){\n return {\n editGoal: {\n icon: emptyIcon, // Needs an icon, so we just going to provide an empty svg for now\n text: $translate.instant(\"STRATEGY_EDIT_GOAL\"),\n onClick: editGoal\n },\n addGoal: {\n icon: emptyIcon, // Needs an icon, so we just going to provide an empty svg for now\n text: $translate.instant(\"STRATEGY_SUB_GOAL_NEW\"),\n onClick: addGoal\n },\n copyGoal: {\n icon: emptyIcon, // Needs an icon, so we just going to provide an empty svg for now\n text: $translate.instant(\"COMMON_COPY\"),\n onClick: copyGoal\n },\n deleteGoal: {\n icon: emptyIcon, // Needs an icon, so we just going to provide an empty svg for now\n text: $translate.instant(\"STRATEGY_DELETE_GOAL\"),\n onClick: deleteGoal\n }\n }\n } else return;\n }\n\n function editGoal(sender) {\n var goalId = sender;\n if (goalId) {\n strategyService().canEditGoal(goalId).then(function (canEdit) {\n if (canEdit) {\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'goalEditPopup.html',\n controller: 'goalEditPopup',\n resolve: {\n goalId: function () {\n return goalId;\n }\n\n }\n });\n modalInstance.result.then(function (result) {\n\n });\n } else {\n showAccessPopup();\n }\n });\n }\n }\n\n\n function addGoal(sender) {\n var parentGoalId = sender;\n if (parentGoalId == 0) { // Means it's directly under strategy\n\n }\n var options = {\n goalId: parentGoalId\n }\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'goalCreatePopup.html',\n controller: 'goalCreatePopup',\n resolve: {\n options: function () {\n return options;\n }\n\n }\n });\n modalInstance.result.then(function (result) {\n });\n }\n\n function copyGoal(sender) {\n var siblingGoalId = sender;\n if (siblingGoalId == 0) { // Means it's directly under strategy and should not be possible to copy\n\n } else {\n strategyGoalService().getGoal(siblingGoalId).then(function(siblingGoal){\n\n var options = {\n goalId: siblingGoal.parentId,\n name: siblingGoal.name\n }\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'goalCreatePopup.html',\n controller: 'goalCreatePopup',\n resolve: {\n options: function () {\n return options;\n }\n }\n });\n modalInstance.result.then(function (result) {\n });\n });\n \n }\n }\n\n function deleteGoal(sender) {\n var goalId = sender;\n if (goalId == 0) return;\n if (goalId) {\n strategyService().canEditGoal(goalId).then(function (canEdit) {\n if (canEdit) {\n swal({\n title: $translate.instant(\"STRATEGY_GOAL_DELETE_QUESTION\"),\n text: $translate.instant(\"STRATEGY_GOAL_DELETE_DESCRIPTION\"),\n icon: \"error\",\n buttons: [$translate.instant(\"COMMON_CANCEL\"),\n $translate.instant(\"STRATEGY_GOAL_DELETE_BUTTON\")],\n dangerMode: true,\n closeOnConfirm: false\n }).then((value) => {\n switch (value) {\n case true: // Yes to delete\n strategyGoalService().deleteGoal(goalId).then(function () {\n\n });\n break;\n default:\n }\n });\n } else {\n showAccessPopup();\n }\n });\n\n }\n }\n }\n }\n }]);\n","import * as customerService from \"@common/services/customers/customerService\"\nimport * as timeService from \"@common/services/timeService\"\nimport toaster from \"@common/components/toast\"\n\nangular\n .module('DigiLean')\n .controller(\"strategyCardPopup\", ['$scope', '$uibModalInstance', '$uibModal','$filter','strategyService','boardTaskService','actionlistService', 'goalId',\n function ($scope, $uibModalInstance, $uibModal,$filter,strategyService,boardTaskService,actionlistService, goalId) {\n\n $scope.goalId = goalId;\n $scope.allUsers = [];\n $scope.items = [];\n\n var timeperiodAll = timeService.getTimePeriod('all');\n\n strategyService().getTasksForStrategyGoals([{id:goalId}], timeperiodAll).then(function (tasks) {\n $scope.items = tasks;\n $scope.items.forEach(function (item) {\n item.boardDate = moment(item.boardDate).toDate();\n });\n $scope.items.sort(function (a, b) {\n if (b.status == 'blank' && a.status == 'OK') {\n return 1;\n }\n if (a.status == 'blank' && b.status == 'OK') {\n return -1;\n }\n \n // status is equal\n return 0;\n });\n });\n\n customerService.getAllUsers().then(function (users) {\n $scope.allUsers = users;\n });\n\n var initTask = function (task) {\n task.animate = function (animation, timeOut) {\n if (!timeOut) {\n timeOut = 1000;\n }\n task.animateClass = \"animated \" + animation;\n setTimeout(function () {\n task.animateClass = \"\";\n }, timeOut);\n }\n task.animate(\"slideInDown\", 3000);\n };\n $scope.subscribe('NewTask', function (task) {\n if (!task) return;\n if (task.goals){\n // for(var g=0; g g.strategyGoalId == $scope.goalId);\n if (relevantGoal.length > 0) {\n if(task.boardDate){\n task.boardDate = moment(task.boardDate).toDate();\n }\n $scope.items.unshift(task);\n }\n //}\n }\n });\n $scope.subscribe('TaskDeleted', function (task) {\n if (!task) return;\n setTimeout(function () {\n var exists = $filter('filter')($scope.items, { id: task });\n if (exists.length > 0) { \n var index = $scope.items.indexOf(exists[0]);\n initTask(exists[0]); // init task so we can animate\n // animate removal\n exists[0].animate(\"fadeOut\", 2000);\n $scope.items.splice(index, 1);\n } \n }, 1500);\n });\n\n $scope.createTask = function () {\n var status = \"blank\";\n var options = {\n users: $scope.allUsers, \n showDueDate: true \n }\n\n var newDate = moment().startOf('day'); \n var task = {\n id: 0,\n boardId: null,\n title: \"\",\n text: \"\",\n status: status,\n tags: \"\",\n boardDate: moment(newDate).toDate(),\n goals: [{Id:0,\n BoardTaskId: 0,\n StrategyGoalId:$scope.goalId}]\n }\n\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'newBoardTask.html',\n controller: 'newBoardTaskController',\n resolve: {\n task: function () {\n return task;\n },\n options: function () {\n return options;\n }\n }\n });\n\n modalInstance.result.then(function (result) {\n }); \n }\n $scope.openTask = function (activeTab, subtask) {\n if (!activeTab) activeTab = \"Info\";\n var options = {\n canChangeBoard: false\n };\n\n boardTaskService().get(subtask.id).then(function (task) {\n $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'boardTask.html',\n controller: 'boardTaskController',\n resolve: {\n task: function () {\n return task;\n },\n activeTab: function () {\n return activeTab;\n },\n options: function () {\n return options;\n }\n }\n });\n })\n\n }\n $scope.saveItemDescription = function (itemId, desc) {\n var taskDescription = {\n description: desc\n };\n actionlistService().updateItemDescription(itemId, taskDescription).then(function () {\n $translate('DEVIATION_ACTION_ITEM_SAVED').then(function (msg) {\n toaster.success(msg);\n });\n $scope.publish(\"SendTaskDescriptionUpdated\", taskDescription);\n });\n }\n\n $scope.deleteItem = function (item) {\n \n actionlistService().deleteActionItem(item.id).then(function () {\n /*var index = $scope.items.indexOf(item);\n if (index > -1) {\n item.cssState = \"animated slideOutLeft\"; // Add animation\n setTimeout(function () {\n $scope.items.splice(index, 1);\n }, 300); \n }*/\n });\n };\n\n $scope.changeActionDate = function (item, $event) {\n const date = $event.originalEvent.detail\n item.boardDate = date\n if (item.boardDate) { // Valid date format\n item.error = false;\n var actionDate = {\n taskId: item.id,\n actionDate: item.boardDate\n };\n actionlistService().updateItemActionDate(actionDate).then(function () {\n $translate('DEVIATION_ACTION_ITEM_SAVED').then(function (msg) {\n toaster.success(msg);\n });\n // publish event on change\n scope.publish(\"SendTaskDateUpdated\", actionDate);\n });\n } else {\n $translate('COMMON_NOT_VALID_DATE').then(function (trans) {\n item.error = trans;\n });\n \n }\n }\n\n $scope.userChangeHandler = function (userinfo) {\n if (userinfo) {\n var user = userinfo.user;\n var item = userinfo.model;\n item.user = user;\n // \n actionlistService().assignActionListItemUser(item.id, user).then(function () { \n }); \n }\n\n \n }\n $scope.close = function () {\n $uibModalInstance.dismiss('cancel');\n };\n }]);\n","import { getCompanySetting } from \"@common/stores/companySettingsStore\"\nimport * as customerService from \"@common/services/customers/customerService\"\nimport * as assetService from \"@common/services/assetService\"\nimport * as timeService from \"@common/services/timeService\"\n\nconst DigiLean = angular.module('DigiLean')\nDigiLean.controller('strategyBowlerChartController', ['$scope', '$filter', 'strategyService', '$uibModal', '$translate','authService','dataService',\n function ($scope, $filter, strategyService, $uibModal, $translate, authService, dataService) {\n $scope.assetid = null;\n $scope.timecolumns = [];\n $scope.items = [];\n $scope.newKPI = {title:'', operator: '>='};\n $scope.year = moment().year();\n $scope.timePeriod = timeService.getTimePeriod(\"year\");\n $scope.editable = false;\n\n $scope.isAdmin = authService.hasRole(\"Admin\") || authService.hasRole(\"StrategyAdmin\");\n var companyfiscalmonth = customerService.getDefaultFiscalmonth()\n var fiscalActive = false;\n\n function setup(){\n getCompanySetting(\"fiscalmonth\").then(function (setting) {\n if (setting)\n companyfiscalmonth = parseInt(setting)\n \n // grouped by month\n for (var i = 1; i < 13; i++) {\n var diffFiscalMonth = i - companyfiscalmonth;\n var fiscalYear = $scope.year;\n var fiscalMonth = i;\n if(companyfiscalmonth != 1 && (fiscalActive || diffFiscalMonth !== 0)){\n fiscalActive = true;\n if(companyfiscalmonth + i <= 13) {\n fiscalYear = $scope.year - 1;\n fiscalMonth = companyfiscalmonth + i - 1;\n } else {\n fiscalMonth = companyfiscalmonth + i - 13;\n }\n } \n var columnTitle = timeService.getMonthLabel(fiscalMonth);\n var column = {\n translated: columnTitle,\n year: fiscalYear,\n month: fiscalMonth\n }\n $scope.timecolumns.push(column);\n }\n });\n }\n setup();\n\n $scope.subscribe(\"UserAuthenticatedAndReady\", function(profile) { \n $scope.isAdmin = authService.hasRole(\"Admin\") || authService.hasRole(\"StrategyAdmin\");\n });\n\n $scope.subscribe(\"KPIAdded\", function (newkpi) {\n var value = $filter('filter')($scope.strategygoals, { id: newkpi.strategyGoalId });\n if (value.length > 0) { \n value[0].kpIs.push(newkpi);\n if (newkpi.dataSourceId || newkpi.targetDataSourceId) {\n getValuesForSerie(newkpi);\n }\n }\n });\n \n $scope.subscribe(\"KPIDeleted\", function (deletedid) {\n for(var i=0; i<$scope.strategygoals.length; i++){\n var goal = $scope.strategygoals[i];\n var value = $filter('filter')(goal.kpIs, { id: deletedid });\n if (value.length > 0) { \n var index = goal.kpIs.indexOf(value[0]);\n if (index > -1) {\n goal.kpIs.splice(index, 1);\n break;\n }\n }\n }\n \n });\n\n $scope.toggleEdit = function () {\n $scope.editable = !$scope.editable;\n }\n \n $scope.previousYear = function () {\n $scope.year = $scope.year - 1;\n loadData();\n setColumnYear();\n }\n $scope.nextYear = function () {\n $scope.year = $scope.year + 1;\n loadData();\n setColumnYear();\n }\n function setColumnYear(){\n if($scope.timecolumns){\n angular.forEach($scope.timecolumns, function (element) {\n element.year = $scope.year;\n });\n }\n }\n\n function getTimePeriod(){\n if(fiscalActive){\n var fiscalYearStart;\n var companyfiscalmonthMoment = companyfiscalmonth - 1;\n if(companyfiscalmonthMoment > moment().month()){\n fiscalYearStart = moment($scope.year, \"YYYY\").subtract(1, 'year').month(companyfiscalmonthMoment).startOf(\"month\");\n } else {\n fiscalYearStart = moment($scope.year, \"YYYY\").month(companyfiscalmonthMoment).startOf(\"month\");\n }\n var fiscalYearEnd = moment(fiscalYearStart).add(12, \"month\").subtract(1, 'days').endOf(\"day\");\n $scope.timePeriod = {\n from: fiscalYearStart.utc().toDate().toJSON(),\n to: fiscalYearEnd.utc().toDate().toJSON()\n };\n return $scope.timePeriod;\n } else {\n var startDate = moment($scope.year, \"YYYY\").startOf(\"year\");\n var endDate = moment(startDate).endOf(\"year\");\n $scope.timePeriod = {\n from: startDate.utc().toDate().toJSON(),\n to: endDate.utc().toDate().toJSON()\n }; \n return $scope.timePeriod;\n } \n }\n\n $scope.openKPIConfiguration = function(kpi, goal){ \n var modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'strategyKPIConfiguration.html',\n controller: 'strategyKPIConfigurationController',\n resolve: {\n configuration: function () {\n return kpi;\n }\n }\n });\n\n modalInstance.result.then(function (result) {\n if (result == 'Delete') return;\n\n if(!(result.unit && typeof (result.unit) === \"string\")){\n result.unit = \"\";\n }\n var filter = null;\n if(result.filters){\n filter = JSON.stringify(result.filters);\n }\n var targetFilter = null;\n if(result.targetFilters){\n targetFilter = JSON.stringify(result.targetFilters);\n }\n var updatedKPI = {\n title: result.title,\n dataSourceId: result.dataSourceId,\n filter: filter,\n unit: result.unit,\n targetDataSourceId: result.targetDataSourceId,\n targetFilter: targetFilter,\n formula: result.formula,\n operator: result.operator,\n strategyGoalId: goal.id,\n startDate: result.startDate,\n endDate: result.endDate\n }\n if(kpi.isNew){\n strategyService().addKPI(updatedKPI).then(function (result) {\n });\n } else {\n updatedKPI.id = kpi.id;\n strategyService().updateKPI(updatedKPI).then(function () {\n kpi = updatedKPI;\n kpi.valueChanged=moment().format();\n });\n } \n });\n }\n\n $scope.addNewKPI = function (goal) {\n var newkpi = {\n title: '',\n strategyGoalId: goal.id,\n isNew: true\n }\n $scope.openKPIConfiguration(newkpi, goal);\n };\n \n function getValuesForSerie(kpi) {\n $scope.timePeriod = getTimePeriod();\n if (!$scope.timePeriod) return;\n\n if(kpi.dataSourceId > 0){ \n if (kpi.filter && typeof (kpi.filter) === \"string\") {\n kpi.filter = JSON.parse(kpi.filter);\n }\n\n var options = {\n groupByInterval: \"month\",\n formula: kpi.formula,\n timeZone: timeService.getUserTimeZone(), // Which timezone we would like the result to be calculated in.\n timePeriod: $scope.timePeriod,\n filters: kpi.filter,\n };\n\n dataService().getTargetValuesForPeriod(kpi.dataSourceId, options).then(function (values) {\n if (values) {\n for(var i=0; i 0) { \n value[0].actual = values[i].value;\n } else {\n var monthlyValue = {\n year: values[i].year, \n month: values[i].month,\n actual : values[i].value\n }\n \n kpi.kpiMonthlyValues.push(monthlyValue);\n }\n } \n }\n if(kpi.targetDataSourceId > 0){\n getTargetValuesForSerie(kpi);\n } else {\n kpi.valueChanged=moment().format();\n }\n } else if(kpi.targetDataSourceId > 0){\n getTargetValuesForSerie(kpi);\n }\n }); \n } else if(kpi.targetDataSourceId > 0){\n getTargetValuesForSerie(kpi);\n } \n }\n\n function getTargetValuesForSerie(kpi) {\n $scope.timePeriod = getTimePeriod();\n if (!$scope.timePeriod) return;\n\n if (kpi.targetFilter && typeof (kpi.targetFilter) === \"string\") {\n kpi.targetFilter = JSON.parse(kpi.targetFilter);\n }\n\n var options = {\n groupByInterval: \"month\",\n timeZone: timeService.getUserTimeZone(), // Which timezone we would like the result to be calculated in.\n timePeriod: $scope.timePeriod,\n filters: kpi.targetFilter,\n };\n\n dataService().getTargetValuesForPeriod(kpi.targetDataSourceId, options).then(function (values) {\n if (values) {\n for(var i=0; i 0) { \n value[0].plan = values[i].value;\n } else {\n var monthlyValue = {\n year: $scope.year,\n month: values[i].month,\n plan : values[i].value\n }\n \n kpi.kpiMonthlyValues.push(monthlyValue);\n }\n } \n }\n kpi.valueChanged=moment().format();\n }\n }); \n } \n \n\n function loadData(){\n strategyService().getGoalsWithKPIsByAsset($scope.assetid, $scope.year).then(function (result) {\n $scope.strategygoals = result; \n if(result){\n for(var g=0; g0){\n $scope.asset = $scope.assets[0];\n $scope.assetname = $scope.assets[0].name;\n $scope.assetid = $scope.assets[0].id;\n }\n loadData();\n \n });\n }\n \n }\n getAssetList();\n $scope.selectAsset = function (asset) {\n $scope.asset = asset;\n $scope.name = asset.name;\n $scope.assetid = asset.id;\n loadData();\n };\n\n $scope.toplevel = function () {\n var top = {\n id : \"\",\n name: $translate.instant('STRATEGY_TOP_LEVEL')\n };\n $scope.selectAsset(top);\n \n };\n \n }]);","import * as assetService from \"@common/services/assetService\"\nimport * as timeService from \"@common/services/timeService\"\n\nangular\n .module('DigiLean')\n .controller(\"goalDetailsController\", ['$scope', '$translate','$stateParams', '$filter', '$uibModal','strategyService', 'authService', 'projectService','navigationService',\n function ($scope, $translate, $stateParams, $filter, $uibModal, strategyService, authService, projectService, navigationService) {\n\n $scope.isAdminMode = false;\n $scope.project = null;\n $scope.customers = null;\n $scope.owner = {};\n $scope.selectedStatusOption = {};\n\n //$scope.projectId = parseInt($stateParams.id);\n $scope.breakthroughGoalId = parseInt($stateParams.id);\n $scope.canEdit = false;\n $scope.titlehaserror = false;\n $scope.participants = [];\n\n $scope.color = null;\n $scope.subGoalsModel = null;\n\n var assetId = 0;\n if($stateParams.assetid){\n assetId = parseInt($stateParams.assetid); \n }\n\n\n var timePeriod = timeService.getTimePeriod(\"all\");\n \n\n $scope.selectAsset = null;\n $scope.selectedGoalId = null;\n var teamgoals = [];\n\n $scope.noImprovementImplemented = 0;\n $scope.noImprovementRemaining = 0;\n $scope.noImprovementDelayed = 0;\n\n $scope.hasImprovementModule = navigationService().hasModule(\"IMPROVEMENT\");\n $scope.hasDeviationModule = navigationService().hasModule(\"DEVIATION\");\n $scope.isAdmin = authService.hasRole(\"Admin\") || authService.hasRole(\"StrategyAdmin\"); \n\n $scope.subscribe(\"UserAuthenticatedAndReady\", function(profile) {\n $scope.hasImprovementModule = navigationService().hasModule(\"IMPROVEMENT\");\n $scope.hasDeviationModule = navigationService().hasModule(\"DEVIATION\"); \n $scope.isAdmin = authService.hasRole(\"Admin\") || authService.hasRole(\"StrategyAdmin\");\n if($scope.isAdmin){\n $scope.canEdit = true;\n $scope.selectAsset = null;\n }\n });\n \n if($scope.isAdmin){\n $scope.canEdit = true;\n }\n\n function getAssetList() {\n if($scope.isAdmin){\n assetService.getAllAssets(true).then(function (assets) {\n $scope.assets = assets; \n setPreseletedAsset(); \n for (var k = 0; k < $scope.assets.length; k++) {\n $scope.assets[k].cssLevel = \"level-\" + $scope.assets[k].level; \n } \n });\n } else {\n assetService.getList().then(function (assets) {\n $scope.assets = assets; \n if($scope.assets.length>0){\n $scope.selectAsset = $scope.assets[0];\n setPreseletedAsset();\n }\n for (var k = 0; k < $scope.assets.length; k++) {\n $scope.assets[k].cssLevel = \"level-\" + $scope.assets[k].level; \n \n } \n \n });\n }\n \n \n };\n getAssetList();\n\n function setPreseletedAsset(){\n if(assetId>0){ //Asset preselected\n var accessToAsset = $filter('filter')($scope.assets, { id: assetId }, true);\n if (accessToAsset.length > 0) {\n $scope.selectAsset = accessToAsset[0];\n } \n }\n }\n \n //Kanbanboard\n $scope.options = {\n targetHeight: 800\n }\n\n get();\n\n $scope.setAsset = function (asset) {\n $scope.selectAsset = asset;\n setUpImprovementStatus();\n };\n\n function setUpImprovementStatus(){\n var assetId = null;\n if($scope.selectAsset){\n assetId = $scope.selectAsset.id;\n }\n\n strategyService().getNoImprovementPerStrategyStatus($scope.goal.id, assetId).then(function (statusdata) {\n $scope.noImprovementRemaining = statusdata.remaining;\n $scope.noImprovementImplemented = statusdata.implemented;\n $scope.noImprovementDelayed = statusdata.delayed;\n var values=[$scope.noImprovementImplemented,$scope.noImprovementDelayed,$scope.noImprovementRemaining];\n dmbChart(150,150,125,25,values,colors,labels,0);\n });\n }\n $scope.toplevel = function () {\n $scope.selectAsset = null;\n setUpImprovementStatus();\n };\n\n \n\n $scope.toggleEdit = function () {\n $scope.isAdminMode = !$scope.isAdminMode;\n };\n\n $scope.setImageViewMode = function () {\n $scope.editImage = false;\n };\n $scope.setImageEditMode = function () {\n $scope.editImage = true;\n };\n\n $scope.showImprovements = function () {\n var currentfilter = [];\n\n if($scope.selectAsset && $scope.selectAsset.id){\n currentfilter.push({\n sourceColumn: \"assetId\",\n operator: \"InList\",\n items: [$scope.selectAsset.id]\n })\n var allgoals = [$scope.goal.id];\n /* Dersom vi alltid skal legge til breakthroughgoal for forslag registrert på gruppe og som har kobling til gruppemål, så\n får vi duplikater dersom vi legger til teamgoals til filteret\n for(var i=0; i 0) {\n $scope.projectId = breakthroughgoals[0].projectId;\n }\n $scope.color = breakthroughgoals[0].color;\n $scope.goal = breakthroughgoals[0];\n $scope.selectedGoalId = $scope.breakthroughGoalId;\n setUpImprovementStatus();\n strategyService().getSubGoalsBoard($scope.goal.id).then(function (board) {\n $scope.subGoalsModel = board;\n $scope.subGoalsModel.goal = $scope.goal;\n });\n \n setProject();\n });\n }\n\n function setProject(){\n \n projectService().getProjectInfo($scope.projectId).then(function (project) {\n\n $scope.project = project;\n\n if(!$scope.canEdit){\n var userId = authService.getCurrentUser().userId;\n if($scope.project.ownerUserId == userId){\n //project owner may edit\n $scope.canEdit = true;\n }\n }\n /* \n $scope.imageId = $scope.project.imageId;\n $scope.imageUrl = $scope.project.imagePreviewUrl;\n if (!$scope.imageUrl) {\n $scope.editImage = true;\n }\n\n $scope.statusOptions = projectService().getStatus();\n $scope.selectedStatusOption = $filter('filter')($scope.statusOptions, { dbCode: $scope.project.status }, true)[0];\n\n */\n });\n }\n\n \n var canvas=document.getElementById(\"canvas\");\nvar ctx=canvas.getContext(\"2d\");\n\nvar colors= ['#8cc152','#e9573f','gray'];//['skyblue','gray','orange'];\n//var values=[47,6,47];\nvar suggestionTranslated = $translate.instant('COMMON_SUGGESTIONS');\n\nvar labels=[suggestionTranslated,'Robot','Mandatory'];\n\n\n\nfunction dmbChart(cx,cy,radius,arcwidth,values,colors,labels,selectedValue){\n var tot=0;\n var accum=0;\n var PI=Math.PI;\n var PI2=PI*2;\n var offset=-PI/2;\n ctx.lineWidth=arcwidth;\n for(var i=0;i 0) {\n scope.goalType = \"SubGoal\";\n // LoadparentGoal\n strategyGoalService().getGoal(parentGoalId).then(function(parentGoal){\n scope.parentGoal = parentGoal;\n scope.selectedColor = parentGoal.color;\n updateHandler();\n });\n } else {\n scope.goalType = \"BreakThroughObjective\";\n scope.getAvailableColors();\n }\n }\n });\n\n scope.textChanged = function (name) {\n scope.name = name;\n updateHandler();\n }\n scope.colorChanged = function (col) {\n scope.selectedColor = col;\n updateHandler();\n }\n\n /*\n\n scope.assetId = null;\n scope.setAsset = function (asset) {\n scope.selectAsset = asset;\n if (asset) {\n scope.assetId = scope.selectAsset.id;\n }\n updateHandler();\n };*/\n\n scope.modifyAsset = function () {\n updateHandler();\n };\n \n\n function updateHandler() {\n if (!scope.goalcreateChangeHandler) return;\n var selected = $filter('filter')(scope.assets, { include: true });\n var goalCreate = {\n name: scope.name,\n //assetId: scope.assetId,\n assetList: selected,\n color: scope.selectedColor,\n }\n scope.goalcreateChangeHandler({ goalCreate: goalCreate })\n }\n\n scope.isAdmin = authService.hasRole(\"Admin\") || authService.hasRole(\"StrategyAdmin\");\n $rootScope.subscribe(\"UserAuthenticatedAndReady\", function (profile) {\n scope.isAdmin = authService.hasRole(\"Admin\") || authService.hasRole(\"StrategyAdmin\");\n if (scope.isAdmin) {\n scope.canEdit = true;\n scope.selectAsset = null;\n }\n });\n\n scope.selectAsset = null;\n function getAssetList() {\n if (scope.isAdmin) {\n assetService.getAllAssets(true).then(function (assets) {\n scope.assets = assets;\n for (var k = 0; k < scope.assets.length; k++) {\n scope.assets[k].cssLevel = \"level-\" + scope.assets[k].level;\n }\n });\n } else {\n assetService.getList().then(function (assets) {\n scope.assets = assets;\n if (scope.assets.length > 0) {\n scope.selectAsset = scope.assets[0];\n scope.assetId = scope.selectAsset.id;\n }\n for (var k = 0; k < scope.assets.length; k++) {\n scope.assets[k].cssLevel = \"level-\" + scope.assets[k].level;\n\n }\n\n });\n }\n\n };\n getAssetList();\n }\n }\n }]);","import * as assetService from \"@common/services/assetService\"\n\nangular\n .module('DigiLean')\n .directive(\"goalEdit\", ['$rootScope', '$filter', '$translate','strategyService', 'authService', 'themeService',\n function ($rootScope, $filter, $translate,strategyService, authService, themeService) {\n return {\n templateUrl: 'goalEdit.html',\n restrict: 'E',\n scope: {\n 'goal': \"<\",\n 'goaleditChangeHandler': '&'\n },\n link: function (scope, elem, attrs) {\n\n var allColors = themeService().getColors();\n scope.selectedColor = null;\n scope.getAvailableColors = function (selectedColor) {\n\n scope.availableColors = [];\n strategyService().getBreakthroughObjectives().then(function (result) {\n scope.goals = result;\n for (var i = 0; i < allColors.length; i++) {\n var colorUsed = $filter('filter')(scope.goals, { color: allColors[i] }, true);\n if (colorUsed.length == 0) {\n scope.availableColors.push(allColors[i]);\n }\n }\n if (selectedColor) {\n scope.availableColors.unshift(selectedColor);\n } else {\n scope.selectedColor = scope.availableColors[0];\n }\n updateHandler();\n });\n\n }\n\n scope.assetId = null;\n scope.$watch(\"goal\", function (goal) {\n if (!goal) return;\n scope.goal = goal;\n scope.name = goal.name;\n scope.selectedColor = goal.color;\n scope.assetId = goal.assetId;\n\n if (goal.parentId) {\n scope.goalType = \"SubGoal\";\n } else {\n scope.goalType = \"BreakThroughObjective\";\n scope.getAvailableColors(scope.selectedColor);\n }\n\n updateAsset();\n updateHandler();\n });\n\n scope.textChanged = function (name) {\n scope.name = name;\n updateHandler();\n }\n scope.colorChanged = function (col) {\n scope.selectedColor = col;\n updateHandler();\n }\n\n\n scope.setAsset = function (asset) {\n scope.selectAsset = asset;\n if (asset) {\n scope.assetId = scope.selectAsset.id;\n }\n updateHandler();\n };\n\n function updateAsset() {\n if (!scope.assets) return;\n if (!scope.assetId) return;\n \n var matchingAsset = $filter('filter')(scope.assets, { id: scope.assetId }, true);;\n if (matchingAsset.length > 0) {\n scope.selectAsset = matchingAsset[0];\n }\n \n // \n }\n function updateHandler() {\n if (!scope.goaleditChangeHandler) return;\n var goalEdit = {\n name: scope.name,\n assetId: scope.assetId,\n color: scope.selectedColor,\n }\n scope.goaleditChangeHandler({ goalEdit: goalEdit })\n }\n scope.isAdmin = authService.hasRole(\"Admin\") || authService.hasRole(\"StrategyAdmin\");\n $rootScope.subscribe(\"UserAuthenticatedAndReady\", function (profile) {\n scope.isAdmin = authService.hasRole(\"Admin\") || authService.hasRole(\"StrategyAdmin\");\n if (scope.isAdmin) {\n scope.canEdit = true;\n scope.selectAsset = null;\n }\n });\n\n scope.clearAsset = function () {\n var emptyAsset = {\n id : \"\",\n name: $translate.instant('STRATEGY_TOP_LEVEL')\n }\n scope.assetId = \"\"; //must be empty string in order for backend to accept the parameter\n scope.selectAsset = emptyAsset;\n updateHandler();\n };\n\n scope.selectAsset = null;\n function getAssetList() {\n if (scope.isAdmin) {\n assetService.getAllAssets(true).then(function (assets) {\n scope.assets = assets;\n for (var k = 0; k < scope.assets.length; k++) {\n scope.assets[k].cssLevel = \"level-\" + scope.assets[k].level;\n }\n updateAsset();\n });\n } else {\n assetService.getList().then(function (assets) {\n scope.assets = assets;\n if (scope.assets.length > 0) {\n scope.selectAsset = scope.assets[0];\n }\n for (var k = 0; k < scope.assets.length; k++) {\n scope.assets[k].cssLevel = \"level-\" + scope.assets[k].level;\n\n }\n updateAsset();\n });\n }\n // Set selected asset\n \n };\n getAssetList();\n }\n }\n }]);","import moment from \"moment\"\nimport * as customerService from \"@common/services/customers/customerService\"\nimport * as profileService from \"@common/services/user/profileService\"\nimport * as timeService from \"@common/services/timeService\"\nimport * as profileImageService from \"@common/services/user/profileImageService\"\n\nangular\n .module('DigiLean')\n .directive(\"goalKanban\", ['$uibModal', '$filter', '$translate', 'strategyService', 'boardTaskService',\n function ($uibModal, $filter, $translate, strategyService, boardTaskService) {\n return {\n templateUrl: 'goalKanban.html',\n restrict: 'E',\n scope: {\n 'strategyGoalId': '=',\n 'assetId': '=',\n },\n link: function (scope, elem, attrs) {\n // scope.columns = [];\n scope.tasks = [];\n var timeperiodAll = timeService.getTimePeriod('all');\n\n function resetColumn(){\n scope.columns = [\n {\n title: $translate.instant(\"DASHBOARD_CURRENT_MONTH\"),\n timeframe: \"month\",\n showAddButton: true,\n tasks:[]\n //columnProvider: statusColumnProvider,\n //groupModel: null\n },\n {\n title: $translate.instant(\"DASHBOARD_QUATER\"),\n timeframe: \"quarter\",\n showAddButton: true,\n tasks:[]\n },\n {\n title: $translate.instant(\"DASHBOARD_THIS_YEAR\"),\n timeframe: \"thisyear\",\n showAddButton: true,\n tasks:[]\n },\n {\n title: $translate.instant(\"STRATEGY_WITHIN_DUE_DATE\"),\n timeframe: \"all\",\n showAddButton: true,\n tasks:[]\n },\n ];\n setTimePeriod();\n }\n resetColumn();\n \n scope.$watch('strategyGoalId', function (strategyGoalId) {\n if (!scope.strategyGoalId) return;\n if(scope.assetId){ \n loadTeamGoals();\n } else {\n getAllUsers();\n scope.strategyGoals = [{id:scope.strategyGoalId}];\n var timeperiod = timeService.getTimePeriod(scope.columns[0].timeframe);\n getTasks(timeperiod);\n }\n \n \n });\n\n scope.$watch('assetId', function () {\n if (!scope.strategyGoalId) return;\n if(scope.assetId){\n getAllUsers();\n loadTeamGoals();\n } else {\n scope.strategyGoals = [{id:scope.strategyGoalId}];\n var timeperiod = timeService.getTimePeriod(scope.columns[0].timeframe);\n getTasks(timeperiod);\n }\n });\n\n function loadTeamGoals() {\n if (scope.strategyGoalId == null) return;\n if (scope.assetId == null) return;\n strategyService().getTeamGoals(scope.strategyGoalId, scope.assetId).then(function(goals){\n \n scope.strategyGoals = goals;\n resetColumn();\n var timeperiod = timeService.getTimePeriod(scope.columns[0].timeframe);\n if(!scope.users || scope.users.length == 0){\n getAllUsers();\n }\n getTasks(timeperiod);\n\n });\n }\n\n // Get all users until we decide to restrict who can be assign a task\n async function getAllUsers() {\n scope.users = await profileImageService.getAllUsersIncludeProfileImage()\n }\n\n function setTimePeriod(){\n var endOfYear = timeService.getTimePeriod('year').to;\n for(var i=0; i0){\n scope.columns[i].timeperiod.from = moment(scope.columns[i-1].timeperiod.to).add(1, 'days');\n }\n var endDate = moment(scope.columns[i].timeperiod.to);\n if(i == 0 && endDate.isSame(endOfYear)){\n scope.columns[1].title = $translate.instant(\"DASHBOARD_NEXT_QUATER\");\n scope.columns[1].timeframe = \"nextquarter\";\n scope.columns[2].title = $translate.instant(\"DASHBOARD_NEXT_YEAR\");\n scope.columns[2].timeframe = \"nextyear\";\n }\n if(i == 1 && endDate.isSame(endOfYear)){\n scope.columns[2].title = $translate.instant(\"DASHBOARD_NEXT_YEAR\");\n scope.columns[2].timeframe = \"nextyear\";\n }\n }\n }\n }\n \n\n \n\n function getTasks(timeperiod){\n resetColumn();\n strategyService().getTasksForStrategyGoals(scope.strategyGoals, timeperiod).then(function (tasks) {\n \n for(var i=0; i 0) { \n var index = column.tasks.indexOf(exists[0]);\n if(index >= 0){\n column.tasks.splice(index, 1);\n exists[0].boardDate = moveSettings.boardDate;\n placeTaskInColumn(exists[0]);\n }\n } \n });\n });\n\n scope.$watch('users', function (users) {\n if (!users) return;\n scope.users = users;\n });\n\n function placeTaskInColumn(task){\n if(!task.boardDate){\n scope.columns[3].tasks.push(task);\n } else {\n for(var i=0; i 1 && task.status != 'OK'){\n task.overdue = true;\n } else {\n task.overdue = false;\n }\n scope.columns[i].tasks.push(task);\n i = scope.columns.length;\n }\n }\n }\n }\n\n function placeTaskFirstInColumn(task){\n if(!task.boardDate){\n scope.columns[3].tasks.push(task);\n } else {\n for(var i=0; i 0) {\n initTask(task);\n placeTaskFirstInColumn(task);\n }\n }\n }\n });\n scope.subscribe('TaskDeleted', function (task) {\n if (!task) return;\n //if (task.goals){\n //for(var g=0; g 0) { \n var index = column.tasks.indexOf(exists[0]);\n initTask(exists[0]); // init task so we can animate\n // animate removal\n exists[0].animate(\"fadeOut\", 2000);\n column.tasks.splice(index, 1);\n } \n });\n }, 1500);\n //}\n //}\n //}\n });\n\n \n function openBoardTask(column, goalId){\n var status = \"blank\";\n var options = {\n users: scope.users, \n showDueDate: true \n }\n if(!column.timeperiod){\n var timeperiod = timeService.getTimePeriod(column.timeframe);\n column.timeperiod = timeperiod;\n }\n\n var newDate = column.timeperiod.from; \n if(moment(newDate).isBefore(moment())){\n newDate = moment().startOf('day');\n }\n var task = {\n id: 0,\n boardId: null,\n title: \"\",\n text: \"\",\n status: status,\n tags: \"\",\n boardDate: moment(newDate).toDate(),\n goals: [{Id:0,\n BoardTaskId: 0,\n StrategyGoalId:goalId}]\n }\n\n\n\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'newBoardTask.html',\n controller: 'newBoardTaskController',\n resolve: {\n task: function () {\n return task;\n },\n options: function () {\n return options;\n }\n }\n });\n\n modalInstance.result.then(function (result) {\n\n });\n\n }\n\n scope.createTask = function (column) {\n\n if(scope.strategyGoals.length == 1){\n openBoardTask(column, scope.strategyGoals[0].id);\n } else {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'goalSelector.html',\n controller: 'goalSelectorController',\n resolve: {\n goals: function () {\n return scope.strategyGoals;\n }\n }\n });\n \n modalInstance.result.then(function (result) {\n openBoardTask(column, result);\n });\n } \n }\n\n\n }\n\n }\n }]);","import * as timeService from \"@common/services/timeService\"\n\nangular\n .module('DigiLean')\n .directive(\"goalKpiTable\", ['strategyService','mathService','dataService',\n function (strategyService,mathService,dataService) {\n return {\n templateUrl: 'goalKpiTable.html',\n restrict: 'E',\n scope: {\n 'goalId': '='\n },\n link: function (scope, elem, attrs) {\n scope.kpis = null;\n var decimals = 2;\n var timePeriodYTD = timeService.getTimePeriod(\"YTD\");\n\n scope.$watch(\"goalId\", function () {\n if (scope.goalId) {\n strategyService().getGoalKPIs(scope.goalId).then(function (result) {\n scope.kpis = result;\n for(var i=0; i= 2){ \n label = label + \" - \" + timeService.getMonthLabel(currentMomentMonth) + \" \" + year;\n }\n return label;\n }\n\n function loadTargetDataSourceValues(kpi){\n if(kpi.targetDataSourceId){\n if (kpi.targetFilter && typeof (kpi.targetFilter) === \"string\") {\n kpi.targetFilter = JSON.parse(kpi.targetFilter);\n }\n var options = {\n timePeriod: timePeriodYTD,\n filters: kpi.targetFilter\n \n };\n dataService().getSumForPeriod(kpi.targetDataSourceId, options).then(function (sum) {\n if (kpi.formula == 'average' || (!formula && kpi.unit == \"%\")) { //Can we assume this also for planned datasource?\n dataService().getNumberOfValuesForPeriod(kpi.targetDataSourceId, options).then(function (numberOfValues) {\n kpi.ytdPlannedValue = sum / numberOfValues;\n });\n } else {\n if(sum){\n kpi.ytdPlannedValue = sum;\n } else {\n kpi.ytdPlannedValue = 0;\n } \n }\n if(kpi.lastValueYear && kpi.lastValueMonth){\n var timePeriod = getMonthTimePeriod(kpi);\n var options = {\n timePeriod: timePeriod,\n filters: kpi.targetFilter,\n };\n dataService().getSumForPeriod(kpi.targetDataSourceId, options).then(function (sum) {\n if(sum && sum !== ''){\n kpi.lastPlannedValue = sum; \n } else {\n kpi.lastPlannedValue = null;\n }\n checkOnTarget(kpi); \n });\n }\n\n });\n } else {\n checkOnTarget(kpi); \n }\n }\n\n function getLastValue(kpi){\n var startDate = moment(\"2015-01-01\");\n var endDate = moment();\n var timePeriod = {\n from: startDate.utc().toDate().toJSON(),\n to: endDate.utc().toDate().toJSON()\n };\n dataService().getLastDate(kpi.dataSourceId, timePeriod, kpi.filter).then(function (lastDate) {\n var fromDate = moment(lastDate).startOf('month');\n var toDate = moment(lastDate).endOf('day');\n kpi.lastValueMonth = toDate.month()+1;\n kpi.lastValueYear = toDate.year();\n setTooltipData(kpi);\n var dayperiod = {\n from:fromDate,\n to:toDate\n };\n \n var formula = kpi.formula;\n if(!formula && kpi.unit == \"%\"){\n formula = \"average\";\n }\n var options = {\n timePeriod: dayperiod,\n filters: kpi.filter,\n formula: formula\n };\n dataService().getSumForPeriod(kpi.dataSourceId, options).then(function (sum) {\n kpi.lastActualValue = sum; \n loadTargetDataSourceValues(kpi); \n });\n });\n\n }\n \n function getMonthTimePeriod(kpi){\n var startDate = moment().set({'year': kpi.lastValueYear, 'month': kpi.lastValueMonth-1, 'date':1}).startOf('day');\n var endDate = moment(startDate).endOf(\"month\");\n timePeriod = {\n from: startDate.utc().toDate().toJSON(),\n to: endDate.utc().toDate().toJSON()\n }; \n return timePeriod;\n }\n\n function setTooltipData(kpi){\n if(kpi.lastValueMonth){\n kpi.lastValueMonthLabel = timeService.getMonthLabel(kpi.lastValueMonth);\n }\n\n }\n\n function checkOnTarget(kpi){\n if(kpi.kpiOperator){\n if(kpi.kpiOperator == '>='){\n if(kpi.lastPlannedValue != null && kpi.lastActualValue != null){\n if(kpi.lastActualValue >= kpi.lastPlannedValue){\n kpi.lastOnTarget = true;\n } else {\n kpi.lastOnTarget = false;\n }\n setTooltipData(kpi);\n }\n if(kpi.ytdPlannedValue != null && kpi.ytdActualValue != null){\n if(kpi.ytdActualValue >= kpi.ytdPlannedValue){\n kpi.YTDOnTarget = true;\n } else {\n kpi.YTDOnTarget = false;\n }\n }\n \n \n } else if(kpi.kpiOperator == '<='){\n if(kpi.lastPlannedValue != null && kpi.lastActualValue != null){\n if(kpi.lastActualValue <= kpi.lastPlannedValue){\n kpi.lastOnTarget = true;\n } else {\n kpi.lastOnTarget = false;\n }\n setTooltipData(kpi);\n }\n if(kpi.ytdPlannedValue != null && kpi.ytdActualValue != null){\n if(kpi.ytdActualValue <= kpi.ytdPlannedValue){\n kpi.YTDOnTarget = true;\n } else {\n kpi.YTDOnTarget = false;\n }\n } \n }\n kpi.ytdActualValue = mathService().roundNumber(kpi.ytdActualValue, decimals);\n kpi.lastActualValue = mathService().roundNumber(kpi.lastActualValue, decimals);\n \n }\n kpi.ytdPlannedValue = mathService().roundNumber(kpi.ytdPlannedValue, decimals);\n kpi.lastPlannedValue = mathService().roundNumber(kpi.lastPlannedValue, decimals);\n }\n\n }\n }\n }]);\n\n ","import * as customerService from \"@common/services/customers/customerService\"\nimport * as assetService from \"@common/services/assetService\"\nimport * as profileService from \"@common/services/user/profileService\"\nimport * as timeService from \"@common/services/timeService\"\nimport * as boardService from \"@common/services/boardService\"\nimport * as translationService from \"@common/services/translationService\"\nimport * as profileImageService from \"@common/services/user/profileImageService\"\n\nangular\n .module('DigiLean')\n .directive(\"strategyBoard\", ['$filter', '$translate', 'strategyService', 'strategyGoalService', 'projectService', '$uibModal', 'activityService', 'modalService', 'orderByFilter', 'authService',\n function ($filter, $translate, strategyService, strategyGoalService, projectService, $uibModal, activityService, modalService, orderByFilter, authService) {\n return {\n templateUrl: 'strategyBoard.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'parentGoal': '=',\n 'isAdminMode': '=',\n 'options': '= 0){\n var sortOrder = [];\n animate(project, \"bounce\");\n swapArrayElements($scope.projects, index-1, index); \n for (var i = 0; i < $scope.projects.length; i++) {\n var row = $scope.projects[i];\n var rowOrder = {\n rowId: row.id,\n sortOrder: i,\n goalId: row.goal.id\n }\n sortOrder.push(rowOrder)\n }\n strategyService().updateStrategyGoalSortOrder($scope.board.id, sortOrder).then(function () {\n }); \n }\n }\n $scope.moveDown = function(project){\n var index = $scope.projects.indexOf(project);\n if(index+1 < $scope.projects.length){\n var sortOrder = [];\n animate(project, \"bounce\");\n swapArrayElements($scope.projects, index, index+1); \n for (var i = 0; i < $scope.projects.length; i++) {\n var row = $scope.projects[i];\n var rowOrder = {\n rowId: row.id,\n sortOrder: i,\n goalId: row.goal.id\n }\n sortOrder.push(rowOrder)\n }\n strategyService().updateStrategyGoalSortOrder($scope.board.id, sortOrder).then(function () {\n }); \n \n }\n }\n // Drag and drop of rows events\n /* REMOVED since drag and drop do not work with = 0){\n var sortOrder = [];\n swapArrayElements($scope.projectColumns, index-1, index); \n for (var i = 0; i < $scope.projectColumns.length; i++) {\n var column = $scope.projectColumns[i];\n var columnOrder = {\n boardAttributeId: column.id,\n sortOrder: i\n }\n sortOrder.push(columnOrder); \n }\n projectService().updateProjectBoardSortOrder($scope.board.id, sortOrder).then(function () {\n\n });\n }\n }\n \n $scope.moveRight = function(col){\n var index = $scope.projectColumns.indexOf(col);\n if(index+1 < $scope.projectColumns.length){\n var sortOrder = [];\n swapArrayElements($scope.projectColumns, index, index+1); \n for (var i = 0; i < $scope.projectColumns.length; i++) {\n var column = $scope.projectColumns[i];\n var columnOrder = {\n boardAttributeId: column.id,\n sortOrder: i\n }\n sortOrder.push(columnOrder);\n }\n projectService().updateProjectBoardSortOrder($scope.board.id, sortOrder).then(function () {\n\n }); \n \n }\n }\n\n $scope.$on('column-header-bag.drag', function (e, el) {\n $(el).find(\".drag-drop-icon\").hide();\n $(el).find(\".option-icon\").hide();\n el.addClass('drag-moved');\n });\n\n $scope.$on('column-header-bag.drop', function (e, el) {\n $(el).find(\".drag-drop-icon\").show();\n $(el).find(\".option-icon\").show();\n el.removeClass('drag-moved');\n });\n\n $scope.$on('column-header-bag.dragend', function (e, el) {\n $(el).find(\".drag-drop-icon\").show();\n $(el).find(\".option-icon\").show();\n });\n\n $scope.$on('column-header-bag.over', function (e, el) {\n el.addClass('drag-over');\n })\n $scope.$on('column-header-bag.out', function (e, el) {\n el.removeClass('drag-over');\n });\n\n $scope.$watch(\"model\", function () {\n if ($scope.model == null) return;\n $scope.board = $scope.model.board;\n\n //$scope.hasBoardDesignerPrivileges = true; //full edit right for all users\n $scope.hasBoardDesignerPrivileges = $scope.isAdmin;\n \n $scope.projectColumns = $scope.model.attributes;\n $scope.projects = $scope.model.projects;\n $scope.title = $scope.board.name;\n loadGoals();\n\n });\n\n function loadGoals() {\n if ($scope.projects) {\n for (var i = 0; i < $scope.projects.length; i++) {\n var project = $scope.projects[i];\n project.cellModels = [];\n calculateProjectAttributes(project, $scope.projectColumns);\n }\n }\n }\n\n function reloadBoard(){\n // Reload board\n if($scope.isSubGoals){ \n strategyService().getStrategyBoardById($scope.board.id).then(function (board) {\n $scope.model = board;\n });\n } else {\n strategyService().getStrategyBoard().then(function (board) {\n $scope.model = board;\n });\n }\n }\n\n // StrategyGoalCreated\n $scope.subscribe(\"StrategyGoalCreated\", function (goal) {\n if (goal.parentBoardId === $scope.board.id) {\n\n reloadBoard();\n }\n });\n $scope.subscribe(\"StrategyGoalDeleted\", function (goal) {\n var foundProject = null;\n for (var p = 0; p < $scope.projects.length; p++) {\n if ($scope.projects[p].goal.id === goal.id) {\n foundProject = $scope.projects[p];\n foundProject.cssState = \"animated slideOutRight\";\n $scope.projects.splice(p, 1);\n break;\n }\n }\n });\n\n\n\n $scope.subscribe(\"ProjectBoardAttributeUpdated\", function (boardattribute) {\n if (boardattribute.boardId === $scope.board.id) {\n // $scope.projectColumns\n var hasColumn = $filter('filter')($scope.projectColumns, { id: boardattribute.id }, true);\n if (hasColumn.length > 0) {\n var column = hasColumn[0];\n if (column.name !== boardattribute.name) {\n column.name = boardattribute.name;\n }\n if (boardattribute.settings) {\n column.settings = JSON.parse(boardattribute.settings);\n }\n //TODO: antar vi kan legge til endring i kolonnerekkefølgen også på dette tidspunktet\n }\n }\n });\n\n\n\n $scope.subscribe(\"ProjectBoardSortOrderChanged\", function (payLoad) {\n if (payLoad.boardId === $scope.board.id) {\n reloadBoard();\n }\n });\n\n $scope.subscribe(\"ProjectBoardRowSortOrderChanged\", function (payLoad) {\n if (payLoad.boardId === $scope.tableId) {\n reloadBoard();\n }\n });\n\n // Replace with popup\n $scope.addGoal = function () {\n var parentGoalId = 0; // Breakthorughobjective\n if ($scope.parentGoal) {\n parentGoalId = $scope.parentGoal.id;\n }\n var options = {\n goalId:parentGoalId\n }\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'goalCreatePopup.html',\n controller: 'goalCreatePopup',\n resolve: {\n options: function () {\n return options;\n }\n\n }\n });\n modalInstance.result.then(function (result) {\n\n });\n }\n var calculateProjectAttributes = function (project, boardAttributes) {\n project.id = project.project.id;\n for (let index = 0; index < boardAttributes.length; index++) {\n let boardAttribute = boardAttributes[index];\n var cellModel = {\n project: project.project,\n goal: project.goal,\n column: boardAttribute,\n boardAttributeId: boardAttribute.id,\n projectAttribute: null\n }\n var hasAttribute = $filter('filter')(project.attributes, { projectBoardAttributeId: boardAttribute.id }, true);\n if (hasAttribute.length > 0) {\n var attribute = hasAttribute[0];\n if (attribute.value) {\n attribute.value = JSON.parse(attribute.value);\n }\n cellModel.projectAttribute = attribute;\n } else {\n // Create default attribute\n cellModel.projectAttribute = {\n id: 0,\n goalId: project.goal.id,\n projectId: project.project.id,\n projectBoardAttributeId: boardAttribute.id,\n value: null\n }\n }\n if (cellModel.column.settings && typeof (cellModel.column.settings) === \"string\") {\n cellModel.column.settings = JSON.parse(cellModel.column.settings);\n }\n // calculateColumnSum(boardAttributes[index]);\n project.cellModels.push(cellModel)\n }\n }\n\n var addAttributeToProjects = function (attribute) {\n for (let index = 0; index < $scope.projects.length; index++) {\n var project = $scope.projects[index];\n var cellModel = {\n project: project.project,\n goal: project.goal,\n column: attribute,\n boardAttributeId: attribute.id,\n projectAttribute: null\n }\n // Create default attribute\n cellModel.projectAttribute = {\n id: 0,\n goalId: project.goal.id,\n projectId: project.project.id,\n projectBoardAttributeId: attribute.id,\n value: null\n }\n project.cellModels.push(cellModel)\n }\n }\n\n\n\n $scope.toggleAdminMode = function () {\n $scope.isAdminMode = !$scope.isAdminMode;\n updatedEditable();\n if($scope.isAdminMode){\n var myDiv = document.getElementById(\"strategyboardtable\");\n\n setTimeout(function() {\n myDiv.scrollLeft = myDiv.scrollWidth;\n }, 500);\n }\n }\n $scope.columnWidthChangeHandler = function(col){\n if(col){\n projectService().updateProjectBoardAttribute(col).then(function (attribute) {\n })\n }\n }\n $scope.columnNameUpdated = function (column) {\n projectService().updateProjectBoardAttribute(column).then(function (attribute) {\n\n })\n }\n $scope.titleUpdated = function (title) {\n var boardName = {\n boardId: $scope.board.id,\n name: title\n }\n boardService.updateName($scope.board.id, boardName).then(function (result) {\n });\n }\n\n\n $scope.resetName = function () {\n $scope.newName = \"\";\n }\n $scope.addColumn = function (type) {\n if (type === \"numberAutomatic\") {\n addNumberAutomaticColumn(type);\n } else if (type === \"textfromapp\") {\n addTextFromAppColumn(type);\n } else if (type === \"targetfromapp\") {\n addTargetFromAppColumn(type);\n } else {\n var headertext = translationService.getTranslatedSmartColumnName(type);\n if (headertext === \"\") {\n headertext = type.charAt(0).toUpperCase() + type.slice(1);\n }\n\n var attribute = {\n boardId: $scope.board.id,\n name: headertext,\n attributeType: type,\n sortOrder: $scope.projectColumns.length - 1\n }\n projectService().addProjectAttributeToBoard(attribute).then(function (savedAttribute) {\n\n })\n\n }\n }\n\n $scope.editTimeframe = function (col) {\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'timeframeSelectorModal.html',\n controller: 'timeframeSelectorModal',\n resolve: {\n timePeriod: function () {\n return col.settings.timePeriod;\n }\n }\n });\n\n modalInstance.result.then(function (result) {\n col.settings.timePeriod = result; //result = timePeriod.timeframe e.g.\"all\"\n \n var payload = {\n boardAttributeId: col.id,\n timePeriod: col.settings.timePeriod\n }\n $scope.publish(\"ProjectNumberCellAutomaticTimeframeUpdated\", payload);\n\n projectService().updateProjectBoardAttribute(col).then(function (attribute) {\n\n })\n\n });\n\n }\n $scope.getTimeframeLabel = function (timeframe) {\n return timeService.getTimeframeLabel(timeframe);\n }\n $scope.predefinedIcons = function (col) {\n if (!col.settings) {\n col.settings = {};\n }\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'predefinedIcons.html',\n controller: 'predefinedIcons',\n resolve: {\n labels: function () {\n return col.settings.predefinedIcons;\n }\n }\n });\n\n modalInstance.result.then(function (result) {\n if (!col.settings) {\n col.settings = {};\n }\n col.settings.predefinedIcons = result;\n var payload = {\n type: 'project',\n boardAttributeId: col.id,\n columnId: col.id,\n predefinedIcons: col.settings.predefinedIcons\n }\n $scope.publish(\"SmartIconCellSelectorUpdated\", payload);\n projectService().updateProjectBoardAttribute(col).then(function (attribute) {\n\n })\n\n });\n }\n $scope.predefinedLabels = function (col) {\n if (col.settings.usePredefinedLabels) {\n var dataSource = null;\n var filters = null;\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'predefinedLabels.html',\n controller: 'predefinedLabels',\n resolve: {\n labels: function () {\n return col.settings.predefinedLabels;\n }\n }\n });\n\n modalInstance.result.then(function (result) {\n col.settings.predefinedLabels = result;\n var payload = {\n boardAttributeId: col.id,\n predefinedLabels: col.settings.predefinedLabels,\n usePredefinedLabels: col.settings.usePredefinedLabels\n }\n $scope.publish(\"ProjectTextCellLabelUpdated\", payload);\n\n projectService().updateProjectBoardAttribute(col).then(function (attribute) {\n\n })\n\n });\n } else {\n col.settings.usePredefinedLabels = false;\n var payload = {\n projectAttributeId: col.id,\n predefinedLabels: col.settings.predefinedLabels,\n usePredefinedLabels: col.settings.usePredefinedLabels\n }\n $scope.publish(\"ProjectTextCellLabelUpdated\", payload);\n\n projectService().updateProjectBoardAttribute(col).then(function (attribute) {\n\n })\n }\n }\n\n\n $scope.changeDateColor = function (col) {\n\n if (col.settings.changeColor) {\n if (!col.settings.changeColorXDaysBefore) {\n col.settings.changeColorXDaysBefore = 1;\n }\n var payload = {\n projectAttributeId: col.id,\n changeColor: col.settings.changeColor,\n changeColorXDaysBefore: col.settings.changeColorXDaysBefore\n }\n $scope.publish(\"ProjectDateColorCellUpdated\", payload);\n\n projectService().updateProjectBoardAttribute(col).then(function (attribute) {\n\n })\n } else {\n col.settings.changeColor = false;\n var payload = {\n projectAttributeId: col.id,\n changeColor: col.settings.changeColor,\n changeColorXDaysBefore: col.settings.changeColorXDaysBefore\n }\n $scope.publish(\"ProjectDateColorCellUpdated\", payload);\n\n projectService().updateProjectBoardAttribute(col).then(function (attribute) {\n\n })\n }\n }\n\n $scope.updateChangeColorXDaysBefore = function (col) {\n col.settings.changeColor = true;\n var payload = {\n projectAttributeId: col.id,\n changeColor: col.settings.changeColor,\n changeColorXDaysBefore: col.settings.changeColorXDaysBefore\n }\n $scope.publish(\"ProjectDateColorCellUpdated\", payload);\n\n projectService().updateProjectBoardAttribute(col).then(function (attribute) {\n\n })\n\n }\n\n function addTextFromAppColumn(type) {\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n templateUrl: 'cellCloneSelectorForm.html',\n controller: 'cellCloneSelectorController',\n resolve: {\n celltype: function () {\n return type\n }\n }\n });\n\n modalInstance.result.then(function (result) {\n var test = result;\n if (result) {\n /*var cellSettings = JSON.stringify({\n visualizationType: result.name, \n cloneId: result.id\n });*/\n var cellSettings = JSON.stringify({\n visualizationType: result\n })\n var attribute = {\n boardId: $scope.board.id,\n name: result,\n attributeType: type,\n sortOrder: $scope.projectColumns.length - 1,\n settings: cellSettings,\n\n }\n projectService().addProjectAttributeToBoard(attribute).then(function (savedAttribute) {\n });\n }\n\n }, function () {\n\n });\n };\n function addTargetFromAppColumn(type) {\n\n //var visualizationType = null;\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n templateUrl: 'targetVisualizationSelectorForm.html',\n controller: 'targetVisualizationSelectorController'\n });\n\n modalInstance.result.then(function (result) {\n\n var cellSettings = JSON.stringify({\n visualizationType: result\n })\n var attribute = {\n boardId: $scope.board.id,\n name: result,\n attributeType: type,\n sortOrder: $scope.projectColumns.length - 1,\n settings: cellSettings,\n\n }\n projectService().addProjectAttributeToBoard(attribute).then(function (savedAttribute) {\n });\n\n }, function () {\n\n });\n };\n function addNumberAutomaticColumn(type) {\n\n var dataSource = null;\n var filters = null;\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'dataSourceSingleSelector.html',\n controller: 'dataSourceSingleSelector',\n windowClass: 'newdeviation-modal-window',\n resolve: {\n hasDataSerie: function () {\n return false;\n },\n dataSource: function () {\n return dataSource;\n },\n filters: function () {\n return filters;\n },\n withTarget: function () {\n return false;\n },\n type: function () {\n return \"PROJECT\";\n },\n externalOnly: function () {\n return false;\n }\n }\n });\n\n modalInstance.result.then(function (result) {\n\n var timePeriod = {\n timeframe: \"all\",\n period: timeService.getTimePeriod(\"all\")\n }\n\n var unit = null;\n if (result.dataSource.valueElement) {\n unit = result.dataSource.valueElement.unit;\n }\n\n\n var cellSettings = JSON.stringify({\n dataSource: result.dataSource,\n timePeriod: timePeriod,\n filters: result.filters,\n aggregateType: \"SUM\",\n unit: unit,\n unitPlacement: \"right\"\n })\n var attribute = {\n boardId: $scope.board.id,\n name: result.dataSource.title,\n attributeType: type,\n sortOrder: $scope.projectColumns.length - 1,\n settings: cellSettings,\n\n }\n projectService().addProjectAttributeToBoard(attribute).then(function (savedAttribute) {\n })\n\n });\n };\n $scope.deleteGoal = function (goal) {\n var goalId = goal.id;\n swal({\n title: $translate.instant(\"STRATEGY_GOAL_DELETE_QUESTION\"),\n text: $translate.instant(\"STRATEGY_GOAL_DELETE_DESCRIPTION\"),\n icon: \"error\",\n buttons: [$translate.instant(\"COMMON_CANCEL\"),\n $translate.instant(\"STRATEGY_GOAL_DELETE_BUTTON\")],\n dangerMode: true,\n closeOnConfirm: false\n }).then((value) => {\n switch (value) {\n case true: // Yes to delete\n strategyGoalService().deleteGoal(goalId).then(function () {\n\n });\n break;\n default:\n }\n });\n }\n $scope.deleteColumn = function (column) {\n projectService().deleteProjectAttribute(column);\n }\n\n $scope.updateAggregateType = function (col) {\n var payload = {\n projectAttributeId: col.id,\n aggregateType: col.settings.aggregateType\n }\n $scope.publish(\"ProjectNumberCellAggregateTypeUpdated\", payload);\n\n projectService().updateProjectBoardAttribute(col).then(function (attribute) {\n })\n };\n $scope.updateUnit = function (col) {\n var payload = {\n projectAttributeId: col.id,\n unit: col.settings.unit\n }\n $scope.publish(\"ProjectNumberCellUnitUpdated\", payload);\n\n projectService().updateProjectBoardAttribute(col).then(function (attribute) {\n })\n };\n $scope.updateUnitPlacement = function (col) {\n var payload = {\n projectAttributeId: col.id,\n unitPlacement: col.settings.unitPlacement\n }\n $scope.publish(\"ProjectNumberCellUnitPlacementUpdated\", payload);\n\n projectService().updateProjectBoardAttribute(col).then(function (attribute) {\n })\n };\n $scope.updateDecimals = function (col) {\n var payload = {\n projectAttributeId: col.id,\n decimals: col.settings.decimals\n }\n $scope.publish(\"ProjectNumberCellDecimalUpdated\", payload);\n\n\n projectService().updateProjectBoardAttribute(col).then(function (attribute) {\n\n })\n\n };\n\n\n\n $scope.subscribe(\"ProjectBoardAttributeAdded\", function (attribute) {\n if (attribute.boardId === $scope.board.id) {\n var hasColumn = $filter('filter')($scope.projectColumns, { id: attribute.id }, true);\n if (hasColumn.length === 0) {\n if (attribute.settings) {\n attribute.settings = JSON.parse(attribute.settings);\n }\n addAttributeToProjects(attribute);\n $scope.projectColumns.push(attribute);\n }\n }\n });\n $scope.subscribe(\"ProjectBoardAttributeDeleted\", function (attribute) {\n if (attribute.boardId === $scope.board.id) {\n reloadBoard();\n }\n });\n\n $scope.projectAttributeChangeHandler = function (projectAttribute) {\n if (projectAttribute.value) {\n projectAttribute.value = JSON.stringify(projectAttribute.value);\n }\n\n projectService().updateProjectAttribute(projectAttribute).then(function (savedAttribute) {\n // Parse value again\n projectAttribute.id = savedAttribute.id;\n if (savedAttribute.value) {\n projectAttribute.value = JSON.parse(savedAttribute.value);\n }\n });\n }\n\n\n\n\n\n function getHighestSortOrder() {\n var highestSortOrder = 1;\n for (var i = 0; i < $scope.projects.length; i++) {\n if ($scope.projects[i].sortOrder >= highestSortOrder) {\n highestSortOrder = $scope.projects[i].sortOrder + 1;\n }\n }\n\n return highestSortOrder;\n }\n\n $scope.delete = function (goal) {\n $translate(['COMMON_CANCEL', 'COMMON_DELETE', 'STRATEGY_MESSAGE_DELETE_GOAL_DESC']).then(function (translations) {\n var modalOptions = {\n closeButtonText: translations.COMMON_CANCEL,\n actionButtonText: translations.COMMON_DELETE,\n headerText: translations.COMMON_DELETE + ' ' + goal.name + '?',\n bodyText: translations.STRATEGY_MESSAGE_DELETE_GOAL_DESC\n };\n\n modalService.showModal({}, modalOptions).then(function (result) {\n strategyGoalService().deleteGoal(goal.id).then(function (data) {\n\n });\n });\n\n });\n }\n\n\n $scope.calculateNumberCellTotal = function (colDef) {\n var total = 0;\n for (var i = 0; i < colDef.projectAttributes.length; i++) {\n /*var cellNumber = $filter('filter')(project.attributes, { projectBoardAttributeId: attribute.id }, true);\n if (hasAttribute.length > 0) {\n var attribute = hasAttribute[0];\n if (attribute.value) {\n attribute.value = JSON.parse(attribute.value);\n }\n cellModel.projectAttribute = attribute;\n }*/\n var value = colDef.projectAttributes[i].value;\n var valueObject = JSON.parse(value);\n var cellNumber = valueObject.number;\n if (cellNumber) {\n total = total + cellNumber;\n }\n }\n return total;\n }\n\n // History\n $scope.getActivityLog = function (){\n if (!activityLogLoaded) {\n var activityRequest = {\n activity: \"StrategyGoal\",\n activityId: 0,\n //parentId: $scope.board.id\n };\n var $translate = $filter('translate');\n var translateOptions = {\n month: $translate('COMMON_TIMEELAPSED_MONTH'),\n days: $translate('COMMON_TIMEELAPSED_DAYS'),\n hours: $translate('COMMON_TIMEELAPSED_HOURS'),\n mins: $translate('COMMON_TIMEELAPSED_MINUTES'),\n seconds: $translate('COMMON_TIMEELAPSED_SECONDS'),\n now: $translate('COMMON_TIMEELAPSED_NOW')\n };\n activityService().getLogForStrategy(activityRequest).then(function (logItems) {\n logItems.forEach(function (activity) {\n activity.occured = timeService.getTimeElapsed(activity.activityDate, translateOptions);\n if (activity.payLoad && typeof activity.payLoad === \"string\") {\n activity.payLoad = JSON.parse(activity.payLoad); // Payload gives the whole object, in this case the Task.\n }\n });\n $scope.activityLog = logItems;\n activityLogLoaded = true;\n });\n }\n }\n\n }\n }\n }]);","import * as customerService from \"@common/services/customers/customerService\"\nimport * as employeeService from \"@common/services/employeeService\"\nimport envConfig from \"@common/envConfig\"\n\nangular\n .module('DigiLean')\n .directive(\"strategyTaskListResult\", ['$filter', '$translate', 'strategyService', '$uibModal', 'NgTableParams', 'boardTaskService',\n function ($filter, $translate, strategyService, $uibModal, NgTableParams, boardTaskService) {\n return {\n templateUrl: 'strategyTaskListResult.html',\n restrict: 'E',\n scope: {\n 'filter': '<',\n },\n link: function (scope, elem, attrs) {\n\n scope.columns = [];\n scope.registrations = [];\n scope.newValuesCounter = 0;\n //scope.totalValues = 0;\n scope.totalMatchingRecords = 0;\n scope.allUsers = [];\n scope.selectedDataList = [];\n\n scope.showFileGenerators = true;\n if (envConfig.isTeamsMode) {\n scope.showFileGenerators = false;\n }\n\n\n // Filter handling\n scope.$watch('filter', function (filter) {\n if (!filter) {\n scope.filter = [];\n }\n scope.getValues();\n });\n\n scope.openTask = function (item) {\n if(item.assetId){\n customerService.getUsersForAsset(item.assetId).then(function (assetUsers) {\n scope.users = assetUsers;\n openTaskPopup(item.boardTaskId, scope.users)\n });\n } else if(scope.allUsers && scope.allUsers.length > 0) {\n openTaskPopup(item.boardTaskId, scope.allUsers);\n } else {\n employeeService.getList().then(function (data) {\n scope.allUsers = data;\n openTaskPopup(item.boardTaskId, scope.allUsers);\n });\n }\n } \n \n function openTaskPopup(boardTaskId, users){\n boardTaskService().get(boardTaskId).then(function (task) {\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n templateUrl: 'boardTask.html',\n controller: 'boardTaskController',\n resolve: {\n task: function () {\n return task;\n },\n activeTab: function () {\n return \"Info\";\n },\n options: function () {\n var options = {\n archiveAvailable: false,\n canChangeBoard: false,\n users: users\n }\n return options;\n }\n }\n });\n modalInstance.result.then(function (updatedTask) {\n scope.getValues();\n });\n });\n }\n\n\n scope.getValueForElement = function (element, item) {\n var sourceColumn = element.sourceColumn;\n var value = item[sourceColumn];\n return value;\n }\n\n\n scope.getValues = function (params) {\n scope.buildColumns();\n scope.tableParams = new NgTableParams({\n sorting: { lastModified: \"desc\" },\n count: 15,\n },{\n getData: scope.getTableValues\n });\n\n }\n scope.sorting = \"\";\n scope.getTableValues = function (params) {\n\n var sorting = [];\n // Build sortExpression for database to be able to deserialize, becuase NgTableParams.sorting is a dynamic object.\n for (var propt in params._params.sorting) {\n sorting.push({\n property: propt,\n direction: params._params.sorting[propt]\n });\n }\n scope.sorting = sorting;\n // We will build params based on the built-in NgTableParams + our sorting array\n var dbParams = {\n page: params._params.page,\n count: params._params.count,\n sorting: scope.sorting,\n filters: scope.filter\n }\n return strategyService().getTableValues(dbParams).then(function (data) {\n scope.totalMatchingRecords = data.total;\n params.total(data.total); // recal. page nav controls\n // check values\n data.values.forEach(value => {\n value.isOverdue = isOverdue(value.boardDate, value.status);\n if(!value.assetName){\n value.assetName = $translate.instant(\"STRATEGY_TOP_LEVEL\")\n }\n });\n return data.values;\n\n });\n }\n scope.allColumns = [\n {\n title: $translate.instant(\"COMMON_GOAL\"),\n field: 'goal',\n visible: true,\n sortable: 'color',\n getValue: renderValue,\n dataType: \"text\"\n },{\n title: $translate.instant(\"COMMON_ACTION\"),\n field: 'title',\n visible: true,\n sortable: 'title',\n getValue: renderValue,\n dataType: \"text\"\n },\n {\n title: $translate.instant(\"COMMON_ASSET\"),\n field: 'assetName',\n sortable: 'assetName',\n getValue: renderValue,\n visible: true,\n dataType: \"text\"\n },{\n title: $translate.instant(\"COMMON_STATUS\"),\n field: 'status',\n visible: true,\n sortable: 'status',\n getValue: renderValue,\n dataType: \"text\"\n },\n {\n title: $translate.instant(\"COMMON_RESPONSIBLE\"),\n field: 'responsibleUser',\n sortable: 'responsibleUser',\n getValue: renderValue,\n visible: true,\n dataType: \"text\"\n },\n {\n title: $translate.instant(\"COMMON_DUE_DATE\"),\n field: 'boardDate',\n visible: true,\n sortable: 'boardDate',\n getValue: renderValue,\n dataType: \"date\"\n },\n {\n title: $translate.instant(\"COMMON_LAST_CHANGED\"),\n field: 'lastModified',\n visible: true,\n sortable: 'lastModified',\n getValue: renderValue,\n dataType: \"date\"\n },\n ];\n scope.buildColumns = function (datasource) {\n scope.columns = $filter('filter')(scope.allColumns, { visible: true });\n }\n\n var getColumns = function() {\n var columns = [];\n scope.columns.forEach((c) => {\n columns.push({\n field : c.field\n });\n })\n return columns;\n }\n\n scope.selectColumn = function(column) {\n column.visible = !column.visible;\n scope.buildColumns();\n }\n\n function renderValue($scope, row) {\n var item = this;\n var field = item.field;\n var value = row[field];\n if (this.dataType === \"date\") {\n return $filter('date')(value, \"mediumDate\");\n }\n if (this.dataType === \"timestamp\") {\n return $filter('date')(value, \"dd.MM.yyyy HH:mm:ss\");\n }\n if (this.dataType === \"bool\") {\n if (value === \"true\") {\n return \"\";\n } else {\n return \"\";\n }\n } \n return value;\n }\n\n function isOverdue(date, status) {\n if (!date) return false;\n if(status === 'OK') return false;\n var duration = moment.duration(moment().diff(moment(date)));\n var days = duration.asDays();\n if (days > 1) {\n return true;\n }\n return false;\n }\n\n }\n\n }\n }]);\n","import * as profileImageService from \"@common/services/user/profileImageService\"\nimport toaster from \"@common/components/toast\"\n\nvar DigiLean = angular.module('DigiLean')\n// TODO: used for old A3s\nDigiLean\n .directive(\"a3ActionList\", ['$filter', '$translate', 'a3Service', 'taskDrawingService', 'boardTaskService',\n function ($filter, $translate, a3Service, taskDrawingService, boardTaskService) {\n return {\n templateUrl: 'a3ActionList.html',\n restrict: 'E',\n scope: {\n 'a3id': '=',\n 'stepid': '=',\n 'readonly': '<'\n },\n link: function (scope, element, attrs) {\n scope.users = [];\n scope.actionList = [];\n scope.items = [];\n scope.readonly = scope.readonly;\n\n scope.add = function () {\n a3Service().createActionItem(scope.a3id, scope.stepid).then(function (actionItem) {\n scope.setActive(actionItem);\n });\n }\n scope.setActive = function (task) {\n task.active = true;\n setTimeout(function () {\n $(\".project-name\").focus();\n }, 50);\n }\n\n scope.deleteItem = function (item) {\n a3Service().deleteActionListItem(item.id).then(function () {\n var index = scope.items.indexOf(item);\n if (index > -1) {\n scope.items.splice(index, 1);\n }\n });\n };\n\n scope.changeActionDate = function (item, event) {\n const orgEvt = event.originalEvent\n const boardDate = orgEvt.detail\n item.boardDate = boardDate\n if (item.boardDate) { // Valid date format\n item.error = false;\n var actionDate = {\n taskId: item.id,\n actionDate: item.boardDate\n };\n a3Service().updateItemActionDate(actionDate).then(function () {\n $translate('A3_ACTION_ITEM_SAVED').then(function (msg) {\n toaster.success(msg);\n });\n // publish event on change\n scope.publish(\"SendTaskDateUpdated\", actionDate);\n });\n } else {\n $translate('COMMON_NOT_VALID_DATE').then(function (trans) {\n item.error = trans;\n });\n\n }\n }\n\n scope.updateResponsible = function (user, task) { \n var userDetails = {\n userId: user.userId,\n userName: user.fullName,\n userDisplayName: user.displayName,\n previousUserId: task.responsibleUserId,\n previousUserName: task.responsibleUser\n };\n \n var options = {\n taskId: task.id,\n user: userDetails\n }\n boardTaskService().assignUser(options);\n task.user = user;\n }\n\n scope.titleChanged = function (task) {\n task.active = false;\n var taskTitle = {\n taskId: task.id,\n title: task.title\n }\n boardTaskService().updateTitle(task.id, taskTitle).then(function (result) {\n\n });\n }\n scope.changeStatus = function (item) {\n if (scope.readonly) return;\n item.status = taskDrawingService().getNextStatus(item.status).status;\n var status = {\n taskId: item.id,\n status: item.status\n };\n boardTaskService().updateStatus(item.id, status).then(function (taskIds) {\n\n });\n\n }\n\n // Responsible\n function setResponsible(task) {\n if (task.responsibleUserId && scope.users) {\n var user = $filter('filter')(scope.users, { userId: task.responsibleUserId }, false);\n if (user.length > 0) {\n task.user = user[0];\n }\n }\n }\n\n scope.$watch(\"a3id\", async function () {\n if (!scope.a3id)\n return;\n const users = await a3Service().getUserlistForA3(scope.a3id)\n scope.users = profileImageService.getProfileImagesForUsers(users)\n \n // Get actionlist\n scope.items.forEach(function (item) {\n //item.user = $filter('filter')(scope.users, { id: item.responsibleUserId })[0];\n setResponsible(item);\n item.boardDate = moment(item.boardDate).toDate();\n });\n });\n\n scope.$watch(\"stepid\", function () {\n if (!scope.stepid) return;\n scope.items = [];\n a3Service().getActionList(scope.stepid).then(function (items) {\n scope.items = items;\n // Connect responsible.\n scope.items.forEach(function (item) {\n //item.user = $filter('filter')(scope.users, { id: item.responsibleUserId }, true)[0];\n setResponsible(item);\n item.boardDate = moment(item.boardDate).toDate();\n });\n });\n\n });\n\n scope.autoGrow = function (element) {\n element.style.height = \"5px\";\n element.style.height = (element.scrollHeight) + \"px\";\n }\n\n setTimeout(function () {\n // Applied globally on all textareas with the \"autoExpand\" class\n $(document)\n .one('focus.autoExpand', 'textarea.autoExpand', function () {\n var savedValue = this.value;\n this.value = '';\n this.baseScrollHeight = this.scrollHeight;\n this.value = savedValue;\n })\n .on('input.autoExpand', 'textarea.autoExpand', function () {\n var minRows = this.getAttribute('data-min-rows') | 0, rows;\n this.rows = minRows;\n rows = Math.ceil((this.scrollHeight - this.baseScrollHeight) / 17);\n this.rows = minRows + rows;\n });\n }, 1500);\n\n // Subscribe\n scope.subscribe('NewTask', function (task) {\n // Handle new event\n if (task.a3StepId === scope.stepid) {\n if ($filter('filter')(scope.items, { id: task.id }).length === 0) {\n task.boardDate = moment(task.boardDate).toDate();\n scope.items.unshift(task);\n }\n }\n\n\n });\n scope.subscribe('TaskDeleted', function (id) {\n\n var task = $filter('filter')(scope.items, { id: id });\n if (task.length > 0) {\n scope.$apply(function () {\n var index = scope.items.indexOf(task[0]);\n if (index > -1) {\n scope.items.splice(index, 1);\n }\n });\n }\n });\n scope.subscribe('TaskAssigned', function (status) {\n\n var task = $filter('filter')(scope.items, { id: status.taskId });\n if (task.length > 0) {\n scope.$apply(function () {\n\n task[0].responsibleUserId = status.userId;\n task[0].responsibleUserName = status.userName;\n task[0].responsibleUserDisplayName = status.userDisplayName;\n setResponsible(task[0]);\n });\n }\n });\n scope.subscribe('TaskStatusUpdated', function (status) {\n var task = $filter('filter')(scope.items, { id: status.taskId });\n if (task.length > 0) {\n scope.$apply(function () {\n task[0].status = status.status;\n });\n }\n });\n scope.subscribe('TaskDateUpdated', function (status) {\n var task = $filter('filter')(scope.items, { id: status.taskId });\n if (task.length > 0) {\n scope.$apply(function () {\n task[0].boardDate = moment(status.actionDate).toDate();\n });\n }\n });\n scope.subscribe('TaskDescriptionUpdated', function (descriptionUpdate) {\n var task = $filter('filter')(scope.items, { id: descriptionUpdate.taskId });\n if (task.length > 0) {\n scope.$apply(function () {\n task[0].title = descriptionUpdate.description;\n });\n }\n });\n\n }\n }\n }]);\n","import * as timeService from \"@common/services/timeService\"\nimport * as translationService from \"@common/services/translationService\"\nimport { getColStyle } from \"@common/services/settingsService\"\nimport * as profileImageService from \"@common/services/user/profileImageService\"\n\nvar DigiLean = angular.module('DigiLean');\nDigiLean\n .directive(\"a3SmartActionList\", ['a3Service', 'taskDrawingService', 'orderByFilter','boardTaskService', 'smartActionListService','$uibModal',\n function (a3Service, taskDrawingService, orderByFilter,boardTaskService, smartActionListService, $uibModal) {\n return {\n templateUrl: 'a3SmartActionList.html',\n restrict: 'E',\n scope: {\n 'a3id': '=',\n 'a3StepId': '=',\n 'assetid': '=',\n 'boardid': '=',\n 'readonly': '<'\n },\n link: function (scope, element, attrs) {\n scope.editable = true;\n scope.title = \"\";\n var boardId = null;\n scope.smartActionList = null;\n scope.isStandAlone = true;\n scope.useResizing = false;\n scope.isAdminMode = false;\n scope.viewMode = \"List\";\n scope.showAddButton = true;\n scope.columns = [];\n scope.tasks = [];\n\n scope.showArchive = false;\n scope.taskAdded = null;\n scope.taskDeleted = null;\n\n scope.theme = {\n background: \"transparent\",\n color: \"inherit\"\n };\n /* Task Styling */\n scope.postIts = taskDrawingService().getPostIts();\n scope.borderColor = \"#337ab7\"; // borderColor\n scope.fillColor = \"white\";\n\n \n\n scope.$watch(\"boardid\", function () {\n if (!scope.boardid) return;\n boardId = scope.boardid;\n\n loadsmartActionList(boardId);\n getAllUsers();\n\n });\n\n scope.$watch(\"readonly\", function () {\n if (scope.readonly) {\n scope.showAddButton = false;\n } else {\n scope.showAddButton = true;\n }\n });\n\n async function getAllUsers() {\n const users = await a3Service().getUserlistForA3(scope.a3id)\n scope.users = await profileImageService.getProfileImagesForUsers(users)\n }\n\n // Sorting\n scope.sortColumnIndex = null;\n scope.isAscedning = true;\n scope.sortColumn = null;\n scope.orderBy = function (column) {\n if (scope.sortColumn && scope.sortColumn != column) {\n scope.sortColumn.sort = \"none\";\n }\n if (!column.sort) column.sort = \"none\";\n column.sort = getNextSortOrder(column.sort);\n scope.sortColumn = column;\n scope.sortColumnIndex = scope.columns.indexOf(column);\n if (column.sort == \"none\") {\n scope.tasks = orderByFilter(scope.tasks, 'sortOrder');\n }\n if (column.sort == \"asc\") {\n scope.tasks = orderByFilter(scope.tasks, getSortValue, false);\n }\n if (column.sort == \"desc\") {\n scope.tasks = orderByFilter(scope.tasks, getSortValue, true);\n }\n }\n\n var getNextSortOrder = function (currentSortOrder) {\n if (currentSortOrder == \"none\") return \"asc\";\n if (currentSortOrder == \"asc\") return \"desc\";\n if (currentSortOrder == \"desc\") return \"none\";\n }\n\n var getSortValue = function (task) {\n if (task.cellModels) {\n var cell = task.cellModels[scope.sortColumnIndex];\n return cell.getSortValue();\n }\n return task.title;\n\n }\n \n scope.subscribe(\"TaskUpdated\", function (task) {\n let existingTask = scope.tasks.find(t => t.id == task.id);\n if (existingTask) {\n existingTask.color = task.color;\n setTaskStyle(existingTask);\n }\n });\n\n scope.subscribe('TaskArchived', function (archivedtaskid) {\n const existingTask = scope.tasks.find(t => t.id == archivedtaskid);\n if (existingTask) {\n var index = scope.tasks.indexOf(existingTask);\n scope.tasks.splice(index, 1);\n scope.taskDeleted = existingTask;\n }\n });\n\n scope.subscribe('TaskMovedFromArchive', function (unarchivedtask) {\n const existingTask = scope.tasks.find(t => t.id == unarchivedtask.id);\n if (existingTask) {\n var index = scope.tasks.indexOf(existingTask);\n scope.tasks.splice(index, 1);\n }\n });\n\n function loadsmartActionList(boardId) {\n scope.hasBoard = true;\n scope.boardId = boardId;\n scope.isLoading = true;\n smartActionListService().get(boardId).then(function (smartActionList) {\n scope.smartActionList = smartActionList;\n setupTable()\n setTimeout(function () {\n scope.isLoading = false;\n // resize();\n }, 500);\n })\n\n }\n\n scope.columnWidthChangeHandler = function(col){\n if(col)\n smartActionListService().updateColumn(col)\n }\n scope.changeDateColor = function (col) {\n\n if (col.settings.changeColor) {\n if (!col.settings.changeColorXDaysBefore) {\n col.settings.changeColorXDaysBefore = 1;\n }\n var payload = {\n columnId: col.id,\n changeColor: col.settings.changeColor,\n changeColorXDaysBefore: col.settings.changeColorXDaysBefore\n }\n scope.publish(\"SmartDateColorCellUpdated\", payload);\n\n smartActionListService().updateColumn(col)\n } else {\n col.settings.changeColor = false;\n var payload = {\n columnId: col.id,\n changeColor: col.settings.changeColor,\n changeColorXDaysBefore: col.settings.changeColorXDaysBefore\n }\n scope.publish(\"SmartDateColorCellUpdated\", payload);\n\n smartActionListService().updateColumn(col).then(function (attribute) {\n })\n }\n }\n\n scope.updateChangeColorXDaysBefore = function (col) {\n col.settings.changeColor = true;\n var payload = {\n columnId: col.id,\n changeColor: col.settings.changeColor,\n changeColorXDaysBefore: col.settings.changeColorXDaysBefore\n }\n scope.publish(\"SmartDateColorCellUpdated\", payload);\n\n smartActionListService().updateColumn(col)\n }\n\n\n var getArchivedTasks = function () {\n smartActionListService().getArchivedTasks(boardId).then(function (archivedtasks) {\n scope.tasks = archivedtasks;\n\n if (scope.tasks) {\n for (var i = 0; i < scope.tasks.length; i++) {\n var task = scope.tasks[i];\n calculateCells(task, scope.columns);\n scope.publish(\"SmartActionListArchiveChanged\", boardId);\n }\n }\n })\n\n }\n\n scope.toggleArchive = function () {\n scope.showArchive = !scope.showArchive;\n if (scope.showArchive) {\n scope.showAddButton = false;\n getArchivedTasks()\n } else {\n scope.showAddButton = true;\n loadsmartActionList(scope.boardId);\n }\n }\n\n scope.getColStyle = getColStyle\n\n function setupTable() {\n scope.columns = scope.smartActionList.columns;\n scope.tasks = scope.smartActionList.tasks;\n if (scope.tasks) {\n for (var i = 0; i < scope.tasks.length; i++) {\n var task = scope.tasks[i];\n setTaskStyle(task);\n calculateCells(task, scope.columns)\n }\n }\n }\n\n function setTaskStyle(task) {\n // Try to match fillColor\n var predefinedPostIt = scope.postIts.find(p => p.fillColor == task.color);\n if (predefinedPostIt) {\n task.borderColor = predefinedPostIt.background;\n } else {\n // Try to match background color\n var backgroundPostIt = scope.postIts.find(p => p.background == task.color);\n if (backgroundPostIt) {\n task.borderColor = backgroundPostIt.background;\n } else {\n task.borderColor = scope.borderColor;\n }\n }\n }\n\n function calculateCells(task, columns) {\n task.cellModels = [];\n for (let index = 0; index < columns.length; index++) {\n const column = columns[index];\n var cellModel = {\n task: task,\n column: column,\n cell: null\n }\n var cell = task.cells.find(c => c.smartTableColumnId == column.id);\n if (cell) {\n if (cell.value) {\n cell.value = JSON.parse(cell.value);\n }\n cellModel.cell = cell;\n } else {\n // Create default cell\n cellModel.cell = {\n id: 0,\n boardTaskId: task.id,\n smartTableColumnId: column.id,\n value: null\n }\n }\n if (cellModel.column.settings && typeof (cellModel.column.settings) === \"string\") {\n cellModel.column.settings = JSON.parse(cellModel.column.settings);\n }\n task.cellModels.push(cellModel)\n }\n }\n var addColumnTotasks = function (column) {\n for (let index = 0; index < scope.tasks.length; index++) {\n var task = scope.tasks[index];\n var cellModel = {\n task: task,\n column: column,\n cell: null\n }\n // Create default attribute\n cellModel.cell = {\n id: 0,\n boardTaskId: task.id,\n smartTableColumnId: column.id,\n value: null\n }\n task.cellModels.push(cellModel)\n }\n }\n\n scope.columnNameUpdated = function (column) {\n smartActionListService().updateColumn(column).then(function (attribute) {\n })\n }\n\n scope.predefinedLabels = function (col) {\n if (col.settings.usePredefinedLabels) {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'predefinedLabels.html',\n controller: 'predefinedLabels',\n resolve: {\n labels: function () {\n return col.settings.predefinedLabels;\n }\n }\n });\n\n modalInstance.result.then(function (result) {\n if (!col.settings) {\n col.settings = {};\n }\n col.settings.predefinedLabels = result;\n var payload = {\n columnId: col.id,\n predefinedLabels: col.settings.predefinedLabels,\n usePredefinedLabels: col.settings.usePredefinedLabels\n }\n scope.publish(\"SmartActionListTextCellLabelUpdated\", payload);\n smartActionListService().updateColumn(col).then(function (attribute) {\n //refreshTimeBoardModel();\n })\n\n });\n } else {\n col.settings.usePredefinedLabels = false;\n var payload = {\n columnId: col.id,\n predefinedLabels: col.settings.predefinedLabels,\n usePredefinedLabels: col.settings.usePredefinedLabels\n }\n scope.publish(\"SmartActionListTextCellLabelUpdated\", payload);\n\n smartActionListService().updateColumn(col).then(function (attribute) {\n //refreshTimeBoardModel();\n })\n }\n }\n\n\n scope.newTask = function () {\n\n var task = {\n id: 0,\n boardId: scope.boardId,\n a3Id: scope.a3id,\n a3StepId: scope.a3StepId,\n isActionItem : true,\n title: \"\",\n text: \"\",\n status: 'blank',\n tags: \"\",\n sortOrder: 0\n }\n\n var options = {\n users: scope.users,\n showDueDate: true,\n }\n\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'newBoardTask.html',\n controller: 'newBoardTaskController',\n resolve: {\n task: function () {\n return task;\n },\n options: function () {\n return options;\n }\n }\n });\n\n modalInstance.result.then(function (result) {\n updateSortorderTask();\n });\n\n }\n\n \n scope.addColumn = function (type) {\n if (type === \"numberAutomatic\") {\n addNumberAutomaticColumn(type);\n } else {\n var headertext = translationService.getTranslatedSmartColumnName(type);\n if (headertext === \"\") {\n headertext = type.charAt(0).toUpperCase() + type.slice(1);\n }\n\n var column = {\n boardId: scope.boardId,\n name: headertext,\n attributeType: type,\n sortOrder: scope.columns.length\n }\n smartActionListService().addColumn(column).then(function (savedAttribute) {\n\n })\n\n }\n }\n scope.editTimeframe = function (col) {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'timeframeSelectorModal.html',\n controller: 'timeframeSelectorModal',\n resolve: {\n timePeriod: function () {\n return col.settings.timePeriod;\n }\n }\n });\n\n modalInstance.result.then(function (result) {\n col.settings.timePeriod = result; //result = timePeriod.timeframe e.g.\"all\"\n var payload = {\n columnId: col.id,\n timePeriod: col.settings.timePeriod\n }\n scope.publish(\"SmartActionListNumberCellAutomaticTimeframeUpdated\", payload);\n\n smartActionListService().updateColumn(col).then(function (attribute) {\n\n })\n\n });\n\n }\n scope.getTimeframeLabel = function (timeframe) {\n return timeService.getTimeframeLabel(timeframe);\n }\n scope.delete = function (task) {\n boardTaskService().deleteTask(task.id).then(function (task) {\n });\n }\n\n scope.deleteColumn = function (column) {\n smartActionListService().deleteColumn(column.id);\n }\n\n scope.calculateNumberCellTotal = function (colDef) {\n var total = 0;\n for (var i = 0; i < colDef.projectAttributes.length; i++) {\n var value = colDef.projectAttributes[i].value;\n var valueObject = JSON.parse(value);\n var cellNumber = valueObject.number;\n if (cellNumber) {\n total = total + cellNumber;\n }\n }\n return total;\n }\n\n function addNumberAutomaticColumn(type) {\n\n var dataSource = null;\n var filters = null;\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'dataSourceSingleSelector.html',\n controller: 'dataSourceSingleSelector',\n windowClass: 'newdeviation-modal-window',\n resolve: {\n hasDataSerie: function () {\n return false;\n },\n dataSource: function () {\n return dataSource;\n },\n filters: function () {\n return filters;\n },\n withTarget: function () {\n return false;\n },\n type: function () {\n return null;\n },\n externalOnly: function () {\n return false;\n }\n }\n });\n\n modalInstance.result.then(function (result) {\n\n var timePeriod = {\n timeframe: \"all\",\n period: timeService.getTimePeriod(\"all\")\n }\n\n var unit = null;\n if (result.dataSource.valueElement) {\n unit = result.dataSource.valueElement.unit;\n }\n var cellSettings = JSON.stringify({\n dataSource: result.dataSource,\n timePeriod: timePeriod,\n filters: result.filters,\n aggregateType: \"SUM\",\n unit: unit,\n unitPlacement: \"right\"\n })\n var column = {\n boardId: scope.boardId,\n name: result.dataSource.title,\n attributeType: type,\n sortOrder: scope.columns.length - 1,\n settings: cellSettings,\n }\n smartActionListService().addColumn(column).then(function (savedAttribute) {\n\n })\n\n });\n };\n\n scope.updateAggregateType = function (col) {\n var payload = {\n columnId: col.id,\n aggregateType: col.settings.aggregateType\n }\n scope.publish(\"SmartActionListNumberCellAggregateTypeUpdated\", payload);\n\n smartActionListService().updateColumn(col).then(function (attribute) {\n })\n };\n scope.updateUnit = function (col) {\n var payload = {\n columnId: col.id,\n unit: col.settings.unit\n }\n scope.publish(\"SmartActionListNumberCellUnitUpdated\", payload);\n\n smartActionListService().updateColumn(col).then(function (attribute) {\n })\n };\n scope.updateUnitPlacement = function (col) {\n var payload = {\n columnId: col.id,\n unitPlacement: col.settings.unitPlacement\n }\n scope.publish(\"SmartActionListNumberCellUnitPlacementUpdated\", payload);\n\n smartActionListService().updateColumn(col).then(function (attribute) {\n })\n };\n\n // TODO: FIX THIS Bakend/Frontend\n scope.updateDecimals = function (col) {\n var payload = {\n decimals: col.settings.decimals,\n smartActionListColumnId: col.id\n }\n // Use this event in order to reuse the project elements components\n scope.publish(\"SmartActionListNumberCellDecimalUpdated\", payload);\n\n\n smartActionListService().updateColumn(col).then(function (attribute) {\n\n })\n\n };\n\n scope.cellChangeHandler = function (cell) {\n if (cell.value) {\n cell.value = JSON.stringify(cell.value);\n }\n\n smartActionListService().updateCell(cell).then(function (savedCell) {\n // Parse value again\n cell.id = savedCell.id;\n if (savedCell.value) {\n cell.value = JSON.parse(savedCell.value);\n }\n // We need to notify yearlyboard\n if (scope.timeboardEnabled) {\n scope.cellUpdated = cell;\n }\n\n });\n }\n\n scope.subscribe(\"TaskDeleted\", function (taskId) {\n const existingTask = scope.tasks.find(t => t.id == taskId);\n if (existingTask) {\n const index = scope.tasks.indexOf(existingTask);\n scope.tasks.splice(index, 1);\n scope.taskDeleted = existingTask;\n }\n });\n\n scope.subscribe(\"SmartActionListColumnUpdated\", function (updatedColumn) {\n if (updatedColumn.boardId === scope.boardId) {\n const existingColumn = scope.columns.find(c => c.id == updatedColumn.id);\n if (existingColumn) {\n if (existingColumn.name !== updatedColumn.name) {\n existingColumn.name = updatedColumn.name;\n }\n if (updatedColumn.settings) {\n existingColumn.settings = JSON.parse(updatedColumn.settings);\n }\n }\n }\n });\n scope.subscribe(\"SmartActionListColumnAdded\", function (column) {\n if (column.boardId === scope.boardId) {\n const existingColumn = scope.columns.find(c => c.id == column.id);\n if (!existingColumn) {\n addColumnTotasks(existingColumn);\n scope.columns.push(existingColumn);\n }\n }\n });\n scope.subscribe(\"SmartActionListColumnDeleted\", function (column) {\n if (column.boardId === scope.boardId) {\n loadsmartActionList(scope.boardId);\n }\n });\n scope.subscribe(\"SmartActionListtaskDeleted\", function (task) {\n const isPartOfBoard = $scope.tasks.filter(t => t.id == task.id);\n if (isPartOfBoard && isPartOfBoard.length === 1) {\n var tabletask = isPartOfBoard[0];\n tabletask.cssState = \"animated slideOutRight\"; // Add animation\n var index = scope.tasks.indexOf(tabletask);\n if (index > -1) {\n scope.tasks.splice(index, 1);\n }\n\n }\n });\n\n scope.subscribe(\"SmartActionListCellUpdated\", function (cell) {\n const existingTask = scope.tasks.find(t => t.id == cell.boardTaskId);\n if (existingTask) {\n const existingCell = existingTask.cells.find(c => c.smartTableColumnId == cell.smartTableColumnId);\n if (existingCell) {\n existingCell.value = cell.value;\n // We need to notify yearlyboard\n if (scope.timeboardEnabled) {\n scope.cellUpdated = cell;\n }\n }\n }\n });\n\n \n scope.subscribe(\"NewTask\", function (task) {\n if (task.boardId === scope.boardId) {\n const existingTask = scope.tasks.find(t => t.id == task.id);\n if (!existingTask) {\n calculateCells(task, scope.columns);\n scope.tasks.push(task);\n if (scope.timeboardEnabled) {\n scope.taskAdded = task;\n }\n }\n }\n });\n\n\n scope.subscribe(\"SmartActionListSortOrderChanged\", function (payLoad) {\n if (payLoad.boardId === scope.boardId) {\n loadsmartActionList(scope.boardId);\n }\n });\n scope.subscribe(\"SmartActionListRowSortOrderChanged\", function (payLoad) {\n if (payLoad.boardId === scope.boardId) {\n for (var i = 0; i < scope.tasks.length; i++) {\n var task = scope.tasks[i];\n var updatedSortOrder = payLoad.sortOrders.find(s => s.boardTaskId == task.id);\n if (updatedSortOrder) {\n task.sortOrder = updatedSortOrder.sortOrder;\n }\n }\n scope.tasks = orderByFilter(scope.tasks, 'sortOrder');\n }\n });\n\n scope.toggleAdminMode = function (isAdminMode) {\n scope.isAdminMode = isAdminMode;\n }\n\n \n\n // Drag and drop of columns events\n scope.$on('column-header-bag.drop-model', function (e, el) {\n var columnOrder = scope.columns;\n var sortOrder = [];\n for (var i = 0; i < scope.columns.length; i++) {\n var column = scope.columns[i];\n var columnOrder = {\n smartActionListColumnId: column.id,\n sortOrder: i\n }\n sortOrder.push(columnOrder)\n }\n smartActionListService().updateColumnSortOrder(scope.boardId, sortOrder).then(function () {\n\n });\n\n });\n scope.$on('column-header-bag.drag', function (e, el) {\n $(el).find(\".drag-drop-icon\").hide();\n $(el).find(\".option-icon\").hide();\n el.addClass('drag-moved');\n });\n\n scope.$on('column-header-bag.drop', function (e, el) {\n $(el).find(\".drag-drop-icon\").show();\n $(el).find(\".option-icon\").show();\n el.removeClass('drag-moved');\n });\n scope.$on('column-header-bag.dragend', function (e, el) {\n $(el).find(\".drag-drop-icon\").show();\n $(el).find(\".option-icon\").show();\n });\n\n scope.$on('column-header-bag.over', function (e, el) {\n el.addClass('drag-over');\n })\n scope.$on('column-header-bag.out', function (e, el) {\n el.removeClass('drag-over');\n });\n\n\n function updateSortorderTask(){\n var taskOrder = scope.tasks;\n var sortOrder = [];\n for (var i = 0; i < scope.tasks.length; i++) {\n var task = scope.tasks[i];\n var taskOrder = {\n boardTaskId: task.id,\n sortOrder: i\n }\n sortOrder.push(taskOrder)\n }\n smartActionListService().updateTaskSortOrder(scope.boardId, sortOrder).then(function () {\n\n });\n }\n // Drag and drop of tasks events\n scope.$on('task-header-bag.drop-model', function (e, el) {\n updateSortorderTask();\n\n });\n }\n }\n }]);\n","import * as timeService from \"@common/services/timeService\"\n\nvar DigiLean = angular.module('DigiLean');\nDigiLean.directive(\"a3Comments\", ['$filter', '$translate', 'a3Service',\n function ($filter, $translate, a3Service) {\n return {\n templateUrl: 'a3Comments.html',\n restrict: 'E',\n scope: {\n 'a3id': '<',\n 'stepid': '<',\n 'isvisible': '<',\n 'readonly': '@',\n 'commentCountChangeHandler': '&',\n },\n link: function (scope, element, attrs) {\n scope.comments = [];\n scope.comment = \"\";\n var translateOptions = {};\n scope.subscribe('A3StepCommentedOn', function (comment) {\n if (comment.a3StepId === scope.stepid) {\n comment.cssState = \"slideInDown\";\n scope.comments.push(comment);\n updateCommentsPosition();\n translateAndRecalculateTimeElapsed();\n scrollToBottom();\n scope.$apply();\n scope.commentCountChangeHandler({ commentCount: scope.comments.length })\n }\n });\n\n scope.add = function () {\n var comment = {\n comment: scope.comment\n }\n a3Service().addCommentToStep(scope.a3id, scope.stepid, comment).then(function (addedComment) {\n scope.comment = \"\";\n });\n }\n\n scope.$watch(\"a3id\", function () {\n if (!scope.a3id) return;\n a3Service().getUserlistForA3(scope.a3id)\n });\n\n scope.$watch(\"stepid\", function () {\n if (!scope.stepid) return;\n scope.comment = \"\";\n a3Service().getCommentsOnStep(scope.stepid).then(function (items) {\n\n scope.comments = items;\n updateCommentsPosition();\n translateAndRecalculateTimeElapsed();\n scrollToBottom();\n scope.commentCountChangeHandler({ commentCount: scope.comments.length })\n });\n });\n\n\n scope.$watch(\"isvisible\", function () {\n if (!scope.isvisible) return;\n scrollToBottom();\n });\n\n var updateCommentsPosition = function () {\n var position = \"left\";\n var commentedBy = \"\";\n angular.forEach(scope.comments, function (item) {\n if (commentedBy !== \"\" && commentedBy !== item.commentedByUserId) {\n if (position === \"left\") {\n position = \"right\";\n } else {\n position = \"left\";\n }\n }\n commentedBy = item.commentedByUserId;\n item.position = position;\n });\n }\n\n // DEFAULT TRANSLATION\n $translate(['COMMON_TIMEELAPSED_MONTH', 'COMMON_TIMEELAPSED_DAYS', 'COMMON_TIMEELAPSED_HOURS', 'COMMON_TIMEELAPSED_MINUTES', 'COMMON_TIMEELAPSED_SECONDS', 'COMMON_TIMEELAPSED_NOW']).then(function (translations) {\n translateOptions = {\n month: translations.COMMON_TIMEELAPSED_MONTH,\n days: translations.COMMON_TIMEELAPSED_DAYS,\n hours: translations.COMMON_TIMEELAPSED_HOURS,\n mins: translations.COMMON_TIMEELAPSED_MINUTES,\n seconds: translations.COMMON_TIMEELAPSED_SECONDS,\n now: translations.COMMON_TIMEELAPSED_NOW\n }\n // Now we can get data\n translateAndRecalculateTimeElapsed();\n });\n\n var translateAndRecalculateTimeElapsed = function () {\n // Recalculate time elapsed\n scope.comments.forEach(function (comment) {\n comment.occured = timeService.getTimeElapsed(comment.commentDate, translateOptions);\n });\n }\n\n var scrollToBottom = function () {\n setTimeout(function () {\n var wtf = $('.a3-small-chat-box .content');\n var height = wtf[0].scrollHeight;\n wtf.scrollTop(height);\n }, 20);\n\n }\n }\n }\n }]);\n","import { parseColumnSettings } from \"@common/services/settingsService\"\nimport envConfig from \"@common/envConfig\";\n\nangular.module(\"DigiLean\").service('a3TableService', ['$translate', '$http',\n function ($translate, $http) {\n function a3TableService() {\n var resource = \"/a3Table\";\n var resourceUrl = envConfig.webApiUrl + resource;\n return {\n createA3Table: function(template) {\n var url = resourceUrl + \"/CreateA3Table/\";\n return $http.post(url, template).then(function (result) {\n return result.data;\n });\n },\n get: function (id) {\n var url = resourceUrl + \"/\" + id;\n return $http.get(url).then(function (result) {\n const a3Table = result.data\n parseColumnSettings(a3Table.columns)\n return a3Table;\n });\n },\n updateColumn: function (col) {\n var updated = {\n id: col.id,\n name: col.name,\n boardId: col.boardId\n }\n if (col.settings) { \n updated.settings = JSON.stringify(col.settings);\n }\n var url = resourceUrl + \"/updateColumn/\";\n return $http.put(url, updated).then(function (result) {\n return result.data;\n });\n },\n addA3ToTable: function (a3Id, boardId) {\n var url = resourceUrl + \"/addA3ToTable/\";\n var a3TableRow = {\n a3Id: a3Id,\n boardId: boardId\n }\n return $http.post(url, a3TableRow).then(function (result) {\n return result.data;\n });\n },\n updateColumnSortOrder: function (boardId, sortOrder) {\n var url = resourceUrl + \"/UpdateColumnSortOrder/\" + boardId ;\n return $http.put(url, sortOrder).then(function (result) {\n return result.data;\n });\n },\n updateRowSortOrder: function (boardId, sortOrder) {\n var url = resourceUrl + \"/UpdateRowSortOrder/\" + boardId ;\n return $http.put(url, sortOrder).then(function (result) {\n return result.data;\n });\n },\n deleteColumn: function(id) {\n var url = resourceUrl + \"/deleteColumn/\" + id;\n return $http.delete(url).then(function (result) {\n return result.data;\n });\n },\n addColumn: function (column) {\n var url = resourceUrl + \"/addColumn/\";\n return $http.post(url, column).then(function (result) {\n return result.data;\n });\n },\n updateCell: function (cell) {\n var url = resourceUrl + \"/updateCell/\";\n return $http.put(url, cell).then(function (result) {\n return result.data;\n });\n },/*\n deleteRow: function(id) {\n var url = resourceUrl + \"/deleteRow/\" + id;\n return $http.delete(url).then(function (result) {\n return result.data;\n });\n },*/\n deleteRow: function (a3Row) {\n var url = resourceUrl + \"/deleteRow/\";\n \n return $http.post(url, a3Row).then(function (result) {\n return result.data;\n });\n },\n getStandardA3Columns: function () {\n\n var columns = [\n {\n name: $translate.instant(\"COMMON_TITLE\"),\n sortOrder: 0,\n columnType: \"a3Title\"\n },\n {\n name: $translate.instant(\"COMMON_GOAL\"),\n sortOrder: 1,\n columnType: \"a3Goal\"\n },\n {\n name: $translate.instant(\"COMMON_STATUS\"),\n sortOrder: 2,\n columnType: \"a3Status\"\n },\n {\n name: $translate.instant(\"COMMON_RESPONSIBLE\"),\n sortOrder: 3,\n columnType: \"owner\"\n }\n ]\n return columns;\n },\n/*\n getStandardSmartTableColumns: function () {\n\n var columns = [\n {\n name: $translate.instant(\"COMMON_DESCRIPTION\"),\n sortOrder: 0,\n attributeType: \"name\"\n }\n ]\n return columns;\n },*/\n\n }\n }\n return a3TableService;\n }]);\n\n","import * as customerService from \"@common/services/customers/customerService\"\nimport * as profileService from \"@common/services/user/profileService\"\nimport * as timeService from \"@common/services/timeService\"\nimport * as boardService from \"@common/services/boardService\"\nimport * as translationService from \"@common/services/translationService\"\nimport * as profileImageService from \"@common/services/user/profileImageService\"\nimport { getColStyle } from \"@common/services/settingsService\"\nimport envConfig from \"@common/envConfig\"\n\nangular\n .module('DigiLean')\n .directive(\"a3Table\", ['$translate', 'a3TableService', '$uibModal', 'navigationService', 'modalService', 'orderByFilter', 'taskDrawingService', 'excelService',\n function ($translate, a3TableService, $uibModal, navigationService, modalService, orderByFilter, taskDrawingService, excelService) {\n return {\n templateUrl: 'a3Table.html',\n restrict: 'E',\n scope: {\n 'model': '<',\n 'isAdminMode': '<',\n 'options': ' c.id == tablecell.id);\n if (column) {\n if (column.name !== tablecell.name) {\n column.name = tablecell.name;\n }\n //TODO: antar vi kan legge til endring i kolonnerekkefølgen også på dette tidspunktet\n }\n }\n });\n\n\n $scope.subscribe(\"A3AddedToTable\", function (a3TableItem) {\n if (a3TableItem.boardId === $scope.board.id) {\n var isPartOfBoard = $scope.a3s.filter(a => a.a3TableId == a3TableItem.id);\n if (isPartOfBoard.length === 0) {\n var a3 = {\n a3: a3TableItem.a3,\n a3Id: a3TableItem.a3.id,\n cells: [],\n a3TableId: a3TableItem.id,\n boardId: a3TableItem.boardId\n }\n a3.cellModels = [];\n calculateA3Cells(a3, $scope.a3Columns);\n $scope.a3s.push(a3);\n }\n }\n });\n $scope.subscribe(\"A3TableColumnUpdated\", function (updatedColumn) {\n if (updatedColumn.boardId === $scope.board.id) {\n var column = $scope.a3Columns.find(c => c.id == updatedColumn.id);\n if (column) {\n if (column.name !== updatedColumn.name) {\n column.name = updatedColumn.name;\n }\n if (updatedColumn.settings) {\n column.settings = JSON.parse(updatedColumn.settings);\n }\n }\n }\n });\n \n $scope.subscribe(\"A3TableSortOrderChanged\", function (payLoad) {\n if (payLoad.boardId === $scope.board.id) {\n a3TableService().get(payLoad.boardId).then(function (model) {\n $scope.model = model;\n })\n }\n });\n\n $scope.subscribe(\"A3TableRowSortOrderChanged\", function (payLoad) {\n if (payLoad.boardId === $scope.board.id) {\n a3TableService().get(payLoad.boardId).then(function (model) {\n $scope.model = model;\n });\n }\n });\n $scope.subscribe(\"A3Deleted\", function (payLoad) {\n var found = null;\n for (var p = 0; p < $scope.a3s.length; p++) {\n if ($scope.a3s[p].id === payLoad.id) {\n found = $scope.a3s[p];\n found.cssState = \"animated slideOutRight\";\n $scope.a3s.splice(p, 1);\n break;\n }\n }\n });\n $scope.subscribe(\"A3TableRowDeleted\", function (payload) {\n if (!$scope.a3s || $scope.a3s.length == 0)\n return\n\n for (let i = 0; i < $scope.a3s.length; i++) {\n let a3Row = $scope.a3s[i]\n if (a3Row.id == payload.a3Id && a3Row.boardId == payload.boardId) { // must check boardId also\n a3Row.cssState = \"animated slideOutRight\";\n $scope.a3s.splice(i, 1);\n break;\n }\n }\n });\n\n function calculateA3Cells(a3, columns) {\n a3.id = a3.a3.id;\n for (let index = 0; index < columns.length; index++) {\n const column = columns[index];\n var cellModel = {\n a3: a3.a3,\n column: column,\n columnId: column.id,\n a3TableCell: null\n }\n var hasCell = a3.cells.find(c => c.a3TableColumnId == column.id);\n if (hasCell) {\n var a3TableCell = hasCell;\n if (a3TableCell.value) {\n a3TableCell.value = JSON.parse(a3TableCell.value);\n }\n cellModel.a3TableCell = a3TableCell;\n } else {\n // Create default \n cellModel.a3TableCell = {\n id: 0,\n a3Id: a3.id,\n a3TableColumnId: column.id,\n value: null\n }\n }\n a3.cellModels.push(cellModel)\n }\n }\n\n function addColumnToA3s(column) {\n for (let index = 0; index < $scope.a3s.length; index++) {\n var a3 = $scope.a3s[index];\n var cellModel = {\n a3: a3.a3,\n column: column,\n columnId: column.id,\n a3TableCell: null\n }\n // Create default \n cellModel.column = {\n id: 0,\n a3Id: a3.a3.id,\n a3TableColumnId: column.id,\n value: null\n }\n a3.cellModels.push(cellModel)\n }\n }\n\n $scope.exportToExcel = function () {\n excelService().exportA3Table($scope.board.id);\n }\n\n $scope.changeTheme = function (theme) {\n $scope.theme = theme;\n $scope.updateSettings();\n }\n\n $scope.toggleAdminMode = function () {\n $scope.isAdminMode = !$scope.isAdminMode;\n }\n $scope.columnNameUpdated = function (column) {\n a3TableService().updateColumn(column)\n }\n $scope.titleUpdated = function (title) {\n var boardName = {\n boardId: $scope.board.id,\n name: title\n }\n boardService.updateName($scope.board.id, boardName)\n }\n \n $scope.columnWidthChangeHandler = function(col){\n if(col){\n a3TableService().updateColumn(col)\n }\n }\n \n $scope.addColumn = function (type) {\n if (type === \"numberAutomatic\") {\n addNumberAutomaticColumn(type);\n } else {\n var headertext = translationService.getTranslatedSmartColumnName(type);\n if (headertext === \"\") {\n headertext = type.charAt(0).toUpperCase() + type.slice(1);\n }\n\n var column = {\n boardId: $scope.board.id,\n name: headertext,\n columnType: type,\n sortOrder: $scope.a3Columns.length - 1\n }\n a3TableService().addColumn(column)\n }\n }\n\n $scope.editTimeframe = function (col) {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'timeframeSelectorModal.html',\n controller: 'timeframeSelectorModal',\n resolve: {\n timePeriod: function () {\n return col.settings.timePeriod;\n }\n }\n });\n\n modalInstance.result.then(function (result) {\n col.settings.timePeriod = result; //result = timePeriod.timeframe e.g.\"all\"\n var payload = {\n columnId: col.id,\n timePeriod: col.settings.timePeriod\n }\n $scope.publish(\"A3NumberCellAutomaticTimeframeUpdated\", payload);\n\n a3TableService().updateColumn(col)\n\n });\n\n }\n $scope.getTimeframeLabel = function (timeframe) {\n return timeService.getTimeframeLabel(timeframe);\n }\n $scope.predefinedLabels = function (col) {\n if (col.settings.usePredefinedLabels) {\n var dataSource = null;\n var filters = null;\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'predefinedLabels.html',\n controller: 'predefinedLabels',\n resolve: {\n labels: function () {\n return col.settings.predefinedLabels;\n }\n }\n });\n\n modalInstance.result.then(function (result) {\n col.settings.predefinedLabels = result;\n var payload = {\n type : 'a3',\n columnId: col.id,\n predefinedLabels: result,\n usePredefinedLabels: col.settings.usePredefinedLabels\n }\n $scope.publish(\"SmartCommonTextCellLabelUpdated\", payload);\n\n a3TableService().updateColumn(col)\n\n });\n } else {\n col.settings.usePredefinedLabels = false;\n var payload = {\n type : 'a3',\n columnId: col.id,\n predefinedLabels: col.settings.predefinedLabels,\n usePredefinedLabels: col.settings.usePredefinedLabels\n }\n $scope.publish(\"SmartCommonTextCellLabelUpdated\", payload);\n\n a3TableService().updateColumn(col)\n }\n }\n\n $scope.deleteColumn = function (column) {\n a3TableService().deleteColumn(column.id);\n }\n\n $scope.updateAggregateType = function (col) {\n var payload = {\n type: 'a3',\n columnId: col.id,\n aggregateType: col.settings.aggregateType\n }\n $scope.publish(\"SmartCommonNumberCellAggregateTypeUpdated\", payload);\n\n a3TableService().updateColumn(col)\n };\n $scope.updateUnit = function (col) {\n var payload = {\n type: 'a3',\n columnId: col.id,\n unit: col.settings.unit\n }\n $scope.publish(\"SmartCommonNumberCellUnitUpdated\", payload);\n\n a3TableService().updateColumn(col)\n };\n $scope.updateUnitPlacement = function (col) {\n var payload = {\n type: 'a3',\n columnId: col.id,\n unitPlacement: col.settings.unitPlacement\n }\n $scope.publish(\"SmartCommonNumberCellUnitPlacementUpdated\", payload);\n\n a3TableService().updateColumn(col)\n };\n $scope.updateDecimals = function (col) {\n var payload = {\n type: 'a3',\n columnId: col.id,\n decimals: col.settings.decimals\n }\n $scope.publish(\"SmartCommonNumberCellDecimalUpdated\", payload);\n\n a3TableService().updateColumn(col)\n };\n\n\n\n $scope.subscribe(\"A3TableColumnAdded\", function (column) {\n if (column.boardId === $scope.board.id) {\n var hasColumn = $scope.a3Columns.find(c => c.id == column.id);\n if (!hasColumn) {\n if (column.settings) {\n column.settings = JSON.parse(column.settings);\n }\n addColumnToA3s(column);\n $scope.a3Columns.push(column);\n }\n }\n });\n $scope.subscribe(\"A3TableColumnDeleted\", function (column) {\n \n if (column.boardId === $scope.board.id) {\n a3TableService().get(column.boardId).then(function (model) {\n $scope.model = model;\n });\n }\n });\n\n $scope.a3CellChangeHandler = function (a3TableCell) {\n if (a3TableCell.value) {\n a3TableCell.value = JSON.stringify(a3TableCell.value);\n }\n\n a3TableService().updateCell(a3TableCell).then(function (savedCell) {\n // Parse value again\n a3TableCell.id = savedCell.id;\n if (savedCell.value) {\n a3TableCell.value = JSON.parse(savedCell.value);\n }\n });\n }\n\n $scope.addExisting = function (type) {\n\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'a3SelectorModal.html',\n controller: 'a3SelectorController',\n resolve: {\n existing: function () {\n return $scope.a3s;\n }\n }\n });\n\n modalInstance.result.then(function (existing) {\n if (existing) {\n a3TableService().addA3ToTable(existing.id, $scope.model.board.id).then(function (a3Table) {\n });\n }\n }, function () {\n });\n\n\n }\n\n $scope.addSmarttableRow = function () {\n var newItem = {\n name: $translate.instant('COMMON_NEW'),\n category: \"SmartTable\"\n };\n\n a3TableService().addA3(newItem).then(function (createdA3) {\n a3TableService().addA3ToTable(createdA3.id, $scope.model.board.id)\n });\n }\n\n $scope.delete = function (a3Model) {\n var modalOptions = {\n closeButtonText: $translate.instant('COMMON_CANCEL'),\n actionButtonText: $translate.instant('COMMON_DELETE'),\n headerText: a3Model.a3.title,\n bodyText: $translate.instant('ADMIN_MESSAGE_DELETE_ROW_CONFIRMATION') \n };\n \n modalService.showModal({}, modalOptions).then(function (result) {\n var a3TableRow = {\n a3Id: a3Model.a3Id,\n boardId: a3Model.boardId,\n id: 0\n }\n a3TableService().deleteRow(a3TableRow);\n });\n \n }\n\n\n $scope.calculateNumberCellTotal = function (colDef) {\n var total = 0;\n for (var i = 0; i < colDef.a3TableCell.length; i++) {\n var value = colDef.a3TableCell[i].value;\n var valueObject = JSON.parse(value);\n var cellNumber = valueObject.number;\n if (cellNumber) {\n total = total + cellNumber;\n }\n }\n return total;\n }\n\n $scope.getColStyle = getColStyle\n }\n }\n }]);","import toaster from \"@common/components/toast\"\n\nangular\n .module('DigiLean')\n .controller(\"a3TaskListModalController\", ['$scope', '$uibModalInstance', '$uibModal', '$filter', '$translate', 'boardTaskService', 'a3Service', 'taskDrawingService', 'authService', 'a3Id',\n function ($scope, $uibModalInstance, $uibModal, $filter, $translate, boardTaskService, a3Service, taskDrawingService, authService, a3Id) {\n\n $scope.tasks = [];\n $scope.isAdmin = authService.hasRole(\"Admin\") || authService.hasRole(\"A3Admin\");\n // if page is refreshed we need to refresh\n $scope.subscribe(\"UserAuthenticatedAndReady\", function (profile) {\n $scope.isAdmin = authService.hasRole(\"Admin\") || authService.hasRole(\"A3Admin\");\n });\n $scope.a3Id = a3Id;\n\n boardTaskService().getTasksByA3(a3Id).then(function (tasks) {\n $scope.tasks = tasks; \n if($scope.tasks && $scope.tasks.length > 0) {\n setDateStyle($scope.tasks);\n }\n });\n\n a3Service().getUserlistForA3(a3Id).then(function (users) {\n $scope.users = users;\n });\n\n $scope.subscribe('TaskDeleted', function (id) {\n var task = $filter('filter')($scope.tasks, { id: id });\n if (task.length > 0) {\n $scope.$apply(function () {\n var index = $scope.tasks.indexOf(task[0]);\n if (index > -1) {\n $scope.tasks.splice(index, 1);\n }\n });\n }\n });\n $scope.subscribe('TaskStatusUpdated', function (status) {\n var task = $filter('filter')($scope.tasks, { id: status.taskId });\n if (task.length > 0) {\n $scope.$apply(function () {\n task[0].status = status.status;\n });\n }\n });\n $scope.subscribe('TaskAssigned', function (taskAssigned) {\n var task = $filter('filter')($scope.tasks, { id: taskAssigned.taskId });\n if (task.length > 0) {\n $scope.$apply(function () {\n task[0].responsibleUserId = taskAssigned.userId;\n task[0].responsibleUser = taskAssigned.userName;\n task[0].responsibleDisplayName = taskAssigned.userDisplayName;\n });\n }\n });\n\n $scope.updateResponsible = function (user, item) {\n item.responsibleDisplayName = user.displayName;\n var taskAssigned =\n {\n taskId: item.id,\n a3Id: $scope.a3id,\n userId: user.id,\n userName: user.fullName,\n userDisplayName: user.displayName,\n previousUserId: item.responsibleUserId,\n previousUserName: item.responsibleUser\n };\n var options = {\n taskId: item.id,\n user: taskAssigned\n };\n boardTaskService().assignUser(options).then(function () {\n \n });\n };\n\n $scope.changeActionDate = function (task, $event) {\n const date = $event.originalEvent.detail\n task.boardDate = date\n\n if (task.boardDate) { // Valid date format\n task.error = false\n const actionDate = {\n taskId: task.id,\n actionDate: task.boardDate\n }\n a3Service().updateItemActionDate(actionDate).then(function () {\n $translate('A3_ACTION_ITEM_SAVED').then(function (msg) {\n toaster.success(msg)\n })\n \n $scope.publish(\"SendTaskDateUpdated\", actionDate)\n })\n } else {\n $translate('COMMON_NOT_VALID_DATE').then(function (trans) {\n item.error = trans\n })\n }\n }\n\n $scope.changeStatus = function (item) {\n item.status = taskDrawingService().getNextStatus(item.status).status;\n var status = {\n taskId: item.id,\n status: item.status\n };\n boardTaskService().updateStatus(item.id, status).then(function () {\n \n });\n };\n\n $scope.close = function () {\n $uibModalInstance.dismiss('cancel');\n }\n\n function addTask(task, board){\n if(task.boardDate){\n task.boardDate = moment(task.boardDate).toDate();\n }\n task.board = board; \n if(task.status != 'OK' ){\n task.dateStyleClass = getDateStyle(task.boardDate);\n } \n $scope.tasks.unshift(task);\n }\n\n $scope.add = function () {\n\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'newtasktoprojecttasklist.html', \n controller: 'newtasktoprojecttasklistController',\n resolve: {\n projectId: function () {\n return $scope.projectId;\n }\n } \n });\n modalInstance.result.then(function (task) {\n var board = $filter('filter')(projectBoards, { id: task.boardid });\n if (board.length > 0) {\n addTask(task, board[0]);\n } else {\n if(task.status != 'OK' ){\n task.dateStyleClass = getDateStyle(task.boardDate);\n } \n $scope.tasks.unshift(task);\n }\n }, function () {\n \n });\n \n }\n\n\n function setDateStyle(items){\n items.forEach(function (item) {\n if(item.status != 'OK' ){\n item.dateStyleClass = getDateStyle(item.boardDate);\n }\n });\n }\n\n function getDateStyle(date) {\n if (!date) return \"\";\n // Overdue check\n\n var overdue = \"\";\n var duration = moment.duration(moment().diff(moment(date)));\n var days = duration.asDays();\n if (days > 1) {\n overdue = \"overdue\";\n }\n return overdue;\n }\n }]);","import * as timeService from \"@common/services/timeService\"\n\nangular\n .module('DigiLean')\n .directive(\"a3EndDateCell\", ['a3Service',\n function (a3Service) {\n return {\n templateUrl: 'a3EndDateCell.html',\n restrict: 'E',\n scope: {\n 'model': '=',\n 'editable': '=',\n 'changeHandler': '&',\n },\n link: function (scope, elem, attrs) {\n scope.color = \"#0099DE\";\n scope.dateMissed = false;\n scope.date = null;\n \n\n scope.date = {\n endDate: null,\n estimatedEndDate: null,\n };\n\n scope.updateEstimatedEndDate = function($event) {\n const date = $event.originalEvent.detail \n scope.date.estimatedEndDate = date\n scope.updateDate()\n }\n scope.updateEndEndDate = function($event) {\n const date = $event.originalEvent.detail \n scope.date.endDate = date\n scope.updateDate()\n }\n scope.updateDate = function() {\n scope.a3Project.endDate = scope.date.endDate\n scope.a3Project.estimatedEndDate = scope.date.estimatedEndDate\n a3Service().updateProjectInfo(scope.model.a3.id, scope.a3Project).then(function (savedDate) { \n checkDate()\n })\n }\n \n scope.$watch(\"model\", function (model) {\n if (scope.model && scope.model.a3) {\n if (!scope.model.a3.a3ProjectId) {\n scope.a3Project = {\n estimatedEndDate: null,\n endDate: null,\n estimatedTotalCost: null,\n estimatedSavings: null,\n actualTotalCost: null,\n actualSavings: null,\n };\n } else {\n getA3ProjectInfo();\n }\n }\n model.getSortValue = function() {\n if (scope.date) {\n if (scope.date.estimatedEndDate) {\n return scope.date.estimatedEndDate;\n }\n if (scope.date.endDate) {\n return scope.date.endDate;\n }\n }\n return null;\n }\n });\n\n function getA3ProjectInfo(){\n a3Service().getA3ProjectInfo(scope.model.a3.id).then(function (a3ProjectInfo) { \n scope.a3Project = a3ProjectInfo;\n if(scope.a3Project.estimatedEndDate){\n scope.date.estimatedEndDate = moment(scope.a3Project.estimatedEndDate).toDate();\n } \n if(scope.a3Project.endDate){\n scope.date.endDate = moment(scope.a3Project.endDate).toDate();\n }\n checkDate();\n });\n } \n \n scope.subscribe('A3ProjectInfoUpdated', function (a3) {\n if (scope.model.a3.id === a3.id) {\n if(a3.estimatedEndDate || a3.endDate){\n if(a3.estimatedEndDate){\n scope.date.estimatedEndDate = moment(a3.estimatedEndDate).toDate();\n }\n if(a3.estimatedEndDate){\n scope.date.endDate = moment(a3.endDate).toDate();\n }\n checkDate();\n }\n scope.a3Project.estimatedTotalCost = a3.estimatedTotalCost;\n scope.a3Project.estimatedSavings = a3.estimatedSavings;\n scope.a3Project.actualTotalCost = a3.actualTotalCost;\n scope.a3Project.actualSavings = a3.actualSavings;\n \n }\n });\n\n\n function createTempDate(){\n scope.date = {\n endDate: null,\n estimatedEndDate: null,\n datePicker : {\n opened: false\n },\n estimatedDatePicker : {\n opened: false\n }\n };\n }\n\n function checkDate() {\n scope.date.status = \"\";\n scope.date.endDate = timeService.validateDate(scope.date.endDate);\n scope.date.estimatedEndDate = timeService.validateDate(scope.date.estimatedEndDate);\n scope.dateMissed = false;\n \n if (scope.date.endDate) {\n scope.date.status = \"completed\";\n var diff = moment.duration(moment(scope.date.endDate).diff(moment(scope.date.estimatedEndDate)));\n var days = diff.asDays();\n if(!isNaN(days)){\n scope.date.diffPlannedVSActual = Math.round(days);\n }else {\n scope.date.diffPlannedVSActual = null;\n }\n } else if (scope.date.estimatedEndDate) {\n //check if overdue/missed\n \n var duration = moment.duration(moment().endOf('day').diff(moment(scope.date.estimatedEndDate).endOf('day')));\n var days = duration.asDays();\n if (days > 1) {\n scope.date.status = \"missed\";\n scope.date.diffToPlannedDate = Math.trunc(days);\n scope.dateMissed = true;\n } else {\n scope.date.status = \"future\";\n scope.date.diffToPlannedDate = Math.round(days)*-1;\n }\n }\n }\n }\n }\n }]);\n","\nimport * as assetService from \"@common/services/assetService\"\n\nangular\n .module('DigiLean')\n .controller(\"a3ParticipantModalController\", ['$scope', '$uibModalInstance', 'a3Id',\n function ($scope, $uibModalInstance, a3Id) {\n\n $scope.a3Id = a3Id;\n \n $scope.close = function () {\n $uibModalInstance.close();\n };\n\n $scope.memberSelectionChanged = function (selection) {\n $scope.selectedAssetId = selection.assetId;\n $scope.participants = selection.participants;\n $scope.selectedAssetType = selection.assetType;\n setOwner();\n if ($scope.a3.assetId != selection.assetId) {\n $scope.a3.assetId = selection.assetId;\n $scope.saveA3Metadata();\n }\n\n if (!selection.assetId && !selection.assetId == 0 && selection.assetType != \"CUSTOMIZED\") return;\n if (selection.assetId == $scope.a3.assetId && selection.assetType != \"CUSTOMIZED\") return;\n updateMembers();\n }\n\n var updateMembers = function() {\n $scope.isProcessing = true;\n\n // If new asset, we need to create it then set it to board.\n\n if ($scope.selectedAssetType == \"CUSTOMIZED\") {\n var participants = [];\n $scope.participants.forEach(p => {\n var participant = {\n userId: p.userId,\n role: \"Member\"\n }\n participants.push(participant);\n });\n if ($scope.selectedAssetId == 0) {\n var customAsset = {\n name : $scope.name,\n participants : participants\n }\n assetService.createCustomAsset(customAsset).then(function(asset){\n $scope.selectedAssetId = asset.id;\n $scope.a3.assetId = asset.id;\n $scope.saveA3Metadata();\n });\n } else {\n // Update list of participants\n assetService.updateCustomAssetMembers($scope.selectedAssetId, participants).then(function(asset){\n $scope.saveA3Metadata();\n });\n }\n \n } else {\n $scope.saveA3Metadata();\n }\n }\n\n $scope.saveA3Metadata = function () {\n if (!$scope.a3.id) return;\n if ($scope.a3.title === \"\") {\n $scope.titlehaserror = true;\n return;\n }\n var metaData = {\n id: $scope.a3.id,\n assetId: $scope.a3.assetId,\n ownerUserId: $scope.a3.ownerUserId,\n owner: $scope.a3.owner,\n ownerDisplayName: $scope.a3.ownerDisplayName,\n categoryId: $scope.a3.categoryId,\n status: $scope.a3.status,\n hasCustomizedGroup: $scope.a3.hasCustomizedGroup\n };\n a3Service().saveA3Metadata(metaData).then(function (savedA3) {\n //generatePreview();\n });\n };\n\n function setOwner() {\n if ($scope.a3.ownerUserId) {\n var owner = $filter('filter')($scope.participants, { userId: $scope.a3.ownerUserId }, true);\n if (owner.length === 1) {\n $scope.selectedOwner = owner[0];\n } else { // If not part of participants, we need to add user to list\n var currentOwner = $filter('filter')($scope.allUsers, { userId: $scope.a3.ownerUserId }, true)[0];\n $scope.participants.unshift(currentOwner);\n $scope.selectedOwner = currentOwner;\n }\n } else {\n $scope.selectedOwner = {};\n } \n }\n\n }]);\n","import * as customerService from \"@common/services/customers/customerService\"\n\nangular\n .module('DigiLean')\n .directive(\"a3info\", ['$filter', \n function ($filter) {\n return {\n templateUrl: 'a3info.html',\n restrict: 'E',\n scope: {\n 'header': '@',\n 'component': '@',\n 'model': '='\n },\n link: function (scope, elem, attrs) {\n scope.$watch('model', function () {\n var model = scope.model;\n if (model.style && typeof (model.style) === \"string\") {\n scope.style = JSON.parse(model.style);\n }\n\n if (model.assetId) {\n // Load participants\n customerService.getUsersForAsset(model.assetId).then(function (members) {\n scope.participants = members;\n });\n }\n\n customerService.getCurrent().then(function(customer) {\n scope.logoUrl = customer.logoUrl;\n });\n });\n }\n }\n }]);\n","import { getCompanySetting } from \"@common/stores/companySettingsStore\"\nimport * as customerService from \"@common/services/customers/customerService\"\nangular\n .module('DigiLean')\n .directive(\"cost\", ['$filter',\n function ($filter) {\n return {\n templateUrl: 'cost.html',\n restrict: 'E',\n scope: {\n 'header': '@',\n 'component': '@',\n 'model': '='\n },\n link: function (scope, elem, attrs) {\n\n scope.currency = customerService.getDefaultCurrency()\n getCompanySetting(\"currency\").then(function (setting) {\n if (setting) {\n scope.currency = setting\n }\n })\n }\n }\n }]);\n","import { getUserProfile } from \"@common/stores/userStore\"\nimport * as pdfService from \"@common/services/pdfService\"\n\nangular\n .module('DigiLean')\n .directive(\"a3stepActionPlan\", [ 'a3Service', 'debounce',\n function ( a3Service, debounce) {\n return {\n templateUrl: 'a3stepActionPlan.html',\n restrict: 'E',\n scope: {\n 'header': '@',\n 'component': '@',\n 'model': '=',\n 'isAdminMode': '=',\n },\n link: function (scope, elem, attrs) {\n scope.$watch('model', function () {\n var model = scope.model;\n if (model.step.style && typeof (model.step.style) === \"string\") {\n scope.style = JSON.parse(model.step.style);\n }\n });\n\n scope.generatePreview = function () {\n var lang = \"en\"\n const up = getUserProfile()\n if (up.preferredLanguage) {\n lang = up.preferredLanguage\n }\n // Replace . with - so filename is not corrupt in browser.\n var name = scope.model.title.replace(/\\./g, '-') // Crazy stuff=>https://stackoverflow.com/questions/1967119/why-does-javascript-replace-only-first-instance-when-using-replace\n pdfService.previewA3(name, scope.model.step.a3VersionId, lang);\n\n };\n\n scope.commitChanges = function (id, content) {\n var stepContent = {\n id: id,\n content: content\n };\n a3Service().saveStep(stepContent).then(function (step) {\n // Synk version step\n scope.generatePreviewDebounced();\n });\n };\n\n // Debounce function so that save is called to often.\n scope.commitChangesDebounced = debounce(scope.commitChanges, 2000, false);\n scope.generatePreviewDebounced = debounce(scope.generatePreview, 10000, false);\n\n scope.contentChanged = function(val) {\n if (!scope.froalaInit) {\n scope.froalaInit = true;\n return;\n }\n scope.model.step.content = val;\n scope.commitChangesDebounced(scope.model.step.id, val);\n };\n scope.froalaOptions = {\n toolbarButtons: ['bold', 'italic', 'underline', '|', 'fontFamily', 'fontSize', 'color',\n 'inlineStyle', 'paragraphStyle', '|', 'paragraphFormat', 'align', 'formatOL', 'formatUL', 'outdent', 'indent', 'insertLink',\n 'insertImage', 'insertVideo', 'insertTable', '|', 'emoticons', 'insertHR', 'clearFormatting',\n '|', 'help', '|', 'undo', 'redo'],\n imageEditButtons: ['imageReplace', 'imageAlign', 'imageCaption', 'imageRemove']\n };\n }\n };\n\n }]);\n","import * as customerService from \"@common/services/customers/customerService\"\n\nangular\n .module('DigiLean')\n .directive(\"a3infoTemplate\", ['$filter', \n function ($filter) {\n return {\n templateUrl: 'a3infoTemplate.html',\n restrict: 'E',\n scope: {\n 'header': '@',\n 'component': '@',\n 'model': '='\n },\n link: function (scope, elem, attrs) {\n scope.$watch('model', function () {\n var model = scope.model;\n if (model.style && typeof (model.style) === \"string\") {\n scope.style = JSON.parse(model.style);\n }\n\n if (model.assetId) {\n // Load participants\n customerService.getUsersForAsset(model.assetId).then(function (members) {\n scope.participants = members;\n });\n }\n\n customerService.getCurrent().then(function(customer) {\n scope.logoUra3l = customer.logoUrl;\n });\n });\n }\n }\n }]);\n","import { getCompanySetting } from \"@common/stores/companySettingsStore\"\nimport * as customerService from \"@common/services/customers/customerService\"\n\nangular\n .module('DigiLean')\n .directive(\"costTemplate\", ['$filter',\n function ($filter) {\n return {\n templateUrl: 'costTemplate.html',\n restrict: 'E',\n scope: {\n 'header': '@',\n 'component': '@',\n 'model': '='\n },\n link: function (scope, elem, attrs) {\n scope.$watch('model', function () {\n if (!model) return;\n var model = scope.model; \n if (model.style && typeof (model.style) === \"string\") {\n scope.style = JSON.parse(model.style);\n }\n getCompanySetting(\"currency\").then(function (setting) {\n if (setting) {\n scope.currency = setting\n }\n })\n });\n\n scope.currency = customerService.getDefaultCurrency()\n \n }\n }\n }]);\n","import { getUserProfile } from \"@common/stores/userStore\"\nimport * as pdfService from \"@common/services/pdfService\"\n\nangular\n .module('DigiLean')\n .directive(\"a3stepTemplate\", ['a3Service', 'debounce',\n function ( a3Service, debounce) {\n return {\n templateUrl: 'a3stepTemplate.html',\n restrict: 'E',\n scope: {\n 'header': '@',\n 'component': '@',\n 'model': '<',\n 'isAdminMode': '<',\n },\n link: function (scope, elem, attrs) {\n scope.$watch('model', function () {\n var model = scope.model;\n if (model.style && typeof (model.style) === \"string\") {\n model.style = JSON.parse(model.style);\n }\n\n });\n\n scope.froalaInit = false;\n\n scope.generatePreview = function (scope) {\n let lang = \"en\"\n const up = getUserProfile()\n if (up.preferredLanguage) {\n lang = up.preferredLanguage\n }\n // Replace . with - so filename is not corrupt in browser.\n var name = scope.model.title.replace(/\\./g, '-') // Crazy stuff=>https://stackoverflow.com/questions/1967119/why-does-javascript-replace-only-first-instance-when-using-replace\n pdfService.previewA3(scope.model.a3VersionId, lang);\n\n };\n\n scope.commitChanges = function (id, content) {\n var stepContent = {\n id: id,\n content: content\n }\n a3Service().saveStep(stepContent).then(function (step) {\n // Synk version step\n scope.generatePreview(scope);\n });\n };\n\n // Debounce function so that save is called to often.\n scope.commitChangesDebounced = debounce(scope.commitChanges, 2000, false);\n scope.contentChanged = function(val) {\n if (!scope.froalaInit) {\n scope.froalaInit = true;\n return;\n }\n scope.model.content = val;\n scope.commitChangesDebounced(scope.model.id, val);\n };\n scope.froalaOptions = {\n\n toolbarButtons: ['bold', 'italic', 'underline', '|', 'fontFamily', 'fontSize', 'color',\n 'inlineStyle', 'paragraphStyle', '|', 'paragraphFormat', 'align', 'formatOL', 'formatUL', 'outdent', 'indent', 'insertLink',\n 'insertImage', 'insertVideo', 'insertTable', '|', 'emoticons', 'insertHR', 'clearFormatting',\n '|', 'help', '|', 'undo', 'redo']\n };\n\n }\n\n };\n }]);\n","import { getUserProfile } from \"@common/stores/userStore\"\nimport * as pdfService from \"@common/services/pdfService\"\n\nangular\n .module('DigiLean')\n .directive(\"a3stepActionPlanTemplate\", ['$filter', '$translate', 'a3Service',\n function ($filter, $translate, a3Service) {\n return {\n templateUrl: 'a3stepActionPlan.html',\n restrict: 'E',\n scope: {\n 'header': '@',\n 'component': '@',\n 'model': '=',\n 'isAdminMode': '=',\n },\n link: function (scope, elem, attrs) {\n scope.$watch('model', function () {\n var model = scope.model;\n if (model.step.style && typeof (model.step.style) === \"string\") {\n scope.style = JSON.parse(model.step.style);\n }\n });\n\n scope.generatePreview = function () {\n let lang = \"en\"\n const up = getUserProfile()\n if (up.preferredLanguage) {\n lang = up.preferredLanguage\n }\n // Replace . with - so filename is not corrupt in browser.\n var name = scope.model.title.replace(/\\./g, '-') // Crazy stuff=>https://stackoverflow.com/questions/1967119/why-does-javascript-replace-only-first-instance-when-using-replace\n pdfService.previewA3(name, scope.model.step.a3VersionId, lang);\n\n };\n\n scope.commitChanges = function (id, content) {\n var stepContent = {\n id: id,\n content: content\n }\n a3Service().saveStep(stepContent).then(function (step) {\n // Synk version step\n $scope.generatePreviewDebounced();\n });\n };\n\n // Debounce function so that save is called to often.\n scope.commitChangesDebounced = debounce(scope.commitChanges, 2000, false);\n scope.generatePreviewDebounced = debounce(scope.generatePreview, 10000, false);\n scope.contentChanged = function(val) {\n if (!scope.froalaInit) {\n scope.froalaInit = true;\n return;\n }\n scope.model.step.content = val;\n scope.commitChangesDebounced(scope.model.step.id, val);\n };\n scope.froalaOptions = {\n toolbarButtons: ['bold', 'italic', 'underline', '|', 'fontFamily', 'fontSize', 'color',\n 'inlineStyle', 'paragraphStyle', '|', 'paragraphFormat', 'align', 'formatOL', 'formatUL', 'outdent', 'indent', 'insertLink',\n 'insertImage', 'insertVideo', 'insertTable', '|', 'emoticons', 'insertHR', 'clearFormatting',\n '|', 'help', '|', 'undo', 'redo']\n\n };\n }\n };\n\n }]);\n","import { getCompanySetting } from \"@common/stores/companySettingsStore\"\n\nvar DigiLean = angular.module('DigiLean');\nDigiLean.controller('a3templateStore', ['$scope', '$uibModalInstance', 'a3templateService',\n function ($scope, $uibModalInstance, a3templateService) {\n $scope.selectedApp = {};\n var alltemplates = [];\n\n $scope.orgLanguage = \"en\";\n getCompanySetting(\"language\").then(function (setting) {\n if (setting) {\n $scope.orgLanguage = setting\n }\n a3templateService().getPublicTemplates().then(function (templates) {\n alltemplates = templates;\n // Filter on language\n $scope.toggleLanguage($scope.orgLanguage);\n });\n\n })\n\n\n $scope.getTemplate = function (template) {\n template.isSaving = true;\n // Do stuff\n a3templateService().downloadTemplate(template.id).then(function() {\n template.isCompleted = true;\n })\n }\n\n $scope.toggleLanguage = function (language) {\n if (language == \"en\") {\n $scope.isEnglishSelected = true;\n $scope.isNorwegianSelected = false;\n }\n if (language == \"no\") {\n $scope.isNorwegianSelected = true;\n $scope.isEnglishSelected = false;\n }\n $scope.templates = filterOnLanguage(alltemplates);\n }\n\n function filterOnLanguage(templates) {\n if ($scope.isAllLanguagesSelected) return templates;\n var filtered = [];\n templates.forEach(template => {\n if ($scope.isEnglishSelected && template.language == \"en\") {\n filtered.push(template);\n }\n if ($scope.isNorwegianSelected && template.language == \"no\") {\n filtered.push(template);\n }\n });\n return filtered;\n }\n\n $scope.ok = function () {\n $uibModalInstance.close($scope.selectedApp);\n\n };\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n }]);","import { getCompanySetting } from \"@common/stores/companySettingsStore\"\nimport * as customerService from \"@common/services/customers/customerService\"\n\nangular\n .module('DigiLean')\n .directive(\"initiativesmonthlyrealized\", ['$translate', 'a3Service',\n function ($translate, a3Service) {\n return {\n templateUrl: 'initiativesmonthlyrealized.html',\n restrict: 'E',\n scope: {\n 'header': '@',\n 'component': '@'\n },\n link: function (scope, elem, attrs) {\n\n var monthlyRealized = \"\";\n var realized = \"\";\n var estimated = \"\";\n var currency = customerService.getDefaultCurrency()\n \n $translate(['PROJECT_MONTHLY_REALIZED', 'A3_REALIZED', 'COMMON_ESTIMATED', 'IMPROVEMENT_FROM_PLANNED_TO_IN_PROGRESS', 'IMPROVEMENT_FROM_NEW_TO_PLANNED']).then(function (translations) {\n monthlyRealized = translations.PROJECT_MONTHLY_REALIZED;\n realized = translations.A3_REALIZED;\n estimated = translations.COMMON_ESTIMATED;\n\n getCompanySetting(\"currency\").then(function (setting) {\n if (setting) {\n currency = setting\n }\n getStatusData();\n }) \n\n });\n\n\n \n\n function getStatusData() {\n var endDate = moment().utc().endOf('year');\n var startDate = moment().utc().startOf('year');\n // Monthly suggested, need to find start and end of month\n var timePeriod = {\n from: startDate.toDate().toJSON(),\n to: endDate.toDate().toJSON()\n };\n a3Service().getInitiativeMonthlyRealized(timePeriod).then(function (result) {\n var data = result;\n\n var monthly = $(elem).find(\".initiativesmonthlyrealized\")\n Highcharts.chart({\n chart: {\n renderTo: monthly[0],\n type: 'column'\n },\n title: {\n text: monthlyRealized,\n style: {\n color: '#676a6c',\n fontWeight: 600,\n fontSize: '1.2em',\n fontFamily: 'open sans'\n }\n },\n credits: {\n enabled: false\n },\n exporting: { enabled: false },\n xAxis: {\n categories: data.estimated.monthNumbers\n },\n yAxis: [{\n min: 0,\n title: {\n text: currency\n }\n }],\n legend: {\n shadow: false\n },\n tooltip: {\n shared: true\n },\n plotOptions: {\n column: {\n grouping: false,\n shadow: false,\n borderWidth: 0\n }\n },\n series: [{\n name: realized,\n color: '#5cb85c',\n data: data.realized.amount, //[100, 73, 50, 0,0,0,0,0,0,0,0,0],\n pointPadding: 0.25,\n pointPlacement: 0\n }, {\n name: estimated,\n color: '#f8ac59',\n data: data.estimated.amount, //[140, 90, 40, 50, 80, 80, 0, 20, 50, 70, 40, 70],\n pointPadding: 0.4,\n pointPlacement: 0\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","import { getCompanySetting } from \"@common/stores/companySettingsStore\"\nimport * as customerService from \"@common/services/customers/customerService\"\n\nangular\n .module('DigiLean')\n .directive(\"initiativesaggregatedrealized\", ['$filter', '$translate', 'a3Service',\n function ($filter, $translate, a3Service) {\n return {\n templateUrl: 'initiativesaggregatedrealized.html',\n restrict: 'E',\n scope: {\n 'header': '@',\n 'component': '@'\n },\n link: function (scope, elem, attrs) {\n\n var statusAggregated = \"\";\n var realized = \"\";\n var estimated = \"\";\n var currency = customerService.getDefaultCurrency();\n \n $translate(['PROJECT_STATUS_AGGREGATED', 'A3_REALIZED', 'COMMON_ESTIMATED', 'IMPROVEMENT_FROM_PLANNED_TO_IN_PROGRESS', 'IMPROVEMENT_FROM_NEW_TO_PLANNED']).then(function (translations) {\n statusAggregated = translations.PROJECT_STATUS_AGGREGATED;\n realized = translations.A3_REALIZED;\n estimated = translations.COMMON_ESTIMATED;\n getCompanySetting(\"currency\").then(function (setting) {\n if (setting) {\n currency = setting\n }\n getStatusData();\n })\n });\n\n function aggregateResult(array){\n var result = [];\n var aggregated = 0;\n for(var i=0; i 0;\n if (isActionItem) {\n id = $(ui.draggable).attr(\"data-id\");\n moveTaskToActionList(id, function () {\n });\n }\n // From weeklyboard / kanban board\n\n }, over: function (event, ui) {\n $(this).addClass(\"ui-state-highlight\")\n scope.a3.isOpen = true;\n toggleOpenA3();\n },\n out: function (event, ui) {\n $(this).removeClass(\"ui-state-highlight\")\n }\n });\n\n $(element).find(\".actionlist\").sortable({\n connectWith: \".boardcell, .actionlist, fc-event-container, task-container\",\n placeholder: \"portlet-placeholder ui-corner-all\",\n receive: function (e, ui) {\n if (ui) {\n ui.sender.sortable(\"cancel\");\n }\n }\n });\n }\n\n function moveTaskToActionList(id, completeCallBack) {\n boardTaskService().get(id).then(function (task) {\n boardTaskService().moveTaskToActionItem(task).then(function (result) {\n scope.isProcessing = false;\n completeCallBack();\n scope.publish('SendTaskMovedToActionList', task);\n });\n })\n\n }\n\n scope.subscribe('TaskMovedToActionList', function (task) {\n if (!task.a3Id) return; // we only support a3s\n if (task.a3Id !== scope.a3.id) return;\n if (!isTaskPartOfA3(task.id)) {\n task.dateStyleClass = actionlistService().getTaskDateStyle(task);\n addTaskToActionList(task);\n };\n });\n\n scope.subscribe('ActionItemMovedToTask', function (task) {\n if (isTaskPartOfA3(task.id)) {\n removeTaskFromActionList(task.id)\n };\n });\n\n scope.subscribe('TaskStatusUpdated', function (status) {\n updateTaskStatus(status);\n });\n scope.subscribe('TaskUpdated', function (task) {\n updateTask(task);\n });\n scope.subscribe('TaskCommentAdded', function (task) {\n updateTask(task);\n });\n scope.subscribe('TasksDeleted', function (taskIds) {\n removeTasksFromActionList(taskIds);\n });\n\n scope.subscribe('CreateActionListItem', function (task) {\n if (!task.a3Id) return; // we only support a3s\n if (task.a3Id !== scope.a3.id) return;\n if (!isTaskPartOfA3(task.id)) {\n addTaskToActionList(task);\n };\n });\n\n scope.subscribe('TaskDeleted', function (taskId) {\n if (isTaskPartOfA3(taskId)) {\n removeTaskFromActionList(taskId)\n };\n });\n\n function isTaskPartOfA3(taskId) {\n return $filter('filter')(scope.tasks, { id: taskId }).length > 0;\n }\n\n scope.changeStatus = function (task) {\n task.status = taskDrawingService().getNextStatus(task.status).status;\n var statusOptions = {\n taskid: task.id,\n status: task.status\n };\n boardTaskService().updateStatus(task.id, statusOptions).then(function (result) {\n task.dateStyleClass = actionlistService().getTaskDateStyle(task);\n updateTaskStatusCount();\n });\n }\n\n scope.goToA3 = function (a3id) {\n $state.go('a3wizard', { id: a3id }, { reload: false });\n }\n\n function updateTaskStatusCount() {\n scope.a3taskCount = scope.tasks.length;\n scope.a3taskOverdueCount = $filter('filter')(scope.tasks, { dateStyleClass: \"overdue\" }).length;\n // Publish result\n var status = {\n a3Id: scope.a3.id,\n total: scope.a3taskCount,\n overdue: scope.a3taskOverdueCount\n }\n scope.publish(\"A3ActionListStatusChanged\", status);\n }\n\n function updateTaskStatus(status) {\n var tasks = $filter('filter')(scope.tasks, { id: status.taskId }, true);\n if (tasks.length > 0) {\n tasks[0].status = status.status;\n tasks[0].dateStyleClass = actionlistService().getTaskDateStyle(tasks[0]);\n }\n updateTaskStatusCount();\n }\n\n function updateTask(task) {\n var updatedtasks = $filter('filter')(scope.tasks, { id: task.id }, true);\n if (updatedtasks.length > 0) {\n refreshTasks(scope.a3.id);\n }\n }\n function addTaskToActionList(task) {\n scope.tasks.push(task);\n updateTaskStatusCount();\n }\n\n function removeTasksFromActionList(taskIds) {\n angular.forEach(taskIds, function (taskid, key) {\n var matchingTasks = $filter('filter')(scope.tasks, { id: taskid }, true);\n if (matchingTasks.length > 0) {\n var i = scope.tasks.indexOf(matchingTasks[0]);\n scope.tasks.splice(i, 1);\n }\n });\n updateTaskStatusCount();\n }\n function removeTaskFromActionList(taskId) {\n // remove task that is moved\n var taskIds = [];\n taskIds.push(taskId);\n removeTasksFromActionList(taskIds);\n }\n\n scope.openForEdit = function (task, activeTab) {\n if (!activeTab) activeTab = \"Info\";\n boardTaskService().get(task.id).then(function (task) {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'boardTask.html',\n controller: 'boardTaskController',\n resolve: {\n task: function () {\n return task;\n },\n activeTab: function () {\n return activeTab;\n },\n options: function () {\n var options = {\n archiveAvailable: false\n }\n return options;\n }\n\n \n }\n });\n });\n }\n\n\n scope.isLoading = true;\n function refreshTasks(a3Id) {\n scope.a3.hasLoadedTasks = true;\n scope.tasks = [];\n scope.a3taskCount = 0;\n scope.a3taskOverdueCount = 0;\n var timeperiod = timeService.getTimePeriodBeforeAfter('180', '14');\n var actionTaskQuery = {\n actionType: 'A3',\n statuses: ['blank', 'unacceptable'],\n timeperiod: timeperiod,\n entityId: a3Id\n }\n actionlistService().getActionTasks(actionTaskQuery).then(function (tasks) {\n scope.isLoading = false;\n for (var t = 0; t < tasks.length; t++) {\n scope.tasks.push(tasks[t]);\n }\n var week = timeService.getCurrentWeek(moment().isoWeek(), moment().isoWeekYear());\n var okTaskQuery = {\n actionType: 'A3',\n entityId: a3Id,\n statuses: ['OK'],\n timeperiod: {\n from: week.startDate.toJSON(),\n to: week.endDate.toJSON()\n }\n }\n actionlistService().getActionTasks(okTaskQuery).then(function (tasks) {\n // Check only overdue for blank and unacceptable tasks\n for (var t = 0; t < scope.tasks.length; t++) {\n scope.tasks[t].dateStyleClass = actionlistService().getTaskDateStyle(scope.tasks[t]);\n }\n \n for (var t = 0; t < tasks.length; t++) {\n scope.tasks.push(tasks[t]);\n }\n\n updateTaskStatusCount();\n });\n });\n\n }\n\n }\n }\n }]);\n","import * as assetService from \"@common/services/assetService\"\nimport * as boardService from \"@common/services/boardService\"\nangular\n .module('DigiLean')\n .directive(\"actionlist\", ['$filter', '$uibModal', 'navigationService',\n function ($filter, $uibModal, navigationService) {\n return {\n templateUrl: 'actionlist.html',\n restrict: 'E',\n scope: {\n 'assetid': '=',\n 'boardid': '=',\n 'viewcontext': '=', // context of view which Action list is supporting => viewcontext = { view: \"Board\", id = 452 }\n 'week': '=',\n 'readonly': '@',\n 'options': ' 0;\n if (isActionItem) {\n id = $(ui.draggable).attr(\"data-id\");\n moveTaskToActionList(id, function () {\n //refreshBoardTasks(scope.board.id);\n });\n }\n // From weeklyboard / kanban board\n }\n \n \n }, over: function (event, ui) {\n if($(ui.draggable).attr(\"data-id\")){\n $(this).addClass(\"ui-state-highlight\")\n scope.board.isOpen = true;\n scope.toggleOpenBoard();\n }\n },\n out: function (event, ui) {\n $(this).removeClass(\"ui-state-highlight\")\n }\n });\n\n $(element).find(\".actionlist\").sortable({\n connectWith: \".boardcell, .actionlist, fc-event-container, task-container\",\n placeholder: \"portlet-placeholder ui-corner-all\",\n receive: function (e, ui) {\n if (ui) {\n ui.sender.sortable(\"cancel\");\n }\n }\n });\n }\n\n function moveTaskToActionList(id, completeCallBack) {\n boardTaskService().get(id).then(function (task) {\n var currentBoardId = task.boardId;\n task.boardId = scope.board.id;\n boardTaskService().moveTaskToActionItem(task).then(function (result) {\n scope.isProcessing = false;\n completeCallBack();\n scope.publish('SendTaskMovedToActionList', task);\n if (currentBoardId !== scope.board.id) {\n var change = {\n taskId: id,\n fromBoardId: currentBoardId,\n toBoardId: scope.board.id\n };\n scope.publish(\"SendTaskChangedBoard\", change);\n }\n });\n });\n\n }\n\n /// HANDLING OF EVENTS\n scope.subscribe('TaskMovedToActionList', function (task) {\n if (!task.boardId) return; // we only support boards\n if (task.boardId !== scope.board.id) return;\n if (!isTaskPartOfBoard(task.id)) {\n //refreshBoardTasks(scope.board.id);\n addTaskToActionList(task);\n }\n });\n\n scope.subscribe('ActionItemMovedToTask', function (task) {\n if (isTaskPartOfBoard(task.id)) {\n removeTaskFromActionList(task.id)\n }\n });\n\n scope.subscribe('TaskDateMoved', function (moveSettings) {\n // CHeck if task is part of list\n var exists = $filter('filter')(scope.tasks, { id: moveSettings.taskId });\n if (exists.length > 0) { \n for(var i = 0; i < exists.length; i++) {\n exists[i].boardDate = moveSettings.boardDate;\n var status = {\n status: exists[0].status,\n taskId: exists[0].id\n }\n updateTaskStatus(status);\n }\n }\n });\n scope.subscribe('TaskStatusUpdated', function (status) {\n updateTaskStatus(status);\n });\n scope.subscribe('TaskUpdated', function (task) {\n updateTask(task);\n });\n scope.subscribe('TaskCommentAdded', function (task) {\n updateTask(task);\n });\n scope.subscribe('TaskCommentDeleted', function (task) {\n updateTask(task);\n });\n scope.subscribe('TaskAssigned', function (task) {\n updateTask(task);\n });\n scope.subscribe('TasksDeleted', function (taskIds) {\n removeTasksFromActionList(taskIds);\n });\n\n // // Must refactor for every actiontype\n\n scope.subscribe('CreateActionListItem', function (task) {\n if (!task.boardId) return; // we only support boards\n if (task.boardId !== scope.board.id) return;\n if (task.responsibleUserId) return; //TaskAssign event will be triggered and all task will be relaoded (including this new task)\n if (!isTaskPartOfBoard(task.id)) {\n addTaskToActionList(task);\n }\n });\n scope.subscribe('TaskCloned', function (task) {\n if (!task.actionType) {\n if (task.columnCategoryId) return; // We are not going to add task that has assigned columns, because they belong to board.\n addTaskToActionList(task);\n }\n });\n scope.subscribe('TaskDeleted', function (taskId) {\n if (isTaskPartOfBoard(taskId)) {\n removeTaskFromActionList(taskId)\n }\n });\n\n // Team Board\n /*scope.subscribe('TaskChangedBoard', function (change) {\n if(change.toBoardId === null){\n removeTaskFromActionList(change.taskId)\n }\n else if (change.toBoardId === scope.board.id || change.fromBoardId === scope.board.id) {\n refreshBoardTasks(scope.board.id);\n };\n\n });*/\n scope.subscribe('TaskChangedBoard', function (change) {\n if(change.toBoardId === null){\n if (isTaskPartOfBoard(change.taskId)) {\n removeTaskFromActionList(change.taskId);\n }\n } else if (change.fromBoardId === scope.board.id && change.toBoardId !== scope.board.id) {\n removeTaskFromActionList(change.taskId)\n } else if (change.toBoardId === scope.board.id && change.fromBoardId !== scope.board.id) {\n if (!isTaskPartOfBoard(change.taskId)) {\n boardTaskService().get(change.taskId).then(function (task) {\n addTaskToActionList(task);\n });\n }\n }\n });\n \n function isTaskPartOfBoard(taskId) {\n return $filter('filter')(scope.tasks, { id: taskId }).length > 0;\n }\n\n scope.changeStatus = function (task) {\n task.status = taskDrawingService().getNextStatus(task.status).status;\n var statusOptions = {\n taskid: task.id,\n status: task.status\n };\n boardTaskService().updateStatus(task.id, statusOptions).then(function (result) {\n task.dateStyleClass = actionlistService().getTaskDateStyle(task);\n updateTaskStatusCount();\n });\n };\n\n scope.goToBoard = function (boardId) {\n $state.go('board', { id: boardId }, { reload: false });\n };\n\n function updateTaskStatusCount() {\n scope.taskCount = scope.tasks.length;\n scope.taskOverdueCount = $filter('filter')(scope.tasks, { dateStyleClass: \"overdue\" }).length;\n // Publish result\n var status = {\n boardId: scope.board.id,\n total: scope.taskCount,\n overdue: scope.taskOverdueCount\n }\n scope.publish(\"BoardActionListStatusChanged\", status);\n }\n\n function updateTaskStatus(status) {\n var tasks = $filter('filter')(scope.tasks, { id: status.taskId }, true);\n if (tasks.length > 0) {\n tasks[0].status = status.status;\n tasks[0].dateStyleClass = actionlistService().getTaskDateStyle(tasks[0]);\n }\n updateTaskStatusCount();\n }\n\n function updateTask(task) {\n var updatedtasks = $filter('filter')(scope.tasks, { id: task.id }, true);\n if (updatedtasks.length > 0) {\n refreshBoardTasks(scope.board.id);\n }\n }\n function addTaskToActionList(task) {\n scope.tasks.push(task);\n updateTaskStatusCount();\n }\n\n function removeTasksFromActionList(taskIds) {\n angular.forEach(taskIds, function (taskid, key) {\n var matchingTasks = $filter('filter')(scope.tasks, { id: taskid }, true);\n if (matchingTasks.length > 0) {\n var i = scope.tasks.indexOf(matchingTasks[0]);\n scope.tasks.splice(i, 1);\n }\n });\n updateTaskStatusCount();\n }\n function removeTaskFromActionList(taskId) {\n // remove task that is moved\n var taskIds = [];\n taskIds.push(taskId);\n removeTasksFromActionList(taskIds);\n }\n\n scope.openForEdit = function (task, activeTab) {\n if (!activeTab) activeTab = \"Info\";\n boardTaskService().get(task.id).then(function (task) {\n $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'boardTask.html',\n controller: 'boardTaskController',\n resolve: {\n task: function () {\n return task;\n },\n activeTab: function () {\n return activeTab;\n },\n options: function () {\n var options = {\n archiveAvailable: false\n }\n return options;\n }\n }\n });\n });\n }\n\n function compareBoardDate( a, b ) {\n if (!a.boardDate) {\n return -1;\n }\n if (!b.boardDate) {\n return -1;\n }\n if ( a.boardDate < b.boardDate ){\n return -1;\n }\n if ( a.boardDate > b.boardDate ){\n return 1;\n }\n return 0;\n }\n \n \n\n scope.isLoading = true;\n function refreshBoardTasks(boardId) {\n scope.board.hasLoadedTasks = true;\n scope.tasks = [];\n scope.taskCount = 0;\n scope.taskOverdueCount = 0;\n var actionType = \"BOARD\";\n if (scope.board.boardType == \"SmartActionList\") {\n actionType = \"SMARTACTIONLIST\";\n }\n var timeperiod = timeService.getTimePeriodBeforeAfter('180', '14');\n var actionTaskQuery = {\n actionType: actionType,\n // assetId: scope.assetid,\n statuses: ['blank', 'unacceptable'],\n timeperiod: timeperiod,\n entityId: boardId\n }\n actionlistService().getActionTasks(actionTaskQuery).then(function (tasks) {\n scope.isLoading = false;\n for (var t = 0; t < tasks.length; t++) {\n scope.tasks.push(tasks[t]);\n }\n var week = timeService.getCurrentWeek(moment().isoWeek(), moment().isoWeekYear());\n var okTaskQuery = {\n actionType: actionType,\n assetId: scope.assetid,\n statuses: ['OK'],\n // entityId: boardId,\n timeperiod: {\n from: week.startDate.toJSON(),\n to: week.endDate.toJSON()\n }\n }\n actionlistService().getActionTasks(okTaskQuery).then(function (tasks) {\n for (let t = 0; t < tasks.length; t++) {\n scope.tasks.push(tasks[t]);\n }\n\n for (let t = 0; t < scope.tasks.length; t++) {\n scope.tasks[t].dateStyleClass = actionlistService().getTaskDateStyle(scope.tasks[t]);\n }\n scope.tasks.sort( compareBoardDate );\n alltasks = scope.tasks;\n\n updateTaskStatusCount();\n });\n });\n\n }\n\n }\n }\n }]);\n","import * as timeService from \"@common/services/timeService\"\n\nangular\n .module('DigiLean')\n .directive(\"actionlistDeviationtasks\", ['$filter', '$uibModal', '$state', 'boardTaskService', 'actionlistService', 'taskDrawingService', 'deviationService',\n function ($filter, $uibModal, $state, boardTaskService, actionlistService, taskDrawingService, deviationService) {\n return {\n templateUrl: 'actionlistDeviationtasks.html',\n restrict: 'E',\n scope: {\n 'deviation': '=',\n 'readonly': '@',\n 'viewcontext': '=',\n },\n link: function (scope, element, attrs) {\n scope.tasks = [];\n scope.deviationtaskCount = 0;\n scope.deviationtaskOverdueCount = 0;\n scope.$watch(\"deviation\", function () {\n if (!scope.deviation) return;\n refreshTasks(scope.deviation.id);\n setupDragDrop();\n });\n\n scope.$watch(\"viewcontext\", function () {\n if (!scope.viewcontext) return;\n });\n\n function isViewTimeBoard() {\n if (scope.viewcontext && scope.viewcontext.view === \"TimeBoard\") return true;\n return false;\n }\n function setupDragDrop() {\n // Make board container droppable to accept tasks from external sources, including Timeboard.\n $(element).find(\".actionlist-container\").droppable({\n drop: function (event, ui) {\n $(this)\n .removeClass(\"ui-state-highlight\");\n var id = 0;\n // Timeobard drop check\n var isTimeBoardEvent = $(ui.draggable).hasClass(\"fc-event\");\n if (isTimeBoardEvent === true) {\n id = $(ui.draggable).attr(\"data-id\");\n moveTaskToActionList(id, function () {\n // Remove from timeboard.\n if (isViewTimeBoard) {\n $('.calendar').fullCalendar('removeEvents', id);\n }\n\n });\n return;\n }\n\n var isPortlet = $(ui.draggable).hasClass(\"portlet\");\n if (isPortlet === true || isActionItem) {\n id = $(ui.draggable).attr(\"data-id\");\n moveTaskToActionList(id, function () {\n //refreshBoardTasks(scope.board.id);\n });\n return;\n }\n\n var isActionItem = $(ui.draggable).attr(\"data-is-action-item\").length > 0;\n if (isActionItem) {\n id = $(ui.draggable).attr(\"data-id\");\n moveTaskToActionList(id, function () {\n //refreshBoardTasks(scope.board.id);\n });\n } \n }, over: function (event, ui) {\n $(this).addClass(\"ui-state-highlight\")\n scope.deviation.isOpen = true;\n },\n out: function (event, ui) {\n $(this).removeClass(\"ui-state-highlight\")\n }\n });\n\n $(element).find(\".actionlist\").sortable({\n connectWith: \".boardcell, .actionlist, fc-event-container, task-container\",\n placeholder: \"portlet-placeholder ui-corner-all\",\n receive: function (e, ui) {\n if (ui) {\n ui.sender.sortable(\"cancel\");\n }\n }\n });\n }\n\n function moveTaskToActionList(id, completeCallBack) {\n boardTaskService().get(id).then(function (task) {\n boardTaskService().moveTaskToActionItem(task).then(function (result) {\n scope.isProcessing = false;\n completeCallBack();\n scope.publish('SendTaskMovedToActionList', task);\n });\n })\n\n }\n\n\n /// HANDLING OF EVENTS\n scope.subscribe('TaskMovedToActionList', function (task) {\n if (!task.deviationId) return; // we only support deviations\n if (task.deviationId !== scope.deviation.id) return;\n if (!isTaskPartOfDeviation(task.id)) {\n task.dateStyleClass = actionlistService().getTaskDateStyle(task);\n //refreshBoardTasks(scope.board.id);\n addTaskToActionList(task);\n };\n });\n\n scope.subscribe('ActionItemMovedToTask', function (task) {\n if (isTaskPartOfDeviation(task.id)) {\n removeTaskFromActionList(task.id)\n };\n });\n\n\n scope.subscribe('TaskStatusUpdated', function (status) {\n updateTaskStatus(status);\n });\n scope.subscribe('TaskUpdated', function (task) {\n updateTask(task);\n });\n scope.subscribe('TaskCommentAdded', function (task) {\n updateTask(task);\n });\n scope.subscribe('TasksDeleted', function (taskIds) {\n removeTasksFromActionList(taskIds);\n });\n\n scope.subscribe('TasksDeleted', function (taskIds) {\n removeTasksFromActionList(taskIds);\n });\n scope.subscribe('TaskDescriptionUpdated', function (task) {\n updateTask(task);\n });\n \n\n\n scope.subscribe('CreateActionListItem', function (task) {\n if (!task.deviationId) return; // we only support deviations\n if (task.deviationId !== scope.deviation.id) return;\n if (!isTaskPartOfDeviation(task.id)) {\n addTaskToActionList(task);\n };\n });\n scope.subscribe('TaskDeleted', function (taskId) {\n if (isTaskPartOfDeviation(taskId)) {\n removeTaskFromActionList(taskId)\n };\n });\n\n function isTaskPartOfDeviation(taskId) {\n return $filter('filter')(scope.tasks, { id: taskId }).length > 0;\n }\n\n scope.changeStatus = function (task) {\n task.status = taskDrawingService().getNextStatus(task.status).status;\n var statusOptions = {\n taskid: task.id,\n status: task.status\n };\n boardTaskService().updateStatus(task.id, statusOptions).then(function (result) {\n task.dateStyleClass = actionlistService().getTaskDateStyle(task);\n updateTaskStatusCount();\n });\n }\n\n scope.openDeviation = function (id) {\n deviationService().get(id).then(function (deviation) {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n templateUrl: 'fullDeviation.html',\n controller: 'fullDeviationController',\n windowClass: 'full-screen',\n resolve: {\n deviation: function () {\n return deviation;\n },\n activeTab: function () {\n return \"Info\";\n }\n }\n });\n });\n }\n\n function updateTaskStatusCount() {\n scope.deviationtaskCount = scope.tasks.length;\n scope.deviationtaskOverdueCount = $filter('filter')(scope.tasks, { dateStyleClass: \"overdue\" }).length;\n // Publish result\n var status = {\n deviationId: scope.deviation.id,\n total: scope.deviationtaskCount,\n overdue: scope.deviationtaskOverdueCount\n }\n scope.publish(\"DeviationActionListStatusChanged\", status);\n }\n\n function updateTaskStatus(status) {\n var tasks = $filter('filter')(scope.tasks, { id: status.taskId }, true);\n if (tasks.length > 0) {\n tasks[0].status = status.status;\n tasks[0].dateStyleClass = actionlistService().getTaskDateStyle(tasks[0]);\n }\n updateTaskStatusCount();\n }\n\n function calculateOverdueStatus() {\n\n }\n\n function updateTask(task) {\n var updatedtasks = $filter('filter')(scope.tasks, { id: task.id }, true);\n if (updatedtasks.length > 0) {\n refreshTasks(scope.deviation.id);\n }\n }\n function addTaskToActionList(task) {\n scope.tasks.push(task);\n updateTaskStatusCount();\n }\n\n function removeTasksFromActionList(taskIds) {\n angular.forEach(taskIds, function (taskid, key) {\n var matchingTasks = $filter('filter')(scope.tasks, { id: taskid }, true);\n if (matchingTasks.length > 0) {\n var i = scope.tasks.indexOf(matchingTasks[0]);\n scope.tasks.splice(i, 1);\n }\n });\n updateTaskStatusCount();\n }\n function removeTaskFromActionList(taskId) {\n // remove task that is moved\n var taskIds = [];\n taskIds.push(taskId);\n removeTasksFromActionList(taskIds);\n }\n\n scope.openForEdit = function (task, activeTab) {\n if (!activeTab) activeTab = \"Info\";\n boardTaskService().get(task.id).then(function (task) {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'boardTask.html',\n controller: 'boardTaskController',\n resolve: {\n task: function () {\n return task;\n },\n activeTab: function () {\n return activeTab;\n },\n options: function () {\n var options = {\n archiveAvailable: false\n }\n return options;\n }\n }\n });\n });\n }\n\n\n\n function refreshTasks(deviationId) {\n scope.tasks = [];\n scope.deviationtaskCount = 0;\n scope.deviationtaskOverdueCount = 0;\n var timeperiod = timeService.getTimePeriodBeforeAfter('180', '14');\n var actionTaskQuery = {\n actionType: 'DEVIATION',\n statuses: ['blank', 'unacceptable'],\n timeperiod: timeperiod,\n entityId: deviationId\n }\n actionlistService().getActionTasks(actionTaskQuery).then(function (tasks) {\n for (var t = 0; t < tasks.length; t++) {\n scope.tasks.push(tasks[t]);\n }\n var week = timeService.getCurrentWeek(moment().isoWeek(), moment().isoWeekYear());\n var okTaskQuery = {\n actionType: 'DEVIATION',\n entityId: deviationId,\n statuses: ['OK'],\n timeperiod: {\n from: week.startDate.toJSON(),\n to: week.endDate.toJSON()\n }\n }\n actionlistService().getActionTasks(okTaskQuery).then(function (tasks) {\n // Check only overdue for blank and unacceptable tasks\n for (var t = 0; t < scope.tasks.length; t++) {\n scope.tasks[t].dateStyleClass = actionlistService().getTaskDateStyle(scope.tasks[t]);\n }\n \n for (var t = 0; t < tasks.length; t++) {\n scope.tasks.push(tasks[t]);\n }\n\n updateTaskStatusCount();\n });\n });\n\n }\n\n }\n }\n }]);\n","import * as timeService from \"@common/services/timeService\"\n\nangular\n .module('DigiLean')\n .directive(\"actionlistImprovementtasks\", ['$filter', '$uibModal', '$state', 'boardTaskService', 'actionlistService', 'taskDrawingService','suggestionService',\n function ($filter, $uibModal, $state, boardTaskService, actionlistService, taskDrawingService, suggestionService) {\n return {\n templateUrl: 'actionlistImprovementtasks.html',\n restrict: 'E',\n scope: {\n 'improvement': '=',\n 'readonly': '@',\n 'viewcontext': '=',\n },\n link: function (scope, element, attrs) {\n scope.tasks = [];\n scope.improvementtaskCount = 0;\n scope.improvementtaskOverdueCount = 0;\n scope.$watch(\"improvement\", function () {\n if (!scope.improvement) return;\n refreshTasks(scope.improvement.id);\n setupDragDrop();\n });\n\n scope.$watch(\"viewcontext\", function () {\n if (!scope.viewcontext) return;\n });\n\n function isViewTimeBoard() {\n if (scope.viewcontext && scope.viewcontext.view === \"TimeBoard\") return true;\n return false;\n }\n function setupDragDrop() {\n // Make board container droppable to accept tasks from external sources, including Timeboard.\n $(element).find(\".actionlist-container\").droppable({\n drop: function (event, ui) {\n \n $(this)\n .removeClass(\"ui-state-highlight\")\n var id = 0;\n // Timeobard drop check\n var isTimeBoardEvent = $(ui.draggable).hasClass(\"fc-event\");\n if (isTimeBoardEvent === true) {\n id = $(ui.draggable).attr(\"data-id\");\n moveTaskToActionList(id, function () {\n // Remove from timeboard.\n if (isViewTimeBoard) {\n $('.calendar').fullCalendar('removeEvents', id);\n }\n\n });\n return;\n }\n\n var isPortlet = $(ui.draggable).hasClass(\"portlet\");\n if (isPortlet === true || isActionItem) {\n id = $(ui.draggable).attr(\"data-id\");\n moveTaskToActionList(id, function () {\n //refreshBoardTasks(scope.board.id);\n });\n return;\n }\n\n var isActionItem = $(ui.draggable).attr(\"data-is-action-item\").length > 0;\n if (isActionItem) {\n id = $(ui.draggable).attr(\"data-id\");\n moveTaskToActionList(id, function () {\n //refreshBoardTasks(scope.board.id);\n });\n }\n }, over: function (event, ui) {\n $(this).addClass(\"ui-state-highlight\")\n scope.improvement.isOpen = true;\n },\n out: function (event, ui) {\n $(this).removeClass(\"ui-state-highlight\")\n }\n });\n\n $(element).find(\".actionlist\").sortable({\n connectWith: \".boardcell, .actionlist, fc-event-container, task-container\",\n placeholder: \"portlet-placeholder ui-corner-all\",\n receive: function (e, ui) {\n if (ui) {\n ui.sender.sortable(\"cancel\");\n }\n }\n });\n }\n\n function moveTaskToActionList(id, completeCallBack) {\n boardTaskService().get(id).then(function (task) {\n boardTaskService().moveTaskToActionItem(task).then(function (result) {\n scope.isProcessing = false;\n completeCallBack();\n scope.publish('SendTaskMovedToActionList', task);\n });\n })\n\n }\n\n scope.subscribe('TaskMovedToActionList', function (task) {\n if (!task.improvementSuggestionId) return; // we only support improvement suggestions\n if (task.improvementSuggestionId !== scope.improvement.id) return;\n if (!isTaskPartOfImprovement(task.id)) {\n task.dateStyleClass = actionlistService().getTaskDateStyle(task);\n //refreshBoardTasks(scope.board.id);\n addTaskToActionList(task);\n };\n });\n\n scope.subscribe('ActionItemMovedToTask', function (task) {\n if (isTaskPartOfImprovement(task.id)) {\n removeTaskFromActionList(task.id)\n };\n });\n\n scope.subscribe('TaskStatusUpdated', function (status) {\n updateTaskStatus(status);\n });\n scope.subscribe('TaskUpdated', function (task) {\n updateTask(task);\n });\n scope.subscribe('TaskCommentAdded', function (task) {\n updateTask(task);\n });\n scope.subscribe('TasksDeleted', function (taskIds) {\n removeTasksFromActionList(taskIds);\n });\n scope.subscribe('TaskDescriptionUpdated', function (task) {\n updateTask(task);\n });\n\n scope.subscribe('CreateActionListItem', function (task) {\n if (!task.improvementSuggestionIdId) return; // we only support suggestions\n if (task.improvementSuggestionIdId !== scope.improvement.id) return;\n if (!isTaskPartOfImprovement(task.id)) {\n addTaskToActionList(task);\n };\n });\n scope.subscribe('TaskDeleted', function (taskId) {\n if (isTaskPartOfImprovement(taskId)) {\n removeTaskFromActionList(taskId)\n };\n });\n\n function isTaskPartOfImprovement(taskId) {\n return $filter('filter')(scope.tasks, { id: taskId }).length > 0;\n }\n\n scope.changeStatus = function (task) {\n task.status = taskDrawingService().getNextStatus(task.status).status;\n var statusOptions = {\n taskid: task.id,\n status: task.status\n };\n boardTaskService().updateStatus(task.id, statusOptions).then(function (result) {\n task.dateStyleClass = actionlistService().getTaskDateStyle(task);\n updateTaskStatusCount();\n });\n }\n\n scope.openImprovement = function (improvementid) {\n suggestionService().get(improvementid).then(function (suggestion) {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n templateUrl: 'fullImprovementInfoForm.html',\n controller: 'fullImprovementModalController',\n windowClass: 'fullSuggestion-modal-window',\n resolve: {\n suggestion: function () {\n return suggestion;\n },\n activeTab: function () {\n return \"Info\";\n }\n }\n });\n });\n }\n\n function updateTaskStatusCount() {\n scope.improvementtaskCount = scope.tasks.length;\n scope.improvementtaskOverdueCount = $filter('filter')(scope.tasks, { dateStyleClass: \"overdue\" }).length;\n // Publish result\n var status = {\n improvementId: scope.improvement.id,\n total: scope.improvementtaskCount,\n overdue: scope.improvementtaskOverdueCount\n }\n scope.publish(\"ImprovementActionListStatusChanged\", status);\n }\n\n function updateTaskStatus(status) {\n var tasks = $filter('filter')(scope.tasks, { id: status.taskId }, true);\n if (tasks.length > 0) {\n tasks[0].status = status.status;\n tasks[0].dateStyleClass = actionlistService().getTaskDateStyle(tasks[0]);\n }\n updateTaskStatusCount();\n }\n \n function updateTask(task) {\n var updatedtasks = $filter('filter')(scope.tasks, { id: task.id }, true);\n if (updatedtasks.length > 0) {\n refreshTasks(scope.improvement.id);\n }\n }\n function addTaskToActionList(task) {\n scope.tasks.push(task);\n updateTaskStatusCount();\n }\n\n function removeTasksFromActionList(taskIds) {\n angular.forEach(taskIds, function (taskid, key) {\n var matchingTasks = $filter('filter')(scope.tasks, { id: taskid }, true);\n if (matchingTasks.length > 0) {\n var i = scope.tasks.indexOf(matchingTasks[0]);\n scope.tasks.splice(i, 1);\n }\n });\n updateTaskStatusCount();\n }\n function removeTaskFromActionList(taskId) {\n // remove task that is moved\n var taskIds = [];\n taskIds.push(taskId);\n removeTasksFromActionList(taskIds);\n }\n\n scope.openForEdit = function (task, activeTab) {\n if (!activeTab) activeTab = \"Info\";\n boardTaskService().get(task.id).then(function (task) {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'boardTask.html',\n controller: 'boardTaskController',\n resolve: {\n task: function () {\n return task;\n },\n activeTab: function () {\n return activeTab;\n },\n options: function () {\n var options = {\n archiveAvailable: false\n }\n return options;\n }\n }\n });\n });\n }\n\n\n\n function refreshTasks(improvementSuggestionId) {\n scope.tasks = [];\n scope.improvementtaskCount = 0;\n scope.improvementtaskOverdueCount = 0;\n var timeperiod = timeService.getTimePeriodBeforeAfter('365', '365');\n var actionTaskQuery = {\n actionType: 'IMPROVEMENT',\n statuses: ['blank', 'unacceptable'],\n timeperiod: timeperiod,\n entityId: improvementSuggestionId\n }\n actionlistService().getActionTasks(actionTaskQuery).then(function (tasks) {\n for (var t = 0; t < tasks.length; t++) {\n scope.tasks.push(tasks[t]);\n }\n var week = timeService.getCurrentWeek(moment().isoWeek(), moment().isoWeekYear());\n var okTaskQuery = {\n actionType: 'IMPROVEMENT',\n entityId: improvementSuggestionId,\n statuses: ['OK'],\n timeperiod: {\n from: week.startDate.toJSON(),\n to: week.endDate.toJSON()\n }\n }\n actionlistService().getActionTasks(okTaskQuery).then(function (tasks) {\n // Check only overdue for blank and unacceptable tasks\n for (var t = 0; t < scope.tasks.length; t++) {\n scope.tasks[t].dateStyleClass = actionlistService().getTaskDateStyle(scope.tasks[t]);\n }\n \n for (var t = 0; t < tasks.length; t++) {\n scope.tasks.push(tasks[t]);\n }\n\n updateTaskStatusCount();\n });\n });\n\n }\n\n }\n }\n }]);\n","import * as dashboardService from \"@common/services/dashboardService\"\n\nconst DigiLean = angular.module('DigiLean');\nDigiLean.controller('newFlexiboardTemplateController', ['$scope', '$uibModalInstance', 'options',\n function ($scope, $uibModalInstance, options) {\n $scope.title = options.title;\n $scope.description = options.description;\n\n $scope.includeTasks = false;\n $scope.isProcessing = false;\n\n $scope.ok = function () {\n $scope.isProcessing = true;\n var templateOptions = {\n title: $scope.title,\n description: $scope.description,\n };\n dashboardService.createTemplate(options.id, templateOptions).then(function (template) {\n $scope.isProcessing = false;\n $scope.publish(\"SendBoardTemplateCreated\", template);\n $uibModalInstance.close(template);\n });\n };\n\n $scope.toggleIncludeTasks = function (include) {\n $scope.includeTasks = include;\n };\n\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n }]);","import * as assetService from \"@common/services/assetService\"\n\nvar DigiLean = angular.module('DigiLean');\nDigiLean.controller('colorlabelConfigurationController', ['$scope', '$uibModalInstance', '$uibModal','$filter','$translate','authService','qualityService','areaService','projectService','navigationService','deviationService','configuration',\n function ($scope, $uibModalInstance, $uibModal, $filter,$translate,authService,qualityService,areaService,projectService,navigationService,deviationService,configuration) {\n $scope.settings = configuration;\n $scope.typeSelected = \"\";\n\n //Relevant for dataserie configuration\n $scope.formula = 'sum';\n\n $scope.availablevaluelabels = [\n { value: 0, label: '', show:false },\n { value: 1, label: '', show:false },\n { value: 2, label: '', show:false },\n { value: 3, label: '', show:false },\n { value: 4, label: '', show:false }\n ];\n\n $scope.operators = [\n { dbCode: \">=\", html: \">=\" },\n { dbCode: \">\", html: \">\" },\n { dbCode: \"<=\", html: \"<=\" },\n { dbCode: \"<\", html: \"<\" },\n ];\n\n $scope.hasProjectModule = navigationService().hasModule(\"PROJECT\");\n $scope.hasDeviationModule = navigationService().hasModule(\"DEVIATION\");\n $scope.subscribe(\"UserAuthenticatedAndReady\", function (profile) {\n $scope.hasProjectModule = navigationService().hasModule(\"PROJECT\");\n $scope.hasDeviationModule = navigationService().hasModule(\"DEVIATION\");\n setAdminPrivilege();\n });\n\n $scope.selectStep = function (step) {\n $scope.currentStep = step;\n }\n\n $scope.steps = [];\n $translate(['COMMON_SOURCE', 'COMMON_LAYOUT','ADMIN_DATA_DATASOURCE_TARGETS']).then(function (translations) {\n $scope.steps.push({ id: 'COMMON_SOURCE', title: translations.COMMON_SOURCE, show:true });\n $scope.steps.push({ id: 'COMMON_LAYOUT', title: translations.COMMON_LAYOUT,show:true });\n $scope.steps.push({ id: 'ADMIN_DATA_DATASOURCE_TARGETS', title: translations.ADMIN_DATA_DATASOURCE_TARGETS,show:false });\n $scope.currentStep = $scope.steps[0];\n init();\n });\n $scope.$on('$translateChangeSuccess', function () {\n $scope.steps[0].title = $translate.instant('COMMON_SOURCE');\n $scope.steps[1].title = $translate.instant('COMMON_LAYOUT'); \n $scope.steps[2].title = $translate.instant('ADMIN_DATA_DATASOURCE_TARGETS'); \n });\n\n function setAdminPrivilege(){\n $scope.dataAdminPrivilege = false;\n $scope.isAdmin = authService.hasRole(\"Admin\");\n $scope.isDataAdmin = authService.hasRole(\"DataAdmin\");\n\n if($scope.isAdmin || $scope.isDataAdmin) {\n $scope.dataAdminPrivilege = true\n }\n }\n\n function init() {\n setAdminPrivilege();\n if ($scope.settings) {\n $scope.typeSelected = $scope.settings.typeSelected;\n $scope.identificationName = $scope.settings.identificationName;\n $scope.areaId = $scope.settings.areaId;\n $scope.projectId = $scope.settings.projectId;\n $scope.assetId = $scope.settings.assetId;\n $scope.dataSource = $scope.settings.dataSource;\n $scope.deviationTypeId = $scope.settings.deviationTypeId;\n $scope.visualizationType = $scope.settings.visualizationType;\n if($scope.settings.typeVariant){\n $scope.typeVariant = $scope.settings.typeVariant;\n }\n \n for (var i = 0; i < $scope.availablevaluelabels.length; i++) {\n checkShow($scope.availablevaluelabels[i], $scope.settings.valuelabels);\n }\n if($scope.settings.formula){\n $scope.formula = $scope.settings.formula;\n }\n // DATASOURCE\n if($scope.dataSource && $scope.dataSource.id){\n $scope.firstdecision = \"datasource\";\n $scope.registration = 'readonly';\n $scope.steps[1].show = false;\n $scope.steps[2].show = true;\n $scope.filters = $scope.settings.filters;\n\n //DEVIATION \n }else if($scope.deviationTypeId){\n $scope.loadDeviationTypes();\n \n $scope.firstdecision = \"deviation\";\n $scope.steps[1].show = false; \n if($scope.assetId){\n $scope.registration = 'edit';\n $scope.typeSelected = 'asset'; \n } else {\n if($scope.settings.filters){\n $scope.filters = $scope.settings.filters; \n $scope.registration = 'readonlywithfilters';\n $scope.typeSelected = 'filtered';\n getDeviationFilterDatasource();\n } else {\n $scope.registration = 'readonly';\n $scope.typeSelected = 'all';\n } \n }\n }\n\n // MANUAL\n else if($scope.settings.assetId == null && $scope.settings.areaId == null && $scope.settings.projectId == null){\n if($scope.settings.filters){\n $scope.filters = $scope.settings.filters; \n $scope.registration = 'readonlywithfilters';\n $scope.typeSelected = 'filtered';\n $scope.firstdecision = \"manual\";\n $scope.steps[1].show = false;\n $scope.setRegistration($scope.registration);\n } else {\n $scope.registration = 'readonly';\n $scope.typeSelected = 'all';\n $scope.firstdecision = \"manual\";\n $scope.steps[1].show = false;\n } \n } else {\n $scope.registration = 'edit'; \n $scope.firstdecision = \"manual\"; \n }\n }\n }\n \n $scope.changeFormula = function(newFormula){\n $scope.formula = newFormula;\n }\n\n $scope.setType = function(type){\n $scope.assetErrorMessage = null;\n $scope.projectErrorMessage = null;\n $scope.areaErrorMessage = null;\n if(type === 'area'){\n $scope.typeSelected = type;\n if(!$scope.areas){ \n areaService().getList().then(function (areas) {\n $scope.areas = areas;\n if(!$scope.areaId){\n if($scope.areas.length > 0){\n $scope.updateArea($scope.areas[0]);\n } else {\n $scope.areaErrorMessage = $translate.instant('COMMON_NO_AREA');\n $scope.areaId = null;\n $scope.projectId = null;\n $scope.assetId = null;\n }\n }\n });\n } else {\n if($scope.areas.length > 0){\n $scope.updateArea($scope.areas[0]);\n } else {\n $scope.areaErrorMessage = $translate.instant('COMMON_NO_AREA');\n $scope.areaId = null;\n $scope.projectId = null;\n $scope.assetId = null;\n }\n }\n } else if(type === 'project'){\n $scope.typeSelected = type;\n if(!$scope.projects){ \n projectService().getActiveProjects().then(function (projects) {\n $scope.projects = projects;\n if(!$scope.projectId){\n if($scope.projects.length > 0){\n $scope.updateProject($scope.projects[0]);\n } else {\n $scope.projectErrorMessage = $translate.instant('COMMON_NO_PROJECT');\n $scope.areaId = null;\n $scope.projectId = null;\n $scope.assetId = null;\n }\n }\n });\n } else {\n if($scope.projects.length > 0){\n $scope.updateProject($scope.projects[0]);\n } else {\n $scope.projectErrorMessage = $translate.instant('COMMON_NO_PROJECT');\n $scope.areaId = null;\n $scope.projectId = null;\n $scope.assetId = null;\n }\n }\n } else {\n $scope.typeSelected = type;\n if(!$scope.assets){ \n assetService.getAllAssets().then(function (assets) {\n $scope.assets = assets;\n if(!$scope.assetId){\n if($scope.assets.length > 0){\n $scope.updateAsset($scope.assets[0]);\n } else {\n $scope.assetErrorMessage = $translate.instant('COMMON_NO_GROUP');\n $scope.areaId = null;\n $scope.projectId = null;\n $scope.assetId = null;\n }\n }\n });\n } else {\n if($scope.assets.length > 0){\n $scope.updateAsset($scope.assets[0]);\n } else {\n $scope.assetErrorMessage = $translate.instant('COMMON_NO_GROUP');\n $scope.areaId = null;\n $scope.projectId = null;\n $scope.assetId = null;\n }\n }\n }\n }\n\n\n $scope.loadAssets = function(){\n if(!$scope.assets){ \n assetService.getAllAssets().then(function (assets) {\n $scope.assets = assets;\n if(!$scope.assetId){\n if($scope.assets.length > 0){\n $scope.updateAsset($scope.assets[0]);\n } else {\n $scope.assetErrorMessage = $translate.instant('COMMON_NO_GROUP');\n $scope.areaId = null;\n $scope.projectId = null;\n $scope.assetId = null;\n }\n }\n });\n } else {\n if(!$scope.assetId){\n if($scope.assets.length > 0){\n $scope.updateAsset($scope.assets[0]);\n } else {\n $scope.assetErrorMessage = $translate.instant('COMMON_NO_GROUP'); \n $scope.areaId = null;\n $scope.projectId = null;\n $scope.assetId = null;\n }\n }\n }\n }\n $scope.loadAreas = function(){\n if(!$scope.areas){ \n areaService().getList(true).then(function (areas) {\n $scope.areas = areas;\n if(!$scope.areaId){\n if($scope.areas.length > 0){\n $scope.updateArea($scope.areas[0]);\n } else {\n $scope.areaErrorMessage = $translate.instant('COMMON_NO_AREA');\n $scope.areaId = null;\n $scope.projectId = null;\n $scope.assetId = null;\n }\n }\n });\n } else {\n if(!$scope.areaId){\n if($scope.areas.length > 0){\n $scope.updateArea($scope.areas[0]);\n } else {\n $scope.areaErrorMessage = $translate.instant('COMMON_NO_AREA');\n $scope.areaId = null;\n $scope.projectId = null;\n $scope.assetId = null;\n }\n }\n }\n }\n\n $scope.loadDeviationTypes = function(){\n if(!$scope.deviationTypes){ \n deviationService().getAllDeviationTypes().then(function(types) {\n $scope.deviationTypes = types;\n if(!$scope.deviationTypeId){\n if($scope.deviationTypes.length > 0){\n $scope.updateDeviationType($scope.deviationTypes[0]);\n } else {\n $scope.deviationTypeErrorMessage = $translate.instant('DEVIATION_NO_DEVIATION_TYPES');\n }\n } else {\n var type = $filter('filter')($scope.deviationTypes, { id: $scope.deviationTypeId }, true)[0];\n if(type){\n $scope.updateDeviationType(type);\n } \n }\n });\n } else {\n if(!$scope.deviationTypeId){\n if($scope.deviationTypes.length > 0){\n $scope.updateDeviationType($scope.deviationTypes[0]);\n } else {\n $scope.deviationTypeErrorMessage = $translate.instant('DEVIATION_NO_DEVIATION_TYPES');\n }\n }\n }\n }\n\n\n \n\n $scope.loadProjects = function(){\n if(!$scope.projects){ \n projectService().getActiveProjects().then(function (projects) {\n $scope.projects = projects;\n if(!$scope.projectId){\n if($scope.projects.length > 0){\n $scope.updateProject($scope.projects[0]);\n } else {\n $scope.projectErrorMessage = $translate.instant('COMMON_NO_PROJECT');\n $scope.areaId = null;\n $scope.projectId = null;\n $scope.assetId = null;\n }\n }\n });\n } else {\n if(!$scope.projectId){\n if($scope.projects.length > 0){\n $scope.updateProject($scope.projects[0]);\n } else {\n $scope.projectErrorMessage = $translate.instant('COMMON_NO_PROJECT');\n $scope.areaId = null;\n $scope.projectId = null;\n $scope.assetId = null;\n }\n }\n }\n }\n $scope.setRegistration = function (value) {\n $scope.registration = value;\n if(value == 'edit'){\n $scope.steps[1].show = true;\n $scope.loadAssets();\n } else if(value == 'readonlywithfilters'){\n if(!$scope.filters) $scope.filters = [];\n getDeviationFilterDatasource();\n $scope.steps[1].show = false;\n $scope.readonlywithfilters();\n } else {\n $scope.steps[1].show = false;\n $scope.all();\n } \n };\n\n $scope.updateDeviationType = function (type){\n $scope.deviationTypeId = type.id;\n $scope.deviationTypeTitle = type.title;\n };\n\n $scope.updateArea = function (area){\n $scope.areaId = area.id;\n $scope.projectId = null;\n $scope.assetId = null;\n $scope.typeSelected = 'area';\n $scope.identificationName = area.name;\n $scope.registration = 'edit';\n //$scope.editable = true;\n };\n\n $scope.updateAsset = function (asset){\n $scope.areaId = null;\n $scope.projectId = null;\n $scope.assetId = asset.id;\n $scope.typeSelected = 'asset';\n $scope.identificationName = asset.name;\n $scope.registration = 'edit';\n //$scope.editable = true;\n };\n\n $scope.readonlywithfilters = function(){\n $scope.areaId = null;\n $scope.projectId = null;\n $scope.assetId = null;\n $scope.registration = 'readonlywithfilters';\n //$scope.editable = false;\n $scope.typeSelected = 'filter';\n $scope.identificationName = $translate.instant('COMMON_FILTER');\n }\n $scope.all = function (){\n $scope.areaId = null;\n $scope.projectId = null;\n $scope.assetId = null;\n $scope.registration = 'readonly';\n //$scope.editable = false;\n $scope.typeSelected = 'all';\n $scope.identificationName = $translate.instant('COMMON_ALL');\n };\n\n $scope.updateProject = function (project){\n $scope.areaId = null;\n $scope.assetId = null;\n $scope.projectId = project.id;\n $scope.typeSelected = 'project';\n $scope.identificationName = project.name;\n $scope.registration = 'edit';\n //$scope.editable = true;\n };\n\n function checkShow(availableitem, validItems) {\n var matching = $filter('filter')(validItems, { value: availableitem.value }, true);\n if ( matching && matching.length > 0) {\n availableitem.show = true;\n availableitem.label = matching[0].label;\n }\n }\n\n function resetValueLabels(){\n $scope.availablevaluelabels = [\n { value: 0, label: '', show:true },\n { value: 1, label: '', show:true },\n { value: 2, label: '', show:true },\n { value: 3, label: '', show:true },\n { value: 4, label: '', show:true }\n ];\n }\n\n $scope.setManual = function () {\n if($scope.firstdecision != \"manual\") resetValueLabels();\n $scope.firstdecision = \"manual\";\n $scope.registration = \"edit\";\n $scope.steps[1].show = true;\n $scope.steps[2].show = false;\n $scope.loadAssets(); \n };\n\n function resetFilters(){ \n $scope.filters = null;\n }\n\n $scope.setDeviation = function(){\n resetFilters();\n $scope.firstdecision = \"deviation\";\n $scope.registration = \"edit\";\n $scope.steps[1].show = false;\n $scope.steps[2].show = false;\n $scope.loadDeviationTypes();\n $scope.loadAssets(); \n }\n\n $scope.selectDataSource = function () {\n $scope.firstdecision = \"datasource\";\n $scope.registration = \"readonly\";\n $scope.steps[1].show = false;\n $scope.steps[2].show = true;\n var hasDataSerie = false;\n if ($scope.dataSource) {\n hasDataSerie = true;\n }\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'dataSourceSingleSelector.html',\n controller: 'dataSourceSingleSelector',\n windowClass: 'newdeviation-modal-window',\n resolve: {\n hasDataSerie: function () {\n return hasDataSerie;\n },\n dataSource: function () {\n return $scope.dataSource;\n },\n filters: function () {\n return $scope.filters;\n },\n withTarget: function () {\n return false;\n },\n type: function () {\n return 'DAY';\n },\n externalOnly: function () {\n return \"limitedInternal\";\n }\n }\n });\n\n modalInstance.result.then(function (result) {\n $scope.dataSource = result.dataSource;\n $scope.filters = result.filters;\n if(!hasDataSerie || !$scope.dataSource.targets){\n var defaulttargets = [\n {colorStyleClass: 'greencross-green',\n operator: { dbCode: \"<=\", html: \"<=\" },\n targetValue: 0},\n {colorStyleClass: 'greencross-yellow',\n operator: { dbCode: \"<=\", html: \">=\" },\n targetValue: 2},\n {colorStyleClass: 'greencross-red',\n operator: { dbCode: \">\", html: \">\" },\n targetValue: 2}\n ];\n $scope.dataSource.targets = defaulttargets; \n }\n var matching = $filter('filter')($scope.steps, { id: 'ADMIN_DATA_DATASOURCE_TARGETS' }, true);\n if (matching.length > 0) {\n $scope.currentStep = matching[0];\n }\n });\n };\n\n $scope.filterChangedHandler = function (filters) {\n $scope.filters = filters; \n };\n\n function getDeviationFilterDatasource(){\n var deviationGroupElements = [\n {\n label: $translate.instant('COMMON_ASSET'),\n sourceColumn: \"assetId\",\n type: \"asset\"\n },\n {\n label: $translate.instant('COMMON_AREA'),\n sourceColumn: \"areaId\",\n type: \"area\"\n }, \n ];\n \n if($scope.hasProjectModule){\n var project = {\n label: $translate.instant('PROJECT_PROJECT'),\n sourceColumn: \"projectId\",\n type: \"project\"\n };\n deviationGroupElements.push(project);\n }\n var deviationNew = {\n id: \"DeviationNew\",\n title: $translate.instant('DEVIATION_NEW_DEVIATIONS'),\n description: $translate.instant('DASHBOARD_DEVIATION_NEW_DESC'),\n valueElement: {\n unit: $translate.instant('COMMON_NUMBER'),\n label: $translate.instant('COMMON_NUMBER')\n },\n objectSource: 'internal',\n ownerUserDisplayName: 'DigiLEAN',\n elements: deviationGroupElements\n };\n $scope.filterDatasource = deviationNew;\n }\n\n $scope.ok = function () {\n var validItems = $filter('filter')($scope.availablevaluelabels, { show: true }, true);\n if (validItems.length > 0) {\n $scope.settings.valuelabels = validItems;\n } else {\n $scope.settings.valuelabels = null; //TODO sjekk at denne ikke ødelegger og setter feil show-status logikk\n }\n\n $scope.settings.areaId = $scope.areaId\n $scope.settings.projectId = $scope.projectId;\n $scope.settings.assetId = $scope.assetId;\n if($scope.registration == 'readonlywithfilters'){\n $scope.dataSource = null;\n $scope.identificationName = \"\";\n // Normally filters will have values\n } else if($scope.firstdecision != 'datasource'){\n $scope.dataSource = null;\n $scope.filters = null;\n }\n if($scope.dataSource){ \n $scope.identificationName = \"\";\n }\n else if($scope.settings.areaId == null && $scope.settings.projectId == null && $scope.settings.assetId == null){\n $scope.all();\n }\n $scope.settings.formula = $scope.formula;\n $scope.settings.dataSource = $scope.dataSource;\n $scope.settings.filters = $scope.filters;\n $scope.settings.identificationName = $scope.identificationName;\n $scope.settings.typeVariant = $scope.typeVariant;\n $scope.settings.typeSelected = $scope.typeSelected;\n \n \n if($scope.firstdecision == 'deviation'){\n $scope.settings.deviationTypeId = $scope.deviationTypeId;\n } else {\n $scope.settings.deviationTypeId = null;\n }\n $uibModalInstance.close($scope.settings);\n };\n\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n \n $scope.updateVariantType = function(variant){\n $scope.typeVariant = variant.type;\n if($scope.typeVariant == $scope.visualizationType){\n $scope.typeVariant = null;\n } \n };\n\n $scope.getRelevantVisualizationTypes = function(){\n if($scope.visualizationTypes) return;\n qualityService().getVisualizationTypeVariants($scope.visualizationType).then(function(result) {\n var variants = result;\n if($scope.visualizationType == 'DYNAMIC'){\n var standardTypes = qualityService().getStandardVisualizationTypes();\n $scope.visualizationTypes = standardTypes;\n if(variants){\n for(var i=0; i {\n if (!name) throw null;\n if ($scope.visualizationType == \"DYNAMIC\"){\n $scope.typeVariant = \"DYNAMIC-\" + name;\n } else {\n $scope.typeVariant = name;\n } \n })\n }); \n\n };\n\n }]);","import * as assetService from \"@common/services/assetService\"\n\nangular\n .module('DigiLean')\n .controller(\"greencrossStatusModalController\", ['$scope', '$uibModalInstance', '$filter', 'areaService', 'projectService','qualityService', 'timePeriod','visualizationType','filters',\n function ($scope, $uibModalInstance, $filter, areaService, projectService, qualityService, timePeriod, visualizationType, filters) {\n\n $scope.resultList = [];\n\n qualityService().getAllStatusValuesForPeriod(visualizationType, timePeriod, filters).then(function (result) {\n $scope.resultList = result;\n projectService().getActiveProjects().then(function (projects) {\n $scope.projects = projects;\n areaService().getList(true).then(function (areas) {\n $scope.areas = areas;\n assetService.getAllAssets().then(function (assets) {\n $scope.assets = assets;\n for(var i=0; i< $scope.resultList.length; i++){\n if($scope.resultList[i].assetId){\n $scope.resultList[i].asset = getAssetName($scope.resultList[i].assetId);\n } else if($scope.resultList[i].projectId){\n $scope.resultList[i].projectName = getProjectName($scope.resultList[i].projectId);\n } else {\n $scope.resultList[i].area = getArea($scope.resultList[i].areaId);\n }\n }\n });\n });\n });\n \n });\n\n \n\n projectService().getActiveProjects().then(function (projects) {\n $scope.projects = projects;\n });\n\n function getAssetName (assetId) {\n var exist = $filter('filter')($scope.assets, { id: assetId }, true);\n if (exist.length > 0) {\n return exist[0].name;\n } else return \"\";\n }\n function getProjectName (projectId) {\n var exist = $filter('filter')($scope.projects, { id: projectId }, true);\n if (exist.length > 0) {\n return exist[0].name;\n } else return \"\";\n }\n\n function getArea(areaId) {\n var exist = $filter('filter')($scope.areas, { id: areaId }, true);\n if (exist.length > 0) {\n return exist[0].name;\n } else return \"\";\n }\n \n\n $scope.close = function () {\n $uibModalInstance.dismiss('cancel');\n }\n\n \n }]);","import { canEdit } from \"@common/services/boardService\";\n\nvar DigiLean = angular.module('DigiLean');\nDigiLean.directive(\"dailyKpiDate\", ['$filter', 'qualityService', 'navigationService', '$uibModal',\n function ($filter, qualityService, navigationService, $uibModal) {\n return {\n templateUrl: 'daily-kpi-date.html',\n restrict: 'E',\n scope: {\n 'editable': '=',\n 'settings': '<',\n 'areaId': '<',\n 'projectId': '<',\n 'visualizationType': '<',\n 'deviationTypeId': '<',\n 'dateOfMonth': '<',\n 'month': '<',\n 'year': '<',\n 'value': '<',\n 'cssClass': '@?',\n 'assetId': '=',\n 'userAccess': '<',\n },\n link: function (scope, elem, attrs) {\n\n scope.associatedWithDeviationType = false;\n scope.label1 = '';\n scope.label2 = '';\n scope.label3 = '';\n scope.label4 = '';\n\n scope.canEdit = false;\n \n scope.$watch('userAccess', function (userAccess) {\n scope.canEdit = userAccess.isAdmin || userAccess.assetRole == \"Member\" || userAccess.assetRole == \"Owner\";\n });\n\n function getVisualizationTypeIdentificator(){\n if(scope.typeVariant){\n if(scope.visualizationType.toUpperCase() == 'DYNAMIC'){\n return scope.typeVariant;\n } else return scope.visualizationType + \"-\" + scope.typeVariant;\n } else return scope.visualizationType\n }\n\n scope.setStatusValue = function (newValue) {\n scope.value = newValue;\n var date = new Date(Date.UTC(scope.year, scope.month, scope.dateOfMonth, 12, 0, 0, 0));\n\n var visualizationTypeId = getVisualizationTypeIdentificator();\n var status = {\n status: scope.value,\n date: date,\n areaId: scope.areaId,\n projectId: scope.projectId,\n assetId: scope.assetId,\n visualizationType: visualizationTypeId\n };\n qualityService().updateDateStatus(status).then(function (savedStatus) {\n\n });\n\n }\n\n scope.$watch(\"settings\", function () {\n if (!scope.settings) return;\n scope.label1 = '';\n scope.label2 = '';\n scope.label3 = '';\n scope.label4 = '';\n if (scope.settings.valuelabels) { \n scope.hide1 = true;\n scope.hide2 = true;\n scope.hide3 = true;\n scope.hide4 = true;\n for (var k = 0; k < scope.settings.valuelabels.length; k++) { \n if (scope.settings.valuelabels[k].value === 1) {\n scope.label1 = scope.settings.valuelabels[k].label;\n scope.hide1 = false;\n } else if (scope.settings.valuelabels[k].value === 2) {\n scope.label2 = scope.settings.valuelabels[k].label;\n scope.hide2 = false;\n } else if (scope.settings.valuelabels[k].value === 3) {\n scope.label3 = scope.settings.valuelabels[k].label;\n scope.hide3 = false;\n } else if (scope.settings.valuelabels[k].value === 4) {\n scope.label4 = scope.settings.valuelabels[k].label;\n scope.hide4 = false;\n }\n }\n }\n if(scope.settings.dataSource){\n scope.dataSource = scope.settings.dataSource;\n scope.filters = null; \n }\n if(scope.settings.filters){\n scope.filters = scope.settings.filters;\n } else if (scope.filters){ //filter has been changed from a filter value to no filter\n scope.filters = null;\n }\n if(scope.settings.typeVariant){\n scope.typeVariant = scope.settings.typeVariant;\n }\n });\n\n scope.$watch(\"deviationTypeId\", function () {\n scope.associatedWithDeviationType = false;\n if (!scope.deviationTypeId) return;\n scope.associatedWithDeviationType = true;\n });\n\n scope.createNewDeviation = function (severity) {\n var localDate = new Date(scope.year, scope.month, scope.dateOfMonth);\n var date = moment(localDate).utc().toDate();\n var settings = {\n assetId: scope.assetId,\n severity: severity,\n deviationTypeId: scope.deviationTypeId,\n incidentDate: date\n };\n $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'newDeviation.html',\n controller: 'newDeviationController',\n windowClass: 'newdeviation-modal-window',\n resolve: {\n settings: function () {\n return settings;\n }\n }\n });\n };\n\n\n scope.getRegistrations = function () {\n var date = new Date(scope.year, scope.month, scope.dateOfMonth);\n var startDate = moment(date).utc();\n var endDate = moment(startDate).add(23, 'hours').add(59, 'minutes').add(59, 'seconds');\n\n var timePeriod = {\n from: startDate.toDate().toJSON(),\n to: endDate.toDate().toJSON()\n };\n\n if(scope.dataSource){\n if( scope.dataSource.id === 'DeviationNew' ||\n scope.dataSource.id === 'DeviationCompleted')\n {\n var options = {\n dataSource: scope.dataSource,\n filters: scope.filters,\n timePeriod: timePeriod,\n }\n showDeviationsForInternalSources(options);\n }\n else if(scope.dataSource.id === 'ImprovementSuggestionNew' || \n scope.dataSource.id === 'ImprovementSuggestionCompleted')\n {\n var options = {\n dataSource: scope.dataSource,\n filters: scope.filters,\n timePeriod: timePeriod,\n }\n showImprovementsForInternalSources(options);\n }\n else \n {\n var datasourceoptions = {\n dataSource: scope.dataSource,\n filters: scope.filters,\n timePeriod: timePeriod,\n canEdit: scope.canEdit\n }\n showDatasourceValues(datasourceoptions);\n }\n \n }else if (scope.deviationTypeId) {\n var options = {\n assetId: scope.assetId,\n deviationTypeId: scope.deviationTypeId,\n timePeriod: timePeriod\n }\n showDeviations(options);\n } else {\n var visualizationTypeId = getVisualizationTypeIdentificator();\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'greencrossStatusForm.html',\n controller: 'greencrossStatusModalController',\n resolve: {\n timePeriod: function () {\n return timePeriod;\n },\n visualizationType: function () {\n return visualizationTypeId;\n },\n filters: function () {\n return scope.filters;\n }\n }\n });\n }\n }\n\n function showDatasourceValues(options) {\n\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n templateUrl: 'datavaluesListForm.html',\n controller: 'datavaluesListModalController',\n windowClass: 'fullDeviation-modal-window',\n resolve: {\n options: function () {\n return options;\n }\n }\n });\n }\n\n function showDeviations(deviationOptions) {\n\n var currentfilter = [];\n if(scope.filters && scope.filters.length > 0){\n currentfilter = scope.filters;\n\n } else if (deviationOptions.assetId) {\n currentfilter.push({\n sourceColumn: \"AssetId\",\n operator: \"InList\",\n items: [deviationOptions.assetId]\n })\n }\n currentfilter.push({\n sourceColumn: \"DeviationTypeId\",\n operator: \"InList\",\n items: [deviationOptions.deviationTypeId]\n });\n var order = [{\n sourceColumn: \"Status\",\n SortDirection: \"ASC\"\n }, {\n sourceColumn: \"Severity\",\n SortDirection: \"DESC\"\n }];\n var options = {\n filters: currentfilter,\n sortOrders: order,\n timePeriodColumn: 'IncidentDate',\n timePeriod: deviationOptions.timePeriod\n };\n\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n templateUrl: 'deviationListForm.html',\n controller: 'deviationListModalController',\n windowClass: 'fullDeviation-modal-window',\n resolve: {\n options: function () {\n return options;\n }\n }\n });\n }\n\n\n\n function showDeviationsForInternalSources(deviationOptions) {\n\n var currentfilter = [];\n if(scope.filters && scope.filters.length > 0){\n currentfilter = scope.filters;\n }\n var order = [{\n sourceColumn: \"Status\",\n SortDirection: \"ASC\"\n }, {\n sourceColumn: \"Severity\",\n SortDirection: \"DESC\"\n }];\n\n var timePeriodColumnForDeviation;\n if(deviationOptions.dataSource.id === 'DeviationCompleted')\n {\n timePeriodColumnForDeviation = 'StatusImplementedDate';\n }\n else\n {\n timePeriodColumnForDeviation = 'IncidentDate';\n }\n\n var options = {\n filters: currentfilter,\n sortOrders: order,\n timePeriodColumn: timePeriodColumnForDeviation,\n timePeriod: deviationOptions.timePeriod\n };\n\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n templateUrl: 'deviationListForm.html',\n controller: 'deviationListModalController',\n windowClass: 'fullDeviation-modal-window',\n resolve: {\n options: function () {\n return options;\n }\n }\n });\n } \n function showImprovementsForInternalSources(improvementOptions) {\n\n var currentfilter = [];\n if(scope.filters && scope.filters.length > 0){\n currentfilter = scope.filters;\n }\n var order = [{\n sourceColumn: \"Status\",\n SortDirection: \"ASC\"\n }, {\n sourceColumn: \"PriorityStatus\",\n SortDirection: \"DESC\"\n }];\n\n var timePeriodColumnForDeviation;\n if(improvementOptions.dataSource.id === 'ImprovementSuggestionCompleted')\n {\n timePeriodColumnForDeviation = 'StatusImplementedDate';\n }\n else\n {\n timePeriodColumnForDeviation = 'SuggestionDate';\n }\n\n var options = {\n filters: currentfilter,\n sortOrders: order,\n timePeriodColumn: timePeriodColumnForDeviation,\n timePeriod: improvementOptions.timePeriod\n };\n\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n templateUrl: 'suggestionListForm.html',\n controller: 'suggestionListModalController',\n windowClass: 'fullDeviation-modal-window',\n resolve: {\n options: function () {\n return options;\n }\n }\n });\n }\n }\n\n }\n }]);\n","import { getDefaultAppStyle, getDefaultAppTheme, calcDefaultAppFontSize } from \"@common/components/dashboard/designer/common/appStyleService\"\nimport \"./livetrend.css\"\nimport * as staticFileService from \"@common/shared/staticFileService\"\n\nangular\n .module('DigiLean')\n .directive(\"liveTrend\", ['dataFilterService', 'dataService', '$uibModal', 'orderByFilter',\n function (dataFilterService, dataService, $uibModal, orderByFilter) {\n return {\n templateUrl: 'livetrend.html',\n restrict: 'E',\n scope: {\n 'isAdminMode': '=',\n 'settings': '=',\n 'settingsChangeHandler': '&',\n 'layoutFactor': '<'\n },\n link: function (scope, elem, attrs) {\n scope.theme = getDefaultAppTheme()\n scope.themeChangedEvent = function($event) {\n scope.theme = $event.detail\n scope.updateSettings()\n }\n \n scope.appStyle = getDefaultAppStyle()\n function calcStyles() {\n scope.appStyle[\"font-size\"] = calcDefaultAppFontSize(scope.layoutFactor)\n }\n calcStyles()\n scope.$watch('layoutFactor', calcStyles)\n \n scope.title = \"\"\n scope.titleChangedEvent = function($event) {\n scope.title = $event.detail\n scope.updateSettings()\n }\n\n scope.timeframe = \"day\";\n scope.filters = [];\n\n\n // Dashboard Settings handling\n scope.$watch('settings', function (settings) {\n // apply\n if (settings) {\n scope.dataSource = settings.dataSource;\n if (settings.timeframe) {\n scope.timeframe = settings.timeframe;\n }\n if (settings.filters) {\n scope.filters = settings.filters;\n }\n if (settings.theme) {\n scope.theme = settings.theme;\n }\n drawChart(scope.dataSource);\n loadValuesForDataSource(scope.dataSource.id);\n }\n });\n\n scope.imageUrl = staticFileService.image('livetrend.jpg');\n scope.currentValue = null;\n scope.previousValue = null;\n scope.valueChange = {\n change: 0,\n isPositive: false\n }\n\n scope.$on(\"widget-resized\", function (event, args) {\n resizeChart();\n });\n\n // Subscribe to component related event\n scope.subscribe(\"DataValueAdded\", function (value) {\n if (!scope.dataSource) return;\n if (scope.dataSource.id === value.dataSourceId && dataFilterService().matchesFilters(value, scope.filters)) {\n updateValue(value, true);\n }\n });\n\n scope.subscribe(\"DataValueUpdated\", function (dataValue) {\n if (dataValue.dataSourceId === scope.dataSource.id) {\n loadValuesForDataSource(scope.dataSource.id);\n }\n });\n\n scope.updateSettings = function () {\n var componentSettings = {\n timeframe: scope.timeframe,\n dataSource: scope.dataSource,\n theme: scope.theme\n };\n scope.settingsChangeHandler({ settings: componentSettings });\n }\n scope.updateSettings = function () {\n var componentSettings = {\n title: scope.title,\n timeframe: scope.timeframe,\n dataSource: scope.dataSource,\n filters: scope.filters,\n theme: scope.theme\n };\n scope.settingsChangeHandler({ settings: componentSettings });\n };\n\n scope.selectDataSource = function () {\n var hasDataSerie = false;\n if (scope.dataSource) {\n hasDataSerie = true;\n }\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'dataSourceSingleSelector.html',\n controller: 'dataSourceSingleSelector',\n resolve: {\n hasDataSerie: function () {\n return hasDataSerie;\n },\n dataSource: function () {\n return scope.dataSource;\n },\n filters: function () {\n return scope.filters;\n },\n withTarget: function () {\n return false;\n },\n type: function () {\n return null;\n },\n externalOnly: function () {\n return true;\n }\n\n }\n });\n\n modalInstance.result.then(function (result) {\n if (result.dataSource && (hasDataSerie == false || scope.dataSource.id != result.dataSource.id)) {\n scope.title = result.dataSource.title;\n }\n scope.dataSource = result.dataSource;\n scope.filters = result.filters;\n scope.updateSettings();\n drawChart(scope.dataSource);\n loadValuesForDataSource(scope.dataSource.id);\n });\n };\n\n scope.changeTheme = function (theme) {\n scope.theme = theme;\n scope.updateSettings();\n }\n\n var loadValuesForDataSource = function (dataSourceId) {\n var options = {\n numberOfValues: 50,\n sortOrder: \"DESC\",\n filters: scope.filters\n }\n dataService().getLatestValues(dataSourceId, options).then(function (values) {\n if (values) {\n // Make sure values are sorted by date asc\n values = orderByFilter(values, function (value) {\n return moment(value.valueDate).valueOf();\n }, false);\n drawValues(values);\n if (values.length > 0) {\n updateValue(values[values.length - 1], false);\n }\n }\n });\n }\n\n // element to update\n var updateValue = function (newValue, shouldTrendBeUpdated) {\n scope.previousValue = scope.currentValue;\n scope.currentValue = newValue;\n if (scope.previousValue) {\n var change = scope.currentValue.value - scope.previousValue.value;\n if (change > 0) change = \"+\" + change;\n var isPostiveChange = scope.currentValue.value > scope.previousValue.value;\n var animateClass = \"animated bounce\";\n if (!isPostiveChange) animateClass = \"animated headShake\";\n scope.valueChange = {\n change: change,\n isPositive: isPostiveChange,\n animateClass: animateClass\n }\n setTimeout(function () { scope.valueChange.animateClass = \"\" }, 900);\n }\n if (shouldTrendBeUpdated) {\n updateTrend(newValue);\n }\n else {\n setTimeout(function () {\n resizeChart()\n }, 900)\n }\n }\n\n\n\n let chart;\n var updateTrend = function (newDataValue) {\n var series = chart.series[0],\n shift = series.data.length > 200; // shift if the series is longer than 200\n var point = [moment(newDataValue.valueDate).valueOf(), newDataValue.value];\n // add the point\n chart.series[0].addPoint(point, true, shift);\n }\n\n var drawValues = function (values) {\n\n // map dataset\n var data = values.map(function (dataValue) {\n var valueDate = moment(dataValue.valueDate).valueOf()\n return [valueDate, dataValue.value]\n })\n chart.series[0].setData(data)\n }\n\n function drawChart(dataSource) {\n var renderElement = $(elem).find(\".livetrendChart\")[0];\n chart = new Highcharts.Chart({\n chart: {\n renderTo: renderElement,\n defaultSeriesType: 'spline',\n style: {\n fontSize: \"0.9em\"\n }\n },\n title: {\n text: ''\n },\n credits: {\n enabled: false //remove link to highcharts.com\n },\n exporting: {\n enabled: false //remove context menu\n },\n xAxis: {\n type: 'datetime',\n tickPixelInterval: 150,\n maxZoom: 20 * 1000,\n labels: {\n style: {\n fontSize: \"0.9em\"\n }\n }\n },\n yAxis: {\n minPadding: 0.2,\n maxPadding: 0.2,\n title: {\n text: ''\n },\n labels: {\n style: {\n fontSize: \"0.9em\"\n }\n }\n },\n series: [{\n name: dataSource.title,\n findNearestPointBy: 'xy',\n data: []\n }]\n });\n resizeChart();\n };\n \n function resizeChart() {\n if (!elem) return\n let appEl = elem[0]\n\n let width = appEl.offsetWidth\n let height = appEl.offsetHeight\n\n let headerEl = appEl.querySelector(\".app-header\")\n if (headerEl)\n height = height - headerEl.offsetHeight\n\n let liveTrendValueEl = appEl.querySelector(\".live-trend-value\")\n if (liveTrendValueEl)\n height = height - liveTrendValueEl.offsetHeight\n \n var chartContainer = $(elem).find(\".highcharts-container\").parent()\n if (chartContainer.length === 0) return\n\n if (chart)\n chart.setSize(width, height, true)\n }\n }\n }\n }]);\n","import { getDefaultAppStyle, getDefaultAppTheme, calcDefaultAppFontSize } from \"@common/components/dashboard/designer/common/appStyleService\"\nimport * as staticFileService from \"@common/shared/staticFileService\"\nimport * as timeService from \"@common/services/timeService\"\n\nangular\n.module('DigiLean')\n.directive(\"multiChart\", ['$uibModal','dataService', 'debounce',\n function ($uibModal, dataService, debounce) {\n return {\n templateUrl: 'multichart.html',\n restrict: 'E',\n scope: {\n 'isAdminMode': '=',\n 'settings': '=',\n 'settingsChangeHandler': '&',\n 'globalTimePeriod': '@',\n 'layoutFactor': '<'\n },\n link: function (scope, elem, attrs) {\n scope.theme = getDefaultAppTheme()\n scope.themeChangedEvent = function($event) {\n scope.theme = $event.detail\n scope.updateSettings()\n }\n \n scope.appStyle = getDefaultAppStyle()\n function calcStyles() {\n scope.appStyle[\"font-size\"] = calcDefaultAppFontSize(scope.layoutFactor)\n }\n calcStyles()\n scope.$watch('layoutFactor', calcStyles)\n\n scope.title = \"\";\n scope.titleChangedEvent = function($event) {\n scope.title = $event.detail\n scope.updateSettings()\n }\n scope.imageUrl = staticFileService.image('multichart.jpg');\n scope.seriesData = [];\n scope.yAxisPlotLines = [];\n scope.xAxisPlotLines = [];\n scope.timeframe = \"\";\n var showNavigation = false;\n var showRangeSelector = false;\n var selectedGrouping = \"day\";\n var minY = null;\n var maxY = null;\n\n\n scope.timePeriod = {\n period: {}\n };\n\n\n const timeSettings = {\n timeframe: \"year\",\n useDefaultTimeframes: true,\n timeframes:[],\n period: null,\n getTimePeriod: function() {\n return {\n useDefaultTimeframes : timeSettings.useDefaultTimeframes,\n timeframes : timeSettings.timeframes,\n timeframe: timeSettings.timeframe,\n period: timeSettings.period\n }\n },\n setTimePeriod : function(timeframe, period) {\n timeSettings.timeframe = timeframe;\n timeSettings.period = period;\n // debounce, to make sure not starting loading several timeframes.\n scope.options = {\n timePeriod: timeSettings.getTimePeriod()\n }\n }\n }\n scope.setTimePeriodDebounced = debounce(timeSettings.setTimePeriod, 100, false);\n // Default options\n scope.setTimePeriodDebounced(timeSettings.timeframe, timeSettings.period);\n \n // Dashboard Settings handling\n scope.$watch('settings', function (settings) {\n scope.settings = settings;\n // apply\n if (scope.settings) {\n if (scope.settings.dataSeries) {\n scope.dataSeries = scope.settings.dataSeries;\n }\n if (settings.timePeriod) {\n scope.setTimePeriodDebounced(settings.timePeriod.timeframe, settings.timePeriod.period);\n }\n if (scope.settings.title) {\n scope.title = scope.settings.title;\n }\n if (scope.settings.showNavigation) {\n showNavigation = scope.settings.showNavigation;\n }\n if (scope.settings.showRangeSelector) {\n showRangeSelector = scope.settings.showRangeSelector;\n }\n if (scope.settings.selectedGrouping) {\n selectedGrouping = scope.settings.selectedGrouping;\n }\n if(scope.settings.minY !== null || scope.settings.minY !== undefined){\n minY = scope.settings.minY;\n }\n if(scope.settings.maxY !== null || scope.settings.maxY !== undefined){\n maxY = scope.settings.maxY;\n }\n if (settings.theme) {\n scope.theme = settings.theme;\n }\n }\n if (!scope.dataSeries && scope.isAdminMode) {\n setTimeout(function() {\n scope.selectDefinition(); \n }, 200); \n }\n });\n\n // Subscribe to component related event\n scope.subscribe(\"DataValueAdded\", function (value) {\n if (dateInSelectedTimeFrame(value.valueDate)) {\n updateDataValue(value.dataSourceId);\n }\n });\n scope.subscribe(\"DataValueUpdated\", function (value) {\n if (dateInSelectedTimeFrame(value.valueDate)) {\n updateDataValue(value.dataSourceId);\n }\n });\n scope.subscribe(\"DataValueDeleted\", function (value) {\n if (dateInSelectedTimeFrame(value.valueDate)) {\n updateDataValue(value.dataSourceId);\n }\n });\n\n scope.changeTheme= function(theme){\n scope.theme = theme;\n scope.updateSettings();\n }\n\n function dateInSelectedTimeFrame(utcDate) {\n if (!scope.timePeriod) {\n return true;\n }\n if (moment(utcDate).isBefore(scope.timePeriod.period.from) ||\n moment(utcDate).isAfter(scope.timePeriod.period.to)) {\n return false;\n } else {\n return true;\n }\n }\n\n function updateDataValue(dataSourceId) {\n if (scope.dataSeries) {\n for (var s = 0; s < scope.dataSeries.length; s++) {\n var serie = scope.dataSeries[s];\n if (serie.datasource && serie.datasource.id == dataSourceId) {\n refreshData();\n return;\n }\n }\n }\n }\n\n scope.updateSettings = function () {\n var componentSettings = {\n title: scope.title,\n timePeriod: scope.timePeriod,\n dataSeries: scope.dataSeries,\n showNavigation: showNavigation,\n showRangeSelector: showRangeSelector,\n selectedGrouping: selectedGrouping,\n minY: minY,\n maxY: maxY,\n theme: scope.theme\n };\n scope.settingsChangeHandler({ settings: componentSettings });\n }\n\n /* This method will be called also when component is first initialized */\n scope.periodChangedHandler = function (timePeriod) {\n if (!timePeriod.timeframe) return;\n if (scope.timePeriod && scope.timePeriod.period.from === timePeriod.period.from && scope.timePeriod.period.to === timePeriod.period.to) return;\n scope.options.timePeriod = timePeriod;\n scope.timePeriod = timePeriod;\n refreshData();\n // if adminmode, then save settings\n if (scope.isAdminMode) {\n scope.updateSettings();\n }\n }\n\n function refreshData() {\n scope.seriesData = [];\n scope.yAxisPlotLines = [];\n scope.xAxisPlotLines = [];\n if (scope.dataSeries) {\n for (var s = 0; s < scope.dataSeries.length; s++) {\n var serie = scope.dataSeries[s];\n if (serie.manual) {\n setManualData(serie, s);\n }\n else {\n getValuesForSerie(serie, s);\n }\n }\n }\n }\n\n function setManualData(serie, order) {\n if (serie.axis === \"y\") {\n var element =\n {\n dashStyle: 'shortdash',\n label: {\n text: serie.name\n },\n value: serie.datavalue,\n width: 2,\n index: order,\n color: serie.graphcolor//'lightgreen',\n\n };\n scope.yAxisPlotLines.push(element);\n }\n if (serie.axis === \"x\") { // assume date value\n var valueDate = moment(serie.datavalue).valueOf();\n var element =\n {\n dashStyle: 'shortdash',\n label: {\n text: serie.name\n },\n value: valueDate,\n width: 2,\n zindex: 10,\n color: serie.graphcolor//'lightgreen'\n };\n scope.xAxisPlotLines.push(element);\n }\n }\n\n function getValuesForSerie(serie, order) {\n if (!scope.timePeriod || !serie.datasource) return;\n var options = {\n timeZone: timeService.getUserTimeZone(),\n timePeriod: scope.timePeriod.period,\n filters: serie.filters\n };\n dataService().getValuesForPeriod(serie.datasource.id, options).then(function (values) {\n if (values) {\n setupChartData(serie, values, order);\n drawChart();\n }\n });\n }\n\n function setupChartData(dataSerie, values, order) {\n var graphtype = dataSerie.graphtype;\n var label = dataSerie.name;\n var graphcolor = dataSerie.graphcolor;\n var data = [];\n var accumulatedValue = 0;\n\n angular.forEach(values, function (dataValue) {\n // Format date to HighCharts format\n var valueDate = moment(dataValue.valueDate).valueOf();\n \n if (dataSerie.accumulated) {\n accumulatedValue = accumulatedValue + dataValue.value;\n data.push([valueDate, accumulatedValue]);\n } else {\n data.push([valueDate, dataValue.value]);\n }\n });\n\n var element =\n {\n findNearestPointBy: 'xy',\n type: graphtype, //e.g. 'spline',\n name: label, //e.g. '# førstemøter booket',\n data: data,\n index: order,\n color: graphcolor //'lightgreen' \n };\n setGraphWidthBasedOnGraphtype(element, dataSerie);\n var grouping = null;\n\n if (dataSerie.accumulated) {\n grouping = getDataGrouping(\"high\");\n element.getExtremesFromAll = true;\n }else if(dataSerie.average){\n grouping = getDataGrouping(\"average\");\n } \n else {\n grouping = getDataGrouping(\"sum\");\n }\n if (grouping) {\n grouping.groupAll = true;\n element.dataGrouping = grouping;\n }\n scope.seriesData.push(element);\n }\n\n function setGraphWidthBasedOnGraphtype(element, dataSerie) {\n if (element.type === 'spline' || element.type === 'area') {\n if (dataSerie.width > 0) {\n element.lineWidth = dataSerie.width;\n }\n } else if (element.type === 'column') {\n if (dataSerie.width > 0) {\n element.lineWidth = dataSerie.width;\n element.pointWidth = dataSerie.width;\n }\n }\n }\n\n function getDataGrouping(approximation) {\n switch (selectedGrouping) {\n case \"day\":\n var data = {\n approximation: approximation,\n enabled: true,\n forced: true,\n units: [['day', [1]]]\n };\n return data;\n case \"week\":\n var data = {\n approximation: approximation,\n enabled: true,\n forced: true,\n units: [['week', [1]]]\n };\n return data;\n case \"month\":\n var data = {\n approximation: approximation,\n enabled: true,\n forced: true,\n units: [['month', [1]]]\n };\n return data;\n case \"year\":\n var data = {\n approximation: approximation,\n enabled: true,\n forced: true,\n units: [['year', null]]\n };\n return data;\n default:\n return null;\n }\n }\n\n /* Not able to execute this, where should it be moved?\n Highcharts.dateFormats.W = function (timestamp) {\n var date = new Date(timestamp),\n day = date.getUTCDay() === 0 ? 7 : date.getUTCDay(),\n dayNumber;\n \n date.setDate(date.getUTCDate() + 4 - day);\n dayNumber = Math.floor((date.getTime() - new Date(date.getUTCFullYear(), 0, 1, -6)) / 86400000);\n \n return 1 + Math.floor(dayNumber / 7);\n };*/\n\n let currentChart = null;\n function drawChart() {\n if (currentChart) {\n currentChart.destroy();\n }\n var chartElement = $(elem).find(\".multichart\")[0];\n currentChart = Highstock.stockChart({\n chart: {\n renderTo: chartElement,\n zoomType: 'x',\n style: {\n fontSize: \"0.9em\"\n }\n },\n time: {\n useUTC: false\n },\n rangeSelector: {\n enabled: showRangeSelector\n },\n navigator: {\n enabled: showNavigation\n },\n scrollbar: {\n enabled: false\n },\n title: {\n text: ''\n },\n credits: {\n enabled: false\n }, exporting: {\n enabled: false //remove context menu\n },\n xAxis: {\n type: 'datetime',\n plotLines: scope.xAxisPlotLines,\n labels: {\n style: {\n fontSize: \"0.9em\"\n }\n }\n },\n yAxis: {\n title: {\n text: ''\n },\n min: minY,\n max: maxY,\n plotLines: scope.yAxisPlotLines,\n labels: {\n style: {\n fontSize: \"0.9em\"\n }\n }\n },\n legend: {\n enabled: true // graph description (color and description text per graph item)\n },/*\n tooltip: {\n shared: true,\n crosshairs: true\n },*/\n plotOptions: {\n column: {\n dataLabels: {\n enabled: true,\n style: {\n fontSize: \"0.9em\"\n },\n formatter: function() {\n var value = this.point.y;\n \n if (value % 1) {\n return Highcharts.numberFormat(value, 2);\n }\n return Highcharts.numberFormat(value, -1);\n }\n },\n },\n line: {\n dataLabels: {\n enabled: true\n },\n enableMouseTracking: false\n },\n area: {\n marker: {\n radius: 2\n },\n states: {\n hover: {\n lineWidth: 1\n }\n },\n threshold: null\n }\n },\n series: scope.seriesData\n });\n resizeChart();\n\n }\n\n // Select defintion to use.\n\n let selectDefinitionModalInstance = null\n scope.selectDefinition = function () {\n if (selectDefinitionModalInstance)\n return // prevent double dialog\n selectDefinitionModalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'dataseriesselectorForm.html',\n controller: 'dataseriesselectorModalController',\n windowClass: 'newdeviation-modal-window',\n resolve: {\n dataSeries: function () {\n return scope.dataSeries;\n }\n }\n });\n selectDefinitionModalInstance.result.then(function (dataSeries) {\n scope.dataSeries = dataSeries;\n scope.updateSettings();\n refreshData();\n }, ()=>{}).finally(() => {\n selectDefinitionModalInstance = null\n });\n };\n\n scope.selectConfiguration = function () {\n var config = {\n selectedGrouping: selectedGrouping,\n showNavigation: showNavigation,\n showRangeSelector: showRangeSelector,\n minY: minY,\n maxY: maxY\n }\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'graphConfiguration.html',\n controller: 'graphConfigurationController',\n windowClass: 'newdeviation-modal-window',\n resolve: {\n configuration: function () {\n return config;\n }\n }\n });\n\n modalInstance.result.then(function (configuration) {\n selectedGrouping = configuration.selectedGrouping;\n showNavigation = configuration.showNavigation;\n showRangeSelector = configuration.showRangeSelector;\n minY = configuration.minY;\n maxY = configuration.maxY;\n scope.updateSettings();\n refreshData();\n }, function(res){});\n };\n\n function resizeChart() {\n if (!elem) return\n let appEl = elem[0]\n\n let width = appEl.offsetWidth\n let height = appEl.offsetHeight\n\n let headerEl = appEl.querySelector(\".app-header\")\n if (headerEl)\n height = height - headerEl.offsetHeight\n\n // find with inside padding of graph-content\n let graphContent = appEl.querySelector(\".graph-content\")\n if (graphContent) {\n let graphContentInner = graphContent.querySelector(\".graph-content-inner\")\n if (graphContentInner)\n width = graphContentInner.offsetWidth\n }\n \n let chartContainer = $(elem).find(\".highcharts-container\").parent()\n if (chartContainer.length === 0) return\n\n if (currentChart)\n currentChart.setSize(width, height, true)\n }\n\n scope.$on(\"widget-resized\", function (event, args) {\n resizeChart();\n });\n\n }\n }\n }]);\n","import * as timeService from \"@common/services/timeService\"\nimport { getDefaultAppStyle, getDefaultAppTheme, calcDefaultAppFontSize } from \"@common/components/dashboard/designer/common/appStyleService\"\nimport * as staticFileService from \"@common/shared/staticFileService\"\n\nconst DigiLean = angular.module('DigiLean')\nDigiLean.directive(\"targetGraph\", ['$uibModal', '$translate', 'dataService', 'debounce',\n function ($uibModal, $translate, dataService, debounce) {\n return {\n templateUrl: 'targetgraph.html',\n restrict: 'E',\n scope: {\n 'isAdminMode': '<',\n 'settings': '<',\n 'settingsChangeHandler': '&',\n 'globalTimePeriod': '@',\n 'layoutFactor': '<'\n },\n link: function (scope, elem, attrs) {\n scope.theme = getDefaultAppTheme()\n\n scope.appStyle = getDefaultAppStyle()\n function calcStyles() {\n scope.appStyle[\"font-size\"] = calcDefaultAppFontSize(scope.layoutFactor)\n }\n calcStyles()\n scope.$watch('layoutFactor', calcStyles)\n \n scope.title = \"\";\n scope.titleChangedEvent = function($event) {\n scope.title = $event.detail\n scope.updateSettings()\n }\n scope.imageUrl = staticFileService.image('targetgraph.jpg');\n scope.seriesData = [];\n scope.yAxisPlotLines = [];\n scope.xAxisPlotLines = [];\n scope.decimals = 0;\n scope.showRegression = false;\n var minY = 0;\n \n var timeFrames = [ \n 'all', \n 'last3years', \n 'lastyear', \n 'thisyear',\n 'fiscalyear', \n 'YTD',\n 'last12mth', \n 'month', \n 'previousmonth', \n '30',\n 'previousisoweek',\n 'isoweek',\n 'day',\n 'number',\n 'custom' \n ];\n var timeSettings = {\n timeframe: \"thisyear\",\n timeframes: timeFrames,\n period: null,\n getTimePeriod: function () {\n return {\n useDefaultTimeframes: timeSettings.useDefaultTimeframes,\n timeframes: timeSettings.timeframes,\n timeframe: timeSettings.timeframe,\n period: timeSettings.period\n }\n },\n setTimePeriod: function (timeframe, period) {\n timeSettings.timeframe = timeframe;\n timeSettings.period = period;\n // debounce, to make sure not starting loading several timeframes.\n scope.options = {\n timePeriod: timeSettings.getTimePeriod()\n }\n }\n }\n scope.setTimePeriodDebounced = debounce(timeSettings.setTimePeriod, 100, false);\n // Default options\n scope.setTimePeriodDebounced(timeSettings.timeframe, timeSettings.period);\n\n // Dashboard Settings handling\n scope.$watch('settings', function (settings) {\n scope.settings = settings;\n // apply\n if (scope.settings) {\n scope.dataSource = scope.settings.dataSource;\n if (settings.timePeriod) {\n scope.setTimePeriodDebounced(settings.timePeriod.timeframe, settings.timePeriod.period);\n }\n if (scope.settings.title) {\n scope.title = scope.settings.title;\n }\n if (settings.filters) {\n scope.filters = settings.filters;\n }\n if (settings.decimals) {\n scope.decimals = settings.decimals;\n }\n if (settings.showRegression === true) {\n scope.showRegression = settings.showRegression;\n }\n if (settings.theme) {\n scope.theme = settings.theme;\n }\n } \n if (!scope.dataSource && scope.isAdminMode){\n setTimeout(function() {\n scope.selectDataSource();\n }, 200); \n }\n });\n\n // Subscribe to component related event\n scope.subscribe(\"DataValueAdded\", function (value) {\n if (!value) return;\n if(shouldDataBeRefreshed(value.dataSourceId, value.valueDate)) {\n refreshData();\n }\n });\n scope.subscribe(\"DataValueUpdated\", function (value) {\n if (!value) return;\n if(shouldDataBeRefreshed(value.dataSourceId, value.valueDate)) {\n refreshData();\n }\n });\n scope.subscribe(\"DataValueDeleted\", function (value) {\n if (!value) return;\n if(shouldDataBeRefreshed(value.dataSourceId, value.valueDate)) {\n refreshData();\n }\n });\n\n function shouldDataBeRefreshed(dataSourceId, valueDate){\n if (!scope.dataSource) return false;\n if (scope.dataSource.id === dataSourceId) {\n if (dateInSelectedTimeFrame(valueDate)) {\n return true;\n } \n } else if (scope.dataSource.targetDataSource && scope.dataSource.targetDataSource.id === dataSourceId) {\n if (dateInSelectedTimeFrame(valueDate)) {\n return true;\n } \n }\n return false;\n }\n\n function dateInSelectedTimeFrame(utcDate) {\n if (!scope.timePeriod) {\n return true;\n }\n if (moment(utcDate).isBefore(scope.timePeriod.period.from) ||\n moment(utcDate).isAfter(scope.timePeriod.period.to)) {\n return false;\n } else {\n return true;\n }\n }\n\n scope.themeChangedEvent = function($event) {\n scope.theme = $event.detail\n scope.updateSettings()\n }\n\n scope.toggleShowRegression = function () {\n refreshData();\n scope.updateSettings();\n }\n scope.updateSettings = function () {\n var componentSettings = {\n title: scope.title,\n timePeriod: scope.timePeriod,\n dataSource: scope.dataSource,\n filters: scope.filters,\n decimals: scope.decimals,\n showRegression: scope.showRegression,\n theme: scope.theme\n };\n scope.settingsChangeHandler({ settings: componentSettings });\n }\n\n /* This method will be called also when component is first initialized */\n scope.periodChangedHandler = function (timePeriod) {\n if (!timePeriod.timeframe) return;\n if (scope.timePeriod && scope.timePeriod.period.from === timePeriod.period.from && scope.timePeriod.period.to === timePeriod.period.to) return;\n scope.timePeriod = timePeriod;\n scope.options.timePeriod = timePeriod;\n refreshData();\n // if adminmode, then save settings\n if (scope.isAdminMode) {\n scope.updateSettings();\n }\n }\n\n function refreshData() {\n scope.seriesData = [];\n scope.yAxisPlotLines = [];\n scope.xAxisPlotLines = [];\n if (scope.dataSource) {\n getValuesForSerie(scope.dataSource);\n }\n }\n\n function setupChartData(values) {\n scope.xAxisData = [];\n\n if (values) {\n for (var i = 0; i < values.length; i++) {\n var xAxisDataLabel = \"\";\n // Assume every groupingElement has data for every bar\n if(scope.dataSource.unitOfTime == \"DAY\"){\n xAxisDataLabel = moment(values[i].valueDate).format(\"D.MMM\");\n } else if(scope.dataSource.unitOfTime == \"WEEK\"){\n xAxisDataLabel = $translate.instant('COMMON_TIMEPERIOD_WEEK_PREFIX')+ values[i].week;\n } else {\n \n if (values[i].month) {\n xAxisDataLabel = values[i].month + \".\";\n }\n xAxisDataLabel = xAxisDataLabel + values[i].year;\n }\n scope.xAxisData.push(xAxisDataLabel);\n }\n } else {\n // alert(\"No values for defined component\");\n scope.datafound = false; \n }\n\n var data = [];\n var greentarget = [];\n for (var i = 0; i < values.length; i++) {\n var color = DigiLean.target.getTargetIndicatorColor(values[i].targetIndicator);\n\n if(values[i].value && values[i].value < minY){\n minY = values[i].value;\n }\n var element = {\n x: i,\n color: color,\n y: values[i].value\n };\n data.push(element);\n\n var greenelement = {\n x: i,\n color: 'green',\n y: values[i].greenValue\n };\n greentarget.push(greenelement);\n }\n\n if(scope.showRegression){\n scope.seriesData = [{\n regression: true ,\n regressionSettings: {\n name : 'Trend'\n },\n data: data,\n type: 'column',\n name: $translate.instant('COMMON_TOTAL')\n }];\n } else {\n scope.seriesData = [{\n data: data,\n type: 'column',\n name: $translate.instant('COMMON_TOTAL')\n },{\n data : greentarget,\n type: 'spline',\n dashStyle: 'ShortDash',\n name: $translate.instant('COMMON_TARGET'), \n marker: {\n enabled:false\n }\n }];\n }\n }\n\n function setNullValues(array, no){\n for(var i=0; i 0 && datasource.objectSource !='internal') {\n var manualOptions = {\n targets: datasource.targets,\n timePeriodGroupQueryOptions: options\n }\n dataService().getManualTargetValuesForPeriod(datasource.id, manualOptions).then(function (values) {\n if (values) {\n scope.datafound = true;\n setupChartData(values);\n drawChart();\n } else {\n scope.datafound = false;\n }});\n return;\n }\n\n dataService().getTargetValuesForPeriod(datasource.id, options).then(function (values) {\n scope.datafound = true;\n if (values) {\n if(scope.dataSource.targetDataSource && scope.dataSource.targetDataSource.id){\n var targetOptions = {\n groupByInterval: scope.dataSource.unitOfTime,//\"e.g. month\",\n timeZone: timeService.getUserTimeZone(), // Which timezone we would like the result to be calculated in.\n timePeriod: scope.timePeriod.period,\n filters: scope.dataSource.targetFilters,\n };\n dataService().getTargetValuesForPeriod(scope.dataSource.targetDataSource.id, targetOptions).then(function (targetValues) {\n if (targetValues) {\n for(var v=0; v {}).finally(() => {\n selectDataSourceModal = null\n });\n };\n\n function resizeChart() {\n if (!elem) return\n let appEl = elem[0]\n\n let width = appEl.offsetWidth\n let height = appEl.offsetHeight\n\n let headerEl = appEl.querySelector(\".app-header\")\n if (headerEl)\n height = height - headerEl.offsetHeight\n \n var chartContainer = $(elem).find(\".highcharts-container\").parent()\n if (chartContainer.length === 0) return\n\n if (currentChart)\n currentChart.setSize(width, height, true)\n }\n\n scope.$on(\"widget-resized\", function (event, widget) {\n console.log(\"Got widget-resized\")\n // if (widget && widget.id !== scope.widget.id) return // TODO: potential reduce amount of resize work\n resizeChart();\n });\n\n scope.$on(\"$destroy\", () => {\n if (currentChart)\n currentChart.destroy()\n })\n }\n }\n }]);\n","import * as timeService from \"@common/services/timeService\"\nimport { getDefaultAppStyle, getDefaultAppTheme, calcDefaultAppFontSize } from \"@common/components/dashboard/designer/common/appStyleService\"\nimport * as staticFileService from \"@common/shared/staticFileService\"\n\nconst DigiLean = angular.module('DigiLean')\nDigiLean.directive(\"trendbarchart\", ['$uibModal', '$translate', 'dataService', 'debounce',\n function ($uibModal, $translate, dataService, debounce) {\n return {\n templateUrl: 'trendbarchart.html',\n restrict: 'E',\n scope: {\n 'isAdminMode': '=',\n 'settings': '=',\n 'settingsChangeHandler': '&',\n 'globalTimePeriod': '@',\n 'layoutFactor': '<'\n },\n link: function (scope, elem, attrs) {\n scope.theme = getDefaultAppTheme()\n scope.themeChangedEvent = function($event) {\n scope.theme = $event.detail\n scope.updateSettings()\n }\n\n scope.appStyle = getDefaultAppStyle()\n function calcStyles() {\n scope.appStyle[\"font-size\"] = calcDefaultAppFontSize(scope.layoutFactor)\n }\n calcStyles()\n scope.$watch('layoutFactor', calcStyles)\n\n var intervall = \"month\";\n scope.title = \"\";\n scope.titleChangedEvent = function($event) {\n scope.title = $event.detail\n scope.updateSettings()\n }\n scope.imageUrl = staticFileService.image('trendbarchart.jpg');\n scope.seriesData = [];\n scope.yAxisPlotLines = [];\n scope.xAxisPlotLines = [];\n scope.decimals = 0;\n scope.showRegression = true;\n scope.formula = 'sum';\n scope.graphcolor = \"7cb5ec\";\n \n var timeFrames = [ \n 'all', \n 'last3years', \n 'lastyear', \n 'thisyear',\n 'fiscalyear',\n 'YTD',\n 'last12mth', \n 'month', \n 'previousmonth',\n 'custom' \n ];\n var timeSettings = {\n timeframe: \"YTD\",\n timeframes: timeFrames,\n period: null,\n getTimePeriod: function () {\n return {\n useDefaultTimeframes: timeSettings.useDefaultTimeframes,\n timeframes: timeSettings.timeframes,\n timeframe: timeSettings.timeframe,\n period: timeSettings.period\n }\n },\n setTimePeriod: function (timeframe, period) {\n timeSettings.timeframe = timeframe;\n timeSettings.period = period;\n // debounce, to make sure not starting loading several timeframes.\n scope.options = {\n timePeriod: timeSettings.getTimePeriod()\n }\n }\n }\n scope.setTimePeriodDebounced = debounce(timeSettings.setTimePeriod, 100, false);\n // Default options\n scope.setTimePeriodDebounced(timeSettings.timeframe, timeSettings.period);\n\n // Dashboard Settings handling\n scope.$watch('settings', function (settings) {\n scope.settings = settings;\n // apply\n if (scope.settings) {\n scope.dataSource = scope.settings.dataSource;\n if (settings.timePeriod) {\n scope.setTimePeriodDebounced(settings.timePeriod.timeframe, settings.timePeriod.period);\n }\n if (scope.settings.title) {\n scope.title = scope.settings.title;\n }\n if (settings.filters) {\n scope.filters = settings.filters;\n }\n if (settings.showRegression === false) {\n scope.showRegression = settings.showRegression;\n }\n if (settings.graphcolor) {\n scope.graphcolor = settings.graphcolor;\n }\n if (settings.theme) {\n scope.theme = settings.theme;\n }\n if (settings.formula) {\n scope.formula = settings.formula;\n }\n } \n if (!scope.dataSource && scope.isAdminMode){\n setTimeout(function() {\n scope.selectDataSource();\n }, 200); \n }\n });\n\n // Subscribe to component related event\n scope.subscribe(\"DataValueAdded\", function (value) {\n if (!scope.dataSource) return;\n if (scope.dataSource.id === value.dataSourceId) {\n if (dateInSelectedTimeFrame(value.valueDate)) {\n refreshData();\n }\n }\n });\n scope.subscribe(\"DataValueUpdated\", function (value) {\n if (!scope.dataSource) return;\n if (scope.dataSource.id === value.dataSourceId) {\n if (dateInSelectedTimeFrame(value.valueDate)) {\n refreshData();\n }\n }\n });\n scope.subscribe(\"DataValueDeleted\", function (value) {\n if (!scope.dataSource) return;\n if (scope.dataSource.id === value.dataSourceId) {\n if (dateInSelectedTimeFrame(value.valueDate)) {\n refreshData();\n }\n }\n });\n\n function dateInSelectedTimeFrame(utcDate) {\n if (!scope.timePeriod) {\n return true;\n }\n if (moment(utcDate).isBefore(scope.timePeriod.period.from) ||\n moment(utcDate).isAfter(scope.timePeriod.period.to)) {\n return false;\n } else {\n return true;\n }\n }\n scope.changeTheme= function(theme){\n scope.theme = theme;\n scope.updateSettings();\n }\n\n scope.changeColor = function () {\n refreshData();\n scope.updateSettings();\n }\n\n scope.toggleShowRegression = function () {\n refreshData();\n scope.updateSettings();\n }\n scope.changeFormula = function(newFormula){\n scope.formula = newFormula;\n scope.updateSettings();\n refreshData();\n }\n scope.updateSettings = function () {\n var componentSettings = {\n title: scope.title,\n timePeriod: scope.timePeriod,\n dataSource: scope.dataSource,\n filters: scope.filters,\n showRegression: scope.showRegression,\n formula: scope.formula,\n graphcolor: scope.graphcolor,\n theme: scope.theme\n };\n scope.settingsChangeHandler({ settings: componentSettings });\n }\n\n /* This method will be called also when component is first initialized */\n scope.periodChangedHandler = function (timePeriod) {\n if (!timePeriod.timeframe) return;\n if (scope.timePeriod && scope.timePeriod.period.from === timePeriod.period.from && scope.timePeriod.period.to === timePeriod.period.to) return;\n scope.timePeriod = timePeriod;\n scope.options.timePeriod = timePeriod;\n refreshData();\n // if adminmode, then save settings\n if (scope.isAdminMode) {\n scope.updateSettings();\n }\n }\n\n function refreshData() {\n scope.seriesData = [];\n scope.yAxisPlotLines = [];\n scope.xAxisPlotLines = [];\n if (scope.dataSource) {\n getValuesForSerie(scope.dataSource);\n }\n }\n\n function setupChartData(values) {\n scope.xAxisData = [];\n\n if (values) {\n for (var i = 0; i < values.length; i++) {\n var xAxisDataLabel = \"\";\n // Assume every groupingElement has data for every bar\n if(scope.dataSource.unitOfTime == \"DAY\"){\n xAxisDataLabel = moment(values[i].valueDate).format(\"D.MMM\");\n } else if(scope.dataSource.unitOfTime == \"WEEK\"){\n xAxisDataLabel = $translate.instant('COMMON_TIMEPERIOD_WEEK_PREFIX') + values[i].week;\n } else {\n \n if (values[i].month) {\n xAxisDataLabel = values[i].month + \".\";\n }\n xAxisDataLabel = xAxisDataLabel + values[i].year;\n }\n scope.xAxisData.push(xAxisDataLabel);\n }\n } else {\n // alert(\"No values for defined component\");\n }\n\n var data = [];\n for (var i = 0; i < values.length; i++) {\n var color = scope.graphcolor;\n var currentValue = values[i].value;\n \n if(scope.formula == \"average\" && values[i].count){\n currentValue = values[i].value/values[i].count;\n }\n \n var element = {\n x: i,\n color: color,\n y: currentValue\n };\n data.push(element);\n }\n\n if(scope.showRegression){\n scope.seriesData = [{\n regression: true ,\n regressionSettings: {\n name : 'Trend'\n },\n data: data,\n type: 'column'\n }];\n } else {\n scope.seriesData = [{\n data: data,\n type: 'column'\n }];\n }\n }\n\n function setNullValues(array, no){\n for(var i=0; i{point.x}
        ',\n pointFormat: $translate.instant('COMMON_TOTAL') + ': {point.stackTotal}'\n },\n plotOptions: {\n column: {\n stacking: 'normal',\n dataLabels: {\n style: {\n fontSize: \"0.9em\"\n },\n enabled: true,\n formatter: function() {\n var value = this.point.y;\n \n if (value % 1) {\n return Highcharts.numberFormat(value, 2);\n }\n return Highcharts.numberFormat(value, -1);\n }\n }\n }\n },\n legend: {\n enabled: false \n },\n series: scope.seriesData\n\n });\n resizeChart();\n }\n\n scope.registerData = function () {\n var settings = {\n dataSource: scope.dataSource\n }; \n \n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'registrationDialog.html',\n controller: 'registrationDialogController',\n windowClass: 'newdeviation-modal-window',\n resolve: {\n componentSettings: function () {\n return settings;\n }\n }\n });\n modalInstance.result.then(function (result) { \n });\n }; \n\n let selectDataSourceModal\n scope.selectDataSource = function () {\n if (selectDataSourceModal)\n return\n\n var hasDataSerie = false;\n if (scope.dataSource) {\n hasDataSerie = true;\n }\n selectDataSourceModal = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'dataSourceSingleSelector.html',\n controller: 'dataSourceSingleSelector',\n windowClass: 'newdeviation-modal-window',\n resolve: {\n hasDataSerie: function () {\n return hasDataSerie;\n },\n dataSource: function () {\n return scope.dataSource;\n },\n filters: function () {\n return scope.filters;\n },\n withTarget: function () {\n return false;\n },\n type: function () {\n return null;\n },\n externalOnly: function () {\n return false;\n }\n }\n });\n\n selectDataSourceModal.result.then(function (result) {\n if(result.dataSource && (hasDataSerie == false || scope.dataSource.id != result.dataSource.id)){\n scope.title = result.dataSource.title;\n }\n scope.dataSource = result.dataSource;\n scope.filters = result.filters;\n scope.options.unitOfTime = scope.dataSource.unitOfTime;\n scope.updateSettings();\n refreshData();\n }, () => {}).finally(() => {\n selectDataSourceModal = null\n });\n };\n\n \n function resizeChart() {\n if (!elem) return\n let appEl = elem[0]\n\n let width = appEl.offsetWidth\n let height = appEl.offsetHeight\n\n let headerEl = appEl.querySelector(\".app-header\")\n if (headerEl)\n height = height - headerEl.offsetHeight\n \n var chartContainer = $(elem).find(\".highcharts-container\").parent()\n if (chartContainer.length === 0) return\n\n if (currentChart)\n currentChart.setSize(width, height, true)\n }\n\n scope.$on(\"widget-resized\", function (event, args) {\n resizeChart();\n });\n\n }\n }\n }]);\n","import * as staticFileService from \"@common/shared/staticFileService\"\nimport { getDefaultAppStyle, calcDefaultAppFontSize } from \"@common/components/dashboard/designer/common/appStyleService\"\nimport * as timeService from \"@common/services/timeService\"\n\nvar DigiLean = angular.module('DigiLean');\nDigiLean.directive(\"minmaxchart\", ['$uibModal', '$translate', 'dataService', 'debounce',\n function ($uibModal, $translate, dataService, debounce) {\n return {\n templateUrl: 'minmaxchart.html',\n restrict: 'E',\n scope: {\n 'isAdminMode': '=',\n 'settings': '=',\n 'settingsChangeHandler': '&',\n 'globalTimePeriod': '@',\n 'layoutFactor': '<'\n },\n link: function (scope, elem, attrs) {\n scope.theme = {\n background: \"var(--digilean-primary-text)\",\n fillColor: \"var(--digilean-secondary-background)\",\n color: \"inherit\"\n }\n scope.themeChangedEvent = function($event) {\n scope.theme = $event.detail\n scope.updateSettings()\n } \n scope.appStyle = getDefaultAppStyle()\n function calcStyles() {\n scope.appStyle[\"font-size\"] = calcDefaultAppFontSize(scope.layoutFactor)\n }\n calcStyles()\n scope.$watch('layoutFactor', calcStyles)\n\n scope.title = \"\";\n scope.titleChangedEvent = function($event) {\n scope.title = $event.detail\n scope.updateSettings()\n }\n\n scope.imageUrl = staticFileService.image('minmaxchart.jpg');\n scope.seriesData = [];\n scope.yAxisPlotLines = [];\n \n scope.decimals = 0;\n var selectedGrouping = \"\";\n \n scope.min = null;\n scope.max = null;\n var minY = 0;\n var maxY = null;\n\n var timeFrames = [ \n 'all', \n 'last3years', \n 'lastyear', \n 'thisyear',\n 'fiscalyear',\n 'YTD',\n 'last12mth', \n 'month', \n 'previousmonth',\n 'custom' \n ];\n var timeSettings = {\n timeframe: \"YTD\",\n timeframes: timeFrames,\n period: null,\n getTimePeriod: function () {\n return {\n useDefaultTimeframes: timeSettings.useDefaultTimeframes,\n timeframes: timeSettings.timeframes,\n timeframe: timeSettings.timeframe,\n period: timeSettings.period\n }\n },\n setTimePeriod: function (timeframe, period) {\n timeSettings.timeframe = timeframe;\n timeSettings.period = period;\n // debounce, to make sure not starting loading several timeframes.\n scope.options = {\n timePeriod: timeSettings.getTimePeriod()\n }\n }\n }\n scope.setTimePeriodDebounced = debounce(timeSettings.setTimePeriod, 100, false);\n // Default options\n scope.setTimePeriodDebounced(timeSettings.timeframe, timeSettings.period);\n\n function setTimeFrames(grouping){\n if(grouping.toLowerCase() == \"day\"){\n timeSettings.timeframes = [ \n 'all', \n 'lastyear', \n 'thisyear',\n 'YTD',\n 'last12mth', \n 'previousmonth',\n 'month', \n 'previousisoweek', \n 'isoweek',\n 'nextweek',\n 'yesterday',\n 'day',\n 'number',\n 'custom' \n ];\n } else if(grouping.toLowerCase() == \"week\"){\n timeSettings.timeframes = [ \n 'all', \n 'lastyear', \n 'thisyear',\n 'YTD',\n 'last12mth',\n 'previousmonth', \n 'month', \n 'previousisoweek', \n 'isoweek',\n 'nextweek',\n 'custom' \n ];\n }\n }\n\n function setDayTimeSettings(process){\n if(process == 'initial'){\n timeSettings.timeframe = \"isoweek\";\n }\n setTimeFrames(\"day\");\n scope.setTimePeriodDebounced = debounce(timeSettings.setTimePeriod, 100, false);\n scope.setTimePeriodDebounced(timeSettings.timeframe, timeSettings.period);\n }\n\n function setWeekTimeSettings(process){ \n if(process == 'initial'){\n timeSettings.timeframe = \"month\";\n } \n setTimeFrames(\"week\"); \n scope.setTimePeriodDebounced = debounce(timeSettings.setTimePeriod, 100, false);\n scope.setTimePeriodDebounced(timeSettings.timeframe, timeSettings.period);\n }\n\n // Dashboard Settings handling\n scope.$watch('settings', function (settings) {\n scope.settings = settings;\n // apply\n if (scope.settings) {\n scope.dataSource = scope.settings.dataSource;\n if (scope.settings.selectedGrouping) {\n selectedGrouping = scope.settings.selectedGrouping;\n setTimeFrames(selectedGrouping);\n }\n \n if (scope.settings.title) {\n scope.title = scope.settings.title;\n }\n if (settings.filters) {\n scope.filters = settings.filters;\n }\n if(settings.min !== null || settings.min !== undefined){\n scope.min = settings.min;\n }\n if(settings.max !== null || settings.max !== undefined){\n scope.max = settings.max;\n }\n if (settings.decimals) {\n scope.decimals = settings.decimals;\n }\n \n if(scope.settings.minY !== null || scope.settings.minY !== undefined){\n minY = scope.settings.minY;\n }\n if(scope.settings.maxY !== null || scope.settings.maxY !== undefined){\n maxY = scope.settings.maxY;\n }\n if (settings.theme) {\n scope.theme = settings.theme;\n }\n if (settings.timePeriod) {\n scope.setTimePeriodDebounced(settings.timePeriod.timeframe, settings.timePeriod.period);\n }\n } \n if (!scope.dataSource && scope.isAdminMode){\n setTimeout(function() {\n scope.selectDataSource();\n }, 200); \n }\n });\n\n\n // Subscribe to component related event\n scope.subscribe(\"DataValueAdded\", function (value) {\n if (!scope.dataSource) return;\n if (scope.dataSource.id === value.dataSourceId) {\n if (dateInSelectedTimeFrame(value.valueDate)) {\n refreshData();\n }\n }\n });\n scope.subscribe(\"DataValueUpdated\", function (value) {\n if (!scope.dataSource) return;\n if (scope.dataSource.id === value.dataSourceId) {\n if (dateInSelectedTimeFrame(value.valueDate)) {\n refreshData();\n }\n }\n });\n scope.subscribe(\"DataValueDeleted\", function (value) {\n if (!scope.dataSource) return;\n if (scope.dataSource.id === value.dataSourceId) {\n if (dateInSelectedTimeFrame(value.valueDate)) {\n refreshData();\n }\n }\n });\n\n function dateInSelectedTimeFrame(utcDate) {\n if (!scope.timePeriod) {\n return true;\n }\n if (moment(utcDate).isBefore(scope.timePeriod.period.from) ||\n moment(utcDate).isAfter(scope.timePeriod.period.to)) {\n return false;\n } else {\n return true;\n }\n }\n\n scope.updateDecimals = function (newDecimal) {\n if(newDecimal == undefined) newDecimal = 9; //max decimals supported by highcharts\n scope.decimals = newDecimal;\n refreshData();\n scope.updateSettings();\n };\n scope.changeTheme= function(theme){\n scope.theme = theme;\n scope.updateSettings();\n }\n\n scope.changeColor = function () {\n refreshData();\n scope.updateSettings();\n }\n\n scope.updateMin = function (min) {\n scope.min = min;\n refreshData();\n scope.updateSettings();\n }\n \n scope.updateMax = function (max) {\n scope.max = max;\n if(scope.min == null){\n scope.min = 0;\n }\n refreshData();\n scope.updateSettings();\n }\n\n scope.updateSettings = function () {\n var componentSettings = {\n title: scope.title,\n timePeriod: scope.timePeriod,\n dataSource: scope.dataSource,\n filters: scope.filters,\n min: scope.min,\n max: scope.max,\n minY: minY, //y-axis\n maxY: maxY, //y-axis\n selectedGrouping: selectedGrouping,\n decimals: scope.decimals,\n theme: scope.theme\n };\n scope.settingsChangeHandler({ settings: componentSettings });\n }\n\n /* This method will be called also when component is first initialized */\n scope.periodChangedHandler = function (timePeriod) {\n if (!timePeriod.timeframe) return;\n if (scope.timePeriod && scope.timePeriod.period.from === timePeriod.period.from && scope.timePeriod.period.to === timePeriod.period.to) return;\n scope.timePeriod = timePeriod;\n scope.options.timePeriod = timePeriod;\n refreshData();\n // if adminmode, then save settings\n if (scope.isAdminMode) {\n scope.updateSettings();\n }\n }\n\n function refreshData() {\n scope.seriesData = [];\n scope.yAxisPlotLines = [];\n scope.xAxisPlotLines = [];\n if (scope.dataSource) {\n getValuesForSerie(scope.dataSource);\n }\n }\n\n function setupMinMax() {\n scope.yAxisPlotLines = [];\n var elementMin =\n {\n dashStyle: 'ShortDash',\n label: {\n text: $translate.instant('DASHBOARD_MIN') \n },\n value: scope.min,\n width: 2,\n index: 1,\n color: 'black',\n\n };\n var elementMax =\n {\n dashStyle: 'ShortDash',\n label: {\n text: $translate.instant('DASHBOARD_MAX') \n },\n value: scope.max,\n width: 2,\n index: 1,\n color: 'black',\n\n };\n scope.yAxisPlotLines.push(elementMin);\n scope.yAxisPlotLines.push(elementMax);\n }\n\n function setupChartData(values) {\n scope.xAxisData = [];\n\n if (values) {\n for (var i = 0; i < values.length; i++) {\n var xAxisDataLabel = \"\";\n // Assume every groupingElement has data for every bar\n if(selectedGrouping == \"day\" || selectedGrouping == \"none\"){\n xAxisDataLabel = moment(values[i].valueDate).format(\"D.MMM\");\n } else if(selectedGrouping == \"week\"){\n xAxisDataLabel = $translate.instant('COMMON_TIMEPERIOD_WEEK_PREFIX') + values[i].week;\n } else {\n \n if (values[i].month) {\n xAxisDataLabel = values[i].month + \".\";\n }\n xAxisDataLabel = xAxisDataLabel + values[i].year;\n }\n scope.xAxisData.push(xAxisDataLabel);\n }\n } else {\n // alert(\"No values for defined component\");\n }\n\n setupMinMax();\n var redcolor = DigiLean.target.getTargetIndicatorColor(\"red\");\n var greencolor = DigiLean.target.getTargetIndicatorColor(\"green\");\n var data = [];\n for (var i = 0; i < values.length; i++) {\n \n var element = {\n x: i,\n color:'black',\n y: values[i].value\n };\n data.push(element);\n }\n\n scope.seriesData = [{\n data: data,\n id: \"datavalues\",\n type: 'spline',\n lineWidth: 4,\n name: scope.dataSource.title,\n dataGrouping: getDataGrouping(\"sum\")\n },\n {\n type: 'spline', \n linkedTo: 'datavalues',\n data: data,\n order:1,\n zoneAxis: 'y',\n lineWidth: 4,\n name: scope.dataSource.title,\n zones: [{\n color: redcolor,\n value: scope.min\n }, {\n color: greencolor,\n value: scope.max\n }, {\n color: redcolor\n }]\n }];\n\n }\n\n function setDefaultGroupingInterval(datasource){\n if(!selectedGrouping){\n selectedGrouping = \"month\";\n if(datasource && datasource.unitOfTime){\n selectedGrouping = datasource.unitOfTime.toLowerCase();\n }\n }\n }\n\n function getDataGrouping(approximation) {\n switch (selectedGrouping) {\n case \"day\":\n var data = {\n approximation: approximation,\n enabled: true,\n forced: true,\n units: [['day', [1]]]\n };\n return data;\n case \"week\":\n var data = {\n approximation: approximation,\n enabled: true,\n forced: true,\n units: [['week', [1]]]\n };\n return data;\n case \"month\":\n var data = {\n approximation: approximation,\n enabled: true,\n forced: true,\n units: [['month', [1]]]\n };\n return data;\n case \"year\":\n var data = {\n approximation: approximation,\n enabled: true,\n forced: true,\n units: [['year', null]]\n };\n return data;\n default: // e.g. none\n var data = {\n approximation: approximation,\n enabled: true,\n forced: true,\n units: [['day', [1]]]\n };\n return data;\n }\n }\n\n function getValuesForSerie(datasource) {\n if (!scope.timePeriod) return;\n\n if(selectedGrouping == \"none\"){\n getValuesForNoneGrouping(datasource);\n } else {\n setDefaultGroupingInterval(datasource);\n \n var options = {\n groupByInterval: selectedGrouping,\n timeZone: timeService.getUserTimeZone(), // Which timezone we would like the result to be calculated in.\n timePeriod: scope.timePeriod.period,\n filters: scope.filters,\n };\n \n dataService().getTargetValuesForPeriod(datasource.id, options).then(function (values) {\n if (values) {\n if(scope.dataSource.objectSource =='internal'){\n for(var v=0; v {}).finally(() => {\n selectDataSourceModal = null\n });\n };\n\n function resizeChart() {\n if (!elem) return\n let appEl = elem[0]\n\n let width = appEl.offsetWidth\n let height = appEl.offsetHeight\n\n let headerEl = appEl.querySelector(\".app-header\")\n if (headerEl)\n height = height - headerEl.offsetHeight\n \n var chartContainer = $(elem).find(\".highcharts-container\").parent()\n if (chartContainer.length === 0) return\n\n if (currentChart)\n currentChart.setSize(width, height, true)\n }\n\n scope.$on(\"widget-resized\", function (event, args) {\n resizeChart();\n });\n\n }\n }\n }]);\n","import * as customerService from \"@common/services/customers/customerService\"\nimport * as assetService from \"@common/services/assetService\"\nimport * as timeService from \"@common/services/timeService\"\nimport * as boardService from \"@common/services/boardService\"\nimport { getDefaultAppStyle, getDefaultAppTheme, calcDefaultAppFontSize } from \"@common/components/dashboard/designer/common/appStyleService\"\n\nvar DigiLean = angular.module('DigiLean')\nDigiLean.directive(\"stackedHorizontalBarChart\", ['$filter', '$translate', '$uibModal', 'dataService', 'projectService', 'strategyService','deviationService', 'areaService', 'suggestionService', 'a3Service', 'a3templateService','dataListService','debounce',\n function ($filter, $translate, $uibModal, dataService, projectService,strategyService, deviationService, areaService, suggestionService, a3Service, a3templateService, dataListService, debounce) {\n return {\n templateUrl: 'stackedHorizontalBarChart.html',\n restrict: 'E',\n scope: {\n 'isAdminMode': '=',\n 'globalTimePeriod': '@',\n 'settings': '=',\n 'settingsChangeHandler': '&',\n 'layoutFactor': '<'\n },\n link: function (scope, elem, attrs) {\n\n scope.theme = getDefaultAppTheme()\n scope.themeChangedEvent = function($event) {\n scope.theme = $event.detail\n scope.updateSettings()\n }\n scope.appStyle = getDefaultAppStyle()\n function calcStyles() {\n scope.appStyle[\"font-size\"] = calcDefaultAppFontSize(scope.layoutFactor)\n }\n calcStyles()\n scope.$watch('layoutFactor', calcStyles)\n\n scope.title = \"\"\n scope.titleChangedEvent = function($event) {\n scope.title = $event.detail\n scope.updateSettings()\n }\n scope.projects = null;\n scope.strategygoals = null;\n var assets = null;\n var deviationTypes = null;\n var problemCategories = null;\n var groupColumn = \"projectId\";\n var stackingColumn = \"status\";\n var categorySummaryData = null;\n scope.showTotal = true;\n var groupingElementFound = false;\n var listGroupedElements = {};\n\n var timeSettings = {\n timeframe: \"YTD\",\n useDefaultTimeframes: true,\n timeframes: [],\n period: null,\n getTimePeriod: function () {\n return {\n useDefaultTimeframes: timeSettings.useDefaultTimeframes,\n timeframes: timeSettings.timeframes,\n timeframe: timeSettings.timeframe,\n period: timeSettings.period\n }\n },\n setTimePeriod: function (timeframe, period) {\n timeSettings.timeframe = timeframe;\n timeSettings.period = period;\n // debounce, to make sure not starting loading several timeframes.\n scope.options = {\n timePeriod: timeSettings.getTimePeriod()\n }\n }\n }\n scope.setTimePeriodDebounced = debounce(timeSettings.setTimePeriod, 100, false);\n // Default options\n scope.setTimePeriodDebounced(timeSettings.timeframe, timeSettings.period);\n\n\n scope.registerData = function () {\n var settings = {\n dataSource: scope.dataSource\n };\n\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'registrationDialog.html',\n controller: 'registrationDialogController',\n windowClass: 'newdeviation-modal-window',\n resolve: {\n componentSettings: function () {\n return settings;\n }\n }\n });\n modalInstance.result.then(function (result) {\n });\n };\n /* This method will be called also when component is first initialized */\n scope.periodChangedHandler = function (timePeriod) {\n\n if (!timePeriod.timeframe) return;\n if (scope.timePeriod && scope.timePeriod.period.from === timePeriod.period.from && scope.timePeriod.period.to === timePeriod.period.to) return;\n scope.timePeriod = timePeriod;\n scope.options.timePeriod = timePeriod;\n if (timePeriod.timeframe === \"all\" && scope.datasource) {\n dataService().getFirstDate(scope.dataSource.id, scope.timePeriod.period, null).then(function (fromDate) {\n scope.timePeriod.period.from = fromDate;\n initialize(groupColumn);\n });\n }\n else {\n initialize(groupColumn);\n }\n\n if (scope.isAdminMode) {\n scope.updateSettings();\n }\n\n }\n\n function capitalizeFirstLetter(string) {\n if (!string) return string;\n return string[0].toUpperCase() + string.slice(1);\n }\n\n function loadData() {\n\n if (!scope.timePeriod) return;\n var grouping = {\n sourceColumn: capitalizeFirstLetter(groupColumn) //\"ProjectId\", \n };\n var stacking = {\n sourceColumn: capitalizeFirstLetter(stackingColumn) //\"Status\", \n };\n\n var options = {\n groupingElement: grouping,\n timeZone: timeService.getUserTimeZone(), // Which timezone we would like the result to be calculated in.\n timePeriod: scope.timePeriod.period,\n filters: scope.filters,\n stackingElement: stacking\n };\n dataService().getStackedGroupedSum(scope.dataSource.id, options).then(function (data) {\n if (!data) {\n console.log(\"No values for data source:\" + scope.dataSource.id);\n return;\n }\n // deviationService().getStackedDeviationGroupedSum(options).then(function (data) {\n categorySummaryData = data;\n drawChart(data);\n resizeChart();\n });\n }\n\n // Subscribe to component related event\n scope.subscribe(\"DataValueAdded\", function (value) {\n if (!scope.dataSource || scope.dataSource.id !== value.dataSourceId) return;\n initialize(groupColumn);\n });\n scope.subscribe(\"DataValueUpdated\", function (value) {\n if (!scope.dataSource || scope.dataSource.id !== value.dataSourceId) return;\n initialize(groupColumn);\n });\n scope.subscribe(\"DataValueDeleted\", function (value) {\n if (!scope.dataSource || scope.dataSource.id !== value.dataSourceId) return;\n initialize(groupColumn);\n });\n\n // Dashboard Settings handling\n scope.$watch('settings', function (settings) {\n if (settings) {\n \n scope.settings = settings;\n if (settings.title) {\n scope.title = settings.title;\n }\n if (settings.dataSource) {\n scope.dataSource = settings.dataSource;\n }\n if (settings.timePeriod) {\n scope.setTimePeriodDebounced(settings.timePeriod.timeframe, settings.timePeriod.period);\n }\n if (settings.groupColumn) {\n groupColumn = settings.groupColumn;\n }\n if (settings.stackingColumn) {\n stackingColumn = settings.stackingColumn;\n }\n if (settings.filters) {\n scope.filters = settings.filters;\n }\n if (settings.showTotal === false) {\n scope.showTotal = settings.showTotal;\n }\n if (settings.theme) {\n scope.theme = settings.theme;\n }\n groupingElementFound = false;\n initialize(groupColumn);\n }\n if (!scope.dataSource && scope.isAdminMode) {\n setTimeout(function () {\n scope.selectDataSource();\n }, 200);\n }\n });\n\n scope.changeTheme= function(theme){\n scope.theme = theme;\n scope.updateSettings();\n }\n\n function initialize(groupedBy) {\n if (!scope.dataSource) return;\n if (groupedBy === \"areaId\") {\n areaService().getList(true).then(function (areas) {\n scope.areas = areas;\n if (!groupingElementFound) {\n groupingElementFound = true;\n initialize(stackingColumn);\n } else {\n loadData();\n }\n });\n } else if (groupedBy === \"assetId\" || groupedBy === \"followUpAssetId\") {\n assetService.getAllAssetsIncludingSystem().then(function (data) {\n assets = data;\n if (!groupingElementFound) {\n groupingElementFound = true;\n initialize(stackingColumn);\n } else {\n loadData();\n }\n });\n } else if (groupedBy === \"projectId\") {\n projectService().getList(true).then(function (data) {\n scope.projects = data;\n if (!groupingElementFound) {\n groupingElementFound = true;\n initialize(stackingColumn);\n } else {\n loadData();\n }\n });\n }\n else if (groupedBy === \"strategyGoalId\") {\n strategyService().getBreakthroughObjectives().then(function (goals) {\n scope.goals = goals;\n if (!groupingElementFound) {\n groupingElementFound = true;\n initialize(stackingColumn);\n } else {\n loadData();\n }\n });\n }\n else if (groupedBy === \"lossTypeId\") {\n deviationService().getConsequences().then(function (data) {\n scope.consequences = data;\n if (!groupingElementFound) {\n groupingElementFound = true;\n initialize(stackingColumn);\n } else {\n loadData();\n }\n });\n }\n else if (groupedBy === \"problemCategoryId\") {\n deviationService().getProblemCategories().then(function (categories) {\n problemCategories = categories;\n if (!groupingElementFound) {\n groupingElementFound = true;\n initialize(stackingColumn);\n } else {\n loadData();\n }\n });\n } else if (groupedBy === \"deviationTypeId\") {\n deviationService().getAllDeviationTypes().then(function (types) {\n deviationTypes = types;\n if (!groupingElementFound) {\n groupingElementFound = true;\n initialize(stackingColumn);\n } else {\n loadData();\n }\n });\n } else if (groupedBy === \"categoryId\") {\n if (scope.dataSource.id.startsWith(\"Improvement\")) {\n suggestionService().getCategories().then(function (categories) {\n scope.suggestionCategories = categories;\n if (!groupingElementFound) {\n groupingElementFound = true;\n initialize(stackingColumn);\n } else {\n loadData();\n }\n });\n } else {//assue A3 categories\n a3Service().getCategories().then(function (categories) {\n scope.a3Categories = categories;\n if (!groupingElementFound) {\n groupingElementFound = true;\n initialize(stackingColumn);\n } else {\n loadData();\n }\n });\n }\n } else if (groupedBy === \"boardId\") {\n boardService.getAll().then(function (boards) {\n scope.boards = boards;\n if (!groupingElementFound) {\n groupingElementFound = true;\n initialize(stackingColumn);\n } else {\n loadData();\n }\n });\n } else if (groupedBy === \"suggestedByUserId\" || groupedBy === \"createdByUserId\" || groupedBy === \"ownerUserId\" || groupedBy === \"responsibleUserId\") {\n customerService.getAllUsers().then(function (users) {\n scope.users = users;\n if (!groupingElementFound) {\n groupingElementFound = true;\n initialize(stackingColumn);\n } else {\n loadData();\n }\n });\n } else if (groupedBy === \"a3TemplateId\") {\n a3templateService().getList().then(function (templates) {\n scope.a3templates = templates;\n if (!groupingElementFound) {\n groupingElementFound = true;\n initialize(stackingColumn);\n } else {\n loadData();\n }\n });\n } else if (groupedBy === \"value\") {\n if (!groupingElementFound) {\n groupingElementFound = true;\n initialize(stackingColumn);\n } else {\n loadData();\n }\n } else if (groupedBy === \"dimension\" || groupedBy === \"dimension2\" || groupedBy === \"dimension3\" || groupedBy === \"dimension4\") {\n var listId = checkElementType(groupedBy, 'list');\n if(listId > 0){\n var listOptions = {includeDeletedItems:true};\n dataListService().getItems(listId,listOptions).then(function (data) {\n listGroupedElements[groupedBy] = data;\n if (!groupingElementFound) {\n groupingElementFound = true;\n initialize(stackingColumn);\n } else {\n loadData();\n }\n });\n } else if (checkElementType(groupedBy, 'user') == 1) {\n customerService.getAllUsers().then(function (users) {\n scope.users = users;\n if (!groupingElementFound) {\n groupingElementFound = true;\n initialize(stackingColumn);\n } else {\n loadData();\n }\n });\n } else {\n if (!groupingElementFound) {\n groupingElementFound = true;\n initialize(stackingColumn);\n } else {\n loadData();\n }\n } \n } else {\n if (!groupingElementFound) {\n groupingElementFound = true;\n initialize(stackingColumn);\n } else {\n loadData();\n }\n }\n }\n\n function checkElementType(sourceCol, typeChecking){\n var ref = -1;\n var element = $filter('filter')(scope.dataSource.elements, { sourceColumn: sourceCol }, true);\n if(element.length>0){\n var type = element[0].type;\n if(type === typeChecking && typeChecking === 'list'){\n return element[0].dataListId;\n } else if (type === typeChecking){\n return 1;\n }\n }\n return ref;\n } \n\n function getPointName(element, groupedBy) {\n if(!element){\n return $translate.instant('COMMON_NOT_SPECIFIED');\n }\n if (groupedBy === \"assetId\" || groupedBy === \"followUpAssetId\") {\n return getNameById(assets, element);\n } else if (groupedBy === \"priorityStatus\") {\n return suggestionService().getPriorityStatusText(parseInt(element));\n } else if (groupedBy === \"problemCategoryId\") {\n return getNameById(problemCategories, element);\n } else if (groupedBy === \"a3TemplateId\") {\n return getNameById(scope.a3templates, element);\n } else if (groupedBy === \"categoryId\") {\n if (scope.dataSource.id.startsWith(\"Improvement\")) {\n return getNameById(scope.suggestionCategories, element);\n } else { // Only A3\n return getNameById(scope.a3Categories, element);\n }\n } else if (groupedBy === \"areaId\") {\n return getNameById(scope.areas, element);\n } else if (groupedBy === \"lossTypeId\") {\n return getNameById(scope.consequences, element);\n } else if (groupedBy === \"projectId\") {\n return getNameById(scope.projects, element); \n } else if (groupedBy === \"strategyGoalId\") {\n return getNameById(scope.goals, element); \n } else if (groupedBy === \"dimension\" || groupedBy === \"dimension2\" || groupedBy === \"dimension3\" || groupedBy === \"dimension4\") { \n if (checkElementType(groupedBy, 'user') == 1) {\n return getNameByUserId(scope.users, element);\n } else if (checkElementType(groupedBy, 'list') !== -1){\n return getNameById(listGroupedElements[groupedBy], element);\n } \n else { \n return element;\n } \n // return getNameByIdentifier(listGroupedElements, element); \n } else if (groupedBy === \"deviationTypeId\") {\n return getNameById(deviationTypes, element);\n } else if (groupedBy === \"boardId\") {\n return getNameById(scope.boards, element);\n } else if (groupedBy === \"suggestedByUserId\" || groupedBy === \"createdByUserId\" || groupedBy === \"ownerUserId\" || groupedBy === \"responsibleUserId\") {\n return getNameByUserId(scope.users, element);\n } else if (groupedBy === \"severity\") {\n switch (element) {\n case \"1\":\n return $translate.instant('COMMON_LOW');\n case \"2\":\n return $translate.instant('COMMON_MEDIUM');\n case \"3\":\n return $translate.instant('COMMON_HIGH');\n default:\n return $translate.instant('COMMON_NOT_SPECIFIED');\n }\n } else if (groupedBy === \"status\") {\n switch (element) {\n case \"0\":\n return $translate.instant('COMMON_NEW');\n case \"10\":\n return $translate.instant('DEVIATION_IN_PROGRESS');\n case \"20\":\n return $translate.instant('DEVIATION_RESOLVED');\n case \"30\":\n return $translate.instant('COMMON_REJECTED');\n case \"unacceptable\":\n return $translate.instant('BOARD_INCOMPLETED');\n case \"blank\":\n return $translate.instant('BOARD_OPEN');\n case \"OK\":\n return $translate.instant('DASHBOARD_COMPLETED');\n default:\n return $translate.instant('COMMON_NOT_SPECIFIED');\n }\n } else {\n return element;\n }\n }\n scope.toggleShowTotal = function () {\n drawChart(categorySummaryData);\n scope.updateSettings();\n }\n\n let selectDataSourceModal\n scope.selectDataSource = function () {\n if (selectDataSourceModal)\n return\n\n var hasDataSerie = false;\n if (scope.dataSource) {\n hasDataSerie = true;\n }\n selectDataSourceModal = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'dataSourceStackedGroupSelector.html',\n controller: 'dataSourceStackedGroupSelector',\n windowClass: 'dataserie-modal-window',\n resolve: {\n hasDataSerie: function () {\n return hasDataSerie;\n },\n dataSource: function () {\n return scope.dataSource;\n },\n groupedBy: function () {\n return groupColumn;\n },\n stackedColumn: function () {\n return stackingColumn;\n },\n filters: function () {\n return scope.filters;\n }\n }\n });\n\n selectDataSourceModal.result.then(function (result) {\n if(result.dataSource && (hasDataSerie == false || scope.dataSource.id != result.dataSource.id)){\n scope.title = result.dataSource.title;\n }\n scope.dataSource = result.dataSource;\n groupColumn = result.groupedBy;\n stackingColumn = result.stackedColumn,\n scope.filters = result.filters;\n scope.updateSettings();\n initialize(groupColumn);\n }, () => {}).finally(() => {\n selectDataSourceModal = null\n });\n };\n\n scope.updateSettings = function () {\n var componentSettings = {\n title: scope.title,\n timePeriod: scope.timePeriod,\n dataSource: scope.dataSource,\n groupColumn: groupColumn,\n stackingColumn: stackingColumn,\n showTotal: scope.showTotal,\n filters: scope.filters,\n theme: scope.theme\n };\n scope.settingsChangeHandler({ settings: componentSettings });\n }\n\n function getColorById(id, source) {\n if (id && source) {\n if (source === \"strategyGoalId\") {\n for (var k = 0; k < scope.goals.length; k++) {\n if (scope.goals[k].id.toString() === id.toString()) {\n if (scope.goals[k].color) {\n return scope.goals[k].color;\n \n } else {\n return null;\n }\n }\n }\n }\n }\n }\n\n function getNameById(source, id) {\n if (id && source) {\n for (var k = 0; k < source.length; k++) {\n if (source[k].id.toString() === id.toString()) {\n if (source[k].name) {\n return source[k].name;\n } else if (source[k].title) {\n return source[k].title;\n } else {\n return $translate.instant('COMMON_NOT_SPECIFIED');\n }\n }\n }\n return $translate.instant('COMMON_NOT_SPECIFIED');\n } else {\n return $translate.instant('COMMON_NOT_SPECIFIED');\n }\n }\n\n // used by list?????\n function getNameByIdentifier(source, id) {\n if (id && source) {\n for (var k = 0; k < source.length; k++) {\n if (source[k].identifier && source[k].identifier.toString() === id.toString()) {\n if (source[k].name) {\n return source[k].name;\n } else if (source[k].title) {\n return source[k].title;\n } else {\n return $translate.instant('COMMON_NOT_SPECIFIED');\n }\n }\n }\n return $translate.instant('COMMON_NOT_SPECIFIED');\n } else {\n return $translate.instant('COMMON_NOT_SPECIFIED');\n }\n }\n\n // Used when grouped by user\n function getNameByUserId(source, id) {\n if (id && source) {\n for (var k = 0; k < source.length; k++) {\n if (source[k].userId.toString() === id.toString()) {\n if (source[k].fullName) {\n return source[k].fullName;\n } else if (source[k].userName) {\n return source[k].userName;\n } else {\n return $translate.instant('COMMON_NOT_SPECIFIED');\n }\n }\n }\n return $translate.instant('COMMON_NOT_SPECIFIED');\n } else {\n return $translate.instant('COMMON_NOT_SPECIFIED');\n }\n }\n // Draw options\n var stackedBarChart;\n \n function resizeChart() {\n if (!elem) return\n let appEl = elem[0]\n\n let width = appEl.offsetWidth\n let height = appEl.offsetHeight\n\n let headerEl = appEl.querySelector(\".app-header\")\n if (headerEl)\n height = height - headerEl.offsetHeight\n \n var chartContainer = $(elem).find(\".highcharts-container\").parent()\n if (chartContainer.length === 0) return\n\n if (stackedBarChart)\n stackedBarChart.setSize(width, height, true)\n }\n scope.$on(\"widget-resized\", function (event, args) {\n resizeChart();\n });\n\n function drawChart(data) {\n scope.xAxisData = [];\n\n if (data) {\n var xAxisId = [];\n var distinctStackedElements = [];\n var totalSerie = [];\n for (var i = 0; i < data.length; i++) {\n var index = xAxisId.indexOf(data[i].element);\n if (index < 0) {\n xAxisId.push(data[i].element);\n var xAxisDataLabel = getPointName(data[i].element, groupColumn);\n scope.xAxisData.push(xAxisDataLabel);\n }\n\n var stackedindex = distinctStackedElements.indexOf(data[i].stackedElement);\n if (stackedindex < 0) {\n distinctStackedElements.push(data[i].stackedElement);\n totalSerie.push(0);\n }\n }\n }\n\n scope.seriesData = [];\n var i = distinctStackedElements.length - 1;\n for (i; i >= 0; i--) {\n var name = getPointName(distinctStackedElements[i], stackingColumn);\n //var color = grafcolor[i];\n var dataValues = [];\n var stackedidtofilter = distinctStackedElements[i];\n var elementsWithGivenStackedValue = $filter('filter')(data, { stackedElement: distinctStackedElements[i] }, true);\n for (var y = 0; y < xAxisId.length; y++) {\n var foundValue = $filter('filter')(elementsWithGivenStackedValue, { element: xAxisId[y] })[0];\n if (foundValue) {\n dataValues.push(foundValue.value);\n totalSerie[i] = totalSerie[i] + foundValue.value;\n } else {\n dataValues.push(0);\n }\n }\n var element = {\n name: name,\n data: dataValues,\n color: getColorById(distinctStackedElements[i], stackingColumn)\n };\n scope.seriesData.push(element);\n }\n\n if (scope.showTotal) {\n var t = totalSerie.length - 1;\n totalSerie.reverse();\n for (t; t >= 0; t--) {\n scope.seriesData[t].data.unshift(totalSerie[t]);\n }\n scope.xAxisData.unshift($translate.instant('COMMON_TOTAL'));\n }\n\n var renderElement = $(elem).find(\".stacked-horizontal-bar-chart\")[0];\n stackedBarChart = new Highcharts.Chart({\n chart: {\n renderTo: renderElement,\n type: 'bar',\n style: {\n fontSize: \"0.9em\"\n }\n },\n title: {\n text: ''\n }, credits: {\n enabled: false\n }, exporting: {\n enabled: false //remove context menu\n },\n xAxis: {\n categories: scope.xAxisData,\n labels: {\n style: {\n fontSize: \"0.9em\"\n }\n }\n },\n yAxis: {\n min: 0,\n title: {\n text: ''\n },\n labels: {\n style: {\n fontSize: \"0.9em\"\n }\n }\n },\n tooltip: {\n headerFormat: '{point.x}
        ',\n pointFormat: '{series.name}: {point.y}
        ' + $translate.instant('COMMON_TOTAL') + ': {point.stackTotal}'\n },\n legend: {\n reversed: true,\n itemStyle: {\n fontSize: \"0.9em\"\n }\n },\n plotOptions: {\n series: {\n stacking: 'normal'\n }\n },\n series: scope.seriesData\n });\n }\n\n }\n }\n }]);\n","import * as customerService from \"@common/services/customers/customerService\"\nimport * as assetService from \"@common/services/assetService\"\nimport * as timeService from \"@common/services/timeService\"\nimport * as boardService from \"@common/services/boardService\"\nimport { getDefaultAppStyle, getDefaultAppTheme, calcDefaultAppFontSize } from \"@common/components/dashboard/designer/common/appStyleService\"\n\nvar DigiLean = angular.module('DigiLean')\nDigiLean.directive(\"splitPackedBubbleChart\", ['$filter', '$translate', '$uibModal', 'dataService', 'projectService', 'strategyService','deviationService', 'areaService', 'suggestionService', 'a3Service', 'a3templateService','dataListService','debounce',\n function ($filter, $translate, $uibModal, dataService, projectService, strategyService,deviationService, areaService, suggestionService, a3Service, a3templateService, dataListService, debounce) {\n return {\n templateUrl: 'splitPackedBubbleChart.html',\n restrict: 'E',\n scope: {\n 'isAdminMode': '=',\n 'globalTimePeriod': '@',\n 'settings': '=',\n 'settingsChangeHandler': '&',\n 'layoutFactor': '<'\n },\n link: function (scope, elem, attrs) {\n scope.theme = getDefaultAppTheme()\n scope.themeChangedEvent = function($event) {\n scope.theme = $event.detail\n scope.updateSettings()\n }\n \n scope.appStyle = getDefaultAppStyle()\n function calcStyles() {\n scope.appStyle[\"font-size\"] = calcDefaultAppFontSize(scope.layoutFactor)\n }\n calcStyles()\n scope.$watch('layoutFactor', calcStyles)\n \n scope.title = \"\"\n scope.titleChangedEvent = function($event) {\n scope.title = $event.detail\n scope.updateSettings()\n }\n scope.projects = null;\n scope.strategygoals = null;\n var assets = null;\n var deviationTypes = null;\n var problemCategories = null;\n var groupColumn = \"projectId\";\n var stackingColumn = \"status\";\n var categorySummaryData = null;\n \n var groupingElementFound = false;\n \n var listGroupedElements = null;\n\n var timeSettings = {\n timeframe: \"YTD\",\n useDefaultTimeframes: true,\n timeframes: [],\n period: null,\n getTimePeriod: function () {\n return {\n useDefaultTimeframes: timeSettings.useDefaultTimeframes,\n timeframes: timeSettings.timeframes,\n timeframe: timeSettings.timeframe,\n period: timeSettings.period\n }\n },\n setTimePeriod: function (timeframe, period) {\n timeSettings.timeframe = timeframe;\n timeSettings.period = period;\n // debounce, to make sure not starting loading several timeframes.\n scope.options = {\n timePeriod: timeSettings.getTimePeriod()\n }\n }\n }\n scope.setTimePeriodDebounced = debounce(timeSettings.setTimePeriod, 100, false);\n // Default options\n scope.setTimePeriodDebounced(timeSettings.timeframe, timeSettings.period);\n\n\n /* This method will be called also when component is first initialized */\n scope.periodChangedHandler = function (timePeriod) {\n\n if (!timePeriod.timeframe) return;\n if (scope.timePeriod && scope.timePeriod.period.from === timePeriod.period.from && scope.timePeriod.period.to === timePeriod.period.to) return;\n scope.timePeriod = timePeriod;\n scope.options.timePeriod = timePeriod;\n if (timePeriod.timeframe === \"all\" && scope.datasource) {\n dataService().getFirstDate(scope.dataSource.id, scope.timePeriod.period, null).then(function (fromDate) {\n scope.timePeriod.period.from = fromDate;\n initialize(groupColumn);\n });\n }\n else {\n initialize(groupColumn);\n }\n\n if (scope.isAdminMode) {\n scope.updateSettings();\n }\n\n }\n\n function capitalizeFirstLetter(string) {\n if (!string) return string;\n return string[0].toUpperCase() + string.slice(1);\n }\n\n function loadData() {\n var grouping = {\n sourceColumn: capitalizeFirstLetter(groupColumn) //\"ProjectId\", \n };\n var stacking = {\n sourceColumn: capitalizeFirstLetter(stackingColumn) //\"Status\", \n };\n\n var options = {\n groupingElement: grouping,\n timeZone: timeService.getUserTimeZone(), // Which timezone we would like the result to be calculated in.\n timePeriod: scope.timePeriod.period,\n filters: scope.filters,\n stackingElement: stacking\n };\n scope.optimizationChallenges = false;\n dataService().getStackedGroupedSum(scope.dataSource.id, options).then(function (data) {\n if (!data) {\n console.log(\"No values for data source:\" + scope.dataSource.id);\n return;\n } else {\n var noOfBubbles = data.length;\n if(noOfBubbles > 150){\n scope.optimizationChallenges = true;\n } else {\n categorySummaryData = data;\n drawChart(data);\n resizeChart();\n }\n } \n });\n }\n\n // Subscribe to component related event\n scope.subscribe(\"DataValueAdded\", function (value) {\n if (!scope.dataSource || scope.dataSource.id !== value.dataSourceId) return;\n initialize(groupColumn);\n });\n scope.subscribe(\"DataValueUpdated\", function (value) {\n if (!scope.dataSource || scope.dataSource.id !== value.dataSourceId) return;\n initialize(groupColumn);\n });\n scope.subscribe(\"DataValueDeleted\", function (value) {\n if (!scope.dataSource || scope.dataSource.id !== value.dataSourceId) return;\n initialize(groupColumn);\n });\n\n // Dashboard Settings handling\n scope.$watch('settings', function (settings) {\n if (settings) {\n\n scope.settings = settings;\n if (settings.title) {\n scope.title = settings.title;\n }\n if (settings.dataSource) {\n scope.dataSource = settings.dataSource;\n }\n if (settings.timePeriod) {\n scope.setTimePeriodDebounced(settings.timePeriod.timeframe, settings.timePeriod.period);\n }\n if (settings.groupColumn) {\n groupColumn = settings.groupColumn;\n }\n if (settings.stackingColumn) {\n stackingColumn = settings.stackingColumn;\n }\n if (settings.filters) {\n scope.filters = settings.filters;\n }\n if (settings.theme) {\n scope.theme = settings.theme;\n }\n initialize(groupColumn);\n }\n if (!scope.dataSource && scope.isAdminMode) {\n setTimeout(function () {\n scope.selectDataSource();\n }, 200);\n }\n });\n\n scope.changeTheme= function(theme){\n scope.theme = theme;\n scope.updateSettings();\n }\n\n function initialize(groupedBy) {\n if (!scope.dataSource) return;\n if (groupedBy === \"areaId\") {\n areaService().getList(true).then(function (areas) {\n scope.areas = areas;\n if (!groupingElementFound) {\n groupingElementFound = true;\n initialize(stackingColumn);\n } else {\n loadData();\n }\n });\n } else if (groupedBy === \"assetId\" || groupedBy === \"followUpAssetId\") {\n assetService.getAllAssetsIncludingSystem().then(function (data) {\n assets = data;\n if (!groupingElementFound) {\n groupingElementFound = true;\n initialize(stackingColumn);\n } else {\n loadData();\n }\n });\n } else if (groupedBy === \"projectId\") {\n projectService().getList(true).then(function (data) {\n scope.projects = data;\n if (!groupingElementFound) {\n groupingElementFound = true;\n initialize(stackingColumn);\n } else {\n loadData();\n }\n });\n } else if (groupedBy === \"strategyGoalId\") {\n strategyService().getBreakthroughObjectives().then(function (goals) {\n scope.goals = goals;\n if (!groupingElementFound) {\n groupingElementFound = true;\n initialize(stackingColumn);\n } else {\n loadData();\n }\n });\n }\n else if (groupedBy === \"lossTypeId\") {\n deviationService().getConsequences().then(function (data) {\n scope.consequences = data;\n if (!groupingElementFound) {\n groupingElementFound = true;\n initialize(stackingColumn);\n } else {\n loadData();\n }\n });\n }\n else if (groupedBy === \"problemCategoryId\") {\n deviationService().getProblemCategories().then(function (categories) {\n problemCategories = categories;\n if (!groupingElementFound) {\n groupingElementFound = true;\n initialize(stackingColumn);\n } else {\n loadData();\n }\n });\n } else if (groupedBy === \"deviationTypeId\") {\n deviationService().getAllDeviationTypes().then(function (types) {\n deviationTypes = types;\n if (!groupingElementFound) {\n groupingElementFound = true;\n initialize(stackingColumn);\n } else {\n loadData();\n }\n });\n } else if (groupedBy === \"categoryId\") {\n if (scope.dataSource.id.startsWith(\"Improvement\")) {\n suggestionService().getCategories().then(function (categories) {\n scope.suggestionCategories = categories;\n if (!groupingElementFound) {\n groupingElementFound = true;\n initialize(stackingColumn);\n } else {\n loadData();\n }\n });\n } else {//assue A3 categories\n a3Service().getCategories().then(function (categories) {\n scope.a3Categories = categories;\n if (!groupingElementFound) {\n groupingElementFound = true;\n initialize(stackingColumn);\n } else {\n loadData();\n }\n });\n }\n } else if (groupedBy === \"boardId\") {\n boardService.getAll().then(function (boards) {\n scope.boards = boards;\n if (!groupingElementFound) {\n groupingElementFound = true;\n initialize(stackingColumn);\n } else {\n loadData();\n }\n });\n } else if (groupedBy === \"suggestedByUserId\" || groupedBy === \"createdByUserId\" || groupedBy === \"ownerUserId\" || groupedBy === \"responsibleUserId\") {\n customerService.getAllUsers().then(function (users) {\n scope.users = users;\n if (!groupingElementFound) {\n groupingElementFound = true;\n initialize(stackingColumn);\n } else {\n loadData();\n }\n });\n } else if (groupedBy === \"a3TemplateId\") {\n a3templateService().getList().then(function (templates) {\n scope.a3templates = templates;\n if (!groupingElementFound) {\n groupingElementFound = true;\n initialize(stackingColumn);\n } else {\n loadData();\n }\n });\n } else if (groupedBy === \"value\") {\n if (!groupingElementFound) {\n groupingElementFound = true;\n initialize(stackingColumn);\n } else {\n loadData();\n }\n } else if (groupedBy === \"dimension\" || groupedBy === \"dimension2\" || groupedBy === \"dimension3\" || groupedBy === \"dimension4\") {\n var listId = checkElementType(groupedBy, 'list');\n if(listId > 0){\n var listOptions = {includeDeletedItems:true};\n dataListService().getItems(listId,listOptions).then(function (data) {\n listGroupedElements = data;\n if (!groupingElementFound) {\n groupingElementFound = true;\n initialize(stackingColumn);\n } else {\n loadData();\n }\n });\n } else if (checkElementType(groupedBy, 'user') == 1) {\n customerService.getAllUsers().then(function (users) {\n scope.users = users;\n if (!groupingElementFound) {\n groupingElementFound = true;\n initialize(stackingColumn);\n } else {\n loadData();\n }\n });\n } else {\n if (!groupingElementFound) {\n groupingElementFound = true;\n initialize(stackingColumn);\n } else {\n loadData();\n }\n }\n }\n }\n\n function checkElementType(sourceCol, typeChecking){\n var ref = -1;\n var element = $filter('filter')(scope.dataSource.elements, { sourceColumn: sourceCol }, true);\n if(element.length>0){\n var type = element[0].type;\n if(type === typeChecking && typeChecking === 'list'){\n return element[0].dataListId;\n } else if (type === typeChecking){\n return 1;\n }\n }\n return ref;\n } \n\n function getPointName(element, groupedBy) {\n if (groupedBy === \"assetId\" || groupedBy === \"followUpAssetId\") {\n return getNameById(assets, element);\n } else if (groupedBy === \"priorityStatus\") {\n return suggestionService().getPriorityStatusText(parseInt(element));\n } else if (groupedBy === \"problemCategoryId\") {\n return getNameById(problemCategories, element);\n } else if (groupedBy === \"a3TemplateId\") {\n return getNameById(scope.a3templates, element);\n } else if (groupedBy === \"categoryId\") {\n if (scope.dataSource.id.startsWith(\"Improvement\")) {\n return getNameById(scope.suggestionCategories, element);\n } else { // Only A3\n return getNameById(scope.a3Categories, element);\n }\n } else if (groupedBy === \"areaId\") {\n return getNameById(scope.areas, element);\n } else if (groupedBy === \"lossTypeId\") {\n return getNameById(scope.consequences, element);\n } else if (groupedBy === \"projectId\") {\n return getNameById(scope.projects, element);\n } else if (groupedBy === \"strategyGoalId\") {\n return getNameById(scope.goals, element); \n } else if (groupedBy === \"deviationTypeId\") {\n return getNameById(deviationTypes, element);\n } else if (groupedBy === \"boardId\") {\n return getNameById(scope.boards, element);\n } else if (groupedBy === \"suggestedByUserId\" || groupedBy === \"createdByUserId\" || groupedBy === \"ownerUserId\" || groupedBy === \"responsibleUserId\") {\n return getNameByUserId(scope.users, element);\n } else if (groupedBy === \"dimension\" || groupedBy === \"dimension2\" || groupedBy === \"dimension3\" || groupedBy === \"dimension4\") {\n if (checkElementType(groupedBy, 'user') == 1) {\n return getNameByUserId(scope.users, element);\n } else if (checkElementType(groupedBy, 'list') !== -1){\n return getNameById(listGroupedElements, element);\n } \n else { \n return element;\n } \n } else if (groupedBy === \"severity\") {\n switch (element) {\n case \"1\":\n return $translate.instant('COMMON_LOW');\n case \"2\":\n return $translate.instant('COMMON_MEDIUM');\n case \"3\":\n return $translate.instant('COMMON_HIGH');\n default:\n return $translate.instant('COMMON_NOT_SPECIFIED');\n }\n } else if (groupedBy === \"status\") {\n switch (element) {\n case \"0\":\n return $translate.instant('COMMON_NEW');\n case \"10\":\n return $translate.instant('DEVIATION_IN_PROGRESS');\n case \"20\":\n return $translate.instant('DEVIATION_RESOLVED');\n case \"30\":\n return $translate.instant('COMMON_REJECTED');\n case \"unacceptable\":\n return $translate.instant('BOARD_INCOMPLETED');\n case \"blank\":\n return $translate.instant('BOARD_OPEN');\n case \"OK\":\n return $translate.instant('DASHBOARD_COMPLETED');\n default:\n return $translate.instant('COMMON_NOT_SPECIFIED');\n }\n } else {\n return element;\n }\n }\n\n let selectDataSourceModal\n scope.selectDataSource = function () {\n if (selectDataSourceModal)\n return\n\n var hasDataSerie = false;\n if (scope.dataSource) {\n hasDataSerie = true;\n }\n selectDataSourceModal = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'dataSourceStackedGroupSelector.html',\n controller: 'dataSourceStackedGroupSelector',\n windowClass: 'dataserie-modal-window',\n resolve: {\n hasDataSerie: function () {\n return hasDataSerie;\n },\n dataSource: function () {\n return scope.dataSource;\n },\n groupedBy: function () {\n return stackingColumn;\n },\n stackedColumn: function () {\n return groupColumn;\n },\n filters: function () {\n return scope.filters;\n }\n }\n });\n\n selectDataSourceModal.result.then(function (result) {\n if(result.dataSource && (hasDataSerie == false || scope.dataSource.id != result.dataSource.id)){\n scope.title = result.dataSource.title;\n }\n scope.dataSource = result.dataSource;\n groupColumn = result.stackedColumn;\n stackingColumn = result.groupedBy,\n scope.filters = result.filters;\n scope.updateSettings();\n initialize(groupColumn);\n }, () => {}).finally(() => {\n selectDataSourceModal = null\n });\n };\n\n scope.updateSettings = function () {\n var componentSettings = {\n title: scope.title,\n timePeriod: scope.timePeriod,\n dataSource: scope.dataSource,\n groupColumn: groupColumn,\n stackingColumn: stackingColumn,\n filters: scope.filters,\n theme: scope.theme\n };\n scope.settingsChangeHandler({ settings: componentSettings });\n }\n\n function getColorById(id, source) {\n if (id && source) {\n if (source === \"strategyGoalId\") {\n for (var k = 0; k < scope.goals.length; k++) {\n if (scope.goals[k].id.toString() === id.toString()) {\n if (scope.goals[k].color) {\n return scope.goals[k].color;\n \n } else {\n return null;\n }\n }\n }\n }\n }\n }\n\n function getNameById(source, id) {\n if (id && source) {\n for (var k = 0; k < source.length; k++) {\n if (source[k].id.toString() === id.toString()) {\n if (source[k].name) {\n return source[k].name;\n } else if (source[k].title) {\n return source[k].title;\n } else {\n return $translate.instant('COMMON_NOT_SPECIFIED');\n }\n }\n }\n return $translate.instant('COMMON_NOT_SPECIFIED');\n } else {\n return $translate.instant('COMMON_NOT_SPECIFIED');\n }\n }\n\n // Used when grouped by user\n function getNameByUserId(source, id) {\n if (id && source) {\n for (var k = 0; k < source.length; k++) {\n if (source[k].userId.toString() === id.toString()) {\n if (source[k].fullName) {\n return source[k].fullName;\n } else if (source[k].userName) {\n return source[k].userName;\n } else {\n return $translate.instant('COMMON_NOT_SPECIFIED');\n }\n }\n }\n return $translate.instant('COMMON_NOT_SPECIFIED');\n } else {\n return $translate.instant('COMMON_NOT_SPECIFIED');\n }\n }\n // Draw options\n var splitPackedBubbleChart;\n\n \n function resizeChart() {\n if (!elem) return\n let appEl = elem[0]\n\n let width = appEl.offsetWidth\n let height = appEl.offsetHeight\n\n let headerEl = appEl.querySelector(\".app-header\")\n if (headerEl)\n height = height - headerEl.offsetHeight\n \n var chartContainer = $(elem).find(\".highcharts-container\").parent()\n if (chartContainer.length === 0) return\n\n if (splitPackedBubbleChart)\n splitPackedBubbleChart.setSize(width, height, true)\n }\n scope.$on(\"widget-resized\", function (event, args) {\n resizeChart();\n });\n\n function drawChart(data) {\n scope.xAxisData = [];\n\n if (data) {\n var xAxisId = [];\n var distinctStackedElements = [];\n var totalSerie = [];\n for (var i = 0; i < data.length; i++) {\n var index = xAxisId.indexOf(data[i].element);\n if (index < 0) {\n xAxisId.push(data[i].element);\n var xAxisDataLabel = getPointName(data[i].element, groupColumn);\n scope.xAxisData.push(xAxisDataLabel);\n }\n\n var stackedindex = distinctStackedElements.indexOf(data[i].stackedElement);\n if (stackedindex < 0) {\n distinctStackedElements.push(data[i].stackedElement);\n totalSerie.push(0);\n }\n }\n }\n\n scope.seriesData = [];\n var i = distinctStackedElements.length - 1;\n\n for (i; i >= 0; i--) {\n var name = getPointName(distinctStackedElements[i], stackingColumn);\n //var color = grafcolor[i];\n var dataValues = [];\n var stackedidtofilter = distinctStackedElements[i];\n var elementsWithGivenStackedValue = $filter('filter')(data, { stackedElement: distinctStackedElements[i] }, true);\n \n for (var y = 0; y < elementsWithGivenStackedValue.length; y++) {\n \n var label = getPointName(elementsWithGivenStackedValue[y].element, groupColumn);\n var miniboble = {\n name: label,\n value: elementsWithGivenStackedValue[y].value\n }\n dataValues.push(miniboble);\n totalSerie[i] = totalSerie[i] + elementsWithGivenStackedValue[y].value;\n \n }\n var element = {\n name: name,\n data: dataValues,\n color: getColorById(distinctStackedElements[i], stackingColumn)\n };\n scope.seriesData.push(element);\n resizeChart();\n }\n var maxSize = Math.max.apply(null, totalSerie)*1.5;\n\n var renderElement = $(elem).find(\".split-packed-bubble-chart\")[0];\n splitPackedBubbleChart = new Highcharts.Chart({\n chart: {\n renderTo: renderElement,\n type: 'packedbubble',\n height: '100%',\n style: {\n fontSize: \"0.9em\"\n }\n },\n title: {\n text: ''\n }, credits: {\n enabled: false\n }, exporting: {\n enabled: false //remove context menu\n },/*\n tooltip: {\n headerFormat: '{point.x}
        ',\n pointFormat: '{series.name}: {point.y}
        Totalt: {point.stackTotal}'\n },*/\n tooltip: {\n useHTML: true,\n pointFormat: '{point.name}: {point.value}' //'{point.name}: {point.value}
        Totalt: {point.z}'\n },/*\n pointFormat: '{point.name}: {point.value}m CO2'\n tooltip: {\n useHTML: true,\n pointFormat: '{point.name} {point.y} {point.x}: {point.value}'\n },*/\n plotOptions: {\n packedbubble: {\n minSize: '20%',\n maxSize: '100%',\n zMin: 0,\n zMax: maxSize,\n layoutAlgorithm: {\n gravitationalConstant: 0.05,\n splitSeries: true,\n seriesInteraction: false,\n dragBetweenSeries: false,\n parentNodeLimit: true\n },\n dataLabels: {\n enabled: true,\n format: '{point.name}',\n /*filter: {\n property: 'y',\n operator: '>',\n value: 4\n },*/\n style: {\n color: 'black',\n textOutline: 'none',\n fontWeight: 'normal',\n fontSize: \"0.9em\"\n }\n }\n }\n },\n series: scope.seriesData,\n legend: {\n itemStyle: {\n fontSize: \"0.9em\"\n }\n }\n });\n }\n\n }\n }\n }]);\n","import * as customerService from \"@common/services/customers/customerService\"\nimport * as assetService from \"@common/services/assetService\"\nimport * as timeService from \"@common/services/timeService\"\nimport * as boardService from \"@common/services/boardService\"\nimport { getDefaultAppStyle, getDefaultAppTheme, calcDefaultAppFontSize } from \"@common/components/dashboard/designer/common/appStyleService\"\nimport * as staticFileService from \"@common/shared/staticFileService\"\n\nvar DigiLean = angular.module('DigiLean');\nDigiLean.directive(\"digileanPareto\", ['$filter', 'dataService', '$uibModal', '$translate', 'a3Service', 'a3templateService', 'projectService', 'strategyService', 'suggestionService', 'deviationService', 'areaService','dataListService','debounce',\n function ($filter, dataService, $uibModal, $translate, a3Service, a3templateService, projectService, strategyService, suggestionService, deviationService, areaService, dataListService, debounce) {\n return {\n templateUrl: 'paretochart.html',\n restrict: 'E',\n scope: {\n 'isAdminMode': '=',\n 'settings': '=',\n 'settingsChangeHandler': '&',\n 'globalTimePeriod': '@',\n 'layoutFactor': '<'\n },\n link: function (scope, elem, attrs) {\n var pareto = null;\n \n var groupedBy = \"\";\n var listGroupedElements = null;\n\n scope.theme = getDefaultAppTheme()\n scope.themeChangedEvent = function($event) {\n scope.theme = $event.detail\n scope.updateSettings()\n }\n \n scope.appStyle = getDefaultAppStyle()\n function calcStyles() {\n scope.appStyle[\"font-size\"] = calcDefaultAppFontSize(scope.layoutFactor)\n }\n calcStyles()\n scope.$watch('layoutFactor', calcStyles)\n \n\n var problemCategories = null;\n var deviationTypes = null;\n var consequences;\n scope.areas = null;\n scope.projects = null;\n var assets = null;\n scope.a3templates = null;\n scope.boards = null;\n scope.imageUrl = staticFileService.image(\"pareto.jpg\");\n\n scope.title = \"\";\n scope.titleChangedEvent = function($event) {\n scope.title = $event.detail\n scope.updateSettings()\n }\n scope.dataSource = null;\n scope.filters = [];\n // Default options\n var timeSettings = {\n timeframe: \"YTD\",\n useDefaultTimeframes: true,\n timeframes: [],\n period: null,\n getTimePeriod: function () {\n return {\n useDefaultTimeframes: timeSettings.useDefaultTimeframes,\n timeframes: timeSettings.timeframes,\n timeframe: timeSettings.timeframe,\n period: timeSettings.period\n }\n },\n setTimePeriod: function (timeframe, period) {\n timeSettings.timeframe = timeframe;\n timeSettings.period = period;\n // debounce, to make sure not starting loading several timeframes.\n scope.options = {\n timePeriod: timeSettings.getTimePeriod()\n }\n }\n }\n scope.setTimePeriodDebounced = debounce(timeSettings.setTimePeriod, 100, false);\n // Default options\n scope.setTimePeriodDebounced(timeSettings.timeframe, timeSettings.period);\n\n scope.$watch('isAdminMode', function (value) {\n console.log('is admin: ' + value);\n });\n\n var shouldResizeGridster = true;\n scope.$watch('settings', function (settings) {\n scope.settings = settings;\n if (settings) {\n scope.dataSource = settings.dataSource;\n if (settings.groupedBy) {\n groupedBy = settings.groupedBy;\n }\n if (settings.filters) {\n scope.filters = settings.filters;\n }\n if (settings.timePeriod) {\n scope.setTimePeriodDebounced(settings.timePeriod.timeframe, settings.timePeriod.period);\n }\n if (settings.title) {\n scope.title = settings.title;\n }\n if (settings.theme) {\n scope.theme = settings.theme;\n }\n if (settings.autoSize) {\n shouldResizeGridster = false;\n }\n scope.getDataAndDrawChart();\n }\n\n if (!scope.dataSource && scope.isAdminMode) {\n setTimeout(function () {\n scope.selectDataSource();\n }, 200);\n }\n\n });\n\n scope.subscribe(\"DataValueAdded\", function (value) {\n if (!scope.dataSource) return;\n if (scope.dataSource.id === value.dataSourceId) {\n if (dateInSelectedTimeFrame(value.valueDate)) {\n scope.getDataAndDrawChart();\n }\n }\n });\n scope.subscribe(\"DataValueUpdated\", function (value) {\n if (!scope.dataSource) return;\n if (scope.dataSource.id === value.dataSourceId) {\n if (dateInSelectedTimeFrame(value.valueDate)) {\n scope.getDataAndDrawChart();\n }\n }\n });\n scope.subscribe(\"DataValueDeleted\", function (value) {\n if (!scope.dataSource) return;\n if (scope.dataSource.id === value.dataSourceId) {\n if (dateInSelectedTimeFrame(value.valueDate)) {\n scope.getDataAndDrawChart();\n }\n }\n });\n scope.subscribe(\"DeviationCreated\", function (deviation) {\n if (!scope.dataSource) return;\n if (scope.dataSource.id === 'DeviationNew') {\n if (dateInSelectedTimeFrame(deviation.incidentDate)) {\n if(scope.filters && scope.filters.length > 0){\n var reload = true;\n for(let i=0; i < scope.filters.length; i++){\n if(scope.filters[i].sourceColumn == \"deviationTypeId\"){\n var typelist = $filter('filter')(scope.filters[i].items, deviation.deviationTypeId);\n if(typelist.length == 0){\n reload = false;\n break;\n }\n } else if (scope.filters[i].sourceColumn == \"assetId\"){\n var list = $filter('filter')(scope.filters[i].items, deviation.assetId);\n if(list.length == 0){\n reload = false;\n break;\n }\n } else if (scope.filters[i].sourceColumn == \"followUpAssetId\"){\n var list = $filter('filter')(scope.filters[i].items, deviation.followUpAssetId);\n if(list.length == 0){\n reload = false;\n break;\n }\n }\n }\n if(reload){\n scope.getDataAndDrawChart();\n }\n } else {\n scope.getDataAndDrawChart();\n }\n }\n }\n });\n\n \n\n scope.registerData = function () {\n var settings = {\n dataSource: scope.dataSource\n };\n\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'registrationDialog.html',\n controller: 'registrationDialogController',\n windowClass: 'newdeviation-modal-window',\n resolve: {\n componentSettings: function () {\n return settings;\n }\n }\n });\n modalInstance.result.then(function (result) {\n });\n };\n\n function dateInSelectedTimeFrame(utcDate) {\n if (!scope.timePeriod) {\n return true;\n }\n }\n\n function dateInSelectedTimeFrame(utcDate) {\n if (!scope.timePeriod) {\n return true;\n }\n if (moment(utcDate).isBefore(scope.timePeriod.period.from) ||\n moment(utcDate).isAfter(scope.timePeriod.period.to)) {\n return false;\n } else {\n return true;\n }\n }\n\n function getNameById(source, id) {\n if (id && source) {\n for (var k = 0; k < source.length; k++) {\n if (source[k].id.toString() === id.toString()) {\n if (source[k].name) {\n return source[k].name;\n } else if (source[k].title) {\n return source[k].title;\n } else {\n return $translate.instant('COMMON_NOT_SPECIFIED');\n }\n }\n }\n return $translate.instant('COMMON_NOT_SPECIFIED');\n } else {\n return $translate.instant('COMMON_NOT_SPECIFIED');\n }\n }\n\n // Used when grouped by user\n function getNameByUserId(source, id) {\n if (id && source) {\n for (var k = 0; k < source.length; k++) {\n if (source[k].userId.toString() === id.toString()) {\n if (source[k].fullName) {\n return source[k].fullName;\n } else if (source[k].userName) {\n return source[k].userName;\n } else {\n return $translate.instant('COMMON_NOT_SPECIFIED');\n }\n }\n }\n return $translate.instant('COMMON_NOT_SPECIFIED');\n } else {\n return $translate.instant('COMMON_NOT_SPECIFIED');\n }\n }\n\n function checkElementType(sourceCol, typeChecking){\n var ref = -1;\n var element = $filter('filter')(scope.dataSource.elements, { sourceColumn: sourceCol }, true);\n if(element.length>0){\n var type = element[0].type;\n if(type === typeChecking && typeChecking === 'list'){\n return element[0].dataListId;\n } else if (type === typeChecking){\n return 1;\n }\n }\n return ref;\n } \n\n function getPointName(element) {\n if (groupedBy === \"assetId\" || groupedBy === \"followUpAssetId\") {\n return getNameById(assets, element);\n } else if (groupedBy === \"priorityStatus\") {\n return suggestionService().getPriorityStatusText(parseInt(element));\n } else if (groupedBy === \"problemCategoryId\") {\n return getNameById(problemCategories, element);\n } else if (groupedBy === \"deviationTypeId\") {\n return getNameById(deviationTypes, element); \n } else if (groupedBy === \"lossTypeId\") {\n return getNameById(consequences, element);\n } else if (groupedBy === \"a3TemplateId\") {\n return getNameById(scope.a3templates, element);\n } else if (groupedBy === \"categoryId\") {\n if (scope.dataSource.id.startsWith(\"Improvement\")) {\n return getNameById(scope.suggestionCategories, element);\n } else { // Only A3\n return getNameById(scope.a3Categories, element);\n }\n } else if (groupedBy === \"areaId\") {\n return getNameById(scope.areas, element);\n } else if (groupedBy === \"projectId\") {\n return getNameById(scope.projects, element);\n } else if (groupedBy === \"strategyGoalId\") {\n return getNameById(scope.goals, element); \n } else if (groupedBy === \"boardId\") {\n return getNameById(scope.boards, element);\n } else if (groupedBy === \"suggestedByUserId\" || groupedBy === \"createdByUserId\" || groupedBy === \"ownerUserId\" || groupedBy === \"responsibleUserId\") {\n return getNameByUserId(scope.users, element);\n } else if (groupedBy === \"dimension\" || groupedBy === \"dimension2\" || groupedBy === \"dimension3\" || groupedBy === \"dimension4\") {\n if (checkElementType(groupedBy, 'user') == 1) {\n return getNameByUserId(scope.users, element);\n } else if (checkElementType(groupedBy, 'list') !== -1){\n return getNameById(listGroupedElements, element);\n } \n else { \n return element;\n } \n }else if (groupedBy === \"severity\") {\n switch (element) {\n case \"1\":\n return $translate.instant('COMMON_LOW');\n case \"2\":\n return $translate.instant('COMMON_MEDIUM');\n case \"3\":\n return $translate.instant('COMMON_HIGH');\n default:\n return $translate.instant('COMMON_NOT_SPECIFIED');\n }\n } else if (groupedBy === \"status\") {\n switch (element) {\n case \"unacceptable\":\n return $translate.instant('BOARD_INCOMPLETED');\n case \"blank\":\n return $translate.instant('BOARD_OPEN');\n case \"OK\":\n return $translate.instant('DASHBOARD_COMPLETED');\n default:\n return $translate.instant('COMMON_NOT_SPECIFIED');\n }\n } else {\n return element;\n }\n }\n\n function getData(groupingElement) {\n if (!scope.timePeriod) return;\n var options = {\n groupByInterval: \"month\", // Foreløpig kun støtte for month, kan tenkes utvides.\n timeZone: timeService.getUserTimeZone(), // Which timezone we would like the result to be calculated in.\n timePeriod: scope.timePeriod.period,\n filters: scope.filters,\n groupingElement: groupingElement // Hvilken dimensjon man ønsker gruppert på. Eksempelvis AssetId + de eventuell AssetId verdiene man ønsker svaret begrenset til.\n };\n\n dataService().getGroupedSumForPeriod(scope.dataSource.id, options).then(function (values) {\n if (values) {\n scope.values = values.results;\n var unit = \"\";\n if (scope.dataSource.unit) {\n unit = scope.dataSource.unit;\n } else if (scope.dataSource.valueElement.unit) {\n unit = scope.dataSource.valueElement.unit;\n }\n var dataSerie = {\n name: scope.dataSource.title,\n unit: unit,\n data: []\n };\n\n for (var i = 0; i < scope.values.length; i++) {\n var pointName = getPointName(scope.values[i].element);\n var dataPoint = {\n name: pointName,\n y: scope.values[i].totalForPeriod\n };\n dataSerie.data.push(dataPoint);\n }\n\n drawChart(dataSerie);\n resizeChart();\n }\n });\n }\n\n scope.getDataAndDrawChart = function () {\n if (!scope.dataSource) return;\n if (!scope.timePeriod) return;\n var groupingElement = {\n sourceColumn: groupedBy // e.g. \"assetId\"\n };\n if (groupedBy === \"areaId\") {\n areaService().getList(true).then(function (areas) {\n scope.areas = areas;\n getData(groupingElement);\n });\n } else if (groupedBy === \"assetId\" || groupedBy === \"followUpAssetId\") {\n assetService.getAllAssetsIncludingSystem().then(function (data) {\n assets = data;\n getData(groupingElement);\n });\n } else if (groupedBy === \"projectId\") {\n projectService().getList(true).then(function (data) {\n scope.projects = data;\n getData(groupingElement);\n });\n } else if (groupedBy === \"strategyGoalId\") {\n strategyService().getBreakthroughObjectives().then(function (goals) {\n scope.goals = goals;\n getData(groupingElement);\n });\n } else if (groupedBy === \"problemCategoryId\") {\n deviationService().getProblemCategories().then(function (categories) {\n problemCategories = categories;\n getData(groupingElement);\n });\n } else if (groupedBy === \"deviationTypeId\") {\n deviationService().getAllDeviationTypes().then(function (types) {\n deviationTypes = types;\n getData(groupingElement);\n });\n } else if (groupedBy === \"lossTypeId\") {\n deviationService().getConsequences().then(function (data) {\n consequences = data;\n getData(groupingElement);\n });\n } else if (groupedBy === \"categoryId\") {\n if (scope.dataSource.id.startsWith(\"Improvement\")) {\n suggestionService().getCategories().then(function (categories) {\n scope.suggestionCategories = categories;\n getData(groupingElement);\n });\n } else {//assue A3 categories\n a3Service().getCategories().then(function (categories) {\n scope.a3Categories = categories;\n getData(groupingElement);\n });\n }\n } else if (groupedBy === \"boardId\") {\n boardService.getAll().then(function (boards) {\n scope.boards = boards;\n getData(groupingElement);\n });\n } else if (groupedBy === \"suggestedByUserId\" || groupedBy === \"createdByUserId\" || groupedBy === \"ownerUserId\" || groupedBy === \"responsibleUserId\") {\n customerService.getAllUsers().then(function (users) {\n scope.users = users;\n getData(groupingElement);\n });\n } else if (groupedBy === \"a3TemplateId\") {\n a3templateService().getList().then(function (templates) {\n scope.a3templates = templates;\n getData(groupingElement);\n });\n } else if (groupedBy === \"dimension\" || groupedBy === \"dimension2\" || groupedBy === \"dimension3\" || groupedBy === \"dimension4\") {\n var listId = checkElementType(groupedBy, 'list');\n if(listId > 0){\n var listOptions = {includeDeletedItems:true};\n dataListService().getItems(listId,listOptions).then(function (data) {\n listGroupedElements = data;\n getData(groupingElement);\n });\n } else if (checkElementType(groupedBy, 'user') == 1) {\n customerService.getAllUsers().then(function (users) {\n scope.users = users;\n getData(groupingElement);\n });\n } else {\n getData(groupingElement);\n } \n } else {\n getData(groupingElement);\n }\n }\n\n scope.changeTheme= function(theme){\n scope.theme = theme;\n scope.updateSettings();\n }\n\n scope.updateSettings = function () {\n var componentSettings = {\n title: scope.title,\n timePeriod: scope.timePeriod,\n dataSource: scope.dataSource,\n groupedBy: groupedBy,\n filters: scope.filters,\n theme: scope.theme\n };\n scope.settingsChangeHandler({ settings: componentSettings });\n }\n\n /* This method will be called also when component is first initialized */\n scope.periodChangedHandler = function (timePeriod) {\n if (!timePeriod.timeframe) return;\n if (scope.timePeriod && scope.timePeriod.period.from === timePeriod.period.from && scope.timePeriod.period.to === timePeriod.period.to) return;\n scope.timePeriod = timePeriod;\n scope.options.timePeriod = timePeriod;\n scope.getDataAndDrawChart();\n // if adminmode, then save settings\n if (scope.isAdminMode) {\n scope.updateSettings();\n }\n }\n\n // Select dataSource to use.\n let selectDataSourceModal\n scope.selectDataSource = function () {\n if (selectDataSourceModal)\n return\n\n var hasDataSerie = false;\n if (scope.dataSource) {\n hasDataSerie = true;\n }\n selectDataSourceModal = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'dataSourceGroupSelector.html',\n controller: 'dataSourceGroupSelector',\n windowClass: 'dataserie-modal-window',\n resolve: {\n hasDataSerie: function () {\n return hasDataSerie;\n },\n dataSource: function () {\n return scope.dataSource;\n },\n groupedBy: function () {\n return groupedBy;\n },\n groupingIntervall: function(){\n return null;\n },\n filters: function () {\n return scope.filters;\n }\n }\n });\n\n selectDataSourceModal.result.then(function (result) {\n if(result.dataSource && (hasDataSerie == false || scope.dataSource.id != result.dataSource.id)){\n scope.title = result.dataSource.title;\n }\n scope.dataSource = result.dataSource;\n groupedBy = result.groupedBy;\n scope.filters = result.filters;\n scope.updateSettings();\n scope.getDataAndDrawChart();\n }, () => {}).finally(() => {\n selectDataSourceModal = null\n });\n }\n \n function resizeChart() {\n if (!elem) return\n let appEl = elem[0]\n\n let width = appEl.offsetWidth\n let height = appEl.offsetHeight\n\n let headerEl = appEl.querySelector(\".app-header\")\n if (headerEl)\n height = height - headerEl.offsetHeight\n \n var chartContainer = $(elem).find(\".highcharts-container\").parent()\n if (chartContainer.length === 0) return\n\n if (pareto)\n pareto.setSize(width, height, true)\n }\n scope.$on(\"widget-resized\", function (event, args) {\n resizeChart();\n });\n\n /*function truncateString(str, num) {\n if (str.length > num) {\n return str.slice(0, num);\n } else {\n return str;\n }\n }*/\n\n function drawChart(dataSeries) {\n var displaydata = dataSeries.data;\n displaydata.sort(function (a, b) {\n return b.y - a.y;\n });\n\n var sortedCategories = [];\n var sortedValues = [];\n for (var i = 0; i < displaydata.length; i++) {\n sortedCategories.push(displaydata[i].name);\n sortedValues.push(displaydata[i].y);\n }\n\n var renderElement = $(elem).find(\".pareto-chart\")[0];\n pareto = new Highcharts.Chart({\n chart: {\n renderTo: renderElement,\n type: 'column',\n style: {\n fontSize: \"0.9em\"\n }\n },\n title: {\n text: ''\n },\n credits: {\n enabled: false\n },\n exporting: { enabled: false },\n xAxis: {\n categories: sortedCategories,\n labels: {\n style: {\n fontSize: \"0.9em\"\n }\n }\n },\n yAxis: [{\n title: {\n text: ''\n },\n labels: {\n style: {\n fontSize: \"0.9em\"\n }\n }\n },\n {\n title: {\n text: ''\n },\n minPadding: 0,\n maxPadding: 0,\n max: 100,\n min: 0,\n opposite: true,\n labels: {\n format: \"{value}%\",\n style: {\n fontSize: \"0.9em\"\n }\n }\n }],\n series: [{\n type: 'pareto',\n name: 'Pareto',\n yAxis: 1,\n zIndex: 10,\n baseSeries: 1\n }, {\n name: dataSeries.name,\n type: 'column',\n zIndex: 2,\n data: sortedValues\n }],\n legend: {\n itemStyle: {\n fontSize: \"0.9em\"\n }\n }\n });\n }\n }\n }\n }]);\n","import * as customerService from \"@common/services/customers/customerService\"\nimport * as assetService from \"@common/services/assetService\"\nimport * as boardService from \"@common/services/boardService\"\nimport * as timeService from \"@common/services/timeService\"\n\nimport { getDefaultAppStyle, getDefaultAppTheme, calcDefaultAppFontSize } from \"@common/components/dashboard/designer/common/appStyleService\"\nimport * as staticFileService from \"@common/shared/staticFileService\"\n\nvar DigiLean = angular.module('DigiLean');\nDigiLean.directive(\"digileanPieChart\", ['$filter', 'dataService', '$uibModal', '$translate', 'a3Service', 'a3templateService', 'projectService', 'strategyService', 'suggestionService', 'deviationService', 'areaService', 'dataListService', 'debounce',\n function ($filter, dataService, $uibModal, $translate, a3Service, a3templateService, projectService, strategyService, suggestionService, deviationService, areaService, dataListService, debounce) {\n return {\n templateUrl: 'piechart.html',\n restrict: 'E',\n scope: {\n 'isAdminMode': '=',\n 'settings': '=',\n 'settingsChangeHandler': '&',\n 'globalTimePeriod': '@',\n 'layoutFactor': '<'\n },\n link: function (scope, elem, attrs) {\n var pieChart = null;\n \n var groupedBy = \"\";\n var listGroupedElements = null;\n\n var grafcolor = ['#2A2E36', '#0099DE', '#d9534f', '#23c6c8', '#0077B5', '#5e5e5e', '#f8ac59', '#17987e']\n scope.theme = getDefaultAppTheme()\n scope.themeChangedEvent = function($event) {\n scope.theme = $event.detail\n scope.updateSettings()\n }\n\n scope.appStyle = getDefaultAppStyle()\n function calcStyles() {\n scope.appStyle[\"font-size\"] = calcDefaultAppFontSize(scope.layoutFactor)\n }\n calcStyles()\n scope.$watch('layoutFactor', calcStyles)\n \n \n var problemCategories = null;\n var deviationTypes = null;\n scope.areas = null;\n scope.projects = null;\n scope.strategygoals = null;\n var assets = null;\n scope.a3templates = null;\n scope.boards = null;\n scope.imageUrl = staticFileService.image(\"piechart.jpg\");\n scope.decimals = 0;\n\n scope.configurationChallenges = false;\n scope.title = \"\";\n scope.titleChangedEvent = function($event) {\n scope.title = $event.detail\n scope.updateSettings()\n }\n scope.dataSource = null;\n scope.filters = [];\n var drillDownSeries = [];\n var dataSerie = {};\n\n // Default options\n var timeSettings = {\n timeframe: \"YTD\",\n useDefaultTimeframes: true,\n timeframes: [],\n period: null,\n getTimePeriod: function () {\n return {\n useDefaultTimeframes: timeSettings.useDefaultTimeframes,\n timeframes: timeSettings.timeframes,\n timeframe: timeSettings.timeframe,\n period: timeSettings.period\n }\n },\n setTimePeriod: function (timeframe, period) {\n timeSettings.timeframe = timeframe;\n timeSettings.period = period;\n // debounce, to make sure not starting loading several timeframes.\n scope.options = {\n timePeriod: timeSettings.getTimePeriod()\n }\n }\n }\n scope.setTimePeriodDebounced = debounce(timeSettings.setTimePeriod, 100, false);\n // Default options\n scope.setTimePeriodDebounced(timeSettings.timeframe, timeSettings.period);\n\n\n scope.$watch('settings', function (settings) {\n if (settings) {\n scope.dataSource = settings.dataSource;\n if (settings.groupedBy) {\n groupedBy = settings.groupedBy;\n }\n if (settings.filters) {\n scope.filters = settings.filters;\n }\n if (settings.timePeriod) {\n scope.setTimePeriodDebounced(settings.timePeriod.timeframe, settings.timePeriod.period);\n }\n if (settings.title) {\n scope.title = settings.title;\n }\n if (settings.decimals) {\n scope.decimals = settings.decimals;\n }\n if (settings.theme) {\n scope.theme = settings.theme;\n }\n scope.getDataAndDrawChart();\n }\n\n if (!scope.dataSource && scope.isAdminMode && selectDataSourceDebounced) {\n selectDataSourceDebounced()\n }\n\n });\n\n scope.subscribe(\"DataValueAdded\", function (value) {\n if (!scope.dataSource) return;\n if (scope.dataSource.id === value.dataSourceId) {\n if (dateInSelectedTimeFrame(value.valueDate)) {\n scope.getDataAndDrawChart();\n }\n }\n });\n scope.subscribe(\"DataValueUpdated\", function (value) {\n if (!scope.dataSource) return;\n if (scope.dataSource.id === value.dataSourceId) {\n if (dateInSelectedTimeFrame(value.valueDate)) {\n scope.getDataAndDrawChart();\n }\n }\n });\n\n scope.changeTheme= function(theme){\n scope.theme = theme;\n scope.updateSettings();\n }\n\n scope.registerData = function () {\n var settings = {\n dataSource: scope.dataSource\n };\n\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'registrationDialog.html',\n controller: 'registrationDialogController',\n windowClass: 'newdeviation-modal-window',\n resolve: {\n componentSettings: function () {\n return settings;\n }\n }\n });\n modalInstance.result.then(function (result) {\n });\n };\n\n scope.subscribe(\"DataValueDeleted\", function (value) {\n if (!scope.dataSource) return;\n if (scope.dataSource.id === value.dataSourceId) {\n if (dateInSelectedTimeFrame(value.valueDate)) {\n scope.getDataAndDrawChart();\n }\n return $translate.instant('COMMON_NOT_SPECIFIED');\n } else {\n return $translate.instant('COMMON_NOT_SPECIFIED');\n }\n });\n\n function dateInSelectedTimeFrame(utcDate) {\n if (!scope.timePeriod) {\n return true;\n }\n if (moment(utcDate).isBefore(scope.timePeriod.period.from) ||\n moment(utcDate).isAfter(scope.timePeriod.period.to)) {\n return false;\n } else {\n return true;\n }\n }\n\n function getNameById(source, id) {\n if (id && source) {\n for (var k = 0; k < source.length; k++) {\n if (source[k].id.toString() === id.toString()) {\n if (source[k].name) {\n return source[k].name;\n } else if (source[k].title) {\n return source[k].title;\n } else {\n return $translate.instant('COMMON_NOT_SPECIFIED');\n }\n }\n }\n return $translate.instant('COMMON_NOT_SPECIFIED');\n } else {\n return $translate.instant('COMMON_NOT_SPECIFIED');\n }\n }\n\n // Used when grouped by user\n function getNameByUserId(source, id) {\n if (id && source) {\n for (var k = 0; k < source.length; k++) {\n if (source[k].userId.toString() === id.toString()) {\n if (source[k].fullName) {\n return source[k].fullName;\n } else if (source[k].userName) {\n return source[k].userName;\n } else {\n return $translate.instant('COMMON_NOT_SPECIFIED');\n }\n }\n }\n return $translate.instant('COMMON_NOT_SPECIFIED');\n } else {\n return $translate.instant('COMMON_NOT_SPECIFIED');\n }\n }\n\n function getPointName(element) {\n if(!element){\n return $translate.instant('COMMON_NOT_SPECIFIED');\n }\n else if (groupedBy === \"assetId\" || groupedBy === \"followUpAssetId\") {\n return getNameById(assets, element);\n } else if (groupedBy === \"priorityStatus\") {\n return suggestionService().getPriorityStatusText(parseInt(element));\n } else if (groupedBy === \"problemCategoryId\") {\n return getNameById(problemCategories, element);\n } else if (groupedBy === \"deviationTypeId\") {\n return getNameById(deviationTypes, element);\n }\n else if (groupedBy === \"lossTypeId\") {\n return getNameById(scope.consequences, element);\n } else if (groupedBy === \"a3TemplateId\") {\n return getNameById(scope.a3templates, element);\n } else if (groupedBy === \"categoryId\") {\n if (scope.dataSource.id.startsWith(\"Improvement\")) {\n return getNameById(scope.suggestionCategories, element);\n } else { // Only A3\n return getNameById(scope.a3Categories, element);\n }\n } else if (groupedBy === \"areaId\") {\n return getNameById(scope.areas, element);\n } else if (groupedBy === \"projectId\") {\n return getNameById(scope.projects, element);\n } else if (groupedBy === \"strategyGoalId\") {\n return getNameById(scope.goals, element); \n } else if (groupedBy === \"boardId\") {\n return getNameById(scope.boards, element);\n } else if (groupedBy === \"suggestedByUserId\" || groupedBy === \"createdByUserId\" || groupedBy === \"ownerUserId\" || groupedBy === \"responsibleUserId\") {\n return getNameByUserId(scope.users, element);\n } else if (groupedBy === \"dimension\" || groupedBy === \"dimension2\" || groupedBy === \"dimension3\" || groupedBy === \"dimension4\") {\n if (checkElementType(groupedBy, 'user') == 1) {\n return getNameByUserId(scope.users, element);\n } else if (checkElementType(groupedBy, 'list') !== -1) {\n return getNameById(listGroupedElements, element);\n }\n else {\n return element;\n }\n } else if (groupedBy === \"severity\") {\n switch (element) {\n case \"1\":\n return $translate.instant('COMMON_LOW');\n case \"2\":\n return $translate.instant('COMMON_MEDIUM');\n case \"3\":\n return $translate.instant('COMMON_HIGH');\n default:\n return $translate.instant('COMMON_NOT_SPECIFIED');\n }\n } else if (groupedBy === \"status\") {\n switch (element) {\n case \"unacceptable\":\n return $translate.instant('BOARD_INCOMPLETED');\n case \"blank\":\n return $translate.instant('BOARD_OPEN');\n case \"OK\":\n return $translate.instant('DASHBOARD_COMPLETED');\n default:\n return $translate.instant('COMMON_NOT_SPECIFIED');\n }\n } else {\n return element;\n }\n }\n\n function checkElementType(sourceCol, typeChecking) {\n var ref = -1;\n var element = $filter('filter')(scope.dataSource.elements, { sourceColumn: sourceCol }, true);\n if (element.length > 0) {\n var type = element[0].type;\n if (type === typeChecking && typeChecking === 'list') {\n return element[0].dataListId;\n } else if (type === typeChecking) {\n return 1;\n }\n }\n return ref;\n }\n\n function getData(groupingElement) {\n if (!scope.timePeriod) return;\n if (!groupingElement || groupingElement.sourceColumn == \"\") {\n scope.configurationChallenges = true;\n return;\n }\n var options = {\n groupByInterval: \"month\", // Foreløpig kun støtte for month, kan tenkes utvides.\n timeZone: timeService.getUserTimeZone(), // Which timezone we would like the result to be calculated in.\n timePeriod: scope.timePeriod.period,\n filters: scope.filters,\n groupingElement: groupingElement // Hvilken dimensjon man ønsker gruppert på. Eksempelvis AssetId + de eventuell AssetId verdiene man ønsker svaret begrenset til.\n };\n\n if (!scope.dataSource || !scope.dataSource.id)\n return\n dataService().getGroupedSumForPeriod(scope.dataSource.id, options).then(function (values) {\n if (values) {\n scope.values = values.results;\n var unit = \"\";\n if (scope.dataSource.unit) {\n unit = scope.dataSource.unit;\n } else if (scope.dataSource.valueElement.unit) {\n unit = scope.dataSource.valueElement.unit;\n }\n dataSerie = {\n name: scope.dataSource.title,\n unit: unit,\n data: []\n };\n\n for (var i = 0; i < scope.values.length; i++) {\n var pointName = getPointName(scope.values[i].element);\n var dataPoint = {\n name: pointName,\n y: scope.values[i].totalForPeriod,\n drilldown: pointName,\n color: getColor(i, scope.values[i].element)\n };\n dataSerie.data.push(dataPoint);\n var drillDownSerie = {\n name: pointName,\n id: pointName,\n data: []\n };\n\n angular.forEach(scope.values[i].results, function (result) {\n var drillDownPoint = [result.month.toString() + \"-\" + result.year.toString(), result.value];\n drillDownSerie.data.push(drillDownPoint);\n });\n drillDownSeries.push(drillDownSerie);\n\n }\n\n drawPieChart([dataSerie], drillDownSeries);\n resizeChart();\n }\n });\n }\n\n function getColor(index, value){\n if(groupedBy == \"severity\"){\n return deviationService().getSeverityColor(parseInt(value));\n } else if (groupedBy == \"strategyGoalId\"){\n for (var k = 0; k < scope.goals.length; k++) {\n if (scope.goals[k].id.toString() === value.toString()) {\n if (scope.goals[k].color) {\n return scope.goals[k].color;\n \n } else {\n return null;\n }\n }\n }\n } else {\n return grafcolor[index];\n }\n }\n\n scope.updateDecimals = function (newDecimal) {\n scope.decimals = newDecimal;\n drawPieChart([dataSerie], drillDownSeries);\n scope.updateSettings();\n };\n\n scope.getDataAndDrawChart = function () {\n if (!scope.dataSource) return;\n if (!scope.timePeriod) return;\n scope.configurationChallenges = false;\n var groupingElement = {\n sourceColumn: groupedBy // e.g. \"assetId\"\n };\n if (groupedBy === \"areaId\") {\n areaService().getList(true).then(function (areas) {\n scope.areas = areas;\n getData(groupingElement);\n });\n } else if (groupedBy === \"assetId\" || groupedBy === \"followUpAssetId\") {\n assetService.getAllAssetsIncludingSystem().then(function (data) {\n assets = data;\n getData(groupingElement);\n });\n } else if (groupedBy === \"projectId\") {\n projectService().getList(true).then(function (data) {\n scope.projects = data;\n getData(groupingElement);\n });\n } else if (groupedBy === \"strategyGoalId\") {\n strategyService().getBreakthroughObjectives().then(function (goals) {\n scope.goals = goals;\n getData(groupingElement);\n });\n } else if (groupedBy === \"lossTypeId\") {\n deviationService().getConsequences().then(function (data) {\n scope.consequences = data;\n getData(groupingElement);\n });\n } else if (groupedBy === \"problemCategoryId\") {\n deviationService().getProblemCategories().then(function (categories) {\n problemCategories = categories;\n getData(groupingElement);\n });\n } else if (groupedBy === \"deviationTypeId\") {\n deviationService().getAllDeviationTypes().then(function (types) {\n deviationTypes = types;\n getData(groupingElement);\n });\n } else if (groupedBy === \"categoryId\") {\n if (scope.dataSource.id.startsWith(\"Improvement\")) {\n suggestionService().getCategories().then(function (categories) {\n scope.suggestionCategories = categories;\n getData(groupingElement);\n });\n } else {//assue A3 categories\n a3Service().getCategories().then(function (categories) {\n scope.a3Categories = categories;\n getData(groupingElement);\n });\n }\n } else if (groupedBy === \"boardId\") {\n boardService.getAll().then(function (boards) {\n scope.boards = boards;\n getData(groupingElement);\n });\n } else if (groupedBy === \"suggestedByUserId\" || groupedBy === \"createdByUserId\" || groupedBy === \"ownerUserId\" || groupedBy === \"responsibleUserId\") {\n customerService.getAllUsers().then(function (users) {\n scope.users = users;\n getData(groupingElement);\n });\n } else if (groupedBy === \"a3TemplateId\") {\n a3templateService().getList().then(function (templates) {\n scope.a3templates = templates;\n getData(groupingElement);\n });\n } else if (groupedBy === \"dimension\" || groupedBy === \"dimension2\" || groupedBy === \"dimension3\" || groupedBy === \"dimension4\") {\n\n var listId = checkElementType(groupedBy, 'list');\n if (listId > 0) {\n var listOptions = { includeDeletedItems: true };\n dataListService().getItems(listId, listOptions).then(function (data) {\n listGroupedElements = data;\n getData(groupingElement);\n });\n } else if (checkElementType(groupedBy, 'user') == 1) {\n customerService.getAllUsers().then(function (users) {\n scope.users = users;\n getData(groupingElement);\n });\n } else {\n getData(groupingElement);\n }\n }\n else {\n getData(groupingElement);\n }\n }\n\n scope.updateSettings = function () {\n var componentSettings = {\n title: scope.title,\n timePeriod: scope.timePeriod,\n dataSource: scope.dataSource,\n groupedBy: groupedBy,\n filters: scope.filters,\n decimals: scope.decimals,\n theme: scope.theme\n };\n scope.settingsChangeHandler({ settings: componentSettings });\n }\n\n /* This method will be called also when component is first initialized */\n scope.periodChangedHandler = function (timePeriod) {\n if (!timePeriod.timeframe)\n return;\n \n if (scope.timePeriod && scope.timePeriod.period.from === timePeriod.period.from && scope.timePeriod.period.to === timePeriod.period.to)\n return;\n\n scope.timePeriod = timePeriod;\n scope.options.timePeriod = timePeriod;\n scope.getDataAndDrawChart();\n // if adminmode, then save settings\n if (scope.isAdminMode) {\n scope.updateSettings();\n }\n }\n\n // Select dataSource to use.\n let selectDataSourceModal\n function selectDataSource() {\n if (selectDataSourceModal)\n return\n \n selectDataSourceModal = true\n var hasDataSerie = false;\n if (scope.dataSource) {\n hasDataSerie = true;\n }\n selectDataSourceModal = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'dataSourceGroupSelector.html',\n controller: 'dataSourceGroupSelector',\n windowClass: 'dataserie-modal-window',\n resolve: {\n hasDataSerie: function () {\n return hasDataSerie;\n },\n dataSource: function () {\n return scope.dataSource;\n },\n groupedBy: function () {\n return groupedBy;\n },\n groupingIntervall: function(){\n return null;\n },\n filters: function () {\n return scope.filters;\n }\n }\n });\n\n selectDataSourceModal.result.then(function (result) {\n if(result.dataSource && (hasDataSerie == false || scope.dataSource.id != result.dataSource.id)){\n scope.title = result.dataSource.title;\n }\n scope.dataSource = result.dataSource;\n groupedBy = result.groupedBy;\n scope.filters = result.filters;\n scope.updateSettings();\n scope.getDataAndDrawChart();\n }, () => {}).finally(() => {\n selectDataSourceModal = null\n });\n }\n scope.selectDataSource = selectDataSource\n const selectDataSourceDebounced = debounce(selectDataSource, 200, false)\n \n function resizeChart() {\n if (!elem) return\n let appEl = elem[0]\n\n let width = appEl.offsetWidth\n let height = appEl.offsetHeight\n\n let headerEl = appEl.querySelector(\".app-header\")\n if (headerEl)\n height = height - headerEl.offsetHeight\n \n var chartContainer = $(elem).find(\".highcharts-container\").parent()\n if (chartContainer.length === 0) return\n\n if (pieChart)\n pieChart.setSize(width, height, true)\n }\n\n scope.$on(\"widget-resized\", function (event, args) {\n resizeChart();\n });\n\n function drawPieChart(dataSeries, drilldownSeries) {\n var renderElement = $(elem).find(\".piechart\")[0];\n pieChart = new Highcharts.Chart({\n chart: {\n renderTo: renderElement,\n plotBackgroundColor: null,\n plotBorderWidth: null,\n plotShadow: false,\n type: 'pie',\n style: {\n fontSize: \"0.9em\"\n }\n },\n title: {\n text: ''\n },\n credits: {\n enabled: false //remove link to highcharts.com\n },\n exporting: {\n enabled: false //remove context menu\n },\n tooltip: {\n headerFormat: '{series.name}
        ',\n pointFormat: '{point.name}: {point.percentage:.' + scope.decimals + 'f} %'\n },\n plotOptions: {\n pie: {\n allowPointSelect: true,\n cursor: 'pointer',\n dataLabels: {\n enabled: true,\n format: '{point.name}: {point.y:,.' + scope.decimals + 'f}',\n style: {\n fontSize: \"0.9em\"\n }\n }\n }\n },\n series: dataSeries,\n drilldown: {\n series: drilldownSeries\n },\n legend: {\n itemStyle: {\n fontSize: \"0.9em\"\n }\n }\n });\n }\n }\n }\n }]);\n","import * as assetService from \"@common/services/assetService\"\nimport * as dashboardService from \"@common/services/dashboardService\"\n\nangular\n .module('DigiLean')\n .directive(\"strategyMapChartApp\", ['$translate', 'authService',\n function ($translate, authService) {\n return {\n templateUrl: 'strategyMapChartApp.html',\n restrict: 'E',\n scope: {\n 'isAdminMode': '=',\n 'settings': '=',\n 'settingsChangeHandler': '&'\n },\n link: function (scope, elem, attrs) {\n scope.identificationName = $translate.instant('STRATEGY_TOP_LEVEL');\n\n scope.theme = {\n fillColor: \"#ffffff\",\n background: \"#676a6c\"\n };\n scope.postIts = dashboardService.getThemes();\n\n scope.assetId =null;\n\n scope.isAdmin = authService.hasRole(\"Admin\") || authService.hasRole(\"StrategyAdmin\");\n // if page is refreshed we need to refresh\n scope.subscribe(\"UserAuthenticatedAndReady\", function (profile) {\n scope.isAdmin = authService.hasRole(\"Admin\") || authService.hasRole(\"StrategyAdmin\");\n });\n\n scope.loadAssets = function(){\n if(!scope.assets){ \n scope.selectAsset = null;\n if(scope.isAdmin){\n assetService.getAllAssets(true).then(function (assets) {\n scope.assets = assets; \n for (var k = 0; k < scope.assets.length; k++) {\n scope.assets[k].cssLevel = \"level-\" + scope.assets[k].level; \n } \n //scope.assetId = null;\n });\n } else {\n assetService.getList().then(function (assets) {\n scope.assets = assets; \n if(scope.assets.length>0){\n if(!scope.assetId){\n scope.loadStrategyMapByAsset(scope.assets[0]);\n }\n }\n for (var k = 0; k < scope.assets.length; k++) {\n scope.assets[k].cssLevel = \"level-\" + scope.assets[k].level; \n \n } \n });\n }\n }\n }\n\n // Dashboard Settings handling\n scope.$watch('settings', function (settings) {\n scope.settings = settings;\n checkSettings();\n setTargetHeight();\n });\n\n scope.toplevel = function (){ \n scope.assetId = null;\n scope.identificationName = $translate.instant('STRATEGY_TOP_LEVEL');\n scope.updateSettings();\n scope.initialize();\n };\n\n scope.loadStrategyMapByAsset = function (asset){\n scope.selectAsset = asset;\n scope.assetId = asset.id;\n scope.identificationName = asset.name;\n scope.updateSettings();\n };\n \n function checkSettings() {\n if (scope.settings) {\n if (scope.settings.assetId) {\n scope.assetId = scope.settings.assetId;\n }\n if (scope.settings.identificationName) {\n scope.identificationName = scope.settings.identificationName;\n }\n if (scope.settings.theme) {\n scope.theme = scope.settings.theme;\n }\n if (scope.settings.title) {\n scope.title = scope.settings.title;\n } else {\n $translate(['COMMON_EDIT_TITLE']).then(function (translations) {\n scope.title = translations.COMMON_EDIT_TITLE;\n });\n }\n } \n }\n\n scope.themeChangedEvent = function($event) {\n scope.theme = $event.detail\n scope.updateSettings()\n }\n\n scope.updateSettings = function(){\n var componentSettings = {\n title: scope.title,\n assetId: scope.assetId,\n identificationName: scope.identificationName,\n theme: scope.theme\n };\n\n scope.settingsChangeHandler({ settings: componentSettings });\n }; \n\n var setTargetHeight = function() {\n var host = $(elem).closest(\".grid-stack-item-content\");\n if (host.length == 0)\n host = $(elem).closest(\".modal-body\")\n \n if (host.length == 0) return;\n var width = host.width();\n var height = host.height();\n // Find header to subtract from new height\n var header = $(elem).find(\".ibox-title\");\n var headerHeight = header.height() + 60;\n var container = $(elem).find(\".ibox-content\");\n if (container.length === 0) return;\n container.height(height - headerHeight);\n scope.targetHeight = (height - headerHeight);\n }\n \n scope.$on(\"widget-resized\", function (event, args) {\n setTargetHeight();\n });\n }\n }\n }]);\n","import { getDefaultAppStyle, getDefaultAppTheme, calcDefaultAppFontSize } from \"@common/components/dashboard/designer/common/appStyleService\"\nimport * as staticFileService from \"@common/shared/staticFileService\"\n\nconst DigiLean = angular.module('DigiLean');\nDigiLean.directive(\"radarchart\", ['$uibModal', '$translate','debounce',\n function ($uibModal, $translate, debounce) {\n return {\n templateUrl: 'radarchart.html',\n restrict: 'E',\n scope: {\n 'isAdminMode': '=',\n 'settings': '=',\n 'settingsChangeHandler': '&',\n 'layoutFactor': '<'\n },\n link: function (scope, elem, attrs) {\n scope.theme = getDefaultAppTheme()\n scope.themeChangedEvent = function($event) {\n scope.theme = $event.detail\n scope.updateSettings()\n }\n \n scope.appStyle = getDefaultAppStyle()\n function calcStyles() {\n scope.appStyle[\"font-size\"] = calcDefaultAppFontSize(scope.layoutFactor)\n }\n calcStyles()\n scope.$watch('layoutFactor', calcStyles)\n \n scope.title = \"\";\n scope.titleChangedEvent = function($event) {\n scope.title = $event.detail\n scope.updateSettings()\n }\n \n scope.imageUrl = staticFileService.image('radarchart.jpg');\n scope.seriesData = [];\n \n\n // Dashboard Settings handling\n scope.$watch('settings', function (settings) {\n scope.settings = settings;\n // apply\n if (scope.settings) {\n \n if (scope.settings.title) {\n scope.title = scope.settings.title;\n }\n if (settings.theme) {\n scope.theme = settings.theme;\n }\n if (settings.seriesData) {\n scope.seriesData = scope.settings.seriesData;\n drawChart();\n } else {\n demoData();\n }\n } else{\n demoData();\n }\n /*\n if (!scope.seriesData && scope.isAdminMode){\n setTimeout(function() {\n scope.selectData();\n }, 200); \n } else{\n demoData();\n } */\n \n });\n\n scope.changeTheme= function(theme){\n scope.theme = theme;\n scope.updateSettings();\n }\n\n scope.updateSettings = function () {\n var componentSettings = {\n title: scope.title,\n seriesData: scope.seriesData,\n theme: scope.theme\n };\n scope.settingsChangeHandler({ settings: componentSettings });\n }\n\n\n scope.commitChangesDebounced = debounce(scope.updateSettings, 2000, false);\n function demoData() {\n /*var cat = ['Sales', 'Marketing', 'Development', 'Customer Support',\n 'Information Technology', 'Administration'];\n var goalData = {\n name: 'Allocated Budget',\n data: [43000, 19000, 60000, 35000, 17000, 10000],\n color: '#FF0000'\n }\n var assesmentData = {\n name: 'Actual Spending',\n data: [50000, 39000, 42000, 31000, 26000, 14000],\n color: '#0099de'\n }\n scope.seriesData = {\n categories: cat,\n goalData: goalData,\n assesmentData: assesmentData\n };*/\n scope.title = \"Demo\";\n /*var cat = ['Long-term philosophy', 'Flow', 'Pull', 'Workload',\n 'Fix problems', 'Standardisation', 'Visual control', 'Reliable technology',\n 'Grow leaders', 'Develop people', 'Partners', 'Go and see', 'Slow decisionmaking',\n 'Continuous improvements'];*/\n var cat = [$translate.instant('DASHBOARD_RADAR_CHART_LONGTERM'),\n $translate.instant('DASHBOARD_RADAR_CHART_FLOW'),\n $translate.instant('DASHBOARD_RADAR_CHART_PULL'),\n $translate.instant('DASHBOARD_RADAR_CHART_WORKLOAD'),\n $translate.instant('DASHBOARD_RADAR_CHART_FIX'),\n $translate.instant('DASHBOARD_RADAR_CHART_STANDARDIZATION'),\n $translate.instant('DASHBOARD_RADAR_CHART_VISUAL_CONTROL'),\n $translate.instant('DASHBOARD_RADAR_CHART_RELIABLE_TEC'),\n $translate.instant('DASHBOARD_RADAR_CHART_GROW_LEADERS'),\n $translate.instant('DASHBOARD_RADAR_CHART_DEV_PEOPLE'),\n $translate.instant('DASHBOARD_RADAR_CHART_PARTNERS'),\n $translate.instant('DASHBOARD_RADAR_CHART_GO_SEE'),\n $translate.instant('DASHBOARD_RADAR_CHART_SLOW_DES'),\n $translate.instant('DASHBOARD_RADAR_CHART_CON_IMP')];\n var goalData = {\n name: $translate.instant('DASHBOARD_RADAR_CHART_GOAL'),//'Goal this year',\n data: [5, 7, 8, 5, 4, 4, 4, 6, 3, 4, 3, 5, 5, 6],\n color: '#FF0000'\n }\n var assesmentData = {\n name: $translate.instant('A3_STEP_CURRENT_SITUATION'),//'Current situation',\n data: [3, 5, 8, 4, 3, 2, 4, 6, 1, 2, 2, 4, 5, 2],\n color: '#0099de'\n }\n scope.seriesData = {\n categories: cat,\n goalData: goalData,\n assesmentData: assesmentData\n };\n drawChart();\n }\n\n\n scope.registerData = function () {\n\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'radarchartRegistrationDialog.html',\n controller: 'radarchartRegistrationController',\n windowClass: 'newdeviation-modal-window',\n resolve: {\n data: function () {\n return scope.seriesData;\n }\n }\n });\n modalInstance.result.then(function (result) {\n scope.seriesData = result;\n drawChart();\n scope.updateSettings();\n }, function(res){});\n };\n \n\n let currentChart = null;\n function drawChart() {\n\n var renderElement = $(elem).find(\".radarchart\")[0];\n currentChart = new Highcharts.chart({\n chart: {\n renderTo: renderElement,\n type: 'line',\n polar: true,\n style: {\n fontSize: \"0.9em\"\n }\n },\n title: {\n text: '',\n x: -80\n },\n credits: {\n enabled: false\n }, exporting: {\n enabled: false //remove context menu\n },\n pane: {\n size: '80%'\n },\n xAxis: {\n categories: scope.seriesData.categories,\n tickmarkPlacement: 'on',\n lineWidth: 1,\n tickInterval: 1,\n labels: {\n style: {\n fontSize: \"0.9em\"\n }\n }\n },\n yAxis: { \n gridLineInterpolation: 'polygon',\n lineWidth: 0,\n min: 0,\n max: 10,\n tickInterval: 2,\n labels: {\n style: {\n fontSize: \"0.9em\"\n }\n }\n },\n tooltip: {\n shared: true,\n pointFormat: '{series.name}: {point.y:,.0f}
        '\n },\n \n series: [{\n name: scope.seriesData.goalData.name,\n data: scope.seriesData.goalData.data,\n color: scope.seriesData.goalData.color,\n pointPlacement: 'on'\n }, {\n name: scope.seriesData.assesmentData.name,\n data: scope.seriesData.assesmentData.data,\n color: scope.seriesData.assesmentData.color,\n pointPlacement: 'on'\n }],\n legend: {\n itemStyle: {\n fontSize: \"0.9em\"\n }\n }\n });\n resizeChart();\n }\n\n\n function resizeChart() {\n if (!elem) return\n let appEl = elem[0]\n\n let width = appEl.offsetWidth\n let height = appEl.offsetHeight\n\n let headerEl = appEl.querySelector(\".app-header\")\n if (headerEl)\n height = height - headerEl.offsetHeight\n \n // find with inside padding of graph-content\n let graphContent = appEl.querySelector(\".graph-content\")\n if (graphContent) {\n let graphContentInner = graphContent.querySelector(\".graph-content-inner\")\n if (graphContentInner)\n width = graphContentInner.offsetWidth\n }\n var chartContainer = $(elem).find(\".highcharts-container\").parent()\n if (chartContainer.length === 0) return\n\n if (currentChart)\n currentChart.setSize(width, height, true)\n }\n\n scope.$on(\"widget-resized\", function (event, args) {\n resizeChart();\n });\n\n }\n }\n }]);\n","import * as customerService from \"@common/services/customers/customerService\"\nimport * as assetService from \"@common/services/assetService\"\nimport { getDefaultAppStyle, getDefaultAppTheme, calcDefaultAppFontSize } from \"@common/components/dashboard/designer/common/appStyleService\"\nimport { hasDefaultAccess } from \"@common/components/dashboard/designer/common/userAccessService\"\n\nimport \"./registration.css\"\n\nangular\n .module('DigiLean')\n .directive(\"registration\", ['$filter', 'authService', 'dataService', '$uibModal', 'dataSourceService', 'areaService', 'projectService', 'dataListService',\n function ($filter, authService, dataService, $uibModal, dataSourceService, areaService, projectService, dataListService) {\n return {\n templateUrl: 'registration.html',\n restrict: 'E',\n scope: {\n 'settings': '=',\n 'settingsChangeHandler': '&',\n 'isAdminMode': '=',\n 'layoutFactor': '<',\n 'userAccess': '<',\n },\n link: function (scope, elem, attrs) {\n scope.theme = getDefaultAppTheme()\n scope.themeChangedEvent = function($event) {\n scope.theme = $event.detail\n scope.updateSettings()\n }\n \n scope.appStyle = getDefaultAppStyle()\n function calcStyles() {\n scope.appStyle[\"font-size\"] = calcDefaultAppFontSize(scope.layoutFactor)\n }\n calcStyles()\n scope.$watch('layoutFactor', calcStyles)\n\n scope.canEdit = true;\n\n\n scope.selectedAsset = null;\n scope.selectedArea = null;\n scope.selectedProject = null;\n scope.selectedDate = moment().startOf('day').toDate(); //removed time portion. Check if this may affect utc date\n scope.value = null;\n scope.description = \"\";\n scope.selectedItemForUpdate = null;\n scope.isProcessing = false;\n \n scope.showTime = false;\n var now = moment().toDate(); \n //set the time to 12:00\n scope.mytime = now.setHours(12,0,0);\n scope.hstep = 1;\n scope.mstep = 5;\n scope.options = {\n hstep: [1, 2, 3],\n mstep: [1, 5, 10, 15, 25, 30]\n };\n\n scope.selectedDataListItem = null;\n scope.selectedDataList = null;\n scope.datalists = [];\n scope.filters = [];\n scope.timePeriod = null;\n scope.areas = [];\n scope.assets = [];\n scope.projects = [];\n scope.allUsers = [];\n\n scope.$watch('userAccess', function (userAccess) {\n scope.canEdit = hasDefaultAccess(userAccess);\n });\n scope.subscribe(\"UserAuthenticatedAndReady\", function (profile) {\n scope.isAdmin = authService.hasRole(\"Admin\");\n });\n\n scope.subscribe(\"DataSourceUpdated\", function (dataSource) {\n if (!scope.dataSource) return;\n if (dataSource.dataSourceId === scope.dataSource.id) {\n scope.setDataSource(dataSource.dataSourceId);\n }\n });\n // Dashboard Settings handling\n scope.$watch('settings', function (settings) {\n // apply\n if (settings) {\n if (settings.filters) {\n scope.filters = settings.filters;\n }\n if (settings.timePeriod) {\n scope.timePeriod = settings.timePeriod;\n scope.selectedDate = getValueDate();\n }\n scope.setDataSource(settings.dataSource.id);\n if (settings.theme) {\n scope.theme = settings.theme;\n }\n }\n });\n\n scope.changeTheme = function (theme) {\n scope.theme = theme;\n scope.updateSettings();\n }\n\n scope.$watch('selectedItemForUpdate', function (item) {\n if (item) {\n scope.selectedAsset = null;\n scope.selectedArea = null;\n scope.selectedProject = null;\n scope.selectedDataListItem = null;\n scope.selectedItemForUpdate = item;\n if (item.user) item.user = null;\n var asset = scope.assets.find(asset => asset.id === item.assetId);\n if (asset) {\n scope.selectedAsset = asset;\n }\n angular.forEach(scope.dataSource.elements, function (element) {\n element.value = null;\n if (element.type === \"user\") {\n element.user = null;\n } else if (element.type === \"asset\"){\n var selectedAsssetId = null;\n if(scope.selectedAsset) selectedAsssetId=scope.selectedAsset.id;\n scope.assetmodel = { assetId:selectedAsssetId,\n assets: scope.assets,\n item:element};\n }\n });\n\n var area = scope.areas.find(area => area.id === item.areaId);\n if (area) {\n scope.selectedArea = area;\n }\n var project = scope.projects.find(project => project.id === item.projectId);\n if (project) {\n scope.selectedProject = project;\n scope.projectmodel = { projectId: scope.selectedProject.id, projects: scope.projects };\n }\n angular.forEach(scope.dataSource.elements, function (element) {\n var value = item[element.sourceColumn];\n if (element.type === \"number\" && value) {\n value = parseFloat(value);\n } else if(element.type === \"bool\") {\n if (value && value == \"true\") {\n value = true;\n } else {\n value = false;\n }\n } else if (element.type === \"user\" && value) {\n var user = scope.allUsers.find(user => user.userId === value);\n if (user) {\n element.user = user;\n }\n } else if (element.type === \"list\") {\n if (value) {\n var listitem = element.dataList.find(item => item.id === parseInt(value));\n if (listitem) {\n element.selectedDataListItem = listitem;\n } else {\n element.selectedDataListItem = {};\n }\n } else {\n element.selectedDataListItem = {};\n }\n\n }// need to cast/parse\n element.value = value;\n\n });\n scope.selectedDate = moment(item.valueDate).toDate();\n scope.mytime = moment(item.valueDate).toDate();\n scope.value = item.value;\n scope.description = item.description;\n }\n });\n\n function getValueDate(){\n var toDay = moment().startOf('day');\n if(scope.timePeriod){\n var toDate = moment(scope.timePeriod.to).startOf('day');\n if(toDate.isBefore(toDay)){\n return toDate.toDate();\n }\n }\n return toDay.toDate();\n }\n\n scope.setTime = function (time) {\n //scope.mytime = time;\n scope.selectedDate.setHours(time.getHours());\n scope.selectedDate.setMinutes(time.getMinutes());\n };\n\n function initRegistration() {\n scope.isProcessing = false;\n if(!scope.dataSource) return;\n if(scope.dataSource.unitOfTime == \"DAY\"){\n scope.showTime = true;\n }\n scope.value = null;\n scope.description = \"\";\n scope.selectedDate = getValueDate();\n\n const year1 = scope.selectedDate.getFullYear();\n const month1 = scope.selectedDate.getMonth();\n const date1 = scope.selectedDate.getDate();\n scope.mytime = new Date(Date.UTC(year1, month1, date1, 12, 0, 0, 0));\n\n scope.selectedDataListItem = null;\n angular.forEach(scope.dataSource.elements, function (element) {\n var hasFilter = scope.filters.find(filter => filter.sourceColumn === element.sourceColumn);\n if (hasFilter) {\n if (hasFilter.items.length == 1) {\n element.value = hasFilter.items[0]; //preselect the first filtered item of this filterelement\n element.registerValue = false;\n if(element.type == \"list\"){ //need to have the list available in case of updates\n var listOptions = { includeDeletedItems: false };\n dataListService().getItems(element.dataListId, listOptions).then(function (list) {\n if (list) {\n element.dataList = list;\n }\n });\n } \n } else { //multiple selected elements\n setFilteredSelectors(element, hasFilter.items)\n } \n }\n else {\n element.registerValue = true;\n switch (element.type) {\n case \"asset\":\n assetService.getAllAssets(true).then(function (data) {\n scope.assets = data;\n for (var k = 0; k < scope.assets.length; k++) {\n scope.assets[k].cssLevel = \"level-\" + scope.assets[k].level; \n }\n scope.assetmodel = { assetId:null,\n assets: scope.assets,\n item:element};\n });\n break;\n case \"area\":\n areaService().getList(true).then(function (data) {\n scope.areas = data;\n });\n break;\n case \"project\":\n projectService().getList(true).then(function (data) {\n scope.projects = data;\n scope.projectmodel = { projectId:null,\n projects: scope.projects};\n });\n break;\n case \"user\":\n customerService.getAllUsers().then(function (users) {\n scope.allUsers = users;\n });\n break;\n case \"list\":\n var listOptions = { includeDeletedItems: false };\n dataListService().getItems(element.dataListId, listOptions).then(function (list) {\n if (list) {\n element.dataList = list;\n element.selectedDataListItem = {};\n }\n });\n break;\n default:\n element.value = null;\n\n }\n }\n });\n\n }\n\n function setFilteredSelectors(element, filteritems) {\n element.registerValue = true;\n switch (element.type) {\n case \"asset\":\n assetService.getAllAssets(true).then(function (data) {\n scope.assets = [];\n for (var i = 0; i < filteritems.length; i++) {\n var hasElement = data.find(d => d.id === filteritems[i]);\n if (hasElement) {\n scope.assets.push(hasElement);\n }\n }\n var selectedAsssetId = null;\n if(scope.assets.length == 1) selectedAsssetId = scope.assets[0].id;\n scope.assetmodel = { assetId:selectedAsssetId,\n assets: scope.assets,\n item: element};\n });\n break;\n case \"area\":\n areaService().getList(true).then(function (data) {\n scope.areas = [];\n for (var i = 0; i < filteritems.length; i++) {\n var hasElement = data.find(d => d.id === filteritems[i]);\n if (hasElement) {\n scope.areas.push(hasElement);\n }\n }\n });\n break;\n case \"project\":\n projectService().getList(true).then(function (data) {\n scope.projects = [];\n for (var i = 0; i < filteritems.length; i++) {\n var hasElement = data.find(d => d.id === filteritems[i]);\n if (hasElement) {\n scope.projects.push(hasElement);\n }\n }\n scope.projectmodel = { projectId:null,\n projects: scope.projects};\n });\n break;\n case \"user\":\n customerService.getAllUsers().then(function (data) {\n scope.allUsers = [];\n for (var i = 0; i < filteritems.length; i++) {\n var hasElement = data.find(d => d.id === filteritems[i]);\n if (hasElement) {\n scope.allUsers.push(hasElement);\n }\n }\n });\n break;\n case \"list\":\n var listOptions = { includeDeletedItems: false };\n dataListService().getItems(element.dataListId, listOptions).then(function (list) {\n if (list) {\n element.dataList = [];\n for (var i = 0; i < filteritems.length; i++) {\n var hasElement = list.find(d => d.id === filteritems[i]);\n if (hasElement) {\n element.dataList.push(hasElement);\n }\n }\n element.selectedDataListItem = {};\n if(element.dataList.length == 0){\n element.dataList = list; //no filter applied, show all list items\n }\n }\n });\n break;\n default:\n element.value = null;\n }\n }\n\n scope.setDataSource = function (id) {\n dataSourceService().get(id).then(function (dataSource) {\n scope.dataSource = dataSource;\n // Add value property for element\n angular.forEach(scope.dataSource.elements, function (element) {\n element.value = null;\n });\n initRegistration();\n });\n }\n\n scope.updateSettings = function () {\n var componentSettings = {\n dataSource: scope.dataSource,\n filters: scope.filters,\n theme: scope.theme\n };\n scope.settingsChangeHandler({ settings: componentSettings });\n };\n\n scope.getValueForElement = function (element, item) {\n var sourceColumn = element.sourceColumn;\n var value = item[sourceColumn];\n return value;\n }\n\n scope.toDate = moment().toDate();\n\n scope.selectedDateChanged = function ($event) {\n const date = $event.originalEvent.detail\n scope.selectedDate = date;\n }\n\n scope.assetChangeHandler = function (assetinfo) {\n if (assetinfo) {\n assetinfo.model.item.value = assetinfo.asset.id;\n scope.selectedAsset = assetinfo.asset;\n } \n }\n\n scope.selectArea = function (area, item) {\n scope.selectedArea = area;\n item.value = area.id;\n }\n scope.selectProject = function (project, item) {\n scope.selectedProject = project;\n item.value = project.id;\n }\n scope.projectChangeHandler = function (projectinfo) {\n if (projectinfo) {\n var project = projectinfo.project;\n var item = projectinfo.model;\n scope.selectedProject = project;\n if (item) {\n item.project = project;\n item.value = project.id;\n item.dataMissing = false;\n } else {\n checkMandatoryField();\n }\n } else {\n scope.selectedProject = null;\n }\n }\n scope.userChangeHandler = function (userinfo) {\n if (userinfo) {\n var user = userinfo.user;\n var item = userinfo.model;\n if (item) {\n item.user = user;\n item.value = user.userId;\n item.dataMissing = false;\n } else {\n checkMandatoryField();\n }\n }\n }\n\n function checkMandatoryField() {\n angular.forEach(scope.dataSource.elements, function (element) {\n if (element.type == 'project') {\n if (scope.selectedProject && scope.selectedProject.id) {\n element.dataMissing = false;\n element.value = scope.selectedProject.id;\n } else {\n element.dataMissing = true;\n }\n }\n if (element.type !== 'bool' && !element.value && element.isMandatory) {\n element.dataMissing = true;\n } else {\n element.dataMissing = false;\n }\n });\n }\n\n scope.selectUser = function (user, item) {\n item.user = user;\n item.user.responsibleImageUrl = user.profileImageUrl;\n item.user.responsibleUserId = user.id;\n item.user.responsibleUser = user.fullName;\n item.user.responsibleDisplayName = user.displayName;\n if (user.id == '') {\n item.user = null;\n item.value = null;\n item.dataMissing = true;\n } else {\n item.user = user;\n item.value = user.userId;\n item.dataMissing = false;\n }\n }\n\n scope.selectListItem = function (selectedDataListItem, item) {\n if (selectedDataListItem.name) {\n scope.selectedDataListItem = selectedDataListItem;\n item.value = selectedDataListItem.id;\n } else { // blank list element\n scope.selectedDataListItem = {};\n item.value = null;\n }\n\n }\n\n\n scope.save = function () {\n scope.isProcessing = true;\n var combinedDateTime = new Date(scope.selectedDate);\n combinedDateTime.setHours(scope.mytime.getHours());\n combinedDateTime.setMinutes(scope.mytime.getMinutes());\n var utcDate = moment(combinedDateTime).utc().format();\n var valueString = scope.value.toString();\n var valuereplacecomma = valueString.replace(/,/g, '.');\n var registration = {\n valueDate: utcDate,\n value: valuereplacecomma,\n description: scope.description\n }\n var saveOK = true;\n angular.forEach(scope.dataSource.elements, function (element) {\n if (element.type == 'project') {\n if (scope.selectedProject && scope.selectedProject.id) {\n element.value = scope.selectedProject.id;\n element.dataMissing = false;\n } else if (element.value) { //filter value is used\n element.dataMissing = false;\n } else if (element.isMandatory) {\n element.dataMissing = true;\n saveOK = false;\n element.value = null;\n }\n } else if (element.type == 'bool'){\n if(!element.value){ //either the boolean value is true or false, it should never be NULL\n element.value = false;\n }\n }\n registration[element.sourceColumn] = element.value;\n\n if (element.type !== 'bool' && !element.value && element.isMandatory) {\n element.dataMissing = true;\n saveOK = false;\n } else {\n element.dataMissing = false;\n }\n });\n if (saveOK) {\n\n if (scope.selectedItemForUpdate) {\n registration.id = scope.selectedItemForUpdate.id;\n dataService().update(registration.id, registration).then(function (savedRegistration) {\n scope.clearRegistration();\n });\n } else {\n dataService().add(scope.dataSource.id, registration).then(function (savedRegistration) {\n scope.clearRegistration();\n });\n }\n }\n scope.isProcessing = false;\n }\n\n scope.clearRegistration = function () {\n scope.isProcessing = false;\n scope.value = null;\n scope.description = \"\";\n scope.selectedItemForUpdate = null;\n scope.selectedDate = getValueDate();\n\n const year2 = scope.selectedDate.getFullYear();\n const month2 = scope.selectedDate.getMonth();\n const date2 = scope.selectedDate.getDate();\n scope.mytime = new Date(Date.UTC(year2, month2, date2, 12, 0, 0, 0));\n\n scope.selectedDataListItem = null;\n scope.selectedProject = null;\n scope.selectedAsset = null;\n angular.forEach(scope.dataSource.elements, function (element) {\n if (!(element.type === 'asset' || element.type === 'area' || element.type === 'project' || element.type === 'user' || element.type === 'list')) element.value = null;\n });\n }\n\n scope.selectDataSource = function () {\n var hasDataSerie = false;\n if (scope.dataSource) {\n hasDataSerie = true;\n }\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'dataSourceSingleSelector.html',\n controller: 'dataSourceSingleSelector',\n windowClass: 'newdeviation-modal-window',\n resolve: {\n hasDataSerie: function () {\n return hasDataSerie;\n },\n dataSource: function () {\n return scope.dataSource;\n },\n filters: function () {\n return scope.filters;\n },\n withTarget: function () {\n return false;\n },\n type: function () {\n return null;\n },\n externalOnly: function () {\n return true;\n }\n\n }\n });\n\n modalInstance.result.then(function (result) {\n scope.dataSource = result.dataSource;\n scope.filters = result.filters;\n scope.setDataSource(scope.dataSource.id);\n scope.updateSettings();\n });\n };\n\n }\n\n }\n }]);\n","import * as assetService from \"@common/services/assetService\"\n\nangular\n .module('DigiLean')\n .directive(\"register\", function () {\n return {\n templateUrl: 'register.html',\n restrict: 'E',\n scope: {\n 'header': '@',\n 'component': '@',\n 'settings': '=',\n 'settingsChangeHandler': '&'\n },\n link: function (scope, elem, attrs) {\n\n assetService.getList().then(function (data) {\n scope.assets = data;\n scope.selectedAsset = scope.assets[0];\n });\n\n\n scope.toDate = moment().toDate()\n\n scope.toDateChanged = function($event) {\n const date = $event.originalEvent.detail\n scope.toDate = date\n }\n\n var grafcolor = ['#2A2E36', '#0099DE', '#23c6c8', '#0077B5', '#5e5e5e', '#f8ac59', '#434348'],\n graphtextcolor = '#ffffff';\n\n var defaultSettings = {\n background: \"white\"\n };\n scope.$watch('settings', function () {\n // apply\n console.log(\"Pie settings: \" + scope.settings);\n scope.settings = defaultSettings;\n\n })\n\n scope.settingsChangeHandler({\n settings: defaultSettings\n })\n \n\n var host = $(elem).closest(\".widget-component\");\n var width = $(host).width() * 0.4;\n var height = $(host).height() * 0.4;\n var pieElement = $(elem).find(\".piehourschart\")[0];\n Highcharts.chart({\n chart: {\n renderTo: pieElement,\n height: height,\n width: width,\n plotBackgroundColor: null,\n plotBorderWidth: null,\n plotShadow: false,\n type: 'pie'\n },\n title: {\n text: ''\n },\n credits: {\n enabled: false //remove link to highcharts.com\n }, exporting: {\n enabled: false //remove context menu\n },\n tooltip: {\n pointFormat: '{series.name}: {point.percentage:.1f}%'\n },\n plotOptions: {\n pie: {\n allowPointSelect: true,\n cursor: 'pointer',\n dataLabels: {\n enabled: true,\n format: '{point.name}: {point.percentage:.1f} %',\n /*style: {\n color: (Highcharts.theme && Highcharts.theme.contrastTextColor) || 'black'\n },*/\n connectorColor: 'silver'\n }\n }\n },\n series: [{\n name: 'Fordeling',\n data: [\n { name: 'A', color: grafcolor[0], y: 56.33 },\n {\n name: 'B',\n color: grafcolor[1],\n y: 24.03,\n sliced: true,\n selected: true\n },\n { name: 'C', color: grafcolor[2], y: 10.38 },\n { name: 'D', color: grafcolor[3], y: 4.77 },\n { name: 'E', color: grafcolor[4], y: 0.91 },\n { name: 'Andre', color: grafcolor[5], y: 0.2 }\n ]\n }]\n });\n\n\n\n\n\n // Bar chart: Hours per day per asset\n var highChart = $(elem).find(\".registerchart\").highcharts({\n chart: {\n type: 'column'\n },\n title: {\n text: 'Ukeoversikt'//'Overview week'\n },\n credits: {\n enabled: false\n }, exporting: {\n enabled: false //remove context menu\n },\n xAxis: {\n categories: ['26. jun', '27. jun', '28. jun', '29. jun', '30. jun']\n },\n yAxis: {\n min: 0,\n title: {\n text: 'Dine totale antall timer'//'Total hours'\n },\n stackLabels: {\n enabled: true,\n style: {\n fontWeight: 'bold',\n color: grafcolor || graphtextcolor\n }\n }\n },\n tooltip: {\n headerFormat: '{point.x}
        ',\n pointFormat: '{series.name}: {point.y}
        ' + $translate.instant('COMMON_TOTAL') + ': {point.stackTotal}'\n },\n plotOptions: {\n column: {\n stacking: 'normal',\n dataLabels: {\n enabled: true\n }\n }\n },\n series: [{\n name: 'Prosjekt A',//'Nyskaping DigiLEAN',\n color: grafcolor[0],\n data: [5, 3, 4, 7, 2]\n }, {\n name: 'Prosjekt B',\n color: grafcolor[2],\n data: [2, 2, 3, 2, 1]\n }, {\n name: 'Prosjekt C',\n color: grafcolor[1],\n data: [3, 4, 4, 2, 5]\n }]\n\n\n });\n\n }\n\n }\n });\n","import CountUp from './../../../../../thirdparty/countUp/countUp.min'\nimport { getDefaultAppStyle, getDefaultAppTheme, calcDefaultAppFontSize } from \"@common/components/dashboard/designer/common/appStyleService\"\nimport \"./singlevalue.css\"\nimport * as staticFileService from \"@common/shared/staticFileService\"\n\nvar DigiLean = angular.module('DigiLean');\nDigiLean.directive(\"singleValue\", ['dataService', '$uibModal', 'debounce',\n function (dataService, $uibModal, debounce) {\n return {\n templateUrl: 'singlevalue.html',\n restrict: 'E',\n scope: {\n 'isAdminMode': '<',\n 'settings': '<',\n 'settingsChangeHandler': '&',\n 'globalTimePeriod': '@',\n 'layoutFactor': '<'\n },\n link: function (scope, elem, attrs) {\n scope.theme = getDefaultAppTheme()\n scope.themeChangedEvent = function($event) {\n scope.theme = $event.detail\n scope.updateSettings()\n }\n \n scope.appStyle = getDefaultAppStyle()\n function calcStyles() {\n scope.appStyle[\"font-size\"] = calcDefaultAppFontSize(scope.layoutFactor)\n }\n calcStyles()\n scope.$watch('layoutFactor', calcStyles)\n\n scope.title = \"\"\n scope.titleChangedEvent = function($event) {\n scope.title = $event.detail\n scope.updateSettings()\n }\n // default timeperiod\n var timeSettings = {\n timeframe: \"YTD\",\n useDefaultTimeframes: true,\n timeframes: [],\n period: null,\n getTimePeriod: function () {\n return {\n useDefaultTimeframes: timeSettings.useDefaultTimeframes,\n timeframes: timeSettings.timeframes,\n timeframe: timeSettings.timeframe,\n period: timeSettings.period\n }\n },\n setTimePeriod: function (timeframe, period) {\n timeSettings.timeframe = timeframe;\n timeSettings.period = period;\n // debounce, to make sure not starting loading several timeframes.\n scope.options = {\n timePeriod: timeSettings.getTimePeriod()\n }\n }\n }\n\n scope.setTimePeriodDebounced = debounce(timeSettings.setTimePeriod, 100, false);\n // Default options\n scope.setTimePeriodDebounced(timeSettings.timeframe, timeSettings.period);\n\n scope.filters = [];\n scope.decimals = 0;\n scope.formula = 'sum';\n scope.imageUrl = staticFileService.image(\"singlevalue.jpg\");\n\n // Dashboard Settings handling\n scope.$watch('settings', function (settings) {\n // apply\n if (settings) {\n scope.dataSource = settings.dataSource;\n if (settings.timePeriod) {\n scope.setTimePeriodDebounced(settings.timePeriod.timeframe, settings.timePeriod.period);\n }\n if (settings.title) {\n scope.title = settings.title;\n }\n if (settings.filters) {\n scope.filters = settings.filters;\n }\n if (settings.decimals) {\n scope.decimals = settings.decimals;\n }\n if (settings.formula) {\n scope.formula = settings.formula;\n }\n if (settings.theme) {\n scope.theme = settings.theme;\n }\n \n }\n\n if (!scope.dataSource && scope.isAdminMode) {\n debounceSelectDataSource()\n }\n });\n\n // Subscribe to component related event\n scope.subscribe(\"DataSourceUpdated\", function (value) {\n scope.updateValue(value.dataSource);\n });\n scope.subscribe(\"DataValueAdded\", function (value) {\n scope.updateValue(value.dataSourceId);\n });\n scope.subscribe(\"DataValueUpdated\", function (value) {\n scope.updateValue(value.dataSourceId);\n });\n scope.subscribe(\"DataValueDeleted\", function (value) {\n scope.updateValue(value.dataSourceId);\n });\n\n scope.changeFormula = function(newFormula){\n scope.formula = newFormula;\n scope.updateSettings();\n scope.updateValue(scope.dataSource.id);\n }\n\n // Select defintion to use.\n let selectDataSourceModal\n scope.selectDataSource = function () {\n if (selectDataSourceModal)\n return\n \n let hasDataSerie = false;\n if (scope.dataSource) {\n hasDataSerie = true;\n }\n \n selectDataSourceModal = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'dataSourceSingleSelector.html',\n controller: 'dataSourceSingleSelector',\n windowClass: 'newdeviation-modal-window',\n resolve: {\n hasDataSerie: function () {\n return hasDataSerie;\n },\n dataSource: function () {\n return scope.dataSource;\n },\n filters: function () {\n return scope.filters;\n },\n withTarget: function () {\n return false;\n },\n type: function () {\n return null;\n },\n externalOnly: function () {\n return false;\n }\n }\n });\n\n selectDataSourceModal.result.then(function (result) {\n if(result.dataSource && (hasDataSerie == false || scope.dataSource.id != result.dataSource.id)){\n scope.title = result.dataSource.title;\n }\n scope.dataSource = result.dataSource;\n scope.formula = 'sum';\n scope.filters = result.filters;\n scope.updateSettings();\n scope.updateValue(scope.dataSource.id);\n }, () => {}).finally(() => {\n selectDataSourceModal = null\n });\n };\n const debounceSelectDataSource = debounce(() => {\n scope.selectDataSource()\n }, 200, false)\n\n // element to update\n var valueElement = $(elem).find(\".value\")[0];\n scope.updateValue = function (id) {\n if (!scope.dataSource) return;\n if (scope.dataSource.id !== id) return;\n var options = {\n timePeriod: scope.options.timePeriod.period,\n filters: scope.filters\n\n };\n if(scope.formula == \"numberofvalues\"){\n dataService().getNumberOfValuesForPeriod(scope.dataSource.id, options).then(function (numberOfValues) {\n var animoptions = {\n decimal: '.',\n };\n var numAnim = new CountUp(valueElement, 0, numberOfValues, 0, 1, animoptions);\n numAnim.start();\n });\n } else {\n if (scope.dataSource.valueElement.unit == \"%\" || scope.formula == \"average\") {\n options.formula = \"average\";\n scope.formula = \"average\";\n }\n dataService().getSumForPeriod(scope.dataSource.id, options).then(function (sum) {\n var animoptions = {\n decimal: '.',\n };\n var numAnim = new CountUp(valueElement, 0, sum, scope.decimals, 1, animoptions);\n numAnim.start();\n });\n }\n };\n scope.registerData = function () {\n var settings = {\n dataSource: scope.dataSource\n };\n\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'registrationDialog.html',\n controller: 'registrationDialogController',\n windowClass: 'fixedwidth-modal-window',\n resolve: {\n componentSettings: function () {\n return settings;\n }\n }\n });\n modalInstance.result.then(function (result) {\n });\n };\n\n scope.updateDecimals = function () {\n scope.updateValue(scope.dataSource.id);\n scope.updateSettings();\n };\n\n scope.updateSettings = function () {\n var componentSettings = {\n title: scope.title,\n timeframe: scope.timeframe,\n timePeriod: scope.options.timePeriod,\n dataSource: scope.dataSource,\n filters: scope.filters,\n decimals: scope.decimals,\n formula: scope.formula,\n theme: scope.theme\n };\n scope.settingsChangeHandler({ settings: componentSettings });\n };\n\n scope.periodChangedHandler = function (timePeriod) {\n if (!timePeriod.timeframe) return;\n scope.options.timePeriod = timePeriod;\n\n if (scope.dataSource && scope.dataSource.id) {\n scope.updateValue(scope.dataSource.id);\n }\n\n // if adminmode, then save settings\n if (scope.isAdminMode) {\n scope.updateSettings();\n }\n };\n\n }\n }\n }]);\n","import CountUp from './../../../../../thirdparty/countUp/countUp.min'\nimport * as customerService from \"@common/services/customers/customerService\"\nimport * as assetService from \"@common/services/assetService\"\nimport { getDefaultAppStyle, getDefaultAppTheme, calcDefaultAppFontSize } from \"@common/components/dashboard/designer/common/appStyleService\"\nimport \"./singlevalueregistrationController.css\"\nimport * as staticFileService from \"@common/shared/staticFileService\"\n\nvar DigiLean = angular.module('DigiLean');\nDigiLean.directive(\"singleValueRegistration\", ['$filter', 'dataService', '$uibModal', 'areaService', 'projectService', 'dataListService','debounce', 'settingsService','dataSourceService',\n function ($filter, dataService, $uibModal, areaService, projectService, dataListService, debounce, settingsService, dataSourceService) {\n return {\n templateUrl: 'singlevalueregistration.html',\n restrict: 'E',\n scope: {\n 'isAdminMode': '=',\n 'settings': '=',\n 'userAccess': '<',\n 'settingsChangeHandler': '&',\n 'globalTimePeriod': '@',\n 'layoutFactor': '<'\n },\n link: function (scope, elem, attrs) {\n scope.theme = getDefaultAppTheme()\n scope.themeChangedEvent = function($event) {\n scope.theme = $event.detail\n scope.updateSettings()\n }\n \n scope.appStyle = getDefaultAppStyle()\n function calcStyles() {\n scope.appStyle[\"font-size\"] = calcDefaultAppFontSize(scope.layoutFactor)\n }\n calcStyles()\n scope.$watch('layoutFactor', calcStyles)\n\n scope.title = \"\";\n scope.titleChangedEvent = function($event) {\n scope.title = $event.detail\n scope.updateSettings()\n }\n\n scope.isPopupOpen = false;\n scope.isProcessing = false;\n scope.isLoadingConfig = true;\n scope.canEdit = true; // default.\n scope.selectedAsset = null;\n scope.selectedArea = null;\n scope.selectedProject = null;\n scope.selectedDate = moment().startOf('day').toDate(); //removed time portion. Check if this may affect utc date\n scope.value = null;\n scope.description = \"\";\n\n scope.selectedDataListItem = null;\n scope.selectedDataList = null;\n scope.datalists = [];\n\n // default timeperiod\n var timeSettings = {\n timeframe: \"YTD\",\n useDefaultTimeframes: true,\n timeframes: [],\n period: null,\n getTimePeriod: function () {\n return {\n useDefaultTimeframes: timeSettings.useDefaultTimeframes,\n timeframes: timeSettings.timeframes,\n timeframe: timeSettings.timeframe,\n period: timeSettings.period\n }\n },\n setTimePeriod: function (timeframe, period) {\n timeSettings.timeframe = timeframe;\n timeSettings.period = period;\n // debounce, to make sure not starting loading several timeframes.\n scope.options = {\n timePeriod: timeSettings.getTimePeriod()\n }\n }\n }\n\n scope.setTimePeriodDebounced = debounce(timeSettings.setTimePeriod, 100, false);\n // Default options\n scope.setTimePeriodDebounced(timeSettings.timeframe, timeSettings.period);\n\n scope.filters = [];\n scope.decimals = 0;\n scope.imageUrl = staticFileService.image(\"singlevalueregistration.jpg\");\n\n // Dashboard Settings handling\n scope.$watch('settings', function (settings) {\n // apply\n if (settings) {\n scope.dataSource = settings.dataSource;\n if (settings.timePeriod) {\n scope.setTimePeriodDebounced(settings.timePeriod.timeframe, settings.timePeriod.period);\n }\n if (settings.title) {\n scope.title = settings.title;\n }\n if (settings.filters) {\n scope.filters = settings.filters;\n }\n if (settings.decimals) {\n scope.decimals = settings.decimals;\n }\n if (settings.theme) {\n scope.theme = settings.theme;\n }\n \n }\n\n if (!scope.dataSource && scope.isAdminMode) {\n setTimeout(function () {\n scope.selectDataSource();\n }, 200);\n }\n });\n\n scope.$watch('userAccess', function (userAccess) {\n scope.canEdit = userAccess.isAdmin || userAccess.assetRole == \"Member\" || userAccess.assetRole == \"Owner\";\n });\n\n // Subscribe to component related event\n scope.subscribe(\"DataSourceUpdated\", function (value) {\n scope.updateValue(value.dataSource);\n });\n scope.subscribe(\"DataValueAdded\", function (value) {\n scope.updateValue(value.dataSourceId);\n });\n scope.subscribe(\"DataValueUpdated\", function (value) {\n scope.updateValue(value.dataSourceId);\n });\n scope.subscribe(\"DataValueDeleted\", function (value) {\n scope.updateValue(value.dataSourceId);\n });\n\n scope.changeTheme= function(theme){\n scope.theme = theme;\n scope.updateSettings();\n }\n\n var hasLoadedSource = false;\n var loadDataSource = function() {\n if (hasLoadedSource) return;\n dataSourceService().get(scope.dataSource.id).then(function (source) {\n scope.dataSource = source;\n hasLoadedSource = true;\n initRegistration();\n });\n }\n\n \n scope.registrationToggle = function(open) {\n if (!scope.canEdit) {\n scope.isPopupOpen = false;\n return;\n }\n if (!hasLoadedSource) {\n loadDataSource();\n }\n }\n\n // Select defintion to use.\n let selectDataSourceModal\n scope.selectDataSource = function () { \n if (selectDataSourceModal)\n return\n\n var hasDataSerie = false;\n if (scope.dataSource) {\n hasDataSerie = true;\n }\n selectDataSourceModal = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'dataSourceSingleSelector.html',\n controller: 'dataSourceSingleSelector',\n windowClass: 'newdeviation-modal-window',\n resolve: {\n hasDataSerie: function () {\n return hasDataSerie;\n },\n dataSource: function () {\n return scope.dataSource;\n },\n filters: function () {\n return scope.filters;\n },\n withTarget: function () {\n return false;\n },\n type: function () {\n return null;\n },\n externalOnly: function () {\n return true;\n }\n\n }\n });\n\n selectDataSourceModal.result.then(function (result) {\n if(result.dataSource && (hasDataSerie == false || scope.dataSource.id != result.dataSource.id)){\n scope.title = result.dataSource.title;\n }\n scope.dataSource = result.dataSource;\n scope.filters = result.filters;\n initRegistration();\n scope.updateSettings();\n scope.updateValue(scope.dataSource.id);\n }, () => {}).finally(() => {\n selectDataSourceModal = null\n });\n };\n\n scope.open = function() {\n loadDataSource();\n scope.isPopupOpen = true;\n }\n\n scope.cancel = function() {\n scope.isPopupOpen = false;\n }\n\n // element to update\n var valueElement = $(elem).find(\".value\")[0];\n scope.updateValue = function (id) {\n if (!scope.dataSource) return;\n if (scope.dataSource.id !== id) return;\n var formula = null;\n if (scope.dataSource.valueElement.unit == \"%\") {\n formula = \"average\";\n }\n var options = {\n timePeriod: scope.options.timePeriod.period,\n filters: scope.filters,\n formula: formula\n };\n dataService().getSumForPeriod(scope.dataSource.id, options).then(function (sum) {\n var animoptions = {\n decimal: '.',\n };\n var numAnim = new CountUp(valueElement, 0, sum, scope.decimals, 1, animoptions);\n numAnim.start();\n });\n };\n scope.registerData = function () {\n loadDataSource();\n var settings = {\n dataSource: scope.dataSource\n };\n\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'registrationDialog.html',\n controller: 'registrationDialogController',\n windowClass: 'fixedwidth-modal-window',\n resolve: {\n componentSettings: function () {\n return settings;\n }\n }\n });\n modalInstance.result.then(function (result) {\n });\n };\n\n scope.updateDecimals = function () {\n scope.updateValue(scope.dataSource.id);\n scope.updateSettings();\n };\n\n scope.updateSettings = function () {\n var componentSettings = {\n title: scope.title,\n timeframe: scope.timeframe,\n timePeriod: scope.options.timePeriod,\n dataSource: settingsService().getSettingsFromDataSource(scope.dataSource),\n filters: scope.filters,\n decimals: scope.decimals,\n theme: scope.theme\n };\n scope.settingsChangeHandler({ settings: componentSettings });\n };\n\n scope.periodChangedHandler = function (timePeriod) {\n if (!timePeriod.timeframe) return;\n scope.options.timePeriod = timePeriod;\n\n if (scope.dataSource && scope.dataSource.id) {\n scope.updateValue(scope.dataSource.id);\n }\n\n // if adminmode, then save settings\n if (scope.isAdminMode) {\n scope.updateSettings();\n }\n };\n\n\n scope.toDate = moment().toDate();\n\n scope.selectedDateChanged = function ($event) {\n const date = $event.originalEvent.detail\n scope.selectedDate = date\n }\n\n scope.value = null;\n\n scope.selectAsset = function (asset, item) {\n scope.selectedAsset = asset;\n item.value = asset.id;\n }\n scope.selectArea = function (area, item) {\n scope.selectedArea = area;\n item.value = area.id;\n }\n scope.selectProject = function (project, item) {\n scope.selectedProject = project;\n item.value = project.id;\n }\n scope.selectUser = function (user, item) {\n item.user = user;\n item.value = user.userId;\n }\n scope.selectListItem = function (selectedDataListItem, item) {\n scope.selectedDataListItem = selectedDataListItem;\n item.value = selectedDataListItem.id;\n }\n\n function initRegistration() {\n scope.isProcessing = false;\n scope.value = null;\n scope.description = \"\";\n scope.selectedDate = moment().startOf('day').toDate();\n scope.selectedDataListItem = null;\n angular.forEach(scope.dataSource.elements, function (element) {\n var hasFilter = $filter('filter')(scope.filters, { sourceColumn: element.sourceColumn }, true);\n if (hasFilter.length > 0) {\n if(hasFilter[0].items.length == 1){\n element.value = hasFilter[0].items[0]; //preselect the first filtered item of this filterelement\n element.registerValue = false;\n } else { //multiple selected elements\n setFilteredSelectors(element, hasFilter[0].items)\n }\n }\n else {\n element.registerValue = true;\n switch (element.type) {\n case \"asset\":\n assetService.getAllAssets(true).then(function (data) {\n scope.assets = data;\n });\n break;\n case \"area\":\n areaService().getList(true).then(function (data) {\n scope.areas = data;\n });\n break;\n case \"project\":\n projectService().getList(true).then(function (data) {\n scope.projects = data;\n });\n break;\n case \"user\":\n customerService.getAllUsers().then(function (users) {\n scope.allUsers = users;\n });\n break;\n case \"list\":\n var listOptions = {includeDeletedItems:false};\n dataListService().getItems(element.dataListId, listOptions).then(function (list) {\n if (list) {\n element.dataList = list;\n element.selectedDataListItem = {};\n }\n });\n break;\n default:\n element.value = null;\n\n }\n }\n });\n\n scope.isLoadingConfig = false;\n \n }\n\n function setFilteredSelectors(element, filteritems){\n element.registerValue = true;\n switch (element.type) {\n case \"asset\":\n assetService.getAllAssets(true).then(function (data) {\n scope.assets = [];\n for(var i=0; i 0) {\n scope.assets.push(hasElement[0]);\n }\n }\n });\n break;\n case \"area\":\n areaService().getList(true).then(function (data) {\n scope.areas = [];\n for(var i=0; i 0) {\n scope.areas.push(hasElement[0]);\n }\n }\n });\n break;\n case \"project\":\n projectService().getList(true).then(function (data) {\n scope.projects = [];\n for(var i=0; i 0) {\n scope.projects.push(hasElement[0]);\n }\n }\n });\n break;\n case \"user\":\n customerService.getAllUsers().then(function (data) {\n scope.allUsers = [];\n for(var i=0; i 0) {\n scope.allUsers.push(hasElement[0]);\n }\n }\n });\n break;\n case \"list\":\n var listOptions = {includeDeletedItems:false};\n dataListService().getItems(element.dataListId, listOptions).then(function (list) {\n if (list) {\n element.dataList = [];\n for(var i=0; i 0) {\n element.dataList.push(hasElement[0]);\n }\n }\n element.selectedDataListItem = {};\n }\n });\n break;\n default:\n element.value = null;\n }\n }\n\n\n\n scope.save = function () {\n scope.isProcessing = true;\n\n const year = scope.selectedDate.getFullYear();\n const month = scope.selectedDate.getMonth();\n const date = scope.selectedDate.getDate();\n const utcDate = new Date(Date.UTC(year, month, date, 12, 0, 0, 0));\n\n\n\n var valueString = scope.value.toString();\n var valuereplacecomma = valueString.replace(/,/g, '.');\n var registration = {\n valueDate: utcDate,\n value: valuereplacecomma,\n description: scope.description\n }\n var saveOK = true;\n angular.forEach(scope.dataSource.elements, function (element) {\n if (element.type == 'project') {\n if (scope.selectedProject && scope.selectedProject.id) {\n element.value = scope.selectedProject.id;\n element.dataMissing = false;\n } else if (element.value) { //filter value is used\n element.dataMissing = false;\n } else if (element.isMandatory) {\n element.dataMissing = true;\n saveOK = false;\n element.value = null;\n }\n }\n registration[element.sourceColumn] = element.value;\n\n if (element.type !== 'bool' && !element.value && element.isMandatory) {\n element.dataMissing = true;\n saveOK = false;\n } else {\n element.dataMissing = false;\n }\n });\n if (saveOK) {\n dataService().add(scope.dataSource.id, registration).then(function (savedRegistration) {\n scope.isPopupOpen = false;\n initRegistration();\n });\n }\n scope.isProcessing = false;\n }\n\n }\n }\n }]);\n","import \"./singlevaluetarget.css\"\nimport CountUp from './../../../../../thirdparty/countUp/countUp.min';\nimport { getDefaultAppStyle, getDefaultAppTheme, calcDefaultAppFontSize } from \"@common/components/dashboard/designer/common/appStyleService\"\nimport * as staticFileService from \"@common/shared/staticFileService\"\n\nconst DigiLean = angular.module('DigiLean')\nDigiLean.directive(\"singleValueTarget\", ['dataService', 'dataSourceService', '$uibModal','debounce',\n function (dataService, dataSourceService, $uibModal, debounce) {\n return {\n templateUrl: 'singlevaluetarget.html',\n restrict: 'E',\n scope: {\n 'isAdminMode': '=',\n 'settings': '=',\n 'settingsChangeHandler': '&',\n 'globalTimePeriod': '@',\n 'layoutFactor': '<'\n },\n link: function (scope, elem, attrs) {\n // \n scope.title = \"\";\n scope.filters = [];\n scope.decimals = 0;\n scope.formula = 'sum';\n scope.showTargetGoal = true;\n scope.targetDescription = \"\";\n scope.targetIndicator;\n var value = 0;\n scope.static = staticFileService;\n\n scope.theme = getDefaultAppTheme()\n scope.themeChangedEvent = function($event) {\n scope.theme = $event.detail\n scope.updateSettings()\n }\n \n scope.appStyle = getDefaultAppStyle()\n function calcStyles() {\n scope.appStyle[\"font-size\"] = calcDefaultAppFontSize(scope.layoutFactor)\n }\n calcStyles()\n scope.$watch('layoutFactor', calcStyles)\n \n scope.titleChangedEvent = function($event) {\n scope.title = $event.detail\n scope.updateSettings()\n }\n // default timeperiod\n var timeFrames = ['all', 'lastyear', 'thisyear', 'fiscalyear','previousmonth', 'month', 'custom'];\n var timeFramesYear = ['all', 'last3years', 'lastyear', 'thisyear', 'fiscalyear','custom'];\n var timeFramesMonth = ['all', 'last12mth', 'lastyear', 'thisyear', 'fiscalyear','YTM', 'previousmonth', 'month', 'custom'];\n var timeFramesWeek = ['all', 'last12mth', 'lastyear', 'thisyear', 'fiscalyear','YTW', 'previousmonth', 'month','previousisoweek','isoweek', 'custom'];\n var timeFramesDay = ['all', 'last12mth', 'thisyear', 'fiscalyear','YTD', 'previousmonth', 'month', '30','previousisoweek', 'isoweek','yesterday', 'day', 'number', 'custom'];\n\n var timeSettings = {\n timeframe: \"thisyear\",\n useDefaultTimeframes: false,\n timeframes: timeFrames,\n period: null,\n getTimePeriod: function () {\n return {\n useDefaultTimeframes: timeSettings.useDefaultTimeframes,\n timeframes: timeSettings.timeframes,\n timeframe: timeSettings.timeframe,\n period: timeSettings.period\n }\n },\n setTimePeriod: function (timeframe, period) {\n timeSettings.timeframe = timeframe;\n timeSettings.period = period;\n // debounce, to make sure not starting loading several timeframes.\n scope.options = {\n timePeriod: timeSettings.getTimePeriod()\n }\n },\n\n setTimeframes: function () {\n if (!scope.dataSource) return;\n if (scope.dataSource.unitOfTime === 'DAY') {\n timeSettings.timeframes = timeFramesDay;\n } else if (scope.dataSource.unitOfTime === 'WEEK') {\n timeSettings.timeframes = timeFramesWeek;\n } else if (scope.dataSource.unitOfTime === 'MONTH') {\n timeSettings.timeframes = timeFramesMonth;\n } else if (scope.dataSource.unitOfTime === 'YEAR') {\n timeSettings.timeframes = timeFramesYear;\n }\n if(scope.options){\n scope.options.timePeriod.timeframes = timeSettings.timeframes;\n }\n }\n }\n scope.setTimePeriodDebounced = debounce(timeSettings.setTimePeriod, 100, false);\n // Default options\n scope.setTimePeriodDebounced(timeSettings.timeframe, timeSettings.period);\n\n\n // Dashboard Settings handling\n scope.$watch('settings', function (settings) {\n // apply\n if (settings) {\n if (settings.dataSource) {\n scope.dataSource = settings.dataSource;\n }\n if (settings.filters) {\n scope.filters = settings.filters;\n }\n if (settings.timePeriod) {\n scope.setTimePeriodDebounced(settings.timePeriod.timeframe, settings.timePeriod.period);\n }\n timeSettings.setTimeframes();\n\n if (settings.title) {\n scope.title = settings.title;\n }\n if (settings.decimals) {\n scope.decimals = settings.decimals;\n }\n if (settings.showTargetGoal === false) {\n scope.showTargetGoal = settings.showTargetGoal;\n }\n if (settings.formula) {\n scope.formula = settings.formula;\n }\n if (settings.theme) {\n scope.theme = settings.theme;\n }\n }\n\n if (!scope.dataSource && scope.isAdminMode){\n // debounce to prevent double dialog\n selectDataSourceDebounced()\n }\n });\n\n\n scope.changeTheme= function(theme){\n scope.theme = theme;\n scope.updateSettings();\n }\n\n function resizeChart() {\n var host = $(elem).closest(\".grid-stack-item-content\");\n if (host.length == 0)\n host = $(elem).closest(\".modal-body\")\n \n if (host.length == 0) return;\n var height = host.height();\n height = height - 100;\n if (height < 40) height = 40;\n if (height > 80) height = 80;\n // var targetSymbolHeight = height;\n var valueElement = $(host).find(\".value-symbol\");\n $(valueElement).css(\"font-size\", height);\n }\n\n scope.$on(\"widget-resized\", function (event, args) {\n resizeChart();\n });\n\n\n\n // Subscribe to component related event\n scope.subscribe(\"DataSourceUpdated\", function (value) {\n scope.updateValue(value.dataSource);\n });\n\n scope.subscribe(\"DataValueAdded\", function (value) {\n if (!value) return;\n if(shouldDataBeRefreshed(value.dataSourceId, value.valueDate)) {\n if(scope.dataSource.targetDataSource && scope.dataSource.targetDataSource.id == value.dataSourceId) {\n updateTargetValue();\n } else {\n scope.updateValue(value.dataSourceId);\n }\n }\n });\n scope.subscribe(\"DataValueUpdated\", function (value) {\n if (!value) return;\n if(shouldDataBeRefreshed(value.dataSourceId, value.valueDate)) {\n if(scope.dataSource.targetDataSource && scope.dataSource.targetDataSource.id == value.dataSourceId) {\n updateTargetValue();\n } else {\n scope.updateValue(value.dataSourceId);\n }\n }\n });\n scope.subscribe(\"DataValueDeleted\", function (value) {\n if (!value) return;\n if(shouldDataBeRefreshed(value.dataSourceId, value.valueDate)) {\n if(scope.dataSource.targetDataSource && scope.dataSource.targetDataSource.id == value.dataSourceId) {\n updateTargetValue();\n } else {\n scope.updateValue(value.dataSourceId);\n }\n }\n });\n\n function dateInSelectedTimeFrame(utcDate) {\n if (!scope.timePeriod) {\n return true;\n }\n if (moment(utcDate).isBefore(scope.timePeriod.period.from) ||\n moment(utcDate).isAfter(scope.timePeriod.period.to)) {\n return false;\n } else {\n return true;\n }\n }\n function shouldDataBeRefreshed(dataSourceId, valueDate){\n if (!scope.dataSource) return false;\n if (scope.dataSource.id === dataSourceId) {\n if (dateInSelectedTimeFrame(valueDate)) {\n return true;\n } \n } else if (scope.dataSource.targetDataSource && scope.dataSource.targetDataSource.id === dataSourceId) {\n if (dateInSelectedTimeFrame(valueDate)) {\n return true;\n } \n }\n return false;\n }\n\n\n scope.changeFormula = function(newFormula){\n scope.formula = newFormula;\n scope.updateSettings();\n scope.updateValue(scope.dataSource.id);\n }\n\n scope.toggleShowTargetGoal = function () {\n scope.updateSettings();\n }\n\n scope.registerData = function () {\n var settings = {\n dataSource: scope.dataSource\n };\n\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'registrationDialog.html',\n controller: 'registrationDialogController',\n windowClass: 'fixedwidth-modal-window',\n resolve: {\n componentSettings: function () {\n return settings;\n }\n }\n });\n modalInstance.result.then(function (result) {\n });\n };\n\n let dataSeriesModalInstance = null\n // Select defintion to use.\n scope.selectDataSource = function () {\n console.log(\"scope.selectDataSource func\")\n if (dataSeriesModalInstance)\n return //prevent double\n\n var hasDataSerie = false;\n if (scope.dataSource) {\n hasDataSerie = true;\n }\n dataSeriesModalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'dataSourceSingleSelector.html',\n controller: 'dataSourceSingleSelector',\n windowClass: 'newdeviation-modal-window',\n resolve: {\n hasDataSerie: function () {\n return hasDataSerie;\n },\n dataSource: function () {\n return scope.dataSource;\n },\n filters: function () {\n return scope.filters;\n },\n withTarget: function () {\n return true;\n },\n type: function () {\n return null;\n },\n externalOnly: function () {\n return false;\n }\n }\n });\n \n dataSeriesModalInstance.result.then(function (result) {\n if(result.dataSource && (hasDataSerie == false || scope.dataSource.id != result.dataSource.id)){\n scope.title = result.dataSource.title;\n }\n scope.dataSource = result.dataSource;\n if (result.dataSource.valueElement.unit == \"%\") {\n scope.formula = \"average\";\n }\n scope.filters = result.filters;\n timeSettings.setTimeframes();\n scope.setTimePeriodDebounced(scope.options.timePeriod.timeframe, scope.options.timePeriod);\n scope.updateSettings();\n scope.updateValue(scope.dataSource.id);\n\n }, ()=>{ /*cancel*/}).finally(() => {\n dataSeriesModalInstance = null\n });\n }\n\n const selectDataSourceDebounced = debounce(scope.selectDataSource, 200, false)\n\n function updateTargetValue(){\n \n var timePeriod = {\n from: scope.options.timePeriod.period.from,\n to: scope.options.timePeriod.period.to\n };\n var options = {\n timePeriod: timePeriod,\n value: value,\n formula: scope.formula\n };\n setOtherDatasourceTargetResultForPeriod(options);\n }\n\n // element to update\n var valueElement = $(elem).find(\".value\")[0];\n scope.updateValue = function (id) {\n if (!scope.dataSource) return;\n if (scope.dataSource.id !== id) return;\n var timePeriod = {\n from: scope.options.timePeriod.period.from,\n to: scope.options.timePeriod.period.to\n };\n var options = {\n timePeriod: timePeriod,\n filters: scope.filters\n };\n\n dataService().getSumForPeriod(scope.dataSource.id, options).then(function (sum) {\n\n var options = {\n timePeriod: timePeriod,\n value: sum,\n filters: scope.filters,\n formula: scope.formula\n };\n scope.targetDescription = \"\"\n scope.targetIndicator = \"\";\n dataService().getNumberOfValuesForPeriod(scope.dataSource.id, options).then(function (numberOfValues) {\n options.numberOfValues = numberOfValues;\n // If average, adjust sum to average calculation\n if (scope.formula == \"average\") {\n sum = sum / numberOfValues;\n options.value = sum;\n }\n value = sum; // save for target datasource calculation\n if(scope.dataSource.targetDataSource && scope.dataSource.targetDataSource.id){\n setOtherDatasourceTargetResultForPeriod(options);\n } else if (scope.dataSource.objectSource == 'internal') {\n setInternalTargetResultForPeriod(options);\n } else {\n if (scope.dataSource.targets) {\n options.targets = scope.dataSource.targets;\n }\n dataSourceService().getTargetSumForPeriod(scope.dataSource.id, options).then(function (targetresult) {\n if (targetresult) {\n scope.targetDescription = targetresult.greenOperator + \" \" + targetresult.greenValue.toFixed(scope.decimals);\n scope.targetIndicator = targetresult.targetIndicator;\n\n }\n });\n }\n \n var animoptions = {\n decimal: '.',\n };\n var numAnim = new CountUp(valueElement, 0, sum, scope.decimals, 1, animoptions);\n numAnim.start();\n resizeChart();\n });\n });\n };\n\n function setOtherDatasourceTargetResultForPeriod(options) {\n var targetOptions = {\n timePeriod: options.timePeriod,\n filters: scope.dataSource.targetFilters,\n formula: scope.formula\n };\n dataService().getSumForPeriod(scope.dataSource.targetDataSource.id, targetOptions).then(function (targetsum) {\n var targetResult = DigiLean.target.getTargetResultByValueAndOperator(options.value, scope.dataSource.targetGreenOperator, targetsum);\n if(targetResult){\n scope.targetIndicator = targetResult.targetIndicator;\n scope.targetDescription = scope.dataSource.targetGreenOperator + \" \" + targetsum.toFixed(scope.decimals);\n }\n });\n }\n\n scope.updateDecimals = function () {\n scope.updateValue(scope.dataSource.id);\n scope.updateSettings();\n };\n\n scope.updateSettings = function () {\n var componentSettings = {\n title: scope.title,\n timePeriod: scope.options.timePeriod,\n dataSource: scope.dataSource,\n filters: scope.filters,\n decimals: scope.decimals,\n showTargetGoal: scope.showTargetGoal,\n formula: scope.formula,\n theme: scope.theme\n };\n scope.settingsChangeHandler({ settings: componentSettings });\n };\n\n scope.periodChangedHandler = function (timePeriod) {\n if (!timePeriod.timeframe) return;\n scope.options.timePeriod = timePeriod;\n\n if (scope.dataSource && scope.dataSource.id) {\n scope.updateValue(scope.dataSource.id);\n }\n\n // if adminmode, then save settings\n if (scope.isAdminMode) {\n scope.updateSettings();\n }\n };\n\n\n function setInternalTargetResultForPeriod(options) {\n\n var validTargetsInPeriod = scope.dataSource.targets;\n\n if (validTargetsInPeriod == null || validTargetsInPeriod.length == 0) return;\n if (scope.dataSource.unitOfTime == null) return;\n\n var fromdate = moment(scope.options.timePeriod.period.from).toDate();\n var todate = moment(scope.options.timePeriod.period.to).toDate();\n var greenvalue = 0;\n var redvalue = 0;\n if (scope.dataSource.unitOfTime == \"YEAR\") {\n var totalNumOfYears = moment(todate).get('year') - moment(fromdate).get('year');\n if(totalNumOfYears == 0) totalNumOfYears = 1;\n\n for (var m = 0; m < totalNumOfYears; m++) {\n for (var t = validTargetsInPeriod.length; t > 0; t--) {\n var target = validTargetsInPeriod[t - 1];\n\n if (moment(target.validFrom).toDate() <= fromdate) {\n greenvalue = greenvalue + Number(target.greenValue);\n if (target.redValue != null) {\n redvalue = redvalue + Number(target.redValue);\n }\n break;\n }\n\n }\n fromdate = moment(fromdate).add(1, 'year');\n var daysOfNewMonth = moment(fromdate).daysInMonth();\n fromdate = moment(fromdate).add(daysOfNewMonth + moment(fromdate).get('day'));\n }\n if (scope.dataSource.valueUnit == \"%\" || scope.formula == \"average\") {\n redvalue = redvalue / totalNumOfYears;\n greenvalue = greenvalue / totalNumOfYears;\n options.value = options.value / options.numberOfValues;\n }\n\n }\n if (scope.dataSource.unitOfTime == \"MONTH\") {\n\n var totalNumOfMonths = (moment.utc(todate).get('year') \n - moment.utc(fromdate).get('year')) * 12 \n + moment.utc(todate).get('month') \n - moment.utc(fromdate).get('month');//(todate.Year - fromdate.Year) * 12 + todate.Month - fromdate.Month;\n\n for (var m = 0; m < totalNumOfMonths; m++) {\n //angular.forEach(validTargetsInPeriod, function (target) {\n for (var t = validTargetsInPeriod.length; t > 0; t--) {\n var target = validTargetsInPeriod[t - 1];\n if (moment(target.validFrom).toDate() <= fromdate) {\n greenvalue = greenvalue + Number(target.greenValue);\n if (target.redValue != null) {\n redvalue = redvalue + Number(target.redValue);\n }\n break;\n }\n\n }//);\n fromdate = moment(fromdate).add(1, 'month');//fromdate.AddMonths(1);\n var daysOfNewMonth = moment(fromdate).daysInMonth();//DateTime.DaysInMonth(fromdate.Year, fromdate.Month);\n if (moment(fromdate).get('day') < daysOfNewMonth) { // Handles e.g when february adds one but \"truncates\" days to 28. Must add missing days in next month\n fromdate = moment(fromdate).add(daysOfNewMonth - moment(fromdate).get('day'));//fromdate.AddDays(daysOfNewMonth-fromdate.Day);\n }\n }\n if (scope.dataSource.valueUnit == \"%\" || scope.formula == \"average\") {\n redvalue = redvalue / totalNumOfMonths;\n greenvalue = greenvalue / totalNumOfMonths;\n options.value = options.value / options.numberOfValues;\n }\n }\n if (scope.dataSource.unitOfTime == \"WEEK\") {\n\n var isoYearStartDate = moment.utc(fromdate).isoWeekYear();\n var isoYearEndDate = moment.utc(todate).isoWeekYear();\n var totalNumOfWeeks = 0;\n if(isoYearStartDate 0; t--) {\n var target = validTargetsInPeriod[t - 1];\n if (moment(target.validFrom).toDate() <= fromdate) {\n greenvalue = greenvalue + Number(target.greenValue);\n if (target.redValue != null) {\n redvalue = redvalue + Number(target.redValue);\n }\n break;\n }\n\n }\n fromdate = moment(fromdate).add(7, 'day');\n /*var daysOfNewMonth = moment(fromdate).daysInMonth();//DateTime.DaysInMonth(fromdate.Year, fromdate.Month);\n if (moment(fromdate).get('day') < daysOfNewMonth) { // Handles e.g when february adds one but \"truncates\" days to 28. Must add missing days in next month\n fromdate = moment(fromdate).add(daysOfNewMonth - moment(fromdate).get('day'));//fromdate.AddDays(daysOfNewMonth-fromdate.Day);\n }*/\n }\n if (scope.dataSource.valueUnit == \"%\" || scope.formula == \"average\") {\n redvalue = redvalue / totalNumOfWeeks;\n greenvalue = greenvalue / totalNumOfWeeks;\n options.value = options.value / options.numberOfValues;\n }\n }\n if (scope.dataSource.unitOfTime == \"DAY\") {\n var totalNumOfDays = 0;\n while (moment(options.timePeriod.to).toDate() >= fromdate) {\n totalNumOfDays = totalNumOfDays + 1;\n for (var t = validTargetsInPeriod.length; t > 0; t--) {\n var target = validTargetsInPeriod[t - 1];\n if (moment(target.validFrom).toDate() <= fromdate) {\n greenvalue = greenvalue + Number(target.greenValue);\n if (target.redValue != null) {\n redvalue = redvalue + Number(target.redValue);\n }\n break;\n }\n\n }\n fromdate = moment(fromdate).add(1, 'day');\n }\n if (scope.dataSource.valueUnit == \"%\" || scope.formula == \"average\") {\n redvalue = redvalue / totalNumOfDays;\n greenvalue = greenvalue / totalNumOfDays;\n options.value = options.value / options.numberOfValues;\n }\n }\n\n var result = {\n greenOperator: validTargetsInPeriod[0].greenOperator,\n greenValue: greenvalue,\n redOperator: validTargetsInPeriod[0].redOperator,\n redValue: redvalue,\n targetIndicator: \"\"\n }\n\n if (options.value == null) {\n result.targetIndicator = \"\";\n } else {\n result.targetIndicator = \"yellow\";\n\n if (validTargetsInPeriod[0].greenOperator == \"<\") {\n if (options.value < result.greenValue) {\n result.targetIndicator = \"green\";\n }\n if (validTargetsInPeriod[0].RedOperator == \">=\") {\n if (options.value >= result.redValue) {\n result.targetIndicator = \"red\";\n }\n } else if (validTargetsInPeriod[0].redOperator == \">\") {\n if (options.value > result.redValue) {\n result.targetIndicator = \"red\";\n }\n }\n }\n if (validTargetsInPeriod[0].greenOperator == \"<=\") {\n if (options.value <= result.greenValue) {\n result.targetIndicator = \"green\";\n }\n if (validTargetsInPeriod[0].redOperator == \">=\") {\n if (options.value >= result.redValue) {\n result.targetIndicator = \"red\";\n }\n } else if (validTargetsInPeriod[0].redOperator == \">\") {\n if (options.value > result.redValue) {\n result.targetIndicator = \"red\";\n }\n }\n }\n if (validTargetsInPeriod[0].greenOperator == \">\") {\n if (options.value > result.greenValue) {\n result.targetIndicator = \"green\";\n }\n if (validTargetsInPeriod[0].redOperator == \"<=\") {\n if (options.value <= result.redValue) {\n result.targetIndicator = \"red\";\n }\n } else if (validTargetsInPeriod[0].redOperator == \"<\") {\n if (options.value < result.redValue) {\n result.targetIndicator = \"red\";\n }\n }\n }\n if (validTargetsInPeriod[0].greenOperator == \">=\") {\n if (options.value >= result.greenValue) {\n result.targetIndicator = \"green\";\n }\n if (validTargetsInPeriod[0].redOperator == \"<=\") {\n if (options.value <= result.redValue) {\n result.targetIndicator = \"red\";\n }\n } else if (validTargetsInPeriod[0].redOperator == \"<\") {\n if (options.value < result.redValue) {\n result.targetIndicator = \"red\";\n }\n }\n }\n }\n scope.targetDescription = result.greenOperator + \" \" + result.greenValue.toFixed(scope.decimals);\n scope.targetIndicator = result.targetIndicator;\n\n }\n\n }\n }\n }]);\n","import * as boardService from \"@common/services/boardService\"\n\nangular\n .module(\"DigiLean\")\n .directive('teamTasks', ['$filter', '$uibModal', '$state', 'boardTaskService', 'taskDrawingService',\n function ($filter, $uibModal, $state, boardTaskService, taskDrawingService) {\n return {\n templateUrl: 'teamtasks.html',\n restrict: 'E',\n scope: {\n 'isAdminMode': '=',\n 'settings': '=',\n 'settingsChangeHandler': '&'\n },\n link: function (scope, elem, attrs) {\n scope.boards = [];\n\n scope.$watch('settings', function (settings) {\n checkSettings();\n });\n\n\n setTimeout(function () {\n $(\"#overdue, #donext1, #donext2, #donext3\").sortable({\n connectWith: \".connectList\",\n update: function (event, ui) {\n var id = $(ui.item[0]).attr(\"data-id\");\n moveOverdueTaskToNextMeeting(parseInt(id));\n var todo = $(\"#overdue\").sortable(\"toArray\");\n var inprogress = $(\"#donext1\").sortable(\"toArray\");\n var completed = $(\"#donext2\").sortable(\"toArray\");\n $('.output').html(\"ToDo: \" + JSON.stringify(todo) + \"
        \" + \"In Progress: \" + JSON.stringify(inprogress) + \"
        \" + \"Completed: \" + JSON.stringify(completed));\n }\n }).disableSelection();\n }, 50);\n\n\n var colorClasses = [\"label-primary\", \"label-warning-light\"];\n\n scope.daysBetweenMeetings = 7;\n scope.workList = {};\n scope.nextweekworkList = {};\n\n scope.emptyUser = {\n id: '',\n userName: null,\n profileImageUrl: null,\n fullName: null,\n displayName: null\n }\n\n scope.changeStatus = function (task) {\n task.status = taskDrawingService().getNextStatus(task.status).status;\n var statusOptions = {\n taskId: task.id,\n status: task.status\n };\n boardTaskService().updateStatus(task.id, statusOptions).then(function (taskIds) {\n\n });\n }\n\n function moveOverdueTaskToNextMeeting(taskid) {\n var newDate = moment().add(1, 'days').toDate();\n boardTaskService().updateDate(taskid, newDate).then(function (taskIds) {\n\n });\n };\n\n\n scope.openConfiguration = function () {\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'teamTaskConfiguration.html',\n controller: 'teamTaskConfiguration',\n windowClass: 'small-modal-window',\n resolve: {\n daysBetweenMeetings: function () {\n return scope.daysBetweenMeetings;\n }\n }\n });\n\n modalInstance.result.then(function (days) {\n scope.daysBetweenMeetings = days;\n updateSettings();\n getActionList();\n });\n };\n\n scope.boardChanged = function (board) {\n scope.selectedBoard = board;\n getActionList();\n updateSettings();\n };\n\n scope.subscribe('TaskUpdated', function (task) {\n if (task.boardId == scope.selectedBoard.id) {\n getActionList();\n }\n });\n\n scope.subscribe('TaskStatusUpdated', function (status) {\n if (isTaskInWorkList(status.taskId)) {\n getActionList();\n }\n });\n scope.subscribe('TaskMoved', function (taskMoved) {\n if (isTaskInWorkList(taskMoved.taskId)) {\n getActionList();\n }\n });\n scope.subscribe(\"NewTask\", function (data) {\n if (data.boardId == scope.selectedBoard.id) {\n getActionList();\n }\n });\n scope.subscribe('TaskDeleted', function (id) {\n if (isTaskInWorkList(id)) {\n getActionList();\n }\n });\n scope.subscribe('RepeatingTasksDeleted', function (taskIds) {\n // If current user is involved in task.\n angular.forEach(taskIds, function (id, key) {\n if (isTaskInWorkList(id)) {\n getActionList();\n }\n });\n });\n\n scope.subscribe('TaskAssigned', function (status) {\n\n if (isTaskInWorkList(status.taskId)) {\n getActionList();\n }\n });\n\n scope.openForEdit = function (task, activeTab) {\n if (!activeTab) activeTab = \"Info\";\n boardTaskService().get(task.id).then(function (task) {\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'boardTask.html',\n controller: 'boardTaskController',\n resolve: {\n task: function () {\n return task;\n },\n activeTab: function () {\n return activeTab;\n },\n options: function () {\n var options = {\n archiveAvailable: false\n }\n return options;\n }\n }\n });\n });\n };\n\n scope.newTask = function () {\n var task = {\n id: 0,\n boardId: scope.selectedBoard.id,\n title: \"\",\n text: \"\",\n boardDate: moment().add(1, 'days'),\n status: 'blank',\n tags: \"\"\n }\n\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'newBoardTask.html',\n controller: 'newBoardTaskController',\n resolve: {\n task: function () {\n return task;\n },\n options: function () {\n var options = {\n canChangeBoard: false,\n showDueDate: true,\n users: scope.users\n }\n return options;\n }\n }\n });\n };\n\n function isTaskInWorkList(id) {\n var workList = scope.workList;\n if (workList.all) {\n var task = $filter('filter')(workList.all, { id: id });\n if (task.length > 0) {\n return true;\n }\n }\n var nextWeekworkList = scope.nextweekworkList;\n if (nextWeekworkList.all) {\n var task = $filter('filter')(nextWeekworkList.all, { id: id });\n if (task.length > 0) {\n return true;\n }\n }\n return false;\n };\n\n\n\n scope.selectUser = function (user, task) {\n\n var assignUser = {\n taskId: task.id,\n previousUserId: task.responsibleUserId,\n previousUserName: task.responsibleUser,\n userId: user.id,\n userName: user.fullName,\n userDisplayName: user.displayName\n }\n var options = {\n taskId: task.id,\n user: assignUser\n };\n boardTaskService().assignUser(options).then(function () {\n\n });\n }\n\n function setProfileImage(tasklist) {\n if (!scope.users || !tasklist) return;\n for (var t = 0; t < tasklist.length; t++) {\n var task = tasklist[t];\n if (task && task.responsibleUserId) {\n for (var i = 0; i < scope.users.length; i++) {\n var user = scope.users[i];\n if (user.profileImageUrl && user.id == task.responsibleUserId) {\n task.responsibleImageUrl = user.profileImageUrl;\n }\n }\n }\n }\n }\n\n function getDataForPeriod(startDate, endDate, periodsBackInTime) {\n var period = {\n from: startDate.utc().toDate().toJSON(),\n to: endDate.utc().toDate().toJSON()\n }\n boardTaskService().getBoardStatus(scope.selectedBoard.id, period).then(function (data) {\n scope.workList = data;\n setProfileImage(scope.workList.completed);\n setProfileImage(scope.workList.open);\n setProfileImage(scope.workList.rejected);\n var updatedperiodsBackInTime = periodsBackInTime + 1;\n if (data.all.length == 0 && periodsBackInTime < 10) {\n var newEndDate = startDate.clone().subtract(1, 'days').endOf('day');\n var newStartDate = startDate.clone().subtract(scope.daysBetweenMeetings, 'days').startOf('day');\n\n getDataForPeriod(newStartDate, newEndDate, updatedperiodsBackInTime);\n } else {\n return;\n }\n });\n }\n\n // Get tasks last week\n function getActionList() {\n if (!scope.selectedBoard) return;\n scope.workList = null;\n scope.nextweekworkList = null;\n\n var startDate = moment().subtract(scope.daysBetweenMeetings, 'days').startOf('day');\n var endDate = moment().subtract(1, 'days').endOf('day');\n\n getDataForPeriod(startDate, endDate, 0);\n\n var startDateNext = moment().startOf('day');\n var endDateNext = moment(startDateNext).add(scope.daysBetweenMeetings - 1, 'days').endOf(\"day\");\n\n var periodNext = {\n from: startDateNext.utc().toDate().toJSON(),\n to: endDateNext.utc().toDate().toJSON()\n }\n boardTaskService().getBoardStatus(scope.selectedBoard.id, periodNext).then(function (data) {\n\n setProfileImage(data.open);\n setProfileImage(data.rejected);\n scope.nextweekworkList = data;\n });\n }\n scope.createBoard = function () {\n $state.go('newFlexiboard');\n }\n\n function checkSettings() {\n if (scope.settings && scope.settings.daysBetweenMeetings) {\n scope.daysBetweenMeetings = scope.settings.daysBetweenMeetings;\n }\n\n boardService.getAll().then(function (boards) {\n scope.boards = boards;\n if (scope.settings && scope.settings.boardId) {\n scope.selectedBoard = $filter('filter')(boards, { id: scope.settings.boardId }, true)[0];\n } else {\n scope.selectedBoard = boards[0];\n }\n boardService.getUserListForBoard(scope.selectedBoard.id).then(function (data) {\n scope.users = data;\n getActionList();\n });\n\n });\n }\n\n function updateSettings() {\n if (scope.isAdminMode) {\n var componentSettings = {\n boardId: scope.selectedBoard.id,\n daysBetweenMeetings: scope.daysBetweenMeetings\n };\n scope.settingsChangeHandler({ settings: componentSettings });\n }\n }\n\n scope.$on(\"widget-resized\", function (event, args) {\n var host = $(elem).closest(\".grid-stack-item-content\");\n if (host.length == 0)\n host = $(elem).closest(\".modal-body\")\n\n if (host.length == 0) return;\n var width = host.width();\n var height = host.height();\n\n // Find header to subtract from new height\n var header = $(elem).find(\".ibox-title\");\n var headerHeight = header.height() + 40;\n var container = $(elem).find(\".team-tasks\");\n if (container.length === 0) return;\n $(container).css(\"height\", (height - headerHeight));\n });\n\n }\n }\n }]);\n\n","import * as boardService from \"@common/services/boardService\"\n\nangular\n .module(\"DigiLean\")\n .directive('timeBoard', ['$filter', '$uibModal', 'debounce',\n function ($filter, $uibModal, debounce) {\n return {\n templateUrl: 'timeboard.html',\n restrict: 'E',\n scope: {\n 'isAdminMode': '=',\n 'settings': '=',\n 'assetId': '<',\n 'settingsChangeHandler': '&'\n },\n link: function (scope, elem, attrs) {\n scope.boards = [];\n scope.selectedBoard = null;\n\n scope.boardData = null;\n scope.hasBoard = false;\n scope.yearlyBoardOptions = {\n showTeamMembers: true,\n showHeader: true,\n taskDetailLevel: \"normal\",\n viewModeSelection: \"year\",\n hideWrench: false\n };\n scope.optionsChangeHandler = function(options) {\n scope.yearlyBoardOptions.viewModeSelection = options.viewModeSelection;\n scope.yearlyBoardOptions.taskLevelDetails = options.taskDetailLevel;\n updateSettings();\n }\n scope.$watch('settings', function (settings) {\n scope.settings = settings;\n if (settings) {\n if(settings.boardOptions){\n scope.yearlyBoardOptions = settings.boardOptions; \n }\n loadBoard(settings.boardId);\n }\n boardService.getMemberBoards().then(function (boards) {\n // Filter\n for (let index = 0; index < boards.length; index++) {\n const board = boards[index];\n if (board.boardType == 'Yearly') {\n scope.boards.push(board);\n }\n }\n // Set selected \n if (scope.settings && scope.settings.boardId) {\n var selected = $filter('filter')(scope.boards, { id: settings.boardId });\n if (selected.length > 0) {\n scope.selectedBoard = selected[0];\n }\n }\n });\n });\n\n\n scope.boardChanged = function (selectedBoard) {\n loadBoard(selectedBoard.id);\n scope.selectedBoard = selectedBoard;\n updateSettings();\n }\n\n scope.updateBoardOptionsDetailLevel = function (detaillevel) {\n scope.yearlyBoardOptions = {\n showTeamMembers: scope.yearlyBoardOptions.showTeamMembers,\n showHeader: scope.yearlyBoardOptions.showHeader,\n taskDetailLevel: detaillevel,\n viewModeSelection: scope.yearlyBoardOptions.viewModeSelection\n };\n updateSettings();\n }\n\n scope.updateBoardOptionsView = function (view) {\n scope.yearlyBoardOptions = {\n showTeamMembers: scope.yearlyBoardOptions.showTeamMembers,\n showHeader: scope.yearlyBoardOptions.showHeader,\n taskDetailLevel: scope.yearlyBoardOptions.taskDetailLevel,\n viewModeSelection: view\n };\n updateSettings();\n }\n \n var currentBoardId = 0;\n var loadBoard = function (boardId) {\n if (currentBoardId == boardId) return;\n scope.isLoading = true;\n scope.hasBoard = true;\n boardService.get(boardId).then(function (board) {\n scope.boardData = board;\n setTimeout(function () {\n scope.isLoading = false;\n }, 500);\n })\n }\n\n function updateSettings() {\n if (scope.isAdminMode) {\n var componentSettings = {\n boardId: scope.selectedBoard.id,\n boardOptions: scope.yearlyBoardOptions\n };\n scope.settingsChangeHandler({ settings: componentSettings });\n }\n }\n\n scope.createBoard = function(){\n var template = boardService.createYearlyTemplate();\n var savetemplate = {\n board: {\n name: template.template.name,\n boardType: template.template.boardType,\n settings: template.template.settings\n },\n columns: [],\n rows: []\n };\n // set attributes\n if (template.attributes) savetemplate.attributes = template.attributes;\n // Parse columns\n template.columns.forEach(function (col) {\n savetemplate.columns.push(\n {\n name: col.name,\n weekdayName: col.weekdayName,\n sortOrder: col.sortOrder,\n categoryStyle: JSON.stringify(col.categoryStyle)\n });\n });\n template.rows.forEach(function (row) {\n savetemplate.rows.push(\n {\n name: row.name,\n sortOrder: row.sortOrder,\n categoryStyle: JSON.stringify(row.categoryStyle),\n weekdayName: row.weekdayName\n });\n });\n var options = {\n dashboardAsTemplateId: null,\n assetId: scope.assetId,\n operation: \"newTaskBoard\",\n template: savetemplate,\n }\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'newFlexiboardConfiguration.html',\n controller: 'newFlexiboardConfigurationController',\n resolve: {\n options: function () {\n return options;\n }\n }\n });\n modalInstance.result.then(function (result) {\n scope.publish(\"SendBoardCreated\", result); \n scope.boards.push(result.board);\n scope.boardChanged(result.board);\n });\n }\n \n function resize() {\n var host = $(elem).closest(\".grid-stack-item-content\");\n if (host.length == 0)\n host = $(elem).closest(\".modal-body\")\n \n if (host.length == 0) return;\n var width = host.width();\n var height = host.height();\n\n // Find header to subtract from new height\n var header = $(elem).find(\".ibox-title\");\n var headerHeight = header.height() + 40;\n var container = $(elem).find(\".timeboard\");\n if (container.length === 0) return;\n $(container).css(\"height\", (height - headerHeight));\n }\n\n const resizeDebounced = debounce(resize, 100, false)\n resizeDebounced()\n scope.$on(\"widget-resized\", function (event, args) {\n resizeDebounced()\n });\n\n }\n }\n }]);\n\n","import * as boardService from \"@common/services/boardService\"\n\nangular\n .module(\"DigiLean\")\n .directive('projectboardApp', ['$filter', 'projectService', 'debounce',\n function ($filter, projectService, debounce) {\n return {\n templateUrl: 'projectboardApp.html',\n restrict: 'E',\n scope: {\n 'isAdminMode': '=',\n 'settings': '=',\n 'settingsChangeHandler': '&'\n },\n link: function (scope, elem, attrs) {\n\n scope.boardData = null;\n scope.hasBoard = false;\n scope.$watch('settings', function (settings) {\n scope.settings = settings;\n if (settings) {\n loadBoard(settings.boardId);\n }\n projectService().getMemberProjectPortfolio().then(function (boards) {\n // Filter\n scope.boards.push({\n name: \"\",\n id: 0\n });\n // Filter\n for (let index = 0; index < boards.length; index++) {\n const board = boards[index];\n scope.boards.push(board);\n \n }\n // Set selected \n if (scope.settings && scope.settings.boardId) {\n var selected = $filter('filter')(scope.boards, { id: settings.boardId });\n if (selected.length > 0) {\n scope.selectedBoard = selected[0];\n }\n }\n else {\n if (scope.boards.length > 0) {\n loadBoard(scope.boards[0].id);\n scope.selectedBoard = scope.boards[0];\n }\n }\n });\n });\n scope.boards = [];\n scope.boardChanged = function (selectedBoard) {\n loadBoard(selectedBoard.id);\n updateSettings();\n }\n\n var currentBoardId = 0;\n var loadBoard = function (boardId) {\n if (currentBoardId == boardId) return;\n currentBoardId = boardId;\n if (boardId == 0) {\n scope.hasBoard = false;\n return; \n }\n scope.isLoading = true;\n scope.hasBoard = true;\n boardService.get(boardId).then(function (board) {\n scope.boardData = board;\n setTimeout(function () {\n scope.isLoading = false;\n updateContainerHeightDebounced();\n }, 500);\n })\n }\n function updateSettings() {\n if (scope.isAdminMode) {\n var componentSettings = {\n boardId: scope.selectedBoard.id,\n };\n scope.settingsChangeHandler({ settings: componentSettings });\n }\n }\n function updateContainerHeight() {\n var host = $(elem).closest(\".grid-stack-item-content\");\n if (host.length == 0)\n host = $(elem).closest(\".modal-body\")\n \n if (host.length == 0) return;\n var width = host.width();\n var height = host.height();\n\n // Find header to subtract from new height\n var header = $(elem).find(\".ibox-title\");\n var headerHeight = header.height() + 40;\n var container = $(elem).find(\".project-board-app\");\n if (container.length === 0) return;\n var targetHeight = height - headerHeight;\n $(container).css(\"height\", targetHeight);\n scope.options = {\n targetHeight: targetHeight\n }\n }\n const updateContainerHeightDebounced = debounce(updateContainerHeight, 100, false)\n scope.$on(\"widget-resized\", function (event, args) {\n updateContainerHeightDebounced();\n });\n\n }\n }\n }]);\n\n","import * as customerService from \"@common/services/customers/customerService\"\nimport * as timeService from \"@common/services/timeService\"\nimport * as boardService from \"@common/services/boardService\"\n\nangular\n .module(\"DigiLean\")\n .directive('performanceBoard', ['$filter', '$translate', '$uibModal', '$state', 'modalService',\n function ($filter, $translate, $uibModal, $state, modalService) {\n return {\n templateUrl: 'performanceboard.html',\n restrict: 'E',\n scope: {\n 'isAdminMode': '=',\n 'model': '<',\n 'settingsChangeHandler': '&'\n },\n link: function (scope, elem, attrs) {\n var idName = null;\n scope.isProcessing = false;\n\n scope.boardSettings = {\n countdown: {showCountdown: true, countdownMinutes:15},\n incidentfilter: 'ASSET'\n }\n\n scope.$watch('model', function (model) {\n if (!model) return;\n scope.model = model; // Should be board object\n scope.assetId = model.board.assetId;\n scope.boardId = model.board.id;\n \n if(model.board.settings){\n if (typeof (model.board.settings) === \"string\") {\n scope.boardSettings = JSON.parse(model.board.settings);\n } else if (model.board.settings){\n scope.boardSettings = model.board.settings;\n } else {\n scope.boardSettings = {\n countdown: {showCountdown: true, countdownMinutes:15},\n incidentfilter: 'ASSET'\n }\n } \n }\n applySetting();\n\n // Parse columns\n var columns = [];\n model.columns.forEach(col => {\n var settings = JSON.parse(col.settings);\n // init app Settings\n settings.apps.forEach(app => {\n switch (app.type) {\n case \"pareto\":\n app.settings = getParetoSettings(settings.deviationTypeId, scope.assetId);\n break;\n case \"deviationActionListResult\":\n app.settings = getActionListSetting(settings.deviationTypeId, scope.assetId);\n break;\n case \"deviationSeverity\":\n app.settings = getDeviationSeveritySetting(settings.deviationTypeId);\n break;\n default:\n app.settings = {\n assetId: scope.assetId,\n deviationTypeId: settings.deviationTypeId,\n title: \" \",\n identificationName: idName\n }\n break;\n }\n })\n columns.push({\n id: col.id,\n title: col.name,\n sortOrder: col.sortOrder,\n settings: settings,\n type: settings.apps[0].type,\n deviationTypeId: settings.deviationTypeId\n })\n });\n scope.columns = columns;\n if (scope.isAdminMode) {\n // Need to use delay, to allow config template to load.\n setTimeout(() => {\n scope.editConfiguration();\n }, 100);\n \n }\n });\n\n function applySetting(){\n if(scope.boardSettings.incidentfilter == \"ALL\") {\n idName = $translate.instant('COMMON_ALL');\n scope.assetId = null;\n } else if (scope.model.board.asset) {\n idName = scope.model.board.asset.name;\n scope.assetId = scope.model.board.assetId;\n }\n }\n\n scope.edit = function () {\n var _options = {\n targetType: \"Board\",\n targetId: scope.model.board.id,\n includeCustomGroup: false,\n includeProjects: false\n };\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'boardSettings.html',\n controller: 'boardSettingsController',\n resolve: {\n options: function options() {\n return _options;\n }\n }\n });\n modalInstance.result.then(function (result) {\n if(result.assetId != scope.model.board.assetId){\n location.reload(false);\n\n } else { //possibly changed title\n scope.model.board.name = result.name;\n }\n \n }, function () {});\n };\n\n scope.deleteBoard = function () {\n $translate(['COMMON_CANCEL', 'COMMON_DELETE', 'ADMIN_DELETED_BOARD', 'ADMIN_DELETED_BOARD_DESCRIPTION']).then(function (translations) {\n var modalOptions = {\n closeButtonText: translations.COMMON_CANCEL,\n actionButtonText: translations.ADMIN_DELETED_BOARD,\n headerText: translations.COMMON_DELETE + ' ' + scope.model.board.name + '?',\n bodyText: translations.ADMIN_DELETED_BOARD_DESCRIPTION\n };\n\n modalService.showModal({}, modalOptions).then(function (result) {\n boardService.deleteBoard(scope.model.board.id).then(function () {\n $state.go('flexiboards');\n scope.publish(\"SendBoardDeleted\", scope.model.board.id);\n });\n });\n\n });\n }\n\n scope.editConfiguration = function () {\n scope.isAdminMode = false;\n var model = {\n columns: [],\n settings: {\n incidentfilter: scope.boardSettings.incidentfilter\n }\n };\n scope.columns.forEach(col => {\n model.columns.push({\n title: col.title,\n type: col.type,\n deviationTypeId: col.deviationTypeId,\n id: col.id\n });\n });\n // Open dialog\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'performanceboardConfigController.html',\n controller: 'performanceboardConfigController',\n resolve: {\n model: model\n }\n });\n\n modalInstance.result.then(function (result) {\n scope.isProcessing = true;\n checkBoardSettings(result.settings);\n \n \n var listOperations = [];\n // Resolve if existing col is updated or deleted\n var columns = scope.columns;\n columns.forEach(col => {\n var exists = $filter('filter')(result.columns, { id: col.id }, true);\n if (exists.length > 0) {\n var resultColumn = exists[0];\n\n var lastRow = \"deviationActionListResult\";\n if(result.settings && result.settings.incidentfilter == \"ALL\"){\n lastRow = \"deviationSeverity\";\n }\n\n // Update app\n var colSettings = {\n deviationTypeId: resultColumn.deviationTypeId,\n apps: [\n { type: resultColumn.type },\n { type: col.settings.apps[1].type },\n { type: lastRow }\n ]\n }\n exists[0].columnSettings = colSettings;\n var cat = {\n name: resultColumn.title,\n categoryStyle : JSON.stringify(colSettings)\n }\n listOperations.push(boardService.updateCategory(col.id, cat).then(function(data) {}))\n } else {\n // delete\n listOperations.push(boardService.deleteCategory(col.id).then(function() {}));\n }\n });\n // Check which one is new.\n result.columns.forEach(item => {\n var exists = $filter('filter')(columns, { id: item.id }, true);\n if (exists.length == 0) {\n // add operation.\n var lastRow = \"deviationActionListResult\";\n if(result.settings && result.settings.incidentfilter == \"ALL\"){\n lastRow = \"deviationSeverity\";\n }\n var colSettings = {\n deviationTypeId: item.deviationTypeId,\n apps: [\n {\n type: item.type,\n },\n {\n type: \"pareto\",\n },\n {\n type: lastRow,\n },\n ]\n }\n item.columnSettings = colSettings;\n var boardCategory = {\n boardId : scope.boardId,\n name: item.title,\n isColumnCategory: true,\n categoryStyle : JSON.stringify(colSettings)\n }\n listOperations.push(boardService.createCategory(scope.boardId, boardCategory).then(function(data) {\n item.id = data.id;\n }));\n } else if (result.settings && result.settings.incidentfilter == \"ALL\"){\n item.columnSettings.apps[2].type = \"deviationSeverity\";\n }\n })\n // \n // Run all change operations\n Promise.all(listOperations).then(() => {\n var sortOrders = [];\n var index = 0;\n result.columns.forEach(item => { \n item.sortOrder = index;\n sortOrders.push({\n id: item.id,\n sortOrder : index \n });\n index += 1;\n });\n boardService.changeSortOrder(scope.boardId, sortOrders).then(function() {\n createColumns(result.columns); // Recreate\n });\n \n }); \n });\n }\n\n scope.toogleShowCountdown = function(){\n var showcountdown = scope.boardSettings.countdown.showCountdown;\n var updatedcountdownMinutes = scope.boardSettings.countdown.countdownMinutes;\n var incidentfilter = scope.boardSettings.incidentfilter;\n boardService.updateSettings(scope.boardId, scope.boardSettings).then(function () {\n scope.boardSettings = {\n countdown: {showCountdown: showcountdown, countdownMinutes:updatedcountdownMinutes},\n incidentfilter: incidentfilter\n }\n });\n }\n\n scope.updateCountdownMinutes = function(){\n if(scope.boardSettings.countdown.countdownMinutes){\n var showcountdown = scope.boardSettings.countdown.showCountdown;\n var updatedcountdownMinutes = scope.boardSettings.countdown.countdownMinutes;\n var incidentfilter = scope.boardSettings.incidentfilter;\n boardService.updateSettings(scope.boardId, scope.boardSettings).then(function () {\n scope.boardSettings = {\n countdown: {showCountdown: showcountdown, countdownMinutes:updatedcountdownMinutes},\n incidentfilter: incidentfilter\n }\n });\n }\n }\n function checkBoardSettings(settings){\n if(settings && scope.boardSettings.incidentfilter != settings.incidentfilter){\n scope.boardSettings.incidentfilter = settings.incidentfilter;\n applySetting();\n boardService.updateSettings(scope.boardId, scope.boardSettings).then(function () {\n });\n }\n }\n\n function createColumns(columns) {\n scope.columns.splice(0, 50); // Clear existing setup.\n columns.forEach(item => {\n item.columnSettings.apps.forEach(app => {\n switch (app.type) {\n case \"pareto\":\n app.settings = getParetoSettings(item.columnSettings.deviationTypeId, scope.assetId);\n break;\n case \"deviationActionListResult\":\n app.settings = getActionListSetting(item.columnSettings.deviationTypeId, scope.assetId);\n break;\n case \"deviationSeverity\":\n app.settings = getDeviationSeveritySetting(item.columnSettings.deviationTypeId);\n break;\n default:\n app.settings = {\n assetId: scope.assetId,\n deviationTypeId: item.columnSettings.deviationTypeId,\n title: \" \",\n identificationName: idName\n }\n break;\n }\n })\n scope.columns.push({\n id: item.id,\n title: item.title,\n sortOrder: item.sortOrder,\n settings: item.columnSettings,\n type: item.columnSettings.apps[0].type,\n deviationTypeId: item.columnSettings.deviationTypeId\n })\n }) \n scope.isProcessing = false;\n }\n\n \n function getDeviationSeveritySetting(deviationTypeId) {\n var filter = [\n {\n sourceColumn: \"deviationTypeId\",\n operator: \"InList\",\n items: [deviationTypeId]\n }\n ]\n return {\n autoSize: true,\n title: $translate.instant(\"DEVIATION_SEVERITY\"),\n dataSource: {\n id: \"DeviationNew\",\n title: $translate.instant('COMMON_COUNT'),\n valueElement: {\n unit: \"Number\",\n label: \"Number\"\n }\n },\n timePeriod:{\n timeframe:\"YTD\",\n period: timeService.getTimePeriod(\"YTD\")\n },\n groupedBy: \"severity\",\n groupingIntervall: \"month\",\n filters: filter\n };\n }\n function getParetoSettings(deviationTypeId, assetId) {\n var filter = [\n {\n sourceColumn: \"deviationTypeId\",\n operator: \"InList\",\n items: [deviationTypeId]\n }\n ]\n if(assetId){\n filter.push(\n {\n sourceColumn: \"assetId\",\n operator: \"InList\",\n items: [assetId]\n })\n }\n return {\n autoSize: true,\n title: $translate.instant(\"DEVIATION_SUMMARY_CATEGORIES\"),\n dataSource: {\n id: \"DeviationNew\",\n title: $translate.instant('COMMON_COUNT'),\n valueElement: {\n unit: \"Number\",\n label: \"Number\"\n }\n },\n timePeriod:{\n timeframe:\"YTD\",\n period: timeService.getTimePeriod(\"YTD\")\n },\n groupedBy: \"problemCategoryId\",\n groupingIntervall: \"month\",\n filters: filter\n };\n }\n function getActionListSetting(deviationTypeId, assetId) {\n var filter = [\n {\n sourceColumn: \"deviationTypeId\",\n operator: \"InList\",\n items: [deviationTypeId]\n }\n ]\n if(assetId){\n filter.push(\n {\n sourceColumn: \"followUpAssetId\",\n operator: \"InList\",\n items: [assetId]\n })\n }\n return filter;\n }\n\n \n \n\n scope.newTask = function (column) {\n if(!scope.users){\n customerService.getAllUsers().then(function (users) {\n scope.users = users;\n openNewTask(column);\n });\n } else {\n openNewTask(column); \n }\n }\n\n function openNewTask(column){\n var task = {\n id: 0,\n boardId: scope.model.board.id,\n boardDate: moment().toDate(),\n title: \"\",\n text: \"\",\n columnCategoryId: column.id,\n status: 'blank',\n tags: \"\",\n sortOrder: 0\n }\n var options = {\n users: scope.users,\n showDueDate: true\n }\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'newBoardTask.html',\n controller: 'newBoardTaskController',\n resolve: {\n task: function () {\n return task;\n },\n options: function () {\n return options;\n }\n }\n });\n\n modalInstance.result.then(function (result) {\n });\n }\n }\n }\n }]);\n\n","import * as dashboardService from \"@common/services/dashboardService\"\n\nangular\n .module(\"DigiLean\")\n .directive('performanceboardConfig', ['$filter', 'deviationService','appstoreService',\n function ($filter, deviationService, appstoreService) {\n return {\n templateUrl: 'performanceboardConfig.html',\n restrict: 'E',\n scope: {\n 'isAdminMode': '=',\n 'model': '<',\n 'settingsChangeHandler': '&'\n },\n link: function (scope, elem, attrs) {\n\n scope.theme = {\n background: \"transparent\",\n color: \"inherit\"\n };\n scope.postIts = dashboardService.getThemes();\n var apps = appstoreService().getApps();\n scope.kpiTypes = [\n {\n type: \"5s\",\n title: \"5S\"\n },\n {\n type: \"greencross\",\n title: \"Green cross\"\n },\n {\n type: \"A\",\n title: \"A\"\n },\n {\n type: \"C\",\n title: \"C\"\n },\n {\n type: \"D\",\n title: \"D\"\n },\n {\n type: \"I\",\n title: \"I\"\n },\n {\n type: \"K\",\n title: \"K\"\n },\n {\n type: \"L\",\n title: \"L\"\n },\n {\n type: \"P\",\n title: \"P\"\n },\n {\n type: \"Q\",\n title: \"Q\"\n },\n ];\n // Map image Url\n scope.kpiTypes.forEach(item => {\n item.imageUrl = getImageUrl(item.type);\n });\n \n\n function getImageUrl(app) {\n var matchingApp = $filter('filter')(apps, { component: app }, true); \n if (matchingApp.length > 0) {\n return matchingApp[0].previewImageUrl;\n } else {\n return \"\";\n }\n }\n\n\n deviationService().getAllDeviationTypes().then(function (types) {\n scope.deviationTypes = types;\n // map to columns.\n });\n\n scope.createNew = function () {\n var column = {\n id: 0,\n type: scope.kpiTypes[0].type,\n deviationTypeId: scope.deviationTypes[0].id,\n title: \"New column\"\n }\n column.imageUrl = getImageUrl(column.type)\n scope.columns.push(column);\n };\n\n scope.delete = function (column) {\n var index = scope.columns.indexOf(column);\n scope.columns.splice(index, 1);\n }\n\n scope.$watch('model', function (model) {\n scope.model = model; // Should be board object\n scope.columns = model.columns;\n });\n\n }\n }\n }]);\n\n","import * as customerService from \"@common/services/customers/customerService\"\nimport * as profileService from \"@common/services/user/profileService\"\nimport * as dashboardService from \"@common/services/dashboardService\"\nimport * as timeService from \"@common/services/timeService\"\nimport * as boardService from \"@common/services/boardService\"\nimport { getDefaultAppTheme } from \"@common/components/dashboard/designer/common/appStyleService\"\nimport * as translationService from \"@common/services/translationService\"\nimport * as profileImageService from \"@common/services/user/profileImageService\"\n\nangular\n .module(\"DigiLean\")\n .directive('smarttableApp', ['$filter', '$uibModal', '$translate', 'smarttableService','orderByFilter', 'debounce',\n function ($filter, $uibModal, $translate, smarttableService, orderByFilter, debounce) {\n return {\n templateUrl: 'smarttableApp.html',\n restrict: 'E',\n scope: {\n 'isAdminMode': '<',\n 'settings': '<',\n 'assetId': '<',\n 'settingsChangeHandler': '&'\n },\n link: function (scope, elem, attrs) {\n scope.title = \"\";\n scope.smartTable = null;\n scope.showAddButton = true;\n scope.showAggregateSum = true;\n scope.editable = true;\n scope.columns = [];\n scope.rows = [];\n\n scope.theme = getDefaultAppTheme()\n scope.postIts = dashboardService.getThemes();\n \n\n // Sorting\n scope.sortColumnIndex = null;\n scope.isAscedning = true;\n scope.sortColumn = null;\n scope.orderBy = function (column) {\n if (scope.sortColumn && scope.sortColumn != column) {\n scope.sortColumn.sort = \"none\";\n }\n if (!column.sort) column.sort = \"none\";\n column.sort = getNextSortOrder(column.sort);\n scope.sortColumn = column;\n scope.sortColumnIndex = scope.columns.indexOf(column);\n if (column.sort == \"none\") {\n scope.rows = orderByFilter(scope.rows, 'sortOrder');\n }\n if (column.sort == \"asc\") {\n scope.rows = orderByFilter(scope.rows, getSortValue, false);\n }\n if (column.sort == \"desc\") {\n scope.rows = orderByFilter(scope.rows, getSortValue, true);\n }\n }\n\n var getNextSortOrder = function (currentSortOrder) {\n if (currentSortOrder == \"none\") return \"asc\";\n if (currentSortOrder == \"asc\") return \"desc\";\n if (currentSortOrder == \"desc\") return \"none\";\n }\n\n var getSortValue = function (row) {\n if (row.cellModels) {\n var cell = row.cellModels[scope.sortColumnIndex];\n return cell.getSortValue();\n }\n return row.name;\n\n }\n\n // load users\n async function getAllUsers() {\n scope.users = await profileImageService.getAllUsersIncludeProfileImage()\n }\n getAllUsers();\n\n scope.$watch('settings', function (settings) {\n scope.settings = settings;\n if (settings) { \n if (settings.title) {\n scope.title = settings.title;\n }\n if (settings.tableId) {\n loadSmartTable(settings.tableId);\n }\n if (settings.showAddButton === false) {\n scope.showAddButton = settings.showAddButton;\n }\n if (settings.showAggregateSum === false) {\n scope.showAggregateSum = settings.showAggregateSum;\n }\n if (settings.theme) {\n scope.theme = settings.theme;\n }\n } else {\n createTable();\n }\n });\n\n scope.$watch(\"isAdminMode\", function () {\n /*if (scope.isAdminMode) {\n scope.editable = true;\n } else {\n scope.editable = false;\n }*/\n });\n\n scope.changeTheme= function(theme){\n scope.theme = theme;\n scope.updateSettings();\n }\n\n var loadSmartTable = function (tableId) {\n scope.tableId = tableId;\n scope.isLoading = true;\n smarttableService().get(tableId).then(function (smartTable) {\n scope.smartTable = smartTable;\n boardService.canEdit(tableId).then(function (canEdit) {\n scope.editable = canEdit;\n });\n setupTable();\n setTimeout(function () {\n scope.isLoading = false;\n resizeDebounce();\n }, 500);\n })\n\n }\n\n function setupTable() {\n scope.columns = scope.smartTable.columns;\n scope.rows = scope.smartTable.rows;\n if (scope.rows) {\n for (var i = 0; i < scope.rows.length; i++) {\n var row = scope.rows[i];\n calculateCells(row, scope.columns)\n }\n }\n }\n function createTable() {\n scope.isLoading = true;\n var savetemplate = {\n board: {\n name: $translate.instant('DASHBOARD_SMARTTABLE'),\n assetId: scope.assetId,\n boardType: \"Smarttable\",\n settings: JSON.stringify({\n IsWeeklyBoard: false\n })\n },\n columns: [{\n name: $translate.instant('COMMON_DESCRIPTION'),\n attributeType: \"name\",\n sortOrder: 0,\n settings: \"\",\n }, {\n name: $translate.instant('IMPROVEMENT_PRIORITY'),\n attributeType: \"text\",\n sortOrder: 1,\n settings: \"\",\n },\n {\n name: $translate.instant('COMMON_COST'),\n attributeType: \"number\",\n sortOrder: 2,\n settings: \"\",\n }],\n rows: [{\n sortOrder: 0\n },\n {\n sortOrder: 1\n }\n ],\n cells: [\n // ROW 1 \n {\n rowIndex: 0,\n columnIndex: 0,\n valueText: $translate.instant('COMMON_NAME') + ' 1',\n },\n {\n rowIndex: 0,\n columnIndex: 1,\n valueText: \"\",\n value: JSON.stringify({\n text: $translate.instant('COMMON_LOW'),\n background: \"#8CC152\", // Green\n color: \"#ffffff\"\n }),\n },\n {\n\n rowIndex: 0,\n columnIndex: 2,\n valueText: \"\",\n value: JSON.stringify({\n number: 2000,\n background: \"#8CC152\", // Green\n color: \"#ffffff\"\n }),\n },\n // ROW 2 \n {\n rowIndex: 1,\n columnIndex: 0,\n valueText: $translate.instant('COMMON_NAME') + ' 2', // Built in field.\n },\n {\n rowIndex: 1,\n columnIndex: 1,\n value: JSON.stringify({\n text: $translate.instant('COMMON_MEDIUM'),\n background: \"#FCBB42\", // orange\n color: \"#ffffff\"\n }),\n },\n {\n rowIndex: 1,\n columnIndex: 2,\n value: JSON.stringify({\n number: 6000,\n background: \"#E9573F\", // Red\n color: \"#ffffff\"\n }),\n },\n ]\n };\n smarttableService().createSmartTable(savetemplate).then(function (smartTable) {\n scope.isLoading = false;\n scope.tableId = smartTable.board.id;\n scope.smartTable = smartTable;\n scope.title = smartTable.board.name;\n setupTable();\n scope.updateSettings();\n });\n }\n scope.updateBoardTitle = function () {\n scope.updateSettings();\n var boardName = {\n boardId: scope.tableId,\n name: scope.title\n }\n\n boardService.updateName(scope.tableId, boardName).then(function (smarttable) {\n });\n }\n\n scope.updateSettings = function () {\n if (scope.isAdminMode) {\n var componentSettings = {\n title: scope.title,\n tableId: scope.tableId,\n showAddButton: scope.showAddButton,\n theme: scope.theme\n };\n scope.settingsChangeHandler({ settings: componentSettings });\n }\n }\n\n scope.toggleButton = function () {\n scope.updateSettings();\n }\n\n scope.$on(\"widget-resized\", function (event, args) {\n resizeDebounce();\n });\n\n function resize() {\n var host = $(elem).closest(\".grid-stack-item-content\");\n if (host.length == 0)\n host = $(elem).closest(\".modal-body\")\n \n if (host.length == 0) return;\n var width = host.width();\n var height = host.height();\n\n // Find header to subtract from new height\n var header = $(elem).find(\".ibox-title\");\n var headerHeight = header.height() + 60;\n var container = $(elem).find(\".project-board-container\");\n if (container.length === 0) return;\n $(container).css(\"height\", (height - headerHeight));\n }\n const resizeDebounce = debounce(resize, 100, false)\n\n var calculateCells = function (row, columns) {\n row.cellModels = [];\n for (let index = 0; index < columns.length; index++) {\n const column = columns[index];\n var cellModel = {\n row: row,\n column: column,\n cell: null\n }\n var hasCell = $filter('filter')(row.cells, { smartTableColumnId: column.id }, true);\n if (hasCell.length > 0) {\n var cell = hasCell[0];\n if (cell.value) {\n cell.value = JSON.parse(cell.value);\n }\n cellModel.cell = cell;\n } else {\n // Create default cell\n cellModel.cell = {\n id: 0,\n smartTableRowId: row.id,\n smartTableColumnId: column.id,\n value: null\n }\n }\n if (cellModel.column.settings && typeof (cellModel.column.settings) === \"string\") {\n cellModel.column.settings = JSON.parse(cellModel.column.settings);\n }\n row.cellModels.push(cellModel)\n }\n }\n var addColumnToRows = function (column) {\n for (let index = 0; index < scope.rows.length; index++) {\n var row = scope.rows[index];\n var cellModel = {\n row: row,\n column: column,\n cell: null\n }\n // Create default attribute\n cellModel.cell = {\n id: 0,\n smartTableRowId: row.id,\n smartTableColumnId: column.id,\n value: null\n }\n row.cellModels.push(cellModel)\n }\n }\n\n scope.columnNameUpdated = function (column) {\n smarttableService().updateColumn(column).then(function (attribute) {\n })\n }\n\n scope.predefinedIcons = function (col) {\n if (!col.settings) {\n col.settings = {};\n }\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'predefinedIcons.html',\n controller: 'predefinedIcons',\n resolve: {\n labels: function () {\n return col.settings.predefinedIcons;\n }\n }\n });\n\n modalInstance.result.then(function (result) {\n if (!col.settings) {\n col.settings = {};\n }\n col.settings.predefinedIcons = result;\n var payload = {\n type: 'smarttable',\n columnId: col.id,\n predefinedIcons: col.settings.predefinedIcons\n }\n scope.publish(\"SmartIconCellSelectorUpdated\", payload);\n\n smarttableService().updateColumn(col).then(function (attribute) {\n\n })\n\n });\n }\n scope.predefinedLabels = function (col) {\n if (col.settings.usePredefinedLabels) {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'predefinedLabels.html',\n controller: 'predefinedLabels',\n resolve: {\n labels: function () {\n return col.settings.predefinedLabels;\n }\n }\n });\n\n modalInstance.result.then(function (result) {\n if (!col.settings) {\n col.settings = {};\n }\n col.settings.predefinedLabels = result;\n var payload = {\n type: 'smarttable',\n columnId: col.id,\n predefinedLabels: col.settings.predefinedLabels,\n usePredefinedLabels: col.settings.usePredefinedLabels\n }\n scope.publish(\"SmartCommonTextCellLabelUpdated\", payload);\n\n smarttableService().updateColumn(col).then(function (attribute) {\n\n })\n\n });\n } else {\n col.settings.usePredefinedLabels = false;\n var payload = {\n type: 'smarttable',\n columnId: col.id,\n predefinedLabels: col.settings.predefinedLabels,\n usePredefinedLabels: col.settings.usePredefinedLabels\n }\n scope.publish(\"SmartCommonTextCellLabelUpdated\", payload);\n\n smarttableService().updateColumn(col).then(function (attribute) {\n\n })\n }\n }\n\n scope.addRow = function () {\n var row = {\n boardId: scope.tableId,\n name: $translate.instant('COMMON_NEW'),\n sortOrder: scope.columns.length\n };\n\n smarttableService().addRow(row).then(function (createdRow) {\n\n });\n }\n\n scope.addColumn = function (type) {\n if (type === \"numberAutomatic\") {\n addNumberAutomaticColumn(type);\n } else {\n var headertext = translationService.getTranslatedSmartColumnName(type);\n if (headertext === \"\") {\n headertext = type.charAt(0).toUpperCase() + type.slice(1);\n }\n\n var column = {\n boardId: scope.tableId,\n name: headertext,\n attributeType: type,\n sortOrder: scope.columns.length - 1\n }\n smarttableService().addColumn(column).then(function (savedAttribute) {\n\n })\n\n }\n }\n scope.editTimeframe = function (col) {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'timeframeSelectorModal.html',\n controller: 'timeframeSelectorModal',\n resolve: {\n timePeriod: function () {\n return col.settings.timePeriod;\n }\n }\n });\n\n modalInstance.result.then(function (result) {\n col.settings.timePeriod = result; //result = timePeriod.timeframe e.g.\"all\"\n var payload = {\n columnId: col.id,\n timePeriod: col.settings.timePeriod\n }\n scope.publish(\"SmartTableNumberCellAutomaticTimeframeUpdated\", payload);\n\n smarttableService().updateColumn(col).then(function (attribute) {\n\n })\n\n });\n\n }\n scope.getTimeframeLabel = function (timeframe) {\n return timeService.getTimeframeLabel(timeframe);\n }\n\n\n scope.delete = function (row) {\n smarttableService().deleteRow(row.id).then(function (row) {\n });\n }\n\n scope.deleteColumn = function (column) {\n smarttableService().deleteColumn(column.id);\n }\n\n scope.calculateNumberCellTotal = function (colDef) {\n var total = 0;\n for (var i = 0; i < colDef.projectAttributes.length; i++) {\n var value = colDef.projectAttributes[i].value;\n var valueObject = JSON.parse(value);\n var cellNumber = valueObject.number;\n if (cellNumber) {\n total = total + cellNumber;\n }\n }\n return total;\n }\n\n function addNumberAutomaticColumn(type) {\n\n var dataSource = null;\n var filters = null;\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'dataSourceSingleSelector.html',\n controller: 'dataSourceSingleSelector',\n windowClass: 'newdeviation-modal-window',\n resolve: {\n hasDataSerie: function () {\n return false;\n },\n dataSource: function () {\n return dataSource;\n },\n filters: function () {\n return filters;\n },\n withTarget: function () {\n return false;\n },\n type: function () {\n return null;\n },\n externalOnly: function () {\n return false;\n }\n }\n });\n\n modalInstance.result.then(function (result) {\n\n var timePeriod = {\n timeframe: \"all\",\n period: timeService.getTimePeriod(\"all\")\n }\n\n var unit = null;\n if (result.dataSource.valueElement) {\n unit = result.dataSource.valueElement.unit;\n }\n\n var cellSettings = JSON.stringify({\n dataSource: result.dataSource,\n timePeriod: timePeriod,\n filters: result.filters,\n aggregateType: \"SUM\",\n unit: unit,\n unitPlacement: \"right\"\n })\n var column = {\n boardId: scope.tableId,\n name: result.dataSource.title,\n attributeType: type,\n sortOrder: scope.columns.length - 1,\n settings: cellSettings,\n }\n smarttableService().addColumn(column).then(function (savedAttribute) {\n\n })\n\n });\n };\n\n\n scope.updateAggregateType = function (col) {\n var payload = {\n columnId: col.id,\n aggregateType: col.settings.aggregateType\n }\n scope.publish(\"SmartTableNumberCellAggregateTypeUpdated\", payload);\n\n smarttableService().updateColumn(col).then(function (attribute) {\n })\n };\n scope.updateUnit = function (col) {\n var payload = {\n columnId: col.id,\n unit: col.settings.unit\n }\n scope.publish(\"SmartTableNumberCellUnitUpdated\", payload);\n\n smarttableService().updateColumn(col).then(function (attribute) {\n })\n };\n scope.updateUnitPlacement = function (col) {\n var payload = {\n columnId: col.id,\n unitPlacement: col.settings.unitPlacement\n }\n scope.publish(\"SmartTableNumberCellUnitPlacementUpdated\", payload);\n\n smarttableService().updateColumn(col).then(function (attribute) {\n })\n };\n // TODO: FIX THIS Bakend/Frontend\n scope.updateDecimals = function (col) {\n var payload = {\n columnId: col.id,\n decimals: col.settings.decimals\n }\n // Use this event i norder to reuse the project elements components\n scope.publish(\"SmartTableNumberCellDecimalUpdated\", payload);\n\n\n smarttableService().updateColumn(col).then(function (attribute) {\n })\n\n };\n\n scope.columnWidthChangeHandler = function(col){\n if(col){\n smarttableService().updateColumn(col).then(function (attribute) {\n })\n }\n }\n\n scope.cellChangeHandler = function (cell) {\n if (cell.value) {\n cell.value = JSON.stringify(cell.value);\n }\n\n smarttableService().updateCell(cell).then(function (savedCell) {\n // Parse value again\n cell.id = savedCell.id;\n if (savedCell.value) {\n cell.value = JSON.parse(savedCell.value);\n }\n });\n }\n\n\n scope.subscribe(\"SmartTableColumnUpdated\", function (updatedColumn) {\n if (updatedColumn.boardId === scope.tableId) {\n var hasColumn = $filter('filter')(scope.columns, { id: updatedColumn.id }, true);\n if (hasColumn.length > 0) {\n var column = hasColumn[0];\n if (column.name !== updatedColumn.name) {\n column.name = updatedColumn.name;\n }\n if (updatedColumn.settings) {\n column.settings = JSON.parse(updatedColumn.settings);\n }\n }\n }\n });\n scope.subscribe(\"SmartTableColumnAdded\", function (column) {\n if (column.boardId === scope.tableId) {\n var hasColumn = $filter('filter')(scope.columns, { id: column.id }, true);\n if (hasColumn.length === 0) {\n addColumnToRows(column);\n scope.columns.push(column);\n }\n }\n });\n scope.subscribe(\"SmartTableColumnDeleted\", function (column) {\n if (column.boardId === scope.tableId) {\n loadSmartTable(scope.tableId);\n }\n });\n scope.subscribe(\"SmartTableRowDeleted\", function (row) {\n var isPartOfBoard = $filter('filter')(scope.rows, { id: row.id });\n if (isPartOfBoard && isPartOfBoard.length === 1) {\n var tableRow = isPartOfBoard[0];\n tableRow.cssState = \"animated slideOutRight\"; // Add animation\n var index = scope.rows.indexOf(tableRow);\n if (index > -1) {\n scope.rows.splice(index, 1);\n }\n\n }\n });\n\n scope.subscribe(\"SmartTableRowCreated\", function (row) {\n if (row.boardId === scope.tableId) {\n var has = $filter('filter')(scope.rows, { id: row.id }, true);\n if (has.length === 0) {\n calculateCells(row, scope.columns);\n scope.rows.push(row);\n }\n }\n });\n\n\n\n scope.subscribe(\"SmartTableSortOrderChanged\", function (payLoad) {\n if (payLoad.boardId === scope.tableId) {\n loadSmartTable(scope.tableId);\n }\n });\n scope.subscribe(\"SmartTableRowSortOrderChanged\", function (payLoad) {\n if (payLoad.boardId === scope.tableId) {\n loadSmartTable(scope.tableId);\n }\n });\n\n // Drag and drop of columns events\n scope.$on('column-header-bag.drop-model', function (e, el) {\n if(scope.editable){\n var columnOrder = scope.columns;\n var sortOrder = [];\n for (var i = 0; i < scope.columns.length; i++) {\n var column = scope.columns[i];\n var columnOrder = {\n smartTableColumnId: column.id,\n sortOrder: i\n }\n sortOrder.push(columnOrder)\n }\n smarttableService().updateColumnSortOrder(scope.tableId, sortOrder).then(function () {\n\n });\n }\n\n });\n scope.$on('column-header-bag.drag', function (e, el) {\n $(el).find(\".drag-drop-icon\").hide();\n $(el).find(\".option-icon\").hide();\n el.addClass('drag-moved');\n });\n\n scope.$on('column-header-bag.drop', function (e, el) {\n $(el).find(\".drag-drop-icon\").show();\n $(el).find(\".option-icon\").show();\n el.removeClass('drag-moved');\n });\n\n scope.$on('column-header-bag.dragend', function (e, el) {\n $(el).find(\".drag-drop-icon\").show();\n $(el).find(\".option-icon\").show();\n });\n \n scope.$on('column-header-bag.over', function (e, el) {\n el.addClass('drag-over');\n })\n scope.$on('column-header-bag.out', function (e, el) {\n el.removeClass('drag-over');\n });\n\n\n // Drag and drop of rows events\n scope.$on('row-header-bag.drop-model', function (e, el) {\n if(scope.editable){\n var rowOrder = scope.rows;\n var sortOrder = [];\n for (var i = 0; i < scope.rows.length; i++) {\n var row = scope.rows[i];\n var rowOrder = {\n smartTableRowId: row.id,\n sortOrder: i\n }\n sortOrder.push(rowOrder)\n }\n smarttableService().updateRowSortOrder(scope.tableId, sortOrder).then(function () {\n\n });\n }\n\n });\n scope.$on('row-header-bag.drag', function (e, el) {\n $(el).find(\".row-drag-drop-icon\").hide();\n //$(el).find(\".row-option-icon\").hide();\n el.addClass('drag-moved');\n });\n\n scope.$on('row-header-bag.drop', function (e, el) {\n $(el).find(\".row-drag-drop-icon\").show();\n //$(el).find(\".row-option-icon\").show();\n el.removeClass('drag-moved');\n\n });\n scope.$on('row-header-bag.over', function (e, el) {\n el.addClass('drag-over');\n })\n scope.$on('row-header-bag.out', function (e, el) {\n el.removeClass('drag-over');\n });\n\n }\n }\n }]);\n\n","import * as boardService from \"@common/services/boardService\"\n\nangular\n .module(\"DigiLean\")\n .directive('kanbanBoard', ['$filter', '$uibModal', 'debounce',\n function ($filter, $uibModal, debounce) {\n return {\n templateUrl: 'kanbanBoard.html',\n restrict: 'E',\n scope: {\n 'isAdminMode': '=',\n 'settings': '=',\n 'assetId': '<',\n 'settingsChangeHandler': '&'\n },\n link: function (scope, elem, attrs) {\n scope.boards = [];\n scope.selectedBoard = null;\n\n scope.boardData = null;\n scope.hasBoard = false;\n scope.options = {\n fixedHeader: false\n }\n\n scope.$watch('isAdminMode', function (isAdminMode) {\n if(isAdminMode && scope.boards.length == 0){\n boardService.getMemberBoards().then(function (boards) {\n for (let index = 0; index < boards.length; index++) {\n const board = boards[index];\n if (!isWeeklyBoard(board)) {\n if(!board.boardType){\n scope.boards.push(board);\n }\n // found bord haveing bordtype = 'smartActionList'\n else if(board.boardType != \"Yearly\" && board.boardType.toUpperCase() != \"SMARTACTIONLIST\"){\n scope.boards.push(board);\n }\n }\n }\n // Set selected \n if (scope.settings && scope.settings.boardId) {\n var selected = $filter('filter')(scope.boards, { id: scope.settings.boardId });\n if (selected.length > 0) {\n scope.selectedBoard = selected[0];\n }\n }\n });\n }\n });\n\n scope.$watch('settings', function (settings) {\n scope.settings = settings;\n if (settings) {\n loadBoard(settings.boardId);\n }\n \n updateContainerHeightDebounced();\n });\n\n var isWeeklyBoard = function(board) {\n if (board.boardType) {\n if (board.boardType == \"Weekly\") return true;\n }\n if (board.settings) {\n var settings = JSON.parse(board.settings);\n if (settings.IsWeeklyBoard) {\n return true;\n } \n } else {\n scope.isWeeklyBoard = false;\n }\n }\n scope.boards = [];\n scope.boardChanged = function (selectedBoard) {\n loadBoard(selectedBoard.id);\n scope.selectedBoard = selectedBoard;\n updateSettings();\n }\n\n var currentBoardId = 0;\n var loadBoard = function (boardId) {\n if (currentBoardId == boardId) return;\n currentBoardId = boardId;\n if (boardId == 0) {\n scope.hasBoard = false;\n return; \n }\n scope.isLoading = true;\n scope.hasBoard = true;\n boardService.get(boardId).then(function (board) {\n scope.boardData = board;\n setTimeout(function () {\n scope.isLoading = false;\n\n }, 500);\n })\n }\n\n function updateSettings() {\n if (scope.isAdminMode) {\n var componentSettings = {\n boardId: scope.selectedBoard.id,\n };\n scope.settingsChangeHandler({ settings: componentSettings });\n }\n }\n scope.createBoard = function(){\n var template = boardService.createKanbanBoardTemplate();\n var savetemplate = {\n board: {\n name: template.template.name,\n boardType: template.template.boardType,\n settings: template.template.settings\n },\n columns: [],\n rows: []\n };\n // set attributes\n if (template.attributes) savetemplate.attributes = template.attributes;\n // Parse columns\n angular.forEach(template.columns, function (col) {\n savetemplate.columns.push(\n {\n name: col.name,\n weekdayName: col.weekdayName,\n sortOrder: col.sortOrder,\n categoryStyle: JSON.stringify(col.categoryStyle)\n });\n });\n angular.forEach(template.rows, function (row) {\n savetemplate.rows.push(\n {\n name: row.name,\n sortOrder: row.sortOrder,\n categoryStyle: JSON.stringify(row.categoryStyle),\n weekdayName: row.weekdayName\n });\n });\n var options = {\n dashboardAsTemplateId: null,\n assetId: scope.assetId,\n operation: \"newTaskBoard\",\n template: savetemplate,\n }\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'newFlexiboardConfiguration.html',\n controller: 'newFlexiboardConfigurationController',\n resolve: {\n options: function () {\n return options;\n }\n }\n });\n modalInstance.result.then(function (result) {\n scope.publish(\"SendBoardCreated\", result);\n \n scope.boards.push(result.board);\n scope.boardChanged(result.board);\n //$state.go('boarddesigner', { id: result.board.id });\n });\n }\n\n function updateContainerHeight() {\n var host = $(elem).closest(\".grid-stack-item-content\");\n if (host.length == 0)\n host = $(elem).closest(\".modal-body\")\n \n if (host.length == 0) return;\n var width = host.width();\n var height = host.height();\n\n // Find header to subtract from new height\n var header = $(elem).find(\".ibox-title\");\n var headerHeight = header.height() + 40;\n var container = $(elem).find(\".kanban-board\");\n if (container.length === 0) return;\n var targetHeight = height - headerHeight;\n $(container).css(\"height\", targetHeight);\n scope.options = {\n targetHeight: targetHeight\n }\n }\n\n const updateContainerHeightDebounced = debounce(updateContainerHeight, 50, false)\n scope.$on(\"widget-resized\", function (event, args) {\n updateContainerHeightDebounced();\n });\n\n }\n }\n }]);\n\n","import * as boardService from \"@common/services/boardService\"\n\nangular\n .module(\"DigiLean\")\n .directive('weeklyBoard', ['$filter', '$uibModal','debounce',\n function ($filter, $uibModal, debounce) {\n return {\n templateUrl: 'weeklyboard.html',\n restrict: 'E',\n scope: {\n 'isAdminMode': '=',\n 'settings': '=',\n 'assetId': '<',\n 'settingsChangeHandler': '&'\n },\n link: function (scope, elem, attrs) {\n scope.boards = [];\n scope.selectedBoard = null;\n\n scope.boardData = null;\n scope.hasBoard = false;\n scope.options = {\n fixedHeader: false\n }\n scope.$watch('settings', function (settings) {\n scope.settings = settings;\n if (settings) {\n loadBoard(settings.boardId);\n }\n boardService.getMemberBoards().then(function (boards) {\n for (let index = 0; index < boards.length; index++) {\n const board = boards[index];\n if (isWeeklyBoard(board)) {\n scope.boards.push(board);\n }\n }\n // Set selected \n if (scope.settings && scope.settings.boardId) {\n var selected = $filter('filter')(scope.boards, { id: settings.boardId });\n if (selected.length > 0) {\n scope.selectedBoard = selected[0];\n }\n }\n });\n \n });\n\n var isWeeklyBoard = function(board) {\n if (board.boardType) {\n if (board.boardType == \"Weekly\") return true;\n }\n if (board.settings) {\n var settings = JSON.parse(board.settings);\n if (settings.IsWeeklyBoard) {\n return true;\n } \n } else {\n scope.isWeeklyBoard = false;\n }\n }\n scope.boards = [];\n scope.boardChanged = function (selectedBoard) {\n loadBoard(selectedBoard.id);\n scope.selectedBoard = selectedBoard;\n updateSettings();\n }\n\n var currentBoardId = 0;\n var loadBoard = function (boardId) {\n if (currentBoardId == boardId) return;\n currentBoardId = boardId;\n if (boardId == 0) {\n scope.hasBoard = false;\n return; \n }\n scope.isLoading = true;\n scope.hasBoard = true;\n boardService.get(boardId).then(function (board) {\n scope.boardData = board;\n setTimeout(function () {\n scope.isLoading = false;\n updateContainerHeightDebounced();\n }, 500);\n })\n }\n\n function updateSettings() {\n if (scope.isAdminMode) {\n var componentSettings = {\n boardId: scope.selectedBoard.id,\n };\n scope.settingsChangeHandler({ settings: componentSettings });\n }\n }\n \n\n scope.createBoard = function(){\n var template = boardService.createWeeklyBoardTemplate();\n var savetemplate = {\n board: {\n name: template.template.name,\n boardType: template.template.boardType,\n settings: template.template.settings\n },\n columns: [],\n rows: []\n };\n // set attributes\n if (template.attributes) savetemplate.attributes = template.attributes;\n // Parse columns\n template.columns.forEach(function (col) {\n savetemplate.columns.push(\n {\n name: col.name,\n weekdayName: col.weekdayName,\n sortOrder: col.sortOrder,\n categoryStyle: JSON.stringify(col.categoryStyle)\n });\n });\n template.rows.forEach(function (row) {\n savetemplate.rows.push(\n {\n name: row.name,\n sortOrder: row.sortOrder,\n categoryStyle: JSON.stringify(row.categoryStyle),\n weekdayName: row.weekdayName\n });\n });\n var options = {\n dashboardAsTemplateId: null,\n assetId: scope.assetId,\n operation: \"newTaskBoard\",\n template: savetemplate,\n }\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'newFlexiboardConfiguration.html',\n controller: 'newFlexiboardConfigurationController',\n resolve: {\n options: function () {\n return options;\n }\n }\n });\n modalInstance.result.then(function (result) {\n scope.publish(\"SendBoardCreated\", result);\n scope.boards.push(result.board);\n scope.boardChanged(result.board);\n });\n }\n\n function updateContainerHeight() {\n var host = $(elem).closest(\".grid-stack-item-content\");\n var width = host.width();\n var height = host.height();\n\n // Find header to subtract from new height\n var header = $(elem).find(\".ibox-title\");\n var headerHeight = header.height() + 100;\n var container = $(elem).find(\".weeklyboard\");\n if (container.length === 0) return;\n var targetHeight = height - headerHeight;\n $(container).css(\"height\", targetHeight);\n scope.options = {\n targetHeight: targetHeight\n }\n }\n const updateContainerHeightDebounced = debounce(updateContainerHeight, 200, false)\n updateContainerHeightDebounced()\n scope.$on(\"widget-resized\", function (event, args) {\n updateContainerHeightDebounced();\n });\n\n }\n }\n }]);\n\n","import * as timeService from \"@common/services/timeService\"\n\nangular\n .module('DigiLean')\n .directive(\"weekSelector\", \n function () {\n return {\n templateUrl: 'weekSelector.html',\n restrict: 'E',\n scope: {\n 'boardid': '<'\n },\n link: function (scope, elem, attrs) {\n\n scope.weekYear = moment().isoWeekYear();\n scope.weekNumber = moment().isoWeek();\n scope.week = null;\n\n scope.subscribe(\"BoardWeekChanged\", function(weekChange) {\n if (scope.boardid == weekChange.boardid) {\n scope.week = weekChange.week;\n scope.weekYear = weekChange.weekYear;\n scope.weekNumber = weekChange.weekNumber;\n }\n });\n\n function loadCurrentWeek() {\n var week = timeService.getCurrentWeek(scope.weekNumber, scope.weekYear);\n scope.week = week;\n }\n loadCurrentWeek();\n scope.nextWeek = function () {\n var firstDayNextWeek = moment(scope.week.endDate).add(1, 'days');\n scope.weekYear = firstDayNextWeek.isoWeekYear();\n scope.weekNumber = firstDayNextWeek.isoWeek();\n loadCurrentWeek();\n publishWeekChange();\n }\n scope.previousWeek = function () {\n var previousWeek = getPreviousWeek();\n scope.weekYear = previousWeek.weekYear;\n scope.weekNumber = previousWeek.weekNumber;\n loadCurrentWeek();\n publishWeekChange();\n }\n\n function publishWeekChange() {\n var weekChange = {\n boardid: scope.boardid,\n weekYear: scope.weekYear,\n weekNumber: scope.weekNumber,\n week: scope.week\n }\n scope.publish(\"BoardWeekChanged\", weekChange);\n }\n\n function getPreviousWeek() {\n var lastDayPreviousWeek = moment(scope.week.startDate).subtract(1, 'days');\n return {\n weekYear: lastDayPreviousWeek.isoWeekYear(),\n weekNumber: lastDayPreviousWeek.isoWeek(),\n translatedWeekNumber: lastDayPreviousWeek.isoWeek()\n }\n }\n\n }\n }\n });\n","import { getDefaultAppStyle, getDefaultAppTheme, calcDefaultAppFontSize } from \"@common/components/dashboard/designer/common/appStyleService\"\nimport { hasDefaultAccess } from \"@common/components/dashboard/designer/common/userAccessService\"\nangular\n .module('DigiLean')\n .directive(\"textEditor\", ['$translate', 'debounce','authService',\n function ($translate, debounce, authService) {\n return {\n templateUrl: 'texteditor.html',\n restrict: 'E',\n scope: {\n 'isAdminMode': '=',\n 'settings': '=',\n 'settingsChangeHandler': '&',\n 'hideHeader': '@',\n 'options': '=',\n 'layoutFactor': '<',\n 'userAccess': '<'\n },\n link: function (scope) {\n scope.theme = getDefaultAppTheme()\n scope.themeChangedEvent = function($event) {\n scope.theme = $event.detail\n scope.updateSettings()\n }\n scope.editInViewMode = false;\n scope.canEdit = true;\n scope.isBoardDesigner = authService.hasRole(\"BoardDesigner\");\n scope.froalaStyle = {\n \"height\": \"100%\",\n \"font-size\": \"1.4rem\"\n }\n scope.appStyle = getDefaultAppStyle()\n function calcStyles() {\n scope.froalaStyle[\"font-size\"] = calcDefaultAppFontSize(scope.layoutFactor)\n scope.appStyle[\"font-size\"] = calcDefaultAppFontSize(scope.layoutFactor)\n }\n calcStyles()\n scope.$watch('layoutFactor', calcStyles)\n\n scope.title = \"\"\n scope.titleChangedEvent = function($event) {\n scope.title = $event.detail\n scope.updateSettings()\n }\n // Dashboard Settings handling\n scope.$watch('settings', function (settings) {\n scope.settings = settings;\n checkSettings();\n });\n scope.$watch('isAdminMode', function (isAdminMode) {\n if (isAdminMode) {\n scope.editContent = scope.content;\n }\n })\n\n scope.$watch('userAccess', function (userAccess) {\n scope.canEdit = hasDefaultAccess(userAccess) || scope.isBoardDesigner;\n });\n \n scope.updateSettings = function () {\n var componentSettings = {\n title: scope.title,\n content: scope.content,\n theme: scope.theme,\n editInViewMode: scope.editInViewMode\n };\n scope.settingsChangeHandler({ settings: componentSettings });\n };\n\n scope.commitChangesDebounced = debounce(scope.updateSettings, 1000, false);\n \n\n function checkSettings() {\n // apply\n if (scope.settings) {\n if (scope.settings.title) {\n scope.title = scope.settings.title;\n }\n if (scope.settings.content) {\n scope.content = scope.settings.content;\n scope.editContent = scope.content;\n }\n if (scope.settings.theme && scope.settings.theme.fillColor) {\n scope.theme = scope.settings.theme;\n }\n if (scope.settings.editInViewMode) {\n scope.editInViewMode = scope.settings.editInViewMode;\n }\n }\n }\n scope.changeTheme= function(theme){\n scope.theme = theme;\n scope.updateSettings();\n };\n\n scope.toggleEditMode = function () {\n // scope.editInViewMode = !scope.editInViewMode\n scope.updateSettings();\n }\n \n scope.froalaOptionsToolbar = {\n key: \"CTD5xD3E1G2A1A8B2wc2DBKSPJ1WKTUCQOd1OURPE1KDc1C-7J2A4D4B3C6E2C1F4F1F1==\",\n attribution: false,\n toolbarButtons: ['bold', 'italic', 'underline', \n '|', 'fontFamily', 'fontSize', 'textColor', 'backgroundColor', 'inlineStyle', 'paragraphStyle', \n '|', 'paragraphFormat', 'align', 'formatOL', 'formatUL', 'outdent', 'indent', \n '|', 'insertLink', 'insertVideo', 'insertTable'],\n pastePlain: false,\n imagePaste: false,\n toolbarSticky: true,\n toolbarInline: false,\n placeholderText: $translate.instant('COMMON_DESCRIPTION'),\n // heightMin: 160,\n zIndex:2501,\n linkAlwaysBlank: true,\n quickInsertTags: []\n };\n\n scope.froalaOptionsEditInView = {\n key: \"CTD5xD3E1G2A1A8B2wc2DBKSPJ1WKTUCQOd1OURPE1KDc1C-7J2A4D4B3C6E2C1F4F1F1==\",\n attribution: false,\n toolbarButtons: ['bold', 'italic', 'underline', \n '|', 'fontFamily', 'fontSize', 'textColor', 'backgroundColor', 'inlineStyle', 'paragraphStyle', \n '|', 'paragraphFormat', 'align', 'formatOL', 'formatUL', 'outdent', 'indent', \n '|', 'insertLink', 'insertVideo', 'insertTable'],\n pastePlain: false,\n imagePaste: false,\n toolbarInline: true,\n charCounterCount: false,\n placeholderText: \"\",\n zIndex:2501,\n linkAlwaysBlank: true,\n quickInsertTags: []\n };\n \n // hook up to froala-editor\n scope.contentChanged = function(val) {\n scope.content = val;\n scope.commitChangesDebounced(val);\n };\n }\n };\n }]);\n","import CountUp from '@common/thirdparty/countUp/countUp.min'\nimport * as customerService from \"@common/services/customers/customerService\"\n\nangular\n .module('DigiLean')\n .directive(\"usersOnline\", ['$filter', 'authService',\n function ($filter, authService) {\n return {\n templateUrl: 'usersonline.html',\n restrict: 'E',\n scope: {\n 'header': '@',\n 'component': '@'\n },\n\n link: function ($scope, elem, attrs) {\n $scope.title = 'Users online';\n // This is only for Kaizen so return if not in role.\n if (!authService.hasRole(\"KaizenAdmin\")) return;\n $scope.customerEvents = [];\n $scope.customersOnline = [];\n $scope.customers = [];\n $scope.totalUsersOnline = 0;\n $scope.showClients = function (customer) {\n customer.showClients = !customer.showClients;\n }\n\n customerService.getCustomersSimpleForAdmin().then(function (customers) {\n angular.forEach(customers, function (customer, key) {\n var currentCustomer = {\n customerId: customer.id,\n customer: customer,\n clients: [],\n cssState: \"\"\n }\n $scope.customers.push(currentCustomer);\n });\n $scope.publish(\"GetAllUsersOnline\");\n });\n\n var hasLoadedAllUsers = false;\n $scope.subscribe(\"CustomerUsersConnectedChanged\", function (customer) {\n if (!hasLoadedAllUsers) {\n $scope.publish(\"GetAllUsersOnline\");\n hasLoadedAllUsers = true;\n }\n\n updateCustomerOnlineCount(customer);\n\n\n $scope.$apply();\n });\n\n $scope.translationData = {\n totalUsersOnline: $scope.totalUsersOnline\n };\n\n $scope.subscribe(\"AllUsersOnline\", function (usersOnline) {\n angular.forEach(usersOnline, function (companyOnline, key) {\n updateCustomerOnlineCount(companyOnline);\n });\n $scope.$apply();\n\n });\n\n function updateCustomerOnlineCount(customerOnline) {\n\n var customer = $filter('filter')($scope.customers, { customerId: customerOnline.customerId }, true);\n if (customer.length > 0) {\n customer[0].clients = customerOnline.clients;\n customer[0].cssState = \"animated bounce\";\n }\n $scope.customersOnline = $filter('filter')($scope.customers, function (customer) {\n return customer.clients.length > 0;\n });\n updateTotalUsersOnline();\n\n }\n\n function updateTotalUsersOnline() {\n var count = 0;\n angular.forEach($scope.customers, function (customer, key) {\n count += customer.clients.length;\n });\n var previousCount = $scope.totalUsersOnline;\n var options = {\n useEasing: true,\n useGrouping: true,\n separator: ',',\n decimal: '.',\n prefix: '',\n suffix: ''\n };\n var numAnim = new CountUp(\"onlineCount\", 0, count, 0, 3, options);\n numAnim.start();\n $scope.totalUsersOnline = count;\n $scope.translationData.totalUsersOnline = count;\n }\n\n function resizeChart() {\n var host = $(elem).closest(\".widget-content\");\n var width = host.width() -40;\n var height = host.height();\n if (height > 200) height = 300;\n var chartContainer = $(elem).find(\".highcharts-container\").parent();\n if (chartContainer.length === 0) return;\n var chart = $(chartContainer).highcharts();\n chart.setSize(width, height, true);\n }\n $scope.$on(\"widget-resized\", function (event, args) {\n resizeChart();\n });\n\n let intervalId = 0\n var chart;\n function loadChart() {\n chart = $(elem).find(\".usersonline\").highcharts({\n chart: {\n defaultSeriesType: 'spline',\n height: 300\n },\n title: {\n text: ''\n },\n credits: {\n enabled: false //remove link to highcharts.com\n },\n exporting: {\n enabled: false //remove context menu\n },\n xAxis: {\n type: 'datetime',\n tickPixelInterval: 150,\n maxZoom: 20 * 1000\n },\n yAxis: {\n minPadding: 0.2,\n maxPadding: 0.2,\n title: {\n text: ''\n }\n },\n series: [{\n name: 'Users online',\n data: []\n }]\n });\n\n // Timer that updates the chart\n intervalId = setInterval(function () {\n var currentChart = $(elem).find(\".usersonline\").highcharts();\n var series = currentChart.series[0],\n shift = series.data.length > 1000; // shift if the series is \n // longer than 20\n var point = [new Date().getTime(), $scope.totalUsersOnline];\n // add the point\n currentChart.series[0].addPoint(point, true, shift);\n }, 5000);\n };\n\n loadChart();\n $scope.$on(\"$destroy\", () => {\n clearInterval(intervalId)\n })\n }\n }\n }]);\n","import * as customerService from \"@common/services/customers/customerService\"\nimport * as assetService from \"@common/services/assetService\"\nimport { hasDefaultAccess } from \"@common/components/dashboard/designer/common/userAccessService\"\nimport { getDefaultAppStyle, getDefaultAppTheme, calcDefaultAppFontSize } from \"@common/components/dashboard/designer/common/appStyleService\"\n\nangular\n .module('DigiLean')\n .directive(\"datasourceValuesList\", ['$filter', '$sce', 'authService', 'dataService', '$uibModal', '$translate', 'dataSourceService', 'areaService', 'projectService', 'NgTableParams', 'dataListService', 'debounce',\n function ($filter, $sce, authService, dataService, $uibModal, $translate, dataSourceService, areaService, projectService, NgTableParams, dataListService, debounce) {\n return {\n templateUrl: 'datasourceValuesList.html',\n restrict: 'E',\n scope: {\n 'settings': '<',\n 'settingsChangeHandler': '&',\n 'isAdminMode': '<',\n 'layoutFactor': '<',\n 'userAccess': '<'\n },\n link: function (scope, elem, attrs) {\n scope.theme = getDefaultAppTheme()\n scope.themeChangedEvent = function($event) {\n scope.theme = $event.detail\n scope.updateSettings()\n }\n \n scope.appStyle = getDefaultAppStyle()\n function calcStyles() {\n scope.appStyle[\"font-size\"] = calcDefaultAppFontSize(scope.layoutFactor)\n }\n calcStyles()\n scope.$watch('layoutFactor', calcStyles)\n\n scope.title = \"\"\n scope.titleChangedEvent = function($event) {\n scope.title = $event.detail\n scope.updateSettings()\n }\n \n scope.canEdit = true;\n scope.datalists = [];\n scope.filters = [];\n scope.areas = [];\n scope.assets = [];\n scope.projects = [];\n scope.allUsers = [];\n\n scope.showDataEntryButton = false;\n\n scope.columns = [];\n scope.hiddencolumns = [];\n scope.newValuesCounter = 0;\n scope.totalValues = 0;\n scope.selectedDataList = [];\n scope.dataLists = {};\n scope.isfiltered = false;\n /* Date format Æ*/\n scope.showDateWithTime = false;\n scope.valueDateFormats = [\n {\n name: \"dateOnly\",\n format: \"dateOnly\"\n },\n {\n name: \"dateWithTime\",\n format: \"dateWithTime\"\n },\n ]\n scope.valueDateFormat = scope.valueDateFormats[0]; // dateOnly\n\n\n scope.toggleDataEntryButton = function(){\n scope.showDataEntryButton = !scope.showDataEntryButton;\n scope.updateSettings();\n }\n\n scope.toggleShowTime = function(){\n // scope.showDateWithTime = !scope.showDateWithTime;\n if (scope.showDateWithTime) {\n scope.valueDateFormat = scope.valueDateFormats[1]\n } else {\n scope.valueDateFormat = scope.valueDateFormats[0]\n }\n scope.updateSettings();\n }\n \n scope.$watch('userAccess', function (userAccess) {\n scope.canEdit = hasDefaultAccess(userAccess);\n });\n\n scope.subscribe(\"UserAuthenticatedAndReady\", function (profile) {\n scope.isAdmin = authService.hasRole(\"Admin\");\n });\n\n scope.subscribe(\"DataSourceUpdated\", function (datasource) {\n if (!scope.datasource) return;\n if (datasource.dataSourceId === scope.datasource.id) {\n scope.setDataSource(datasource.datasourceId);\n }\n });\n\n scope.subscribe(\"DataValueAdded\", function (value) {\n if (!scope.datasource) return;\n if (scope.datasource.id !== value.dataSourceId) return;\n scope.getLatestValues();\n });\n scope.subscribe(\"DataValueUpdated\", function (value) {\n if (!scope.datasource) return;\n if (scope.datasource.id !== value.dataSourceId) return;\n scope.getLatestValues();\n });\n scope.subscribe(\"DataValueDeleted\", function (value) {\n if (!scope.datasource) return;\n if (scope.datasource.id !== value.dataSourceId) return;\n scope.getLatestValues();\n });\n\n // default timeperiod\n var timeSettings = {\n timeframe: \"YTD\",\n useDefaultTimeframes: true,\n timeframes: [],\n period: null,\n getTimePeriod: function () {\n return {\n useDefaultTimeframes: timeSettings.useDefaultTimeframes,\n timeframes: timeSettings.timeframes,\n timeframe: timeSettings.timeframe,\n period: timeSettings.period\n }\n },\n setTimePeriod: function (timeframe, period) {\n timeSettings.timeframe = timeframe;\n timeSettings.period = period;\n // debounce, to make sure not starting loading several timeframes.\n scope.options = {\n timePeriod: timeSettings.getTimePeriod()\n }\n }\n }\n\n scope.setTimePeriodDebounced = debounce(timeSettings.setTimePeriod, 100, false);\n // Default options\n scope.setTimePeriodDebounced(timeSettings.timeframe, timeSettings.period);\n\n // Dashboard Settings handling\n scope.$watch('settings', function (settings) {\n // apply\n if (settings) {\n if (settings.filters) {\n scope.filters = settings.filters;\n }\n checkIfFiltered();\n if (settings.timePeriod) {\n scope.setTimePeriodDebounced(settings.timePeriod.timeframe, settings.timePeriod.period);\n }\n if (settings.hiddencolumns) {\n scope.hiddencolumns = settings.hiddencolumns;\n }\n if (settings.title) {\n scope.title = settings.title;\n }\n if(settings.showDataEntryButton) {\n scope.showDataEntryButton = settings.showDataEntryButton;\n }\n if (settings.valueDateFormat) {\n scope.valueDateFormat = settings.valueDateFormat;\n if (scope.valueDateFormat.format == \"dateWithTime\") {\n scope.showDateWithTime = true;\n }\n }\n if (settings.dataSource) {\n scope.setDataSource(settings.dataSource.id);\n }\n if (settings.theme) {\n scope.theme = settings.theme;\n }\n }\n });\n\n function checkIfFiltered() {\n if (scope.filters && scope.filters.length > 0) {\n scope.isfiltered = true;\n } else {\n scope.isfiltered = false;\n }\n }\n\n scope.changeTheme = function (theme) {\n scope.theme = theme;\n scope.updateSettings();\n }\n\n function initDataList() {\n if (!scope.datasource) return;\n\n var listOperations = [];\n angular.forEach(scope.datasource.elements, function (element) {\n switch (element.type) {\n case \"asset\":\n listOperations.push(assetService.getAllAssets(true).then(function (data) {\n scope.assets = data;\n }));\n break;\n case \"area\":\n listOperations.push(areaService().getList(true).then(function (data) {\n scope.areas = data;\n }));\n break;\n case \"project\":\n listOperations.push(projectService().getList(true).then(function (data) {\n scope.projects = data;\n }));\n break;\n case \"user\":\n listOperations.push(customerService.getAllUsers().then(function (users) {\n scope.allUsers = users;\n }));\n break;\n case \"list\":\n var listOptions = { includeDeletedItems: false };\n listOperations.push(dataListService().getItems(element.dataListId, listOptions).then(function (list) {\n if (list) {\n scope.dataLists[element.sourceColumn] = list;\n }\n }));\n break;\n }\n\n });\n\n Promise.all(listOperations).then(() => {\n scope.getLatestValues();\n })\n }\n\n scope.getValueForElement = function (element, item) {\n var sourceColumn = element.sourceColumn;\n var value = item[sourceColumn];\n return value;\n }\n\n scope.getLatestValues = function (params) {\n if (!scope.datasource) return;\n scope.newValuesCounter = 0;\n\n\n\n scope.buildColumns(scope.datasource);\n scope.tableParams = new NgTableParams({\n sorting: { valueDate: \"desc\" },\n },\n {\n getData: scope.getTableValues\n });\n\n }\n\n scope.getTableValues = function (params) {\n\n var sorting = [];\n // Build sortExpression for database to be able to deserialize, becuase NgTableParams.sorting is a dynamic object.\n for (var propt in params._params.sorting) {\n sorting.push({\n property: propt,\n direction: params._params.sorting[propt]\n });\n }\n // We will build params based on the built-in NgTableParams + our sorting array\n var dbParams = {\n page: params._params.page,\n count: params._params.count,\n timePeriod: scope.options.timePeriod.period,\n filters: scope.filters,\n sorting: sorting\n }\n return dataService().getTableValues(scope.datasource.id, dbParams).then(function (data) {\n angular.forEach(data.values, function (registration) {\n var asset = $filter('filter')(scope.assets, { id: registration.assetId }, true);\n if (asset && asset.length > 0) {\n registration.assetName = asset[0].name;\n } else {\n if (registration.assetId) {\n registration.assetName = registration.assetId;\n }\n }\n var area = $filter('filter')(scope.areas, { id: registration.areaId }, true);\n if (area && area.length > 0) {\n registration.areaName = area[0].name;\n } else {\n if (registration.areaId) {\n registration.areaName = registration.areaId;\n }\n }\n var project = $filter('filter')(scope.projects, { id: registration.projectId }, true);\n if (project && project.length > 0) {\n registration.projectName = project[0].displayName;\n } else {\n if (registration.projectId) {\n registration.projectName = registration.projectId;\n }\n }\n\n });\n scope.totalValues = data.total;\n params.total(data.total); // recal. page nav controls\n return data.values;\n });\n }\n scope.buildColumns = function (datasource) {\n scope.columns = [\n {\n title: $translate.instant(\"COMMON_DATE\"),\n field: 'valueDate',\n visible: getColumnVisibility('valueDate'),\n sortable: 'valueDate',\n getValue: renderValue,\n dataType: \"date\"\n },\n {\n title: $translate.instant(\"COMMON_REGISTRATION\"),\n field: 'registrationDate',\n visible: getColumnVisibility('registrationDate'),\n sortable: 'registrationDate',\n getValue: renderValue,\n dataType: \"timestamp\"\n },\n {\n title: $translate.instant(\"COMMON_VALUE\"),\n field: 'value',\n sortable: 'value',\n getValue: renderValue,\n visible: getColumnVisibility('value'),\n dataType: \"text\"\n }\n ];\n var listIndex = -1;\n for (var i = 0; i < datasource.elements.length; i++) {\n var element = datasource.elements[i];\n var dataField = element.sourceColumn;\n if (dataField === \"assetId\") dataField = \"assetName\";\n if (dataField === \"areaId\") dataField = \"areaName\";\n if (dataField === \"projectId\") dataField = \"projectName\";\n scope.columns.push({\n title: element.label,\n field: dataField,\n getValue: renderValue,\n visible: getColumnVisibility(dataField),\n sortable: dataField,\n dataType: element.type,\n sourceColumn: element.sourceColumn\n });\n }\n }\n\n function getColumnVisibility(datafield) {\n if (scope.hiddencolumns.length > 0) {\n var hidden = scope.hiddencolumns.find(q => q.field === datafield);\n if (hidden) {\n return false;\n }\n }\n return true;\n }\n scope.selectColumn = function (column) {\n column.visible = !column.visible;\n scope.hiddencolumns = $filter('filter')(scope.columns, { visible: false });\n scope.updateSettings();\n }\n\n function renderValue($scope, row) {\n var item = this;\n var field = item.field;\n var value = row[field];\n if (this.dataType === \"date\") {\n if (scope.valueDateFormat && scope.valueDateFormat.format == \"dateWithTime\") {\n //return $filter('date')(value, \"dd.MM.yyyy HH:mm\");\n return $sce.trustAsHtml(``)\n } else {\n return $sce.trustAsHtml(``)\n //return $filter('date')(value, \"dd.MM.yyyy\");\n }\n }\n if (this.dataType === \"timestamp\") {\n return $sce.trustAsHtml(``)\n //return $filter('date')(value, \"dd.MM.yyyy HH:mm:ss\");\n }\n if (this.dataType === \"bool\") {\n if (value === \"true\") {\n return \"\";\n } else {\n return \"\";\n }\n } if (this.dataType === \"user\") {\n var user = $filter('filter')(scope.allUsers, { userId: value }, true);\n if (user.length > 0) {\n return user[0].fullName;\n }\n }\n if (this.dataType === \"list\") {\n var listitem = $filter('filter')(scope.dataLists[this.sourceColumn], { id: parseInt(value) }, true);\n if (listitem.length > 0) {\n return listitem[0].name;\n }\n }\n return value;\n }\n\n scope.setDataSource = function (id) {\n dataSourceService().get(id).then(function (dataSource) {\n scope.datasource = dataSource;\n\n if (!scope.title)\n scope.title = scope.datasource.title;\n\n if(scope.datasource && scope.datasource.objectSource !== 'external'){\n scope.showDataEntryButton = false;\n }\n // Add value property for element\n angular.forEach(scope.datasource.elements, function (element) {\n element.value = null;\n });\n initDataList();\n });\n }\n\n\n scope.updateSettings = function () {\n if (!scope.datasource) return;\n var componentSettings = {\n title: scope.title,\n timeframe: scope.timeframe,\n timePeriod: scope.options.timePeriod,\n dataSource: scope.datasource,\n filters: scope.filters,\n showDataEntryButton: scope.showDataEntryButton,\n hiddencolumns: scope.hiddencolumns,\n valueDateFormat: scope.valueDateFormat,\n theme: scope.theme\n };\n scope.settingsChangeHandler({ settings: componentSettings });\n };\n\n scope.periodChangedHandler = function (timePeriod) {\n if (!timePeriod.timeframe) return;\n scope.options.timePeriod = timePeriod;\n\n if (scope.datasource && scope.datasource.id) {\n scope.getLatestValues();\n }\n\n // if adminmode, then save settings\n if (scope.isAdminMode) {\n scope.updateSettings();\n }\n };\n\n\n\n scope.getValueForElement = function (element, item) {\n var sourceColumn = element.sourceColumn;\n var value = item[sourceColumn];\n return value;\n }\n\n scope.selectDataSource = function () {\n var hasDataSerie = false;\n if (scope.datasource) {\n hasDataSerie = true;\n }\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'dataSourceSingleSelector.html',\n controller: 'dataSourceSingleSelector',\n windowClass: 'newdeviation-modal-window',\n resolve: {\n hasDataSerie: function () {\n return hasDataSerie;\n },\n dataSource: function () {\n return scope.datasource;\n },\n filters: function () {\n return scope.filters;\n },\n withTarget: function () {\n return false;\n },\n type: function () {\n return null;\n },\n externalOnly: function () {\n return true;\n }\n\n }\n });\n\n modalInstance.result.then(function (result) {\n if (scope.datasource && scope.datasource.id != result.dataSource.id) {\n scope.hiddencolumns = [];\n }\n scope.datasource = result.dataSource;\n scope.filters = result.filters;\n scope.setDataSource(scope.datasource.id);\n scope.updateSettings();\n checkIfFiltered();\n \n });\n };\n scope.registerData = function () {\n var settings = {\n dataSource: scope.datasource,\n filters: scope.filters /*todo: test if this works*/\n };\n\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'registrationDialog.html',\n controller: 'registrationDialogController',\n windowClass: 'fixedwidth-modal-window',\n resolve: {\n componentSettings: function () {\n return settings;\n }\n }\n });\n modalInstance.result.then(function (result) {\n });\n };\n\n }\n\n }\n }]);\n","import { getDefaultAppStyle, getDefaultAppTheme, calcDefaultAppFontSize } from \"@common/components/dashboard/designer/common/appStyleService\"\nimport { getUserProfile } from \"@common/stores/userStore\"\n\nangular\n.module(\"DigiLean\")\n.directive('smileyApp', ['$translate', 'debounce',\n function ($translate, debounce) {\n return {\n templateUrl: 'smileyApp.html',\n restrict: 'E',\n scope: {\n 'isAdminMode': '<',\n 'settings': '<',\n 'settingsChangeHandler': '&',\n 'layoutFactor': '<',\n 'userAccess': '<'\n },\n link: function (scope, elem, attrs) {\n \n scope.theme = getDefaultAppTheme()\n scope.canEdit = false;\n scope.selectedSmiley = {\n value: 'smile',\n date: null,\n comment: \"\",\n lastmodifiedBy: \"\"\n }\n scope.comment = \"\";\n\n scope.title = $translate.instant(\"COMMON_TITLE\");\n scope.titleChangedEvent = function($event) {\n scope.title = $event.detail\n scope.updateSettings()\n }\n\n scope.themeChangedEvent = function($event) {\n scope.theme = $event.detail\n scope.updateSettings()\n }\n scope.appStyle = getDefaultAppStyle()\n scope.smileyStyle = {\n \"font-size\": \"3.2rem\"\n }\n function calcStyles() {\n let fontSmiley = \"3.2rem\"\n if(scope.layoutFactor)\n fontSmiley = 3.2 * scope.layoutFactor + \"rem\"\n \n scope.appStyle[\"font-size\"] = calcDefaultAppFontSize(scope.layoutFactor)\n scope.smileyStyle[\"font-size\"] = fontSmiley\n }\n calcStyles()\n scope.$watch('layoutFactor', calcStyles)\n scope.$watch('settings', function (settings) {\n scope.settings = settings;\n if (settings) {\n scope.title = settings.title;\n scope.style = settings.style;\n if (settings.theme) {\n scope.theme = settings.theme;\n }\n if (settings.smiley) {\n scope.selectedSmiley = settings.smiley;\n scope.comment = scope.selectedSmiley.comment;\n }\n }\n });\n\n scope.$watch('userAccess', function (userAccess) {\n scope.canEdit = userAccess.isAdmin || userAccess.assetRole == \"Member\" || userAccess.assetRole == \"Owner\";\n });\n\n scope.changeSmiley = function (smiley) {\n scope.selectedSmiley.value = smiley;\n scope.updateSettings();\n }\n scope.updateComment = function (comment) {\n scope.selectedSmiley.comment = comment;\n scope.selectedSmiley.commentDate = moment().toDate();\n scope.commitChangesDebounced();\n }\n scope.clearComment = function () {\n scope.selectedSmiley.comment = \"\";\n scope.comment = \"\";\n scope.commitChangesDebounced();\n }\n scope.updateSettings = function () {\n const currentUser = getUserProfile()\n scope.selectedSmiley.lastmodifiedBy = currentUser.fullName;\n\n var componentSettings = {\n title: scope.title,\n style: scope.style,\n smiley: scope.selectedSmiley,\n theme: scope.theme\n };\n scope.settingsChangeHandler({ settings: componentSettings });\n \n }\n scope.commitChangesDebounced = debounce(scope.updateSettings, 2000, false);\n scope.$on(\"widget-resized\", function (event, args) {\n var host = $(elem).closest(\"widget\");\n if (host.length == 0)\n host = $(elem).closest(\".modal-body\")\n \n if (host.length == 0) return;\n var width = host.width();\n var height = host.height();\n // Find header to subtract from new height\n var header = $(elem).find(\".ibox-title\");\n var headerHeight = header.height() + 40;\n var container = $(elem).find(\".daycounter\");\n if (container.length === 0) return;\n $(container).css(\"height\", (height - headerHeight));\n });\n\n }\n }\n }]);\n\n","import * as assetService from \"@common/services/assetService\"\n\nangular\n .module('DigiLean')\n .directive(\"wheelImprovement\", ['$translate', 'suggestionService',\n function ($translate, suggestionService) {\n return {\n templateUrl: 'wheelImprovement.html',\n restrict: 'E',\n scope: {\n 'header': '@',\n 'component': '@'\n },\n link: function (scope, elem, attrs) {\n\n var grafcolor = ['#2A2E36', '#0099DE', '#23c6c8', '#0077B5', '#5e5e5e', '#f8ac59', '#434348'],\n graphtextcolor = '#ffffff';\n scope.assets = [];\n scope.selectedFilter = \"All\";\n\n var totalSuggestion = '';\n var planned = '';\n var inProgress = '';\n var implemented = '';\n var evaluated = '';\n\n var browserData = [],\n categories = [],\n data = [],\n j,\n i,\n dataLen = 0,\n drillDataLen,\n brightness;\n\n assetService.getList().then(function (assets) {\n\n\n $translate(['COMMON_ALL', 'COMMON_MY_SUGGESTIONS']).then(function (translations) {\n scope.assets = assets;\n scope.assets.unshift({\n name: translations.COMMON_MY_SUGGESTIONS,\n id: -1\n });\n scope.assets.unshift({\n name: translations.COMMON_ALL,\n id: -2\n });\n\n scope.selectedFilter = translations.COMMON_ALL;\n });\n });\n\n $translate(['IMPROVEMENT_TOTAL_SUGGESTIONS', 'IMPROVEMENT_PLANNED', 'COMMON_IN_PROGRESS', 'IMPROVEMENT_IMPLEMENTED', 'IMPROVEMENT_EVALUATED']).then(function (translations) {\n totalSuggestion = translations.IMPROVEMENT_TOTAL_SUGGESTIONS;\n planned = translations.IMPROVEMENT_PLANNED;\n inProgress = translations.COMMON_IN_PROGRESS;\n implemented = translations.IMPROVEMENT_IMPLEMENTED;\n evaluated = translations.IMPROVEMENT_EVALUATED;\n\n suggestionService().getNoImprovementPerStatus(null).then(function (statusdata) {\n categories = [planned + ' #' + statusdata.planned,\n inProgress + ' #' + statusdata.inProgress,\n implemented + ' #' + statusdata.implemented,\n evaluated + ' #' + statusdata.evaluated],\n\n data = [{\n y: 25,\n color: grafcolor[6],\n drilldown: {\n name: 'Planned Assets',\n categories: ['Asset 1', 'Asset 2', 'Asset 3', 'Asset 4', 'Asset 5'],\n data: [5, 5, 5, 5, 5],\n color: grafcolor[6]\n }\n }, {\n y: 25,\n color: grafcolor[1],\n drilldown: {\n name: inProgress,\n categories: ['Asset 1', 'Asset 2', 'Asset 3', 'Asset 4', 'Asset 5'],\n data: [4, 3, 2, 7, 9],\n color: grafcolor[1]\n }\n }, {\n y: 25,\n color: grafcolor[2],\n drilldown: {\n name: implemented,\n categories: ['Asset 1', 'Asset 2', 'Asset 3', 'Asset 4', 'Asset 5'],\n data: [7, 7, 1, 5, 5],\n color: grafcolor[2]\n }\n }, {\n y: 25,\n color: grafcolor[5],\n drilldown: {\n name: evaluated,\n categories: ['Asset 1', 'Asset 2', 'Asset 3', 'Asset 4', 'Asset 5'],\n data: [1, 9, 4, 6, 5],\n color: grafcolor[5]\n }\n }],\n browserData = [],\n // versionsData = [],\n i,\n j,\n dataLen = data.length,\n drillDataLen,\n brightness;\n\n // Build the data arrays\n for (var i = 0; i < dataLen; i += 1) {\n\n // add browser data\n browserData.push({\n name: categories[i],\n y: data[i].y,\n color: data[i].color\n });\n }\n\n var index = $(elem).find(\".wheel\").data('highchartsChart');\n var currentChart = Highcharts.charts[index];\n currentChart.series[0].setData(browserData, true);\n });\n\n var wheel = $(elem).find(\".wheel\");\n Highcharts.chart({\n chart: {\n renderTo: wheel[0],\n type: 'pie'\n },\n title: {\n text: ''\n },\n yAxis: {\n title: {\n text: ''\n }\n },\n credits: {\n enabled: false\n },\n exporting: { enabled: false },\n\n plotOptions: {\n pie: {\n shadow: false,\n center: ['50%', '50%']\n }\n },\n tooltip: { enabled: false },\n series: [{\n name: totalSuggestion,\n data: browserData,\n size: '100%',\n dataLabels: {\n formatter: function () {\n return this.y > 5 ? this.point.name : null;\n },\n color: graphtextcolor,\n distance: -70,\n style: {\n fontSize: '14px'\n }\n }\n }]\n });\n });\n\n scope.addFilterClickEvent = function (button) {\n scope.selectedFilter = button.name;\n if (button.id === -2) { //All\n scope.filterByAsset(null);\n \n } else if (button.id === -1) { //My suggestions\n scope.filterMyStatusImprovement();\n } else {\n scope.filterByAsset(button.id);\n }\n }\n\n scope.filterMyStatusImprovement = function () {\n suggestionService().getNoMyImprovementStatus().then(function (statusdata) {\n var assetcategories = [planned + ' #' + statusdata.planned,\n inProgress + ' #' + statusdata.inProgress,\n implemented + ' #' + statusdata.implemented,\n evaluated + ' #' + statusdata.evaluated];\n\n var updatededBrowserData = [];\n\n // Build the data arrays\n for (var i = 0; i < dataLen; i += 1) {\n // add new browser data\n updatededBrowserData.push({\n name: assetcategories[i],\n y: data[i].y,\n color: data[i].color\n });\n }\n var index = $(elem).find(\".wheel\").data('highchartsChart');\n var currentChart = Highcharts.charts[index];\n currentChart.series[0].setData(updatededBrowserData, true);\n });\n }\n\n scope.filterByAsset = function (assetId) {\n suggestionService().getNoImprovementPerStatus(assetId).then(function(statusdata) {\n var assetcategories = [planned + ' #' + statusdata.planned,\n inProgress + ' #' + statusdata.inProgress,\n implemented + ' #' + statusdata.implemented,\n evaluated + ' #' + statusdata.evaluated];\n\n var updatededBrowserData = [];\n\n // Build the data arrays\n for (var i = 0; i < dataLen; i += 1) {\n // add new browser data\n updatededBrowserData.push({\n name: assetcategories[i],\n y: data[i].y,\n color: data[i].color\n });\n }\n\n var index = $(elem).find(\".wheel\").data('highchartsChart');\n var currentChart = Highcharts.charts[index];\n currentChart.series[0].setData(updatededBrowserData, true);\n });\n }\n\n }\n }\n }]);\n","import Highcharts from 'highcharts';\n$(function () {\n\n var colors = Highcharts.getOptions().colors;\n\n var firstlinecategories = ['', 'New', '', 'Impl.', ''];\n\n // Antall concat-kall avhenger av hvor mange måneder det finnes data for. Ergo den må lages dynamisk\n var xfirstlinecategories = firstlinecategories.concat(firstlinecategories).concat(firstlinecategories).concat(firstlinecategories).concat(firstlinecategories);\n var zeroes = [];\n xfirstlinecategories.forEach(function () { zeroes.push(0); });\n var options = {\n\n chart: {\n type: 'column'\n },\n\n title: {\n text: ''\n },\n\n credits: {\n enabled: false\n },\n xAxis: [\n\n {\n categories: xfirstlinecategories,\n labels: { autoRotation: false, style: { textOverflow: 'none' } },\n tickWidth: 0,\n },\n {\n categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May'],\n lineColor: '#ffffff',\n tickWidth: 1,\n tickLength: 30\n },\n ],\n\n yAxis: {\n allowDecimals: false,\n min: 0,\n title: {\n text: 'Number of suggestions'\n }\n },\n\n tooltip: {\n formatter: function () {\n\n return '' + this.x + ' ' + this.series.options.stack + '
        ' +\n this.series.name + ': ' + this.y + '
        ' +\n 'Total: ' + this.point.stackTotal;\n }\n },\n\n plotOptions: {\n column: {\n stacking: 'normal',\n groupPadding: 0.20,\n }\n },\n\n series: [{\n name: 'Fysio- ergoterapi', /*'Human Resources',*/\n data: [5, 13, 14, 7, 12],\n color: '#0077B5', /*'#2A2E36',*/\n stack: 'New',\n xAxis: 1\n }, {\n name: 'Miljøtjenesten', /*'Resources & Technical', */\n data: [8, 8, 8, 8, 8],\n color: '#23c6c8', /*'#0099DE',*/\n stack: 'New',\n xAxis: 1\n }, {\n name: 'NAV', /*'Operation & Engineering Services', */\n data: [22, 20, 6, 2, 1],\n color: '#2A2E36', /*'#23c6c8',*/\n stack: 'New',\n xAxis: 1\n }, {\n name: 'Psykisk helsearbeid', /*'HSEQ', */\n data: [13, 14, 8, 7, 12],\n color: '#5e5e5e', /*'#0077B5',*/\n stack: 'New',\n xAxis: 1\n }, {\n name: 'Sola sjukeheim', /*'Maintenance & Modifications',*/\n data: [3, 10, 8, 14, 13],\n color: '#2A2E36', /*'#5e5e5e',*/\n stack: 'New',\n xAxis: 1\n }, {\n name: 'Fysio- ergoterapi', /*'Human Resources', */\n data: [2, 3, 17, 5, 10],\n color: '#0077B5', /*'#2A2E36',*/\n showInLegend: false,\n stack: 'Impl.',\n xAxis: 1\n }, {\n name: 'Miljøtjenesten', /*'Resources & Technical', */\n data: [10, 0, 10, 12, 8],\n color: '#23c6c8', /*'#0099DE',*/\n showInLegend: false,\n stack: 'Impl.',\n xAxis: 1\n }, {\n name: 'NAV', /*'Operation & Engineering Services', */\n data: [5, 25, 6, 4, 3],\n color: '#2A2E36', /*'#23c6c8',*/\n showInLegend: false,\n stack: 'Impl.',\n xAxis: 1\n }, {\n name: 'Psykisk helsearbeid', /*'HSEQ', */\n data: [5, 10, 14, 4, 12],\n color: '#0077B5', /*'#0077B5',*/\n showInLegend: false,\n stack: 'Impl.',\n xAxis: 1\n }, {\n name: 'Sola sjukeheim', /*'Maintenance & Modifications', */\n data: [3, 10, 3, 10, 13],\n color: '#2A2E36', /*'#5e5e5e',*/\n showInLegend: false,\n stack: 'Impl.',\n xAxis: 1\n }, { // make the first x-aksis description show (New Impl. New Impl. etc)\n name: '',\n data: zeroes,\n showInLegend: false,\n stack: 'Impl.',\n\n }]\n };\n\n var onLegendClick = function (event) {\n var myname = this.name;\n var myvis = !this.visible;\n this.chart.series.forEach(function (elem) {\n if (elem.name == myname) {\n elem.setVisible(myvis);\n }\n });\n return false;\n }\n\n\n options.series.forEach(function (serie) {\n serie.events = { legendItemClick: onLegendClick };\n });\n\n if ($('#suggestionbyasset')[0])\n Highcharts.chart('suggestionbyasset', options);\n\n});","import { getUserProfile } from \"@common/stores/userStore\"\n// Controller for the actual modal\nconst DigiLean = angular.module('DigiLean')\nDigiLean.controller('learningController', ['$scope','$filter', 'languageAdminService', 'learningPublicService', 'navigationService',\n function ($scope, $filter, languageAdminService, learningPublicService, navigationService) {\n\n $scope.isAllLanguagesSelected = true\n\n $scope.hasLearningModule = navigationService().hasModule(\"LEARNING\")\n $scope.subscribe(\"UserAuthenticatedAndReady\", function (profile) {\n $scope.hasLearningModule = navigationService().hasModule(\"LEARNING\")\n })\n\n $scope.languages = languageAdminService().getSupportedLanguages()\n \n // For now all languages are selected until a smart search with AI is implemented\n /*const up = getUserProfile()\n if (up.preferredLanguage) {\n $scope.preferredLanguage = up.preferredLanguage\n //$scope.isAllLanguagesSelected = false For now all languages are selected until a smart search with AI is implemented\n } else\n $scope.isAllLanguagesSelected = true\n */\n\n // Get materail\n $scope.allMaterials = []\n $scope.materials = []\n learningPublicService.getPublishedMaterials().then(function (materials) {\n $scope.allMaterials = materials\n identifyNew(materials);\n filter()\n })\n\n $scope.toggleLanguage = function (language) {\n if (language == \"all\") {\n $scope.isAllLanguagesSelected = true\n $scope.preferredLanguage = \"\"\n } else {\n $scope.isAllLanguagesSelected = false\n $scope.preferredLanguage = language\n }\n filter()\n }\n\n $scope.isAllSourcesSelected = true\n $scope.isInternalSelected = false\n $scope.isExternalSelected = false\n\n $scope.toggleContentSource = function (source) {\n if (source == \"all\") {\n $scope.isAllSourcesSelected = true\n $scope.isInternalSelected = false\n $scope.isExternalSelected = false\n }\n if (source == \"internal\") {\n $scope.isInternalSelected = true\n $scope.isAllSourcesSelected = false\n $scope.isExternalSelected = false\n }\n if (source == \"external\") {\n $scope.isExternalSelected = true\n $scope.isAllSourcesSelected = false\n $scope.isInternalSelected = false\n \n }\n filter()\n }\n/*\n $scope.getLink = function(material) {\n // \"learning/internal/1?pageid=0 learningexternal({id:material.id, pageid: 0})\"\n let link = \"/#/learning/\"\n \n link += material.isExternal ? \"external\" : \"internal\"\n if(material.isExternal || material.externalId){\n var externalId = parseInt(material.externalId);\n link += `/${externalId}?pageid=0`\n } else {\n link += `/${material.id}?pageid=0`\n } \n return link\n }*/\n\n function getMaterialLink(material) {\n // \"learning/internal/1?pageid=0 learningexternal({id:material.id, pageid: 0})\"\n let link = \"/#/learning/\"\n link += material.isExternal ? \"external\" : \"internal\"\n link += `/${material.id}?pageid=0`\n return link\n }\n\n function filter() {\n // Filter on language\n var filter = filterOnLanguage($scope.allMaterials)\n var filteredMaterials = filterOnSource(filter)\n if(filteredMaterials && filteredMaterials.length > 0){\n for (var i=0; i {\n if ($scope.isInternalSelected && !material.isExternal)\n filtered.push(material)\n \n if ($scope.isExternalSelected && material.isExternal)\n filtered.push(material)\n })\n return filtered\n }\n\n function identifyNew(materials) {\n var sortedList = []\n var thirtyDaysSince = moment.utc().subtract(31, 'days')\n for (var i = 0; i < materials.length; i++) {\n // all materials not older than 30-31 days is automatic new\n if (thirtyDaysSince.isBefore(moment(materials[i].publishDate)))\n materials[i].isNew = true\n\n // at least two materials will be categorized as new\n if (i == 0 || i == 1) {\n sortedList.push(materials[i])\n } else {\n var firstInList = moment(sortedList[0].publishDate)\n var secondInList = moment(sortedList[1].publishDate)\n var currentMaterial = moment(materials[i].publishDate)\n var isAfterCheck = currentMaterial.isAfter(firstInList)\n if (isAfterCheck) {\n sortedList[0] = materials[i]\n } else if (currentMaterial.isAfter(secondInList)) {\n sortedList[1] = materials[i]\n }\n }\n }\n if (sortedList[0]) {\n sortedList[0].isNew = true\n }\n if (sortedList[1]) {\n sortedList[1].isNew = true\n }\n }\n\n }])","import envConfig from \"@common/envConfig\";\n\nangular.module('DigiLean').factory('learningService', ['$http',\n function ($http) {\n\n function learningService() {\n var resource = \"/learning\";\n var resourceUrl = envConfig.webApiUrl + resource;\n\n return {\n /* Learning Material */\n getPublishedMaterials: function () {\n var url = envConfig.webApiUrl + \"/learningPublic/getPublishedMaterials\";\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n // Admin\n getLearningMaterials: function () {\n var url = resourceUrl;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n getLearningMaterial: function (id) {\n var url = resourceUrl + \"/getById/\" + id;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n getVisitedItems: function (id) {\n var url = envConfig.webApiUrl + \"/learningPublic/GetVisitedItems\";\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n\n createLearningMaterial: function (material) {\n var url = resourceUrl;\n return $http.post(url, material).then(function (result) {\n return result.data;\n });\n },\n editLearningMaterial: function (material) {\n var url = resourceUrl;\n return $http.put(url, material).then(function (result) {\n return result.data;\n });\n },\n deleteLearningMaterial: function (id) {\n var url = resourceUrl + \"/deleteMaterial/\" + id;\n return $http.delete(url).then(function (result) {\n return result.data;\n });\n },\n\n updatePublishStatus: function (materialId, status) {\n var item = {\n status: status\n }\n var url = resourceUrl + \"/updatePublishStatus/\" + materialId;\n return $http.put(url, item).then(function (result) {\n return result.data;\n });\n },\n\n\n updateSummarySortOrder: function (summarySortOrder) {\n var url = resourceUrl + \"/updateSummarySortOrder/\" + summarySortOrder.materialId;\n return $http.put(url, summarySortOrder).then(function (result) {\n return result.data;\n });\n },\n\n updateChapterSortOrder: function (chapterSortOrder) {\n var url = resourceUrl + \"/updateChapterSortOrder/\" + chapterSortOrder.chapterId;\n return $http.put(url, chapterSortOrder).then(function (result) {\n return result.data;\n });\n },\n\n updatePageSectionSortOrder: function (pageSectionSortOrder) {\n var url = resourceUrl + \"/updatePageSectionSortOrder/\" + pageSectionSortOrder.pageId;\n return $http.put(url, pageSectionSortOrder).then(function (result) {\n return result.data;\n });\n },\n\n /* Items */\n getItems: function (materialId) {\n var url = resourceUrl + \"/getItems/\" + materialId;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n\n createItem: function (item) {\n var url = resourceUrl + \"/createItem\";\n return $http.post(url, item).then(function (result) {\n return result.data;\n });\n },\n\n deleteItem: function (id) {\n var url = resourceUrl + \"/deleteItem/\" + id;\n return $http.delete(url).then(function (result) {\n return result.data;\n });\n },\n\n createSection: function (section) {\n var url = resourceUrl + \"/createSection\";\n return $http.post(url, section).then(function (result) {\n return result.data;\n });\n },\n updateSection: function (section) {\n var url = resourceUrl + \"/updateSection\";\n return $http.put(url, section).then(function (result) {\n return result.data;\n });\n },\n deleteSection: function (id) {\n var url = resourceUrl + \"/deleteSection/\" + id;\n return $http.delete(url).then(function (result) {\n return result.data;\n });\n },\n updateItemTitle: function (id, title) {\n var itemTitle = {\n itemId: id,\n title: title\n }\n var url = resourceUrl + \"/updateItemTitle\";\n return $http.put(url, itemTitle).then(function (result) {\n return result.data;\n });\n },\n\n getLearningMaterialStats: function (materialId) {\n var url = resourceUrl + \"/getLearningMaterialStats/\" + materialId;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n checkRepublish: function (materialId) {\n const url = resourceUrl + \"/checkRepublish/\" + materialId\n return $http.get(url).then(function (result) {\n return result.data;\n })\n }\n }\n }\n return learningService;\n }]);","import envConfig from \"@common/envConfig\";\n\nangular.module('DigiLean').factory('learningPublicService', ['$http',\n function ($http) {\n\n const resource = \"/LearningPublic\";\n const resourceUrl = envConfig.webApiUrl + resource\n\n return {\n getUserHelpLearningMaterial(languageCode) {\n if (languageCode != \"en\" && languageCode != \"no\") {\n languageCode = \"en\"\n }\n const url = `${resourceUrl}/gethelp/${languageCode}`\n return $http.get(url).then(function (result) {\n var material = result.data;\n if (material) {\n material.link = \"/#/learning/external/\" + material.id + \"?pageid=0\"\n }\n return result.data\n });\n },\n getHelpPage(languageCode, featureKey) {\n const url = `${resourceUrl}/gethelpPage?languageCode=${languageCode}&featureKey=${featureKey}`\n return $http.get(url).then(function (result) {\n return result.data\n });\n },\n getPublishedMaterials: function () {\n const url = resourceUrl + \"/getPublishedMaterials\";\n return $http.get(url).then(function (result) {\n return result.data\n })\n },\n getItems: function (isExternal, materialId) {\n isExternal = !!isExternal\n const url = `${resourceUrl}/getItems/${materialId}?isExternal=${isExternal}`\n return $http.get(url).then(function (result) {\n return result.data\n })\n },\n getPage: function (isExternal, pageId) {\n isExternal = !!isExternal\n const url = `${resourceUrl}/getPage/${pageId}?isExternal=${isExternal}`\n return $http.get(url).then(function (result) {\n return result.data\n })\n },\n getPageComments: function (materialId, pageId) {\n const url = `${resourceUrl}/${materialId}/getPageComments/${pageId}`\n return $http.get(url).then(function (result) {\n return result.data\n })\n },\n addPageComment: function (materialId, pageId, comment) {\n const url = `${resourceUrl}/${materialId}/addPageComment/${pageId}`\n return $http.post(url, comment).then(function (result) {\n return result.data\n })\n },\n deletePageComment: function (materialId, commentid) {\n const url = `${resourceUrl}/${materialId}/deletePageComment/${commentid}`\n return $http.delete(url).then(function (result) {\n return result.data\n })\n },\n addPageVisit: function (materialId, pageId) {\n const url = `${resourceUrl}/${materialId}/addPageVisit/${pageId}`\n return $http.post(url).then(function (result) {\n return result.data\n })\n },\n }\n }])\n","import * as pdfService from \"@common/services/pdfService\"\nimport toaster from \"@common/components/toast\"\n\nangular\n .module('DigiLean')\n .directive(\"learningPagePdfExport\", ['$translate',\n function ($translate) {\n return {\n templateUrl: 'learningPagePdfExport.html',\n restrict: 'E',\n scope: {\n 'pageId': '<',\n 'fileName': '<',\n 'isExternal': '<'\n },\n link: function (scope, elem, attrs) {\n scope.btnEnabled = true\n \n scope.printPage = function () {\n if (!scope.btnEnabled)\n return\n scope.btnEnabled = false\n pdfService.printLearningPage(scope.pageId, scope.fileName, scope.isExternal).then(success, errorHandler)\n }\n\n function success() {\n console.log(\"printed pdf\")\n scope.btnEnabled = true\n }\n function errorHandler(e) {\n const label = $translate.instant('A3_CREATE_PDF')\n toaster.error(label + \" error\")\n scope.btnEnabled = true\n }\n }\n }\n }]);\n","import { getUserProfile } from \"@common/stores/userStore\"\nimport * as employeeService from \"@common/services/employeeService\"\n\nangular\n .module('DigiLean')\n .directive(\"learningPageComments\", ['learningPublicService',\n function (learningPublicService) {\n return {\n templateUrl: 'learningPageComments.html',\n restrict: 'E',\n scope: {\n 'pageId': '<',\n 'materialId': '<'\n },\n link: function (scope) {\n scope.showAddComment = false\n scope.isLoadingComments = true\n\n scope.currentUser = getUserProfile()\n scope.showAddComment = true\n scope.isLoadingComments = false\n \n scope.text = \"\"\n scope.total = 0\n \n scope.$watch('pageId', function (pageId) {\n // apply\n if (!pageId) return\n learningPublicService.getPageComments(scope.materialId, pageId).then(function(pageComments){\n scope.comments = pageComments.comments\n scope.total = pageComments.total\n })\n \n })\n scope.showAddCommentVisible = function() {\n scope.showAddComment = true\n }\n scope.subscribe('PageCommentAdded', function (comment) {\n if (scope.pageId === comment.learningItemId) {\n scope.total += 1\n }\n })\n scope.subscribe('PageCommentDeleted', function (comment) {\n if (scope.pageId === comment.learningItemId) {\n scope.total -= 1\n }\n })\n \n scope.addComment = function(comment) {\n return scope.saveComment(comment).then(function(savedComment){\n scope.showAddComment = false\n scope.comments.push(savedComment)\n })\n \n }\n scope.deleteComment = function(comment) {\n return learningPublicService.deletePageComment(scope.materialId, comment.id)\n }\n scope.saveComment = function(comment) {\n comment.learningItemId = scope.pageId\n return learningPublicService.addPageComment(scope.materialId, scope.pageId, comment)\n }\n employeeService.getList().then(function (data) {\n scope.employees = data\n })\n }\n }\n }])\n","import * as customerService from \"@common/services/customers/customerService\"\nangular\n.module('DigiLean')\n.directive(\"navnewtask\", ['$uibModal',\n function ($uibModal) {\n return {\n templateUrl: 'navnewtask.html',\n restrict: 'E',\n scope: {\n 'mode': '@'\n },\n link: function (scope, element, attrs) {\n scope.createNew = function () {\n var task = {\n id: 0,\n boardId: 0,\n title: \"\",\n text: \"\",\n boardDate: moment().startOf('day'),\n status: 'blank',\n tags: \"\"\n }\n customerService.getAllUsers().then(function (users) {\n scope.users = users;\n });\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'newBoardTask.html',\n controller: 'newBoardTaskController',\n resolve: {\n task: function () {\n return task;\n },\n options: function () {\n var options = {\n canChangeBoard: true,\n showDueDate: true,\n users: scope.users\n }\n return options;\n }\n }\n });\n }\n }\n }\n }]);\n","import * as assetService from \"@common/services/assetService\"\nimport toaster from \"@common/components/toast\"\n\nangular\n .module('DigiLean')\n .directive(\"navnewbubble\", ['$translate', 'dataSourceService', 'authService', 'dataService', 'dataListService',\n function ($translate, dataSourceService, authService, dataService, dataListService) {\n return {\n templateUrl: 'navnewbubble.html',\n restrict: 'E',\n scope: {\n 'mode': '@'\n },\n link: function (scope, element, attrs) {\n scope.selectedAsset = null;\n scope.value = 1;\n scope.description = null;\n var userid = authService.getCurrentUser().userId;\n var dataSourceId = 0;\n scope.isProcessing = false;\n\n var listOptions = { includeDeletedItems: false };\n var listId = 0;\n function loadList() {\n dataListService().getFeatureList(\"CompetenceBall\", listOptions).then(function (list) {\n if (list) {\n listId = list.id;\n scope.categories = list.items;\n scope.selectedCategory = scope.categories[0];\n }\n });\n }\n loadList();\n\n dataSourceService().getFeatureSource(\"CompetenceBall\").then(function (source) {\n if (source) {\n dataSourceId = source.id;\n }\n })\n\n assetService.getList(true).then(function (data) {\n scope.assets = data;\n scope.selectedAsset = scope.assets[0];\n });\n\n\n /* Events */\n scope.subscribe(\"DataListSortOrderChanged\", function (dataListId) {\n if (dataListId == listId) {\n loadList();\n }\n });\n scope.subscribe(\"DataListItemAdded\", function (item) {\n if (item.dataListId == listId) {\n loadList();\n }\n });\n scope.subscribe(\"DataListItemUpdated\", function (item) {\n if (item.dataListId == listId) {\n loadList();\n }\n });\n scope.subscribe(\"DataListItemDeleted\", function (item) {\n if (item.dataListId == listId) {\n loadList();\n }\n });\n\n scope.selectCategory = function (cat) {\n scope.selectedCategory = cat;\n }\n scope.selectAsset = function (asset) {\n scope.selectedAsset = asset;\n }\n\n scope.save = function () {\n scope.isProcessing = true;\n\n var utcDate = moment.utc(scope.selectedDate).format();\n var valueString = scope.value.toString();\n var registration = {\n valueDate: utcDate,\n value: valueString,\n dimension: scope.selectedCategory.id,\n assetid: scope.selectedAsset.id,\n dimension2: userid,\n description: scope.description\n };\n\n dataService().add(dataSourceId, registration).then(function (savedRegistration) {\n scope.isProcessing = false;\n scope.description = \"\";\n $translate('NAV_COMPETENCE_BALL_CREATED').then(function (msg) {\n toaster.success(msg);\n });\n });\n\n }\n }\n }\n }]);\n","import * as employeeService from \"@common/services/employeeService\"\n\nangular\n .module('DigiLean')\n .controller(\"favoritesController\", ['$scope','$filter','projectService','a3Service','folderService',\n function (scope, $filter, projectService, a3Service, folderService) {\n \n scope.flexiBoards = [];\n scope.a3s = [];\n scope.projectPortfolios = [];\n scope.projects = [];\n scope.isLoading = true;\n employeeService.getUserPreference(\"FlexiboardFavoriteBoards\").then(function (settings) {\n scope.isLoading = false;\n folderService().getBoardsInfo().then(function (member){\n checkBoard(settings.value, member);\n });\n });\n employeeService.getUserPreference(\"FavoriteA3s\").then(function (settings) {\n scope.isLoading = false;\n if (settings && settings.value) {\n a3Service().getA3MiniInfo().then(function (accessA3){\n checkA3(settings.value, accessA3);\n });\n }\n });\n employeeService.getUserPreference(\"ProjectPortfolioFavorites\").then(function (settings) {\n scope.isLoading = false;\n if (settings && settings.value) {\n projectService().getMemberProjectPortfolioInfo().then(function (memberportfolio){\n checkPortfolio(settings.value, memberportfolio);\n }); \n }\n });\n employeeService.getUserPreference(\"ProjectFavorites\").then(function (settings) {\n scope.isLoading = false;\n if (settings && settings.value) {\n projectService().GetMyProjectsMiniInfo().then(function (member){\n checkProject(settings.value, member);\n });\n }\n });\n\n function checkPortfolio(favorites, memberportfolio){\n var checked = [];\n var needToUpdate = false;\n if(favorites){\n for(var i=0; i 0) {\n if(matching[0].name && favorites[i].name != matching[0].name \n && favorites[i].boardType == matching[0].boardType){\n favorites[i].name = matching[0].name;\n needToUpdate = true;\n }\n checked.push(favorites[i]);\n } else if(favorites[i].boardType == 'PERSONAL' || favorites[i].boardType == 'MYSPACE' ||\n favorites[i].boardType == 'TEAMSPACE' || favorites[i].boardType == 'SYSTEMACTIVITY' ||\n favorites[i].boardType == 'TASKSEARCH'){\n // Preventing duplicate boards (bug fix)\n var exists = $filter('filter')(checked, { id: favorites[i].id }, true);\n if (exists.length == 0) {\n checked.push(favorites[i]);\n } else {\n needToUpdate = true; \n }\n \n }else {\n needToUpdate = true; \n }\n }\n }\n scope.flexiBoards = checked;\n\n if(needToUpdate){\n employeeService.updateUserPreference(\"FlexiboardFavoriteBoards\", scope.flexiBoards)\n }\n }\n\n scope.subscribe(\"FlexiboardFavoriteBoardsChanged\", function(flexiboards){\n scope.flexiBoards = flexiboards;\n })\n scope.subscribe(\"FavoriteA3sChanged\", function(a3s){\n scope.a3s = a3s;\n })\n scope.subscribe(\"ProjectPortfolioFavoritesChanged\", function(projectPortfolios){\n scope.projectPortfolios = projectPortfolios;\n })\n scope.subscribe(\"ProjectFavoritesChanged\", function(projects){\n scope.projects = projects;\n })\n\n scope.subscribe(\"BoardNameUpdated\", function (boardname) {\n var matchingboard = $filter('filter')(scope.flexiBoards, { id: boardname.boardId}, true);\n if (matchingboard.length == 1) {\n matchingboard[0].name = boardname.name;\n } else {\n var matchingportfolio = $filter('filter')(scope.projectPortfolios, { id: boardname.boardId}, true);\n if (matchingportfolio.length == 1) {\n matchingportfolio[0].name = boardname.name;\n }\n } \n });\n\n scope.subscribe(\"DashboardTitleUpdated\", function (dashboardtitle) {\n var matching = $filter('filter')(scope.flexiBoards, { id: dashboardtitle.dashboardId}, true);\n if (matching.length == 1) {\n matching[0].name = dashboardtitle.title;\n } \n });\n\n scope.subscribe(\"ProjectNameUpdated\", function (project) {\n var matching = $filter('filter')(scope.projects, { id: project.id}, true);\n if (matching.length == 1) {\n if (matching[0].name) {\n matching[0].name = project.name;\n } else {\n matching[0].name = \"\";\n }\n }\n });\n\n scope.subscribe(\"A3TitleChanged\", function (a3) {\n var matching = $filter('filter')(scope.a3s, { id: a3.a3Id}, true);\n if (matching.length == 1) {\n if (matching[0].title) {\n matching[0].title = a3.title;\n } else {\n matching[0].title = \"\";\n }\n }\n });\n }]);\n\n\n ","import { getUserProfile } from \"@common/stores/userStore\"\n\nangular\n .module('DigiLean')\n .component(\"topLevelComment\", {\n templateUrl: 'topLevelComment.html',\n bindings: {\n currentUser: '<',\n allUsers: '<',\n addFn: '&'\n },\n controller: ['$element',\n function ($element) {\n \n const $ctrl = this\n $ctrl.showAddComment = true\n $ctrl.text = \"\"\n $ctrl.mentions = []\n $ctrl.isSaving = false\n $ctrl.updateText = function(val, mentions) {\n $ctrl.text = val\n $ctrl.mentions = mentions\n }\n $ctrl.showAddCommentVisible = function() {\n $ctrl.showAddComment = true\n }\n $ctrl.add = function() {\n $ctrl.isSaving = true\n var comment = {\n comment: $ctrl.text,\n commentedBy: $ctrl.currentUser.fullName,\n commentedByUserId: $ctrl.currentUser.userId,\n level: 0,\n mentions: ''\n }\n if ($ctrl.mentions && $ctrl.mentions.length > 0) \n comment.mentions = JSON.stringify($ctrl.mentions)\n \n const promise = $ctrl.addFn({comment})\n if (promise && promise.then) {\n promise.then(function() {\n $ctrl.text = \"\"\n $ctrl.showAddComment = false\n $ctrl.isSaving = false\n })\n } else {\n dispatchCustomEvent(\"addcomment\", comment)\n $ctrl.text = \"\"\n $ctrl.showAddComment = false\n $ctrl.isSaving = false\n }\n }\n function dispatchCustomEvent(name, detail) {\n const options = {\n detail,\n bubbles: true,\n composed: true\n }\n $element[0].dispatchEvent(new CustomEvent(name, options))\n }\n $ctrl.$onInit = function() {\n $ctrl.currentUser = getUserProfile();\n }\n }]\n })\n","import { getUserProfile } from \"@common/stores/userStore\"\nimport * as timeService from \"@common/services/timeService\"\n\nangular\n .module('DigiLean')\n .component(\"replyableComment\", {\n templateUrl: 'replyableComment.html',\n bindings: {\n comment: '<',\n selectedCommentId: ' 0)\n return true;\n return false;\n };\n $ctrl.addReply = function () {\n var reply = {\n parentId: $ctrl.comment.id,\n level: $ctrl.comment.level + 1,\n comment: $ctrl.text,\n commentedBy: $ctrl.currentUser.fullName,\n commentedByUserId: $ctrl.currentUser.userId,\n mentions: ''\n };\n if ($ctrl.mentions && $ctrl.mentions.length > 0)\n reply.mentions = JSON.stringify($ctrl.mentions);\n\n $ctrl.isSaving = true;\n \n $ctrl.saveFunction(reply).then(function (savedReply) {\n if (!$ctrl.comment.replies || !Array.isArray($ctrl.comment.replies))\n $ctrl.comment.replies = [];\n $ctrl.comment.replies.push(savedReply);\n $ctrl.showAddReply = false;\n $ctrl.text = \"\";\n $ctrl.isSaving = false;\n calculateTimeElapsed();\n }).catch(function (ex) {\n console.log(ex);\n });\n\n };\n\n $ctrl.saveFunction = function (comment) {\n return $ctrl.saveFn({ comment });\n };\n $ctrl.deleteFunction = function (comment) {\n return $ctrl.deleteFn({ comment });\n };\n var translateOptions = {\n month: $translate.instant('COMMON_TIMEELAPSED_MONTH'),\n days: $translate.instant('COMMON_TIMEELAPSED_DAYS'),\n hours: $translate.instant('COMMON_TIMEELAPSED_HOURS'),\n mins: $translate.instant('COMMON_TIMEELAPSED_MINUTES'),\n seconds: $translate.instant('COMMON_TIMEELAPSED_SECONDS'),\n now: $translate.instant('COMMON_TIMEELAPSED_NOW')\n };\n var calculateTimeElapsed = function () {\n $ctrl.comment.timeSinceComment = timeService.getTimeElapsed($ctrl.comment.commentDate, translateOptions);\n };\n }]\n });\n","import { NgComponent } from \"@common/model/angularModel\";\nimport { UserMention } from \"@common/model/types\";\nimport angular from \"angular\"\nimport FroalaEditor from \"froala-editor\"\nimport Tribute, { TributeOptions } from \"tributejs\"\nimport * as profileImageService from \"@common/services/user/profileImageService\"\n\nangular\n .module('DigiLean')\n .component(\"commentEditor\", {\n template: '
        @
        ',\n bindings: {\n text: '<',\n allUsers: '<',\n onUpdate: '&'\n },\n controller: ['$element', '$translate',\n function (this: NgComponent, $element: JQuery, $translate) {\n let $ctrl = this\n let froalaEditor: FroalaEditor\n\n let tributeConfig: TributeOptions = {\n lookup: 'fullName',\n fillAttr: 'fullName',\n menuItemTemplate: function (item) {\n if (item.original.imageUrl)\n return '' + item.string + ''\n return '' + item.original.initials + '' + item.string + ''\n },\n selectTemplate: function (item) {\n return (\n '@' +\n item.original.fullName +\n \"\"\n )\n },\n values: []\n };\n\n let tribute = new Tribute(tributeConfig)\n\n var froalaOptions = {\n key: \"CTD5xD3E1G2A1A8B2wc2DBKSPJ1WKTUCQOd1OURPE1KDc1C-7J2A4D4B3C6E2C1F4F1F1==\",\n attribution: false,\n toolbarButtons: [\"bold\", \"italic\", \"underline\"],\n pastePlain: false,\n imagePaste: false,\n linkAlwaysBlank: true,\n toolbarSticky: true,\n toolbarInline: true,\n placeholderText: $translate.instant('COMMON_ENTER_TEXT_MENTION'),\n quickInsertTags: [],\n events: {\n initialized: function(this: FroalaEditor) {\n const editor = this;\n editor.html.set(\"\")\n \n tribute.attach(editor.el)\n \n editor.events.on('keydown', function(e: any) {\n if (e.which == FroalaEditor.KEYCODE.ENTER && tribute.isActive) {\n return false\n }\n }, true)\n\n // tribute events\n editor.el.addEventListener(\"tribute-replaced\", function (e: any) {\n console.log(e.detail.item.original)\n })\n },\n 'contentChanged': function () {\n const val = froalaEditor.html.get()\n const mentions = getMentions()\n $ctrl.onUpdate({val, mentions})\n },\n 'paste.after': function (this: FroalaEditor) {\n const editor = this\n const contents = editor.el.innerHTML\n $ctrl.text = contents\n }\n }\n }\n \n function getMentions() {\n var mentionsElements = froalaEditor.el.querySelectorAll(\"span.mention\")\n let mentions: string[] = []\n if (mentionsElements.length > 0) {\n for (let mention of mentionsElements) {\n var id = mention.dataset.userid as string\n if (id)\n mentions.push(id)\n }\n }\n return mentions\n }\n\n $ctrl.$onInit = function() {\n froalaEditor = new FroalaEditor($element[0], froalaOptions)\n }\n\n $ctrl.$onChanges = async function (changes) {\n if (changes.text) {\n if (!changes.text.currentValue && froalaEditor && froalaEditor.html)\n froalaEditor.html.set(\"\")\n }\n \n if (changes.allUsers) {\n\n if (changes.allUsers.currentValue) {\n var mentionUsers: UserMention[] = []\n for (var i = 0; i < changes.allUsers.currentValue.length; i++) {\n const user = changes.allUsers.currentValue[i]\n if (!user || !user.fullName)\n continue;\n let um: UserMention = {\n fullName: user.fullName,\n id: user.id ? user.id : user.userId,\n initials: user.initials,\n imageUrl: \"\"\n }\n if (user.profileImage && user.profileImage.fileUrl) {\n um.imageUrl = user.profileImage.fileUrl\n } else {\n var imageUrl = await profileImageService.getProfileImageUrl(um.id, \"ExtraSmall\")\n if (imageUrl) \n um.imageUrl = imageUrl\n }\n mentionUsers.push(um)\n }\n tribute.append(0, mentionUsers)\n }\n }\n }\n\n $ctrl.$onDestroy = function() {\n froalaEditor.destroy()\n }\n }]\n })","import * as customerService from \"@common/services/customers/customerService\"\nimport * as timeService from \"@common/services/timeService\"\n\nangular\n .module('DigiLean')\n .component(\"replyableMessage\", {\n templateUrl: 'replyableMessage.html',\n bindings: {\n msg: '<'\n },\n controller: ['$scope', '$uibModal',\n function ($scope, $uibModal) {\n var $ctrl = this;\n\n $ctrl.openReplies = function() {\n $uibModal.open({ backdrop: 'static',\n component: 'messageRepliesDialog',\n resolve: {\n msg: function () {\n return $ctrl.msg;\n }\n }\n });\n };\n $ctrl.hasComments = function() {\n return $ctrl.msg.replies && Array.isArray($ctrl.msg.replies) && $ctrl.msg.replies.length > 0;\n };\n \n $ctrl.$onInit = function() {\n customerService.getReplies($ctrl.msg.id).then(function(replies) {\n $ctrl.msg.replies = replies;\n });\n\n $scope.subscribe(\"MessageReplySent\", function(r) {\n if (r.parentId == $ctrl.msg.id) {\n timeService.addTimeElapsedForMsg(r);\n $ctrl.msg.replies.unshift(r);\n }\n });\n };\n }]\n });","import * as customerService from \"@common/services/customers/customerService\"\nimport { getUserProfile } from \"@common/stores/userStore\"\nimport * as timeService from \"@common/services/timeService\"\n\nangular\n .module('DigiLean')\n .component(\"messageRepliesDialog\", {\n templateUrl: 'messageRepliesDialog.html',\n bindings: {\n resolve: '<',\n close: '&',\n dismiss: '&'\n },\n controller:\n function () {\n var $ctrl = this;\n \n var currentUser;\n $ctrl.ok = function () {\n $ctrl.close({$value: $ctrl.selected.item});\n };\n \n $ctrl.cancel = function () {\n $ctrl.dismiss({$value: 'cancel'});\n };\n\n $ctrl.addReply = function() {\n var reply = {\n senderUserId: currentUser.id,\n senderName: currentUser.fullName,\n text: $ctrl.newReply\n };\n customerService.addReply($ctrl.msg.id, reply).then(function() {\n calculateTimeElapsed();\n $ctrl.newReply = '';\n });\n\n };\n $ctrl.$onInit = function () {\n $ctrl.msg = $ctrl.resolve.msg;\n $ctrl.replies = $ctrl.msg.replies ? $ctrl.msg.replies : [];\n calculateTimeElapsed();\n currentUser = getUserProfile();\n };\n\n $ctrl.$onChanges = function (changes) {\n if (changes.resolve) {\n if (!changes.resolve.currentValue && changes.resolve.currentValue.msg && changes.resolve.currentValue.msg.replies)\n calculateTimeElapsed();\n }\n };\n\n function calculateTimeElapsed() {\n $ctrl.replies.forEach(function (msg) {\n timeService.addTimeElapsedForMsg(msg);\n });\n }\n }\n });","import backend from \"@common/services/backendHttp\"\nimport { translateLabel } from \"@common/services/language/DigiLeanLang\"\nimport { createGuid } from \"@common/services/helperFunctions\"\nimport { appInsights } from \"@common/services/webclientErrorLogging\"\nimport * as documentService from \"@common/services/documentService\"\n\nconst DigiLean = angular.module(\"DigiLean\")\nDigiLean.service('froalaInsertDiagram', \n ['$uibModal', '$translate', function ($uibModal, $translate) {\n\n const uploadTemplateAsNewFile = async (name, fileContent) => {\n \n const url = \"api/document/UploadStringAsBlobFile\"\n const data = {name, fileContent, contentType: \"image/svg+xml\"}\n const file = await backend.post(url, data)\n const urlSas = await documentService.getFileUrl(file.fileName, file.id)\n return urlSas\n }\n\n const fetchSvg = async (url) => {\n const res = await fetch(url)\n const svg = await res.text()\n return svg\n }\n async function initialize() {\n let insertLabel = \"Insert diagram\"\n let editLabel = \"Edit diagram\"\n try {\n insertLabel = await translateLabel(\"DIAGRAM_INSERT\")\n editLabel = await translateLabel(\"DIAGRAMEDITOR\")\n }\n catch (e) {}\n FroalaEditor.RegisterCommand('insertDiagram', {\n title: insertLabel,\n focus: true,\n undo: true,\n refreshAfterCallback: true,\n callback: function() {\n const modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'DiagramTemplateSelector.html',\n controller: 'DiagramTemplateSelectorController',\n windowClass: \"digilean-diagram-template-selector\",\n })\n modalInstance.result.then(async (res) => {\n console.log(res.name)\n let newFileName = createGuid() + \".svg\"\n try {\n const svg = await openEditDialog(res.templateSvg)\n if (svg) {\n const urlSAS = await uploadTemplateAsNewFile(newFileName, svg)\n const img = ``\n this.html.insert(img)\n this.undo.saveStep(); // VERY IMPORTANT, because trigger change event\n }\n }\n catch(err) {\n appInsights?.trackException(err, { place: \"Froala Diagram Upload\" })\n }\n \n }, (er) => {\n console.error(er) \n })\n }\n })\n\n const openEditDialog = (svg) => {\n const modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'DiagramEditorFullscreen.html',\n controller: 'DiagramEditorFullscreenController',\n windowClass: \"digilean-diagram-edit\",\n resolve: {\n data: () => svg,\n title: () => \"\",\n showTemplates: () => false\n }\n })\n return modalInstance.result.then(function (newSvg) {\n return newSvg\n })\n }\n FroalaEditor.RegisterCommand('editDiagram', {\n title: editLabel,\n focus: false,\n undo: false,\n refreshAfterCallback: true,\n callback: async function () {\n const $img = this.image.get()\n const src = $img.attr('src')\n const url = new URL(src)\n const fileName = url.pathname.split(\"/\").pop()\n console.log(\"filename\", fileName)\n const fileExtension = fileName.split(\".\").pop()\n \n if (fileExtension.toLowerCase() !== \"svg\")\n return\n \n const svg = await fetchSvg(src)\n\n const newSvg = await openEditDialog(svg)\n if (newSvg) {\n const urlSAS = await uploadTemplateAsNewFile(fileName, newSvg)\n $img.attr('src', urlSAS)\n this.undo.saveStep(); // VERY IMPORTANT, because trigger change event\n }\n }\n })\n }\n \n return { initialize }\n }]\n)\n","import angular from \"angular\"\nimport FroalaEditor, { FroalaEvents, FroalaOptions} from \"froala-editor\"\nimport * as documentService from \"@common/services/documentService\"\nimport { NgComponent } from \"@common/model/angularModel\"\n\nangular\n .module('DigiLean')\n .component(\"froalaEditor\", {\n template: '

        ',\n bindings: {\n content: '<',\n options: '<',\n onUpdate: '&',\n uploadToBlob: '<'\n },\n controller: ['$element', '$translate',\n function (this: NgComponent, $element: JQuery, $translate) {\n let $ctrl = this\n let froalaEditor: FroalaEditor\n let froalaOptions: Partial\n\n // \"#FCBB42\",\"#3BAFDA\", \"#8CC152\",\"#ED5565\",\"#E9573F\", \"#D770AD\", \"#c18852\", \"#5254c1\", \n //\"#fcea42\", \"#52c1c0\", \"#c1bf52\", \"#449d44\",\"#8b8d92\", \"#202020\", \"#13105e\", \"#AC92EC\"\n const defaultOptions: Partial = {\n app: \"DigiLEAN\",\n key: \"CTD5xD3E1G2A1A8B2wc2DBKSPJ1WKTUCQOd1OURPE1KDc1C-7J2A4D4B3C6E2C1F4F1F1==\",\n attribution: false,\n theme: 'gray', \n toolbarButtons: ['bold', 'italic', 'underline', \n '|', 'fontFamily', 'fontSize', 'textColor', 'backgroundColor', 'inlineStyle', 'paragraphStyle', \n '|', 'paragraphFormat', 'align', 'formatOL', 'formatUL', 'outdent', 'indent', \n '|', 'insertLink', 'insertImage', 'insertVideo', 'insertTable'],\n // Colors list.\n colorsBackground: [\n '#fcea42','#FCBB42', '#E9573F','#ED5565','#D770AD', 'REMOVE',\n '#8CC152', '#449d44','#52c1c0','#3BAFDA', '#249CB8', '#FFFFFF',\n '#008cc9','#5254c1','#13105e','#c18852','#8b8d92', '#202020',\n ],\n colorsStep: 6,\n colorsText: [\n '#fcea42','#FCBB42', '#E9573F','#ED5565','#D770AD', 'REMOVE',\n '#8CC152', '#449d44','#52c1c0','#3BAFDA', '#249CB8', '#FFFFFF',\n '#008cc9','#5254c1','#13105e','#c18852','#8b8d92', '#202020',\n ],\n pastePlain: true,\n tabSpaces: 4,\n placeholderText: $translate.instant('COMMON_ENTER_TEXT'),\n toolbarInline: false,\n toolbarSticky: true,\n videoUpload: false,\n quickInsertTags: [],\n imageUploadRemoteUrls: false,\n videoMaxSize: 50 * 1024 * 1024,\n imagePaste: true,\n htmlAllowedTags: ['use','svg','a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b', 'base', 'bdi', 'bdo', 'blockquote', 'br', 'button', 'canvas', 'caption', 'cite', 'code', 'col', 'colgroup', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'header', 'hgroup', 'hr', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'keygen', 'label', 'legend', 'li', 'link', 'main', 'map', 'mark', 'menu', 'menuitem', 'meter', 'nav', 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'param', 'pre', 'progress', 'queue', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'style', 'section', 'select', 'small', 'source', 'span', 'strike', 'strong', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'u', 'ul', 'var', 'video', 'wbr'],\n htmlAllowedEmptyTags: ['use','svg', 'textarea', 'a', 'iframe', 'object', 'video', 'style', 'script', '.fa', '.fr-emoticon', '.fr-inner', 'path', 'line', 'hr']\n }\n const events: Partial = {\n initialized: function() {\n froalaEditor.html.set($ctrl.content)\n },\n 'contentChanged': function () {\n const currentHtml = froalaEditor.html.get();\n const pastedImage = currentHtml.search(\"data-fr-image-pasted\")\n console.log(\"contentChanged, pastedImage=\", pastedImage)\n if (pastedImage == -1) {\n $ctrl.onUpdate({val: currentHtml})\n }\n //\n },\n 'paste.after': function () {\n const currentHtml = froalaEditor.html.get();\n console.log(\"paste.after\")\n const pastedImage = currentHtml.search(\"data-fr-image-pasted\")\n console.log(\"paste.after, pastedImage=\", pastedImage)\n if (pastedImage == -1) {\n $ctrl.onUpdate({val: currentHtml})\n } \n },\n ///@ts-ignore\n 'image.beforeUpload': async function (images) {\n console.log(\"image.beforeUpload. images.length\", images.length)\n if (images.length===0)\n return false\n \n if ($ctrl.uploadToBlob) {\n const imageToUpload = images[0] as File\n \n // Different handling of inserted single image vs pasted image(s)\n const isInsertImage = imageToUpload.name ? true : false\n console.log(\"image.beforeUpload::isInsertImage=\", isInsertImage)\n if (isInsertImage)\n await uploadInsertedImage(imageToUpload) // must be awaited for image.inserted to kick\n \n } else {\n const reader = new FileReader()\n reader.onload = function (e: any) {\n const result = e.target.result\n const image = froalaEditor.image.get()\n froalaEditor.image.insert(result, true, {}, image)\n };\n reader.readAsDataURL(images[0])\n }\n \n froalaEditor.popups.hideAll()\n\n // Stop default upload chain.\n return false\n },\n 'image.uploaded': function (response) {\n console.log(\"image.uploaded\", response)\n return true\n },\n 'image.inserted': function ($img) {\n console.log(\"image.inserted: START\")\n uploadBlobSrcImage($img)\n },\n 'image.replaced': function ($img) {\n console.log(\"image.replaced\", $img)\n },\n 'image.error': function (error, response) {\n console.error(\"image.error\", error)\n console.error(\"image.error\", response)\n }\n }\n\n\n async function uploadBlobSrcImage($img: any) {\n const src = $img[0].src\n console.log(\"image.inserted::current src\", src)\n let currentHtml = froalaEditor.html.get()\n console.log(\"currentHtml\", currentHtml)\n // check for blob source\n if (src && !src.includes(\"blob:\"))\n return\n\n const res = await fetch(src) // reads the file from upload\n const blob = await res.blob()\n console.log(\"Got blob\", blob.size, blob.type)\n\n const uploadedFile = await documentService.uploadImageToBlobStorageNoPreview(blob)\n const url = await documentService.getFileUrl(uploadedFile.fileName, uploadedFile.id)\n \n currentHtml = froalaEditor.html.get()\n const newHtml = currentHtml.replace(src, url)\n froalaEditor.html.set(newHtml)\n // debounce?\n $ctrl.onUpdate({val: newHtml})\n }\n\n /// working - for insert image function only\n async function uploadInsertedImage(imageToUpload: File) {\n console.log(\"single File upload:: filename=\", imageToUpload.name)\n froalaEditor.image.get() // do this will trigger image.inserted\n }\n\n $ctrl.$onInit = function() {\n if(document.body.classList.contains('dark-theme')){\n defaultOptions.theme = 'dark'\n }\n if ($ctrl.options && $ctrl.options instanceof Object) {\n froalaOptions = angular.extend({}, defaultOptions, $ctrl.options)\n } else {\n froalaOptions = angular.extend({}, defaultOptions);\n }\n froalaOptions.events = events\n \n froalaEditor = new FroalaEditor($element[0], froalaOptions)\n }\n\n $ctrl.$onChanges = function (changes: any) {\n if (changes.content) {\n if (froalaEditor && froalaEditor.html) {\n if (changes.content.currentValue) {\n const isEditorActive = document.activeElement?.isSameNode(froalaEditor.el)\n\n const editorCurrentVal = froalaEditor.html.get()\n const isChanges = editorCurrentVal !== changes.content.currentValue\n \n if (isChanges && !isEditorActive) { // don't set while the user is typing\n froalaEditor.html.set($ctrl.content)\n }\n } else {\n froalaEditor.html.set(\"\")\n }\n }\n }\n };\n\n $ctrl.$onDestroy = function() {\n froalaEditor.destroy()\n }\n }]\n })","\nimport lottie from \"lottie-web\"\nimport angular from \"angular\"\n\nangular.module('DigiLean')\n .directive('heartAnimation', ['$rootScope',\n function ($rootScope) {\n return {\n templateUrl: 'heartAnimation.html',\n restrict: 'E',\n scope: {\n\n },\n link: function (scope, elem, attrs) {\n ///@ts-ignore\n scope.animationFinished = false\n scope.$on('$destroy', function () {\n if (completeAnimation) {\n completeAnimation.destroy(completeAnimationName)\n }\n })\n\n let completeAnimation\n let completeAnimationName = \"heart-animation\"\n function showAnimation() {\n if (completeAnimation) {\n completeAnimation.play()\n return\n }\n var okContainer = $(elem).find(\".heart-animation\")[0] // the dom element that will contain the animation\n completeAnimation = lottie.loadAnimation({\n container: okContainer,\n renderer: 'svg',\n name: completeAnimationName,\n loop: false,\n autoplay: true,\n path: 'https://assets2.lottiefiles.com/datafiles/RCNn6rnkYkbg0RI/data.json' // the path to the animation json\n })\n\n completeAnimation.addEventListener('complete', function () {\n ///@ts-ignore\n scope.animationFinished = true;\n\n\n // completeAnimation.stop(completeAnimationName);\n })\n }\n showAnimation()\n }\n }\n }])\n","import backend from \"@common/services/backendHttp\"\nimport type { Connector, DataValue, Job, JobType, LogMessage } from \"@api\"\n\nconst resourceUrl = \"api/connector\"\n\nexport const addConnector = async (connector: Connector) => {\n const url = `${resourceUrl}/add`\n return await backend.post(url, connector)\n}\nexport const getList = async () => {\n const url = `${resourceUrl}/getList`\n return await backend.get(url)\n}\nexport const get = async (id: string) => {\n const url = `${resourceUrl}/get/${id}`\n return await backend.get(url)\n}\nexport const update = async (connector: Connector) => {\n const url = `${resourceUrl}/update`\n return await backend.put(url, connector)\n}\nexport const deleteConnector = async (id: string) => {\n const url = `${resourceUrl}/delete/${id}`\n return await backend.delete(url)\n}\nexport const getJobs = async (connectorId: string) => {\n const url = `${resourceUrl}/jobs/getList/${connectorId.toLowerCase()}`\n return await backend.get(url)\n}\nexport const getJob = async (id: number) => {\n const url = `${resourceUrl}/jobs/get/${id}`\n return await backend.get(url)\n}\nexport const addJob = async (job: Job) => {\n const url = `${resourceUrl}/jobs/add`\n return await backend.post(url, job)\n}\nexport const updateJob = async (job: Job) => {\n const url = `${resourceUrl}/jobs/update`\n return await backend.put(url, job)\n}\nexport const deleteJob = async (id: number) => {\n const url = `${resourceUrl}/jobs/delete/${id}`\n return await backend.delete(url)\n}\nexport const getJobTypes = async () => {\n const url = `${resourceUrl}/jobTypes/getList`\n return await backend.get(url)\n}\nexport const getLastValues = async (job: Job) => {\n const url = `/values/getLatestValues/${job.dataSourceId}`\n const options = { numberOfValues: 10, sortOrder: \"Desc\" }\n return await backend.post(url, options)\n}\nexport const getLastErrors = async (job: Job) => {\n const url = `${resourceUrl}/jobs/getErrors/${job.id}`\n var options = { skip: 0, take: 10 }\n return await backend.post(url, options)\n}\nexport const getLastLogs = async (job: Job) => {\n const url = `${resourceUrl}/jobs/getLogs/${job.id}`\n var options = { skip: 0, take: 20 }\n return await backend.post(url, options)\n}","import * as connectorAdminService from \"@common/services/admin/connectorAdminService\"\nangular\n .module('DigiLean')\n .component(\"logMessageViewer\", {\n templateUrl: 'logMessageViewer.html',\n bindings: {\n langCode: '@',\n show: '<',\n onlyError: '<',\n job: '<',\n },\n controller: ['$translate',\n function ($translate) {\n var $ctrl = this\n $ctrl.headline = \"Logs\"\n $ctrl.loading = false\n $ctrl.logs = []\n\n $ctrl.$onInit = function() {\n //\n };\n\n $ctrl.load = async function() {\n const logs = await getLogs($ctrl.job)\n $ctrl.logs = logs\n }\n $ctrl.$onChanges = function (changes) {\n if (changes.langCode) {\n if (changes.langCode.currentValue) {\n $ctrl.headline = $translate.instant($ctrl.langCode)\n }\n }\n if (changes.show) {\n if (changes.show.currentValue && !changes.show.previousValue) {\n $ctrl.load()\n }\n }\n };\n\n async function getLogs(job) {\n $ctrl.loading = true\n let logs = []\n if ($ctrl.onlyError)\n logs = await connectorAdminService.getLastErrors(job);\n else\n logs = await connectorAdminService.getLastLogs(job);\n setTimeout(function () {\n $ctrl.loading = false\n }, 1000);\n return logs\n }\n $ctrl.$onDestroy = function() {\n //\n };\n }]\n });","import { DigiLeanNgScope } from \"@common/model/angularModel\"\n\nlet currentDate = new Date()\nlet intervalId = 0\n\nlet $scope: DigiLeanNgScope\n\nexport function startMidnightTimer(scope: DigiLeanNgScope) {\n $scope = scope\n if (intervalId)\n return\n intervalId = window.setInterval(checkMidnight, 300000)\n // debug once\n // setTimeout(() => {\n // $scope.publish(\"Midnight\", new Date())\n // }, 10000)\n}\n\nfunction checkMidnight() {\n const dateNow = new Date()\n\n const dayNow = dateNow.getDay()\n const dayCurrent = currentDate.getDay()\n\n if (dayCurrent !== dayNow) {\n console.log(\"Midnight event fired, Time =\", dateNow)\n $scope.publish(\"Midnight\", dateNow)\n }\n\n currentDate = dateNow\n}","import swal from \"sweetalert\"\nimport { userProfile } from \"@common/stores/userStore\"\nimport { systemHubState } from \"@common/services/systemHub\"\nimport { connectSystemHubEvents, subscribeProxyEvents } from \"@common/services/systemHubEvents\"\nimport { HubConnectionState } from \"@microsoft/signalr\"\nimport { getUserFullProfile } from \"@common/stores/userStore\"\nimport * as employeeService from \"@common/services/employeeService\"\nimport { startMidnightTimer } from \"@common/services/eventService\"\nimport toaster from \"@common/components/toast\"\n\nangular.module(\"DigiLean\").controller('mainController', ['$scope', '$state', '$uibModal', '$translate', 'DigiLeanLangState', 'authService', 'suggestionService', 'navigationService', 'customerAccountService','froalaInsertDiagram',\n function ($scope, $state, $uibModal, $translate, DigiLeanLangState, authService, suggestionService, navigationService, customerAccountService, froalaInsertDiagram) {\n\n $scope.userProfile = {};\n \n $scope.hasImprovementModule = navigationService().hasModule(\"IMPROVEMENT\");\n $scope.hasDeviationModule = navigationService().hasModule(\"DEVIATION\");\n $scope.hasA3Module = navigationService().hasModule(\"A3\");\n $scope.hasCompetanceBallModule = navigationService().hasModule(\"COMPETENCEBALL\");\n\n $scope.subscribe(\"UserAuthenticatedAndReady\", function (profile) {\n $scope.hasCompetanceBallModule = navigationService().hasModule(\"COMPETENCEBALL\");\n });\n \n $scope.connectionState = \"Connecting\"; \n $scope.isLoaded = true; //hide loading screen\n // Make sure user is loggedIn.\n let isLoggingOut = false;\n\n let langCode = \"en\"\n userProfile.subscribe(up => {\n if (up.preferredLanguage)\n langCode = up.preferredLanguage\n \n DigiLeanLangState.setLang(langCode)\n })\n\n \n $scope.toggleConnectionState = function (state) {\n if ($scope.connectionState === state)\n return\n $scope.connectionState = state\n\n if (state === \"Connected\" || state === \"loggedOut\" || isLoggingOut) {\n // Hide overlay\n $('.overlay').css('width', '0%')\n } else {\n // show overlay\n $('.overlay').css('width', '100%')\n }\n }\n\n\n $scope.refresh = function() {\n location.reload(false);\n }\n\n $scope.showClock = function () {\n if ($scope.userSettings.navigation.showClock) {\n $scope.userSettings.navigation.showClock = false;\n } else {\n $scope.userSettings.navigation.showClock = true;\n }\n updateSettings();\n };\n\n $scope.showFullscreenOption = function () {\n if ($scope.userSettings.navigation.showFullScreen) {\n $scope.userSettings.navigation.showFullScreen = false;\n } else {\n $scope.userSettings.navigation.showFullScreen = true;\n }\n updateSettings();\n };\n $scope.showNewTask = function () {\n if ($scope.userSettings.navigation.showNewTask) {\n $scope.userSettings.navigation.showNewTask = false;\n } else {\n $scope.userSettings.navigation.showNewTask = true;\n }\n updateSettings();\n };\n $scope.showNewSuggestion = function () {\n if ($scope.userSettings.navigation.showNewSuggestion) {\n $scope.userSettings.navigation.showNewSuggestion = false;\n } else {\n $scope.userSettings.navigation.showNewSuggestion = true;\n }\n updateSettings();\n };\n $scope.showNewDeviation = function () {\n if ($scope.userSettings.navigation.showNewDeviation) {\n $scope.userSettings.navigation.showNewDeviation = false;\n } else {\n $scope.userSettings.navigation.showNewDeviation = true;\n }\n updateSettings();\n };\n $scope.showNewA3 = function () {\n if ($scope.userSettings.navigation.showNewA3) {\n $scope.userSettings.navigation.showNewA3 = false;\n } else {\n $scope.userSettings.navigation.showNewA3 = true;\n }\n updateSettings();\n };\n\n $scope.toggleNotificationBubbles = function () {\n // correct settings are bound we can just save the change\n updateSettings();\n };\n\n $scope.logOut = function () {\n authService.logOut()\n $scope.toggleConnectionState(\"loggedOut\")\n }\n $scope.subscribe(\"UserLogOut\", function() {\n console.log(\"requested to log out by server\")\n $scope.logOut()\n })\n $scope.changePassword = function () {\n $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'changePassword.html',\n controller: 'changePasswordModalController'\n });\n };\n \n\n $scope.userConnectedCssClass = \"\";\n $scope.subscribe('userLoggedIn', function () {\n retrieveUserData()\n // connectToSignalR()\n })\n\n\n // Settings\n var updateSettings = function () {\n if (!$scope.userSettings) return;\n employeeService.updateUserSettings($scope.userSettings).then(function () {\n $scope.publish(\"UserSettingsChanged\", $scope.userSettings);\n });\n };\n var loadSettings = function (userSettings) {\n if (userSettings == null) {\n userSettings = {\n favorites: [],\n navigation: {\n showClock: true,\n showFullScreen: true,\n showNewTask: true,\n showNewSuggestion: false,\n showNewDeviation: false,\n showNewA3: false\n },\n boards: []\n };\n\n updateSettings();\n }/*\n if (!userSettings.notifications) {\n userSettings.notifications = {\n showInfoBubbles: true\n }\n }*/\n if (!userSettings.boards) {\n userSettings.boards = [];\n }\n $scope.userSettings = userSettings;\n if (!$scope.userSettings.navigation) {\n $scope.userSettings.navigation = {\n showClock: true,\n showFullScreen: true,\n showNewTask: false,\n showNewSuggestion: false,\n showNewDeviation: false,\n showNewA3: false\n };\n }\n };\n $scope.userSettings = null;\n $scope.subscribe('UserSettingsChanged', function (userSettings) {\n\n loadSettings(userSettings);\n });\n \n $scope.subscribe('ProfileImageUpdated', function (profileImage) {\n if ($scope.userProfile && $scope.userProfile.id == profileImage.userInfo.userId) {\n $scope.userProfile.profileImage = {};\n $scope.userProfile.profileImageUrl = profileImage.image.smallImageUrl;\n }\n });\n \n\n // TODO: what is the purpose of this?\n // $scope.subscribe('RefreshUserConnected', function () {\n // if (!systemHub) return;\n // if (systemHub.connection.state === 1) { // if connected than notify other clients\n // console.log(\"refresh user connected\");\n // systemHub.SendUserConnectedRequest();\n // }\n // });\n\n $scope.subscribe('UsersHavingAssetAccessChanged', function (userList) {\n // Check if current user is part of change, then refresh\n var currentUserId = authService.getCurrentUser().userId\n for (var i = 0; i < userList.length; i++) {\n if (currentUserId === userList[i]) {\n retrieveUserData()\n continue\n }\n }\n })\n\n\n $scope.userProfileLoaded = false;\n const retrieveUserData = function () {\n // Roles\n $scope.currentUser = authService.getCurrentUser();\n const profile = getUserFullProfile()\n navigationService().updateCache(profile);\n $scope.userProfileLoaded = true;\n $scope.userProfile = profile.user;\n if (profile.settings) {\n loadSettings(profile.settings);\n }\n else {\n loadSettings(null);\n }\n\n //IMPORTANT REMOVE NEXT LINE\n //$scope.isTrial = true; \n $scope.accountEndDate = null;\n if(profile.isTrial){\n $scope.isTrial = true;\n $scope.accountEndDate = profile.subscriptionEndDate;\n }\n\n $scope.publish(\"UserAuthenticatedAndReady\", profile);\n $scope.isAdmin = authService.hasRole(\"Admin\");\n \n //IMPORTANT REMOVE NEXT LINE\n //profile.missingAccountSetup = true; \n if(profile.missingAccountSetup){\n configureAccount();\n } else if(!profile.hasActiveSubscription){\n if(profile.isTrial){\n openEndedTrialDialog();\n } else { // Previous customer may reactive\n openContactSalesDialog(); // testing manual reactivation of account instead of openReactivateDialog();\n }\n }\n updateNavigationModules();\n \n };\n\n var updateNavigationModules = function () {\n $scope.hasImprovementModule = navigationService().hasModule(\"IMPROVEMENT\");\n $scope.hasDeviationModule = navigationService().hasModule(\"DEVIATION\");\n $scope.hasA3Module = navigationService().hasModule(\"A3\");\n $scope.hasCompetanceBallModule = navigationService().hasModule(\"COMPETENCEBALL\");\n\n if (!$scope.hasImprovementModule) {\n $scope.userSettings.navigation.showNewSuggestion = false;\n }\n if (!$scope.hasDeviationModule) {\n $scope.userSettings.navigation.showNewDeviation = false;\n }\n if (!$scope.hasA3Module) {\n $scope.userSettings.navigation.showNewA3 = false;\n }\n };\n \n\n subscribeProxyEvents($scope)\n connectSystemHubEvents($scope)\n systemHubState.subscribe(state => {\n $scope.toggleConnectionState(state)\n if (state === HubConnectionState.Connected) {\n $scope.userConnectedCssClass = \"userisconnected animated shake\"\n }\n if (state === HubConnectionState.Disconnected)\n $scope.userConnectedCssClass = \"\"\n })\n\n function openEndedTrialDialog(){\n var buttonText = $translate.instant('ADMIN_CONTACT_SALES');\n const el = document.createElement('div')\n el.innerHTML = \"\"; //\"Here's a link\"\n\n swal({\n icon: \"warning\",\n allowOutsideClick: false,\n title: $translate.instant('ADMIN_TRIAL_HAS_ENDED'),\n dangerMode: true,\n buttons: {},\n closeOnClickOutside: false,\n closeOnEsc: false,\n closeOnConfirm: false,\n content: el,\n }) \n }\n function openContactSalesDialog(){\n var buttonText = $translate.instant('ADMIN_CONTACT_SALES');\n const el = document.createElement('div')\n el.innerHTML = \"\"; //\"Here's a link\"\n\n swal({\n icon: \"warning\",\n allowOutsideClick: false,\n title: $translate.instant('ADMIN_SUBSCRIPTION_ENDED'),\n dangerMode: true,\n buttons: {},\n closeOnClickOutside: false,\n closeOnEsc: false,\n closeOnConfirm: false,\n content: el,\n }) \n \n }\n\n function openReactivateDialog(){\n swal({\n title: $translate.instant('ADMIN_WELCOME_BACK'),\n text: $translate.instant('ADMIN_SUBSCRIPTION_ENDED'),\n icon: \"warning\",\n buttons: {reactivate: {text:$translate.instant('ADMIN_REACTIVATE_NOW'), className:\"sa-digilean-button\"}},\n dangerMode: true,\n closeOnClickOutside: false,\n closeOnEsc: false\n })\n .then((reactivate) => {\n if (reactivate) {\n swal($translate.instant('ADMIN_ACCOUNT_REACTIVATED'), {\n icon: \"success\",\n buttons: {\n confirm: {\n text: \"OK\",\n value: true,\n visible: true,\n className: \"sa-digilean-button\",\n closeModal: true,\n }\n }\n \n }).then((ok) => {\n customerAccountService().reactivateAccount().then(function (result) {\n })\n })\n }\n })\n }\n function configureAccount() {\n \n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'accountSetup.html',\n controller: 'accountSetupController',\n resolve: {\n accountowner: function () {\n return $scope.userProfile;\n }\n\n }\n });\n\n modalInstance.result.then(function (config) {\n $state.go('myspace');\n }, function () {\n });\n }\n\n $scope.addFeedBack = function () {\n \n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'newFeedbackForm.html',\n controller: 'newFeedbackModalController',\n resolve: {\n suggestion: function () {\n return {\n id: 0,\n title: \"\",\n text: \"\",\n };\n }\n\n }\n });\n\n // When user has created new suggestion\n modalInstance.result.then(function (suggestion) {\n suggestionService().addFeedBackToDigiLean(suggestion).then(function (savedsuggestion) {\n $translate('NAV_FEEDBACK_SENT').then(function (msg) {\n toaster.success(msg);\n });\n });\n }, function () {\n });\n };\n\n froalaInsertDiagram.initialize()\n\n startMidnightTimer($scope)\n }]);\n\n","import { systemHub } from \"@common/services/systemHub\"\nimport { DigiLeanNgScope } from \"@common/model/angularModel\"\nimport * as systemHubService from \"@common/services/systemHubService\"\nimport { A3StepContentChanged } from \"@common/model/backendTypes\"\n\nexport function connectSystemHubEvents($scope: DigiLeanNgScope) {\n systemHub.on(\"TrialRegistration\", function(trial) {\n console.log(\"TrialRegistration\")\n console.log(trial)\n })\n systemHub.on('TestMessage', function (test) {\n $scope.publish(\"TestMessage\", test);\n });\n systemHub.on('Notification', function (notification) {\n $scope.publish(\"Notification\", notification);\n });\n systemHub.on('NotificationSent', function (notification) {\n $scope.publish(\"NotificationSent\", notification);\n });\n systemHub.on('NotificationArchived', function (notification) {\n $scope.publish(\"NotificationArchived\", notification);\n });\n systemHub.on('NotificationSeen', function (notification) {\n $scope.publish(\"NotificationSeen\", notification);\n });\n systemHub.on('MarkedAllNotificationsAsRead', function (user) {\n $scope.publish(\"MarkedAllNotificationsAsRead\", user);\n });\n systemHub.on('OnlineUsersStatus', function (status) {\n $scope.publish(\"OnlineUsersStatus\", status);\n });\n systemHub.on('UsersConnectedChanged', function (users) {\n $scope.publish(\"UsersConnectedChanged\", users);\n });\n systemHub.on('CustomerUsersConnectedChanged', function (customerEvent) {\n $scope.publish(\"CustomerUsersConnectedChanged\", customerEvent);\n });\n systemHub.on('UsersHavingAssetAccessChanged', function (users) {\n $scope.publish(\"UsersHavingAssetAccessChanged\", users);\n });\n systemHub.on('AllUsersOnline', function (usersOnline) {\n $scope.publish(\"AllUsersOnline\", usersOnline);\n });\n // ThreeC\n systemHub.on('ThreeCItemCreated', function (data) {\n $scope.publish(\"ThreeCItemCreated\", data);\n });\n systemHub.on('ThreeCItemConcernUpdated', function (data) {\n $scope.publish(\"ThreeCItemConcernUpdated\", data);\n });\n systemHub.on('ThreeCLogAssetUpdated', function (data) {\n $scope.publish(\"ThreeCLogAssetUpdated\", data);\n });\n systemHub.on('ThreeCItemStatusUpdated', function (data) {\n $scope.publish(\"ThreeCItemStatusUpdated\", data);\n });\n /// Dashboard events\n ///\n systemHub.on('DashboardCreated', function (dashboard) {\n $scope.publish(\"DashboardCreated\", dashboard);\n });\n systemHub.on('DashboardUpdated', function (dashboard) {\n $scope.publish(\"DashboardUpdated\", dashboard);\n });\n systemHub.on('DashboardDeleted', function (dashboard) {\n $scope.publish(\"DashboardDeleted\", dashboard);\n });\n systemHub.on('DashboardWidgetSettingsChanged', function (data) {\n $scope.publish(\"DashboardWidgetSettingsChanged\", data);\n });\n\n systemHub.on('DashboardPageAdded', function(page) {\n $scope.publish(\"DashboardPageAdded\", page);\n });\n systemHub.on('DashboardPageDeleted', function(page) {\n $scope.publish(\"DashboardPageDeleted\", page);\n });\n systemHub.on('DashboardWidgetAdded', function(widget) {\n $scope.publish(\"DashboardWidgetAdded\", widget);\n });\n systemHub.on('DashboardWidgetRemoved', function(widget) {\n $scope.publish(\"DashboardWidgetRemoved\", widget);\n });\n systemHub.on('DashboardWidgetChanged', function(widget) {\n $scope.publish(\"DashboardWidgetChanged\", widget);\n })\n /// Dashboard events end\n ///\n systemHub.on('DataValueAdded', function (value) {\n $scope.publish(\"DataValueAdded\", value);\n });\n systemHub.on('DataValueDeleted', function (value) {\n $scope.publish(\"DataValueDeleted\", value);\n });\n systemHub.on('DataValueUpdated', function (value) {\n $scope.publish(\"DataValueUpdated\", value);\n });\n systemHub.on('DataListSortOrderChanged', function (value) {\n $scope.publish(\"DataListSortOrderChanged\", value);\n });\n systemHub.on('DataListCreated', function (value) {\n $scope.publish(\"DataListCreated\", value);\n });\n systemHub.on('DataListItemAdded', function (value) {\n $scope.publish(\"DataListItemAdded\", value);\n });\n systemHub.on('DataListItemDeleted', function (value) {\n $scope.publish(\"DataListItemDeleted\", value);\n });\n systemHub.on('DataListItemUpdated', function (value) {\n $scope.publish(\"DataListItemUpdated\", value);\n });\n systemHub.on('DataListUpdated', function (value) {\n $scope.publish(\"DataListUpdated\", value);\n });\n systemHub.on('DataListDeleted', function (value) {\n $scope.publish(\"DataListDeleted\", value);\n });\n systemHub.on('DataSourceUpdated', function (value) {\n $scope.publish(\"DataSourceUpdated\", value);\n });\n systemHub.on('DataSourceUpdated', function (value) {\n $scope.publish(\"DataSourceUpdated\", value);\n });\n systemHub.on('DataSourceCreated', function (value) {\n $scope.publish(\"DataSourceCreated\", value);\n });\n systemHub.on('DataSourceDeleted', function (value) {\n $scope.publish(\"DataSourceDeleted\", value);\n });\n systemHub.on('DateStatusChanged', function (attribute) {\n $scope.publish(\"DateStatusChanged\", attribute);\n });\n systemHub.on('ConnectorCreated', function (value) {\n $scope.publish(\"ConnectorCreated\", value);\n });\n systemHub.on('ConnectorUpdated', function (value) {\n $scope.publish(\"ConnectorUpdated\", value);\n });\n systemHub.on('ConnectorDeleted', function (value) {\n $scope.publish(\"ConnectorDeleted\", value);\n });\n systemHub.on('JobCreated', function (value) {\n $scope.publish(\"JobCreated\", value);\n });\n systemHub.on('JobUpdated', function (value) {\n $scope.publish(\"JobUpdated\", value);\n });\n systemHub.on('JobDeleted', function (value) {\n $scope.publish(\"JobDeleted\", value);\n });\n systemHub.on('NewVersion', function (version) {\n $scope.publish(\"NewVersion\", version);\n });\n systemHub.on('ImprovementLikeAdded', function (like) {\n $scope.publish(\"ImprovementLikeAdded\", like);\n });\n systemHub.on('ImprovementLikeRemoved', function (like) {\n $scope.publish(\"ImprovementLikeRemoved\", like);\n });\n systemHub.on('SuggestionCommentedOn', function (comment) {\n $scope.publish(\"SuggestionCommentedOn\", comment);\n });\n systemHub.on('SuggestionAttachmentAdded', function (attachment) {\n $scope.publish(\"SuggestionAttachmentAdded\", attachment);\n });\n systemHub.on('SuggestionAttachmentDeleted', function (attachment) {\n $scope.publish(\"SuggestionAttachmentDeleted\", attachment);\n });\n systemHub.on('NewFeedBackToDigiLean', function (suggestion) {\n $scope.publish(\"NewFeedBackToDigiLean\", suggestion);\n });\n systemHub.on('NewImprovement', function (improvement) {\n $scope.publish(\"NewImprovement\", improvement);\n });\n systemHub.on('ImprovementUpdated', function (improvement) {\n $scope.publish(\"ImprovementUpdated\", improvement);\n });\n systemHub.on('ImprovementTitleChanged', function (improvement) {\n $scope.publish(\"ImprovementTitleChanged\", improvement);\n });\n systemHub.on('ImprovementDeleted', function (improvement) {\n $scope.publish(\"ImprovementDeleted\", improvement);\n });\n systemHub.on('ImprovementChangedStatus', function (status) {\n $scope.publish(\"ImprovementChangedStatus\", status);\n });\n systemHub.on('ImprovementPriorityChanged', function (priority) {\n $scope.publish(\"ImprovementPriorityChanged\", priority);\n });\n systemHub.on('ImprovementResponsibleChanged', function (data) {\n $scope.publish(\"ImprovementResponsibleChanged\", data);\n });\n systemHub.on('ImprovementDueDateChanged', function (data) {\n $scope.publish(\"ImprovementDueDateChanged\", data);\n });\n systemHub.on('ImprovementTextChanged', function (data) {\n $scope.publish(\"ImprovementTextChanged\", data);\n });\n systemHub.on('A3LinkAdded', function (link) {\n $scope.publish(\"A3LinkAdded\", link);\n });\n systemHub.on('A3LinkDeleted', function (link) {\n $scope.publish(\"A3LinkDeleted\", link);\n }); \n systemHub.on('A3AttachmentAdded', function (attachment) {\n $scope.publish(\"A3AttachmentAdded\", attachment);\n });\n systemHub.on('A3AttachmentDeleted', function (attachment) {\n $scope.publish(\"A3AttachmentDeleted\", attachment);\n });\n systemHub.on('A3AttachmentCountChanged', function (attachment) {\n $scope.publish(\"A3AttachmentCountChanged\", attachment);\n });\n systemHub.on('A3Created', function (a3) {\n $scope.publish(\"A3Created\", a3);\n });\n systemHub.on('A3Updated', function (a3) {\n $scope.publish(\"A3Updated\", a3);\n });\n systemHub.on('A3OwnerChanged', function (a3) {\n $scope.publish(\"A3OwnerChanged\", a3);\n });\n systemHub.on('A3StrategyGoalAdded', function (a3) {\n $scope.publish(\"A3StrategyGoalAdded\", a3);\n });\n systemHub.on('A3StrategyGoalDeleted', function (a3) {\n $scope.publish(\"A3StrategyGoalDeleted\", a3);\n });\n systemHub.on('A3Deleted', function (id) {\n $scope.publish(\"A3Deleted\", id);\n });\n systemHub.on('A3TemplateCreated', function (A3Template) {\n $scope.publish(\"A3TemplateCreated\", A3Template);\n });\n systemHub.on('A3TemplateUpdated', function (A3Template) {\n $scope.publish(\"A3TemplateUpdated\", A3Template);\n });\n systemHub.on('A3TemplateDeleted', function (id) {\n $scope.publish(\"A3TemplateDeleted\", id);\n });\n systemHub.on('A3sDeleted', function (ids) {\n $scope.publish(\"A3sDeleted\", ids);\n });\n systemHub.on('A3TitleChanged', function (title) {\n $scope.publish(\"A3TitleChanged\", title);\n });\n systemHub.on('A3GoalChanged', function (goal) {\n $scope.publish(\"A3GoalChanged\", goal);\n });\n systemHub.on('A3VersionCreated', function (a3) {\n $scope.publish(\"A3VersionCreated\", a3);\n });\n systemHub.on('A3ProjectInfoUpdated', function (info) {\n $scope.publish(\"A3ProjectInfoUpdated\", info);\n });\n systemHub.on('A3ProjectMilestoneDeleted', function (milestone) {\n $scope.publish(\"A3ProjectMilestoneDeleted\", milestone);\n });\n systemHub.on('A3ProjectMilestoneCreated', function (milestone) {\n $scope.publish(\"A3ProjectMilestoneCreated\", milestone);\n });\n systemHub.on('A3ProjectMilestoneUpdated', function (milestone) {\n $scope.publish(\"A3ProjectMilestoneUpdated\", milestone);\n });\n systemHub.on('A3StatusChanged', function (data) {\n $scope.publish(\"A3StatusChanged\", data);\n });\n systemHub.on('A3StepUpdated', function (step) {\n $scope.publish(\"A3StepUpdated\", step);\n });\n systemHub.on('A3StepContentChanged', function (data: A3StepContentChanged) {\n $scope.publish(\"A3StepContentChanged\", data)\n });\n systemHub.on('A3StepApprovedEvent', function (step) {\n $scope.publish(\"A3StepApprovedEvent\", step);\n });\n systemHub.on('A3StepCommentedOn', function (step) {\n $scope.publish(\"A3StepCommentedOn\", step);\n });\n systemHub.on('A3ParticipantGroupUpdated', function (group) {\n $scope.publish(\"A3ParticipantGroupUpdated\", group);\n });\n systemHub.on('A3TemplateDownloaded', function (data) {\n $scope.publish(\"A3TemplateDownloaded\", data);\n });\n systemHub.on('DeviationResponsibleChanged', function (data) {\n $scope.publish(\"DeviationResponsibleChanged\", data);\n });\n systemHub.on('DeviationDueDateChanged', function (data) {\n $scope.publish(\"DeviationDueDateChanged\", data);\n });\n systemHub.on('DeviationCreated', function (data) {\n $scope.publish(\"DeviationCreated\", data);\n });\n systemHub.on('DeviationUpdated', function (data) {\n $scope.publish(\"DeviationUpdated\", data);\n });\n systemHub.on('DeviationDeleted', function (data) {\n $scope.publish(\"DeviationDeleted\", data);\n });\n systemHub.on('DeviationChangedStatus', function (data) {\n $scope.publish(\"DeviationChangedStatus\", data);\n });\n systemHub.on('DeviationSeverityChanged', function (data) {\n $scope.publish(\"DeviationSeverityChanged\", data);\n });\n systemHub.on('DeviationCommentedOn', function (comment) {\n $scope.publish(\"DeviationCommentedOn\", comment);\n });\n systemHub.on('DeviationAttachmentAdded', function (attachment) {\n $scope.publish(\"DeviationAttachmentAdded\", attachment);\n });\n systemHub.on('DeviationAttachmentDeleted', function (attachment) {\n $scope.publish(\"DeviationAttachmentDeleted\", attachment);\n });\n systemHub.on('DeviationAttachmentCountChanged', function (attachment) {\n $scope.publish(\"DeviationAttachmentCountChanged\", attachment);\n });\n systemHub.on('DeviationTitleChanged', function (data) {\n $scope.publish(\"DeviationTitleChanged\", data);\n });\n systemHub.on('DeviationConsequencesChanged', function (data) {\n $scope.publish(\"DeviationConsequencesChanged\", data);\n });\n systemHub.on('DeviationArchived', function (data) {\n $scope.publish(\"DeviationArchived\", data);\n });\n systemHub.on('DeviationUnArchived', function (data) {\n $scope.publish(\"DeviationUnArchived\", data);\n });\n systemHub.on('ActivityOccured', function (activity) {\n $scope.publish(\"ActivityOccured\", activity);\n });\n systemHub.on('SystemActivityOccured', function (activity) {\n $scope.publish(\"SystemActivityOccured\", activity);\n });\n systemHub.on('BoardTemplateDeleted', function (template) {\n $scope.publish(\"BoardTemplateDeleted\", template);\n });\n systemHub.on('NewTask', function (task) {\n $scope.publish(\"NewTask\", task);\n });\n systemHub.on('CreateActionListItem', function (task) {\n $scope.publish(\"CreateActionListItem\", task);\n });\n systemHub.on('DeleteActionListItem', function (task) {\n $scope.publish(\"DeleteActionListItem\", task);\n });\n systemHub.on('UpdateActionListItem', function (task) {\n $scope.publish(\"UpdateActionListItem\", task);\n });\n systemHub.on('ActionItemMovedToTask', function (task) {\n $scope.publish(\"ActionItemMovedToTask\", task);\n });\n systemHub.on('TaskUpdated', function (task) {\n $scope.publish(\"TaskUpdated\", task);\n });\n systemHub.on('TaskStatusUpdated', function (status) {\n $scope.publish(\"TaskStatusUpdated\", status);\n });\n systemHub.on('TaskDeviationCreated', function (task) {\n $scope.publish(\"TaskDeviationCreated\", task);\n });\n systemHub.on('TaskCloned', function (clone) {\n $scope.publish(\"TaskCloned\", clone);\n });\n systemHub.on('TaskDeleted', function (id) {\n $scope.publish(\"TaskDeleted\", id);\n });\n systemHub.on('TaskMoved', function (moveSettings) {\n $scope.publish(\"TaskMoved\", moveSettings);\n });\n systemHub.on('TaskAssigned', function (taskAssigned) {\n $scope.publish(\"TaskAssigned\", taskAssigned);\n });\n systemHub.on('TaskDurationUpdated', function (durationUpdated) {\n $scope.publish(\"TaskDurationUpdated\", durationUpdated);\n });\n systemHub.on('TaskMovedRow', function (durationUpdated) {\n $scope.publish(\"TaskMovedRow\", durationUpdated);\n });\n systemHub.on('TaskMovedToActionList', function (task) {\n $scope.publish(\"TaskMovedToActionList\", task);\n });\n systemHub.on('TaskStartDateUpdated', function (task) {\n $scope.publish(\"TaskStartDateUpdated\", task);\n });\n systemHub.on('BoardDeleted', function (id) {\n $scope.publish(\"BoardDeleted\", id);\n });\n systemHub.on('BoardCreated', function (board) {\n $scope.publish(\"BoardCreated\", board);\n });\n systemHub.on('TasksDeleted', function (taskIds) {\n $scope.publish(\"TasksDeleted\", taskIds);\n });\n systemHub.on('TaskRepeated', function (data) {\n $scope.publish(\"TaskRepeated\", data);\n });\n systemHub.on('BoardCategoryAssigned', function (data) {\n $scope.publish(\"BoardCategoryAssigned\", data);\n });\n systemHub.on('BoardNameUpdated', function (data) {\n $scope.publish(\"BoardNameUpdated\", data);\n });\n systemHub.on('BoardSettingUpdated', function (data) {\n $scope.publish(\"BoardSettingUpdated\", data);\n });\n systemHub.on('DashboardSettingsUpdated', function (data) {\n $scope.publish(\"DashboardSettingsUpdated\", data);\n });\n systemHub.on('DashboardTitleUpdated', function (data) {\n $scope.publish(\"DashboardTitleUpdated\", data);\n });\n systemHub.on('DeviationActionItemAdded', function (data) {\n $scope.publish(\"DeviationActionItemAdded\", data);\n });\n systemHub.on('TaskDateUpdated', function (data) {\n $scope.publish(\"TaskDateUpdated\", data);\n });\n systemHub.on('TaskDescriptionUpdated', function (data) {\n $scope.publish(\"TaskDescriptionUpdated\", data);\n });\n systemHub.on('TaskChangedBoard', function (data) {\n $scope.publish(\"TaskChangedBoard\", data);\n });\n systemHub.on('TaskCommentAdded', function (data) {\n $scope.publish(\"TaskCommentAdded\", data);\n });\n systemHub.on('TaskCommentDeleted', function (data) {\n $scope.publish(\"TaskCommentDeleted\", data);\n });\n systemHub.on('TaskComment', function (data) {\n $scope.publish(\"TaskCommentAdded\", data);\n });\n systemHub.on('TaskAttachmentAdded', function (data) {\n $scope.publish(\"TaskAttachmentAdded\", data);\n });\n systemHub.on('TaskAttachmentDeleted', function (data) {\n $scope.publish(\"TaskAttachmentDeleted\", data);\n });\n systemHub.on('TaskAttachmentCountChanged', function (data) {\n $scope.publish(\"TaskAttachmentCountChanged\", data);\n });\n systemHub.on('TaskDateMoved', function (data) {\n $scope.publish(\"TaskDateMoved\", data);\n });\n systemHub.on('TaskArchived', function (data) {\n $scope.publish(\"TaskArchived\", data);\n });\n systemHub.on('TaskTitleChanged', function (data) {\n $scope.publish(\"TaskTitleChanged\", data);\n });\n systemHub.on('TaskMovedFromArchive', function (data) {\n $scope.publish(\"TaskMovedFromArchive\", data);\n });\n systemHub.on('SubTaskCountChanged', function (data) {\n $scope.publish(\"SubTaskCountChanged\", data);\n });\n systemHub.on('NewSubTask', function (data) {\n $scope.publish(\"NewSubTask\", data);\n });\n systemHub.on('MessageReceived', function (data) {\n $scope.publish(\"MessageReceived\", data);\n });\n systemHub.on('ProjectMessageAdded', function (data) {\n $scope.publish(\"ProjectMessageAdded\", data);\n });\n systemHub.on('ProjectMessageEdited', function (data) {\n $scope.publish(\"ProjectMessageEdited\", data);\n });\n systemHub.on('ProjectMessageDeleted', function (data) {\n $scope.publish(\"ProjectMessageDeleted\", data);\n });\n systemHub.on('MessageSent', function (data) {\n $scope.publish(\"MessageSent\", data);\n });\n systemHub.on('MessageChanged', function (data) {\n $scope.publish(\"MessageChanged\", data);\n });\n systemHub.on('MessageDeleted', function (data) {\n $scope.publish(\"MessageDeleted\", data);\n });\n systemHub.on('MessageReplySent', function (data) {\n $scope.publish(\"MessageReplySent\", data);\n });\n systemHub.on('LearningItemTitleChanged', function (data) {\n $scope.publish(\"LearningItemTitleChanged\", data);\n });\n systemHub.on('LearningMaterialDeleted', function (data) {\n $scope.publish(\"LearningMaterialDeleted\", data);\n });\n systemHub.on('LearningItemDeleted', function (data) {\n $scope.publish(\"LearningItemDeleted\", data);\n });\n systemHub.on('LearningItemSectionUpdated', function (data) {\n $scope.publish(\"LearningItemSectionUpdated\", data);\n });\n \n systemHub.on('PageCommentAdded', function (data) {\n $scope.publish(\"PageCommentAdded\", data);\n });\n systemHub.on('PageCommentDeleted', function (data) {\n $scope.publish(\"PageCommentDeleted\", data);\n });\n systemHub.on('HeartbeatReceived', function (heartbeat) {\n $scope.publish(\"HeartbeatReceived\", heartbeat);\n });\n systemHub.on('JobErrorOccurred', function (jobId) {\n $scope.publish(\"JobErrorOccurred\", jobId);\n });\n systemHub.on('ConnectorStarted', function (connectorId) {\n $scope.publish(\"ConnectorStarted\", connectorId);\n });\n systemHub.on('ConnectorStopped', function (connectorId) {\n $scope.publish(\"ConnectorStopped\", connectorId);\n });\n systemHub.on('JobExecuted', function (job) {\n $scope.publish(\"JobExecuted\", job);\n });\n systemHub.on('ProfileImageUpdated', function (data) {\n $scope.publish(\"ProfileImageUpdated\", data);\n });\n \n systemHub.on('A3TableColumnAdded', function (data) {\n if (data.settings && typeof data.settings === \"string\") {\n data.settings = JSON.parse(data.settings);\n }\n $scope.publish(\"A3TableColumnAdded\", data);\n });\n systemHub.on('A3TableColumnDeleted', function (data) {\n $scope.publish(\"A3TableColumnDeleted\", data);\n });\n systemHub.on('A3TableColumnUpdated', function (data) {\n if (data.value && typeof data.value === \"string\") {\n data.value = JSON.parse(data.value);\n }\n $scope.publish(\"A3TableColumnUpdated\", data);\n });\n systemHub.on('A3TableCellUpdated', function (data) {\n if (data.settings && typeof data.settings === \"string\") {\n data.settings = JSON.parse(data.settings);\n }\n if (data.value && typeof data.value === \"string\") {\n data.value = JSON.parse(data.value);\n }\n $scope.publish(\"A3TableCellUpdated\", data);\n });\n systemHub.on('A3TableSortOrderChanged', function (data) {\n $scope.publish(\"A3TableSortOrderChanged\", data);\n });\n systemHub.on('A3TableRowSortOrderChanged', function (data) {\n $scope.publish(\"A3TableRowSortOrderChanged\", data);\n });\n systemHub.on('A3TableRowDeleted', function (data) {\n $scope.publish(\"A3TableRowDeleted\", data);\n });\n systemHub.on('A3AddedToTable', function (data) {\n $scope.publish(\"A3AddedToTable\", data);\n });\n systemHub.on('SmartActionListTaskCreated', function (data) {\n $scope.publish(\"SmartActionListTaskCreated\", data);\n });\n systemHub.on('SmartActionListColumnAdded', function (data) {\n if (data.settings && typeof data.settings === \"string\") {\n data.settings = JSON.parse(data.settings);\n }\n $scope.publish(\"SmartActionListColumnAdded\", data);\n });\n systemHub.on('SmartActionListColumnDeleted', function (data) {\n $scope.publish(\"SmartActionListColumnDeleted\", data);\n });\n systemHub.on('SmartActionListSortOrderChanged', function (data) {\n $scope.publish(\"SmartActionListSortOrderChanged\", data);\n });\n systemHub.on('SmartActionListRowSortOrderChanged', function (data) {\n $scope.publish(\"SmartActionListRowSortOrderChanged\", data);\n });\n systemHub.on('SmartActionListColumnDeleted', function (data) {\n $scope.publish(\"SmartActionListColumnDeleted\", data);\n });\n systemHub.on('SmartActionListCellUpdated', function (data) {\n if (data.settings && typeof data.settings === \"string\") {\n data.settings = JSON.parse(data.settings);\n }\n if (data.value && typeof data.value === \"string\") {\n try {\n data.value = JSON.parse(data.value);\n } catch(e) {\n // Not JSON, so not let event crash\n }\n \n }\n $scope.publish(\"SmartActionListCellUpdated\", data);\n });\n systemHub.on('SmartActionListColumnUpdated', function (data) {\n if (data.value && typeof data.value === \"string\") {\n data.value = JSON.parse(data.value);\n }\n $scope.publish(\"SmartActionListColumnUpdated\", data);\n });\n systemHub.on('SmartActionListNumberCellUpdated', function (data) {\n $scope.publish(\"SmartActionListNumberCellUpdated\", data);\n });\n systemHub.on('SmartIconCellSelectorUpdated', function (attribute) {\n $scope.publish(\"SmartIconCellSelectorUpdated\", attribute);\n });\n systemHub.on('SmartClonedCellChanged', function (attribute) {\n $scope.publish(\"SmartClonedCellChanged\", attribute);\n });\n systemHub.on('SmartTableRowCreated', function (data) {\n $scope.publish(\"SmartTableRowCreated\", data);\n });\n systemHub.on('SmartTableRowDeleted', function (data) {\n $scope.publish(\"SmartTableRowDeleted\", data);\n });\n systemHub.on('SmartTableColumnAdded', function (data) {\n if (data.settings && typeof data.settings === \"string\") {\n data.settings = JSON.parse(data.settings);\n }\n $scope.publish(\"SmartTableColumnAdded\", data);\n });\n systemHub.on('SmartTableColumnDeleted', function (data) {\n $scope.publish(\"SmartTableColumnDeleted\", data);\n });\n systemHub.on('SmartTableSortOrderChanged', function (data) {\n $scope.publish(\"SmartTableSortOrderChanged\", data);\n });\n systemHub.on('SmartTableRowSortOrderChanged', function (data) {\n $scope.publish(\"SmartTableRowSortOrderChanged\", data);\n });\n systemHub.on('SmartTableRowNameUpdated', function (data) {\n $scope.publish(\"SmartTableRowNameUpdated\", data);\n });\n systemHub.on('SmartTableRowStartTimeUpdated', function (data) {\n $scope.publish(\"SmartTableRowStartTimeUpdated\", data);\n });\n systemHub.on('SmartTableRowEndTimeUpdated', function (data) {\n $scope.publish(\"SmartTableRowEndTimeUpdated\", data);\n });\n systemHub.on('SmartTableColumnDeleted', function (data) {\n $scope.publish(\"SmartTableColumnDeleted\", data);\n });\n systemHub.on('SmartTableRowOwnerUpdated', function (data) {\n $scope.publish(\"SmartTableRowOwnerUpdated\", data);\n });\n systemHub.on('SmartTableCellUpdated', function (data) {\n if (data.settings && typeof data.settings === \"string\") {\n data.settings = JSON.parse(data.settings);\n }\n if (data.value && typeof data.value === \"string\") {\n data.value = JSON.parse(data.value);\n }\n $scope.publish(\"SmartTableCellUpdated\", data);\n });\n systemHub.on('SmartTableColumnUpdated', function (data) {\n if (data.value && typeof data.value === \"string\") {\n data.value = JSON.parse(data.value);\n }\n $scope.publish(\"SmartTableColumnUpdated\", data);\n });\n systemHub.on('ProjectAddedToBoard', function (data) {\n $scope.publish(\"ProjectAddedToBoard\", data);\n });\n systemHub.on('ProjectRemovedFromBoard', function (data) {\n $scope.publish(\"ProjectRemovedFromBoard\", data);\n });\n systemHub.on('ProjectDeleted', function (project) {\n $scope.publish(\"ProjectDeleted\", project);\n });\n systemHub.on('ProjectBoardAttributeAdded', function (data) {\n $scope.publish(\"ProjectBoardAttributeAdded\", data);\n });\n systemHub.on('ProjectNumberUpdated', function (data) {\n $scope.publish(\"ProjectNumberUpdated\", data);\n });\n systemHub.on('ProjectStatusUpdated', function (data) {\n $scope.publish(\"ProjectStatusUpdated\", data);\n });\n systemHub.on('ProjectNameUpdated', function (data) {\n $scope.publish(\"ProjectNameUpdated\", data);\n });\n systemHub.on('ProjectDescriptionUpdated', function (data) {\n $scope.publish(\"ProjectDescriptionUpdated\", data);\n });\n systemHub.on('ProjectMilestoneDeleted', function (date) {\n $scope.publish(\"ProjectMilestoneDeleted\", date);\n });\n systemHub.on('ProjectMilestoneCreated', function (date) {\n $scope.publish(\"ProjectMilestoneCreated\", date);\n });\n systemHub.on('ProjectMilestoneUpdated', function (date) {\n $scope.publish(\"ProjectMilestoneUpdated\", date);\n });\n systemHub.on('ProjectEstimatedEndDateUpdated', function (date) {\n $scope.publish(\"ProjectEstimatedEndDateUpdated\", date);\n });\n systemHub.on('ProjectEndDateUpdated', function (date) {\n $scope.publish(\"ProjectEndDateUpdated\", date);\n });\n systemHub.on('ProjectCustomerCreated', function (date) {\n $scope.publish(\"ProjectCustomerCreated\", date);\n });\n systemHub.on('ProjectCustomerUpdated', function (date) {\n $scope.publish(\"ProjectCustomerUpdated\", date);\n });\n systemHub.on('PersonMembershipChanged', function (data) {\n $scope.publish(\"PersonMembershipChanged\", data);\n });\n systemHub.on('ProjectStartDateUpdated', function (date) {\n $scope.publish(\"ProjectStartDateUpdated\", date);\n });\n systemHub.on('ProjectOwnerUpdated', function (project) {\n $scope.publish(\"ProjectOwnerUpdated\", project);\n });\n systemHub.on('ProjectParticipantAdded', function (project) {\n $scope.publish(\"ProjectParticipantAdded\", project);\n });\n systemHub.on('ProjectParticipantRemoved', function (project) {\n $scope.publish(\"ProjectParticipantRemoved\", project);\n });\n systemHub.on('ProjectEstimatedStartDateUpdated', function (date) {\n $scope.publish(\"ProjectEstimatedStartDateUpdated\", date);\n });\n systemHub.on('ProjectBoardSortOrderChanged', function (attribute) {\n $scope.publish(\"ProjectBoardSortOrderChanged\", attribute);\n });\n systemHub.on('ProjectBoardAttributeUpdated', function (attribute) {\n $scope.publish(\"ProjectBoardAttributeUpdated\", attribute);\n });\n systemHub.on('ProjectBoardAttributeDeleted', function (attribute) {\n $scope.publish(\"ProjectBoardAttributeDeleted\", attribute);\n });\n systemHub.on('ProjectAttributeUpdated', function (attribute) {\n if (attribute.value && typeof attribute.value === \"string\") {\n attribute.value = JSON.parse(attribute.value);\n }\n $scope.publish(\"ProjectAttributeUpdated\", attribute);\n });\n systemHub.on('StrategyGoalNameUpdated', function (goal) {\n $scope.publish(\"StrategyGoalNameUpdated\", goal);\n });\n systemHub.on('StrategyGoalColorUpdated', function (goal) {\n $scope.publish(\"StrategyGoalColorUpdated\", goal);\n });\n systemHub.on('StrategyGoalAssetUpdated', function (goal) {\n $scope.publish(\"StrategyGoalAssetUpdated\", goal);\n });\n systemHub.on('StrategyGoalDescriptionUpdated', function (goal) {\n $scope.publish(\"StrategyGoalDescriptionUpdated\", goal);\n });\n systemHub.on('StrategyGoalStartDateUpdated', function (goal) {\n $scope.publish(\"StrategyGoalStartDateUpdated\", goal);\n });\n systemHub.on('StrategyGoalEndDateUpdated', function (goal) {\n $scope.publish(\"StrategyGoalEndDateUpdated\", goal);\n });\n systemHub.on('StrategyGoalCreated', function (goal) {\n $scope.publish(\"StrategyGoalCreated\", goal);\n });\n systemHub.on('StrategyGoalDeleted', function (goal) {\n $scope.publish(\"StrategyGoalDeleted\", goal);\n });\n systemHub.on('KPIAdded', function (kpi) {\n $scope.publish(\"KPIAdded\", kpi);\n });\n systemHub.on('KPIUpdated', function (kpi) {\n $scope.publish(\"KPIUpdated\", kpi);\n });\n systemHub.on('KPIDeleted', function (kpi) {\n $scope.publish(\"KPIDeleted\", kpi);\n });\n systemHub.on('KPIMonthlyValueUpdated', function (value) {\n $scope.publish(\"KPIMonthlyValueUpdated\", value);\n });\n \n systemHub.on('NewCompetenceBall', function (competence) {\n $scope.publish(\"NewCompetenceBall\", competence);\n });\n systemHub.on('NewLogMessage', function (log) {\n $scope.publish(\"NewLogMessage\", log);\n });\n\n systemHub.on(\"UserLogOut\", () => {\n console.log(\"UserLogOut\")\n $scope.publish(\"UserLogOut\", {})\n })\n}\n\nexport function subscribeProxyEvents($scope: DigiLeanNgScope) {\n // System Hub\n $scope.subscribe(\"GetOnlineUsersStatus\", function () { systemHubService.sendProxyEvent(\"GetOnlineUsersStatus\");});\n $scope.subscribe(\"GetAllUsersOnline\", function () { systemHubService.sendProxyEvent(\"GetAllUsersOnline\");});\n $scope.subscribe(\"SendDashboardCreated\", function (dashboard) { systemHubService.sendProxyEvent(\"SendDashboardCreated\", dashboard); });\n $scope.subscribe(\"SendDashboardUpdated\", function (dashboard) { systemHubService.sendProxyEvent(\"SendDashboardUpdated\", dashboard); });\n $scope.subscribe(\"SendDataSourceCreated\", function (data) { systemHubService.sendProxyEvent(\"SendDataSourceCreated\", data); });\n $scope.subscribe(\"SendDataSourceUpdated\", function (data) { systemHubService.sendProxyEvent(\"SendDataSourceUpdated\", data); });\n $scope.subscribe(\"SendDataSourceDeleted\", function (data) { systemHubService.sendProxyEvent(\"SendDataSourceDeleted\",data); });\n\n $scope.subscribe(\"SendConnectorCreated\", function (connector) { systemHubService.sendProxyEvent(\"SendConnectorCreated\",connector); });\n $scope.subscribe(\"SendConnectorUpdated\", function (connector) { systemHubService.sendProxyEvent(\"SendConnectorUpdated\",connector); });\n $scope.subscribe(\"SendConnectorDeleted\", function (connector) { systemHubService.sendProxyEvent(\"SendConnectorDeleted\",connector); });\n $scope.subscribe(\"SendJobCreated\", function (job) { systemHubService.sendProxyEvent(\"SendJobCreated\",job); });\n $scope.subscribe(\"SendJobUpdated\", function (job) { systemHubService.sendProxyEvent(\"SendJobUpdated\",job); });\n $scope.subscribe(\"SendJobDeleted\", function (job) { systemHubService.sendProxyEvent(\"SendJobDeleted\",job); });\n $scope.subscribe(\"SendExecuteJob\", function (job) { systemHubService.sendProxyEvent(\"SendExecuteJob\",job); });\n $scope.subscribe(\"SendStartConnector\", function (connector) { systemHubService.sendProxyEvent(\"SendStartConnector\",connector); });\n $scope.subscribe(\"SendStopConnector\", function (connector) {\n systemHubService.sendProxyEvent(\"SendStopConnector\",connector);\n });\n \n // ImprovementHub hub \n $scope.subscribe(\"SendImprovementUpdated\", function (improvement) { systemHubService.sendProxyEvent(\"SendImprovementUpdated\",improvement); });\n $scope.subscribe(\"SendSuggestionAttachmentAdded\", function (id) { systemHubService.sendProxyEvent(\"SendSuggestionAttachmentAdded\",id); });\n $scope.subscribe(\"SendSuggestionAttachmentDeleted\", function (data) { systemHubService.sendProxyEvent(\"SendSuggestionAttachmentDeleted\",data); });\n $scope.subscribe(\"SendImprovementChangedCategory\", function (category) { systemHubService.sendProxyEvent(\"SendImprovementChangedCategory\",category); });\n \n $scope.subscribe(\"SendA3TemplateCreated\", function (data) { systemHubService.sendProxyEvent(\"SendA3TemplateCreated\",data); });\n $scope.subscribe(\"SendA3TemplateUpdated\", function (data) { systemHubService.sendProxyEvent(\"SendA3TemplateUpdated\",data); });\n $scope.subscribe(\"SendA3TemplateDeleted\", function (data) { systemHubService.sendProxyEvent(\"SendA3TemplateDeleted\",data); });\n $scope.subscribe(\"SendA3Created\", function (data) { systemHubService.sendProxyEvent(\"SendA3Created\",data); });\n $scope.subscribe(\"SendA3Updated\", function (data) { systemHubService.sendProxyEvent(\"SendA3Updated\",data); });\n $scope.subscribe(\"SendA3Deleted\", function (data) { systemHubService.sendProxyEvent(\"SendA3Deleted\",data); });\n $scope.subscribe(\"SendA3sDeleted\", function (data) { systemHubService.sendProxyEvent(\"SendA3sDeleted\",data); });\n $scope.subscribe(\"SendA3VersionCreated\", function (data) { systemHubService.sendProxyEvent(\"SendA3VersionCreated\",data); });\n $scope.subscribe(\"SendA3StepContentChanged\", function (data) { systemHubService.sendProxyEvent(\"SendA3StepContentChanged\",data); });\n \n $scope.subscribe(\"SendDeviationSeverityChanged\", function (data) { systemHubService.sendProxyEvent(\"SendDeviationSeverityChanged\",data); });\n $scope.subscribe(\"SendDeviationChangedCategory\", function (data) { systemHubService.sendProxyEvent(\"SendDeviationChangedCategory\",data); });\n \n $scope.subscribe(\"SendDeviationAttachmentAdded\", function (data) { systemHubService.sendProxyEvent(\"SendDeviationAttachmentAdded\",data); });\n $scope.subscribe(\"SendDeviationAttachmentDeleted\", function (data) { systemHubService.sendProxyEvent(\"SendDeviationAttachmentDeleted\",data); });\n // Social hub subs\n // Subscribe to BoardHubEvents to republish them to signalr\n \n $scope.subscribe(\"SendActionItemMovedToTask\", function (data) { systemHubService.sendProxyEvent(\"SendActionItemMovedToTask\",data); });\n $scope.subscribe(\"SendTaskMoved\", function (data) { systemHubService.sendProxyEvent(\"SendTaskMoved\", data); });\n $scope.subscribe(\"SendTaskDurationUpdated\", function (data) { systemHubService.sendProxyEvent(\"SendTaskDurationUpdated\",data); });\n $scope.subscribe(\"SendTaskDeviationCreated\", function (data) { systemHubService.sendProxyEvent(\"SendTaskDeviationCreated\",data); });\n $scope.subscribe(\"SendTaskMovedToActionList\", function (data) { systemHubService.sendProxyEvent(\"SendTaskMovedToActionList\",data); });\n \n $scope.subscribe(\"SendCreateActionListItem\", function (data) { systemHubService.sendProxyEvent(\"SendCreateActionListItem\",data); });\n $scope.subscribe(\"SendDeleteActionListItem\", function (data) { systemHubService.sendProxyEvent(\"SendDeleteActionListItem\",data); });\n $scope.subscribe(\"SendUpdateActionListItem\", function (data) { systemHubService.sendProxyEvent(\"SendUpdateActionListItem\",data); });\n\n $scope.subscribe(\"SendBoardDeleted\", function (data) { systemHubService.sendProxyEvent(\"SendBoardDeleted\",data); });\n $scope.subscribe(\"SendBoardCreated\", function (data) { systemHubService.sendProxyEvent(\"SendBoardCreated\",data); });\n $scope.subscribe(\"SendTasksDeleted\", function (data) { systemHubService.sendProxyEvent(\"SendTasksDeleted\",data); });\n $scope.subscribe(\"SendBoardCategoryAssigned\", function (data) { systemHubService.sendProxyEvent(\"SendBoardCategoryAssigned\",data); });\n $scope.subscribe(\"SendTaskDateUpdated\", function (data) { systemHubService.sendProxyEvent(\"SendTaskDateUpdated\",data); });\n $scope.subscribe(\"SendTaskDescriptionUpdated\", function (data) { systemHubService.sendProxyEvent(\"SendTaskDescriptionUpdated\",data); });\n $scope.subscribe(\"SendTaskChangedBoard\", function (data) { systemHubService.sendProxyEvent(\"SendTaskChangedBoard\",data); });\n $scope.subscribe(\"SendTaskRepeated\", function (data) { systemHubService.sendProxyEvent(\"SendTaskRepeated\",data); });\n $scope.subscribe(\"SendTaskAttachmentAdded\", function (data) { systemHubService.sendProxyEvent(\"SendTaskAttachmentAdded\",data); });\n $scope.subscribe(\"SendTaskAttachmentDeleted\", function (data) { systemHubService.sendProxyEvent(\"SendTaskAttachmentDeleted\",data); });\n}","\nimport * as dashboardService from \"@common/services/dashboardService\"\nimport { userFullProfile } from \"@common/stores/userStore\"\nimport * as employeeService from \"@common/services/employeeService\"\nimport envConfig from \"@common/envConfig\"\n\nvar DigiLean = angular.module('DigiLean');\nDigiLean.controller('navigationController', ['$scope', '$filter', '$translate', 'authService', 'navigationService', 'learningPublicService', 'modalService','folderService',\n function ($scope, $filter, $translate, authService, navigationService, learningPublicService, modalService, folderService) {\n\n $scope.boards = [];\n $scope.folders = [];\n $scope.modules = [];\n $scope.dashboards = [];\n $scope.customDashboards = [];\n $scope.favorites = [];\n var movedRootBoard = null;\n\n $scope.isTrial = false;\n\n $scope.disableFeedbackToDigiLean = envConfig.disableFeedbackToDigiLean\n \n $scope.authentication = authService\n function getLearningMaterialByLanguage(userlanguage){\n if (!$scope.isTrial) return; // Only needs to fetch when isTrial\n learningPublicService.getUserHelpLearningMaterial(userlanguage).then(function(result){\n var learningmaterial = result;\n $scope.learningMaterialLink = learningmaterial.link;\n }); \n }\n getLearningMaterialByLanguage(\"en\");\n \n \n // Board folder drag and drop handlers\n $scope.dropSuccessHandler = function($event,index,source){\n if(source.boards){\n source.boards.splice(index,1);\n\n folderService().update(source).then(function (result) {\n });\n } else {\n if(movedRootBoard){\n var matchingBoard = $filter('filter')($scope.boards, { id: movedRootBoard }, true);\n if (matchingBoard.length == 0) {\n $scope.boards.splice(index,1);\n }\n } \n } \n movedRootBoard = null; \n };\n\n $scope.dropValidateRoot = function(target, source) {\n if(target == \"root\" && !source.boards){\n movedRootBoard = source.id;\n return true;\n } else {\n return false;\n } \n };\n\n \n $scope.onRootDrop = function($event,$data){\n\n //prevent duplicate boards \n var matchingBoard = $filter('filter')($scope.boards, { id: $data.id }, true);\n if (matchingBoard.length == 0) {\n $scope.boards.push($data);\n }\n };\n\n \n $scope.onFolderDrop = function($event,$data,folder){\n removeBoardFromCurrentLocation($data.id);\n if(!folder.boards){\n folder.boards = [];\n }\n //prevent duplicate boards in folder\n var matchingBoard = $filter('filter')(folder.boards, { id: $data.id }, true);\n if (matchingBoard.length > 0) {\n $scope.boards.push($data);\n } else {\n folder.boards.push($data);\n folderService().update(folder).then(function (result) {\n });\n }\n \n };\n\n function removeBoardFromCurrentLocation(boardid){\n var boardOnRoot = $filter('filter')($scope.boards, { id: boardid }, true);\n if (boardOnRoot.length > 0) {\n var i = $scope.boards.indexOf(boardOnRoot[0]);\n $scope.boards.splice(i, 1);\n } else {\n for(var f=0; f<$scope.folders.length; f++){\n var boardInFolder = $filter('filter')($scope.folders[f].boards, { id: boardid }, true);\n if (boardInFolder.length > 0) {\n var b = $scope.folders[f].boards.indexOf(boardInFolder[0]);\n $scope.folders[f].boards.splice(b, 1);\n folderService().update($scope.folders[f]).then(function (result) {\n });\n break;\n }\n }\n } \n }\n\n // TODO - finish implementation: Right click menu on links\n //$(document).on('contextmenu', function (e) {\n // if (!$(e.target).is(\"[ui-sref]\")) { // If not \"draggable\" link, then regular menu\n // return true;\n // }\n\n // // This is a draggable link so add contextmenu\n // alert('#special right clicked');\n // return false;\n // // you may want e.preventDefault() here\n //});\n\n function loadData(profile) {\n // Map modules\n MapModules(profile.modules);\n // Boards\n getBoards();\n $scope.dashboards = navigationService().getList(profile.user.customerId);\n $scope.dashboards.forEach(dashboard => {\n dashboard.module = \"dashboard\";\n });\n getDashboards();\n }\n\n $scope.subscribe('BoardCreated', function () {\n getBoards();\n });\n $scope.subscribe('BoardDeleted', function () {\n getBoards();\n });\n $scope.subscribe('DashboardCreated', function () {\n getDashboards();\n });\n $scope.subscribe('DashboardDeleted', function () {\n getDashboards();\n });\n $scope.subscribe('UserSettingsChanged', function (userSettings) {\n loadSettings(userSettings);\n });\n\n $scope.subscribe('UserLanguageUpdated', function (settings) {\n getLearningMaterialByLanguage(settings.locale);\n });\n\n\n async function getBoards() {\n const folderstructure = await folderService().getList()\n $scope.boards = folderstructure.boardsWithoutFolder;\n $scope.folders = folderstructure.folderWithBoards;\n\n $scope.boards.forEach(board => {\n board.module = \"board\";\n board.uiRef = \"board({id:\" + board.id + \"})\";\n });\n \n $scope.folders.forEach(folder => {\n folder.boards.forEach(board => {\n board.module = \"board\";\n board.uiRef = \"board({id:\" + board.id + \"})\";\n });\n });\n\n setTimeout(function () {\n var sideMenu = $('#side-menu');\n sideMenu.metisMenu('dispose');\n sideMenu.metisMenu({\n toggle: false // disable the auto collapse. Default: true.\n });\n }, 200);\n \n }\n\n async function getDashboards() {\n if (!$scope.hasModule.Board)\n return;\n \n const dashboards = await dashboardService.getAll()\n $scope.customDashboards = [];\n dashboards.forEach(dashboard => {\n dashboard.name = dashboard.title;\n dashboard.module = \"dashboard\";\n dashboard.uiRef = \"dashboard({id:\" + dashboard.id + \"})\";\n $scope.customDashboards.push(dashboard);\n });\n \n }\n\n function setAdminPrivilege(){\n $scope.anyAdminPrivilege = false;\n $scope.isAdmin = authService.hasRole(\"Admin\");\n $scope.isBusinessunitAdmin = authService.hasRole(\"BusinessunitAdmin\");\n $scope.isDataAdmin = authService.hasRole(\"DataAdmin\");\n $scope.isImprovementAdmin = authService.hasRole(\"ImprovementAdmin\");\n $scope.isDeviationAdmin = authService.hasRole(\"DeviationAdmin\");\n $scope.isProjectAdmin = authService.hasRole(\"ProjectAdmin\");\n $scope.isA3Admin = authService.hasRole(\"A3Admin\");\n $scope.isLearningMaterialEditor = authService.hasRole(\"LearningAdmin\");\n\n if($scope.isAdmin || $scope.isBusinessunitAdmin ||$scope.isImprovementAdmin || $scope.isDeviationAdmin \n || $scope.isProjectAdmin || $scope.isA3Admin || $scope.isLearningMaterialEditor || $scope.isDataAdmin) {\n $scope.anyAdminPrivilege = true\n }\n }\n\n $scope.hasModule = {\n Board: false,\n Improvement: false,\n Deviation: false,\n Project: false,\n A3: false,\n Learning: false,\n Competenceball: false,\n Hours: false,\n Strategy: false,\n }\n // Modules\n function MapModules(modules) {\n $scope.hasModule.Board = hasModule(modules, \"BOARD\");\n $scope.hasModule.Improvement = hasModule(modules, \"IMPROVEMENT\");\n $scope.hasModule.Deviation = hasModule(modules, \"DEVIATION\");\n $scope.hasModule.Project = hasModule(modules, \"PROJECT\");\n $scope.hasModule.A3 = hasModule(modules, \"A3\");\n $scope.hasModule.Learning = hasModule(modules, \"LEARNING\");\n $scope.hasModule.Competenceball = hasModule(modules, \"COMPETENCEBALL\");\n $scope.hasModule.Hours = hasModule(modules, \"HOURREGISTRATION\");\n $scope.hasModule.Strategy = hasModule(modules, \"STRATEGY\");\n }\n\n function hasModule(modules, moduleName) {\n if (!modules || !Array.isArray(modules))\n return false\n return modules.some(m => m.name === moduleName)\n }\n\n /* Favorite navigation */\n function updateSettings() {\n $scope.userSettings.favorites = $scope.favorites;\n employeeService.updateUserSettings($scope.userSettings).then(function () {\n $scope.publish(\"UserSettingsChanged\", $scope.userSettings);\n });\n }\n\n $scope.onDrop = function (target, source) {\n if (target === 'favorite') {\n if (typeof source === \"string\" && source.startsWith(\"index\")) {\n addFavoriteFromUiRef(source);\n } else {\n var newFavorite = {\n name: source.name,\n module: source.module,\n uiRef: source.uiRef\n }\n if (!$scope.favorites) $scope.favorites = [];\n $scope.favorites.push(newFavorite);\n updateSettings();\n }\n $(\"#favoritemenu\").toggleClass(\"active\", true);\n $(\"#favoritemenu ul\").toggleClass(\"in\", true);\n }\n };\n $scope.dropValidate = function (target, source) {\n if (target === 'remove') {\n $translate(['COMMON_CANCEL', 'COMMON_DELETE', 'DASHBOARD_DELETE_FAVORITE', 'DASHBOARD_DELETE_FAVORITE_DESCRIPTION']).then(function (translations) {\n var modalOptions = {\n closeButtonText: translations.COMMON_CANCEL,\n actionButtonText: translations.COMMON_DELETE,\n headerText: translations.DASHBOARD_DELETE_FAVORITE,\n bodyText: translations.DASHBOARD_DELETE_FAVORITE_DESCRIPTION\n };\n\n modalService.showModal({}, modalOptions).then(function (result) {\n if (source) {\n var matchingUser = $filter('filter')($scope.favorites, { uiRef: source }, true);\n if (matchingUser.length > 0) {\n var i = $scope.favorites.indexOf(matchingUser[0]);\n $scope.favorites.splice(i, 1);\n updateSettings();\n return true;\n }\n }\n });\n });\n } else\n return target !== source;\n };\n function addFavoriteFromUiRef(source) {\n var module = \"\";\n var translate = \"\";\n switch (source) {\n case \"index.personal\":\n module = \"personal\";\n translate = \"BOARD_PERSONAL_BOARD\";\n break;\n case \"index.myspace\":\n module = \"dashboard\";\n translate = \"COMMON_MY_SPACE\";\n break;\n case \"index.improvement\":\n module = \"improvement\";\n translate = \"IMPROVEMENT_PRIORITIZE\";\n break;\n case \"index.improvementongoing\":\n module = \"improvement\";\n translate = \"IMPROVEMENT_ONGOING\";\n break;\n case \"index.improvementstatus\":\n module = \"improvement\";\n translate = \"COMMON_STATUS\";\n break;\n case \"index.improvementsearch\":\n module = \"improvement\";\n translate = \"COMMON_SEARCH\";\n break;\n case \"index.deviationongoing\":\n module = \"deviation\";\n translate = \"IMPROVEMENT_ONGOING\";\n break;\n case \"index.deviationstatus\":\n module = \"deviation\";\n translate = \"COMMON_STATUS\";\n break;\n case \"index.deviationprojectstatus\":\n module = \"deviation\";\n translate = \"PROJECT_PROJECT_STATUS\";\n break;\n case \"index.deviationevaluation\":\n module = \"deviation\";\n translate = \"IMPROVEMENT_EVALUATION\";\n break;\n case \"index.deviationsearch\":\n module = \"deviation\";\n translate = \"COMMON_SEARCH\";\n break;\n case \"index.A3\":\n module = \"a3\";\n translate = \"COMMON_A3\";\n break;\n case \"index.a3templates\":\n module = \"a3\";\n translate = \"A3_TEMPLATES\";\n break;\n case \"index.users\":\n module = \"admin\";\n translate = \"ADMIN_USERS\";\n break;\n case \"index.assets\":\n module = \"admin\";\n translate = \"COMMON_ASSETS\";\n break;\n case \"index.adminboards\":\n module = \"admin\";\n translate = \"COMMON_BOARDS\";\n break;\n case \"index.adminflexiboards\":\n module = \"admin\";\n translate = \"COMMON_BOARDS\";\n break;\n case \"index.admindeviations\":\n module = \"admin\";\n translate = \"COMMON_DEVIATION\";\n break;\n case \"index.adminprojects\":\n module = \"admin\";\n translate = \"COMMON_PROJECT\";\n break;\n case \"index.admina3\":\n module = \"admin\";\n translate = \"COMMON_A3\";\n break;\n case \"index.adminimprovement\":\n module = \"admin\";\n translate = \"COMMON_IMPROVEMENT\";\n break;\n case \"index.admindashboards\":\n module = \"admin\";\n translate = \"COMMON_DASHBOARDS\";\n break;\n }\n\n $translate(translate).then(function (trans) {\n var newFavorite = {\n name: trans,\n module: module,\n uiRef: source\n }\n if (!$scope.favorites) $scope.favorites = [];\n $scope.favorites.push(newFavorite);\n updateSettings();\n });\n }\n\n $scope.userSettings = {}\n\n var loadSettings = function (settings) {\n if (!settings) return;\n $scope.userSettings = settings;\n if (settings.favorites) {\n $scope.favorites = settings.favorites;\n }\n\n }\n\n // subscribe to userFullProfile\n userFullProfile.subscribe(profile => {\n $scope.isTrial = profile.isTrial;\n if (!profile || !profile.user)\n return\n loadData(profile);\n loadSettings(profile.settings);\n getLearningMaterialByLanguage(profile.user.preferredLanguage);\n setAdminPrivilege();\n })\n }]);","import envConfig from \"@common/envConfig\";\n\nangular.module(\"DigiLean\").factory('a3templateService', ['$rootScope', '$http',\n function ($rootScope, $http) {\n function a3Service() {\n var resource = \"/a3template\";\n var resourceUrl = envConfig.webApiUrl + resource;\n\n return {\n get: function(id) {\n const url = resourceUrl + \"/\" + id;\n return $http.get(url).then(function(result) {\n return result.data;\n })\n },\n\n getList: function() {\n return $http.get(resourceUrl).then(function(result) {\n return result.data;\n });\n },\n\n getPublicTemplates: function() {\n var url = resourceUrl + \"/getPublicTemplates\";\n return $http.get(url).then(function(result) {\n return result.data;\n });\n },\n getPublicTemplate: function(id) {\n const url = resourceUrl + \"/getPublicTemplate/\" + id\n return $http.get(url).then(function(result) {\n return result.data;\n })\n },\n deleteTemplate: function(id) {\n var url = resourceUrl + \"/\" + id;\n return $http.delete(url).then(function (result) {\n return result.data;\n });\n },\n\n addTemplate: function(template) {\n return $http.post(resourceUrl, template).then(function(result) {\n return result.data;\n });\n },\n downloadTemplate: function(id) {\n var url = resourceUrl + \"/downloadTemplate/\" + id;\n return $http.post(url).then(function(result) {\n return result.data;\n });\n },\n updateTemplate: function(template) {\n var url = resourceUrl + \"/updateTemplate/\" + template.id;\n return $http.put(url, template).then(function(result) {\n return result.data;\n });\n },\n\n publishTemplate: function(id) {\n var url = resourceUrl + \"/publish/\" + id;\n return $http.put(url).then(function(result) {\n return result.data;\n });\n },\n unPublishTemplate: function(id) {\n var url = resourceUrl + \"/unpublish/\" + id;\n return $http.put(url).then(function(result) {\n return result.data;\n });\n },\n updateSortOrder: function (templateId, sortOrders) {\n var url = resourceUrl + \"/updateSortOrder/\" + templateId;\n return $http.put(url, sortOrders).then(function (result) {\n return result.data;\n });\n },\n\n getVersion: function (versionId) {\n var url = resourceUrl + \"/getversion/\" + versionId;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n\n addStep: function (templateId, step) {\n var url = resourceUrl + \"/\" + templateId + \"/addstep/\";\n return $http.post(url, step).then(function (result) {\n return result.data;\n });\n },\n\n updateStep: function(step) {\n var url = resourceUrl + \"/updatestep/\" + step.id;\n return $http.put(url, step).then(function(result) {\n return result.data;\n });\n },\n\n deleteStep: function(stepid) {\n var url = resourceUrl + \"/DeleteStep/\" + stepid;\n return $http.delete(url).then(function(result) {\n return result.data;\n });\n },\n\n saveLayout: function(templateId, layout){\n var url = resourceUrl + \"/\"+ templateId + \"/saveLayout\";\n return $http.post(url, layout).then(function(result){\n return result.data;\n });\n }\n }\n }\n return a3Service;\n }]); \n","import { getUserPreference, updateUserPreference, deleteUserPreference} from \"@common/services/user/userService\"\n\nlet a3Favorites: any[] = []\n\nconst FavoriteA3s = \"FavoriteA3s\"\nexport const getA3Favorites = async () => {\n a3Favorites = await getUserPreference(FavoriteA3s)\n return a3Favorites\n}\nexport const updateFavoriteA3s = async (value: any) => {\n a3Favorites = await updateUserPreference(FavoriteA3s, value)\n return a3Favorites\n}\n\nexport const addA3ToFavorites = async (id: number, title: string) => {\n const alreadyFav = a3Favorites.find(a => a.id == id)\n if (!alreadyFav) {\n a3Favorites.push({id, title, isStar: true})\n return await updateFavoriteA3s(a3Favorites)\n }\n return a3Favorites\n}\n\nexport const removeA3FromFavorites = async (a3Id: number) => {\n const a3ToRemove = a3Favorites.find(a => a.id == a3Id)\n if (a3ToRemove) {\n const index = a3Favorites.indexOf(a3ToRemove)\n a3Favorites.splice(index, 1)\n return await updateFavoriteA3s(a3Favorites)\n }\n return a3Favorites\n}\n\nconst A3Filter = \"A3Filter\"\nexport const getA3Filter = async () => {\n const filter = await getUserPreference(A3Filter)\n return filter\n}\nexport const updateA3Filter = async (value: any) => {\n return await updateUserPreference(A3Filter, value)\n}\nexport const deleteA3Filter = async () => {\n return await deleteUserPreference(A3Filter)\n}","import * as userPref from \"@common/services/user/userPreferenceService\"\nimport * as assetService from \"@common/services/assetService\"\nimport toaster from \"@common/components/toast\"\n\nangular\n .module('DigiLean')\n .controller(\"a3Controller\", \n ['$scope','$filter','authService','$uibModal','$translate','projectService','a3templateService','a3Service','deviationService','suggestionService',\n function ($scope, $filter, authService, $uibModal, $translate, projectService, a3templateService, a3Service, deviationService, suggestionService) {\n\n $scope.allA3s = []\n\n $scope.newa3 = []\n $scope.newa3Counter = 0\n\n $scope.hasImprovementTasks = false\n\n $scope.hasDeviation = false\n $scope.isLoading = true\n $scope.assets = {}\n $scope.projects = []\n $scope.templates = {}\n var userid = authService.getCurrentUser().userId\n $scope.isAdmin = authService.hasRole(\"Admin\") || authService.hasRole(\"A3Admin\")\n // if page is refreshed we need to refresh\n $scope.subscribe(\"UserAuthenticatedAndReady\", function (profile) {\n $scope.isAdmin = authService.hasRole(\"Admin\") || authService.hasRole(\"A3Admin\")\n })\n \n var memberAssets = []\n\n $scope.filterPreferences = null\n $scope.assetFilterActive = false\n $scope.templateFilterActive = false\n $scope.myA3sFilterActive = false\n $scope.participantFilterActive = false\n $scope.improvementFilterActive = false\n $scope.deviationFilterActive = false\n\n $scope.newPieChart = {\n data: [0, 0, 0, 0],\n options: {\n radius: 18,\n fill: [\"#f3f3f4\"],\n }\n }\n $scope.planPieChart = {\n data: [1, 1, 1, 1],\n options: {\n radius: 18,\n fill: [\"#5cb85c\", \"#f3f3f4\", \"#f3f3f4\", \"#f3f3f4\"],\n }\n }\n $scope.doPieChart = {\n data: [1, 1, 1, 1],\n options: {\n radius: 18,\n fill: [\"#5cb85c\", \"#5cb85c\", \"#f3f3f4\", \"#f3f3f4\"],\n }\n }\n $scope.checkPieChart = {\n data: [1, 1, 1, 1],\n options: {\n radius: 18,\n fill: [\"#5cb85c\", \"#5cb85c\", \"#5cb85c\", \"#f3f3f4\"],\n }\n }\n $scope.actPieChart = {\n data: [1, 1, 1, 1],\n options: {\n radius: 18,\n fill: [\"#5cb85c\", \"#5cb85c\", \"#5cb85c\", \"#5cb85c\"]\n }\n }\n\n // TODO use a3Service.getStatus() instead\n $scope.statusOptions = [\n {\n statusDB: \"New\",\n translated: $translate.instant('COMMON_NEW'),\n cssClass: \"new\",\n filteredAndInResultList: false,\n pie: $scope.newPieChart\n }, {\n statusDB: \"Plan\",\n translated: $translate.instant('A3_PLAN'),\n cssClass: \"plan\",\n filteredAndInResultList: false,\n pie: $scope.planPieChart\n }, {\n statusDB: \"Do\",\n translated: $translate.instant('COMMON_DO'),\n cssClass: \"do\",\n filteredAndInResultList: false,\n pie: $scope.doPieChart\n }, {\n statusDB: \"Check\",\n translated: $translate.instant('COMMON_CHECK'),\n cssClass: \"check\",\n filteredAndInResultList: false,\n pie: $scope.checkPieChart\n }, {\n statusDB: \"Act\",\n translated: $translate.instant('COMMON_ACT'),\n cssClass: \"act\",\n filteredAndInResultList: false,\n pie: $scope.actPieChart\n }, {\n statusDB: \"Closed\",\n translated: $translate.instant('DEVIATION_CLOSED'),\n filteredAndInResultList: false\n }\n ]\n\n $scope.subscribe(\"A3sDeleted\", function (ids) {\n // remove a3 from list\n var a3ToRemove = $filter('filter')($scope.allA3s, valueInList('id', ids))\n if (a3ToRemove.length > 0) {\n angular.forEach(a3ToRemove, function (a3) {\n var index = $scope.allA3s.indexOf(a3)\n $scope.allA3s.splice(index, 1)\n })\n $scope.resultList = $scope.allA3s\n $scope.$apply()\n }\n })\n\n $scope.subscribe(\"A3Created\", function (a3) {\n // Check if user has A3 asset before adding\n var exist = $filter('filter')($scope.resultList, { id: a3.id })\n if (exist.length === 0) {\n addFavoriteNavigationMetadata(a3)\n $scope.allA3s.unshift(a3)\n }\n })\n\n $scope.$watch('query', function () {\n if ($scope.query) {\n $scope.searchQuery = angular.copy($scope.query)\n }\n })\n\n\n assetService.getAllAssets().then(function (assets) {\n $scope.assets = assets\n // \n assetService.getAllUserAssets().then(function (myAssets) {\n memberAssets = myAssets\n resetAssetFilter()\n filterByUserPreference()\n })\n })\n\n a3templateService().getList().then(function (templates) {\n $scope.templates = templates\n resetTemplateFilter()\n filterByUserPreference()\n })\n\n function loadProjects() {\n projectService().getProjectListWithA3().then(function (items) {\n $scope.projects = items\n resetProjectFilter()\n filterByUserPreference()\n })\n }\n loadProjects()\n // Quick access\n $scope.quickAccess = []\n\n\n let initialLoads = []\n initialLoads.push(userPref.getA3Favorites().then(function (a3Favorites) {\n if (a3Favorites && Array.isArray(a3Favorites)) {\n $scope.quickAccess = a3Favorites.map(a3Fav => {\n a3Fav.isStar = true\n a3Fav.hasAccess = false\n return a3Fav\n })\n }\n }))\n initialLoads.push(a3Service().getA3s().then(function (a3s) {\n $scope.allA3s = a3s.reverse()\n\n userPref.getA3Filter().then(function (filterpreferences) {\n if (filterpreferences) {\n $scope.filterPreferences = filterpreferences\n filterByUserPreference()\n } \n applyFilter()\n })\n }))\n Promise.all(initialLoads).then(() => {\n setFavorites()\n $scope.isLoading = false\n })\n\n function setFavorites() {\n for (var i = 0; i < $scope.allA3s.length; i++) {\n let currentA3 = $scope.allA3s[i]\n\n currentA3.isSelected = false\n \n var isFavorite = $scope.quickAccess.find(q => q.id == currentA3.id)\n if (isFavorite) {\n currentA3.isStar = true\n isFavorite.title = currentA3.title\n isFavorite.goal = currentA3.goal\n isFavorite.hasAccess = true\n } else {\n currentA3.isStar = false\n }\n addFavoriteNavigationMetadata(currentA3)\n\n // Set improvement flag to true if there exist A3s generated from an improvement suggestion\n if (currentA3.improvementSuggestionId) {\n $scope.hasImprovementTasks = true\n }\n\n // Set deviation flag to true if there exist A3s generated from an deviation\n if (currentA3.deviationId) {\n $scope.hasDeviation = true\n }\n }\n\n // Remove quick access board no longer available\n const quickAccessBoardsToRemove = $scope.quickAccess.filter(q => q.hasAccess == false)\n console.log(\"quickAccessBoardsToRemove\", quickAccessBoardsToRemove)\n if (quickAccessBoardsToRemove.length > 0) {\n quickAccessBoardsToRemove.forEach(x => {\n var index = $scope.quickAccess.indexOf(x)\n $scope.quickAccess.splice(index, 1)\n })\n saveQuickAccess()\n }\n }\n\n $scope.addToQuickAccess = async function (a3) {\n a3.isStar = true\n $scope.quickAccess = await userPref.addA3ToFavorites(a3.id, a3.title)\n setFavorites()\n }\n\n $scope.removeFromQuickAccess = async function (a3) {\n a3.isStar = false\n $scope.quickAccess = await userPref.removeA3FromFavorites(a3.id)\n setFavorites()\n }\n\n function saveQuickAccess() {\n userPref.updateFavoriteA3s($scope.quickAccess).then(function () {\n $scope.publish(\"FavoriteA3sChanged\", $scope.quickAccess)\n })\n }\n\n \n function filterByUserPreference() {\n if ($scope.filterPreferences) {\n if ($scope.filterPreferences.template) {\n setTemplateFilterPreferences($scope.filterPreferences.template);\n }\n if ($scope.filterPreferences.asset) {\n setAssetFilterPreferences($scope.filterPreferences.asset);\n }\n if ($scope.filterPreferences.project) {\n setProjectFilterPreferences($scope.filterPreferences.project);\n }\n if ($scope.filterPreferences.status) {\n setStatusFilterPreferences($scope.filterPreferences.status);\n }\n if ($scope.filterPreferences.myA3s) {\n $scope.myA3sFilterActive = true;\n }\n if ($scope.filterPreferences.participant) {\n $scope.participantFilterActive = true;\n }\n if ($scope.filterPreferences.improvement) {\n $scope.improvementFilterActive = true;\n }\n if ($scope.filterPreferences.deviation) {\n $scope.deviationFilterActive = true;\n }\n applyFilter();\n }\n }\n function setTemplateFilterPreferences(preferences) {\n angular.forEach(preferences, function (a3TemplateId) {\n for (var a = 0; a < $scope.templates.length; a++) {\n if ($scope.templates[a].id === a3TemplateId) {\n $scope.templates[a].filteredAndInResultList = true;\n break;\n }\n }\n });\n }\n function setAssetFilterPreferences(preferences) {\n angular.forEach(preferences, function (filteredAssetId) {\n for (var a = 0; a < $scope.assets.length; a++) {\n if ($scope.assets[a].id === filteredAssetId) {\n $scope.assets[a].filteredAndInResultList = true;\n break;\n }\n }\n });\n }\n function setProjectFilterPreferences(preferences) {\n angular.forEach(preferences, function (projectId) {\n for (var t = 0; t < $scope.projects.length; t++) {\n if ($scope.projects[t].id === projectId) {\n $scope.projects[t].filteredAndInResultList = true;\n break;\n }\n }\n });\n }\n function setStatusFilterPreferences(preferences) {\n angular.forEach(preferences, function (filteredStatus) {\n for (var a = 0; a < $scope.statusOptions.length; a++) {\n if ($scope.statusOptions[a].statusDB === filteredStatus) {\n $scope.statusOptions[a].filteredAndInResultList = true;\n break;\n }\n }\n });\n }\n function resetProjectFilter() {\n angular.forEach($scope.projects, function (project) {\n project.filteredAndInResultList = false;\n });\n }\n\n function resetAssetFilter() {\n angular.forEach($scope.assets, function (asset) {\n asset.filteredAndInResultList = false;\n });\n }\n\n function resetStatusFilter() {\n angular.forEach($scope.statusOptions, function (item) {\n item.filteredAndInResultList = false;\n });\n }\n\n function resetTemplateFilter() {\n angular.forEach($scope.templates, function (template) {\n template.filteredAndInResultList = false;\n });\n }\n\n function applyFilter() {\n $scope.resultList = $scope.allA3s;\n var selectedAssets = $filter('filter')($scope.assets, { filteredAndInResultList: true });\n if (selectedAssets.length > 0) {\n var selectedAssetIds = [];\n for (let a = 0; a < selectedAssets.length; a++) {\n selectedAssetIds.push(selectedAssets[a].id);\n }\n $scope.resultList = $filter('filter')($scope.allA3s, valueInList('assetId', selectedAssetIds));\n }\n var selectedProjectAssets = $filter('filter')($scope.projects, { filteredAndInResultList: true });\n if (selectedProjectAssets.length > 0) {\n var selectedProjectAssetIds = [];\n for (let a = 0; a < selectedProjectAssets.length; a++) {\n selectedProjectAssetIds.push(selectedProjectAssets[a].id);\n }\n $scope.resultList = $filter('filter')($scope.resultList, valueInList('assetId', selectedProjectAssetIds));\n }\n var selectedTemplates = $filter('filter')($scope.templates, { filteredAndInResultList: true });\n if (selectedTemplates.length > 0) {\n var selectedTemplateIds = [];\n for (var b = 0; b < selectedTemplates.length; b++) {\n selectedTemplateIds.push(selectedTemplates[b].id);\n }\n $scope.resultList = $filter('filter')($scope.resultList, valueInList('a3TemplateId', selectedTemplateIds));\n }\n var activeStatusFilter = statusFilterActive();\n if (activeStatusFilter.length > 0) {\n $scope.resultList = $filter('filter')($scope.resultList, valueInList('status', activeStatusFilter));\n }\n if ($scope.improvementFilterActive) {\n $scope.resultList = $filter('filter')($scope.resultList, hasValueFilter('improvementSuggestionId'));\n }\n if ($scope.deviationFilterActive) {\n $scope.resultList = $filter('filter')($scope.resultList, hasValueFilter('deviationId'));\n }\n if ($scope.myA3sFilterActive) {\n $scope.resultList = $filter('filter')($scope.resultList, { ownerUserId: userid });\n }\n if ($scope.participantFilterActive) {\n $scope.resultList = filterMember($scope.resultList);\n }\n }\n\n function filterMember(list) {\n if (list) {\n if (memberAssets && memberAssets.length > 0) {\n var memberlist = [];\n angular.forEach(list, function (filteredA3) {\n var shouldFilter = $filter('filter')(memberAssets, { id: filteredA3.assetId });\n if (shouldFilter.length > 0 && (shouldFilter[0].assetRole === \"Member\" || shouldFilter[0].assetRole === \"OWNER\")) { //TODO: should owner be \"Owner\"?\n memberlist.push(filteredA3);\n }\n });\n return memberlist;\n } else {\n return list; //could not filter a3 list\n }\n }\n }\n\n function statusFilterActive() {\n var filteredStatus = [];\n angular.forEach($scope.statusOptions, function (status) {\n if (status.filteredAndInResultList) {\n filteredStatus.push(status.statusDB);\n }\n });\n return filteredStatus;\n }\n\n function updateFilterPreferences(){\n if (!$scope.filterPreferences) { // Clear filter\n userPref.deleteA3Filter()\n } else { // update\n userPref.updateA3Filter(filterPreferences)\n }\n }\n\n $scope.toggleMyA3sFilter = function () {\n $scope.myA3sFilterActive = !$scope.myA3sFilterActive;\n if ($scope.myA3sFilterActive) {\n if ($scope.filterPreferences) {\n $scope.filterPreferences.myA3s = true;\n } else {\n $scope.filterPreferences = {\n myA3s: true\n };\n }\n } else { // remove from filter\n $scope.filterPreferences.myA3s = null;\n }\n applyFilter();\n updateFilterPreferences();\n };\n\n $scope.toggleParticipantFilter = function () {\n $scope.participantFilterActive = !$scope.participantFilterActive;\n if ($scope.participantFilterActive) {\n if ($scope.filterPreferences) {\n $scope.filterPreferences.participant = true;\n } else {\n $scope.filterPreferences = {\n participant: true\n };\n }\n } else { // remove from filter\n $scope.filterPreferences.participant = null;\n }\n applyFilter();\n updateFilterPreferences();\n };\n\n $scope.toggleImprovementFilter = function () {\n $scope.improvementFilterActive = !$scope.improvementFilterActive;\n if ($scope.improvementFilterActive) {\n if ($scope.filterPreferences) {\n $scope.filterPreferences.improvement = true;\n } else {\n $scope.filterPreferences = {\n improvement: true\n };\n }\n } else { // remove from filter\n $scope.filterPreferences.improvement = null;\n }\n applyFilter();\n updateFilterPreferences();\n };\n\n $scope.toggleDeviationFilter = function () {\n $scope.deviationFilterActive = !$scope.deviationFilterActive;\n if ($scope.deviationFilterActive) {\n if ($scope.filterPreferences) {\n $scope.filterPreferences.deviation = true;\n } else {\n $scope.filterPreferences = {\n deviation: true\n };\n }\n } else { // remove from filter\n $scope.filterPreferences.deviation = null;\n }\n applyFilter();\n updateFilterPreferences();\n };\n\n $scope.filterAsset = function (assetId) {\n var assetlist = $filter('filter')($scope.assets, { id: assetId }, true);\n var asset = assetlist[0];\n if (asset) {\n asset.filteredAndInResultList = !asset.filteredAndInResultList;\n if (asset.filteredAndInResultList) {\n if ($scope.filterPreferences && $scope.filterPreferences.asset) {\n $scope.filterPreferences.asset.push(asset.id);\n } else {\n if ($scope.filterPreferences) {\n $scope.filterPreferences.asset = [asset.id];\n } else {\n $scope.filterPreferences = {\n asset: [asset.id]\n };\n }\n $scope.filterPreferences.asset = [asset.id];\n }\n } else { // remove from filter\n if ($scope.filterPreferences.asset) {\n var index = $scope.filterPreferences.asset.indexOf(asset.id);\n $scope.filterPreferences.asset.splice(index, 1);\n }\n }\n }\n applyFilter();\n updateFilterPreferences();\n };\n\n $scope.filterProject = function (project) {\n if (project) {\n project.filteredAndInResultList = !project.filteredAndInResultList;\n if (project.filteredAndInResultList) {\n if ($scope.filterPreferences && $scope.filterPreferences.project) {\n $scope.filterPreferences.project.push(project.id);\n } else {\n if ($scope.filterPreferences) {\n $scope.filterPreferences.project = [project.id];\n } else {\n $scope.filterPreferences = {\n project: [project.id]\n };\n }\n $scope.filterPreferences.project = [project.id];\n }\n } else { // remove from filter\n if ($scope.filterPreferences.project) {\n var index = $scope.filterPreferences.project.indexOf(project.id);\n $scope.filterPreferences.project.splice(index, 1);\n }\n }\n }\n applyFilter();\n updateFilterPreferences();\n }\n\n $scope.filterTemplate = function (id) {\n var templatelist = $filter('filter')($scope.templates, { id: id }, true);\n var template = templatelist[0];\n if (template) {\n template.filteredAndInResultList = !template.filteredAndInResultList;\n if (template.filteredAndInResultList) {\n if ($scope.filterPreferences && $scope.filterPreferences.template) {\n $scope.filterPreferences.template.push(template.id);\n } else {\n if ($scope.filterPreferences) {\n $scope.filterPreferences.template = [template.id];\n } else {\n $scope.filterPreferences = {\n template: [template.id]\n };\n }\n $scope.filterPreferences.template = [template.id];\n }\n } else { // remove from filter\n if ($scope.filterPreferences.template) {\n var index = $scope.filterPreferences.template.indexOf(template.id);\n $scope.filterPreferences.template.splice(index, 1);\n }\n }\n }\n applyFilter();\n updateFilterPreferences();\n };\n\n $scope.showAllA3s = function () {\n clearFilterFlags();\n resetAssetFilter();\n resetTemplateFilter();\n resetStatusFilter();\n resetProjectFilter();\n $scope.resultList = $scope.allA3s;\n resetFilterPreferences();\n };\n\n function resetFilterPreferences() {\n $scope.filterPreferences = null;\n updateFilterPreferences();\n }\n\n function clearFilterFlags() {\n $scope.assetFilterActive = false;\n $scope.templateFilterActive = false;\n $scope.statusFilterActive = false;\n $scope.myA3sFilterActive = false;\n $scope.participantFilterActive = false;\n $scope.improvementFilterActive = false;\n $scope.deviationFilterActive = false;\n }\n\n $scope.showStatus = function (statusObj) {\n if (statusObj) {\n statusObj.filteredAndInResultList = !statusObj.filteredAndInResultList;\n if (statusObj.filteredAndInResultList) {\n if ($scope.filterPreferences && $scope.filterPreferences.status) {\n $scope.filterPreferences.status.push(statusObj.statusDB);\n } else {\n if ($scope.filterPreferences) {\n $scope.filterPreferences.status = [statusObj.statusDB];\n } else {\n $scope.filterPreferences = {\n status: [statusObj.statusDB]\n };\n }\n $scope.filterPreferences.status = [statusObj.statusDB];\n }\n } else { // remove from filter\n if ($scope.filterPreferences.status) {\n var index = $scope.filterPreferences.status.indexOf(statusObj.statusDB);\n $scope.filterPreferences.status.splice(index, 1);\n }\n }\n }\n applyFilter();\n updateFilterPreferences();\n };\n\n \n\n $scope.showImprovementTasks = function () {\n $scope.resultList = $filter('filter')($scope.resultList, hasValueFilter('improvementSuggestionId'));\n };\n\n $scope.showDeviation = function () {\n $scope.resultList = $filter('filter')($scope.resultList, hasValueFilter('deviationId'));\n };\n\n $scope.selectMyA3s = function () {\n $scope.resultList = $filter('filter')($scope.resultList, { ownerUserId: userid });\n };\n\n function hasValueFilter(property) {\n return function (item) {\n if (item[property]) return true;\n return false;\n }\n }\n\n function valueInList(property, list) {\n return function (item) {\n for (var i = 0; i < list.length; i++) {\n if (item[property] === list[i]) return true;\n }\n return false;\n }\n }\n\n $scope.isDeleteActivated = false;\n $scope.activateDelete = function () {\n $scope.isDeleteActivated = true;\n };\n $scope.deActivateDelete = function () {\n $scope.isDeleteActivated = false;\n };\n\n $scope.isImprovementSuggestion = function (A3) {\n if (A3.improvementSuggestionId) return true;\n else false;\n };\n\n $scope.isDeviation = function (A3) {\n if (A3.deviationId) return true;\n else false;\n };\n\n $scope.openImprovementSuggestion = function (A3) {\n var improvementsuggestionid = A3.improvementSuggestionId;\n suggestionService().get(improvementsuggestionid).then(function (suggestion) {\n $uibModal.open({ backdrop: 'static',\n templateUrl: 'fullImprovementInfoForm.html',\n controller: 'fullImprovementModalController',\n windowClass: 'fullSuggestion-modal-window',\n resolve: {\n suggestion: function () {\n return suggestion;\n },\n activeTab: function () {\n return \"Info\";\n }\n }\n });\n }, function () {\n $translate('IMPROVEMENT_IMPROVEMENT_DELETED').then(function (msg) {\n toaster.error(msg);\n });\n });\n };\n\n\n $scope.openDeviation = function (A3) {\n var deviationid = A3.deviationId;\n deviationService().get(deviationid).then(function (deviation) {\n $uibModal.open({ backdrop: 'static',\n templateUrl: 'fullDeviation.html',\n controller: 'fullDeviationController',\n windowClass: 'full-screen',\n resolve: {\n deviation: function () {\n return deviation;\n },\n activeTab: function () {\n return \"Info\";\n }\n }\n });\n }, function () {\n $translate('DEVIATION_DEVIATION_DELETED').then(function (msg) {\n toaster.error(msg);\n });\n });\n };\n $scope.deleteSelected = function () {\n var A3ToBeDeleted = [];\n for (var i = 0; i < $scope.allA3s.length; i++) {\n if ($scope.allA3s[i].isSelected === true) {\n A3ToBeDeleted.push($scope.allA3s[i].id);\n }\n }\n if (A3ToBeDeleted.length > 0) {\n a3Service().deleteA3s(A3ToBeDeleted).then(function () {\n $scope.publish(\"SendA3sDeleted\", A3ToBeDeleted);\n });\n }\n };\n\n\n\n function addFavoriteNavigationMetadata(a3) {\n a3.module = \"a3\";\n a3.uiRef = \"a3wizard({id:\" + a3.id + \"})\";\n a3.name = a3.title;\n }\n\n // create new A3\n $scope.addA3 = function () {\n\n $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'newA3Form.html',\n controller: 'newA3ModalController',\n resolve: {\n a3: function () {\n return {\n id: 0,\n title: \"\",\n assetId: \"\",\n categoryId: \"\",\n goal: \"\"\n }\n }\n\n }\n });\n };\n\n }]);\n","import { cloneDeep } from \"lodash\"\nimport { getCompanySetting } from \"@common/stores/companySettingsStore\"\n\nangular\n .module('DigiLean')\n .controller(\"a3designerController\", ['$scope', '$translate', '$stateParams', '$state', '$uibModal', 'languageAdminService', 'a3templateService', 'a3Service', 'debounce', 'authService',\n function ($scope, $translate, $stateParams, $state, $uibModal, languageAdminService, a3templateService, a3Service, debounce, authService) {\n\n $scope.templateId = parseInt($stateParams.id)\n $scope.selectedAsset = null\n $scope.categories = {}\n $scope.selectedCategory = {}\n $scope.languages = languageAdminService().getSupportedLanguages()\n $scope.selectedLanguage = $scope.languages[0]\n\n $scope.isKaizenAdmin = authService.hasRole('KaizenAdmin')\n $scope.subscribe(\"UserAuthenticatedAndReady\", function (profile) {\n $scope.isKaizenAdmin = authService.hasRole('KaizenAdmin')\n })\n // Default colors\n $scope.background = \"#1ab394\"\n $scope.color = \"#ffffff\"\n $scope.defaultStyle = { 'background': $scope.background, 'color': $scope.color }\n\n $scope.froalaOptions = {\n toolbarButtons: ['bold', 'italic', 'underline',\n '|', 'fontFamily', 'fontSize', 'color', 'inlineStyle', 'paragraphStyle',\n '|', 'paragraphFormat', 'align', 'formatOL', 'formatUL', 'outdent', 'indent', 'insertLink', 'insertImage', 'insertVideo', 'insertTable', 'insertDiagram',\n '|', 'emoticons', 'insertHR', 'clearFormatting',\n '|', 'help', '|', 'undo', 'redo'],\n \n imageEditButtons: ['editDiagram', 'imageReplace', 'imageAlign', 'imageCaption', 'imageRemove']\n }\n $scope.contentChanged = function (val) {\n $scope.selectedStep.defaultContent = val\n $scope.stepChangesDebounced($scope.selectedStep) // we will debounce save so we don't save too often.\n }\n\n $scope.publishTemplate = function () {\n a3templateService().publishTemplate($scope.templateId).then(function (publishedTemplate) {\n $scope.template.publishStatus = publishedTemplate.publishStatus\n })\n }\n $scope.unPublishTemplate = function () {\n a3templateService().unPublishTemplate($scope.templateId).then(function (publishedTemplate) {\n $scope.template.publishStatus = publishedTemplate.publishStatus\n })\n }\n\n function setSelectedLang() {\n let selectedLang = $scope.languages.find(l => l.languageCode == $scope.template.language)\n $scope.selectedLanguage = selectedLang\n }\n\n function loadTemplate() {\n a3templateService().get($scope.templateId).then(function (template) {\n $scope.template = template\n \n if (!template.language) {\n getCompanySetting(\"language\").then(function (setting) {\n if (setting) {\n $scope.template.language = setting\n setSelectedLang()\n }\n })\n } else {\n setSelectedLang()\n }\n\n a3Service().getCategories().then(function (categories) {\n $scope.categories = categories\n if (template.categoryId) {\n let selectedCat = $scope.categories.find(c => c.id == template.categoryId)\n $scope.selectedCategory = selectedCat\n }\n })\n // style\n if (template.style) {\n var templateStyle = JSON.parse(template.style)\n $scope.background = templateStyle.background\n $scope.color = templateStyle.color\n }\n\n template.steps = template.steps.filter(x => !x.isProjectInfo)\n\n if (template.steps.length > 0) {\n // Parse style settings\n for (var i = 0; i < template.steps.length; i++) {\n var step = template.steps[i]\n var style = step.style\n if (style) {\n var parsedStyle = JSON.parse(step.style)\n step.background = parsedStyle.background\n step.color = parsedStyle.color\n } else {\n step.background = $scope.background\n step.color = $scope.color\n }\n }\n $scope.editStep(template.steps[0])\n }\n })\n }\n\n loadTemplate()\n // Template changes\n function commitChanges() {\n // Set style\n var templateStyle = {\n 'background': $scope.background,\n 'color': $scope.color\n }\n $scope.template.style = JSON.stringify(templateStyle)\n var template = $scope.template\n var itemToSave = {\n id: template.id,\n name: template.name,\n language: template.language,\n categoryId: template.categoryId,\n style: template.style,\n description: template.description,\n includeProjectInfo: template.includeProjectInfo\n }\n a3templateService().updateTemplate(itemToSave).then(function (template) {\n $scope.publish(\"SendA3TemplateUpdated\", template)\n })\n }\n\n $scope.changesDebounced = debounce(commitChanges, 1000, false)\n $scope.saveTemplateInfo = function () {\n $scope.changesDebounced()\n }\n\n\n function commitStepChanges(step) {\n var templateStyle = {\n 'background': step.background,\n 'color': step.color\n }\n\n var itemToSave = {\n id: step.id,\n name: step.name,\n isActionList: step.isActionList,\n style: JSON.stringify(templateStyle),\n description: step.description,\n defaultContent: step.defaultContent,\n a3TemplateId: step.a3TemplateId\n }\n a3templateService().updateStep(itemToSave).then(function (step) {\n // Not publishing event for now, too \"chatty\"\n })\n }\n $scope.stepChangesDebounced = debounce(commitStepChanges, 1000, false)\n\n $scope.languageChanged = function (lang) {\n $scope.template.language = lang.languageCode\n setSelectedLang()\n $scope.saveTemplateInfo()\n }\n\n $scope.categoryChanged = function (category) {\n $scope.template.categoryId = category.id\n $scope.saveTemplateInfo()\n }\n\n $scope.templateColorChanged = function () {\n $scope.defaultStyle = { 'background': $scope.background, 'color': $scope.color, 'opacity': 0.3 }\n for (var i = 0; i < $scope.template.steps.length; i++) {\n var step = $scope.template.steps[i]\n if (step.id === $scope.selectedStep.id) {\n step.style = { 'background': $scope.background, 'color': $scope.color }\n } else {\n step.style = $scope.defaultStyle\n }\n step.background = $scope.background\n step.color = $scope.color\n commitStepChanges(step)\n }\n $scope.saveTemplateInfo()\n }\n\n $scope.updateColors = function () {\n for (var i = 0; i < $scope.template.steps.length; i++) {\n var step = $scope.template.steps[i]\n if (step.id === $scope.selectedStep.id) {\n step.style = { 'background': step.background, 'color': step.color }\n } else {\n step.style = { 'background': step.background, 'color': step.color, 'opacity': 0.6 }\n }\n }\n }\n\n $scope.colorChanged = function (step) {\n $scope.updateColors()\n $scope.stepChangesDebounced(step)\n }\n\n\n $scope.stepsSortableOptions = {\n clone: false,\n accept: function (sourceItemHandleScope, destSortableScope) {\n return sourceItemHandleScope.itemScope.sortableScope.$id === destSortableScope.$id\n },\n orderChanged: function (event) {\n updateSortOrder()\n }\n }\n\n function updateSortOrder() {\n var sortOrders = []\n angular.forEach($scope.template.steps, function (row, key) {\n row.sortOrder = key + 1\n var sortOrder = { id: row.id, sortOrder: row.sortOrder }\n sortOrders.push(sortOrder)\n })\n a3templateService().updateSortOrder($scope.template.id, sortOrders).then(function () {\n SendA3TemplateUpdated()\n })\n }\n\n $scope.editStep = function (step) {\n $scope.selectedStep = step\n $scope.stepContent = step.defaultContent\n $scope.updateColors()\n }\n\n $scope.delete = function (step) {\n a3templateService().deleteStep(step.id).then(function () {\n var rowindex = $scope.template.steps.indexOf(step)\n $scope.template.steps.splice(rowindex, 1)\n updateSortOrder()\n if ($scope.template.steps.length > 0) {\n $scope.editStep($scope.template.steps[0])\n }\n SendA3TemplateUpdated()\n })\n }\n\n function SendA3TemplateUpdated() {\n let template = cloneDeep($scope.template)\n template.steps = template.steps.map(step => {\n if (typeof step.style !== \"string\")\n step.style = JSON.stringify(step.style)\n return step\n })\n $scope.publish(\"SendA3TemplateUpdated\", template)\n }\n $scope.addStep = function () {\n var templateStyle = {\n 'background': $scope.background,\n 'color': $scope.color\n }\n var step = {\n sortorder: $scope.template.steps.length,\n name: $translate.instant('A3_NEW_STEP'),\n isActionList: false,\n a3templateId: $scope.template.id,\n style: JSON.stringify(templateStyle)\n }\n a3templateService().addStep($scope.template.id, step).then(function (step) {\n $scope.template.steps.push(step)\n step.background = $scope.background\n step.color = $scope.color\n updateSortOrder()\n $scope.editStep(step)\n SendA3TemplateUpdated()\n })\n }\n\n $scope.newA3FromTemplate = function () {\n var categoryId = \"\"\n var assetId = \"\"\n if ($scope.template.categoryId) {\n categoryId = $scope.template.categoryId\n }\n if ($scope.template.assetId) {\n assetId = $scope.template.assetId\n }\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'newA3Form.html',\n controller: 'newA3ModalController',\n resolve: {\n a3: function () {\n return {\n id: 0,\n title: \"\",\n assetId: assetId,\n categoryId: categoryId,\n goal: \"\",\n templateId: $scope.template.id\n }\n }\n }\n })\n }\n\n $scope.layout = function () {\n $state.go('a3templateDesigner', { id: $scope.templateId }, { reload: false })\n return\n }\n\n $('.note-editable').css('font-size', '14px')\n\n }])","import angular from \"angular\"\nimport { DigiLeanNgScope } from \"@common/model/angularModel\"\nimport { A3CreateFromTemplate, A3TemplateInfo, Asset, AssetRoleType, AssetWithRole, UserShortInfo } from \"@api\"\nimport {getAllUsers, getUsersForAsset} from \"@common/services/customers/customerService\"\nimport * as assetService from \"@common/services/assetService\"\nimport { AssetChangeInfo } from \"@common/model/types\"\n\ninterface A3Registration {\n assetId: number\n participants: UserShortInfo[]\n}\ninterface A3AssetModel {\n assetId?: number | null\n assets: AssetWithRole[]\n}\n\ninterface INewA3ModalScope extends DigiLeanNgScope {\n a3: A3CreateFromTemplate\n registration: A3Registration\n projectassetmodel: A3AssetModel\n assetmodel: A3AssetModel\n assets: AssetWithRole[]\n asset: Asset | AssetWithRole | null\n assetId: number | null\n projectassets: AssetWithRole[]\n projectasset: AssetWithRole\n users: UserShortInfo[]\n templates: A3TemplateInfo[]\n template?: A3TemplateInfo | null\n isPublic: boolean\n hasProjectModule: boolean\n useProjectGroup: boolean\n chooseMembers: boolean\n showAssetUsers: boolean\n add: (user: UserShortInfo) => void\n remove: (user: UserShortInfo) => void\n changeUseProjectGroup: () => void\n assetChangeHandler: (assetinfo: AssetChangeInfo) => void\n changeTemplate: (template: A3TemplateInfo) => void\n ok: () => void\n close: () => void\n}\n\nangular\n .module('DigiLean')\n .controller(\"newA3ModalController\", ['$scope', '$state', '$uibModalInstance', 'authService', 'a3', 'a3Service', 'a3templateService', 'navigationService',\n function ($scope: INewA3ModalScope, $state, $uibModalInstance, authService, a3, a3Service, a3templateService, navigationService) {\n\n $scope.a3 = a3\n $scope.a3.hasCustomizedGroup = false\n $scope.asset = null\n $scope.template = null\n let allTemplates: A3TemplateInfo[] = []\n $scope.assets = [];\n $scope.isPublic = true;\n\n $scope.hasProjectModule = navigationService().hasModule(\"PROJECT\");\n $scope.useProjectGroup = false;\n if (!$scope.hasProjectModule) {\n $scope.useProjectGroup = false;\n }\n\n $scope.registration = {\n assetId: 0,\n participants: []\n };\n\n $scope.chooseMembers = true;\n if($scope.a3 && $scope.a3.assetId && $scope.a3.assetId>0){\n $scope.chooseMembers = false;\n } else {\n getAllUsers().then(function (users) {\n $scope.users = users\n var userid = authService.getCurrentUser().userId\n var matchingUser = $scope.users.find(u => u.userId === userid)\n if (matchingUser) {\n $scope.registration.participants.push(matchingUser)\n }\n })\n \n assetService.getList().then(function (assets) {\n $scope.assets = assets;\n \n if ($scope.a3.assetId) {\n var match = $scope.assets.find(a => a.id == $scope.a3.assetId)\n if (match) {\n $scope.asset = match\n }\n }\n for (var k = 0; k < $scope.assets.length; k++) {\n ///@ts-ignore\n $scope.assets[k].cssLevel = \"level-\" + $scope.assets[k].level; \n }\n $scope.assetmodel = {\n assetId: $scope.a3.assetId,\n assets: $scope.assets\n }\n })\n assetService.getMyProjectAssets().then(function (assets) {\n $scope.projectassets = assets\n let projectAssetId: number | null = null\n if ($scope.projectasset)\n projectAssetId = $scope.projectasset.id!\n $scope.projectassetmodel = {\n assetId: projectAssetId,\n assets: $scope.projectassets\n }\n })\n }\n\n \n a3templateService().getList().then(function (templates) {\n $scope.templates = templates\n allTemplates = templates\n if ($scope.a3.a3TemplateId) {\n const match = $scope.templates.find(t => t.id == $scope.a3.a3TemplateId)\n if (match) {\n $scope.template = match\n }\n }\n })\n $scope.changeUseProjectGroup = function () {\n $scope.asset = null\n $scope.assetId = null\n $scope.a3.hasCustomizedGroup = false\n $scope.showAssetUsers = false\n };\n $scope.assetChangeHandler = function (assetinfo) {\n if (assetinfo) {\n const asset = assetinfo.asset;\n $scope.asset = asset;\n $scope.showAssetUsers = true;\n getUsersForAsset(asset.id!).then(function (users) {\n const owner = users.filter(u => u.assetRole == AssetRoleType.Owner)\n const members = users.filter(u => u.assetRole == AssetRoleType.Member)\n if ($scope.asset) {\n const asset = $scope.asset as Asset\n asset.users = members\n if (owner.length > 0) {\n asset.users = asset.users.concat(owner)\n }\n }\n })\n\n $scope.templates = allTemplates\n const match = $scope.templates.filter(t => t.assetId == asset.id)\n if (match.length > 0) {\n $scope.templates = match;\n\n const noAssetTemplate = allTemplates.filter(t => !t.assetId)\n if (noAssetTemplate.length > 0) {\n for (let t = 0; t < noAssetTemplate.length; t++) {\n $scope.templates.push(noAssetTemplate[t])\n }\n }\n } else {\n const noAssetTemplate = allTemplates.filter(t => !t.assetId)\n if (noAssetTemplate.length > 0) {\n $scope.templates = noAssetTemplate\n }\n }\n }\n }\n\n $scope.changeTemplate = function (template) {\n if (template.assetId && $scope.chooseMembers) {\n const match = $scope.assets.find(a => a.id == template.assetId)\n if (match) {\n $scope.asset = match\n }\n }\n }\n\n $scope.add = function (user) {\n const existUser = $scope.registration.participants.filter(p => p.userId == user.userId)\n if (existUser.length == 0) {\n $scope.registration.participants.unshift(user)\n }\n \n const matchingUser = $scope.users.find(u => u.userId == user.userId)\n if (matchingUser) {\n const i = $scope.users.indexOf(matchingUser)\n $scope.users.splice(i, 1)\n }\n };\n\n $scope.remove = function (user) {\n $scope.users.unshift(user);\n\n var matchingUser = $scope.registration.participants.find(p => p.userId == user.userId)\n if (matchingUser) {\n const i = $scope.registration.participants.indexOf(matchingUser)\n $scope.registration.participants.splice(i, 1)\n }\n }\n\n $scope.ok = function () {\n // Get asset\n $scope.a3.isPrivate = !$scope.isPublic;\n if ($scope.a3.hasCustomizedGroup) {\n $scope.a3.participants = $scope.registration.participants;\n } else {\n if ($scope.asset) {\n $scope.a3.assetId = $scope.asset.id;\n } else if(!$scope.a3.assetId){\n //No users selected => set creator as participant\n const currentuserid = authService.getCurrentUser().userId\n const matchingUser = $scope.users.find(u => u.userId == currentuserid)\n if (matchingUser) {\n $scope.a3.participants = [matchingUser]\n $scope.a3.hasCustomizedGroup = true\n }\n }\n }\n\n if ($scope.template) {\n $scope.a3.a3TemplateId = $scope.template.id;\n \n a3Service().createA3FromTemplate($scope.a3).then(function (savedA3) {\n $state.go('a3wizard', { id: savedA3.id }, { reload: false });\n $scope.publish(\"SendA3Created\", savedA3);\n $uibModalInstance.close(savedA3);\n });\n } else {\n a3Service().addA3($scope.a3).then(function (savedA3) {\n $state.go('a3wizard', { id: savedA3.id }, { reload: false });\n $scope.publish(\"SendA3Created\", savedA3);\n $uibModalInstance.close(savedA3);\n });\n }\n };\n\n $scope.close = function () {\n $uibModalInstance.dismiss('cancel');\n };\n }]);\n","import * as userPref from \"@common/services/user/userPreferenceService\"\nimport * as customerService from \"@common/services/customers/customerService\"\nimport * as assetService from \"@common/services/assetService\"\nimport * as timeService from \"@common/services/timeService\"\nimport * as pdfService from \"@common/services/pdfService\"\nimport { getUserProfile } from \"@common/stores/userStore\"\nimport { getCompanySetting } from \"@common/stores/companySettingsStore\"\n\nangular\n .module('DigiLean')\n .controller(\"a3wizardController\", ['$rootScope', '$scope', '$state', '$stateParams', '$filter', '$translate', 'authService', '$uibModal', 'a3Service', 'suggestionService', 'strategyService','debounce', 'deviationService', 'activityService','modalService','navigationService',\n function ($rootScope, $scope, $state, $stateParams, $filter, $translate, authService, $uibModal, a3Service, suggestionService, strategyService,debounce, deviationService, activityService, modalService, navigationService) {\n\n $scope.translations = {};\n $scope.a3Project = {};\n $scope.assets = {};\n //$scope.selectedAsset = {};\n $scope.categories = {};\n $scope.selectedCategory = {};\n $scope.selectedVersion = {};\n $scope.selectedOwner = {};\n $scope.selectedStatusOption = {};\n\n $scope.isStar = false;\n \n $scope.attachmentCount = 0;\n $scope.linkCount = 0;\n\n $scope.a3Id = parseInt($stateParams.id);\n //$scope.canEdit = false;\n $scope.a3 = {};\n $scope.titlehaserror = false;\n $scope.currentStep = null;\n $scope.currentStepCssState = \"animated pulse\";\n $scope.updateMessage = \"\";\n $scope.showComments = false;\n $scope.isPublic = true;\n\n //strategy\n $scope.hasStrategy = navigationService().hasModule(\"STRATEGY\");\n $scope.goals = [];\n $scope.modifyGoal = false;\n\n $scope.subscribe(\"UserAuthenticatedAndReady\", function(profile) {\n $scope.hasStrategy = navigationService().hasModule(\"STRATEGY\"); \n if($scope.goals.length == 0){\n loadGoals();\n }\n });\n $scope.subscribe(\"A3StrategyGoalAdded\", function(goal) {\n if(!goal || goal.a3Id != $scope.a3Id) return;\n loadGoals();\n });\n\n $scope.subscribe(\"A3StrategyGoalDeleted\", function(goal) {\n if(!goal || goal.a3Id != $scope.a3Id) return;\n loadGoals();\n });\n function loadGoals(){\n if(!$scope.hasStrategy) return;\n a3Service().getStrategyGoals($scope.a3Id).then(function (relatedGoals) {\n strategyService().getBreakthroughObjectives().then(function (goals) {\n if(goals && goals.length > 0){\n $scope.goals = goals;\n if(relatedGoals && relatedGoals.length>0){\n for(var i=0; i<$scope.goals.length; i++){\n var matching = $filter('filter')(relatedGoals, { strategyGoalId: $scope.goals[i].id}, true);\n if (matching.length > 0) {\n $scope.goals[i].selected = true;\n }\n }\n }\n }\n });\n });\n }\n loadGoals();\n $scope.toggleModifyGoal = function () {\n $scope.modifyGoal = !$scope.modifyGoal;\n };\n $scope.toggleGoal = function (goal) {\n if(!$scope.modifyGoal) return;\n goal.selected = !goal.selected;\n\n if (goal.selected) {\n a3Service().addStrategyGoalToA3($scope.a3Id, goal.id).then(function (saved) {\n });\n } else {\n a3Service().removeStrategyGoalFromA3($scope.a3Id, goal.id).then(function (saved) {\n });\n }\n };\n\n $scope.goToStrategyHub = function (goalId) {\n $state.go('goalDetails', { id: goalId }, { reload: false }); \n }\n $scope.commentCountChangedHandler = function(commentCount) {\n updateCommentCount(commentCount);\n };\n\n $scope.linkCountChangedHandler = function(linkCount) {\n $scope.linkCount = linkCount;\n calculateFileAndLinkCount();\n };\n\n $scope.participants = [];\n $scope.activityLog = [];\n\n a3Service().canEdit($scope.a3Id).then(function (canEdit) {\n $scope.canEdit = canEdit;\n $scope.memberoptions = {canEdit: $scope.canEdit};\n // alert(canEdit);\n getA3();\n })\n\n $scope.currency = customerService.getDefaultCurrency()\n getCompanySetting(\"currency\").then(function (setting) {\n if (setting) {\n $scope.currency = setting\n }\n })\n\n\n $scope.selectedAssetId = null;\n $scope.memberSelectionChanged = function (selection) {\n $scope.selectedAssetId = selection.assetId;\n $scope.participants = selection.participants;\n $scope.selectedAssetType = selection.assetType;\n setOwner();\n if ($scope.a3.assetId != selection.assetId) {\n $scope.a3.assetId = selection.assetId;\n $scope.saveA3Metadata();\n }\n\n if (!selection.assetId && !selection.assetId == 0 && selection.assetType != \"CUSTOMIZED\") return;\n if (selection.assetId == $scope.a3.assetId && selection.assetType != \"CUSTOMIZED\") return;\n updateMembers();\n }\n\n \n $scope.setPrivateStatus = function (isPublic) {\n $scope.a3.isPrivate = !isPublic;\n a3Service().setPrivateStatus($scope.a3.id, $scope.a3.isPrivate).then(function (result) {\n });\n };\n\n var updateMembers = function() {\n $scope.isProcessing = true;\n\n // If new asset, we need to create it then set it to board.\n\n if ($scope.selectedAssetType == \"CUSTOMIZED\") {\n var participants = [];\n $scope.participants.forEach(p => {\n var participant = {\n userId: p.userId,\n role: \"Member\"\n };\n participants.push(participant);\n });\n if ($scope.selectedAssetId == 0) {\n var customAsset = {\n name : $scope.name,\n participants : participants\n }\n assetService.createCustomAsset(customAsset).then(function(asset){\n $scope.selectedAssetId = asset.id;\n $scope.a3.assetId = asset.id;\n $scope.saveA3Metadata();\n });\n } else {\n // Update list of participants\n assetService.updateCustomAssetMembers($scope.selectedAssetId, participants).then(function(asset){\n $scope.saveA3Metadata();\n });\n }\n \n } else {\n $scope.saveA3Metadata();\n }\n }\n // Track which tab is selected\n $scope.selectedTabIndex = 0;\n $scope.selectTab = function(index) {\n $scope.selectedTabIndex = index;\n checkTabData(index);\n };\n\n function checkTabData(index){\n if(index == 2) {//files & links\n a3Service().getAttachments($scope.a3Id).then(function(attachments) {\n $scope.a3.attachments = attachments;\n });\n }\n\n }\n // Froala editor => options and events\n $scope.contentChanged = function(val) {\n var contents = val;\n if ($scope.currentStep && $scope.anotherUserIsEditingStep === false && isCurrentUserChangingStep === false) {\n $scope.currentStep.content = contents\n var contentChanged = {\n stepId: $scope.currentStep.id,\n content: contents\n };\n var length = contents.length;\n if (length < 65000) { // We don't want to publish large messages.\n $scope.publish(\"SendA3StepContentChanged\", contentChanged); // bør debounce\n }\n \n $scope.commitChangesDebounced($scope.currentStep.id, contents); // we will debounce save so we don't save too often.\n }\n };\n $scope.froalaOptions = {\n heightMin: 100,\n toolbarButtons: {\n 'moreText': {\n 'buttons': ['bold', 'italic', 'underline', 'strikeThrough', 'subscript', 'superscript', 'fontFamily', 'fontSize', 'textColor', 'backgroundColor', 'inlineClass', 'inlineStyle', 'clearFormatting']\n },\n 'moreParagraph': {\n 'buttons': ['alignLeft', 'alignCenter', 'alignRight', 'formatOLSimple', 'formatUL', 'paragraphFormat', 'alignJustify', 'paragraphStyle', 'lineHeight', 'outdent', 'indent', 'quote'],\n 'buttonsVisible': 6\n },\n 'moreRich': {\n 'buttons': ['insertLink', 'insertImage', 'insertTable', 'insertDiagram', 'insertVideo', 'emoticons', 'fontAwesome', 'specialCharacters', 'insertFile', 'insertHR'],\n 'buttonsVisible': 4\n },\n 'moreMisc': {\n 'buttons': ['undo', 'redo', 'selectAll', 'help'],\n 'align': 'right',\n 'buttonsVisible': 2\n }\n },\n // toolbarButtons: ['bold', 'italic', 'underline', \n // '|', 'fontFamily', 'fontSize', 'textColor', 'backgroundColor', 'inlineStyle', 'paragraphStyle', \n // '|', 'paragraphFormat', 'align', 'formatOL', 'formatUL', 'outdent', 'indent', 'insertLink', 'insertImage', 'insertVideo', 'insertTable', '|', 'emoticons', 'insertHR', 'clearFormatting',\n // '|', 'help', \n // '|', 'undo', 'redo'],\n imageEditButtons: ['editDiagram', 'imageReplace', 'imageAlign', 'imageCaption', 'imageRemove']\n };\n\n $scope.statusOptions = [\n {\n statusDB: \"New\",\n translated: $translate.instant('COMMON_NEW')\n }, {\n statusDB: \"Plan\",\n translated: $translate.instant('A3_PLAN')\n }, {\n statusDB: \"Do\",\n translated: $translate.instant('COMMON_DO')\n }, {\n statusDB: \"Check\",\n translated: $translate.instant('COMMON_CHECK')\n }, {\n statusDB: \"Act\",\n translated: $translate.instant('COMMON_ACT')\n }, {\n statusDB: \"Closed\",\n translated: $translate.instant('DEVIATION_CLOSED')\n }\n\n ];\n\n // When language has changed.\n $rootScope.$on('$translateChangeSuccess', function () {\n \n $scope.statusOptions = [\n {\n statusDB: \"New\",\n translated: $translate.instant('COMMON_NEW')\n }, {\n statusDB: \"Plan\",\n translated: $translate.instant('A3_PLAN')\n }, {\n statusDB: \"Do\",\n translated: $translate.instant('COMMON_DO')\n }, {\n statusDB: \"Check\",\n translated: $translate.instant('COMMON_CHECK')\n }, {\n statusDB: \"Act\",\n translated: $translate.instant('COMMON_ACT')\n }, {\n statusDB: \"Closed\",\n translated: $translate.instant('DEVIATION_CLOSED')\n }\n ];\n\n $scope.selectedStatusOption = $scope.statusOptions.find(o => o.statusDB == $scope.a3.status)\n })\n\n // History\n $scope.getActivityLog = function () {\n var activityRequest = {\n activity: \"A3\",\n activityId: $scope.a3Id,\n parentActivity: \"A3\",\n parentId: $scope.a3Id\n };\n \n var $translate = $filter('translate');\n var translateOptions = {\n month: $translate('COMMON_TIMEELAPSED_MONTH'),\n days: $translate('COMMON_TIMEELAPSED_DAYS'),\n hours: $translate('COMMON_TIMEELAPSED_HOURS'),\n mins: $translate('COMMON_TIMEELAPSED_MINUTES'),\n seconds: $translate('COMMON_TIMEELAPSED_SECONDS'),\n now: $translate('COMMON_TIMEELAPSED_NOW')\n };\n activityService().getLogForActivity(activityRequest).then(function (logItems) {\n logItems.forEach(function (activity) {\n activity.occured = timeService.getTimeElapsed(activity.activityDate, translateOptions);\n if (activity.payLoad && typeof activity.payLoad === \"string\") {\n activity.payLoad = JSON.parse(activity.payLoad); // Payload gives the whole object, in this case the Task.\n }\n });\n $scope.activityLog = logItems;\n\n if($scope.a3.a3ProjectId) {\n var milestoneActivityRequest = {\n activity: \"A3ProjectMilestone\", // Can have multiple milestones Ids, so which one to send as activityId?\n parentActivity: \"A3Project\",\n parentId: $scope.a3.a3ProjectId\n };\n activityService().getLogForActivity(milestoneActivityRequest).then(function (milestonelogItems) {\n milestonelogItems.forEach(function (activity) {\n activity.occured = timeService.getTimeElapsed(activity.activityDate, translateOptions);\n if (activity.payLoad && typeof activity.payLoad === \"string\") {\n activity.payLoad = JSON.parse(activity.payLoad); // Payload gives the whole object, in this case the Task.\n }\n });\n $scope.activityLog.push(milestonelogItems);\n \n });\n }\n\n })\n }\n\n // File upload\n $scope.uploadedFiles = []; // For uploading new attachments, will be connected to dropzone.\n $scope.fileUploaded = function (file) {\n a3Service().addAttachment($scope.a3.id, file).then(function (attachment) {\n });\n };\n $scope.deleteAttachment = function (attachment) {\n a3Service().deleteAttachment($scope.a3.id, attachment.id).then(function (deleted) {\n // Send event\n attachment.cssState = \"animated slideOutLeft\";\n });\n };\n\n function calculateFileAndLinkCount(){\n $scope.fileAndLinkCount = 0;\n if($scope.attachmentCount){\n $scope.fileAndLinkCount = $scope.attachmentCount;\n }\n if($scope.linkCount){\n $scope.fileAndLinkCount += $scope.linkCount;\n }\n //$scope.$apply();\n }\n // Change handler for step\n $scope.anotherUserIsEditingStep = false;\n $scope.userEditingStep = {};\n var isCurrentUserChangingStep = false;\n\n\n // System events to react to.\n $scope.subscribe('A3Updated', function (a3) {\n if ($scope.a3Id === a3.id) {\n updateMetaData(a3);\n setSelectedCategory();\n setOwner();\n }\n });\n\n $scope.subscribe('A3ProjectInfoUpdated', function (a3) {\n if ($scope.a3Id === a3.a3Id) {\n $scope.a3Project = a3;\n if ($scope.a3Project.estimatedEndDate) {\n $scope.a3Project.estimatedEndDate = moment($scope.a3Project.estimatedEndDate).toDate();\n }\n if ($scope.a3Project.endDate) {\n $scope.a3Project.endDate = moment($scope.a3Project.endDate).toDate();\n }\n }\n });\n\n $scope.subscribe('A3OwnerChanged', function (a3) {\n if ($scope.a3Id === a3.a3Id) {\n $scope.a3.ownerUserId = a3.ownerUserId;\n $scope.a3.owner = a3.owner;\n $scope.a3.ownerDisplayName = null;\n setOwner();\n }\n });\n \n \n $scope.subscribe('A3AttachmentCountChanged', function (attachment) {\n if ($scope.a3Id === attachment.a3Id) {\n $scope.attachmentCount = attachment.attachmentCount;\n calculateFileAndLinkCount();\n }\n });\n\n $scope.subscribe('A3AttachmentDeleted', function (attachment) {\n if ($scope.a3Id === attachment.a3Id && $scope.a3.attachments) {\n // remove attachment\n var deleted = $scope.a3.attachments.find(a => a.id == attachment.id)\n if (deleted) {\n attachment.cssState = \"animated slideOutLeft\";\n setTimeout(function () {\n var index = $scope.a3.attachments.indexOf(deleted)\n $scope.a3.attachments.splice(index, 1)\n calculateFileAndLinkCount();\n }, 500)\n }\n }\n })\n\n\n $scope.subscribe('A3AttachmentAdded', function (attachment) {\n if ($scope.a3Id === attachment.a3Id) {\n var added = $scope.a3.attachments.find(a => a.id == attachment.id)\n if (added) \n return // Already existss\n attachment.cssState = \"animated slideInDown\"\n setTimeout(function () {\n attachment.cssState = \"\"\n }, 500)\n $scope.a3.attachments.push(attachment)\n }\n })\n \n\n $scope.subscribe(\"A3StepUpdated\", function (step) {\n var hasStepUpdated = $scope.selectedVersion.steps.find(s => s.id == step.id)\n if (hasStepUpdated && !authService.isCurrentUser(step.lastModifiedByUserId)) {\n var index = $scope.selectedVersion.steps.indexOf(hasStepUpdated)\n var stepUpdated = $scope.selectedVersion.steps[index]\n stepUpdated.content = step.content\n allowChanges()\n }\n })\n\n $scope.subscribe(\"A3StepContentChanged\", function (contentChanged) {\n // Check if user has A3 asset before adding\n if (!$scope.currentStep)\n return\n var hasStepUpdated = $scope.selectedVersion.steps.find(s => s.id == contentChanged.stepId)\n if (hasStepUpdated) {\n var index = $scope.selectedVersion.steps.indexOf(hasStepUpdated)\n $scope.selectedVersion.steps[index].content = contentChanged.content\n // If user has step changed active we need to refresh it.\n if ($scope.currentStep.id === contentChanged.stepId && !authService.isCurrentUser(contentChanged.changedBy.userId)) {\n $scope.anotherUserIsEditingStep = true\n $scope.userEditingStep = contentChanged.changedBy\n $scope.currentStep.content = contentChanged.content\n $scope.stepContent = contentChanged.content\n }\n }\n })\n\n $scope.subscribe(\"A3StepApprovedEvent\", function (approvedStep) {\n var hasStepUpdated = $scope.selectedVersion.steps.find(s => s.id == approvedStep.a3StepId)\n if (hasStepUpdated) {\n hasStepUpdated.isApproved = approvedStep.isApproved\n setApproveButton(approvedStep.isApproved)\n }\n })\n\n $scope.subscribe(\"A3VersionCreated\", function (version) {\n // Check if user has A3 asset before adding\n if ($scope.a3Id !== version.a3Id) return\n $scope.a3.versions.unshift(version)\n })\n \n $scope.subscribe(\"A3StatusChanged\", function (a3) {\n if (a3.a3Id == $scope.a3.id) {\n $scope.a3.status = a3.status\n $scope.selectedStatusOption = $scope.statusOptions.find(o => o.statusDB == a3.status)\n }\n })\n $scope.subscribe(\"A3GoalChanged\", function (a3) {\n if (a3.a3Id == $scope.a3.id) {\n if (a3.goal) {\n $scope.a3.goal = a3.goal;\n } else {\n $scope.a3.goal = \"\";\n }\n }\n });\n $scope.subscribe(\"A3TitleChanged\", function (a3) {\n if (a3.a3Id == $scope.a3.id) {\n if (a3.title) {\n $scope.a3.title = a3.title;\n } else {\n $scope.a3.title = \"\";\n }\n }\n });\n\n $scope.updateA3Goal = function(goal) { \n var data = \n {\n a3Id : $scope.a3.id,\n goal: goal\n };\n a3Service().updateA3Goal(data).then(function (result) { \n });\n \n }\n $scope.updateA3Title = function(title) { \n if (!title) return; \n var a3title = \n {\n a3Id : $scope.a3.id,\n title: title\n };\n a3Service().updateA3Title(a3title).then(function (result) { \n });\n \n }\n\n function updateMetaData(a3) {\n //$scope.a3.title = a3.title;\n //$scope.a3.goal = a3.goal;\n $scope.a3.category = a3.category;\n $scope.a3.assetId = a3.assetId;\n $scope.a3.categoryId = a3.categoryId;\n $scope.a3.status = a3.status;\n $scope.a3.ownerUserId = a3.ownerUserId;\n $scope.a3.owner = a3.owner;\n $scope.a3.isPrivate = a3.isPrivate;\n $scope.a3.ownerDisplayName = a3.ownerDisplayName;\n $scope.a3.hasCustomizedGroup = a3.hasCustomizedGroup;\n $scope.selectedStatusOption = $scope.statusOptions.find(o => o.statusDB == a3.status)\n }\n\n\n $scope.projectCompletionDateChanged = function ($event) {\n const date = $event.originalEvent.detail\n $scope.a3Project.estimatedEndDate = date\n $scope.saveProjectdata()\n }\n\n $scope.projectEndDateChanged = function (event) {\n const orgEvt = event.originalEvent\n const date = orgEvt.detail\n $scope.a3Project.endDate = date\n $scope.saveProjectdata()\n }\n $scope.saveProjectdata = function () {\n\n a3Service().updateProjectInfo($scope.a3.id, $scope.a3Project).then(function (saved) {\n \n })\n }\n\n function setSelectedCategory() {\n if ($scope.a3.categoryId) {\n $scope.selectedCategory = $scope.categories.find(c => c.id == $scope.a3.categoryId)\n }\n else {\n $scope.selectedCategory = {}\n }\n }\n\n function setOwner() {\n if ($scope.a3.ownerUserId) {\n var owner = $scope.participants.find(p => p.userId == $scope.a3.ownerUserId)\n if (owner) {\n $scope.selectedOwner = owner\n } else { // If not part of participants, we need to add user to list\n var currentOwner = $scope.allUsers.find(a => a.userId == $scope.a3.ownerUserId)\n $scope.participants.unshift(currentOwner)\n $scope.selectedOwner = currentOwner\n }\n } else {\n $scope.selectedOwner = {}\n } \n }\n\n function updateA3Data(a3) {\n updateMetaData(a3);\n $scope.selectedVersion = $scope.a3.versions[0];\n $scope.selectStep($scope.selectedVersion.steps[0]);\n if (!a3.a3Project) {\n $scope.a3Project = {\n estimatedEndDate: null,\n endDate: null,\n estimatedTotalCost: null,\n estimatedSavings: null,\n actualTotalCost: null,\n actualSavings: null,\n };\n } else {\n $scope.a3Project = $scope.a3.a3Project;\n if ($scope.a3Project.estimatedEndDate) {\n $scope.a3Project.estimatedEndDate = moment($scope.a3Project.estimatedEndDate).toDate();\n }\n if ($scope.a3Project.endDate) {\n $scope.a3Project.endDate = moment($scope.a3Project.endDate).toDate();\n }\n }\n }\n function getA3() {\n a3Service().get($scope.a3Id).then(function (a3) {\n\n a3.versions[0].steps = a3.versions[0].steps.filter(s => !s.isProjectInfo)\n \n $scope.a3 = a3;\n $scope.isPublic = !$scope.a3.isPrivate;\n updateA3Data(a3);\n $scope.attachmentCount = a3.attachmentCount;\n $scope.linkCount = a3.linkCount;\n calculateFileAndLinkCount();\n a3Service().getCategories().then(function (categories) {\n $scope.categories = categories;\n // Set selected category\n setSelectedCategory();\n });\n customerService.getAllUsers().then(function (users) {\n $scope.allUsers = users;\n setOwner();\n });\n checkFavorite();\n \n });\n }\n\n $scope.previousStep = function () {\n var currentIndex = $scope.selectedVersion.steps.indexOf($scope.currentStep);\n if (currentIndex > 0) {\n $scope.selectStep($scope.selectedVersion.steps[currentIndex - 1]);\n }\n }\n\n $scope.nextStep = function () {\n var currentIndex = $scope.selectedVersion.steps.indexOf($scope.currentStep);\n if ((currentIndex + 1) < $scope.selectedVersion.steps.length) {\n $scope.selectStep($scope.selectedVersion.steps[currentIndex + 1]);\n }\n }\n\n \n $scope.selectStep = function (step) {\n if (!step) return;\n // Set content\n $scope.currentStep = step;\n $scope.stepContent = step.content;\n isCurrentUserChangingStep = true;\n if (!$scope.canEdit) return;\n\n isCurrentUserChangingStep = false;\n // // Update comment count\n // updateCommentCount();\n setApproveButton(step.isApproved);\n\n // Set default font-size\n $('.note-editable').css('font-size', '14px');\n }\n\n function updateCommentCount(commentCount) {\n if (commentCount > 0) {\n $(\".chat-count-counter\").text(commentCount);\n $(\".chat-count-counter\").show();\n } else {\n $(\".chat-count-counter\").hide();\n }\n }\n\n $scope.delete = function () {\n var a3IdArray = [$scope.a3.id];\n a3Service().deleteA3s(a3IdArray).then(function () {\n $scope.publish(\"SendA3sDeleted\", a3IdArray);\n $state.go('A3', {}, { reload: false });\n });\n }\n\n\n $scope.ownerChanged = function (owner) {\n if (owner) {\n $scope.a3.ownerUserId = owner.userId;\n $scope.a3.owner = owner.firstName + \" \" + owner.lastName;\n $scope.a3.ownerDisplayName = owner.displayName;\n $scope.saveA3Metadata();\n } \n };\n\n $scope.categoryChanged = function (category) {\n $scope.a3.categoryId = category.id;\n $scope.saveA3Metadata();\n };\n\n $scope.statusChanged = function (status) {\n $scope.a3.status = status.statusDB;\n a3Service().updateA3Status($scope.a3Id, $scope.a3.status).then(function () {\n if($scope.a3.improvementSuggestionId){\n $translate(['COMMON_CANCEL', 'COMMON_UPDATE_STATUS', 'DASHBOARD_CHANGE_SUGGESTION_STATUS', 'A3_UPDATE_IMPROVEMENT_STATUS']).then(function (translations) {\n var modalOptions = {\n closeButtonText: translations.COMMON_CANCEL,\n actionButtonText: translations.COMMON_UPDATE_STATUS,\n headerText: translations.DASHBOARD_CHANGE_SUGGESTION_STATUS,\n bodyText: translations.A3_UPDATE_IMPROVEMENT_STATUS\n };\n \n modalService.showModal({}, modalOptions).then(function (result) {\n var improvementStatus = a3Service().getImprovementStatus($scope.a3.status);\n if(improvementStatus){\n var improvementStatus = {\n suggestionId:$scope.a3.improvementSuggestionId,\n status:improvementStatus\n };\n suggestionService().updateStatus(improvementStatus).then(function (result) {\n //$uibModalInstance.dismiss('cancel');\n });\n }\n \n });\n });\n }\n });\n };\n\n\n\n // DEVIATION\n $scope.isDeviation = function () {\n if ($scope.a3.deviationId) return true;\n return false;\n };\n $scope.openDeviation = function () {\n deviationService().get($scope.a3.deviationId).then(function (deviation) {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n templateUrl: 'fullDeviation.html',\n controller: 'fullDeviationController',\n windowClass: 'full-screen',\n resolve: {\n deviation: function () {\n return deviation;\n },\n activeTab: function () {\n return \"Info\";\n }\n }\n });\n });\n }\n\n // IMPROVEMENT\n $scope.isImprovementSuggestion = function () {\n if ($scope.a3.improvementSuggestionId) return true;\n return false;\n }\n $scope.openImprovementSuggestion = function () {\n var improvementsuggestionid = $scope.a3.improvementSuggestionId;\n suggestionService().get(improvementsuggestionid).then(function (suggestion) {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n templateUrl: 'fullImprovementInfoForm.html',\n controller: 'fullImprovementModalController',\n windowClass: 'fullSuggestion-modal-window',\n resolve: {\n suggestion: function () {\n return suggestion;\n },\n activeTab: function () {\n return \"Info\";\n }\n }\n });\n });\n }\n\n $scope.saveA3Metadata = function () {\n if (!$scope.a3.id) return;\n if ($scope.a3.title === \"\") {\n $scope.titlehaserror = true;\n return;\n }\n var metaData = {\n id: $scope.a3.id,\n assetId: $scope.a3.assetId,\n isPrivate: $scope.a3.isPrivate,\n ownerUserId: $scope.a3.ownerUserId,\n owner: $scope.a3.owner,\n ownerDisplayName: $scope.a3.ownerDisplayName,\n categoryId: $scope.a3.categoryId,\n status: $scope.a3.status,\n hasCustomizedGroup: $scope.a3.hasCustomizedGroup\n };\n a3Service().saveA3Metadata(metaData).then(function (savedA3) {\n generatePreview();\n });\n };\n\n $scope.preview = function () {\n\n if (!$scope.canEdit) {\n $state.go('a3PreviewDesigner', { id: $scope.a3.id, version: $scope.selectedVersion.version }, { reload: false });\n return;\n }\n if (!$scope.currentStep) return;\n $state.go('a3PreviewDesigner', { id: $scope.a3.id, version: $scope.selectedVersion.version }, { reload: false });\n\n }\n\n function setApproveButton(status) {\n if (status) {\n $('.approvestepbutton').hide();\n $('.approvedstepbutton').show();\n } else {\n $('.approvedstepbutton').hide();\n $('.approvestepbutton').show();;\n }\n }\n\n var commitChanges = function (id, content) {\n var stepContent = {\n id: id,\n content: content\n }\n a3Service().saveStep(stepContent).then(function (step) {\n });\n }\n\n var allowChanges = function () {\n $scope.anotherUserIsEditingStep = false;\n }\n // Debounce function so that save is called to often.\n $scope.commitChangesDebounced = debounce(commitChanges, 2000, false);\n $scope.generatePreviewDebounced = debounce(generatePreview, 10000, false);\n\n $scope.$on(\"$destroy\", function () {\n generatePreview();\n });\n\n function generatePreview() {\n let lang = \"en\"\n const up = getUserProfile()\n \n if (up.preferredLanguage) {\n lang = up.preferredLanguage\n }\n\n pdfService.previewA3($scope.selectedVersion.id, lang);\n\n }\n\n $scope.addToFavorites = function () {\n $scope.isStar = true;\n userPref.addA3ToFavorites($scope.a3Id, $scope.a3.title)\n }\n\n $scope.removeFromFavorites = function () {\n $scope.isStar = false\n userPref.removeA3FromFavorites($scope.a3Id)\n }\n\n function checkFavorite(){\n userPref.getA3Favorites().then(function (favorites) {\n if (!favorites || !Array.isArray(favorites))\n return\n \n favorites.forEach(a3fav => {\n if (!a3fav.id)\n return\n \n if(a3fav.id == $scope.a3Id){\n $scope.isStar = true\n }\n })\n })\n }\n\n\n // Button events\n $('.stepAttatchment').click(function (event) {\n alert(\"File attatchment - To be implemented\");\n\n range.insertNode(spn);\n });\n\n $('.approvestepbutton').click(function (event) {\n var newApprovedStatus = !$scope.currentStep.isApproved;\n var status = {\n a3Id: $scope.a3Id,\n isApproved: newApprovedStatus\n };\n a3Service().approveStep($scope.currentStep.id, status).then(function (approved) {\n $scope.currentStep.isApproved = approved.isApproved;\n setApproveButton(newApprovedStatus);\n });\n });\n $('.approvedstepbutton').click(function (event) {\n var newApprovedStatus = !$scope.currentStep.isApproved;\n\n var status = {\n a3Id: $scope.a3Id,\n isApproved: newApprovedStatus\n };\n\n a3Service().approveStep($scope.currentStep.id, status).then(function (approved) {\n setApproveButton(newApprovedStatus);\n });\n });\n\n $('.commmentButton').click(function (event) {\n $scope.showComments = !$scope.showComments;\n $scope.$apply();\n });\n\n\n $('.stepDescription').click(function (event) {\n var stepDescriptionId = 'A3_STEP_DESCRIPTION_' + $scope.currentStep.sortOrder;\n\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'a3StepDescriptionForm.html',\n controller: 'a3StepDescriptionModalController',\n resolve: {\n translationId: function () {\n return stepDescriptionId;\n }\n }\n });\n });\n }]);\n","import { getUserProfile } from \"@common/stores/userStore\"\nimport * as pdfService from \"@common/services/pdfService\"\n\nangular\n .module('DigiLean')\n .controller(\"a3previewController\", ['$scope', '$filter', '$uibModal', '$state', '$stateParams', '$translate', '$window', 'a3Service',\n function ($scope, $filter, $uibModal, $state, $stateParams, $translate, $window, a3Service) {\n\n $scope.a3Id = parseInt($stateParams.id);\n $scope.a3 = {};\n $scope.a3info = null;\n $scope.versionNumber = parseInt($stateParams.version);\n $scope.canEdit = false;\n $scope.width = 2338;\n $scope.height = 1654;\n $scope.zoom = 0.6;\n $scope.version = {};\n $scope.isAdminMode = false;\n $scope.defaultLayout = null;\n\n var w = angular.element($window);\n adjustZoom(w[0].innerWidth);\n w.bind('resize', function (event) {\n adjustZoom(event.currentTarget.window.innerWidth);\n scrollToTop();\n });\n\n\n function adjustZoom(windowWidth) {\n\n $scope.zoom = windowWidth / ($scope.width + 700);\n }\n\n\n function scrollToTop() {\n setTimeout(function () {\n var body = document.getElementsByTagName('body')[0];\n body.scrollTop = 0;\n }, 20);\n }\n\n\n\n $scope.save = function () {\n var a3infoWidget = $scope.widgets.filter(w => w.component == \"a3info\").length > 0;\n var layout = !a3infoWidget ? [$scope.a3info] : [];\n\n angular.forEach($scope.widgets, function (widget) {\n var stepLayout = {\n header: widget.title,\n component: widget.component,\n row: widget.row,\n col: widget.col,\n sizeX: widget.sizeX,\n sizeY: widget.sizeY,\n a3StepId: widget.a3StepId,\n a3VersionId: $scope.version.id,\n }\n layout.push(stepLayout);\n });\n a3Service().saveLayout($scope.version.id, layout).then(function () {\n $scope.print(true)\n });\n }\n\n a3Service().canEdit($scope.a3Id).then(function (canEdit) {\n $scope.hasEditRight = canEdit;\n $scope.canEdit = canEdit && $scope.isAdminMode;\n $scope.gridsterOptions = {\n margins: [25, 25],\n columns: 24,\n resizable: {\n enabled: $scope.canEdit,\n handles: ['n', 'e', 's', 'w', 'ne', 'se', 'sw', 'nw'],\n\n resize: function (event, element, widget) {\n var froalaEl = element.find(\"div.fr-view\");\n froalaEl.height(element.height() - 115);\n },\n stop: function (event, element, widget) {\n $scope.save();\n }\n },\n draggable: {\n enabled: $scope.canEdit, // whether dragging items is supported\n handle: 'h4.preview-header, div#a3info.drag-box, div.drag-box', // optional selector for drag handle\n stop: function (event, $element, widget) {\n $scope.save();\n }\n }\n };\n\n });\n\n function handleResizing() {\n $scope.widgets.forEach(w => {\n var widgetEl = $(\"#widget\" + w.id).find(\"#a3step\");\n\n var froalaEl = widgetEl.find(\"div.fr-view\");\n\n if (froalaEl.length > 0) {\n var height = widgetEl[0].clientHeight\n froalaEl.height(height - 115);\n }\n });\n }\n\n $scope.widgets = [];\n\n\n function defaultLayout(a3) {\n\n var stepsWithoutProjectInfo = $scope.version.steps.filter(f => !f.isProjectInfo);\n var layoutPositions = stepsWithoutProjectInfo.length;\n\n var version = $scope.version;\n angular.forEach($scope.version.steps, function (step, key) {\n step.selected = true;\n var stepType = \"a3step\";\n var model = step;\n if (step.isActionList && !step.isProjectInfo) {\n var actionPlan = {\n id: step.id,\n title: step.title,\n a3: a3,\n step: step\n }\n stepType = \"a3step-action-plan\";\n model = actionPlan;\n }\n if (step.isProjectInfo) {\n model = a3.project;\n stepType = 'cost';\n var cost = null;\n if (step.col && step.row)\n cost = getStepWidget(stepType, step, step.row, step.col, step.sizeX, step.sizeY);\n else\n cost = getStepWidget(stepType, step, [findMaxRow() + 10, 0, 24, 3]);\n $scope.widgets.push(cost);\n return;\n }\n\n $scope.widgets.push(getStepWidget(stepType, model, $scope.defaultLayout[layoutPositions - 1][key]));\n\n });\n $scope.a3info = getStepWidget(\"a3info\", a3, [0, 0, 24, 0]);\n $scope.widgets.push($scope.a3info);\n\n }\n\n a3Service().getDefaultLayout().then(function (result) {\n $scope.defaultLayout = result;\n a3Service().get($scope.a3Id).then(function (a3) {\n $scope.a3 = a3;\n $scope.version = $filter('filter')(a3.versions, { version: $scope.versionNumber })[0];\n\n $scope.version.steps.sort((a, b) => {\n return a.title.localeCompare(b.sortOrder);\n });\n\n a3Service().getVersion($scope.version.id).then(function (version) {\n if (version.layout.length === 0) {\n defaultLayout(a3);\n $scope.save();\n return;\n }\n\n $scope.a3info = getStepWidget(\"a3info\", a3, [0, 0, 24, 0]);\n\n angular.forEach(version.layout, function (widget, key) {\n // TODO need to resolve the correct step, maybe som database changes too....\n switch (widget.component) {\n\n case \"a3step\":\n widget.model = getStepForId(widget.a3StepId);\n break;\n case \"a3step-action-plan\":\n var step = getStepForId(widget.a3StepId);\n var actionPlan = {\n title: step.title,\n a3: a3,\n step: getStepForId(widget.a3StepId)\n }\n widget.model = actionPlan;\n break;\n case \"cost\":\n widget.model = a3.a3Project ? a3.a3Project : {};\n break;\n\n }\n\n $scope.widgets.push(widget);\n\n selectStep(true, widget);\n\n });\n\n scrollToTop();\n });\n });\n });\n\n function getStepForId(stepid) {\n var step = $filter('filter')($scope.version.steps, { id: stepid })[0];\n return step;\n }\n\n function getStepWidget(component, model, position) {\n model.versionNumber = $scope.versionNumber;\n var widget = {\n model: model,\n header: model.title,\n component: component,\n row: position[0],\n col: position[1],\n sizeX: position[2],\n sizeY: position[3],\n a3StepId: component !== \"a3info\" ? model.id : null\n }\n\n return widget;\n }\n\n var selectStep = function (selected, widget) {\n var stepFromCollection = $scope.version.steps.filter(x =>\n (widget.model && x.id === widget.model.id)\n || (widget.model && widget.model.step && x.id === widget.model.step.id)\n || x.isProjectInfo && widget.component === \"cost\")[0];\n if (stepFromCollection) {\n stepFromCollection.selected = selected;\n }\n }\n\n function findMaxRow() {\n var max = 0;\n $scope.widgets.forEach(x => {\n if (x.row > max)\n max = x.row;\n });\n return max;\n }\n\n $scope.remove = function (widget, databound) {\n let index = $scope.widgets.indexOf(widget);\n if (index >= 0) {\n $scope.widgets.splice(index, 1);\n $scope.save();\n if (!databound) {\n selectStep(false, widget);\n }\n }\n }\n\n $scope.onStepSelected = function (step, event) {\n if (step.selected) {\n if (step.isProjectInfo) {\n $scope.widgets.push(getStepWidget('cost', $scope.a3.project ? $scope.a3.project : {}, [findMaxRow() + 10, 0, 24, 2]));\n }\n else if (step.isActionList) {\n var actionPlan = {\n id: step.id,\n title: step.title,\n a3: $scope.a3,\n step: step\n }\n $scope.widgets.push(getStepWidget('a3step-action-plan', actionPlan, [findMaxRow() + 4, 0, 12, 4]));\n }\n else {\n $scope.widgets.push(getStepWidget('a3step', step, [findMaxRow() + 4, 0, 12, 4]));\n }\n $scope.save();\n }\n else {\n let widget = $scope.widgets.filter(x =>\n (x.model && step.id === x.model.id)\n || (x.model && x.model.step && step.id == x.model.step.id)\n || step.isProjectInfo && x.component === \"cost\")[0];\n $scope.remove(widget, true);\n }\n\n };\n\n $scope.print = function (previewOnly = false, format = 'default') {\n var lang = \"en\"\n const up = getUserProfile()\n if (up.preferredLanguage) {\n lang = up.preferredLanguage\n }\n // Replace . with - so filename is not corrupt in browser.\n var pdfTitle = $scope.a3.title.replace(/\\./g, '-') // Crazy stuff=>https://stackoverflow.com/questions/1967119/why-does-javascript-replace-only-first-instance-when-using-replace\n if (!previewOnly) {\n //$scope.save(); Don't understand why we need a new save in pdf generation\n\n var date = new Date();\n var offset = date.getTimezoneOffset()\n \n pdfService.saveA3($scope.version.id, lang, offset, format).then(function (res) {\n if (res.fileUrl) {\n window.open(res.fileUrl, \"_blank\")\n }\n }, () => {})\n }\n else {\n pdfService.previewA3($scope.version.id, lang);\n }\n\n }\n $scope.zoomIn = function () {\n $scope.zoom = $scope.zoom + 0.01;\n };\n $scope.zoomOut = function () {\n $scope.zoom = $scope.zoom - 0.01;\n };\n\n $scope.adminMode = function () {\n $scope.isAdminMode = true;\n $scope.canEdit = true;\n $scope.gridsterOptions.resizable.enabled = true;\n $scope.gridsterOptions.draggable.enabled = true;\n\n setTimeout(handleResizing, 0);\n\n };\n\n $scope.viewMode = function () {\n $scope.isAdminMode = false;\n $scope.canEdit = false;\n\n $scope.gridsterOptions.resizable.enabled = false;\n $scope.gridsterOptions.draggable.enabled = false;\n };\n $scope.clickGridsterItem = function (widget, e) {\n\n if (widget.component === 'a3info') {\n e.preventDefault();\n e.stopPropagation();\n\n }\n };\n\n\n }]);\n","import * as assetService from \"@common/services/assetService\"\n\nconst DigiLean = angular.module('DigiLean')\nDigiLean.controller('a3templatesController', ['$scope', '$translate', '$uibModal', '$state', 'a3templateService', 'modalService',\n function ($scope, $translate, $uibModal, $state, a3templateService, modalService) {\n $scope.templates = [];\n $scope.activeboards = [];\n\n\n $scope.subscribe(\"A3TemplateUpdated\", function (a3) {\n loadTemplates();\n });\n $scope.subscribe(\"A3TemplateDeleted\", function (a3) {\n loadTemplates();\n });\n $scope.subscribe(\"A3TemplateCreated\", function (a3) {\n loadTemplates();\n });\n $scope.subscribe(\"A3TemplateDownloaded\", function (a3) {\n loadTemplates();\n });\n var loadTemplates = function () {\n a3templateService().getList().then(function (templates) {\n $scope.templates = templates;\n });\n }\n\n $scope.delete = function (template) {\n $translate(['COMMON_CANCEL', 'COMMON_DELETE', 'A3_MESSAGE_DELETE_TEMPLATE_CONFIRMATION']).then(function (translations) {\n var modalOptions = {\n closeButtonText: translations.COMMON_CANCEL,\n actionButtonText: translations.COMMON_DELETE,\n headerText: translations.COMMON_DELETE + ' ' + template.name + '?',\n bodyText: translations.A3_MESSAGE_DELETE_TEMPLATE_CONFIRMATION\n };\n\n modalService.showModal({}, modalOptions).then(function (result) {\n a3templateService().deleteTemplate(template.id).then(function (data) {\n $state.go('a3templates');\n // publish event\n $scope.publish(\"SendA3TemplateDeleted\", template.id);\n });\n });\n\n });\n }\n $scope.addTemplate = function () {\n var template = {\n name: $translate.instant('COMMON_CHANGE_NAME')\n }\n a3templateService().addTemplate(template).then(function (template) {\n\n $state.go('a3designer', { id: template.id }, { reload: false });\n $scope.publish(\"SendA3TemplateCreated\", template);\n });\n\n }\n\n\n $scope.openDesigner = function (template) {\n $state.go('a3designer', { id: template.id }, { reload: false });\n }\n\n\n function initialize() {\n assetService.getList().then(function (assets) {\n $scope.assets = assets;\n loadTemplates();\n });\n\n }\n\n initialize();\n\n $scope.openTemplateStore = function () {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n templateUrl: 'a3templateStore.html',\n controller: 'a3templateStore',\n windowClass: 'newdeviation-modal-window',\n resolve: {\n // deviation: function () {\n // return deviation;\n // },\n // activeTab: function () {\n // return \"Info\";\n // }\n }\n });\n\n }\n\n }]);","import toaster from \"@common/components/toast\"\n\nangular\n .module('DigiLean')\n .controller(\"a3templateLayoutController\", ['$scope', '$filter', '$uibModal', '$state', '$stateParams', '$translate', '$window', 'a3templateService', 'a3Service',\n function ($scope, $filter, $uibModal, $state, $stateParams, $translate, $window, a3templateService, a3Service) {\n\n $scope.a3templateId = parseInt($stateParams.id);\n $scope.a3info = null;\n $scope.versionNumber = parseInt($stateParams.version);\n $scope.canEdit = false;\n $scope.width = 2338;\n $scope.height = 1654;\n $scope.zoom = 0.6;\n $scope.version = {};\n $scope.isAdminMode = false;\n $scope.defaultLayout = null;\n\n\n function loadTemplate() {\n a3templateService().get($scope.a3templateId).then(function (template) {\n $scope.template = template;\n $scope.widgets = [];\n var withoutProjectInfo = $scope.template.steps.filter(s => !s.isProjectInfo);\n var layout = $scope.defaultLayout[withoutProjectInfo.length - 1];\n\n $scope.a3info = getStepWidget(\"a3info-template\", template, [0, 0, 24, 0]);\n var info = {\n component: 'a3info-template',\n name: 'A3 Info',\n model: template.id,\n sizeY: 0\n };\n\n var widgets = [];\n widgets.push(info);\n var stepIndex = 0;\n $scope.template.steps.forEach(step => {\n var widget = {\n component: \"a3step-template\",\n model: {\n id: step.id,\n style: step.style,\n name: step.name,\n content: step.defaultContent\n },\n row: step.row != null ? step.row : layout[stepIndex][0],\n col: step.col != null ? step.col : layout[stepIndex][1],\n sizeX: step.sizeX != null ? step.sizeX : layout[stepIndex][2],\n sizeY: step.sizeY != null ? step.sizeY : layout[stepIndex][3]\n };\n\n if (step.isProjectInfo) {\n widget.component = \"cost-widget\";\n }\n else {\n stepIndex++\n }\n\n widgets.push(widget);\n\n selectStep(true, widget);\n\n });\n $scope.widgets = widgets;\n });\n }\n\n\n a3Service().getDefaultLayout().then(function (result) {\n $scope.defaultLayout = result;\n loadTemplate();\n });\n\n\n var w = angular.element($window);\n adjustZoom(w[0].innerWidth);\n w.bind('resize', function (event) {\n adjustZoom(event.currentTarget.window.innerWidth)\n });\n\n function adjustZoom(windowWidth) {\n\n $scope.zoom = windowWidth / ($scope.width + 700);\n }\n\n $scope.save = function () {\n // \n var layout = [];\n angular.forEach($scope.widgets, function (widget) {\n\n $scope.template.steps.forEach(x => {\n if (x.id == widget.model.id) {\n x.col = widget.col;\n x.row = widget.row;\n x.sizeX = widget.sizeX;\n x.sizeY = widget.sizeY;\n x.model = null;\n }\n });\n\n });\n a3templateService().saveLayout($scope.a3templateId, $scope.template.steps).then(function () {\n toaster.success(\"Layout saved\");\n });\n\n }\n\n $scope.gridsterOptions = {\n margins: [25, 25],\n columns: 24,\n resizable: {\n enabled: true,\n handles: ['n', 'e', 's', 'w', 'ne', 'se', 'sw', 'nw'],\n\n stop: function (event, element, widget) {\n $scope.save();\n }\n },\n draggable: {\n enabled: true, // whether dragging items is supported\n // handle: 'h4.preview-header, div#a3info.drag-box, div.drag-box', // optional selector for drag handle\n stop: function (event, $element, widget) {\n $scope.save();\n }\n }\n };\n\n function handleResizing() {\n $scope.widgets.forEach(w => {\n var widgetEl = $(\"#widget\" + w.id).find(\"#a3step\");\n\n var froalaEl = widgetEl.find(\"div.fr-view\");\n\n if (froalaEl.length > 0) {\n var height = widgetEl[0].clientHeight\n froalaEl.height(height - 115);\n }\n });\n }\n\n $scope.widgets = [];\n\n function defaultLayout(a3) {\n\n var layoutPositions = $scope.version.steps.length;\n\n angular.forEach($scope.version.steps, function (step, key) {\n step.selected = true;\n var stepType = \"a3step\";\n var model = step;\n\n if (step.component === 'cost-widget') {\n model = a3.a3Project;\n stepType = 'cost-widget';\n $scope.widgets.push(getStepWidget(stepType, step, [13, 0, 24, 3]));\n return;\n }\n\n $scope.widgets.push(getStepWidget(stepType, model, $scope.defaultLayout[layoutPositions][key]));\n\n });\n $scope.a3info = getStepWidget(\"a3info-template\", a3, [0, 0, 24, 0]);\n $scope.widgets.push($scope.a3info);\n\n }\n\n\n\n function getStepForId(stepid) {\n var step = $filter('filter')($scope.template.steps, { id: stepid })[0];\n return step;\n }\n\n function getStepWidget(component, model, position) {\n model.versionNumber = $scope.versionNumber;\n var widget = {\n model: model,\n header: model.name,\n component: component,\n row: position[0],\n col: position[1],\n sizeX: position[2],\n sizeY: position[3],\n a3StepId: model.id\n }\n if (component === \"a3info-template\" || component === \"cost-widget\") { // a3info and cost is not linked to step so we need to set it to null\n widget.a3StepId = null;\n }\n return widget;\n }\n\n var selectStep = function (selected, widget) {\n var stepFromCollection = $scope.template.steps.filter(x =>\n (widget.model && x.id === widget.model.id)\n || (widget.model && widget.model.step && x.id === widget.model.step.id)\n || x.component === widget.component)[0];\n if (stepFromCollection) {\n stepFromCollection.selected = selected;\n }\n }\n\n function findMaxRow() {\n var max = 0;\n $scope.widgets.forEach(x => {\n if (x.row > max)\n max = x.row;\n });\n return max;\n }\n\n $scope.zoomIn = function () {\n $scope.zoom = $scope.zoom + 0.01;\n };\n $scope.zoomOut = function () {\n $scope.zoom = $scope.zoom - 0.01;\n };\n\n\n $scope.clickGridsterItem = function (widget, e) {\n\n if (widget.component === 'a3info-template') {\n e.preventDefault();\n e.stopPropagation();\n\n }\n };\n\n $scope.navigateToDesigner = function () {\n $state.go('a3designer', { id: $scope.a3templateId });\n }\n\n\n }]);\n\n","import { getCompanySetting } from \"@common/stores/companySettingsStore\"\nimport * as customerService from \"@common/services/customers/customerService\"\nimport * as timeService from \"@common/services/timeService\"\n\nvar DigiLean = angular.module('DigiLean');\nDigiLean.controller('benefitsRealizationController', ['$scope', '$filter', '$translate', 'NgTableParams', 'a3Service','suggestionService',\n function ($scope, $filter, $translate, NgTableParams, a3Service,suggestionService) {\n \n $scope.timeframe = \"thisyear\";\n $scope.estimatedtimeframe = \"thisyear\";\n $scope.timePeriod = timeService.getTimePeriod($scope.timeframe);\n $scope.estimatedtimePeriod = timeService.getTimePeriod($scope.estimatedtimeframe);\n\n $scope.realized = 0;\n $scope.estimated = 0;\n\n $scope.options = {\n timePeriod: {\n timeframe: \"thisyear\",\n useDefaultTimeframes: true,\n timeframes:[]\n }\n };\n $scope.periodChangedHandler = function (timePeriod) {\n $scope.timePeriod = timePeriod.period;\n $scope.timeframe = timePeriod.timeframe;\n getData();\n }\n\n $scope.estimatedoptions = {\n timePeriod: {\n timeframe: \"thisyear\",\n useDefaultTimeframes: true,\n timeframes:[]\n }\n };\n $scope.estimatedperiodChangedHandler = function (timePeriod) {\n $scope.estimatedtimePeriod = timePeriod.period;\n $scope.estimatedtimeframe = timePeriod.timeframe;\n getEstimated();\n }\n\n $scope.currency = customerService.getDefaultCurrency(); \n getCompanySetting(\"currency\").then(function (setting) {\n if (setting) {\n $scope.currency = setting\n }\n getData();\n getEstimated();\n });\n \n function getData(){\n suggestionService().getRealization($scope.timePeriod).then(function (result) {\n if(result){\n $scope.realized = result;\n } else {\n $scope.realized = 0;\n }\n });\n }\n\n function getEstimated(){\n suggestionService().getEstimatedInitiatives($scope.estimatedtimePeriod).then(function (result) {\n if(result){\n $scope.estimated = result;\n } else {\n $scope.estimated = 0;\n }\n });\n }\n \n \n \n \n a3Service().getProjectInfoForA3s().then(function (a3s) {\n angular.forEach(a3s, function (a3) {\n a3.statusorder = getStatusOrder(a3.status);\n checkMilestones(a3);\n calculateRealization(a3);\n })\n $scope.tableParams = new NgTableParams({}, { dataset: a3s });\n });\n\n function calculateRealization(a3) {\n if (a3.estimatedSavings && a3.estimatedTotalCost) {\n a3.estimated = a3.estimatedSavings - a3.estimatedTotalCost;\n }\n if (a3.actualSavings && a3.actualTotalCost) {\n a3.realized = a3.actualSavings - a3.actualTotalCost;\n }\n }\n\n function checkMilestones(a3) {\n if (a3.milestones && a3.milestones.length > 0) {\n a3.milestoneMissed = false;\n for (var i = 0; i < a3.milestones.length; i++) {\n if (a3.milestones[i].actualDate) {\n a3.milestones[i].status = \"completed\";\n } else if (a3.milestones[i].plannedDate) {\n //check if overdue/missed\n var duration = moment.duration(moment().diff(moment(a3.milestones[i].plannedDate)));\n var days = duration.asDays();\n if (days > 1) {\n a3.milestones[i].status = \"missed\";\n a3.milestoneMissed = true;\n } else {\n a3.milestones[i].status = \"future\";\n }\n }\n }\n }\n }\n\n $translate(['COMMON_TITLE', 'COMMON_STATUS']).then(function (translations) {\n $scope.translatedTitle = translations.COMMON_TITLE;\n $scope.translatedStatus = translations.COMMON_STATUS;\n });\n $scope.$on('$translateChangeSuccess', function () {\n $scope.translatedTitle = $translate.instant('COMMON_TITLE');\n $scope.translatedStatus = $translate.instant('COMMON_STATUS');\n });\n $scope.translatedTitel = [\n { id: \"text\", label: \"Small text\", languageCode: \"ADMIN_DATA_DATASOURCE_SMALLTEXT\" },\n { id: \"description\", label: \"Larger text\", languageCode: \"ADMIN_DATA_DATASOURCE_LARGERTEXT\", sourceColumn: \"description\" },\n { id: \"number\", label: \"Number\", languageCode: \"ADMIN_DATA_DATASOURCE_NUMBER\" },\n { id: \"bool\", label: \"Boolean\", languageCode: \"ADMIN_DATA_DATASOURCE_BOOLEAN\" },\n { id: \"asset\", label: \"Asset\", languageCode: \"COMMON_ASSET\", sourceColumn: \"assetId\" },\n { id: \"area\", label: \"Area\", languageCode: \"COMMON_AREA\", sourceColumn: \"areaId\" },\n { id: \"project\", label: \"Project\", languageCode: \"COMMON_PROJECT\", sourceColumn: \"projectId\" },\n ];\n\n $scope.toggleShowMilestone = function (a3) {\n a3.showMilestone = !a3.showMilestone;\n };\n\n function getStatusOrder(dbstatus) {\n switch (dbstatus) {\n case \"New\":\n return 1;\n case \"Plan\":\n return 2;\n case \"Do\":\n return 3;\n case \"Check\":\n return 4;\n case \"Act\":\n return 5;\n case \"Closed\":\n return 6;\n default:\n return 0;\n }\n }\n\n //$scope.tableParams = new NgTableParams({}, { dataset: a3}); \n\n }]);\n\n","import * as timeService from \"@common/services/timeService\"\n\nvar DigiLean = angular.module('DigiLean');\nDigiLean.controller('timeBenefitsRealizationController', ['$scope', '$filter', '$translate', 'NgTableParams', 'a3Service','suggestionService',\n function ($scope, $filter, $translate, NgTableParams, a3Service,suggestionService) {\n \n $scope.timeframe = \"thisyear\";\n $scope.estimatedtimeframe = \"thisyear\";\n $scope.timePeriod = timeService.getTimePeriod($scope.timeframe);\n $scope.estimatedtimePeriod = timeService.getTimePeriod($scope.estimatedtimeframe);\n $scope.realized = 0;\n $scope.estimated = 0;\n\n $scope.options = {\n timePeriod: {\n timeframe: \"thisyear\",\n useDefaultTimeframes: true,\n timeframes:[]\n }\n };\n $scope.periodChangedHandler = function (timePeriod) {\n $scope.timePeriod = timePeriod.period;\n $scope.timeframe = timePeriod.timeframe;\n getData();\n }\n\n $scope.estimatedoptions = {\n timePeriod: {\n timeframe: \"thisyear\",\n useDefaultTimeframes: true,\n timeframes:[]\n }\n };\n $scope.estimatedperiodChangedHandler = function (timePeriod) {\n $scope.estimatedtimePeriod = timePeriod.period;\n $scope.estimatedtimeframe = timePeriod.timeframe;\n getEstimated();\n }\n\n getData();\n getEstimated();\n \n function getData(){\n suggestionService().getTimeRealization($scope.timePeriod).then(function (result) {\n if(result){\n $scope.realized = result;\n } else {\n $scope.realized = 0;\n }\n });\n }\n\n function getEstimated(){\n suggestionService().getTimeEstimatedInitiatives($scope.estimatedtimePeriod).then(function (result) {\n if(result){\n $scope.estimated = result;\n } else {\n $scope.estimated = 0;\n }\n });\n }\n \n \n \n \n a3Service().getProjectInfoForA3s().then(function (a3s) {\n angular.forEach(a3s, function (a3) {\n a3.statusorder = getStatusOrder(a3.status);\n checkMilestones(a3);\n calculateRealization(a3);\n })\n $scope.tableParams = new NgTableParams({}, { dataset: a3s });\n });\n\n function calculateRealization(a3) {\n if (a3.estimatedSavings && a3.estimatedTotalCost) {\n a3.estimated = a3.estimatedSavings - a3.estimatedTotalCost;\n }\n if (a3.actualSavings && a3.actualTotalCost) {\n a3.realized = a3.actualSavings - a3.actualTotalCost;\n }\n }\n\n function checkMilestones(a3) {\n if (a3.milestones && a3.milestones.length > 0) {\n a3.milestoneMissed = false;\n for (var i = 0; i < a3.milestones.length; i++) {\n if (a3.milestones[i].actualDate) {\n a3.milestones[i].status = \"completed\";\n } else if (a3.milestones[i].plannedDate) {\n //check if overdue/missed\n var duration = moment.duration(moment().diff(moment(a3.milestones[i].plannedDate)));\n var days = duration.asDays();\n if (days > 1) {\n a3.milestones[i].status = \"missed\";\n a3.milestoneMissed = true;\n } else {\n a3.milestones[i].status = \"future\";\n }\n }\n }\n }\n }\n\n $translate(['COMMON_TITLE', 'COMMON_STATUS']).then(function (translations) {\n $scope.translatedTitle = translations.COMMON_TITLE;\n $scope.translatedStatus = translations.COMMON_STATUS;\n });\n $scope.$on('$translateChangeSuccess', function () {\n $scope.translatedTitle = $translate.instant('COMMON_TITLE');\n $scope.translatedStatus = $translate.instant('COMMON_STATUS');\n });\n $scope.translatedTitel = [\n { id: \"text\", label: \"Small text\", languageCode: \"ADMIN_DATA_DATASOURCE_SMALLTEXT\" },\n { id: \"description\", label: \"Larger text\", languageCode: \"ADMIN_DATA_DATASOURCE_LARGERTEXT\", sourceColumn: \"description\" },\n { id: \"number\", label: \"Number\", languageCode: \"ADMIN_DATA_DATASOURCE_NUMBER\" },\n { id: \"bool\", label: \"Boolean\", languageCode: \"ADMIN_DATA_DATASOURCE_BOOLEAN\" },\n { id: \"asset\", label: \"Asset\", languageCode: \"COMMON_ASSET\", sourceColumn: \"assetId\" },\n { id: \"area\", label: \"Area\", languageCode: \"COMMON_AREA\", sourceColumn: \"areaId\" },\n { id: \"project\", label: \"Project\", languageCode: \"COMMON_PROJECT\", sourceColumn: \"projectId\" },\n ];\n\n $scope.toggleShowMilestone = function (a3) {\n a3.showMilestone = !a3.showMilestone;\n };\n\n function getStatusOrder(dbstatus) {\n switch (dbstatus) {\n case \"New\":\n return 1;\n case \"Plan\":\n return 2;\n case \"Do\":\n return 3;\n case \"Check\":\n return 4;\n case \"Act\":\n return 5;\n case \"Closed\":\n return 6;\n default:\n return 0;\n }\n }\n\n //$scope.tableParams = new NgTableParams({}, { dataset: a3}); \n\n }]);\n\n","import envConfig from \"@common/envConfig\";\n\nangular.module('DigiLean').factory('actionlistService', ['$rootScope', '$http', '$translate',\n function ($rootScope, $http, $translate) {\n\n function actionlistService(){\n var resource = \"/actionlist\";\n var resourceUrl = envConfig.webApiUrl + resource;\n return {\n getActionTasks: function(actionTaskQuery) {\n var url = resourceUrl + \"/getActionTasks\";\n return $http.post(url, actionTaskQuery).then(function (result) {\n return result.data;\n });\n },\n getTaskDateStyle: function (task) {\n if (!task.boardDate) return \"\";\n // Overdue check\n \n var overdue = \"\";\n var duration = moment.duration(moment().diff(moment(task.boardDate)));\n var days = duration.asDays();\n if (days > 1 && task.status.toUpperCase() !== \"OK\") {\n overdue = \"overdue\";\n }\n return overdue;\n },\n\n\n createDevationActionItem: function (deviationId, action) {\n var url = resourceUrl + \"/CreateDeviationActionItem/\" + deviationId;\n return $http.post(url, action).then(function (result) {\n return result.data;\n });\n },\n\n createImprovementActionItem: function (suggestionId, action) {\n var url = resourceUrl + \"/CreateImprovementActionItem/\" + suggestionId;\n return $http.post(url, action).then(function (result) {\n return result.data;\n });\n },\n\n getActionListForDeviation: function (deviationId) {\n var url = resourceUrl + \"/getActionListForDeviation/\" + deviationId;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n\n getActionListForImprovementSuggestion: function (suggestionId) {\n var url = resourceUrl + \"/GetActionListForImprovementSuggestion/\" + suggestionId;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n\n deleteActionItem: function (id) {\n var url = resourceUrl + \"/DeleteActionItem/\" + id;\n return $http.delete(url).then(function (result) {\n return result.data;\n });\n },\n\n updateItemDescription: function (itemId, taskDescription) {\n var url = resourceUrl + \"/updateItemDescription/\" + itemId;\n return $http.put(url, taskDescription).then(function (result) {\n return result.data;\n });\n },\n\n updateItemActionDate: function (actionDate) {\n var url = resourceUrl + \"/UpdateActionDate/\" + actionDate.taskId;\n return $http.put(url, actionDate).then(function (result) {\n return result.data;\n });\n },\n\n assignActionListItemUser: function (itemId, user) {\n var url = resourceUrl + \"/assignActionListItemUser/\" + itemId;\n return $http.put(url, user).then(function (result) {\n return result.data;\n });\n },\n\n updateStatus: function (status) {\n var url = resourceUrl + \"/updateStatus/\" + status.taskId;\n return $http.put(url, status).then(function (result) {\n return result.data;\n });\n }\n }\n }\n return actionlistService;\n }]);","import toaster from \"@common/components/toast\"\n\nangular.module('DigiLean').controller('areaAdmin', ['$scope', '$translate', 'areaService','modalService',\n function ($scope, $translate,areaService, modalService) {\n $scope.removeItem= function (item) {\n $translate(['COMMON_CANCEL', 'COMMON_DELETE', 'ADMIN_MESSAGE_DELETE_AREA_CONFIRMATION']).then(function (translations) {\n var modalOptions = {\n closeButtonText: translations.COMMON_CANCEL,\n actionButtonText: translations.COMMON_DELETE,\n headerText: translations.COMMON_DELETE + ' ' + item.name + '?',\n bodyText: translations.ADMIN_MESSAGE_DELETE_AREA_CONFIRMATION \n };\n\n modalService.showModal({}, modalOptions).then(function (result) {\n areaService().delete(item.id).then(function (data) { \n var index = $scope.areas.indexOf(item);\n $scope.areas.splice(index, 1);\n $translate('ADMIN_MESSAGE_AREA_DELETED').then(function (msg) {\n toaster.info(msg); \n }, function (translationId) {\n $scope.headline = translationId;\n });\n },function (err) {\n });\n });\n });\n }\n\n $scope.setItemViewMode = function (item) {\n item.isEditMode = false;\n }\n $scope.setItemEditMode = function (item) {\n item.isEditMode = true;\n }\n\n $scope.addItem = function () {\n var item = {\n isNew: true,\n id: 0,\n name: \"\",\n description: \"\"\n }\n areaService().add(item).then(function (savedItem) {\n $translate('ADMIN_MESSAGE_AREA_ADDED').then(function (msg) {\n toaster.success(msg);\n }, function (translationId) {\n $scope.headline = translationId;\n });\n savedItem.isEditMode = true;\n $scope.areas.push(savedItem);\n setTimeout(function () {\n $(\".project-name\").focus();\n }, 50);\n });\n }\n\n $scope.area = [];\n var load = function () {\n areaService().getList().then(function (areas) {\n $scope.areas = areas;\n });\n }\n load();\n\n $scope.saveItem = function (item) {\n areaService().update(item).then(function () {\n $translate('ADMIN_MESSAGE_AREA_MODIFIED').then(function (msg) {\n toaster.success(msg);\n }, function (translationId) {\n $scope.headline = translationId;\n });\n }); \n }\n\n }]);","import angular from \"angular\"\nimport * as apiClientsService from \"./apiClientsService\"\nimport { NgComponent } from \"@common/model/angularModel\"\n\nconst DigiLean = angular.module('DigiLean')\nDigiLean.component('apiClients', {\n templateUrl: \"apiClients.html\",\n controller: ['$uibModal',\n function(this: NgComponent, $uibModal) {\n let $ctrl = this\n $ctrl.noAccess = true\n $ctrl.clients = []\n\n async function getList() {\n try {\n const clients = await apiClientsService.getClientList()\n $ctrl.clients = clients\n $ctrl.noAccess = false\n }\n catch (err) {\n console.log(err)\n $ctrl.noAccess = true\n }\n }\n\n\n $ctrl.addClient = () => {\n const modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'newApiClientForm.html',\n controller: 'newApiClientController',\n resolve: {\n client: function () {\n return {\n id: 0,\n customerId: 0,\n }\n }\n }\n })\n modalInstance.result.then((newClient) => {\n apiClientsService.createClient(newClient).then(client => {\n getList()\n })\n }, () => {})\n }\n\n $ctrl.editClient = async (clientId) => {\n const clientToEdit = await apiClientsService.getClient(clientId)\n const modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'editApiClientForm.html',\n controller: 'editApiClientController',\n resolve: { client: () => clientToEdit }\n })\n modalInstance.result.then((client) => {\n \n console.log(`edited ${client.clientId}, name ${client.clientName}`)\n getList()\n \n }, () => {})\n }\n\n $ctrl.$onInit = function() {\n console.log(\"init\")\n getList()\n }\n \n }\n ]\n})","import { createGuid } from \"@common/services/helperFunctions\"\n\nangular\n .module('DigiLean')\n .controller(\"newApiClientController\", ['$scope', '$uibModalInstance', 'client',\n function ($scope, $uibModalInstance, client) {\n\n $scope.client = client\n $scope.client.clientId = createGuid()\n\n $scope.ok = function () {\n console.log(\"ok\")\n $uibModalInstance.close($scope.client)\n }\n\n $scope.close = function () {\n $uibModalInstance.dismiss('cancel')\n }\n\n $scope.onCustomerChange = function($event) {\n const customer = $event.detail\n $scope.client.customerId = customer.id\n }\n \n }])\n","import type { CustomerListModel, PublicApiClientViewModel, PublicApiGeneratedSecretViewModel } from \"@api\"\nimport { DigiLeanNgScope } from \"@common/model/angularModel\"\nimport angular from \"angular\"\nimport * as apiClientsService from \"./apiClientsService\"\nimport dialog from \"@common/components/digilean/DigileanDialog\"\nimport * as customerService from \"@common/services/customers/customerService\"\nimport { cloneDeep } from \"lodash\"\n\ninterface IApiClientScope extends DigiLeanNgScope {\n client: PublicApiClientViewModel\n indexTab: number\n newSecret: PublicApiGeneratedSecretViewModel\n customers: CustomerListModel[]\n customerSelected: CustomerListModel \n selectedCustomerChanged: (customer: CustomerListModel) => void\n selectTab: (tabIndex: number) => void\n generateNewSecret: () => void\n expireSecret: (secretId: number) => void\n ok: () => void\n close: () => void\n changeScopesDialog: () => void\n}\n\nangular\n .module('DigiLean')\n .controller(\"editApiClientController\", ['$scope', '$uibModalInstance', 'client', 'modalService',\n function ($scope: IApiClientScope, $uibModalInstance, client: PublicApiClientViewModel, modalService) {\n\n \n $scope.client = client\n\n $scope.customerSelected = {}\n if (client.customerId)\n $scope.customerSelected = {id: client.customerId, name: client.customerName}\n\n $scope.ok = function () {\n apiClientsService.saveClient($scope.client).then(client => {\n console.log(client)\n })\n $uibModalInstance.close($scope.client);\n }\n\n $scope.close = () => {\n $uibModalInstance.dismiss('cancel')\n }\n\n $scope.indexTab = 0\n $scope.selectTab = (tabIndex: number) => {\n $scope.indexTab = tabIndex\n }\n\n $scope.newSecret = {}\n $scope.generateNewSecret = () => {\n apiClientsService.generateSecret($scope.client.clientId!).then(secret => {\n $scope.newSecret = secret\n })\n }\n\n $scope.expireSecret = (secretId: number) => {\n const modalOptions = {\n closeButtonText: \"cancel\",\n actionButtonText: \"delete\",\n headerText: \"confirm retire secret secret\",\n bodyText: \"The secret will now be marked as expired and not work any more\"\n }\n\n modalService.showModal({}, modalOptions).then(() => {\n apiClientsService.expireSecret($scope.client.clientId!, secretId).then(client => {\n $scope.client = client\n })\n }, () => {})\n }\n \n $scope.selectedCustomerChanged = function(customer: CustomerListModel) {\n $scope.client.customerId = customer.id\n }\n $scope.customers = []\n function getCustomers() {\n customerService.getCustomersSimpleForAdmin().then((customers) => {\n $scope.customers = customers\n })\n }\n getCustomers()\n \n $scope.changeScopesDialog = async function() {\n let scopes = structuredClone(client.allowedScopes)\n const scopesDialog = document.createElement(\"api-scopes-dialog\")\n scopesDialog.clientScopes = scopes\n const scopesChange = ((e: CustomEvent) => {\n scopes = e.detail.scopes\n }) as EventListener\n scopesDialog.addEventListener(\"api-scopes-changed\", scopesChange)\n const res = await dialog.openElement({title: \"Scopes\"}, scopesDialog)\n if (res && scopes) {\n client.allowedScopes = scopes\n await apiClientsService.updateScopes(client.clientId!, scopes)\n }\n scopesDialog.removeEventListener(\"api-scopes-changed\", scopesChange)\n }\n }])\n","import { AssetBusinessTree } from \"@api\"\n\nexport function reloadWithCollapsedState(updatedAssetTree: AssetBusinessTree[], currentAssetTree: AssetBusinessTree[]) {\n const updatedCollapsed = updatedAssetTree.map(at => {\n findAndMapCollapsed(at, currentAssetTree)\n if (at.children && at.children.length > 0) {\n for (const child of at.children)\n findAndMapCollapsed(child, currentAssetTree)\n }\n return at\n })\n return updatedCollapsed\n}\n\nfunction findAndMapCollapsed(at: AssetBusinessTree, currentAssetTree: AssetBusinessTree[]) {\n if (!at.item)\n return at\n const id = at.item.id!\n const assetCurrent = findCurrentAssetTreeById(id, currentAssetTree)\n if (assetCurrent)\n at.isCollapsed = assetCurrent.isCollapsed\n return at\n}\n\nfunction findCurrentAssetTreeById(id: number, tree: AssetBusinessTree[]) {\n for (const at of tree) {\n if (at.item?.id == id)\n return at\n if (at.children && at.children.length > 0) {\n const foundInChildren = findCurrentAssetTreeById(id, at.children)\n if (foundInChildren)\n return foundInChildren\n }\n }\n}","import toaster from \"@common/components/toast\"\n\nangular.module('DigiLean').controller('contactlist', ['$scope', '$translate', 'contactlistService','modalService',\nfunction ($scope, $translate,contactlistService, modalService) {\n\n\n $scope.removeItem= function (item) {\n $translate(['COMMON_CANCEL', 'COMMON_DELETE', 'ADMIN_MESSAGE_DELETE_CONTACT_CONFIRMATION']).then(function (translations) {\n var modalOptions = {\n closeButtonText: translations.COMMON_CANCEL,\n actionButtonText: translations.COMMON_DELETE,\n headerText: translations.COMMON_DELETE + ' ' + item.firstName + ' ' + item.lastName + '?',\n bodyText: translations.ADMIN_MESSAGE_DELETE_CONTACT_CONFIRMATION \n };\n\n modalService.showModal({}, modalOptions).then(function (result) {\n contactlistService().delete(item.id).then(function (data) { \n var index = $scope.items.indexOf(item);\n $scope.items.splice(index, 1);\n $translate('ADMIN_MESSAGE_CONTACT_DELETED').then(function (msg) {\n toaster.info(msg); \n }, function (translationId) {\n $scope.headline = translationId;\n });\n },function (err) {\n });\n });\n });\n }\n\n $scope.setItemViewMode = function (item) {\n item.isEditMode = false;\n }\n $scope.setItemEditMode = function (item) {\n item.isEditMode = true;\n }\n\n $scope.addItem = function () {\n var item = {\n id: 0,\n firstName: \"\",\n lastName: \"\",\n title: \"\",\n email: \"\",\n phoneNumber: \"\",\n companyName: \"\"\n }\n contactlistService().add(item).then(function (savedItem) {\n $translate('ADMIN_MESSAGE_CONTACT_ADDED').then(function (msg) {\n toaster.success(msg);\n }, function (translationId) {\n $scope.headline = translationId;\n });\n savedItem.isEditMode = true;\n $scope.items.push(savedItem);\n setTimeout(function () {\n $(\".project-name\").focus();\n }, 50);\n });\n }\n\n $scope.items = [];\n var load = function () {\n contactlistService().getList().then(function (items) {\n $scope.items = items;\n });\n }\n load();\n\n $scope.saveItem = function (item) {\n contactlistService().update(item).then(function () {\n }); \n }\n\n}]);","import { Asset, AssetBusinessTree, AssetBusinessUnit, AssetLeaf, AssetUser, GroupType } from \"@api\"\nimport dialog from \"@common/components/digilean/DigileanDialog\"\nimport * as customerService from \"@common/services/customers/customerService\"\nimport angular from \"angular\"\nimport type { DigiLeanNgScope } from \"@common/model/angularModel\"\nimport * as assetService from \"@common/services/assetService\"\nimport { reloadWithCollapsedState } from \"./assetsHelper\"\nimport { cloneDeep } from \"lodash\"\nimport { getUserProfile } from \"@common/stores/userStore\"\n\ninterface IRegistrationAsset extends AssetBusinessUnit {\n isNewAsset?: boolean\n}\n\ninterface IAssetsController extends DigiLeanNgScope {\n registration: IRegistrationAsset\n headline: string\n message: string\n customer: string\n assetsTree: AssetBusinessTree[]\n \n newAsset: boolean\n usersWithNoAssets: AssetUser[]\n showUsersWithNoAssets: boolean\n isLoading: boolean\n animationsEnabled: boolean\n treeOptions: any\n\n openAssetParticipantsForEdit: (assetId: number) => void\n openAccessForEdit: (user: AssetUser) => void\n toogleUsersWithNoAssets: () => void\n assetChangeHandler: (assetinfo: any) => void\n createNewAsset: () => void\n delete: (asset: Asset) => void\n edit: (assetTree: AssetBusinessTree) => void\n save: () => void\n} \n\nconst DigiLean = angular.module('DigiLean')\nDigiLean.controller('assetsController', ['$scope', '$uibModal','authService',\n function ($scope: IAssetsController, $uibModal, authService) {\n\n $scope.isBusinessunitAdmin = authService.hasRole(\"BusinessunitAdmin\");\n var businessUnitId = 0;\n\n let allAssets: AssetBusinessUnit[] = []\n $scope.message = \"\"\n $scope.customer = \"\"\n $scope.assetsTree = []\n $scope.newAsset = true\n $scope.usersWithNoAssets = []\n $scope.showUsersWithNoAssets = false\n $scope.isLoading = true\n\n // AssetType and BusinessUnit\n $scope.assetType = \"GENERAL\";\n $scope.setAssetType = function () {\n\n }\n\n $scope.createNewAsset = function () {\n resetRegistration()\n }\n\n $scope.toogleUsersWithNoAssets = function () {\n $scope.showUsersWithNoAssets = !$scope.showUsersWithNoAssets\n }\n \n $scope.onAssetsUpdated = function($event: JQuery.Event) {\n console.log(\"assetId updated:\", $event.detail)\n saveAssetTree()\n }\n\n $scope.openAccessForEdit = function (user) {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: $scope.animationsEnabled,\n templateUrl: 'useraccessform.html',\n controller: 'userAccessController',\n resolve: {\n user: function () {\n return user\n }\n }\n })\n\n modalInstance.result.then(function (user) {\n loadAssets()\n }, function () {})\n }\n\n function openProjectParticipants(id){\n\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: $scope.animationsEnabled,\n templateUrl: 'projectParticipantModal.html',\n controller: 'projectParticipantModalController',\n windowClass: 'assetparticipants-modal-window',\n resolve: {\n projectId: function () {\n return id\n }\n }\n })\n\n modalInstance.result.then(function (asset) {\n loadAssets()\n }, function () {\n\n })\n }\n\n $scope.treeOptions = {\n accept: function(sourceNodeScope, destNodesScope, destIndex) {\n\n const draggedAsset = sourceNodeScope.$modelValue as AssetBusinessTree\n\n const droppingToParent = destNodesScope.$parent.$modelValue as AssetBusinessTree\n\n if (droppingToParent && draggedAsset.item?.parentId !== droppingToParent.item?.id)\n return false // prevent moving to other parent for now\n\n if (!droppingToParent && draggedAsset.item?.parentId)\n return false\n\n return true\n },\n dropped: function(event) {\n\n const newIndex = event.dest.index as number\n\n const movedAsset = event.source?.nodeScope?.$modelValue as AssetBusinessTree\n if (movedAsset) {\n console.log(\"movedAsset\", movedAsset)\n\n const assetOrderUpdate: AssetLeaf = {\n id: movedAsset.item?.id,\n parentId: movedAsset.item?.parentId,\n sortOrder: newIndex\n }\n\n assetService.updateAssetOrder(assetOrderUpdate)\n }\n },\n removed: function(event) {\n console.log(\"removed\")\n }\n }\n\n $scope.onClickAssetMembers = function (asset: AssetBusinessTree, $event) {\n $event.preventDefault()\n $event.stopPropagation()\n if(!asset || !asset.item)\n return\n if (asset.item.assetType == GroupType.GENERAL)\n return openAssetParticipantsForEdit(asset.item.id!)\n \n if (asset.item.assetType == GroupType.BUSINESSUNIT)\n dialog.openHtml({\n title: \"ADMIN_BUSINESSUNIT_MEMBERS\",\n cancelBtnText: \"COMMON_CLOSE\",\n hideOkBtn: true,\n okBtnText: \"Ok\"\n },\n ``)\n }\n\n function openAssetParticipantsForEdit (assetId: number) {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: $scope.animationsEnabled,\n templateUrl: 'assetparticipantsform.html',\n controller: 'assetParticipantsController',\n windowClass: 'assetparticipants-modal-window',\n resolve: {\n assetId: function () {\n return assetId\n },\n boardId: function() {\n return null\n }\n }\n })\n modalInstance.result.then(function (asset) {\n loadAssets()\n }, function () {})\n }\n \n $scope.edit = function (assetTree: AssetBusinessTree) {\n assetTree.isCollapsed = !assetTree.isCollapsed\n this.toggle() // treeview-special to display toggle instantly\n\n if (!assetTree.item)\n return\n\n const asset = assetTree.item\n if (asset.assetType == 'PROJECT') {\n openProjectParticipants(asset.projectId)\n } else {\n let assetCloneForEdit = cloneDeep(asset)\n $scope.registration = assetCloneForEdit\n $scope.registration.isNewAsset = false\n }\n }\n\n const resetRegistration = function () {\n $scope.registration = {\n isNewAsset: true,\n id: 0,\n name: \"\",\n description: \"\",\n parentId: null,\n }\n if($scope.isBusinessunitAdmin && $scope.assetsTree && $scope.assetsTree.length > 0){\n $scope.registration.parentId = $scope.assetsTree[0].item?.id // set businessunit asset as default parent\n }\n }\n\n const loadAssets = function () {\n $scope.usersWithNoAssets = []\n if($scope.isBusinessunitAdmin){\n assetService.getAssetBusinessTree(businessUnitId).then(updatedAssetTree => {\n refreshAssetTree(updatedAssetTree)\n $scope.isLoading = false\n resetRegistration()\n })\n }\n else{\n customerService.getUsersWithOutAsset().then(function (userList) {\n if(userList && userList.length>0){\n $scope.usersWithNoAssets = userList\n }\n })\n assetService.getAssetBusinessTree().then(updatedAssetTree => {\n refreshAssetTree(updatedAssetTree)\n $scope.isLoading = false\n })\n } \n }\n\n function refreshAssetTree(updatedAssetTree: AssetBusinessTree[]) {\n if (!$scope.assetsTree || $scope.assetsTree.length == 0) {\n $scope.assetsTree = updatedAssetTree.map(a => {\n a.isCollapsed = true\n return a\n })\n }\n else {\n $scope.assetsTree = reloadWithCollapsedState(updatedAssetTree, $scope.assetsTree)\n }\n }\n async function saveAssetTree() {\n var updatedAssetTree;\n if($scope.isBusinessunitAdmin){\n $scope.isLoading = true\n updatedAssetTree = await assetService.saveAssetBusinessTree(businessUnitId)\n refreshAssetTree(updatedAssetTree) \n resetRegistration()\n } else {\n updatedAssetTree = await assetService.saveAssetBusinessTree()\n }\n refreshAssetTree(updatedAssetTree) \n $scope.isLoading = false\n }\n\n var init = async function () {\n if($scope.isBusinessunitAdmin){\n const currentUser = getUserProfile()\n businessUnitId = currentUser.businessUnitId || 0; // Set a default value of 0 if businessUnitId is undefined \n }\n loadAssets()\n resetRegistration()\n }\n\n init()\n\n }])","import { AssetBusinessUnit, AzureAdDigiLeanGroup, CustomerSubscriptionType, GroupType } from \"@api\"\nimport { DigiLeanNgScope } from \"@common/model/angularModel\"\nimport angular from \"angular\"\nimport * as assetService from \"@common/services/assetService\"\nimport toaster from \"@common/components/toast\"\nimport { translateLabelInstant } from \"@common/services/language/DigiLeanLang\"\nimport dialog from \"@common/components/digilean/DigileanDialog\"\nimport { handleThrownErrorMsg } from \"@common/services/error/aspNetErrorHandling\"\nimport { AssetChangeInfo } from \"@common/model/types\"\nimport { Subscription } from \"rxjs\"\nimport swal from \"sweetalert\"\n\ninterface IRegistrationAsset extends AssetBusinessUnit {\n isNewAsset: boolean\n}\n\ninterface IParentAssetModel {\n assetId?: number | null\n assets?: AssetBusinessUnit[]\n}\ninterface IAssetEditController extends DigiLeanNgScope {\n asset: IRegistrationAsset\n otherAssetsList: AssetBusinessUnit[]\n parentAssetModel: IParentAssetModel\n subscription: CustomerSubscriptionType\n selectedLanguage: any\n languages: any[]\n\n openAssetParticipantsForEdit: (assetId: number) => void\n clearAzureGroup: () => void\n azureGroupLookup: () => void\n parentChangeHandler: (assetInfo: AssetChangeInfo) => void\n messages: string[]\n msgIsError: boolean\n save: () => void\n}\n\nlet subUserProfile: Subscription | null = null\n\nconst DigiLean = angular.module('DigiLean')\nDigiLean.directive(\"assetEdit\", ['languageAdminService', 'modalService', '$uibModal',\n function (languageAdminService, modalService, $uibModal) {\n return {\n templateUrl: 'assetEdit.html',\n restrict: 'E',\n scope: {\n 'asset': '=',\n },\n controller: ['$scope', '$element', 'authService',\n function($scope: IAssetEditController, $element: JQuery, authService) {\n $scope.messages = []\n $scope.msgIsError = false\n $scope.otherAssetsList = []\n $scope.selectedLanguage = null\n $scope.languages = languageAdminService().getSupportedLanguages()\n $scope.isBusinessunitAdmin = authService.hasRole(\"BusinessunitAdmin\");\n \n\n $scope.parentAssetModel = { assetId: 0 }\n\n $scope.$watch(\"asset\", function() {\n if ($scope.asset) {\n $scope.parentAssetModel = { assetId: $scope.asset.parentId, assets: $scope.otherAssetsList }\n resetMsg()\n if ($scope.asset.language) {\n $scope.selectedLanguage = $scope.languages.find(l => l.languageCode == $scope.asset.language)\n }\n loadAssets()\n }\n \n })\n\n $scope.displayAssetType = function(asset: AssetBusinessUnit) {\n if (asset.assetType == GroupType.BUSINESSUNIT)\n return translateLabelInstant(\"ADMIN_ASSETTYPE_BUSINESS_UNIT\")\n return translateLabelInstant(\"COMMON_ASSET\")\n }\n\n const loadAssets = async function() {\n try {\n let availableAssets;\n if ($scope.isBusinessunitAdmin) {\n availableAssets = await assetService.getAssetsForBusinessUnit();\n } else {\n availableAssets = await assetService.getAllAssets();\n }\n \n if ($scope.asset && $scope.asset.id) {\n $scope.otherAssetsList = availableAssets.filter(a => a.id !== $scope.asset.id);\n } else {\n $scope.otherAssetsList = availableAssets;\n }\n \n $scope.parentAssetModel = { assetId: $scope.asset.parentId, assets: availableAssets };\n } catch (error) {\n console.error('Error loading assets:', error);\n }\n };\n\n function onAssetChanges(detail: any) {\n loadAssets()\n const options = {detail, bubbles: true, composed: true}\n $element[0].dispatchEvent(new CustomEvent(\"assets-changed\", options))\n }\n \n function resetMsg() {\n $scope.messages = []\n $scope.msgIsError = false\n }\n\n function resetAsset() {\n $scope.asset = {\n isNewAsset: true,\n id: 0,\n name: \"\",\n description: \"\",\n parentId: null,\n }\n }\n function handleExceptions(error: Error, fallbackErrorLabel?: string) {\n console.error(error)\n const errors = handleThrownErrorMsg(error)\n $scope.msgIsError = true\n if (errors.length > 0)\n $scope.messages = errors\n else if (fallbackErrorLabel)\n $scope.messages = [fallbackErrorLabel]\n else\n $scope.messages = [\"COMMON_ERROR_MSG\"]\n }\n function setInfoMessage(label: string) {\n $scope.msgIsError = false\n $scope.messages = [label]\n }\n\n $scope.save = function () {\n resetMsg()\n if ($scope.parentAssetModel) {\n $scope.asset.parentId = $scope.parentAssetModel.assetId\n if ($scope.asset.parentId)\n $scope.asset.assetType = GroupType.GENERAL //This also prevent businessunitAdmin to create businessunit\n }\n \n if ($scope.selectedLanguage) {\n $scope.asset.language = $scope.selectedLanguage.languageCode\n }\n if ($scope.asset.isNewAsset) {\n assetService.add($scope.asset).then(function (newAsset) {\n $scope.asset = newAsset as IRegistrationAsset\n onAssetChanges(newAsset.id)\n resetAsset()\n setInfoMessage(\"ADMIN_MESSAGE_ASSET_ADDED\")\n }, handleExceptions)\n } else {\n assetService.update($scope.asset).then(function (updatedAsset) {\n $scope.asset = updatedAsset as IRegistrationAsset\n onAssetChanges(updatedAsset.id)\n setInfoMessage(\"ADMIN_MESSAGE_ASSET_MODIFIED\")\n }, handleExceptions)\n }\n }\n\n function getBoardText (boards, idTranslated) {\n var result = \"\";\n for(var s=0; s< boards.length; s++){\n result = result + boards[s].name + \" (\" + idTranslated + \":\" + boards[s].id + \")\";\n if(s != boards.length-1){\n result = result + \", \\n\";\n }\n }\n return result;\n }\n\n function getTitleText (items, idTranslated) {\n var result = \"\";\n for(var s=0; s< items.length; s++){\n result = result + items[s].title + \" (\" + idTranslated + \":\" + items[s].id + \")\";\n if(s != items.length-1){\n result = result + \", \\n\";\n }\n }\n return result;\n }\n\n function getA3TitleText (items, idTranslated) {\n var result = \"\";\n for(var s=0; s< items.length; s++){\n result = result + items[s].title + \" (\" + idTranslated + \":\" + items[s].a3Id + \")\";\n if(s != items.length-1){\n result = result + \", \\n\";\n }\n }\n return result;\n }\n function deleteAsset(asset) {\n assetService.remove(asset.id).then(function () { \n onAssetChanges(asset.id)\n resetAsset()\n $scope.parentAsset = undefined\n const msg = translateLabelInstant(\"ADMIN_MESSAGE_ASSET_DELETED\")\n toaster.info(msg) \n \n }, function (err) {\n handleExceptions(err, \"ADMIN_ERROR_MESSAGE_DELETE_ASSET\")\n })\n }\n $scope.delete = function (asset) {\n resetMsg()\n assetService.getAssetAssociatedData(asset.id).then(function (data) {\n var noOfDashboards = data?.dashboards?.length;\n var noOfPortfolios = data?.boards?.filter(b => b.boardType == 'Project').length;\n var noOfTeamBoards = data?.boards?.filter(b => b.boardType != 'Project').length;\n var noOfProjects = data?.projects?.length;\n var noOfA3s = data?.a3s?.length;\n \n var buttons;\n if (noOfDashboards && noOfDashboards > 0){\n buttons = {dashboards: {\n text: noOfDashboards+ \" \" + translateLabelInstant('COMMON_DASHBOARDS'),\n className: \"digilean-label-historical\",\n closeModal: false,\n value: \"DASHBOARDS\"\n }};\n } \n if (noOfTeamBoards && noOfTeamBoards > 0){\n buttons = buttons ?? {};\n buttons.boards = {\n text: noOfTeamBoards + \" \" + translateLabelInstant('COMMON_BOARDS'),\n className: \"digilean-label-historical\",\n closeModal: false,\n value: \"BOARDS\"\n };\n }\n if (noOfPortfolios && noOfPortfolios > 0){\n buttons = buttons ?? {};\n buttons.projectportfolios = {\n text: noOfPortfolios + \" \" + translateLabelInstant('PROJECT_PROJECT_PORTFOLIO'),\n className: \"digilean-label-historical\",\n closeModal: false,\n value: \"PROJECTPORTFOLIOS\"\n };\n }\n if (noOfProjects && noOfProjects > 0){\n buttons = buttons ?? {};\n buttons.projects = {\n text: noOfProjects + \" \" + translateLabelInstant('COMMON_PROJECTS'),\n className: \"digilean-label-historical\",\n closeModal: false,\n value: \"PROJECTS\"\n };\n }\n if (noOfA3s && noOfA3s > 0){\n buttons = buttons ?? {};\n buttons.a3s = {\n text: noOfA3s + \" A3\",\n className: \"digilean-label-historical\",\n closeModal: false,\n value: \"A3S\"\n };\n }\n if (buttons){\n buttons.delete = {\n text: translateLabelInstant('COMMON_DELETE_ALL'),\n className: \"sa-digilean-button-danger\",\n value: \"delete\",\n closeModal: true,\n };\n openWarningPopup(buttons, data, asset);\n } else {\n deleteAsset(asset);\n }\n });\n }\n\n function openWarningPopup(buttons, data, asset){\n var idTranslated = translateLabelInstant('COMMON_ID')\n swal({\n title: translateLabelInstant('ADMIN_MESSAGE_DELETE_ASSET_CONFIRMATION'),\n icon: \"warning\",\n buttons: buttons,\n dangerMode: true,\n closeOnClickOutside: true,\n closeOnEsc: true\n }).then((value) => {\n switch (value) {\n\n case \"BOARDS\":\n var taskboards = data.boards.filter(b => b.boardType != 'Project')\n swal({\n title: translateLabelInstant('COMMON_BOARDS'),\n text: getBoardText(taskboards, idTranslated),\n closeOnClickOutside: true,\n closeOnEsc: true\n }).then((result) => {\n // Reopen the first popup\n openWarningPopup(buttons, data, asset);\n });\n break;\n\n case \"DASHBOARDS\":\n swal({\n title: translateLabelInstant('COMMON_DASHBOARDS'),\n text: getTitleText(data.dashboards, idTranslated),\n closeOnClickOutside: true,\n closeOnEsc: true\n }).then((result) => {\n // Reopen the first popup\n openWarningPopup(buttons, data, asset);\n });\n break;\n case \"PROJECTPORTFOLIOS\":\n var portfolios = data.boards.filter(b => b.boardType == 'Project')\n swal({\n title: translateLabelInstant('PROJECT_PROJECT_PORTFOLIO'),\n text: getBoardText(portfolios, idTranslated),\n closeOnClickOutside: true,\n closeOnEsc: true\n }).then((result) => {\n // Reopen the first popup\n openWarningPopup(buttons, data, asset);\n });\n break;\n case \"PROJECTS\":\n swal({\n title: translateLabelInstant('COMMON_PROJECTS'),\n text: getTitleText(data.projects, idTranslated),\n closeOnClickOutside: true,\n closeOnEsc: true\n }).then((result) => {\n // Reopen the first popup\n openWarningPopup(buttons, data, asset);\n });\n break;\n case \"A3S\":\n swal({\n title: 'A3',\n text: getA3TitleText(data.a3s, idTranslated),\n closeOnClickOutside: true,\n closeOnEsc: true\n }).then((result) => {\n // Reopen the first popup\n openWarningPopup(buttons, data, asset);\n });\n break;\n case \"delete\":\n deleteAsset(asset);\n break;\n default:\n }\n });\n }\n\n $scope.azureGroupLookup = async function() {\n let group: AzureAdDigiLeanGroup = {}\n try {\n group = await dialog.openForm({\n title: \"COMMON_AZURE_AD\",\n hideOkBtn: true,\n booleanResult: false\n }, \"\", group)\n \n if (group && group.id) {\n $scope.asset.externalId = group.id\n $scope.asset.externalName = group.displayName\n }\n }\n catch(err) {\n if (err != \"cancel\")\n console.log(err)\n }\n }\n\n $scope.clearAzureGroup = function() {\n $scope.asset.externalId = \"\"\n $scope.asset.externalName = \"\"\n }\n\n $scope.parentChangeHandler = function (assetinfo) {\n if (assetinfo) {\n const newParent = assetinfo.asset\n $scope.parentAssetModel.assetId = newParent.id\n if ($scope.parentAssetModel.assetId)\n $scope.asset.assetType = GroupType.GENERAL\n }\n }\n\n $scope.openAssetParticipantsForEdit = function (assetId: number) {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: $scope.animationsEnabled,\n templateUrl: 'assetparticipantsform.html',\n controller: 'assetParticipantsController',\n windowClass: 'assetparticipants-modal-window',\n resolve: {\n assetId: function () {\n return assetId\n },\n boardId: function() {\n return null\n }\n }\n })\n modalInstance.result.then(function (asset) {\n loadAssets()\n }, function () {})\n }\n }]\n }\n }\n])","import * as customerService from \"@common/services/customers/customerService\"\nimport * as documentService from \"@common/services/documentService\"\n\nvar DigiLean = angular.module('DigiLean')\nDigiLean.controller('organizationAdminController', ['$scope','$stateParams', '$filter', '$translate', 'authService',\n function ($scope, $stateParams, $filter, $translate, authService) {\n\n $scope.isKaizenAdmin = authService.hasRole('KaizenAdmin')\n $scope.fileUrl = \"\";\n $scope.tabs = [\n {\n name: \"billing\",\n isActive: false,\n title: $translate.instant(\"ADMIN_BILLING_PLAN\")\n },\n {\n name: \"settings\",\n isActive: false,\n title: $translate.instant(\"COMMON_SETTINGS\")\n },{\n name: \"logo\",\n isActive: false,\n title: $translate.instant(\"COMMON_LOGO\")\n },{\n name: \"mesages\",\n isActive: false,\n title: $translate.instant(\"COMMON_MESSAGES\")\n },\n {\n name: \"mail\",\n isActive: false,\n title: $translate.instant(\"ADMIN_SEND_MAIL\")\n }\n \n \n \n ];\n\n\n if ($scope.isKaizenAdmin){\n $scope.tabs.push({\n name: \"push\",\n isActive: false,\n title: $translate.instant(\"COMMON_PUSH_NOTIFICATIONS\")\n });\n }\n\n \n $scope.selectedTab = null;\n $scope.selectedTabName = \"\";\n function getCurrentLogo() {\n customerService.getCurrent().then(function (customer) {\n var logo = customer.logo;\n if (logo) {\n documentService.getFileUrl(logo.fileName).then(function(fileUrl) {\n $scope.fileUrl = fileUrl;\n });\n }\n });\n }\n\n getCurrentLogo();\n\n $scope.uploadedFiles = []; // For uploading new attachments, will be connected to dropzone.\n $scope.fileUploaded = function (file) {\n $scope.fileUrl = \"\";\n customerService.updateLogo(file.id).then(function () {\n getCurrentLogo();\n });\n }; \n\n $scope.selectTab = function (tab) {\n if ($scope.selectedTab) {\n $scope.selectedTab.isActive = false;\n }\n tab.isActive = true;\n $scope.selectedTab = tab;\n $scope.selectedTabName = tab.name;\n };\n\n // Select tab based on input or default first.\n if ($stateParams.tab) {\n var tab = $stateParams.tab;\n var hasTab = $filter('filter')($scope.tabs, { name: tab });\n if (hasTab.length === 1) {\n $scope.selectTab(hasTab[0]);\n } else {\n $scope.selectTab($scope.tabs[0]);\n }\n\n } else {\n $scope.selectTab($scope.tabs[0]);\n }\n }]);","import angular from \"angular\"\nimport { saveCompanySetting, getCompanySetting } from \"@common/stores/companySettingsStore\"\nimport * as customerService from \"@common/services/customers/customerService\"\nimport * as timeService from \"@common/services/timeService\"\nimport toaster from \"@common/components/toast\"\n\nangular\n .module('DigiLean')\n .directive(\"organizationSettings\", ['$state', 'languageAdminService', 'customerAccountService', 'navigationService', 'authService', 'dataListService', 'modulesService', 'learningPublicService',\n function ($state, languageAdminService, customerAccountService, navigationService, authService, dataListService, modulesService, learningPublicService) {\n return {\n templateUrl: 'organizationSettings.html',\n restrict: 'E',\n scope: {\n\n },\n link: function (scope, elem, attrs) {\n scope.isKaizenAdmin = authService.hasRole('KaizenAdmin')\n\n scope.selectedLanguage = null;\n scope.languages = languageAdminService().getSupportedLanguages()\n \n scope.months = timeService.getMonths();\n scope.selectedFiscalmonth = null;\n scope.fiscalmonth = 1;\n\n scope.subscribe(\"UserAuthenticatedAndReady\", function (profile) {\n getSubscription()\n })\n\n function setLanguage() {\n const selectedLanguage = scope.languages.find(l => l.languageCode == scope.orgLanguage)\n if (selectedLanguage) {\n scope.selectedLanguage = selectedLanguage\n }\n }\n\n function setFiscalmonth(){\n const selectedFiscalmonth = scope.months.find(m => m.id == scope.fiscalmonth)\n if (selectedFiscalmonth) {\n scope.selectedFiscalmonth = selectedFiscalmonth\n }\n }\n\n scope.listId = 0\n scope.orgLanguage = \"en\"\n scope.currency = customerService.getDefaultCurrency()\n\n getCompanySetting(\"currency\").then(value => {\n scope.currency = value\n })\n getCompanySetting(\"language\").then(value => {\n scope.orgLanguage = value\n setLanguage();\n })\n getCompanySetting(\"fiscalmonth\").then(value => {\n if(value)\n scope.fiscalmonth = parseInt(value)\n setFiscalmonth()\n })\n\n scope.goToLearningPage = function(module) {\n if(module.helpLink){\n var params = module.helpLink;\n $state.go('learningexternal', params , { reload: false });\n }\n }\n var getLink = function (module) {\n if (module.learning) {\n learningPublicService.getHelpPage(\"en\", module.learning.featureKey).then(function (page) {\n if (page) {\n let link = \"/#/learning/external\";\n link += `/${page.learningMaterialId}?pageid=${page.id}`\n module.helpLink = {\n location: \"external\",\n id: page.learningMaterialId,\n pageid: page.id,\n }\n \n } else {\n module.helpLink = null\n }\n })\n }\n\n }\n scope.allowedModules = []\n scope.subscription = 'CUSTOM';\n function getSubscription() {\n customerAccountService().getSubscription().then(function (subscription) {\n if (subscription) {\n modulesService.getAllowedModulesConfig().then(allowedModulesConfig => {\n scope.allowedModules = allowedModulesConfig.map(m => {\n m.hasModule = navigationService().hasModule(m.name)\n getLink(m);\n console.log(`${m.name} = ${m.hasModule}`)\n return m\n })\n })\n\n scope.subscription = subscription;\n }\n })\n }\n getSubscription();\n\n\n scope.changeLanguage = function (language) {\n if(!language) return;\n var languageCode = language.languageCode;\n scope.orgLanguage = languageCode\n saveCompanySetting(\"language\", languageCode)\n }\n\n scope.changeCurrency = function (currency) {\n scope.currency = currency;\n setLanguage();\n saveCompanySetting(\"currency\", currency)\n }\n\n scope.changeFiscalMonth = function (fiscalmonth) {\n if(!fiscalmonth) return;\n var fiscalmonthNo = fiscalmonth.id;\n scope.fiscalMonth = fiscalmonthNo\n saveCompanySetting(\"fiscalmonth\", fiscalmonthNo)\n }\n\n scope.toggleModule = function (module) {\n //module.hasModule = !module.hasModule;\n if (module.hasModule) {\n modulesService.enableModule(module.name).then(function () {\n module.hasActivated = true;\n module.hasDeActivated = false;\n }, (er) => {\n const msg = er.data.title\n toaster.error(msg)\n })\n } else {\n modulesService.disableModule(module.name).then(function () {\n module.hasActivated = false;\n module.hasDeActivated = true;\n }, (er) => {\n const msg = er.data.title\n toaster.error(msg)\n })\n }\n };\n\n scope.redirectToDataList = function () {\n if (scope.listId == 0) {\n var options = {\n includeDeletedItems: false,\n }\n dataListService().getFeatureList(\"CompetenceBall\", options).then(function (list) {\n if (list) {\n scope.listId = list.id\n $state.go('admindatalist', { id: scope.listId }, { reload: false })\n }\n })\n\n } else {\n $state.go('admindatalist', { id: scope.listId }, { reload: false })\n }\n }\n\n scope.reloadPage = function () {\n location.reload(false)\n }\n }\n }\n }])\n","import * as customerService from \"@common/services/customers/customerService\"\n\nangular\n .module('DigiLean')\n .controller(\"accountSetupController\", ['$scope', '$uibModalInstance','$translate', 'accountowner', 'signupService', 'modulesService',\n function ($scope, $uibModalInstance, $translate, accountowner, signupService, modulesService) {\n\n $scope.accountowner = accountowner;\n $scope.useAD = false;\n $scope.step = 1;\n $scope.assetname = \"Test\";\n $scope.isLoading = false;\n $scope.warning = '';\n\n $scope.next = function () {\n $scope.step = $scope.step + 1;\n };\n\n $scope.teammembers = [];\n\n if($scope.accountowner.useAD){\n $scope.useAD = true;\n }\n\n $scope.ok = function () {\n //TODO kall metode for fullførelse av installasjon\n // 1. legg til moduler\n // 2. legg til brukere\n // 3. Opprett asset\n // 4. Opprett tavler for asset \n // 5. employeeService().updateUserPreference(\"HasVisitedSettingsPage\", true).then(function(value) {\n\n $scope.isLoading = true;\n if(!$scope.assetname){\n $scope.assetname = \"Test\"; // Asset name can not be NULL\n }\n const selectedModules = $scope.modules.filter(m => m.hasModule)\n const setupInfo = \n {\n Modules : selectedModules,\n trialUsers : $scope.teammembers,\n assetName : $scope.assetname\n };\n\n signupService().newTrialCustomerSetup(setupInfo).then(function(value) {\n location.reload(false);\n })\n \n };\n\n function getSubscription(){\n modulesService.getAllowedModulesConfig().then(function(allowed) {\n $scope.modules = allowed;\n for(var i=0; i<$scope.modules.length; i++){\n $scope.modules[i].hasModule = true;\n }\n })\n \n }\n getSubscription();\n\n $scope.close = function () {\n location.reload(false);\n $uibModalInstance.dismiss('cancel');\n }\n\n $scope.add = function () {\n if ($scope.registration.firstName && $scope.registration.lastName && $scope.registration.userName){\n if(!$scope.useAD){\n $scope.registration.email = $scope.registration.userName; \n }\n $scope.warning = \"\";\n var newUser = {\n isNewUser: true,\n useAD: $scope.useAD,\n id: 0,\n firstName: $scope.registration.firstName,\n lastName: $scope.registration.lastName,\n userName: $scope.registration.userName,\n password: \"\",\n email: $scope.registration.email,\n confirmPassword: \"\",\n isAdmin: $scope.registration.isAdmin,\n isSupport: false,\n isApiUser: false,\n isInfoScreenUser: false,\n isMobileUser: false\n };\n $scope.teammembers.push(newUser);\n clearUser();\n } else {\n $scope.warning = $translate.instant('ADMIN_DATA_FIELD_MISSING');\n }\n }\n\n $scope.toggleModule = function (module) {\n module.hasModule = !module.hasModule;\n }\n\n $scope.checkExistingUser = async function (input) {\n $scope.warning = \"\"\n const response = await customerService.checkExistingUser(input)\n if(response){\n if (response.status == 'ExistInAnotherInstallation') {\n $scope.existInAnotherInstallation = true\n $scope.warning = input + $translate.instant('ADMIN_ERROR_MESSAGE_ADD_EXISTING_USER')\n clearUser()\n }\n }\n }\n\n var clearUser = function () {\n $scope.message = \"\";\n $scope.registration = {\n firstName: \"\",\n lastName: \"\",\n userName: \"\",\n isAdmin: false\n };\n };\n \n clearUser();\n \n }]);\n","import * as customerService from \"@common/services/customers/customerService\"\nimport toaster from \"@common/components/toast\"\n\nangular\n .module('DigiLean')\n .directive(\"mailSender\", ['$translate',\n function ($translate) {\n return {\n templateUrl: 'mailsender.html',\n restrict: 'E',\n scope: {\n \n },\n link: function (scope, elem, attrs) {\n\n // scope.content = \"\";\n scope.title = \"\";\n scope.content = \"\";\n scope.sendMail = function () {\n var mail = {\n title: scope.title,\n message: scope.content\n }\n customerService.sendMail(mail).then(function (result) {\n scope.title = \"\";\n scope.content = \"\"; \n toaster.success(\"Mail sent to \" + result + \" users\");\n });\n\n };\n scope.froalaOptions = {\n toolbarButtons: ['bold', 'italic', 'underline', \n '|', 'fontFamily', 'fontSize', 'color', 'inlineStyle', 'paragraphStyle', \n '|', 'paragraphFormat', 'align', 'formatOL', 'formatUL', 'outdent', 'indent', \n '|', 'insertLink', 'insertImage', 'insertTable']\n };\n scope.settingsChangeHandler = function (settings) {\n scope.content = settings.content;\n \n };\n }\n };\n }]);\n","import * as customerService from \"@common/services/customers/customerService\"\nimport toaster from \"@common/components/toast\"\n\nangular\n .module('DigiLean')\n .directive(\"messageSender\", ['$translate', '$uibModal',\n function ($translate, $uibModal) {\n return {\n templateUrl: 'messageSender.html',\n restrict: 'E',\n scope: {\n \n },\n link: function (scope, elem, attrs) {\n scope.title = \"\";\n scope.text = \"\";\n scope.errormessage = \"\";\n scope.uploadedFiles = [];\n scope.reciever = \"all\";\n scope.filters = [];\n scope.hidefroala = false;\n\n function getMessages(){\n customerService.getAdminMessages().then(function(result){\n scope.messages = result;\n scope.messages.forEach(message => {\n if (message.isPublic){\n message.typeColor = \"#5ab700\";\n message.type = $translate.instant('COMMON_ALL');\n } else if (message.recipientUserId != null){\n message.typeColor = \"#F8AC59\"\n message.type = $translate.instant('COMMON_PERSONAL');\n } else if (message.projectId != null){\n message.typeColor = \"#0099DE\"\n message.type = $translate.instant('COMMON_PROJECT');\n } else if (message.assetId != null){\n message.typeColor = \"#f0ad4e\"\n message.type = $translate.instant('COMMON_TEAM_BOARD');\n } else {\n message.typeColor = \"#D770AD\"\n message.type = $translate.instant('COMMON_ASSET');\n }\n });\n });\n } \n getMessages();\n\n scope.setAll = function(){\n scope.reciever = \"all\";\n }\n\n scope.selectAssets = function () {\n scope.reciever = \"asset\";\n scope.hidefroala = true;\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'assetSelectorModal.html',\n controller: 'assetSelectorModalController',\n windowClass: 'assetselector-modal-window',\n resolve: {\n\n filters: function () {\n return scope.filters;\n }\n }\n });\n \n modalInstance.result.then(function (result) {\n scope.filters = result;\n scope.hidefroala = false;\n }, function(res){\n scope.hidefroala = false;\n });\n };\n\n scope.textChanged = function (content) {\n scope.text = content;\n }\n\n scope.deleteMessage = function (message) {\n scope.isDeleting = true;\n customerService.deleteMessage(message.id).then(function (result) {\n scope.isDeleting = false;\n getMessages();\n });\n };\n \n\n scope.subscribe(\"MessageSent\", function (message) {\n console.log(\"message sent\");\n toaster.success($translate.instant('COMMON_MESSAGE')+ \" \"+ $translate.instant('COMMON_SENT_TO')+ \" \"+ $translate.instant('ADMIN_USERS').toLowerCase());\n getMessages();\n });\n\n scope.subscribe(\"ProjectMessageAdded\", function (message) {\n getMessages();\n });\n \n scope.fileUploaded = function (file) {\n boardTaskService().addAttachment($scope.task.id, file).then(function (attachment) {\n attachment.cssState = \"animated slideInDown\";\n setTimeout(function () {\n attachment.cssState = \"\";\n }, 500);\n $scope.attachments.push(attachment);\n // Send event\n $scope.publish(\"SendTaskAttachmentAdded\", attachment);\n });\n };\n\n scope.sendMessage = function () { \n scope.errormessage = \"\";\n if(!scope.title){\n scope.errormessage = $translate.instant(\"ADMIN_DATA_FIELD_MISSING\");\n return;\n } \n\n var message = {\n title: scope.title,\n text: scope.text,\n files: scope.uploadedFiles\n };\n if(scope.reciever = \"asset\" && scope.filters.length > 0){\n var assetIds = scope.filters[0].items;\n message.assets = [];\n message.isPublic = false;\n for(var i=0; i u.appInstallations.length > 0);\n // scope.users = result;\n scope.users.forEach(u => u.selected = true);\n });\n\n\n scope.sendPushNotification = function () {\n \n\n var push = {\n title: scope.title,\n content: scope.content,\n users: scope.users.filter(u => u.selected).map (u => u.userId)\n }\n\n toaster.success(\"nothing here\")\n // customerService.sendPushNotification(push).then(function (result) {\n // scope.title = \"\";\n // scope.content = \"\";\n\n // toaster.success($translate.instant('COMMON_PUSH_NOTIFICATION')+ \" \"+ $translate.instant('COMMON_SENT_TO')+ \" \"+ result + \" \"+$translate.instant('COMMON_USERS').toLowerCase());\n // });\n\n };\n\n scope.selectedChanged = function(){\n scope.allSelected = false;\n };\n\n scope.toggleAll = function(){\n scope.users.forEach(u => u.selected = scope.allSelected);\n };\n \n\n }\n }\n }]);\n","import toaster from \"@common/components/toast\"\n\nvar DigiLean = angular.module('DigiLean');\nDigiLean.controller('improvementAdminController', ['$scope', '$filter', '$stateParams', '$location', '$timeout', '$translate', 'authService', 'suggestionService', 'modalService',\n function ($scope, $filter, $stateParams, $location, $timeout, $translate, authService, suggestionService, modalService) {\n $scope.savedSuccessfully = false;\n $scope.message = \"\";\n\n $translate('DEVIATION_NEW_CATEGORY').then(function (title) {\n $scope.actionTitle = title;\n }, function (translationId) {\n $scope.headline = translationId;\n });\n\n\n $scope.clearActive = function () {\n $translate('DEVIATION_NEW_CATEGORY').then(function (title) {\n $scope.actionTitle = title;\n }, function (translationId) {\n $scope.headline = translationId;\n });\n $scope.registration = {\n isNew: true,\n id: 0,\n name: \"\",\n description: \"\"\n };\n }\n $scope.clearActive();\n\n $scope.delete = function (item) {\n $translate(['COMMON_CANCEL', 'COMMON_DELETE', 'ADMIN_MESSAGE_DELETE_CATEGORY_CONFIRMATION']).then(function (translations) {\n var modalOptions = {\n closeButtonText: translations.COMMON_CANCEL,\n actionButtonText: translations.COMMON_DELETE,\n headerText: translations.COMMON_DELETE + ' ' + item.name + '?',\n bodyText: translations.ADMIN_MESSAGE_DELETE_CATEGORY_CONFIRMATION\n };\n\n modalService.showModal({}, modalOptions).then(function (result) {\n suggestionService().deleteCategory(item.id).then(function (data) {\n load();\n $scope.clearActive();\n $translate('ADMIN_MESSAGE_CATEGORY_DELETED').then(function (msg) {\n toaster.info(msg);\n }, function (translationId) {\n $scope.headline = translationId;\n });\n }, function (err) {\n });\n });\n });\n }\n\n $scope.categories = [];\n var load = function () {\n suggestionService().getCategories().then(function (categories) {\n $scope.categories = categories;\n });\n }\n load();\n $scope.edit = function (item) {\n $translate('COMMON_EDIT').then(function (title) {\n $scope.actionTitle = title;\n }, function (translationId) {\n $scope.headline = translationId;\n });\n $scope.registration = {\n isNew: false,\n id: item.id,\n name: item.name,\n description: item.description\n };\n }\n\n $scope.save = function () {\n if ($scope.registration.isNew) {\n suggestionService().createCategory($scope.registration).then(function () {\n $translate('ADMIN_MESSAGE_CATEGORY_ADDED').then(function (msg) {\n toaster.success(msg);\n }, function (translationId) {\n $scope.headline = translationId;\n });\n load();\n $scope.clearActive();\n });\n } else {\n suggestionService().updateCategory($scope.registration).then(function () {\n $translate('ADMIN_MESSAGE_CATEGORY_MODIFIED').then(function (msg) {\n toaster.success(msg);\n }, function (translationId) {\n $scope.headline = translationId;\n });\n load();\n });\n }\n }\n\n }]);","import toaster from \"@common/components/toast\"\n\nvar DigiLean = angular.module('DigiLean'); \nDigiLean.controller('a3AdminController', ['$scope', '$filter', '$stateParams', '$location', '$timeout', '$translate', 'authService', 'a3Service','modalService',\nfunction ($scope, $filter, $stateParams, $location, $timeout, $translate, authService, a3Service, modalService) {\n $scope.savedSuccessfully = false;\n $scope.message = \"\";\n\n $translate('DEVIATION_NEW_CATEGORY').then(function (title) {\n $scope.actionTitle = title;\n }, function (translationId) {\n $scope.headline = translationId;\n });\n\n\n $scope.clearActive = function () {\n $translate('DEVIATION_NEW_CATEGORY').then(function (title) {\n $scope.actionTitle = title;\n }, function (translationId) {\n $scope.headline = translationId;\n });\n $scope.registration = {\n isNew: true,\n id: 0,\n name: \"\",\n description: \"\"\n };\n }\n $scope.clearActive();\n\n $scope.delete = function (item) {\n $translate(['COMMON_CANCEL', 'COMMON_DELETE', 'ADMIN_MESSAGE_DELETE_CATEGORY_CONFIRMATION']).then(function (translations) {\n var modalOptions = {\n closeButtonText: translations.COMMON_CANCEL,\n actionButtonText: translations.COMMON_DELETE,\n headerText: translations.COMMON_DELETE + ' ' + item.title + '?',\n bodyText: translations.ADMIN_MESSAGE_DELETE_CATEGORY_CONFIRMATION \n };\n\n modalService.showModal({}, modalOptions).then(function (result) {\n a3Service().deleteCategory(item.id).then(function (data) { \n load();\n $scope.clearActive();\n $translate('ADMIN_MESSAGE_CATEGORY_DELETED').then(function (msg) {\n toaster.info(msg); \n }, function (translationId) {\n $scope.headline = translationId;\n });\n },function (err) {\n });\n });\n });\n }\n\n $scope.categories = [];\n var load = function () {\n a3Service().getCategories().then(function (categories) {\n $scope.categories = categories;\n });\n }\n load();\n $scope.edit = function (item) {\n $translate('COMMON_EDIT').then(function (title) {\n $scope.actionTitle = title;\n }, function (translationId) {\n $scope.headline = translationId;\n });\n $scope.registration = {\n isNew: false,\n id: item.id,\n name: item.name,\n description: item.description\n };\n }\n\n $scope.save = function () {\n if ($scope.registration.isNew) {\n a3Service().createCategory($scope.registration).then(function () {\n $translate('ADMIN_MESSAGE_CATEGORY_ADDED').then(function (msg) {\n toaster.success(msg);\n }, function (translationId) {\n $scope.headline = translationId;\n });\n load();\n $scope.clearActive();\n });\n } else {\n a3Service().updateCategory($scope.registration).then(function () {\n $translate('ADMIN_MESSAGE_CATEGORY_MODIFIED').then(function (msg) {\n toaster.success(msg);\n }, function (translationId) {\n $scope.headline = translationId;\n });\n load();\n });\n }\n }\n\n}]);","import { handleErrorsAspNet } from \"@common/services/error/aspNetErrorHandling\"\nimport * as customerService from \"@common/services/customers/customerService\"\nimport toaster from \"@common/components/toast\"\n//TODO: remove, not in use?\nangular\n .module('DigiLean')\n .controller(\"changePasswordModalController\", ['$scope', '$uibModalInstance', '$translate',\n function ($scope, $uibModalInstance, $translate) {\n $scope.message = \"\";\n $scope.user = {\n currentPassword: \"\",\n password: \"\",\n confirmPassword: \"\"\n }\n $scope.ok = function () {\n $scope.errors = []\n $scope.message = \"\"\n \n customerService.changePassword($scope.user).then(function() {\n $translate('ADMIN_PASSWORD_CHANGED_SUCCESSFULLY').then(function (msg) {\n toaster.success(msg);\n }, function (translationId) {\n $scope.headline = translationId\n })\n $uibModalInstance.close()\n }, function (response) {\n let errors = handleErrorsAspNet(response.data)\n \n $scope.errors = errors\n $translate('ADMIN_PASSWORD_CHANGED_FAILED').then(function (errormsg) {\n $scope.message = errormsg\n }, function (translationId) {\n $scope.headline = translationId;\n })\n })\n }\n\n $scope.close = function () {\n $translate('COMMON_CANCEL').then(function (text) {\n $uibModalInstance.dismiss(text)\n }, function (translationId) {\n $scope.headline = translationId\n })\n \n }\n }])\n","import { DatabaseType, DeployCustomer, Module } from \"@api\";\nimport { DigiLeanNgScope } from \"@common/model/angularModel\";\nimport { getAllDatabases } from \"@common/services/customers/infrastructureService\"\nimport * as customerService from \"@common/services/customers/customerService\"\nimport angular from \"angular\"\nimport toaster from \"@common/components/toast\"\n\ninterface IModule extends Module {\n isEnabled: boolean\n}\n\ninterface IDeployScope extends DigiLeanNgScope {\n deployCustomer: DeployCustomer\n allowedModules: IModule[]\n customerConnectionstringNames: string[]\n customerDataConnectionstringNames: string[]\n customerStorageConnectionstringNames: string[]\n isSelectedModule: (module: IModule) => void\n toggleModule: (module: IModule) => void\n languages: any\n changeLanguage: (languageCode: string) => void\n isSelectedLang: (l: any) => boolean\n changeCurrency: (currency: string) => void\n deploy: () => void\n close: () => void\n}\nangular\n .module('DigiLean')\n .controller(\"deployCustomerDialogController\", ['$scope', '$uibModalInstance', 'modulesService', 'customer', 'languages',\n function ($scope: IDeployScope, $uibModalInstance, modulesService, customer, languages) {\n\n $scope.customerConnectionstringNames = []\n $scope.customerDataConnectionstringNames = []\n $scope.customerStorageConnectionstringNames = []\n $scope.customerName = customer.name;\n \n $scope.deployCustomer = {\n id: customer.id,\n connectionStringName: customer.connectionStringName,\n dataConnectionStringName: customer.dataConnectionStringName,\n storageConnectionStringName: customer.storageConnectionStringName,\n language: \"\",\n currency: \"\",\n modules: []\n }\n $scope.allowedModules = []\n modulesService.getCustomerAllowedModulesForCustomer(customer.id).then(modules => {\n $scope.allowedModules = modules.map(m => {\n m.isEnabled = true\n return m\n })\n })\n\n $scope.isSelectedModule = function(module) {\n return !!module.isEnabled\n }\n $scope.toggleModule = function(module) {\n module.isEnabled = !module.isEnabled\n }\n $scope.languages = languages\n\n $scope.changeLanguage = function (languageCode) {\n $scope.deployCustomer.language = languageCode;\n }\n $scope.isSelectedLang = function(l) {\n return $scope.deployCustomer.language == l.languageCode\n }\n $scope.changeCurrency = function (currency) {\n $scope.deployCustomer.currency = currency\n }\n\n $scope.deployingInProgress = false\n $scope.deploy = async function () {\n if ($scope.deployingInProgress)\n return\n\n $scope.deployingInProgress = true\n \n const selectedModules = $scope.allowedModules.filter(m => m.isEnabled)\n $scope.deployCustomer.modules = selectedModules\n \n try {\n const deployedCustomer = await customerService.deployCustomer($scope.deployCustomer)\n $uibModalInstance.close(deployedCustomer)\n\n } catch (error: any) {\n console.log(error)\n if (error.message) {\n toaster.error(error.message)\n } else\n toaster.error(\"something went wrong!\")\n }\n \n }\n\n $scope.close = function () {\n \n $uibModalInstance.dismiss('cancel')\n }\n\n getAllDatabases().then(dbs => {\n if (!dbs || dbs.length == 0)\n return\n $scope.customerConnectionstringNames = dbs.filter(d => d.type === DatabaseType.Customer).map(d => d.connectionStringName)\n $scope.customerDataConnectionstringNames = dbs.filter(d => d.type === DatabaseType.CustomerData).map(d => d.connectionStringName)\n $scope.customerStorageConnectionstringNames = dbs.filter(d => d.type === DatabaseType.StorageAccount).map(d => d.connectionStringName)\n })\n }])","import { Database } from \"@api\"\nimport backend from \"@common/services/backendHttp\"\n\nconst resourceUrl = \"api/infrastructure\"\n\nexport const getAllDatabases = () => {\n return backend.get(resourceUrl)\n}","import { ApplicationUser, User } from \"@api\"\nimport backend from \"@common/services/backendHttp\"\n\nconst resourceUrl = \"api/CustomerAdmin\"\n\nexport const disable = (customerId: number) => {\n const url = resourceUrl + \"/disable/\" + customerId\n return backend.put(url)\n}\n\nexport const getMasterDbUsers = (customerId: number) => {\n const url = resourceUrl + \"/masterDbUsers/\" + customerId\n return backend.get(url)\n}\n\nexport const getcustomerDbUsers = (customerId: number) => {\n const url = resourceUrl + \"/customerDbUsers/\" + customerId\n return backend.get(url)\n}\n\nexport function disableUsers(customerId: number) {\n const url = resourceUrl + \"/disableUsers/\" + customerId\n return backend.put(url)\n}\n","import { DigiLeanNgScope } from \"@common/model/angularModel\"\nimport angular from \"angular\"\nimport toaster from \"@common/components/toast\"\nimport * as customerAdminService from \"@common/services/customers/customerAdminService\"\nimport { ApplicationUser, DeployCustomer, User } from \"@api\"\nimport { handleThrownErrorMsg } from \"@common/services/error/aspNetErrorHandling\"\n\n\ninterface IDeployScope extends DigiLeanNgScope {\n masterDbUsers: ApplicationUser[]\n customerDbUsers: User[]\n customer: DeployCustomer\n disable: () => void\n close: () => void\n}\n\nangular\n .module('DigiLean')\n .controller(\"disableCustomerDialogController\", ['$scope', '$uibModalInstance', 'customer',\n function ($scope: IDeployScope, $uibModalInstance, customer: DeployCustomer) {\n \n $scope.customer = customer\n\n $scope.masterDbUsers = []\n $scope.customerDbUsers = []\n refreshUsers()\n\n $scope.disable = async function () {\n try {\n await customerAdminService.disable(customer.id!)\n }\n catch(error: any) {\n const msgs = handleThrownErrorMsg(error)\n const msgsStr = msgs.join(\",\")\n toaster.error(msgsStr)\n }\n $uibModalInstance.close()\n }\n\n $scope.close = function () {\n \n $uibModalInstance.dismiss('cancel')\n }\n \n $scope.disableUsers = async function() {\n try {\n await customerAdminService.disableUsers(customer.id!)\n refreshUsers()\n }\n catch (error: any) {\n const msgs = handleThrownErrorMsg(error)\n const msgsStr = msgs.join(\",\")\n toaster.error(msgsStr)\n }\n }\n \n async function refreshUsers() {\n const mUsers = await customerAdminService.getMasterDbUsers(customer.id!)\n $scope.masterDbUsers = mUsers\n const cUsers = await customerAdminService.getcustomerDbUsers(customer.id!)\n $scope.customerDbUsers = cUsers\n }\n }])","import * as customerService from \"@common/services/customers/customerService\"\nimport toaster from \"@common/components/toast\"\n\nangular\n .module('DigiLean')\n .controller(\"supportUserDialogController\", ['$scope', '$uibModalInstance', 'customer',\n function ($scope, $uibModalInstance, customer) {\n\n if (!customer || !customer.id) {\n toaster.error(\"Missing customer Id\", 5)\n setTimeout(() => {\n $uibModalInstance.dismiss('cancel')\n }, 500)\n }\n\n $scope.supportUser = {\n email: `${customer.name.toLowerCase()}@digilean.tools`,\n password: \"\"\n }\n\n $scope.createSupportUser = function () {\n customerService.createSupportUser(customer.id, $scope.supportUser).then(function (supportUser) {\n $uibModalInstance.close(supportUser)\n }, function(error) {\n if (error.data) {\n if (error.data.title)\n toaster.error(error.data.title)\n }\n toaster.error(\"something went wrong!\")\n })\n }\n\n $scope.close = function () {\n $uibModalInstance.dismiss('cancel')\n }\n }])","import toaster from \"@common/components/toast\"\n\nangular\n .module('DigiLean')\n .controller(\"customerOrderDialogController\", ['$scope', '$uibModalInstance', '$filter','customerAccountService', 'order', 'customerId',\n function ($scope, $uibModalInstance, $filter,customerAccountService, order, customerId) {\n\n if (!order || !order.id) {\n $scope.order = {\n id:0,\n customerId: customerId,\n productId:0,\n productPartName: \"\",\n productName: \"\",\n quantity: 1,\n startDate: new Date()\n }\n } else {\n $scope.order = order;\n $scope.order.startDate = moment($scope.order.startDate).toDate();\n if($scope.order.endDate){\n $scope.order.endDate = moment($scope.order.endDate).toDate(); \n }\n }\n\n $scope.selectedProduct = null;\n\n customerAccountService().getProductOrders().then(function (products) {\n $scope.allproducts = products;\n if($scope.order.productId){\n var match = $filter('filter')($scope.allproducts, { id: $scope.order.productId }, true);\n $scope.selectedProduct = match[0];\n }\n })\n\n $scope.productChanged = function (product) {\n $scope.order.productId = product.id;\n $scope.order.productPartName = product.partName;\n $scope.order.productName = product.name;\n };\n\n $scope.startDateChanged = function($event) {\n const date = $event.originalEvent.detail\n $scope.order.startDate = date\n }\n\n $scope.endDateChanged = function($event) {\n const date = $event.originalEvent.detail\n $scope.order.endDate = date\n }\n $scope.save = function () {\n customerAccountService().updateCustomerProductOrder($scope.order).then(function (savedOrder) {\n $uibModalInstance.close(savedOrder)\n }, function(error) {\n if (error.data) {\n if (error.data.title)\n toaster.error(error.data.title)\n }\n toaster.error(\"something went wrong!\")\n })\n }\n\n $scope.close = function () {\n $uibModalInstance.dismiss('cancel')\n }\n }])","import toaster from \"@common/components/toast\"\n\nangular\n .module('DigiLean')\n .controller(\"allowedModulesDialogController\", ['$scope', '$uibModalInstance', 'modulesService', 'customer',\n function ($scope, $uibModalInstance, modulesService, customer) {\n\n\n if (!customer || !customer.id) {\n toaster.error(\"Missing customer Id\", 5)\n setTimeout(() => {\n $uibModalInstance.dismiss('cancel')\n }, 500)\n }\n else {\n $scope.account = customer.account\n\n let promises = []\n \n promises.push(modulesService.getModulesSetupForKaizenAdmin(customer.id))\n promises.push(modulesService.getCustomerAllowedModulesForCustomer(customer.id))\n \n Promise.all(promises).then(all => {\n const setup = all[0]\n $scope.defaultAllowedModules = setup.defaultAllowed\n\n const allAllowedModules = all[1]\n \n const extraModules = setup.otherModules.map(m => {\n m.isAllowed = allAllowedModules.some(a => a.name == m.name)\n return m\n })\n $scope.extraModules = extraModules\n })\n }\n \n $scope.toggleModule = function(module) {\n if (module.isAllowed)\n modulesService.disallowModule(customer.id, module.name)\n else\n modulesService.allowModule(customer.id, module.name)\n }\n\n $scope.close = function () {\n $uibModalInstance.close('close')\n }\n }])","import * as customerService from \"@common/services/customers/customerService\"\nimport toaster from \"@common/components/toast\"\n\nvar DigiLean = angular.module('DigiLean');\nDigiLean.controller('customersController', ['$scope', '$translate', '$filter', 'languageAdminService', 'modulesService', '$uibModal',\n function ($scope, $translate, $filter, languageAdminService, modulesService, $uibModal) {\n\n $scope.savedSuccessfully = false;\n $scope.message = \"\";\n\n $scope.date = {\n startDate: null,\n endDate: null,\n datePicker : {\n opened: false\n },\n endDatePicker : {\n opened: false\n }\n };\n\n $scope.languages = languageAdminService().getSupportedLanguages();\n\n\n $scope.showArchived = false;\n $scope.showEditCustomer = false;\n $scope.authOptions = [\n { value: 0, name: $translate.instant('COMMON_PASSWORD') },\n { value: 1, name: $translate.instant('COMMON_AZURE_AD') },\n { value: 2, name: $translate.instant('COMMON_MIXED_AUTH_MODE')}\n ]\n\n var now = moment().toDate();\n $scope.orders = [];\n \n $translate('ADMIN_REGISTER_NEW_USER').then(function (title) {\n $scope.actionTitle = title;\n }, function (translationId) {\n $scope.headline = translationId;\n })\n\n $scope.toggleArchived = async function(){\n $scope.showArchived = !$scope.showArchived;\n if($scope.closedAccounts && $scope.closedAccounts.length > 0) return;\n const archivedCustomersinfo = await customerService.getArcivedCustomersForAdmin()\n $scope.closedAccounts = archivedCustomersinfo; \n }\n\n $scope.back = function () {\n $scope.showEditCustomer = false;\n $scope.orders = [];\n };\n\n $scope.clearActiveCustomer = function () {\n $scope.showEditCustomer = true;\n $scope.orders = [];\n $scope.allowedModules = null\n $translate('ADMIN_NEW_CUSTOMER').then(function (title) {\n $scope.actionTitle = title;\n }, function (translationId) {\n $scope.headline = translationId;\n });\n $scope.date = {\n startDate: null,\n endDate: null\n };\n $scope.registration = {\n isDeployed: true,\n isNewCustomer: true,\n id: 0,\n name: \"\",\n customDomain: \"\",\n authenticationMode: 0,\n isPaying: false,\n pricePerUser: 0,\n adminUser: {\n email: \"@digilean.tools\",\n password: \"\",\n },\n account: {\n subscription : 'STANDARD',\n billing: 'MONTHLY',\n isTrial: true,\n userLicenses : 10,\n mobileLicenses: 0\n }\n };\n\n }\n\n function setDate(account){\n if(account && account.startDate){\n $scope.date.startDate = moment(account.startDate).toDate();\n } else {\n $scope.date.startDate = null;\n }\n if(account && account.endDate){\n $scope.date.endDate = moment(account.endDate).toDate();\n } else {\n $scope.date.endDate = null;\n }\n }\n \n var loadCustomers = async function () {\n $scope.customers = [];\n $scope.openAccount = [];\n $scope.closedAccounts = [];\n $scope.monthlycustomers = 0;\n $scope.yearlycustomers = 0;\n $scope.othercustomers = 0;\n $scope.freeaccounts = 0;\n $scope.trial = 0;\n $scope.resignation = 0;\n\n const customersinfo = await customerService.getCustomersForAdmin()\n $scope.customers = customersinfo\n for (var i = 0; i < $scope.customers.length; i++) {\n\n if($scope.customers[i].account && $scope.customers[i].account.endDate){\n $scope.customers[i].showEndDate = true;\n if($scope.customers[i].customer.isPaying){ \n $scope.resignation = $scope.resignation + 1;\n }\n $scope.openAccount.push($scope.customers[i]); \n statusCounter($scope.customers[i].account);\n } else {\n $scope.openAccount.push($scope.customers[i]); \n statusCounter($scope.customers[i].account);\n }\n \n }\n $scope.freeaccounts = $scope.openAccount.length - $scope.yearlycustomers - $scope.monthlycustomers - $scope.othercustomers;\n }\n\n loadCustomers();\n function statusCounter(account){\n if(account.isTrial){\n $scope.trial = $scope.trial + 1;\n } else {\n if(account.billing == 'MONTHLY'){\n $scope.monthlycustomers = $scope.monthlycustomers+1;\n } else if (account.billing == 'YEARLY'){\n $scope.yearlycustomers = $scope.yearlycustomers +1; \n } else if (account.billing == 'OTHER'){\n $scope.othercustomers = $scope.othercustomers +1; \n }\n }\n }\n\n $scope.editCustomer = async function (customerinfo) {\n $scope.showEditCustomer = true;\n var customerId = customerinfo.customer.id\n $scope.supportUser = null\n const customerEdit = await customerService.getCustomerForAdmin(customerId)\n const customer = customerEdit.customer\n\n setDate(customerEdit.account)\n\n $scope.registration = {\n isNewCustomer: false,\n isDeployed: customer.isDeployed,\n id: customer.id,\n name: customer.name,\n customDomain: customer.customDomain,\n authenticationMode: customer.authenticationMode,\n azureAdTenantId: customer.azureAdTenantId,\n azureAutoSignup: customer.azureAutoSignup,\n isPaying: customer.isPaying,\n pricePerUser: customer.pricePerUser,\n account: customerEdit.account,\n connectionStringName: customer.connectionStringName,\n dataConnectionStringName: customer.dataConnectionStringName,\n storageConnectionStringName: customer.storageConnectionStringName\n }\n if(customerEdit.account && customerEdit.account.customerProductOrders){\n $scope.orders = customerEdit.account.customerProductOrders;\n }\n \n $scope.supportUser = customerEdit.supportUser\n \n modulesService.getCustomerAllowedModulesForCustomer(customerId).then(mods => {\n $scope.allowedModules = mods\n })\n $translate('ADMIN_EDIT_CUSTOMER').then(function (title) {\n $scope.actionTitle = title\n }, function (translationId) {\n $scope.headline = translationId\n })\n }\n\n $scope.changeSubscription = function (sub) {\n $scope.registration.account.subscription = sub;\n }\n $scope.changeBilling = function (bill) {\n $scope.registration.account.billing = bill;\n }\n\n $scope.save = function () {\n if ($scope.registration.isPaying && $scope.registration.account) {\n $scope.registration.account.isTrial = false;\n }\n\n if ($scope.registration.isNewCustomer) {\n\n var newCustomerAccount =\n {\n subscription: $scope.registration.account.subscription,\n billing: $scope.registration.account.billing,\n isTrial: $scope.registration.account.isTrial,\n userLicenses: $scope.registration.account.userLicenses,\n mobileLicenses: $scope.registration.account.mobileLicenses,\n startDate:$scope.date.startDate,\n endDate:$scope.date.endDate\n }\n var createCustomer = {\n customer: $scope.registration,\n account: newCustomerAccount,\n adminUser: $scope.registration.adminUser\n };\n customerService.createCustomer(createCustomer).then(function (createdCustomer) {\n $translate('ADMIN_MESSAGE_CUSTOMER_CREATED').then(function (msg) {\n toaster.success(msg);\n }, function (translationId) {\n $scope.headline = translationId;\n });\n loadCustomers();\n $scope.editCustomer({customer: createdCustomer})\n });\n } else {\n\n var customerAccount =\n {\n subscription: $scope.registration.account.subscription,\n billing: $scope.registration.account.billing,\n isTrial: $scope.registration.account.isTrial,\n userLicenses: $scope.registration.account.userLicenses,\n mobileLicenses: $scope.registration.account.mobileLicenses,\n startDate:$scope.date.startDate,\n endDate:$scope.date.endDate\n }\n var customer = {\n customer: $scope.registration,\n account: customerAccount,\n };\n customerService.updateCustomer(customer).then(function () {\n $translate('ADMIN_MESSAGE_CUSTOMER_UPDATED').then(function (msg) {\n toaster.success(msg);\n }, function (translationId) {\n $scope.headline = translationId;\n });\n loadCustomers();\n });\n }\n }\n\n $scope.openAllowedModulesDialog = function (customer) {\n const modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'allowedModulesDialog.html',\n controller: 'allowedModulesDialogController',\n resolve: {\n customer: () => customer\n }\n })\n modalInstance.result.then(function () {\n modulesService.getCustomerAllowedModulesForCustomer(customer.id).then(mods => {\n $scope.allowedModules = mods\n })\n }, function (er) {\n console.log(er)\n })\n }\n\n $scope.openCreateSupportUserDialog = function (customer) {\n const modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'supportUserDialog.html',\n controller: 'supportUserDialogController',\n resolve: {\n customer: () => customer\n }\n })\n modalInstance.result.then(function (supportUser) {\n if(supportUser){\n $scope.supportUser = supportUser\n }\n }, function (er) {\n console.log(er)\n })\n }\n \n $scope.openDeployDialog = function (customer) {\n if (customer.isDeployed)\n return\n const modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'deployCustomerDialog.html',\n controller: 'deployCustomerDialogController',\n resolve: {\n customer: () => customer,\n languages: () => $scope.languages\n }\n })\n modalInstance.result.then(function (deployedCustomer) {\n if(deployedCustomer){\n loadCustomers()\n $scope.clearActiveCustomer()\n }\n }, function (er) {\n console.log(er)\n })\n }\n\n $scope.openDisableDialog = function(customer) {\n if (!customer || !customer.id)\n return\n const modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'disableCustomerDialog.html',\n controller: 'disableCustomerDialogController',\n resolve: {\n customer: () => customer\n }\n })\n modalInstance.result.then(function () {\n loadCustomers()\n $scope.clearActiveCustomer()\n }, function (er) { console.log(er) })\n }\n\n $scope.openCustomerOrderDialog = function(order){\n const modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'customerOrderDialog.html',\n controller: 'customerOrderDialogController',\n resolve: {\n order: () => order,\n customerId: () => $scope.registration.id\n }\n })\n modalInstance.result.then(function (savedOrder) {\n if(savedOrder){\n var updated = $filter('filter')($scope.orders, { id: savedOrder.id }, true)[0];\n if(updated){\n var index = $scope.order.indexOf(updated);\n $scope.order[index] = savedOrder;\n } else {\n $scope.orders.unshift(savedOrder);\n }\n }\n }, function (er) {\n console.log(er)\n }) \n }\n\n $scope.updateStartDate = function($event) {\n const date = $event.originalEvent.detail\n $scope.date.startDate = date\n }\n $scope.updateEndDate = function($event) {\n const date = $event.originalEvent.detail\n $scope.date.endDate = date\n }\n }])","import * as customerService from \"@common/services/customers/customerService\"\nimport * as timeService from \"@common/services/timeService\"\n\nvar DigiLean = angular.module('DigiLean');\nDigiLean.controller('payingCustomersController', ['$scope', '$stateParams',\n function ($scope, $stateParams) {\n \n\n // Select tab based on input or default first.\n $scope.selectTab = function (tab) {\n $scope.indexTab = tabs.indexOf(tab);\n if (tab == \"billinglist\" && !hasLoadedCustomerStatus) {\n loadCustomerStatus();\n }\n }\n\n var tabs = [\"billinglist\", \"invoicing\", \"invoices\"];\n var activeTab = tabs[0];\n if ($stateParams.tab) {\n activeTab = $stateParams.tab;\n }\n $scope.selectTab(activeTab);\n \n \n var hasLoadedCustomerStatus = false; \n function loadCustomerStatus() {\n hasLoadedCustomerStatus = true;\n customerService.getCustomerStatus().then(function (accounts) {\n $scope.accounts = accounts\n for (var i = 0; i < $scope.accounts.length; i++) {\n $scope.accounts[i].due = calculateDue($scope.accounts[i]);\n if ($scope.accounts[i].endDate) {\n var daysLeft = timeService.getDurationInDays(moment(), $scope.accounts[i].endDate);\n if ($scope.accounts[i].due >= daysLeft - 1) {\n $scope.accounts[i].due = null;\n }\n }\n if ($scope.accounts[i].due < 11) {\n $scope.accounts[i].soonPaymentTime = true;\n }\n if ($scope.accounts[i].billing == 'YEARLY' && $scope.accounts[i].due < 46) {\n $scope.accounts[i].soonPaymentTime = true;\n }\n }\n \n });\n }\n\n\n\n function calculateDue(account) {\n var due = 0;\n var startDate = moment(account.startDate);\n if (account.billing == 'YEARLY') {\n\n var dayOfYear = startDate.dayOfYear();\n var currentDayOfYear = moment().dayOfYear();\n var diff = dayOfYear - currentDayOfYear;\n if (diff >= 0) {\n due = diff;\n } else {\n var totalDayInThisYear = moment().endOf(\"year\").dayOfYear();\n due = totalDayInThisYear - currentDayOfYear + dayOfYear;\n }\n } else {\n var dayOfMonth = startDate.get('date');\n var currentDayOfMonth = moment().get('date');\n var diff = dayOfMonth - currentDayOfMonth;\n if (diff >= 0) {\n due = diff;\n } else {\n var totalDayInThisMonth = moment().daysInMonth();\n due = totalDayInThisMonth - currentDayOfMonth + dayOfMonth;\n }\n }\n return due;\n }\n function statusCounter(account) {\n if (account.isTrial) {\n $scope.trial = $scope.trial + 1;\n } else {\n if (account.billing == 'MONTHLY') {\n $scope.monthlycustomers = $scope.monthlycustomers + 1;\n } else if (account.billing == 'YEARLY') {\n $scope.yearlycustomers = $scope.yearlycustomers + 1;\n }\n }\n }\n\n\n\n\n\n }]);","import * as timeService from \"@common/services/timeService\"\n\nangular\n .module(\"DigiLean\")\n .directive('invoicing', ['$filter','customerAccountService', \n function ($filter, customerAccountService) {\n return {\n templateUrl: 'invoicing.html',\n restrict: 'E',\n scope: {\n // 'datasourceId': '<',\n },\n link: function (scope, elem, attrs) {\n scope.isLoading = false;\n scope.timePeriod = timeService.getTimePeriod(\"month\"); // Current month, should be able to change\n function loadData() {\n scope.isLoading = true;\n customerAccountService().getInvoiceSummaryForPeriod(scope.timePeriod).then(function (summary) {\n scope.summary = summary;\n customerAccountService().getInvoicesForPeriod(scope.timePeriod).then(function (invoices) {\n scope.invoices = invoices;\n // Now check invoice status on summary\n scope.summary.result.invoicesCreated.forEach(element => {\n // filter on customer number\n element.invoiced = getInvoiceForCustomerNumber(scope.invoices, element.customerNumber)\n // check if invoice can assumed completed. Using parseInt to avoid \"øreavrunding\" forskjell\n element.invoiceCompleted = element.sumIncTax.toFixed(2) == element.invoiced.sumInvoiced.toFixed(2);\n });\n scope.isLoading = false;\n });\n \n });\n \n }\n\n function getInvoiceForCustomerNumber(invoices, customerNumber) {\n var customerInvoiced = {\n customerNumber: customerNumber,\n sumInvoiced: 0,\n invoices: []\n };\n invoices.forEach(invoice => {\n if (invoice.customer.customerNumber == customerNumber) {\n customerInvoiced.sumInvoiced += invoice.taxInclusiveAmountCurrency;\n customerInvoiced.invoices.push(invoice);\n }\n });\n return customerInvoiced;\n }\n loadData();\n\n scope.lastMonth = function () {\n var start = moment(scope.timePeriod.from).subtract(1, 'months');\n var end = moment(start).endOf(\"month\"); \n scope.timePeriod = {\n from: start.utc().toDate().toJSON(),\n to: end.utc().toDate().toJSON()\n };\n loadData();\n }\n scope.nextMonth = function () {\n var start = moment(scope.timePeriod.from).add(1, 'months');\n var end = moment(start).endOf(\"month\"); \n scope.timePeriod = {\n from: start.utc().toDate().toJSON(),\n to: end.utc().toDate().toJSON()\n };\n loadData();\n }\n\n scope.refresh = function () {\n loadData();\n }\n\n scope.createInvoice = function (invoice) {\n customerAccountService().createInvoice(invoice).then(function (created) {\n alert(\"Created invoice in UniEconomy with invoiceNumber: \" + created.invoiceNumber);\n invoice.invoiceCompleted = true;\n });\n }\n }\n }\n }]);\n\n","import * as timeService from \"@common/services/timeService\"\n\nangular\n .module(\"DigiLean\")\n .directive('invoices', ['customerAccountService',\n function (customerAccountService) {\n return {\n templateUrl: 'invoices.html',\n restrict: 'E',\n scope: {\n // 'datasourceId': '<',\n },\n link: function (scope, elem, attrs) {\n scope.isLoading = false;\n scope.timePeriod = timeService.getTimePeriod(\"month\"); // Current month, should be able to change\n function loadData() {\n scope.isLoading = true;\n customerAccountService().getInvoicesForPeriod(scope.timePeriod).then(function (invoices) {\n scope.invoices = invoices;\n scope.isLoading = false;\n });\n }\n loadData();\n\n scope.lastMonth = function () {\n var start = moment(scope.timePeriod.from).subtract(1, 'months');\n var end = moment(start).endOf(\"month\"); \n scope.timePeriod = {\n from: start.utc().toDate().toJSON(),\n to: end.utc().toDate().toJSON()\n };\n loadData();\n }\n scope.nextMonth = function () {\n var start = moment(scope.timePeriod.from).add(1, 'months');\n var end = moment(start).endOf(\"month\"); \n scope.timePeriod = {\n from: start.utc().toDate().toJSON(),\n to: end.utc().toDate().toJSON()\n };\n loadData();\n }\n scope.refresh = function() {\n loadData();\n }\n }\n }\n }]);\n\n","// Controller for the actual modal\nimport { addConnector } from \"@common/services/admin/connectorAdminService\"\nconst DigiLean = angular.module('DigiLean')\nDigiLean.controller('newConnectorController', ['$scope', '$uibModalInstance',\n function ($scope, $uibModalInstance) {\n $scope.connector = {\n // id: \"00000000-0000-0000-0000-000000000000\",\n name: \"\"\n }\n $scope.ok = async function () {\n const connector = await addConnector($scope.connector)\n $scope.publish(\"SendConnectorCreated\", connector)\n $uibModalInstance.close()\n }\n\n $scope.close = function () {\n $uibModalInstance.dismiss('cancel')\n }\n }\n])","import { translateLabelInstant } from \"@common/services/language/DigiLeanLang\";\nvar DigiLean = angular.module('DigiLean');\nDigiLean.controller('datalistController', ['$scope', '$stateParams', 'dataListService','$translate','modalService','languageAdminService',\n function ($scope, $stateParams, dataListService, $translate, modalService, languageAdminService) {\n $scope.listId = parseInt($stateParams.id);\n $scope.list = null;\n $scope.items = []\n\n var defaultConfig = {languageCode: '',\n languageLabel: $translate.instant('ADMIN_DEFAULT_CONFIG'),\n nativeLabel: $translate.instant('ADMIN_DEFAULT_CONFIG')\n };\n $scope.selectedLanguage = defaultConfig;\n $scope.languages = languageAdminService().getSupportedLanguages()\n $scope.languages.unshift($scope.selectedLanguage);\n\n $scope.changeLanguage = function (language) {\n if(!language) return;\n $scope.selectedLanguage = language;\n $scope.items.forEach(item => {\n item.customLanguageLabel = item.customLanguageLabels.find(q => q.languageCode == $scope.selectedLanguage.languageCode)\n });\n }\n\n dataListService().get($scope.listId).then(function (list) {\n $scope.list = list;\n $scope.items = list.items;\n })\n $scope.addItem = function () {\n var item = {\n identifier: $scope.items.length + 1,\n name: \"item\",\n dataListId: $scope.listId\n }\n dataListService().addItemToList($scope.listId, item).then(function (savedItem) {\n savedItem.isEditMode = true;\n savedItem.customLanguageLabels = [] // add empty array for custom lang on new items\n $scope.items.push(savedItem);\n setTimeout(function () {\n $(\".item-identifier\").focus();\n }, 50);\n })\n }\n\n $scope.updateTranslationLabel = function (item) {\n if(item.customLanguageLabel){\n if(!item.customLanguageLabel.languageCode){ // new translation label\n item.customLanguageLabel.languageCode = $scope.selectedLanguage.languageCode;\n }\n dataListService().updateTranslationLabel(item.id, item.customLanguageLabel).then(function (updatedLabel) {\n if (!item.customLanguageLabel.id) { // insert custom lang labels to avoid to reload all\n item.customLanguageLabels.push(updatedLabel)\n }\n })\n } \n }\n\n $scope.saveItem = function (item) {\n dataListService().updateDataListItem(item.id, item).then(function (item) {\n }) \n }\n $scope.removeItem = function (item) {\n deleteItem(item);\n }\n\n function updateItemsOrder(e, ui) {\n var items = ui.item.sortable.droptargetModel;\n var itemsSortOrder = {\n dataListId: $scope.listId,\n sortOrders: []\n }\n\n var index = 0;\n items.forEach(item => {\n itemsSortOrder.sortOrders.push({\n id: item.id,\n sortOrder: index,\n });\n index += 1;\n });\n dataListService().updateItemsSortOrder($scope.listId, itemsSortOrder);\n }\n\n $scope.itemsSortableOptions = {\n connectWith: \".summaryList\",\n handle: \".drag-handle\",\n placeholder: \"summary-item-sortable-placeholder\",\n stop: updateItemsOrder\n };\n\n $scope.setItemViewMode = function (item) {\n item.isEditMode = false;\n }\n $scope.setItemEditMode = function (item) {\n item.isEditMode = true;\n }\n\n async function deleteItem(item) {\n \n let modalOptions = {\n closeButtonText: translateLabelInstant(\"COMMON_CANCEL\"),\n actionButtonText: translateLabelInstant(\"COMMON_DELETE\"),\n headerText: translateLabelInstant(\"COMMON_DELETE\") + ' ' + item.name + '?',\n bodyText: translateLabelInstant(\"DATALIST_DELETE_ITEM_CONFIRMATION\")\n };\n try {\n const result = await modalService.showModal({}, modalOptions)\n const index = $scope.items.indexOf(item);\n $scope.items.splice(index, 1);\n dataListService().deleteDataListItem(item.id)\n }\n catch{}\n };\n\n }]);","import { translateLabelInstant } from \"@common/services/language/DigiLeanLang\";\n\n// Controller for the actual modal\nvar DigiLean = angular.module('DigiLean');\nDigiLean.controller('datalistsController', ['$scope','$state','$filter','$translate', '$uibModal','modalService','dataListService',\n function ($scope,$state, $filter, $translate, $uibModal, modalService, dataListService) {\n $scope.lists = [];\n dataListService().getLists().then(function(lists) {\n $scope.lists = lists;\n });\n $scope.addList = function () {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'newDataList.html',\n controller: 'newDataListController',\n resolve: {\n }\n });\n modalInstance.result.then(function (list) {\n $scope.lists.push(list); \n // Route to items\n $state.go('admindatalist', { id: list.id }, { reload: false });\n }, function () {\n \n });\n }\n $scope.editList = function (list) {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'editDataList.html',\n controller: 'editDataListController',\n resolve: {\n dataList: list\n }\n });\n modalInstance.result.then(function (list) {\n var matchingList = $filter('filter')($scope.lists, { id: list.id }, true);\n if (matchingList.length > 0) {\n matchingList[0].name = list.name;\n matchingList[0].description = list.description;\n }\n }, function () {\n \n });\n }\n $scope.delete = function (list) {\n\n dataListService().listInUse(list.id).then(function(result) {\n var canDelete = true;\n if(result.dataSources.length>0 || result.deviationTypes.length>0){\n canDelete = false;\n }\n if(canDelete){\n \n var modalOptions = {\n closeButtonText: translateLabelInstant(\"COMMON_CANCEL\"),\n actionButtonText: translateLabelInstant(\"COMMON_DELETE\"),\n headerText: translateLabelInstant(\"COMMON_DELETE\") + ' ' + list.name + '?',\n bodyText: translateLabelInstant(\"ADMIN_MESSAGE_DELETE_DATALIST_CONFIRMATION\")\n };\n modalService.showModal({}, modalOptions).then(function (result) {\n dataListService().deleteList(list.id).then(function (data) {\n var index = $scope.lists.indexOf(list);\n $scope.lists.splice(index, 1);\n });\n });\n \n } else {\n var datasourcetext = \"\";\n var buttons;\n if(result.dataSources.length > 0) { \n var idTranslated = $translate.instant('COMMON_ID') \n for(var s=0; s< result.dataSources.length; s++){\n datasourcetext = datasourcetext + result.dataSources[s].title + \" (\" + idTranslated + \":\" + result.dataSources[s].id + \")\";\n if(s != result.dataSources.length-1){\n datasourcetext = datasourcetext + \", \\n\";\n }\n }\n buttons = {datasources: {\n text: result.dataSources.length + \" \" + $translate.instant('ADMIN_DATA_DATASOURCES'),\n className: \"digilean-label-historical\",\n closeModal: true,\n value: \"DATASOURCE\"\n }};\n }\n var deviationtypestext = \"\";\n if(result.deviationTypes.length > 0) { \n for(var s=0; s< result.deviationTypes.length; s++){\n deviationtypestext = deviationtypestext + result.deviationTypes[s].title;\n if(s != result.deviationTypes.length-1){\n deviationtypestext = deviationtypestext + \", \";\n }\n }\n if(buttons){\n buttons = {datasources: {\n text: result.dataSources.length + \" \" + $translate.instant('ADMIN_DATA_DATASOURCES'),\n className: \"digilean-label-historical\",\n closeModal: true,\n value: \"DATASOURCE\"\n },\n deviationtypes: {\n text: result.deviationTypes.length + \" \" + $translate.instant('COMMON_DEVIATION_TYPES'),\n className: \"digilean-label-historical\",\n closeModal: true,\n value: \"DEVIATIONTYPES\"\n }} ;\n } else {\n buttons = {deviationtypes: {\n text: result.deviationTypes.length + \" \" + $translate.instant('COMMON_DEVIATION_TYPES'),\n className: \"digilean-label-historical\",\n closeModal: true,\n value: \"DEVIATIONTYPES\"\n }} ;\n }\n }\n swal({\n title: $translate.instant('ADMIN_DATALIST_DELETE_WARNING'),\n icon: \"warning\",\n buttons: buttons,\n dangerMode: true,\n closeOnClickOutside: true,\n closeOnEsc: true\n }).then((value) => {\n switch (value) {\n\n case \"DATASOURCE\":\n swal({\n title: $translate.instant('ADMIN_DATA_DATASOURCES'),\n text: datasourcetext,\n })\n break;\n\n case \"DEVIATIONTYPES\":\n swal({\n title: $translate.instant('COMMON_DEVIATION_TYPES'),\n text: deviationtypestext,\n })\n break;\n\n default:\n }\n });\n }\n });\n \n \n };\n\n \n\n }]);","import toaster from \"@common/components/toast\"\n\nvar DigiLean = angular.module('DigiLean'); DigiLean.controller('dataAdminController', ['$scope', '$uibModal', '$translate', '$filter', 'modalService', 'dataSourceService',\n function ($scope, $uibModal, $translate, $filter, modalService, dataSourceService) {\n\n $scope.filters = null;\n $scope.dataSources = {\n list: [],\n filteredList: []\n };\n\n $scope.$watch('query', function (query) {\n if ($scope.query) {\n $scope.searchQuery= angular.copy($scope.query);\n }\n });\n\n $scope.subscribe(\"DataSourceCreated\", function (dataSource) {\n getDataSources();\n });\n\n $scope.delete = function (data) {\n $translate(['COMMON_CANCEL', 'COMMON_DELETE', 'ADMIN_MESSAGE_DELETE_DATA_CONFIRMATION']).then(function (translations) {\n var modalOptions = {\n closeButtonText: translations.COMMON_CANCEL,\n actionButtonText: translations.COMMON_DELETE,\n headerText: translations.COMMON_DELETE + ' ' + data.title + '?',\n bodyText: translations.ADMIN_MESSAGE_DELETE_DATA_CONFIRMATION\n };\n\n modalService.showModal({}, modalOptions).then(function (result) {\n dataSourceService().delete(data.id).then(function (data) {\n getDataSources();\n $scope.publish(\"SendDataSourceDeleted\", data.id);\n $translate('ADMIN_MESSAGE_DATA_DELETED').then(function (msg) {\n toaster.info(msg);\n }, function (translationId) {\n $scope.headline = translationId;\n });\n });\n });\n });\n }\n\n $scope.addDataSource = function () {\n $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'newDataSource.html',\n controller: 'newDataSourceController',\n resolve: {\n }\n });\n }\n\n function getManualKpiIdentifierSource() {\n return {\n sourceType: 'MANUAL_KPI_IDENTIFIER',\n title: $translate.instant('ADMIN_MANUAL_KPI_IDENTIFIER'),\n description: $translate.instant('DASHBOARD_KPI_DYNAMIC_DESC'),\n featureKey: 'ManualKpiIdentifier',\n unitsOfTimeOfTime: 'DAY',\n elements: [{sourceColumn: 'assetId', type: 'asset', isMandatory: false, label: $translate.instant('COMMON_ASSET')},] \n }\n }\n var unitsOfTime = [\n {value: \"DAY\", displayName:\"COMMON_TIMEPERIOD_DAY\"},\n {value: \"WEEK\", displayName:\"COMMON_TIMEPERIOD_WEEK\"},\n {value: \"MONTH\", displayName:\"COMMON_TIMEPERIOD_MONTH\"},\n {value: \"YEAR\", displayName:\"COMMON_TIMEPERIOD_YEAR\"}\n ];\n\n var getDataSources = function () {\n dataSourceService().getList().then(function (list) {\n list.push(getManualKpiIdentifierSource());\n list.forEach(source => {\n // find unit of time\n var unitOfTime = $filter('filter')(unitsOfTime, { value: source.unitOfTime }, true);\n if (unitOfTime.length > 0) {\n source.displayUnitOfTime = $translate.instant(unitOfTime[0].displayName);\n }\n source.isConfigurable = isConfigurable(source);\n \n });\n list = list.sort((a, b) => a.title.localeCompare(b.title));\n $scope.dataSources.list = list\n $scope.dataSources.filteredList = list;\n \n\n });\n }\n\n function isConfigurable(datasource) {\n return !(datasource && datasource.featureKey && \n (datasource.featureKey === 'CompetenceBall' || \n datasource.featureKey === 'ManualKpiIdentifier'));\n }\n\n getDataSources();\n\n }]);","import toaster from \"@common/components/toast\";\n\nvar DigiLean = angular.module('DigiLean');\nDigiLean.controller('dataSourceController', ['$scope', '$stateParams', '$filter', '$translate', 'dataListService', 'dataSourceService', \n function ( $scope, $stateParams, $filter, $translate, dataListService, dataSourceService) {\n $scope.dataSourceId = parseInt($stateParams.id);\n\n $scope.registrationSettings = null;\n $scope.liveTrendSettings = null;\n\n var selectedDataListId = null;\n $scope.selectedDataList = null;\n $scope.datalists = [];\n var tags = [];\n\n dataSourceService().get($scope.dataSourceId).then(function (dataSource) {\n $scope.dataSource = dataSource;\n $scope.liveTrendSettings = {\n dataSource: dataSource\n }\n $scope.registrationSettings = {\n dataSource: dataSource\n }\n updateConfigurationData($scope.dataSource);\n });\n\n $scope.propertyChanged = function () {\n dataSourceService().update($scope.dataSource.id, $scope.dataSource).then(function (source) {\n sendDataSourceUpdated();\n });\n }\n\n $scope.allAttributeTypes = [\n { id: \"text\", label: \"Small text\", languageCode: \"ADMIN_DATA_DATASOURCE_SMALLTEXT\" },\n { id: \"description\", label: \"Larger text\", languageCode: \"ADMIN_DATA_DATASOURCE_LARGERTEXT\", sourceColumn: \"description\" },\n { id: \"number\", label: \"Number\", languageCode: \"ADMIN_DATA_DATASOURCE_NUMBER\" },\n { id: \"bool\", label: \"Boolean\", languageCode: \"ADMIN_DATA_DATASOURCE_BOOLEAN\" },\n { id: \"list\", label: \"List\", languageCode: \"ADMIN_DATA_LISTS\" },\n { id: \"asset\", label: \"Asset\", languageCode: \"COMMON_ASSET\", sourceColumn: \"assetId\" },\n { id: \"area\", label: \"Area\", languageCode: \"COMMON_AREA\", sourceColumn: \"areaId\" },\n { id: \"project\", label: \"Project\", languageCode: \"COMMON_PROJECT\", sourceColumn: \"projectId\" },\n { id: \"user\", label: \"User\", languageCode: \"COMMON_USER\" },\n ];\n $scope.attributeTypes = [\n { id: \"text\", label: \"Small text\", languageCode: \"ADMIN_DATA_DATASOURCE_SMALLTEXT\" },\n { id: \"description\", label: \"Larger text\", languageCode: \"ADMIN_DATA_DATASOURCE_LARGERTEXT\", sourceColumn: \"description\" },\n { id: \"number\", label: \"Number\", languageCode: \"ADMIN_DATA_DATASOURCE_NUMBER\" },\n { id: \"bool\", label: \"Boolean\", languageCode: \"ADMIN_DATA_DATASOURCE_BOOLEAN\" },\n { id: \"list\", label: \"List\", languageCode: \"ADMIN_DATA_LISTS\" },\n { id: \"asset\", label: \"Asset\", languageCode: \"COMMON_ASSET\", sourceColumn: \"assetId\" },\n { id: \"area\", label: \"Area\", languageCode: \"COMMON_AREA\", sourceColumn: \"areaId\" },\n { id: \"project\", label: \"Project\", languageCode: \"COMMON_PROJECT\", sourceColumn: \"projectId\" },\n { id: \"user\", label: \"User\", languageCode: \"COMMON_USER\", sourceColumn: \"userId\" },\n ];\n\n $scope.dimensions = [\n { id: \"dimension\", label: \"First dimension\", isConfigured: false, isFlexible: true },\n { id: \"dimension2\", label: \"Second dimension\", isConfigured: false, isFlexible: true },\n { id: \"dimension3\", label: \"Third dimension\", isConfigured: false, isFlexible: true },\n { id: \"dimension4\", label: \"Fourth dimension\", isConfigured: false, isFlexible: true },\n { id: \"description\", label: \"Description\", isConfigured: false, isFlexible: false },\n { id: \"areaId\", label: \"Area\", isConfigured: false, isFlexible: false },\n { id: \"assetId\", label: \"Asset\", isConfigured: false, isFlexible: false },\n { id: \"projectId\", label: \"Project\", isConfigured: false, isFlexible: false },\n ];\n // $scope.selectedDimension = $scope.dimensions[0];\n\n\n function updateConfigurationData(datasource) {\n datasource.isConfigurable = true;\n if (datasource.featureKey && datasource.featureKey === 'CompetenceBall') {\n datasource.isConfigurable = false;\n }\n\n for (var i = 0; i < datasource.elements.length; i++) {\n var sourceColumn = datasource.elements[i].sourceColumn;\n var matching = $filter('filter')($scope.attributeTypes, { sourceColumn: sourceColumn }, true);\n if (matching.length > 0) {\n var index = $scope.attributeTypes.indexOf(matching[0]);\n $scope.attributeTypes.splice(index, 1);\n } else if (sourceColumn.startsWith(\"dimension\")) {\n var dimension = $filter('filter')($scope.dimensions, { id: sourceColumn }, true);\n if (dimension.length === 1) {\n $scope.selectedDimension = dimension[0];\n dimension[0].isConfigured = true;\n }\n }\n }\n\n checkAvailableDimensions();\n // Translate labels\n for (var index = 0; index < $scope.attributeTypes.length; index++) {\n $scope.attributeTypes[index].label = $translate.instant($scope.attributeTypes[index].languageCode);\n }\n\n // Init tags and focus\n setTimeout(function () {\n var isSetupMode = true;\n\n $(\"#datasourceTags\").tagit({\n // This will make Tag-it submit a single form value, as a comma-delimited field.\n singleField: true,\n singleFieldNode: $('#tagsSelected'),\n afterTagAdded: function (event, ui) {\n if (!isSetupMode) {\n var dataSourceTag = {\n id: 0,\n tag: ui.tagLabel,\n dataSourceId: $scope.dataSource.id\n }\n dataSourceService().addTag($scope.dataSource.id, dataSourceTag).then(function (newTagId) {\n var savedTag = {\n id: newTagId,\n tag: ui.tagLabel,\n dataSourceId: $scope.dataSource.id\n };\n tags.push(savedTag);\n })\n\n }\n },\n beforeTagRemoved: function (event, ui) {\n var matching = $filter('filter')(tags, { tag: ui.tagLabel }, true);\n if (matching.length > 0) {\n dataSourceService().deleteTag($scope.dataSource.id, matching[0].id);\n }\n }\n });\n if (datasource.tags) {\n tags = datasource.tags;\n var tagArray;\n if (typeof stringValue === \"string\") {\n tagArray = datasource.tags.split(\",\");\n for (var i = 0; i < tagArray.length; i++) {\n $(\"#datasourceTags\").tagit('createTag', tagArray[i]);\n }\n } else {\n tagArray = datasource.tags;\n for (var i = 0; i < tagArray.length; i++) {\n $(\"#datasourceTags\").tagit('createTag', tagArray[i].tag);\n }\n }\n isSetupMode = false;\n }\n }, 50);\n /*\n if ($scope.attributeTypes.length > 0) {\n $scope.selectedAttributeType = $scope.attributeTypes[0];\n }*/\n }\n\n var sendDataSourceUpdated = function () {\n var dataSourceUpdated = {\n dataSourceId: $scope.dataSource.id\n };\n $scope.publish(\"SendDataSourceUpdated\", dataSourceUpdated);\n }\n $scope.currentStep = {};\n $scope.selectStep = function (step) {\n $scope.currentStep = step;\n }\n\n\n\n $scope.unitsOfTime = [\n { value: \"DAY\", displayName: \"COMMON_TIMEPERIOD_DAY\" },\n { value: \"WEEK\", displayName: \"COMMON_TIMEPERIOD_WEEK\" },\n { value: \"MONTH\", displayName: \"COMMON_TIMEPERIOD_MONTH\" },\n { value: \"YEAR\", displayName: \"COMMON_TIMEPERIOD_YEAR\" }\n ];\n\n dataListService().getLists().then(function (list) {\n if (list) {\n $scope.datalists = list;\n }\n });\n\n $scope.selectedDatalistItems = [];\n $scope.selectedDataListChanged = function() {\n var listOptions = {includeDeletedItems:false};\n dataListService().getItems($scope.selectedDataList.id, listOptions).then(function(items){\n $scope.selectedDatalistItems = items;\n });\n }\n\n // $scope.isDimensionSelectionDisabled = false;\n $scope.selectedAttributeTypeChanged = function (type) {\n if (type.sourceColumn && type.sourceColumn !== 'userId') {\n // auto select dimension\n var dimension = $filter('filter')($scope.dimensions, { id: type.sourceColumn }, true);\n if (dimension.length === 1) {\n $scope.selectedDimension = dimension[0];\n dimension[0].isConfigured = true;\n }\n } else {\n var available = $filter('filter')($scope.dimensions, { isConfigured: false }, true);\n if (available.length > 0) {\n $scope.selectedDimension = available[0];\n available[0].isConfigured = true;\n if (available.length == 1) {\n checkAvailableDimensions();\n //$scope.attributeTypes.splice\n //All dimension are configured\n // var availableTypes = $filter('filter')($scope.attributeTypes, { id: !'dimension' }, false);\n //$scope.attributeTypes = availableTypes;\n }\n }\n }\n }\n\n\n function checkAvailableDimensions() {\n var flexibleDim = $filter('filter')($scope.dimensions, { isFlexible: true }, true);\n var available = $filter('filter')(flexibleDim, { isConfigured: false }, true);\n if (available.length == 0) {\n for (var t = 0; t < $scope.attributeTypes.length; t++) {\n if ($scope.attributeTypes[t].id == 'text' || $scope.attributeTypes[t].id == 'user' ||\n $scope.attributeTypes[t].id == 'list' || $scope.attributeTypes[t].id == 'bool' ||\n $scope.attributeTypes[t].id == 'number') {\n $scope.attributeTypes.splice(t, 1);\n t--;\n }\n }\n }\n }\n\n $scope.steps = [];\n $translate(['COMMON_INFO', 'COMMON_VALUE', 'ADMIN_DATA_DATASOURCE_ATTRIBUTES', 'ADMIN_DATA_DATASOURCE_TARGETS']).then(function (translations) {\n $scope.steps.push({ id: 'COMMON_INFO', title: translations.COMMON_INFO });\n $scope.steps.push({ id: 'ADMIN_DATA_DATASOURCE_ATTRIBUTES', title: translations.ADMIN_DATA_DATASOURCE_ATTRIBUTES });\n $scope.steps.push({ id: 'ADMIN_DATA_DATASOURCE_TARGETS', title: translations.ADMIN_DATA_DATASOURCE_TARGETS });\n $scope.currentStep = $scope.steps[0];\n });\n $scope.$on('$translateChangeSuccess', function () {\n $scope.steps[0].title = $translate.instant('COMMON_INFO');\n $scope.steps[2].title = $translate.instant('ADMIN_DATA_DATASOURCE_ATTRIBUTES');\n $scope.steps[3].title = $translate.instant('ADMIN_DATA_DATASOURCE_TARGETS');\n });\n\n $scope.elementId = 0;\n $scope.attributeName = \"\";\n $scope.isAttributeRequired = false;\n $scope.isElementRegistrationNew = true;\n $scope.deleteElement = function (element) {\n dataSourceService().deleteElement(element.id).then(function () {\n var index = $scope.dataSource.elements.indexOf(element);\n if (index > -1) {\n $scope.dataSource.elements.splice(index, 1);\n }\n\n sendDataSourceUpdated();\n\n $scope.clearElementRegistration();\n updateConfigurationData($scope.dataSource);\n });\n };\n $scope.clearElementRegistration = function () {\n $scope.elementId = 0;\n $scope.isElementRegistrationNew = true;\n $scope.attributeName = \"\";\n $scope.selectedAttributeType = null;\n $scope.selectedDimension = null;\n $scope.isAttributeRequired = false;\n $scope.selectedDatalistItems = [];\n $scope.attributeTypes = [\n { id: \"text\", label: \"Small text\", languageCode: \"ADMIN_DATA_DATASOURCE_SMALLTEXT\" },\n { id: \"description\", label: \"Larger text\", languageCode: \"ADMIN_DATA_DATASOURCE_LARGERTEXT\", sourceColumn: \"description\" },\n { id: \"number\", label: \"Number\", languageCode: \"ADMIN_DATA_DATASOURCE_NUMBER\" },\n { id: \"bool\", label: \"Boolean\", languageCode: \"ADMIN_DATA_DATASOURCE_BOOLEAN\" },\n { id: \"list\", label: \"List\", languageCode: \"ADMIN_DATA_LISTS\" },\n { id: \"asset\", label: \"Asset\", languageCode: \"COMMON_ASSET\", sourceColumn: \"assetId\" },\n { id: \"area\", label: \"Area\", languageCode: \"COMMON_AREA\", sourceColumn: \"areaId\" },\n { id: \"project\", label: \"Project\", languageCode: \"COMMON_PROJECT\", sourceColumn: \"projectId\" },\n { id: \"user\", label: \"User\", languageCode: \"COMMON_USER\" },\n ];\n\n $scope.dimensions = [\n { id: \"dimension\", label: \"First dimension\", isConfigured: false, isFlexible: true },\n { id: \"dimension2\", label: \"Second dimension\", isConfigured: false, isFlexible: true },\n { id: \"dimension3\", label: \"Third dimension\", isConfigured: false, isFlexible: true },\n { id: \"dimension4\", label: \"Fourth dimension\", isConfigured: false, isFlexible: true },\n { id: \"description\", label: \"Description\", isConfigured: false, isFlexible: false },\n { id: \"areaId\", label: \"Area\", isConfigured: false, isFlexible: false },\n { id: \"assetId\", label: \"Asset\", isConfigured: false, isFlexible: false },\n { id: \"projectId\", label: \"Project\", isConfigured: false, isFlexible: false },\n ];\n }\n $scope.editElement = function (element) {\n $scope.elementId = element.id;\n $scope.isElementRegistrationNew = false;\n $scope.attributeName = element.label;\n var type = $filter('filter')($scope.allAttributeTypes, { id: element.type }, true);\n if (type.length === 1) {\n $scope.selectedAttributeType = type[0];\n }\n var dimension = $filter('filter')($scope.dimensions, { id: element.sourceColumn }, true);\n if (dimension.length === 1) {\n $scope.selectedDimension = dimension[0];\n }\n $scope.isAttributeRequired = element.isMandatory;\n if (element.dataListId) {\n var list = $filter('filter')($scope.datalists, { id: element.dataListId }, true);\n if (list.length === 1) {\n $scope.selectedDataList = list[0];\n $scope.selectedDataListChanged();\n }\n }\n\n }\n\n $scope.saveElement = function () {\n\n // Resolve which field to map to in database, IMPORTANT! needs to be correct lowerCased to map with data-Values\n\n\n if ($scope.selectedAttributeType.id == 'list') {\n selectedDataListId = $scope.selectedDataList.id;\n } else {\n selectedDataListId = null;\n }\n var attribute = {\n id: $scope.elementId,\n label: $scope.attributeName,\n type: $scope.selectedAttributeType.id,\n isMandatory: $scope.isAttributeRequired,\n sourceColumn: $scope.selectedDimension.id,\n dataListId: selectedDataListId\n }\n\n if ($scope.isElementRegistrationNew) {\n dataSourceService().addElement($scope.dataSource.id, attribute).then(function (element) {\n $scope.dataSource.elements.push(element);\n $scope.clearElementRegistration();\n updateConfigurationData($scope.dataSource);\n sendDataSourceUpdated();\n }, err => {\n toaster.error(err.data.title)\n })\n } else {\n dataSourceService().updateElement($scope.elementId, attribute).then(function (element) {\n var changedElement = $filter('filter')($scope.dataSource.elements, { id: element.id }, false);\n var index = $scope.dataSource.elements.indexOf(changedElement[0]);\n $scope.dataSource.elements[index] = element;\n $scope.clearElementRegistration();\n updateConfigurationData($scope.dataSource);\n sendDataSourceUpdated();\n }, err => {\n toaster.error(err.data.title)\n })\n }\n\n };\n }]);","import toaster from \"@common/components/toast\"\nimport { translateLabelInstant } from \"@common/services/language/DigiLeanLang\"\n\nvar DigiLean = angular.module('DigiLean'); \nDigiLean.controller('manualKpiIdentifierAdminController', ['$scope','$translate','qualityService','modalService',\n function ($scope, $translate, qualityService, modalService) {\n\n $scope.visualizationTypes = {\n list: [],\n filteredList: []\n };\n\n $scope.$watch('query', function (query) {\n if ($scope.query) {\n $scope.searchQuery= angular.copy($scope.query);\n }\n });\n\n qualityService().getActiveVisualizationTypes().then(function (result) {\n $scope.visualizationTypes.list = result;\n $scope.visualizationTypes.filteredList = result;\n });\n\n\n $scope.delete = function (visualizationType) {\n swal({\n title: $translate.instant('COMMON_DELETE_ITEM_DESCRIPTION'),\n text: $translate.instant('ADMIN_DATA_DELETE_VALUES'),\n icon: \"warning\",\n buttons: { cancelaction: { \n text: translateLabelInstant('COMMON_CANCEL'), \n className: \"digilean-label-historical\",\n closeModal: true,\n value: false},\n deletepermanent: { \n text: $translate.instant('ADMIN_PERMANENT_DELETE'), \n className: \"sa-digilean-button-danger \",\n value: \"DELETEPERMANENT\",\n closeModal: true}\n },\n dangerMode: true,\n closeOnClickOutside: true,\n closeOnEsc: true\n })\n .then((value) => {\n if (value === \"DELETEPERMANENT\") {\n qualityService().deleteVisualizationType(visualizationType).then(function () {\n var index = $scope.visualizationTypes.list.indexOf(visualizationType);\n if (index >= 0 && index < $scope.visualizationTypes.list.length) {\n $scope.visualizationTypes.list.splice(index, 1);\n }\n var indexFiltered = $scope.visualizationTypes.filteredList.indexOf(visualizationType);\n if (indexFiltered >= 0 && indexFiltered < $scope.visualizationTypes.filteredList.length) {\n $scope.visualizationTypes.filteredList.splice(indexFiltered, 1);\n }\n toaster.info($translate.instant('COMMON_DELETED'));\n });\n }\n });\n }\n }]);","import * as assetService from \"@common/services/assetService\"\nimport { translateLabelInstant } from \"@common/services/language/DigiLeanLang\"\nvar DigiLean = angular.module('DigiLean'); DigiLean.controller('dataVisualizationTypeController', ['$scope', '$sce', '$stateParams', '$filter', '$translate', 'areaService', 'projectService','NgTableParams','qualityService',\n function ($scope, $sce,$stateParams, $filter, $translate, areaService, projectService, NgTableParams, qualityService) {\n $scope.visualizationType = $stateParams.type;\n\n $scope.columns = [];\n $scope.totalValues = 0;\n\n $scope.buildColumns = function () {\n $scope.columns = [\n {\n title: $translate.instant(\"COMMON_DATE\"),\n field: 'date',\n visible: true,\n sortable: 'date',\n getValue: renderValue,\n dataType: \"date\"\n },\n {\n title: $translate.instant(\"COMMON_REGISTRATION\"),\n field: 'lastModified',\n visible: true,\n sortable: 'lastModified',\n getValue: renderValue,\n dataType: \"timestamp\"\n },\n {\n title: $translate.instant(\"COMMON_VALUE\"),\n field: 'status',\n sortable: 'status',\n getValue: renderValue,\n visible: true,\n dataType: \"target\"\n },\n {\n title: $translate.instant(\"COMMON_ASSET\"),\n field: 'assetName',\n sortable: 'assetName',\n getValue: renderValue,\n visible: true,\n dataType: \"text\",\n sourceColumn: \"assetId\"\n },\n {\n title: $translate.instant(\"COMMON_PROJECT\"),\n field: 'projectName',\n sortable: 'projectName',\n getValue: renderValue,\n visible: true,\n dataType: \"text\",\n sourceColumn: \"projectId\"\n },\n {\n title: $translate.instant(\"COMMON_AREA\"),\n field: 'areaName',\n sortable: 'areaName',\n getValue: renderValue,\n visible: true,\n dataType: \"text\",\n sourceColumn: \"areaId\"\n }\n ];\n var deleteColumn =\n {\n title: $translate.instant(\"COMMON_ACTION\"),\n visible: true,\n dataType: \"command\"\n }\n $scope.columns.push(deleteColumn);\n }\n\n function renderValue($scope, row) {\n var item = this;\n var field = item.field;\n var value = row[field];\n \n switch (this.dataType) {\n case \"date\":\n case \"timestamp\":\n return $sce.trustAsHtml(``);\n case \"target\":\n var html = ``;\n switch (value) {\n case 1:\n html = ``;\n break;\n case 2:\n html = ``;\n break;\n case 3:\n html = ``;\n break;\n case 4:\n html = ``;\n break;\n }\n return $sce.trustAsHtml(html);\n default:\n return value;\n }\n }\n $scope.init = function () {\n if (!$scope.visualizationType) return;\n\n var listOperations = [];\n listOperations.push(assetService.getAllAssets(true).then(function (data) {\n $scope.assets = data;\n }));\n listOperations.push(areaService().getList(true).then(function (data) {\n $scope.areas = data;\n }));\n listOperations.push(projectService().getList(true).then(function (data) {\n $scope.projects = data;\n }));\n\n Promise.all(listOperations).then(() => {\n $scope.getLatestValues();\n })\n }\n $scope.init();\n\n $scope.getLatestValues = function (params) {\n if (!$scope.visualizationType) return;\n\n $scope.buildColumns();\n $scope.tableParams = new NgTableParams({\n sorting: { date: \"desc\" },\n },\n {\n getData: $scope.getTableValues\n });\n\n }\n\n $scope.getTableValues = function (params) {\n\n var sorting = [];\n // Build sortExpression for database to be able to deserialize, becuase NgTableParams.sorting is a dynamic object.\n for (var propt in params._params.sorting) {\n sorting.push({\n property: propt,\n direction: params._params.sorting[propt]\n });\n }\n // We will build params based on the built-in NgTableParams + our sorting array\n var dbParams = {\n page: params._params.page,\n count: params._params.count,\n sorting: sorting\n }\n return qualityService().getTableValues($scope.visualizationType, dbParams).then(function (data) {\n angular.forEach(data.values, function (registration) {\n var asset = $filter('filter')($scope.assets, { id: registration.assetId }, true);\n if (asset && asset.length > 0) {\n registration.assetName = asset[0].name;\n } else {\n if (registration.assetId) {\n registration.assetName = registration.assetId;\n }\n }\n var area = $filter('filter')($scope.areas, { id: registration.areaId }, true);\n if (area && area.length > 0) {\n registration.areaName = area[0].name;\n } else {\n if (registration.areaId) {\n registration.areaName = registration.areaId;\n }\n }\n var project = $filter('filter')($scope.projects, { id: registration.projectId }, true);\n if (project && project.length > 0) {\n registration.projectName = project[0].displayName;\n } else {\n if (registration.projectId) {\n registration.projectName = registration.projectId;\n }\n }\n\n });\n $scope.totalValues = data.total;\n params.total(data.total); // recal. page nav controls\n return data.values;\n });\n }\n\n $scope.delete = function (element) {\n qualityService().deleteDateStatus(element.id).then(function () {\n var selected = $filter('filter')($scope.tableParams.data, { id: element.id });\n if (selected.length > 0) {\n var index = $scope.tableParams.data.indexOf(selected[0]);\n if (index > -1) {\n $scope.tableParams.data.splice(index, 1);\n }\n }\n });\n \n };\n \n }]);","import { getAllUnitsCached } from \"@common/services/businessUnitService\"\nangular\n .module('DigiLean')\n .controller(\"editDeviationTypePermissionController\", ['$scope','$translate', 'deviationService', '$filter','$uibModalInstance', 'deviationTypeId', \n function ($scope, $translate,deviationService, $filter, $uibModalInstance, deviationTypeId) {\n\n\n $scope.deviationTypeId = deviationTypeId;\n $scope.deviationType = {};\n\n $scope.selectedPermission = \"all\";\n $scope.selectedBusinessUnits = [];\n $scope.businessUnits = [];\n $scope.businessUnitsEnabled = false;\n\n\n getAllUnitsCached().then(units => {\n if (units.length > 0)\n $scope.businessUnitsEnabled = true\n $scope.businessUnits.push(...units)\n\n deviationService().getPermissionsForType($scope.deviationTypeId).then(function(permissions){\n $scope.selectedPermission = \"all\";\n $scope.selectedBusinessUnits = [];\n if($scope.businessUnits && permissions && permissions.length > 0){\n $scope.selectedPermission = \"businessunit\";\n $scope.selectedBusinessUnits = permissions;\n //Loop through all business units to make sure previous values is not cached\n for (var i = 0; i < $scope.businessUnits.length; i++) { \n $scope.businessUnits[i].include = false; \n }\n for (var i = 0; i < $scope.selectedBusinessUnits.length; i++) { \n var unit = $filter('filter')($scope.businessUnits, { id: $scope.selectedBusinessUnits[i].businessUnitId });\n if(unit && unit.length > 0){\n unit[0].include = true;\n } \n }\n } else {\n for (var i = 0; i < $scope.businessUnits.length; i++) { \n $scope.businessUnits[i].include = true; \n $scope.includeAll = true; \n }\n }\n });\n\n })\n\n\n $scope.deselectAll = function (include) {\n for (var k = 0; k < $scope.businessUnits.length; k++) {\n $scope.businessUnits[k].include = include; \n }\n };\n \n $scope.modifyPermissions = function (include) {\n $scope.includeAll = false;\n var selected = $filter('filter')($scope.businessUnits, { include: true });\n if(selected.length === $scope.businessUnits.length){\n $scope.includeAll = true;\n }\n };\n\n $scope.save = function () {\n var specificSelectedBusinessUnits = $filter('filter')($scope.businessUnits, { include: true });\n if($scope.selectedPermission === \"all\" || specificSelectedBusinessUnits.length === $scope.businessUnits.length){\n specificSelectedBusinessUnits = [];\n }\n\n var deviationTypeSelectedBusinessUnits = {DeviationTypeId : $scope.deviationTypeId, BusinessUnits: specificSelectedBusinessUnits}\n\n deviationService().updateDeviationTypePermissions($scope.deviationTypeId,deviationTypeSelectedBusinessUnits).then(function(result){\n $uibModalInstance.close()\n }); \n };\n\n $scope.close = function () {\n $uibModalInstance.dismiss('cancel');\n };\n }]);\n","import { Subscription } from \"rxjs\"\nvar DigiLean = angular.module('DigiLean');\nDigiLean.controller('deviationTypeAdminController', ['$scope', '$filter', 'deviationService','$uibModal','$state','$translate','modalService',\n function ($scope, $filter, deviationService, $uibModal, $state, $translate, modalService) {\n $scope.types = []\n\n var load = function() {\n deviationService().getAllDeviationTypes().then(function(types) {\n $scope.types = types;\n });\n }\n\n load();\n\n $scope.editSettings = function(type) {\n $state.go('deviationType', { id: type.id }, { reload: false });\n }\n\n $scope.edit = function (type) {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'editDeviationType.html',\n controller: 'editDeviationTypeController',\n resolve: {\n deviationTypeId: function () {\n return type.id;\n }\n }\n });\n modalInstance.result.then(function (type) {\n var found = $filter('filter')($scope.types, { id: type.id });\n if (found.length == 1) {\n var index = $scope.types.indexOf(found[0]);\n $scope.types[index] = type;\n }\n }, function () {\n });\n }\n\n $scope.permission = function (type) {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'editDeviationTypePermission.html',\n controller: 'editDeviationTypePermissionController',\n resolve: {\n deviationTypeId: function () {\n return type.id;\n }\n }\n });\n modalInstance.result.then(function (type) {\n }, function () {\n });\n }\n \n\n $scope.addType = function () {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'newDeviationType.html',\n controller: 'newDeviationTypeController'\n });\n modalInstance.result.then(function (type) {\n $scope.types.push(type);\n }, function () {\n });\n }\n\n $scope.deleteType = function (item) {\n var modalOptions = {\n closeButtonText: $translate.instant(\"COMMON_CANCEL\"),\n actionButtonText: $translate.instant(\"COMMON_DELETE\"),\n headerText: $translate.instant(\"COMMON_DELETE\") + ' ' + item.title + '?',\n bodyText: $translate.instant(\"ADMIN_MESSAGE_DELETE_DEVIATION_TYPE_CONFIRMATION\") \n };\n \n modalService.showModal({}, modalOptions).then(function (result) {\n deviationService().deleteDeviationType(item.id).then(function (data) { \n load();\n },function (err) {\n });\n });\n }\n }]);","import { getCompanySetting } from \"@common/stores/companySettingsStore\"\n\nvar DigiLean = angular.module('DigiLean');\nDigiLean.directive(\"deviationTypeConsequences\", ['$filter', 'deviationService','languageAdminService',\n function ($filter, deviationService, languageAdminService) {\n return {\n templateUrl: 'deviationTypeConsequences.html',\n restrict: 'E',\n scope: {\n 'deviationTypeId': '=', \n 'deviationTypeTitle': '=',\n },\n link: function (scope, elem, attrs) {\n scope.consequences = [];\n\n scope.severityNotSpecifiedDesc = \"\";\n scope.severityLowDesc = \"\";\n scope.severityMediumDesc = \"\";\n scope.severityHighDesc = \"\";\n\n var orgLanguage = 'en';\n var allSeverities = [];\n\n scope.$watch(\"deviationTypeId\", function () {\n if (!scope.deviationTypeId) return;\n loadSettings();\n });\n\n scope.languages = languageAdminService().getSupportedLanguages()\n scope.selectedCustomLanguageLabel;\n \n scope.changeLanguage = function (language) {\n if(!language) return;\n scope.selectedLanguage = language;\n setSeverityTranslationLabel();\n }\n\n function setSeverityTranslationLabel(){ \n scope.severityNotSpecifiedDesc = \"\";\n scope.severityLowDesc = \"\";\n scope.severityMediumDesc = \"\";\n scope.severityHighDesc = \"\";\n for(var i=0; i< allSeverities.length; i++){\n if(allSeverities[i].severity == 0){\n scope.severityNotSpecifiedDesc = getTranslationLabel(allSeverities[i].customLanguageLabels, scope.selectedLanguage.languageCode);\n } else if(allSeverities[i].severity == 1){\n scope.severityLowDesc = getTranslationLabel(allSeverities[i].customLanguageLabels, scope.selectedLanguage.languageCode);\n } else if(allSeverities[i].severity == 2){\n scope.severityMediumDesc = getTranslationLabel(allSeverities[i].customLanguageLabels, scope.selectedLanguage.languageCode);\n } else if(allSeverities[i].severity == 3){\n scope.severityHighDesc = getTranslationLabel(allSeverities[i].customLanguageLabels, scope.selectedLanguage.languageCode);\n }\n }\n }\n \n function loadSettings(){\n deviationService().getConsequences().then(function (consequences) {\n scope.consequences = consequences;\n deviationService().getConsequencesForType(scope.deviationTypeId).then(function(consequences) { \n var validConsequencesForType = consequences;\n for(var i=0; i {\n orgLanguage = value\n scope.selectedLanguage = scope.languages.find(q => q.languageCode == orgLanguage)\n for(var i=0; i< allSeverities.length; i++){\n if(allSeverities[i].severity == 0){\n scope.severityNotSpecifiedDesc = getTranslationLabel(allSeverities[i].customLanguageLabels, orgLanguage);\n } else if(allSeverities[i].severity == 1){\n scope.severityLowDesc = getTranslationLabel(allSeverities[i].customLanguageLabels, orgLanguage);\n } else if(allSeverities[i].severity == 2){\n scope.severityMediumDesc = getTranslationLabel(allSeverities[i].customLanguageLabels, orgLanguage);\n } else if(allSeverities[i].severity == 3){\n scope.severityHighDesc = getTranslationLabel(allSeverities[i].customLanguageLabels, orgLanguage);\n }\n }\n })\n } \n });\n });\n }\n\n function getTranslationLabel(list,languageCode){\n var customLanguageLabel = list.find(q => q.languageCode == languageCode);\n if(!customLanguageLabel){\n return \"\";\n }\n return customLanguageLabel.label;\n }\n\n function checkShow(itemId, validConsequences){\n var matching = $filter('filter')(validConsequences, { consequenceId: itemId }, true);\n if (matching.length > 0) {\n return true;\n } else {\n return false;\n }\n } \n\n scope.toggleShow = function (item) {\n item.consequenceId = item.id;\n if(item.show){\n item.deviationTypeId = scope.deviationTypeId;\n deviationService().addDeviationTypeConsequence(item).then(function() { \n });\n } else {\n if(item.id){\n deviationService().deleteDeviationTypeConsequence(item.id).then(function() { \n });\n }\n }\n };\n\n scope.updateSeverityDescription = function(severity, description){\n var matching = $filter('filter')(allSeverities, { severity: severity }, true);\n var item = {severity:severity,\n deviationTypeId: scope.deviationTypeId};\n var translabel = {\n label: description\n }\n if (matching.length > 0) {\n item = matching[0];\n var existing = item.customLanguageLabels.find(q => q.languageCode == scope.selectedLanguage.languageCode)\n \n if(!existing){\n var customLanguageLabel = {\n id:0,\n languageCode: scope.selectedLanguage.languageCode,\n label: translabel.label\n }\n item.id = 0;\n item.customLanguageLabel = customLanguageLabel;\n } else {\n if(existing.label == translabel.label) return; // no changes made to label\n existing.label = translabel.label;\n item.customLanguageLabelId = existing.id;\n item.customLanguageLabel = existing;\n } \n } else { // new custom label\n item.id = 0;\n var labelTranslation = {\n id:0,\n languageCode: scope.selectedLanguage.languageCode,\n label: translabel.label\n }\n item.customLanguageLabel = labelTranslation;\n }\n deviationService().updateDeviationSeverityTranslation(item).then(function(result) { \n // have to update allSeverities with all valid translations\n deviationService().getSeveritiesForType(scope.deviationTypeId).then(function(severities) { \n allSeverities = severities;\n\n });\n });\n }\n }\n\n }\n }]);\n","import * as assetService from \"@common/services/assetService\"\nimport toaster from \"@common/components/toast\"\n\nvar DigiLean = angular.module('DigiLean');\nDigiLean.controller('categoryAdminController', ['$scope', '$filter', '$translate', 'deviationService', 'modalService','languageAdminService',\nfunction ($scope, $filter, $translate, deviationService, modalService, languageAdminService) {\n $scope.allCategories = null;\n $scope.message = \"\";\n $scope.assets = null;\n $scope.categoryList = [];\n $scope.selectedCategory = {};\n $scope.selectedAsset = {};\n $scope.showEdit = false;\n\n $translate('ADMIN_REGISTER_NEW_CATEGORY').then(function (title) {\n $scope.actionTitle = title;\n }, function (translationId) {\n $scope.headline = translationId;\n });\n\n var defaultConfig = {languageCode: '',\n languageLabel: $translate.instant('ADMIN_DEFAULT_CONFIG'),\n nativeLabel: $translate.instant('ADMIN_DEFAULT_CONFIG')\n };\n $scope.selectedLanguage = defaultConfig;\n $scope.languages = languageAdminService().getSupportedLanguages()\n $scope.languages.unshift($scope.selectedLanguage);\n $scope.selectedCustomLanguageLabel;\n\n $scope.changeLanguage = function (language) {\n if(!language) return;\n $scope.selectedLanguage = language;\n $scope.selectedCustomLanguageLabel = $scope.registration.customLanguageLabels.find(q => q.languageCode == $scope.selectedLanguage.languageCode)\n if(!$scope.selectedCustomLanguageLabel) $scope.selectedCustomLanguageLabel = {};\n }\n\n $scope.updateTranslationLabel = function (translabel) {\n var existing = $scope.registration.customLanguageLabels.find(q => q.languageCode == $scope.selectedLanguage.languageCode)\n \n if(!existing){\n var customLanguageLabel = {\n id:0,\n languageCode: $scope.selectedLanguage.languageCode,\n label: translabel.label,\n description: translabel.description\n }\n $scope.registration.customLanguageLabels.push(customLanguageLabel);\n } else {\n existing.label = translabel.label;\n existing.description = translabel.description;\n }\n }\n\n $scope.newCategory = function () {\n resetRegistration();\n // $scope.showEdit = true;\n }\n\n $scope.assetChanged = function (asset) { \n $scope.registration.assetId = asset.id;\n $scope.selectedAsset = asset;\n }\n\n $scope.assetChangeHandler = function (assetinfo) {\n if (assetinfo) {\n $scope.registration.assetId = assetinfo.asset.id;\n $scope.selectedAsset = assetinfo.asset;\n } \n }\n \n function setupAsset(assets){\n $scope.assets = assets;\n for (var k = 0; k < $scope.assets.length; k++) {\n $scope.assets[k].cssLevel = \"level-\" + $scope.assets[k].level; \n }\n $scope.assetmodel = { assetId: null,\n assets: $scope.assets};\n }\n assetService.getAllAssets().then(function (data) {\n setupAsset(data);\n setFollowUpGroup();\n });\n\n $scope.save = function (isValid) {\n if ($scope.selectedCategory) {\n $scope.registration.parentId = $scope.selectedCategory.id;\n }\n \n if ($scope.registration.isNew) {\n deviationService().createProblemCategory($scope.registration).then(function (newCategory) {\n loadCategories();\n resetRegistration();\n // Raise signalr event\n $translate('ADMIN_MESSAGE_CATEGORY_ADDED').then(function (msg) {\n toaster.success(msg);\n }, function (translationId) {\n $scope.headline = translationId;\n });\n }, function () {\n\n });\n } else {\n deviationService().updateProblemCategory($scope.registration).then(function () {\n loadCategories();\n resetRegistration();\n // Raise signalr event\n $translate('ADMIN_MESSAGE_CATEGORY_MODIFIED').then(function (msg) {\n toaster.success(msg);\n }, function (translationId) {\n $scope.headline = translationId;\n });\n }, function () {\n\n });\n }\n }\n\n $scope.edit = function (category) {\n $scope.new = false;\n \n $scope.registration = {\n isNew: false,\n id: category.id,\n title: category.title,\n description: category.description,\n parentId: category.parentId,\n customLanguageLabels: category.customLanguageLabels\n }\n \n $scope.selectedCategory = $filter('filter')($scope.allCategories, { id: category.parentId }, true)[0];\n $scope.categoryList = $filter('filter')($scope.allCategories, NotLikeIdFilter(\"id\", category.id));\n var clearCategory = {title:\"\"}; \n $scope.categoryList.unshift(clearCategory);\n $scope.selectedAsset = $filter('filter')($scope.assets, { id: category.assetId })[0];\n $scope.assetmodel = { assetId: category.assetId,\n assets: $scope.assets};\n $scope.selectedCustomLanguageLabel = $scope.registration.customLanguageLabels.find(q => q.languageCode == $scope.selectedLanguage.languageCode)\n if(!$scope.selectedCustomLanguageLabel) $scope.selectedCustomLanguageLabel = {};\n }\n\n $scope.newSubCategory = function (category) {\n $scope.showEdit = true;\n $translate('ADMIN_REGISTER_NEW_CATEGORY').then(function (title) {\n $scope.actionTitle = title;\n }, function (translationId) {\n $scope.headline = translationId;\n });\n \n $scope.registration = {\n isNew: true,\n title: \"\",\n description: \"\",\n parentId: category.id,\n customLanguageLabels: []\n }\n \n $scope.selectedCategory = $filter('filter')($scope. gories, { id: category.id })[0]; \n }\n \n\n function NotLikeIdFilter(property, categoryId) {\n return function (item) {\n if (item[property] === null) return false;\n var id = item[property];\n return id !== categoryId;\n\n }\n }\n\n\n function setFollowUpGroup() {\n if($scope.allCategories && $scope.assets){\n for(var i=0; i<$scope.allCategories.length; i++){\n if($scope.allCategories[i].assetId){\n var asset = $filter('filter')($scope.assets , { id: $scope.allCategories[i].assetId }, true);\n if(asset[0]){\n $scope.allCategories[i].assetName = asset[0].name;\n }\n }\n if($scope.allCategories[i].children){\n for(var s=0; s<$scope.allCategories[i].children.length; s++){\n if($scope.allCategories[i].children[s].assetId){\n var asset = $filter('filter')($scope.assets , { id: $scope.allCategories[i].children[s].assetId }, true);\n if(asset[0]){\n $scope.allCategories[i].children[s].assetName = asset[0].name;\n }\n }\n }\n }\n }\n }\n } \n\n $scope.delete = function (category) {\n $translate(['COMMON_CANCEL', 'COMMON_DELETE', 'ADMIN_MESSAGE_DELETE_CATEGORY_CONFIRMATION']).then(function (translations) {\n var modalOptions = {\n closeButtonText: translations.COMMON_CANCEL,\n actionButtonText: translations.COMMON_DELETE,\n headerText: translations.COMMON_DELETE + ' ' + category.title + '?',\n bodyText: translations.ADMIN_MESSAGE_DELETE_CATEGORY_CONFIRMATION \n };\n\n modalService.showModal({}, modalOptions).then(function (result) {\n deviationService().deleteProblemCategory(category.id).then(function (data) { \n loadCategories();\n resetRegistration();\n $translate('ADMIN_MESSAGE_CATEGORY_DELETED').then(function (msg) {\n toaster.info(msg); \n }, function (translationId) {\n $scope.headline = translationId;\n });\n },function (err) {\n });\n });\n });\n }\n\n var resetRegistration = function () {\n $scope.new = true;\n $translate('ADMIN_REGISTER_NEW_CATEGORY').then(function (title) {\n $scope.actionTitle = title;\n }, function (translationId) {\n $scope.headline = translationId;\n });\n $scope.selectedCategory = {};\n $scope.selectedAsset = {};\n $scope.categoryList = $scope.allCategories;\n $scope.selectedCustomLanguageLabel = {};\n $scope.registration = {\n isNew: true,\n id: 0,\n title: \"\",\n description: \"\",\n parentId: null,\n customLanguageLabels: []\n }\n }\n\n var loadCategories = function () {\n deviationService().getTranslationsWithProblemCategories().then(function (list) {\n $scope.allCategories = list;\n \n $scope.categoryList = $scope.allCategories.slice();\n var clearCategory = {title:\"\"}; \n $scope.categoryList.unshift(clearCategory);\n setFollowUpGroup();\n setTimeout(function () {\n $('.dd').nestable({ \n maxDepth:2 });\n $('.dd').on('change', function (e, l) {\n /* on change event */\n var structure = $('.dd').nestable('serialize');\n deviationService().saveCategoryTree(structure);\n });\n }, 600);\n });\n }\n\n resetRegistration();\n loadCategories();\n setFollowUpGroup();\n}]);","import toaster from \"@common/components/toast\"\n\nvar DigiLean = angular.module('DigiLean'); \nDigiLean.controller('causeAdminController', ['$scope','$translate', 'deviationService','modalService', 'languageAdminService',\nfunction ($scope, $translate, deviationService, modalService, languageAdminService) {\n $scope.savedSuccessfully = false;\n $scope.message = \"\";\n\n $translate('DEVIATION_NEW_DEVIATION_CAUSE').then(function (title) {\n $scope.actionTitle = title;\n }, function (translationId) {\n $scope.headline = translationId;\n });\n\n \n var defaultConfig = {languageCode: '',\n languageLabel: $translate.instant('ADMIN_DEFAULT_CONFIG'),\n nativeLabel: $translate.instant('ADMIN_DEFAULT_CONFIG')\n };\n $scope.selectedLanguage = defaultConfig;\n $scope.languages = languageAdminService().getSupportedLanguages()\n $scope.languages.unshift($scope.selectedLanguage);\n $scope.selectedCustomLanguageLabel;\n\n $scope.changeLanguage = function (language) {\n if(!language) return;\n $scope.message = \"\";\n if(!$scope.registration.title){\n $scope.selectedLanguage = defaultConfig; //reset back top default setting\n $scope.message = $translate.instant('ADMIN_DATA_FIELD_MISSING') + \": \" + $translate.instant('DEVIATION_CAUSE');\n return;\n }\n $scope.selectedLanguage = language;\n $scope.selectedCustomLanguageLabel = $scope.registration.customLanguageLabels.find(q => q.languageCode == $scope.selectedLanguage.languageCode)\n if(!$scope.selectedCustomLanguageLabel) $scope.selectedCustomLanguageLabel = {};\n }\n\n $scope.updateTranslationLabel = function (translabel) {\n var existing = $scope.registration.customLanguageLabels.find(q => q.languageCode == $scope.selectedLanguage.languageCode)\n \n if(!existing){\n var customLanguageLabel = {\n id:0,\n languageCode: $scope.selectedLanguage.languageCode,\n label: translabel.label,\n description: translabel.description\n }\n $scope.registration.customLanguageLabels.push(customLanguageLabel);\n } else {\n existing.label = translabel.label;\n existing.description = translabel.description;\n }\n }\n\n\n $scope.clearActiveCause = function () {\n $translate('DEVIATION_NEW_DEVIATION_CAUSE').then(function (title) {\n $scope.actionTitle = title;\n }, function (translationId) {\n $scope.headline = translationId;\n });\n $scope.message = \"\";\n $scope.selectedCustomLanguageLabel = {};\n $scope.registration = {\n isNewCause: true,\n id: 0,\n title: \"\",\n description:\"\",\n customLanguageLabels: []\n };\n }\n\n $scope.clearActiveCause();\n\n $scope.causes = [];\n var loadCauses = function () {\n deviationService().getTranslationsWithCauses().then(function (causes) {\n $scope.causes = causes;\n });\n }\n loadCauses();\n $scope.editCause = function (cause) {\n $translate('COMMON_EDIT').then(function (title) {\n $scope.actionTitle = title;\n }, function (translationId) {\n $scope.headline = translationId;\n });\n $scope.registration = {\n isNewCause: false,\n id: cause.id,\n title: cause.title,\n description: cause.description,\n customLanguageLabels: cause.customLanguageLabels\n };\n $scope.selectedCustomLanguageLabel = $scope.registration.customLanguageLabels.find(q => q.languageCode == $scope.selectedLanguage.languageCode)\n if(!$scope.selectedCustomLanguageLabel) $scope.selectedCustomLanguageLabel = {};\n \n }\n\n $scope.delete = function (item) {\n $translate(['COMMON_CANCEL', 'COMMON_DELETE', 'ADMIN_MESSAGE_DELETE_CAUSE_CONFIRMATION']).then(function (translations) {\n var modalOptions = {\n closeButtonText: translations.COMMON_CANCEL,\n actionButtonText: translations.COMMON_DELETE,\n headerText: translations.COMMON_DELETE + ' ' + item.title + '?',\n bodyText: translations.ADMIN_MESSAGE_DELETE_CAUSE_CONFIRMATION \n };\n\n modalService.showModal({}, modalOptions).then(function (result) {\n deviationService().deleteCause(item.id).then(function (data) { \n loadCauses();\n clearActiveCause();\n $translate('ADMIN_MESSAGE_CONSEQUENCE_DELETED').then(function (msg) {\n toaster.info(msg); \n }, function (translationId) {\n $scope.headline = translationId;\n });\n },function (err) {\n });\n });\n });\n } \n\n $scope.save = function () {\n $scope.message = \"\";\n if ($scope.registration.isNewCause) {\n if(!$scope.registration.title){\n $scope.selectedLanguage = defaultConfig; //reset back top default setting\n $scope.message = $translate.instant('ADMIN_DATA_FIELD_MISSING') + \": \" + $translate.instant('DEVIATION_CAUSE');\n return;\n }\n deviationService().createCause($scope.registration).then(function () {\n $translate('ADMIN_MESSAGE_CAUSE_CREATED').then(function (msg) {\n toaster.success(msg);\n }, function (translationId) {\n $scope.headline = translationId;\n });\n loadCauses();\n $scope.clearActiveCause();\n });\n } else {\n deviationService().updateCause($scope.registration).then(function () {\n $translate('ADMIN_MESSAGE_CAUSE_UPDATED').then(function (msg) {\n toaster.success(msg);\n }, function (translationId) {\n $scope.headline = translationId;\n });\n loadCauses();\n });\n }\n }\n\n}]);","import { getCompanySetting } from \"@common/stores/companySettingsStore\"\nimport * as customerService from \"@common/services/customers/customerService\"\nimport toaster from \"@common/components/toast\"\n\nvar DigiLean = angular.module('DigiLean'); \nDigiLean.controller('consequenceAdminController', ['$scope', '$translate', 'deviationService','modalService','languageAdminService',\nfunction ($scope, $translate, deviationService, modalService,languageAdminService) {\n $scope.savedSuccessfully = false;\n $scope.message = \"\";\n\n $translate('DEVIATION_NEW_DEVIATION_CONSEQUENCE').then(function (title) {\n $scope.actionTitle = title;\n }, function (translationId) {\n $scope.headline = translationId;\n });\n\n\n $scope.clearActive = function () {\n $translate('DEVIATION_NEW_DEVIATION_CONSEQUENCE').then(function (title) {\n $scope.actionTitle = title;\n }, function (translationId) {\n $scope.headline = translationId;\n });\n $scope.message = \"\";\n $scope.selectedCustomLanguageLabel = {};\n $scope.registration = {\n isNew: true,\n id: 0,\n title: \"\",\n description: \"\",\n customLanguageLabels: []\n };\n }\n $scope.clearActive();\n\n $scope.currency = customerService.getDefaultCurrency()\n getCompanySetting(\"currency\").then(function (setting) {\n if (setting) {\n $scope.currency = setting\n }\n })\n\n \n var defaultConfig = {languageCode: '',\n languageLabel: $translate.instant('ADMIN_DEFAULT_CONFIG'),\n nativeLabel: $translate.instant('ADMIN_DEFAULT_CONFIG')\n };\n $scope.selectedLanguage = defaultConfig;\n $scope.languages = languageAdminService().getSupportedLanguages()\n $scope.languages.unshift($scope.selectedLanguage);\n $scope.selectedCustomLanguageLabel;\n\n $scope.changeLanguage = function (language) {\n if(!language) return;\n $scope.message = \"\";\n if(!$scope.registration.title){\n $scope.selectedLanguage = defaultConfig; //reset back top default setting\n $scope.message = $translate.instant('ADMIN_DATA_FIELD_MISSING') + \": \" + $translate.instant('DEVIATION_CONSEQUENCE');\n return;\n }\n $scope.selectedLanguage = language;\n $scope.selectedCustomLanguageLabel = $scope.registration.customLanguageLabels.find(q => q.languageCode == $scope.selectedLanguage.languageCode)\n if(!$scope.selectedCustomLanguageLabel) $scope.selectedCustomLanguageLabel = {};\n }\n\n $scope.updateTranslationLabel = function (translabel) {\n var existing = $scope.registration.customLanguageLabels.find(q => q.languageCode == $scope.selectedLanguage.languageCode)\n \n if(!existing){\n var customLanguageLabel = {\n id:0,\n languageCode: $scope.selectedLanguage.languageCode,\n label: translabel.label,\n description: translabel.description\n }\n $scope.registration.customLanguageLabels.push(customLanguageLabel);\n } else {\n existing.label = translabel.label;\n existing.description = translabel.description;\n }\n }\n\n\n $scope.delete = function (item) {\n $translate(['COMMON_CANCEL', 'COMMON_DELETE', 'ADMIN_MESSAGE_DELETE_CONSEQUENCE_CONFIRMATION']).then(function (translations) {\n var modalOptions = {\n closeButtonText: translations.COMMON_CANCEL,\n actionButtonText: translations.COMMON_DELETE,\n headerText: translations.COMMON_DELETE + ' ' + item.title + '?',\n bodyText: translations.ADMIN_MESSAGE_DELETE_CONSEQUENCE_CONFIRMATION \n };\n\n modalService.showModal({}, modalOptions).then(function (result) {\n deviationService().deleteConsequence(item.id).then(function (data) { \n load();\n $scope.clearActive();\n $translate('ADMIN_MESSAGE_CONSEQUENCE_DELETED').then(function (msg) {\n toaster.info(msg); \n }, function (translationId) {\n $scope.headline = translationId;\n });\n },function (err) {\n });\n });\n });\n }\n\n $scope.consequences = [];\n var load = function () {\n deviationService().getTranslationsWithConsequences().then(function (consequences) {\n $scope.consequences = consequences;\n });\n }\n load();\n $scope.edit = function (item) {\n $translate('COMMON_EDIT').then(function (title) {\n $scope.actionTitle = title;\n }, function (translationId) {\n $scope.headline = translationId;\n });\n $scope.registration = {\n isNew: false,\n id: item.id,\n title: item.title,\n unit: item.unit,\n description: item.description,\n customLanguageLabels: item.customLanguageLabels\n };\n $scope.selectedCustomLanguageLabel = $scope.registration.customLanguageLabels.find(q => q.languageCode == $scope.selectedLanguage.languageCode)\n if(!$scope.selectedCustomLanguageLabel) $scope.selectedCustomLanguageLabel = {};\n }\n\n $scope.save = function () {\n $scope.message = \"\";\n if ($scope.registration.isNew) {\n if(!$scope.registration.title){\n $scope.selectedLanguage = defaultConfig; //reset back top default setting\n $scope.message = $translate.instant('ADMIN_DATA_FIELD_MISSING') + \": \" + $translate.instant('DEVIATION_CONSEQUENCE');\n return;\n }\n deviationService().createConsequence($scope.registration).then(function () {\n $translate('ADMIN_MESSAGE_CONSEQUENCE_CREATED').then(function (msg) {\n toaster.success(msg);\n }, function (translationId) {\n $scope.headline = translationId;\n });\n load();\n $scope.clearActive();\n });\n } else {\n deviationService().updateConsequence($scope.registration).then(function () {\n $translate('ADMIN_MESSAGE_CONSEQUENCE_UPDATED').then(function (msg) {\n toaster.success(msg);\n }, function (translationId) {\n $scope.headline = translationId;\n });\n load();\n });\n }\n }\n\n}]);","import * as documentService from \"@common/services/documentService\"\n\nangular\n .module('DigiLean')\n .controller(\"editLearningMaterialController\", ['$scope','$filter', 'learningService', '$uibModalInstance', 'languageAdminService', 'materialId',\n function ($scope,$filter, learningService, $uibModalInstance,languageAdminService, materialId) {\n\n $scope.title = \"\";\n $scope.description = \"\";\n $scope.imageId = null;\n $scope.editImage = false;\n $scope.imageUrl = null;\n $scope.languages = languageAdminService().getSupportedLanguages();\n $scope.selectedLanguage = $scope.languages[0];\n\n learningService().getLearningMaterial(materialId).then(function(material){\n \n $scope.title = material.title;\n $scope.description = material.description;\n $scope.selectedLanguage = $filter('filter')($scope.languages, { languageCode: material.language })[0];\n $scope.imageId = material.imageId;\n $scope.imageUrl = material.imageUrl;\n if (!$scope.imageUrl) {\n $scope.editImage = true;\n }\n })\n\n $scope.setImageViewMode = function () {\n $scope.editImage = false;\n };\n $scope.setImageEditMode = function () {\n $scope.editImage = true;\n };\n $scope.setLanguage = function (language) {\n $scope.selectedLanguage = language;\n };\n $scope.ok = function () {\n var material = {\n id: materialId,\n title: $scope.title,\n description: $scope.description,\n imageId: $scope.imageId,\n language: $scope.selectedLanguage.languageCode\n }\n learningService().editLearningMaterial(material).then(function(created){\n $uibModalInstance.close(created)\n }); \n };\n\n $scope.uploadedFiles = []; // For uploading new attachments, will be connected to dropzone.\n $scope.fileUploaded = function (file) {\n $scope.imageId = file.id;\n documentService.getFileUrl(file.fileName).then(function(fileUrl) {\n $scope.imageUrl = fileUrl;\n $scope.editImage = false;\n });\n };\n \n $scope.close = function () {\n $uibModalInstance.dismiss('cancel');\n };\n }]);\n","import * as documentService from \"@common/services/documentService\"\n\nangular\n .module('DigiLean').directive(\"imageSection\", ['$filter', '$translate', 'learningService', 'debounce','Lightbox',\n function ($filter, $translate, learningService, debounce, Lightbox) {\n return {\n templateUrl: 'imageSection.html',\n restrict: 'E',\n scope: {\n 'section': '<',\n 'isEditMode': '<',\n },\n link: function (scope, elem, attrs) {\n scope.update = function () {\n \n learningService().updateSection(scope.section);\n }\n scope.commitChangesDebounced = debounce(scope.update, 2000, false);\n scope.imageUrl = null;\n scope.description = null;\n scope.$watch(\"section\", function (section) {\n if (section) {\n if (section.url) {\n scope.imageUrl = section.url;\n }\n scope.description = section.title;\n }\n });\n scope.descriptionChanged = function() {\n scope.section.title = scope.description;\n scope.commitChangesDebounced();\n }\n scope.uploadedFiles = []; // For uploading new attachments, will be connected to dropzone.\n scope.fileUploaded = function (file) {\n if(scope.isEditMode){\n scope.section.fileId = file.id;\n scope.update();\n documentService.getFileUrl(file.fileName).then(function (fileUrl) {\n scope.imageUrl = fileUrl;\n });\n }\n };\n\n scope.openLightboxModal = function () {\n var images = [\n {\n 'url': scope.imageUrl,\n 'thumbUrl': scope.imageUrl\n }\n ];\n Lightbox.openModal(images, 0);\n };\n }\n\n }\n }]);\n","import angular from \"angular\"\nconst DigiLean = angular.module(\"DigiLean\")\nimport { cloneDeep, debounce } from \"lodash\"\nimport type { LearningItemSection } from \"@api\"\nimport { NgComponent } from \"@common/model/angularModel\"\nDigiLean.component(\"diagramSection\", \n{\n bindings: {\n 'section': '<',\n 'isEditMode': '<'\n },\n templateUrl: \"diagramSection.html\",\n controller: ['$element', 'learningService', \n function(this: NgComponent, $element, learningService) {\n const $ctrl = this\n $ctrl.title = \"Diagram\"\n $ctrl.description = \"\"\n $ctrl.svg = \"\"\n \n const getCurrentSvgFromSettings = () => {\n const svg = $ctrl.section.content\n $ctrl.svg = svg\n $ctrl.description = $ctrl.section.title\n }\n\n $ctrl.$onInit = function() {\n if ($ctrl.section) {\n if ($ctrl.section.content) {\n getCurrentSvgFromSettings()\n }\n }\n }\n\n $ctrl.svgChanged = function(event) {\n const orgEvt = event.originalEvent\n const svg = orgEvt.detail\n $ctrl.svg = svg\n update()\n //saveSettings()\n }\n \n\n function update() {\n const section = cloneDeep($ctrl.section) as LearningItemSection\n section.content = $ctrl.svg\n section.title = $ctrl.description\n learningService().updateSection(section)\n }\n \n const commitChangesDebounced = debounce(update, 2000)\n\n let debouncer\n $ctrl.updateDescription = function() {\n debouncer = commitChangesDebounced()\n }\n\n function openEditor() {\n let diagramEl = $element[0].querySelector(\"digilean-diagram\")\n if (diagramEl)\n diagramEl.triggerEdit()\n }\n $ctrl.$onChanges = function (changes) {\n if (changes.isEditMode) {\n if (changes.isEditMode.currentValue && !changes.isEditMode.previousValue) {\n // openEditor()\n }\n if (!changes.isEditMode.currentValue && changes.isEditMode.previousValue) {\n commitChangesDebounced.flush()\n }\n }\n }\n $ctrl.openEditor = openEditor\n\n // scope.commitChangesDebounced = debounce(scope.update, 2000, false);\n // scope.contentChanged = function(val) {\n // scope.commitChangesDebounced(val);\n // };\n }]\n})\n","import toaster from \"@common/components/toast\"\n\nvar DigiLean = angular.module('DigiLean'); \nDigiLean.controller('customerAdminController', ['$scope', '$translate', 'projectService','modalService',\nfunction ($scope, $translate, projectService, modalService) {\n\n \n\n $scope.setItemViewMode = function (item) {\n item.isEditMode = false;\n }\n $scope.setItemEditMode = function (item) {\n item.isEditMode = true;\n }\n\n $scope.removeItem = function (item) {\n $translate(['COMMON_CANCEL', 'COMMON_DELETE', 'ADMIN_MESSAGE_DELETE_CUSTOMER_CONFIRMATION']).then(function (translations) {\n var modalOptions = {\n closeButtonText: translations.COMMON_CANCEL,\n actionButtonText: translations.COMMON_DELETE,\n headerText: translations.COMMON_DELETE + ' ' + item.name + '?',\n bodyText: translations.ADMIN_MESSAGE_DELETE_CUSTOMER_CONFIRMATION \n };\n\n modalService.showModal({}, modalOptions).then(function (result) {\n projectService().deleteProjectCustomer(item.id).then(function (data) { \n var index = $scope.customers.indexOf(item);\n $scope.customers.splice(index, 1);\n $translate('ADMIN_MESSAGE_CUSTOMER_DELETED').then(function (msg) {\n toaster.info(msg); \n }, function (translationId) {\n $scope.headline = translationId;\n });\n },function (err) {\n });\n });\n });\n }\n\n $scope.customers = [];\n var load = function () {\n projectService().getProjectCustomers().then(function (customers) {\n $scope.customers = customers;\n }); \n }\n load();\n\n\n $scope.addItem = function () {\n var item = {\n isNew: true,\n id: 0,\n name: \"\"\n }\n projectService().createNewCustomer(item).then(function (savedItem) {\n $translate('ADMIN_MESSAGE_CUSTOMER_CREATED').then(function (msg) {\n toaster.success(msg);\n }, function (translationId) {\n $scope.headline = translationId;\n });\n savedItem.isEditMode = true;\n $scope.customers.push(savedItem);\n setTimeout(function () {\n $(\".project-name\").focus();\n }, 50);\n });\n }\n\n $scope.saveItem = function (item) {\n projectService().updateCustomerInfo(item).then(function () {\n $translate('ADMIN_MESSAGE_CUSTOMER_UPDATED').then(function (msg) {\n toaster.success(msg);\n }, function (translationId) {\n $scope.headline = translationId;\n });\n }); \n }\n\n}]);","import toaster from \"@common/components/toast\"\n\nvar DigiLean = angular.module('DigiLean'); \nDigiLean.controller('projectRoleAdminController', ['$scope', '$filter', '$stateParams', '$location', '$timeout', '$translate', 'authService', 'projectService','modalService',\n function ($scope, $filter, $stateParams, $location, $timeout, $translate, authService, projectService, modalService) {\n $scope.savedSuccessfully = false;\n $scope.message = \"\";\n\n $translate('PROJECT_NEW_ROLE').then(function (title) {\n $scope.actionTitle = title;\n }, function (translationId) {\n $scope.headline = translationId;\n });\n\n\n $scope.clearActive = function () {\n $translate('PROJECT_NEW_ROLE').then(function (title) {\n $scope.actionTitle = title;\n }, function (translationId) {\n $scope.headline = translationId;\n });\n $scope.registration = {\n isNew: true,\n id: 0,\n name: \"\"\n };\n }\n $scope.clearActive();\n\n $scope.delete = function (item) {\n $translate(['COMMON_CANCEL', 'COMMON_DELETE', 'ADMIN_MESSAGE_DELETE_CONFIRMATION']).then(function (translations) {\n var modalOptions = {\n closeButtonText: translations.COMMON_CANCEL,\n actionButtonText: translations.COMMON_DELETE,\n headerText: translations.COMMON_DELETE + ' ' + item.name + '?',\n bodyText: translations.ADMIN_MESSAGE_DELETE_CONFIRMATION \n };\n\n modalService.showModal({}, modalOptions).then(function (result) {\n projectService().deleteProjectRole(item.id).then(function (data) { \n load();\n $scope.clearActive();\n $translate('ADMIN_MESSAGE_ROLE_DELETED').then(function (msg) {\n toaster.info(msg); \n }, function (translationId) {\n $scope.headline = translationId;\n });\n },function (err) {\n });\n });\n });\n }\n\n $scope.customers = [];\n var load = function () {\n projectService().getProjectCustomers().then(function (customers) {\n $scope.customers = customers;\n }); \n }\n load();\n $scope.edit = function (item) {\n $translate('COMMON_EDIT').then(function (title) {\n $scope.actionTitle = title;\n }, function (translationId) {\n $scope.headline = translationId;\n });\n $scope.registration = {\n isNew: false,\n id: item.id,\n name: item.name\n };\n }\n\n\n $scope.createNew = function(name){\n var role = {\n projectId: $scope.projectId,\n name: customername\n };\n\n projectService().createNewCustomer(customer).then(function (newRole) {\n //$scope.updateCustomer(newcustomer);\n });\n };\n /*\n $scope.updateCustomer = function(customer){\n projectService().updateCustomer($scope.projectId, customer.id).then(function (registeredcustomer) {\n }); \n };\n */\n\n $scope.save = function () {\n if ($scope.registration.isNew) {\n projectService().createNewRole($scope.registration).then(function (newrole) {\n $translate('COMMON_CREATED').then(function (msg) {\n toaster.success(msg);\n }, function (translationId) {\n $scope.headline = translationId;\n });\n load();\n $scope.clearActive();\n });\n } else {\n projectService().updateRole($scope.registration).then(function () {\n $translate('ADMIN_MESSAGE_ROLE_UPDATED').then(function (msg) {\n toaster.success(msg);\n }, function (translationId) {\n $scope.headline = translationId;\n });\n load();\n });\n }\n }\n\n }]);","import * as assetService from \"@common/services/assetService\"\nimport * as boardService from \"@common/services/boardService\"\nimport toaster from \"@common/components/toast\"\n\nvar DigiLean = angular.module('DigiLean'); DigiLean.controller('projectPortfolioAdminController', ['$scope', '$stateParams', '$translate', '$filter', '$uibModal', '$state','projectService', 'modalService',\nfunction ($scope, $stateParams, $translate, $filter, $uibModal, $state,projectService, modalService) {\n $scope.boards = [];\n $scope.activeboards = [];\n\n $scope.restore = function (board) {\n $translate(['COMMON_CANCEL', 'ADMIN_RESTORE', 'ADMIN_RESTORE_BOARD_DESCRIPTION']).then(function (translations) {\n var modalOptions = {\n closeButtonText: translations.COMMON_CANCEL,\n actionButtonText: translations.ADMIN_RESTORE,\n headerText: translations.ADMIN_RESTORE + ' ' + board.name + '?',\n bodyText: translations.ADMIN_RESTORE_BOARD_DESCRIPTION\n };\n\n modalService.showModal({}, modalOptions).then(function (result) {\n boardService.restore(board.id).then(function (data) {\n loadBoards();\n getActiveBoards();\n $translate('ADMIN_MESSAGE_BOARD_RESTORED').then(function (msg) {\n toaster.success(msg);\n }, function (translationId) {\n $scope.headline = translationId;\n });\n });\n });\n });\n }\n\n $scope.delete = function (board) {\n $translate(['COMMON_CANCEL', 'COMMON_DELETE', 'ADMIN_DELETED_BOARD_PERMANENTLY', 'ADMIN_DELETED_BOARD_PERMANENTLY_DESCRIPTION']).then(function (translations) {\n var modalOptions = {\n closeButtonText: translations.COMMON_CANCEL,\n actionButtonText: translations.ADMIN_DELETED_BOARD_PERMANENTLY,\n headerText: translations.COMMON_DELETE + ' ' + board.name + '?',\n bodyText: translations.ADMIN_DELETED_BOARD_PERMANENTLY_DESCRIPTION\n };\n\n modalService.showModal({}, modalOptions).then(function (result) {\n boardService.forceDelete(board.id).then(function (data) {\n loadBoards();\n $translate('ADMIN_MESSAGE_BOARD_DELETED').then(function (msg) {\n toaster.info(msg);\n }, function (translationId) {\n $scope.headline = translationId;\n });\n });\n });\n\n });\n }\n\n var loadBoards = function () {\n projectService().getProjectPortfolioForAdmin().then(function (boards) {\n $scope.activeboards = boards;\n });\n }\n\n function initialize() {\n assetService.getList().then(function (assets) {\n $scope.assets = assets;\n loadBoards();\n });\n\n }\n\n initialize();\n\n\n\n\n\n\n $scope.subscribe(\"BoardCreated\", function (board) {\n $translate('COMMON_BOARD_CREATED_SUCCESSFULLY').then(function (msg) {\n toaster.success(msg);\n }, function (translationId) {\n $scope.headline = translationId;\n });\n loadBoards();\n });\n\n $scope.subscribe(\"BoardDeleted\", function (id) {\n loadBoards();\n \n });\n $scope.edit = function (board) {\n var options = {\n targetType : \"Board\",\n targetId : board.id,\n includeProjects:false\n }\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'boardSettings.html',\n controller: 'boardSettingsController',\n resolve: {\n options: function () {\n return options;\n }\n }\n });\n modalInstance.result.then(function (asset) {\n loadBoards();\n }, function () {\n\n });\n \n }\n\n $scope.open = function (board) {\n $state.go('board', { id: board.id }, { reload: false });\n }\n\n $scope.deleteBoard = function (board) {\n $translate(['COMMON_CANCEL', 'COMMON_DELETE', 'ADMIN_DELETED_BOARD', 'ADMIN_DELETED_BOARD_DESCRIPTION']).then(function (translations) {\n var modalOptions = {\n closeButtonText: translations.COMMON_CANCEL,\n actionButtonText: translations.ADMIN_DELETED_BOARD,\n headerText: translations.COMMON_DELETE + ' ' + board.name + '?',\n bodyText: translations.ADMIN_DELETED_BOARD_DESCRIPTION\n };\n\n modalService.showModal({}, modalOptions).then(function (result) {\n boardService.deleteBoard(board.id).then(function () {\n $translate('ADMIN_MESSAGE_BOARD_DELETED').then(function (msg) {\n toaster.success(msg);\n }, function (translationId) {\n $scope.headline = translationId;\n });\n $scope.publish(\"SendBoardDeleted\", board.id);\n });\n });\n\n });\n }\n\n}]);","import envConfig from \"@common/envConfig\";\n\nangular.module('DigiLean').factory('signupService', ['$http','$translate',\n function ($http, $translate) {\n function signupService() {\n var resource = \"/signup\";\n var resourceUrl = envConfig.webApiUrl + resource;\n return {\n newTrialCustomerSetup: function (trialAccountSetup) {\n var url = resourceUrl + \"/NewTrialCustomerSetup/\";\n return $http.post(url, trialAccountSetup).then(function (result) {\n return result.data;\n });\n },\n getTrialStatus: function () {\n var url = resourceUrl + \"/GetTrialStatus\";\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n getActiveTrialStatus: function () {\n var url = resourceUrl + \"/GetActiveTrialStatus\";\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n getConvertedTrialStatus: function () {\n var url = resourceUrl + \"/GetConvertedTrialStatus\";\n return $http.get(url).then(function (result) {\n return result.data;\n });\n }, \n\n }\n }\n return signupService;\n }]);\n\n ","import * as assetService from \"@common/services/assetService\"\nimport toaster from \"@common/components/toast\"\n\nconst digiLean = angular.module('DigiLean');\ndigiLean.controller('userAccessController', ['$scope','$rootScope','$translate','$filter','$uibModalInstance', 'navigationService','projectService','user',\n function($scope, $rootScope, $translate, $filter, $uibModalInstance, navigationService, projectService, user) {\n\n $scope.hasProject = navigationService().hasModule(\"PROJECT\")\n $scope.steps = [];\n $scope.projects = [];\n\n var userId;\n if(user && user.userId){\n userId = user.userId;\n } else if (user && user.id){\n userId = user.id;\n }\n\n $rootScope.$on('$translateChangeSuccess', function () {\n $scope.steps[0].title = $translate.instant('COMMON_ASSETS');\n $scope.steps[1].title = $translate.instant('COMMON_PROJECTS');\n $scope.currentStep = $scope.steps[0];\n });\n\n var loadAccess = function () {\n $translate(['COMMON_ASSETS', 'COMMON_PROJECTS']).then(function (translations) {\n $scope.steps.push({ id: 'COMMON_ASSETS', title: translations.COMMON_ASSETS });\n $scope.steps.push({ id: 'COMMON_PROJECTS', title: translations.COMMON_PROJECTS });\n $scope.currentStep = $scope.steps[0];\n });\n \n\n assetService.getUserAssets(userId).then(function (tree) {\n tree.forEach(function (asset) {\n asset.cssLevel = \"level-\" + asset.level;\n });\n $scope.assetTree = tree;\n });\n };\n loadAccess();\n\n var loadProjects = function () {\n if($scope.projects && $scope.projects.length>0) return;\n projectService().getUserProjects(userId).then(function (result) {\n $scope.projects = result;\n });\n };\n\n $scope.selectStep = function (step) {\n $scope.currentStep = step;\n loadProjects();\n };\n\n $scope.updateProjectAccess = function (project) {\n project.isupdated = true;\n };\n\n $scope.updateProjectMemberAccess = function (project) {\n project.isupdated = true;\n var updatedMemberIndicator = !project.isMember;\n if(!updatedMemberIndicator){ //if no longer member, then the user can not be project owner\n project.isProjectOwner = false;\n }\n };\n $scope.ok = function () {\n assetService.saveUserAssets(userId, $scope.assetTree).then(function () {\n\n if($scope.projects && $scope.projects.length > 0){\n var updated = $filter('filter')($scope.projects, { isupdated: true }, true);\n if (updated && updated.length > 0) {\n return projectService().saveUserProjects(userId, updated).then(function () {\n $translate('ADMIN_MESSAGE_ASSET_UPDATED').then(function (msg) {\n toaster.success(msg);\n $uibModalInstance.close();\n }, function (translationId) {\n $scope.headline = translationId;\n });\n });\n } else {\n $translate('ADMIN_MESSAGE_ASSET_UPDATED').then(function (msg) {\n toaster.success(msg);\n $uibModalInstance.close();\n }, function (translationId) {\n $scope.headline = translationId;\n });\n }\n }\n $translate('ADMIN_MESSAGE_ASSET_UPDATED').then(function (msg) {\n toaster.success(msg);\n $uibModalInstance.close();\n }, function (translationId) {\n $scope.headline = translationId;\n });\n \n });\n };\n \n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n \n $scope.ownerCheckboxClicked = function(asset) {\n if (asset.isOwner) {\n asset.isViewer = false;\n }\n };\n\n $scope.viewerCheckboxClicked = function(asset) {\n if (asset.isOwner) {\n asset.isOwner = false;\n }\n };\n\n\n\n\n }]);","import * as customerService from \"@common/services/customers/customerService\"\nimport angular from \"angular\"\nimport { DigiLeanNgScope, IHasModules } from \"@common/model/angularModel\"\nimport toaster from \"@common/components/toast\"\nimport { UserInfoModel } from \"@api\"\nimport { getUserProfile } from \"@common/stores/userStore\"\n\ninterface IModule {\n roleDB: string\n title: string\n cssClass: string\n filteredAndInResultList: boolean\n}\ninterface ILicenseData {\n noOfUsers: number\n userLicenses: number\n}\n\ninterface IUsersControllerScope extends DigiLeanNgScope, IHasModules {\n showEditUser: boolean\n userLicenses: number\n numberOfUsers: number\n mobileLicenses: number\n numberOfMobileUsers: number\n totalValues: number\n admincount: number\n businessunitadmincount: number\n boarddesignercount: number\n dataadmincount: number\n messagewritercount: number\n improvementadmincount: number\n deviationadmincount: number\n athreeadmincount: number\n projectadmincount: number\n strategyadmincount: number\n learningadmincount: number\n isSearchWordActive: boolean\n\n editUser: (user: UserInfoModel) => void\n registration: UserInfoModel\n\n message: string\n actionTitle: string | null\n warning: string\n headline: any\n modules: IModule[]\n\n translationLicensesData: ILicenseData\n\n grantAllPermissions: (role: string) => void\n removeAllPermissions: (role: string) => void\n filterModule: (module: IModule) => void\n search: () => void\n q: any\n filter: any[]\n\n back: () => void\n resetFilter: () => void\n newUser: () => void\n\n}\nvar DigiLean = angular.module('DigiLean'); \nDigiLean.controller('usersController', ['$scope', '$translate', 'authService', 'navigationService', 'debounce',\n function ($scope: IUsersControllerScope, $translate,authService, navigationService, debounce) {\n $scope.showEditUser = false\n $scope.filter = []\n $scope.userLicenses = 0\n $scope.numberOfUsers = 0\n $scope.mobileLicenses = 0\n $scope.numberOfMobileUsers = 0\n \n $scope.q = null\n $scope.isSearchWordActive = false\n\n $scope.isBusinessunitAdmin = authService.hasRole(\"BusinessunitAdmin\");\n $scope.hasImprovementModule = navigationService().hasModule(\"IMPROVEMENT\")\n $scope.hasDeviationModule = navigationService().hasModule(\"DEVIATION\")\n $scope.hasA3Module = navigationService().hasModule(\"A3\")\n $scope.hasStrategy = navigationService().hasModule(\"STRATEGY\")\n $scope.hasProject = navigationService().hasModule(\"PROJECT\")\n $scope.hasLearningModule = navigationService().hasModule(\"LEARNING\")\n $scope.isEnterpriseAccount = false;\n var businessUnitId = 0;\n var businessUnitFilter = null;\n $scope.isFilterBusinessUnitActive = false\n\n \n // if page is refreshed we need to refresh the access to modules\n $scope.subscribe(\"UserAuthenticatedAndReady\", function (profile) {\n $scope.hasImprovementModule = navigationService().hasModule(\"IMPROVEMENT\")\n $scope.hasDeviationModule = navigationService().hasModule(\"DEVIATION\")\n $scope.hasA3Module = navigationService().hasModule(\"A3\")\n $scope.hasProject = navigationService().hasModule(\"PROJECT\")\n $scope.hasStrategy = navigationService().hasModule(\"STRATEGY\")\n $scope.hasLearningModule = navigationService().hasModule(\"LEARNING\")\n getAvailableModules()\n })\n \n function getAvailableModules(){\n $scope.modules = [\n {\n roleDB: \"Admin\",\n title: \"ADMIN_IS_ADMIN\",\n cssClass: \"fas fa-key\",\n filteredAndInResultList: false\n },{\n roleDB: \"DataAdmin\",\n title: \"ADMIN_IS_DATAADMIN\",\n cssClass: \"fas fa-database\",\n filteredAndInResultList: false\n }, {\n roleDB: \"BoardDesigner\",\n title: \"ADMIN_IS_BOARDDESIGNER\",\n cssClass: \"fas fa-desktop\",\n filteredAndInResultList: false\n }, {\n roleDB: \"MessageWriter\",\n title: \"ADMIN_IS_MESSAGEWRITER\",\n cssClass: \"fas fa-envelope\",\n filteredAndInResultList: false\n }\n ]\n if($scope.isEnterpriseAccount){\n var module = {\n roleDB: \"BusinessunitAdmin\",\n title: \"ADMIN_IS_BUSINESSUNITADMIN\",\n cssClass: \"far fa-building\",\n filteredAndInResultList: false\n }\n $scope.modules.splice(1, 0, module);\n }\n if($scope.hasImprovementModule){\n var module = {\n roleDB: \"ImprovementAdmin\",\n title: \"ADMIN_IS_IMPROVEMENTADMIN\",\n cssClass: \"fas fa-lightbulb\",\n filteredAndInResultList: false\n }\n $scope.modules.push(module)\n }\n if($scope.hasImprovementModule){\n var module = {\n roleDB: \"ImprovementAdmin\",\n title: \"ADMIN_IS_IMPROVEMENTADMIN\",\n cssClass: \"fas fa-lightbulb\",\n filteredAndInResultList: false\n }\n $scope.modules.push(module)\n }\n if($scope.hasDeviationModule){\n var module = {\n roleDB: \"DeviationAdmin\",\n title: \"ADMIN_IS_DEVIATIONADMIN\",\n cssClass: \"fas fa-exclamation-triangle\",\n filteredAndInResultList: false\n }\n $scope.modules.push(module)\n }\n if($scope.hasProject){\n var module = {\n roleDB: \"ProjectAdmin\",\n title: \"ADMIN_IS_PROJECTADMIN\",\n cssClass: \"fas fa-calendar-alt\",\n filteredAndInResultList: false\n }\n $scope.modules.push(module)\n }\n if($scope.hasA3Module){\n var module = {\n roleDB: \"A3Admin\",\n title: \"ADMIN_IS_A3ADMIN\",\n cssClass: \"far fa-file\",\n filteredAndInResultList: false\n }\n $scope.modules.push(module)\n }\n if($scope.hasStrategy){\n var module = {\n roleDB: \"StrategyAdmin\",\n title: \"ADMIN_IS_STRATEGYADMIN\",\n cssClass: \"fas fa-rocket\",\n filteredAndInResultList: false\n }\n $scope.modules.push(module)\n }\n if($scope.hasLearningModule){\n var module = {\n roleDB: \"LearningAdmin\",\n title: \"ADMIN_IS_LEARNINGMATERIALEDITOR\",\n cssClass: \"fas fa-graduation-cap\",\n filteredAndInResultList: false\n }\n $scope.modules.push(module)\n }\n }\n\n async function updateBusinessunitUserCounters(){\n if(businessUnitId > 0) {\n $scope.availableBusinessUnitLicenses = await customerService.getAvailableUserLicensesForBusinessUnit(businessUnitId)\n const active = await customerService.getActiveUserLicenses(businessUnitId)\n $scope.numberOfUsers = active\n }\n }\n\n function refresh(){\n getRoleStats()\n loadAccountInfo()\n updateBusinessunitUserCounters()\n filterDebounce()\n }\n\n $scope.canAddNewUser = function(){\n if(!$scope.isEnterpriseAccount) return true \n if($scope.isBusinessunitAdmin) return $scope.availableBusinessUnitLicenses > 0\n return !($scope.isEnterpriseAccount && $scope.numberOfUsers == $scope.userLicenses)\n }\n\n $scope.filterModule = function(module) {\n module.filteredAndInResultList = !module.filteredAndInResultList\n filterDebounce()\n }\n\n $scope.search = function () {\n if ($scope.q) {\n $scope.isSearchWordActive = true\n\n } else {\n $scope.isSearchWordActive = false\n }\n filterDebounce()\n }\n\n const filterDebounce = debounce(setFilter, 500, false)\n function setFilter() {\n\n let filter: any[] = []\n addToFilterIfActive(filter, $scope.modules, \"UserRoles.RoleId\", \"roleDB\")\n\n if ($scope.isSearchWordActive && $scope.q) {\n \n let itemFilter = {\n sourceColumn: \"FullName\",\n operator: \"MultiContains\",\n items: [$scope.q]\n }\n filter.push(itemFilter)\n }\n\n if($scope.isFilterBusinessUnitActive){\n filter.push(businessUnitFilter)\n }\n $scope.filter = filter\n }\n\n function addToFilterIfActive(filter, list, sourceColumn, property) {\n var itemToShow = list.filter(l => l.filteredAndInResultList)\n if (itemToShow.length > 0) {\n\n let itemFilter = {\n sourceColumn: sourceColumn,\n operator: \"InList\",\n items: [] as any[]\n }\n itemToShow.forEach(item => {\n itemFilter.items.push(item[property])\n })\n filter.push(itemFilter)\n }\n }\n\n $scope.updateBusinessUnitFilter = function (updatedSourceColumn, filters) {\n businessUnitFilter = null;\n $scope.isFilterBusinessUnitActive = false;\n angular.forEach(filters, function (filter) {\n if (filter) {\n $scope.isFilterBusinessUnitActive = true;\n businessUnitFilter = filter;\n }\n });\n filterDebounce();\n };\n\n $scope.grantAllPermissions = function(role) { \n customerService.grantRolePermission(role).then(function (result) {\n refresh()\n $translate('ADMIN_GRANT_PERMISSIONS_ALL').then(function (msg) {\n toaster.success(msg)\n }, function (translationId) {\n $scope.headline = translationId\n })\n })\n }\n\n $scope.removeAllPermissions = function(role) { \n customerService.removeRolePermission(role).then(function (result) {\n refresh()\n $translate('ADMIN_REMOVE_PERMISSION_ALL').then(function (msg) {\n toaster.success(msg)\n\n }, function (translationId) {\n $scope.headline = translationId\n })\n })\n }\n \n $scope.back = function () {\n $scope.showEditUser = false\n refresh()\n }\n\n $scope.resetFilter = function () {\n $scope.q = null\n getAvailableModules()\n $scope.isFilterBusinessUnitActive = false\n businessUnitFilter = null\n $scope.filter = []\n }\n\n $scope.newUser = function () {\n $scope.warning = \"\"\n ///@ts-ignore\n $scope.registration = { id: null}\n $scope.showEditUser = true\n }\n\n $scope.translationLicensesData = {\n noOfUsers: $scope.totalValues,\n userLicenses: $scope.userLicenses\n }\n\n\n\n var getRoleStats = async function () {\n if($scope.isBusinessunitAdmin) return;\n\n const stats = await customerService.getRoleStats()\n $scope.admincount = 0\n $scope.businessunitadmincount = 0\n $scope.boarddesignercount = 0\n $scope.dataadmincount = 0\n $scope.improvementadmincount = 0\n $scope.deviationadmincount = 0\n $scope.athreeadmincount = 0\n $scope.projectadmincount = 0\n $scope.strategyadmincount = 0\n $scope.learningadmincount = 0\n $scope.messagewritercount = 0;\n if(stats) {\n\n for(var i=0; i {\n const res = await backend.post(resourceUrl, user)\n return res\n}\n\nexport const updateUser = async (userId: string, user: UserModel) => {\n const res = await backend.put(`${resourceUrl}/${userId}`, user)\n return res\n}\n\nexport const deleteUser = async (userId: string) => {\n const res = await backend.delete(`${resourceUrl}/${userId}`)\n return res\n}","import { UserInfoModel, ApplicationUser, Asset, AuthenticationMode, CustomerAccount, UserModel, UserCheckupResult, UserCheckupStatus, AzureAdDigiLeanUser, BusinessUnit, AssetBusinessUnit } from \"@api\"\nimport * as userAdmin from \"@common/services/user/userAdminService\"\nimport * as customerService from \"@common/services/customers/customerService\"\nimport { getAllUnitsCached } from \"@common/services/businessUnitService\"\nimport dialog from \"@common/components/digilean/DigileanDialog\"\nimport angular from \"angular\"\nimport { DigiLeanNgScope, IHasModules } from \"@common/model/angularModel\"\nimport swal from \"sweetalert\"\nimport toaster from \"@common/components/toast\"\nimport * as assetService from \"@common/services/assetService\"\nimport { translateLabelInstant } from \"@common/services/language/DigiLeanLang\"\nimport { getUserProfile } from \"@common/stores/userStore\"\n\ninterface ILicenseData {\n noOfUsers: number\n userLicenses: number\n}\n\ninterface IUserEditScope extends DigiLeanNgScope, IHasModules {\n showEditUser: boolean\n savedSuccessfully: boolean\n message: string\n warning: string\n userLicenses: number\n numberOfUsers: number\n mobileLicenses: number\n numberOfMobileUsers: number\n authenticationMode: AuthenticationMode\n maxUserLicencesText: string\n maxMobileUserLicencesText: string\n isUsingAD: boolean\n increaseMobileLicences: number\n increaseRegularLicences: number\n user: UserInfoModel\n registration: UserModel\n account: CustomerAccount\n assets: AssetBusinessUnit[]\n animationsEnabled: boolean\n existInAnotherInstallation: boolean\n headline: string\n translationLicensesData: ILicenseData\n hasAzureAdModule: boolean\n\n selectedBusinessUnit: BusinessUnit\n businessUnits: BusinessUnit[]\n businessUnitsEnabled: boolean\n useAD: (user: UserModel) => boolean\n toggleUseAdmin: () => void\n setAdminCheckboxes: (user: UserModel) => void\n canAddUser: () => boolean\n canAddMobileUser: () => boolean\n canAddAnyUser: () => boolean\n confirmMobileLicences: (no: number) => void\n confirmRegularLicences: (no: number) => void\n openAccessForEdit: (user: ApplicationUser) => void\n checkEmail: (email: string) => void\n checkUserName: (username: string) => void\n checkExistingUser: (userNameOrEmail: string) => void\n checkExistingRights: (user: UserInfoModel) => void\n resetPassword: (user: UserInfoModel) => void\n delete: (user: UserInfoModel) => void\n save: () => void\n}\nangular\n.module('DigiLean')\n.directive(\"userEdit\", ['$uibModal', 'authService', 'modalService', 'navigationService',\n function ($uibModal, authService, modalService, navigationService) {\n return {\n templateUrl: 'userEdit.html',\n restrict: 'E',\n scope: {\n 'user': '=',\n 'show': '='\n },\n link: function ($scope: IUserEditScope, elem, attrs) {\n $scope.showEditUser = false\n $scope.savedSuccessfully = false\n $scope.message = \"\"\n $scope.warning = \"\"\n $scope.userLicenses = 0\n $scope.numberOfUsers = 0\n $scope.mobileLicenses = 0\n $scope.numberOfMobileUsers = 0\n $scope.authenticationMode = 0\n $scope.maxUserLicencesText = \"\"\n $scope.maxMobileUserLicencesText = \"\"\n $scope.isUsingAD = false\n\n $scope.isBusinessunitAdmin = authService.hasRole(\"BusinessunitAdmin\");\n var businessUnitId = 0;\n\n $scope.selectedBusinessUnit = {}\n $scope.businessUnits = [{name: \"\"}]\n $scope.businessUnitsEnabled = false\n getAllUnitsCached().then(units => {\n if (units.length > 0)\n $scope.businessUnitsEnabled = true\n $scope.businessUnits.push(...units)\n })\n\n let initialUserName = \"\"\n let initialEmail = \"\"\n let initialBusinessUnitId = 0\n\n $scope.hasAzureAdModule = navigationService().hasModule(\"AZUREAD\")\n \n $scope.toggleUseAdmin = function() {\n $scope.isUsingAD = !$scope.isUsingAD\n }\n\n $scope.increaseMobileLicences = 10\n $scope.increaseRegularLicences = 10\n\n $scope.hasImprovementModule = navigationService().hasModule(\"IMPROVEMENT\")\n $scope.hasDeviationModule = navigationService().hasModule(\"DEVIATION\")\n $scope.hasA3Module = navigationService().hasModule(\"A3\")\n $scope.hasStrategy = navigationService().hasModule(\"STRATEGY\")\n $scope.hasProject = navigationService().hasModule(\"PROJECT\")\n $scope.hasLearningModule = navigationService().hasModule(\"LEARNING\")\n \n // if page is refreshed we need to refresh the access to modules\n $scope.subscribe(\"UserAuthenticatedAndReady\", function (profile) {\n $scope.hasImprovementModule = navigationService().hasModule(\"IMPROVEMENT\")\n $scope.hasDeviationModule = navigationService().hasModule(\"DEVIATION\")\n $scope.hasA3Module = navigationService().hasModule(\"A3\")\n $scope.hasProject = navigationService().hasModule(\"PROJECT\")\n $scope.hasStrategy = navigationService().hasModule(\"STRATEGY\")\n $scope.hasLearningModule = navigationService().hasModule(\"LEARNING\")\n })\n\n $scope.$watch(\"show\", function(showEditUser) {\n if (!showEditUser)\n clearActiveUser()\n })\n $scope.$watch(\"user\", function (user) {\n if($scope.user && $scope.user.id){\n $scope.registration = $scope.user\n initialUserName = $scope.registration.userName\n initialEmail = $scope.registration.email!\n if ($scope.user.businessUnitId) {\n $scope.selectedBusinessUnit = {id: $scope.user.businessUnitId}\n initialBusinessUnitId = $scope.user.businessUnitId\n }\n $scope.message = \"\"\n $scope.warning = \"\" \n $scope.isUsingAD = $scope.useAD($scope.registration) \n $scope.setAdminCheckboxes($scope.registration)\n } else if($scope.user && !$scope.user.id){\n clearActiveUser()\n }\n })\n $scope.businessUnitChanged = function(unit: BusinessUnit) {\n $scope.registration.businessUnitId = unit.id\n checkBusinessunitAdminSetting()\n }\n var getSubscription = async function() {\n $scope.account = await customerService.getAccount()\n }\n getSubscription()\n\n assetService.getAllAssets().then(function (assets) {\n $scope.assets = assets\n for (let k = 0; k < $scope.assets.length; k++) {\n ///@ts-ignore\n $scope.assets[k].cssLevel = \"level-\" + $scope.assets[k].level \n } \n })\n\n function hasChangedBusinessUnit(){\n if(!$scope.user && $scope.registration.businessUnitId) return true\n return $scope.registration.businessUnitId != initialBusinessUnitId\n }\n const clearActiveUser = function () {\n let isMobileUser = false\n \n if (!$scope.canAddUser() && $scope.canAddMobileUser()) {\n isMobileUser = true\n }\n $scope.message = \"\"\n $scope.registration = {\n \n useAD: $scope.authenticationMode == 0 ? false : true,\n firstName: \"\",\n lastName: \"\",\n userName: \"\",\n email: \"\",\n isAdmin: false,\n isBoardDesigner: false,\n isImprovementAdmin: false,\n isDataAdmin: false,\n isMessageWriter: false,\n isDeviationAdmin: false,\n isProjectAdmin: false,\n isA3Admin: false,\n isStrategyAdmin: false,\n isLearningAdmin: false,\n isInfoScreenUser: false,\n isMobileUser: isMobileUser,\n businessUnitId: null\n }\n initialUserName = $scope.registration.userName\n initialEmail = $scope.registration.email!\n initialBusinessUnitId = 0\n $scope.isUsingAD = $scope.useAD($scope.registration)\n $scope.selectedBusinessUnit = {}\n if($scope.isBusinessunitAdmin){\n var businessUnitId = getBusinessUnitAsBusinessUnitAdmin()\n $scope.registration.businessUnitId = businessUnitId\n $scope.selectedBusinessUnit = {id: businessUnitId}\n }\n }\n\n function getBusinessUnitAsBusinessUnitAdmin(){\n const currentUser = getUserProfile()\n businessUnitId = currentUser.businessUnitId || 0; // Set a default value of 0 if businessUnitId is undefined\n return businessUnitId\n }\n\n $scope.useAD = function(user) {\n if (!user){\n clearActiveUser()\n user = $scope.registration\n }\n if ($scope.authenticationMode == 0)\n return false\n if ($scope.authenticationMode == 2 && !user.useAD)\n return false\n return true\n }\n customerService.getAuthenticationMode().then(function(result) {\n $scope.authenticationMode = result\n if($scope.user && $scope.user.id) {\n $scope.registration.useAD = $scope.authenticationMode == 0 ? false : true\n } else {\n clearActiveUser()\n }\n })\n\n $scope.canAddUser = function() {\n return $scope.numberOfUsers < $scope.userLicenses\n }\n $scope.canAddMobileUser = function() {\n if ($scope.mobileLicenses == 0) return false\n return $scope.numberOfMobileUsers < $scope.mobileLicenses\n }\n $scope.canAddAnyUser = function() { \n return $scope.canAddUser() || $scope.canAddMobileUser()\n }\n \n\n $scope.confirmMobileLicences = function (no) {\n if(!no){\n $scope.increaseMobileLicences = 10\n no = 10;\n } else {\n const modalOptions = {\n closeButtonText: translateLabelInstant(\"COMMON_CANCEL\"),\n actionButtonText: translateLabelInstant(\"ADMIN_CONFIRM_ORDER\"),\n headerText: translateLabelInstant(\"ADMIN_CUSTOMER_INCREASE_MOBILE_LICENCES\") + ': ' + no,\n bodyText: translateLabelInstant(\"ADMIN_SUBMIT_ORDER_DESC\")\n }\n \n modalService.showModal({}, modalOptions).then(function (result) {\n customerService.increaceMobileLicenses(no).then(function (result) {\n $scope.mobileLicenses = $scope.mobileLicenses + no\n $scope.maxMobileUserLicencesText = \"\"\n })\n }) \n } \n }\n\n $scope.decreaseRegularLicences = function(){\n if($scope.increaseRegularLicences > 10){\n $scope.increaseRegularLicences = $scope.increaseRegularLicences - 10;\n }\n }\n $scope.increaseRegular = function(){\n $scope.increaseRegularLicences = $scope.increaseRegularLicences + 10; \n }\n \n $scope.decreaseMobile = function(){\n if($scope.increaseMobileLicences > 10){\n $scope.increaseMobileLicences = $scope.increaseMobileLicences - 10;\n }\n }\n $scope.increaseMobile = function(){\n $scope.increaseMobileLicences = $scope.increaseMobileLicences + 10; \n }\n\n \n $scope.confirmRegularLicences = function (no) {\n if(!no){\n $scope.increaseRegularLicences = 10\n no = 10;\n } else {\n const modalOptions = {\n closeButtonText: translateLabelInstant(\"COMMON_CANCEL\"),\n actionButtonText: translateLabelInstant(\"ADMIN_CONFIRM_ORDER\"),\n headerText: translateLabelInstant(\"ADMIN_CUSTOMER_INCREASE_REGULAR_LICENCES\") + ': ' + no,\n bodyText: translateLabelInstant(\"ADMIN_SUBMIT_ORDER_DESC\")\n }\n \n modalService.showModal({}, modalOptions).then(function (result) {\n customerService.increaceUserLicenses(no).then(function (result) {\n $scope.userLicenses = $scope.userLicenses + no\n $scope.maxUserLicencesText = \"\"\n })\n })\n } \n }\n\n $scope.openAccessForEdit = function (user: ApplicationUser) {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: $scope.animationsEnabled,\n templateUrl: 'useraccessform.html',\n controller: 'userAccessController',\n resolve: {\n user: function () {\n return user\n }\n }\n })\n\n modalInstance.result.then(function (user) {\n\n }, function () {\n\n })\n }\n\n $scope.checkEmail = function (input) {\n if(input !== initialEmail){\n $scope.checkExistingUser(input)\n }\n }\n\n $scope.checkUserName = function (input) {\n if(input !== initialUserName){\n $scope.checkExistingUser(input)\n }\n }\n\n $scope.checkExistingUser = async function (input) {\n if (!$scope.canAddAnyUser()){\n swal({\n title: translateLabelInstant('ADMIN_ERROR_MESSAGE_USER_LIMIT'),\n icon: \"error\",\n dangerMode: true,\n closeOnClickOutside: true,\n closeOnEsc: true\n })\n \n } else { \n $scope.warning = \"\"\n const response = await customerService.checkExistingUser(input)\n if(response) {\n if(response.status == UserCheckupStatus.ActiveUser) {\n if(!(response.user && response.user.id === $scope.user.id)){\n \n const showuserinfo = await swal({\n title: translateLabelInstant('COMMON_EXISTS'),\n text: input,\n icon: \"info\",\n buttons: {showuserinfo: { text: translateLabelInstant('COMMON_SHOW'), className:\"sa-digilean-button\"}},\n dangerMode: false,\n closeOnClickOutside: false,\n closeOnEsc: false\n })\n \n if (showuserinfo) {\n if (response.user) {\n $scope.registration = response.user\n $scope.user = response.user\n }\n \n $scope.registration\n initialUserName = $scope.registration.userName\n initialEmail = $scope.registration.email!\n }\n \n } \n } else if (response.status == UserCheckupStatus.ExistInCurrentInstallation){\n \n const reactivate = await swal({\n title: translateLabelInstant('COMMON_EXISTS'),\n text: input + translateLabelInstant('ADMIN_USER_EXIST_DESCRIPTION'),\n icon: \"info\",\n buttons: {reactivate: {text: translateLabelInstant('COMMON_GET'), className:\"sa-digilean-button\"}},\n dangerMode: false,\n closeOnClickOutside: false,\n closeOnEsc: false\n })\n\n if (reactivate) {\n if (response.user) {\n $scope.registration = response.user\n $scope.user = response.user\n }\n \n initialUserName = $scope.registration.userName\n initialEmail = $scope.registration.email!\n if(!$scope.canAddUser()){ //only mobile licenses available\n $scope.setTypeMobile();\n } else if(!$scope.canAddMobileUser()){ // only regular licenses available\n $scope.setTypeRegular();\n }\n }\n \n } else if (response.status == UserCheckupStatus.ExistInAnotherInstallation){\n $scope.existInAnotherInstallation = true\n $scope.warning = input + translateLabelInstant('ADMIN_ERROR_MESSAGE_ADD_EXISTING_USER')\n clearActiveUser()\n }\n }\n }\n }\n \n $scope.checkExistingRights = function(user: UserInfoModel) {\n if(user.isAdmin) {\n swal({\n title: translateLabelInstant('ADMIN_USER_ALREADY_HAS_ADMIN_RIGHTS'),\n text: \"\",\n icon: \"info\",\n buttons: {showuserinfo: { text: translateLabelInstant('COMMON_CLOSE'), className:\"sa-digilean-button\"}},\n dangerMode: false,\n closeOnClickOutside: true,\n closeOnEsc: true\n })\n $scope.setAdminCheckboxes(user)\n } else {\n checkBusinessunitAdminSetting();\n }\n }\n\n function checkBusinessunitAdminSetting(){\n if($scope.registration.isBusinessunitAdmin && !$scope.registration.businessUnitId){\n swal({\n title: translateLabelInstant('ADMIN_DATA_FIELD_MISSING'),\n text: translateLabelInstant('ADMIN_BUSINESS_UNIT_ADMIN_MISSING'),\n icon: \"error\",\n buttons: {showuserinfo: { text: translateLabelInstant('COMMON_CLOSE'), className:\"sa-digilean-button\"}},\n dangerMode: true,\n closeOnClickOutside: true,\n closeOnEsc: true\n })\n $scope.registration.isBusinessunitAdmin = false; //reset the checkbox until a business unit is selected\n }\n }\n \n $scope.checkActiveUsers = async function () {\n $scope.maxUserLicencesText = \"\"\n if($scope.isBusinessunitAdmin){\n var availableBusinessUnitLicenses = await customerService.getAvailableUserLicensesForBusinessUnit(businessUnitId)\n if(availableBusinessUnitLicenses < 1){\n $scope.maxUserLicencesText = translateLabelInstant('ADMIN_BUSINESS_UNIT_LICENSES')\n }\n } else {\n customerService.getActiveUserLicenses().then(function (active) {\n $scope.numberOfUsers = active\n if ($scope.numberOfUsers >= $scope.userLicenses) {\n $scope.maxUserLicencesText = translateLabelInstant('ADMIN_ERROR_MESSAGE_USER_LIMIT')\n }\n })\n }\n }\n\n $scope.checkActiveMobileUsers = function () {\n $scope.maxMobileUserLicencesText = \"\"\n customerService.getActiveMobileLicenses().then(function (active) {\n $scope.numberOfMobileUsers = active\n if ($scope.mobileLicenses > 0 && $scope.numberOfMobileUsers >= $scope.mobileLicenses) {\n $scope.maxMobileUserLicencesText = translateLabelInstant('ADMIN_ERROR_MESSAGE_USER_LIMIT_MOBILE')\n }\n })\n }\n\n async function loadAccount () {\n $scope.maxUserLicencesText = \"\"\n const account = await customerService.getAccount()\n $scope.userLicenses = account.userLicenses!\n $scope.mobileLicenses = account.mobileLicenses!\n $scope.checkActiveUsers()\n $scope.checkActiveMobileUsers()\n }\n loadAccount()\n\n $scope.translationLicensesData = {\n noOfUsers: $scope.numberOfMobileUsers + $scope.numberOfUsers,\n userLicenses: $scope.userLicenses\n }\n\n function setCorrectAdminSettingsBeforeSave(item){\n if(item.isAdmin){\n item.isBoardDesigner = false\n item.isImprovementAdmin = false\n item.isDataAdmin = false\n item.isMessageWriter = false\n item.isDeviationAdmin = false\n item.isProjectAdmin = false\n item.isA3Admin = false\n item.isStrategyAdmin = false\n item.isLearningAdmin = false\n }\n }\n\n $scope.setAdminCheckboxes = setCorrectAdminSettingsBeforeSave\n\n \n $scope.save = async function () {\n setCorrectAdminSettingsBeforeSave($scope.registration)\n $scope.registration.useAD = $scope.isUsingAD\n \n // If user is associated to a business unit, check that the business unit has changed and then if there are available licenses \n if($scope.registration.businessUnitId){\n if(hasChangedBusinessUnit()){\n $scope.maxUserLicencesText = \"\"\n var availableBusinessUnitLicenses = await customerService.getAvailableUserLicensesForBusinessUnit($scope.registration.businessUnitId)\n if(availableBusinessUnitLicenses < 1){\n $scope.savedSuccessfully = false\n $scope.message = translateLabelInstant('ADMIN_BUSINESS_UNIT_LICENSES')\n return\n }\n }\n }\n\n if ($scope.user && $scope.user.id)\n changeUser()\n else\n registerNewUser()\n \n window.scrollTo(0, 0)\n }\n\n $scope.resetPassword = function (user) {\n $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'forgotPasswordForm.html',\n controller: 'forgotPasswordModalController',\n resolve: {\n user: function () {\n return {\n email: user.email,\n }\n }\n }\n })\n }\n\n const changeUser = async function () {\n try {\n const user = await userAdmin.updateUser($scope.user.id!, $scope.registration)\n $scope.savedSuccessfully = true\n $scope.message = translateLabelInstant('ADMIN_MESSAGE_CHANGE_SUCCESSFULLY')\n \n clearActiveUser()\n const msg = translateLabelInstant('ADMIN_MESSAGE_USER_INFO_CHANGED')\n toaster.success(msg)\n loadAccount()\n }\n catch (error) {\n $scope.message= translateLabelInstant('ADMIN_ERROR_MESSAGE_CHANGE_USER')\n $scope.message += error\n }\n }\n\n const registerNewUser = async function () {\n try {\n const newUser = await userAdmin.createNewUser($scope.registration)\n $scope.savedSuccessfully = true\n $scope.openAccessForEdit(newUser)\n clearActiveUser()\n loadAccount()\n const msg = translateLabelInstant(\"ADMIN_MESSAGE_REGISTER_SUCCESSFULLY\")\n toaster.success(msg)\n }\n catch (error) {\n $scope.message = translateLabelInstant('ADMIN_ERROR_MESSAGE_CHANGE_USER')\n $scope.message += error\n }\n }\n\n $scope.delete = function (user: UserInfoModel) {\n if (!user.id)\n return\n \n const modalOptions = {\n closeButtonText: translateLabelInstant(\"COMMON_CANCEL\"),\n actionButtonText: translateLabelInstant(\"COMMON_DELETE\"),\n headerText: translateLabelInstant(\"COMMON_DELETE\") + ' ' + user.firstName + ' ' + user.lastName + '?',\n bodyText: translateLabelInstant(\"ADMIN_MESSAGE_DELETE_USER_CONFIRMATION\")\n }\n\n modalService.showModal({}, modalOptions).then(function (result) {\n userAdmin.deleteUser(user.id!).then(function (data) {\n loadAccount()\n const msg = translateLabelInstant('ADMIN_MESSAGE_USER_DELETED')\n toaster.info(msg)\n \n }, function (err) {\n const msg = translateLabelInstant('ADMIN_ERROR_MESSAGE_DELETE_USER')\n toaster.error(msg)\n })\n })\n }\n\n $scope.setTypeMobile = function() {\n $scope.registration.isMobileUser = true\n clearAllAdminRoles()\n }\n\n $scope.setTypeRegular = function() {\n $scope.registration.isMobileUser = false\n }\n\n $scope.azureLookup = async function() {\n let user: AzureAdDigiLeanUser = {}\n const template = \"\"\n try {\n user = await dialog.openForm({\n title: \"COMMON_AZURE_AD\",\n hideOkBtn: true,\n booleanResult: false\n }, template, user)\n \n if (user && user.userPrincipalName) {\n $scope.registration.email = user.mail!\n $scope.registration.userName = user.userPrincipalName\n $scope.registration.firstName = user.givenName!\n $scope.registration.lastName = user.surname!\n $scope.registration.azureAdObjectId = user.id\n $scope.checkExistingUser(user.userPrincipalName)\n }\n }\n catch(err) {\n if (err != \"cancel\")\n console.log(err)\n }\n }\n function clearAllAdminRoles(){\n $scope.registration.isAdmin = false\n $scope.registration.isBoardDesigner = false\n $scope.registration.isMessageWriter = false\n $scope.registration.isImprovementAdmin = false\n $scope.registration.isDataAdmin = false\n $scope.registration.isDeviationAdmin = false\n $scope.registration.isProjectAdmin = false\n $scope.registration.isA3Admin = false\n $scope.registration.isStrategyAdmin = false\n $scope.registration.isLearningAdmin = false\n }\n }\n }\n }])","import * as userAdmin from \"@common/services/user/userAdminService\"\nimport * as customerService from \"@common/services/customers/customerService\"\nimport { DigiLeanNgScope, IHasModules } from \"@common/model/angularModel\"\nimport angular from \"angular\"\nimport { AuthenticationMode, BusinessUnit, FilterElement, TableParams, UserInfoModel } from \"@api\"\nimport toaster from \"@common/components/toast\"\nimport { NgTableParams } from \"@common/thirdparty/ng-table/ng-table\"\nimport { getAllUnitsCached } from \"@common/services/businessUnitService\"\nimport { getUserProfile } from \"@common/stores/userStore\"\n\ninterface IUserListColumn {\n title: string\n cssClass: string\n field: string\n visible: boolean\n sortable: string\n getValue: ($scope: any, row: any) => void,\n dataType: string\n}\n\ninterface IUserListResultScope extends DigiLeanNgScope, IHasModules {\n registrations: UserInfoModel[]\n allUsers: UserInfoModel[]\n\n allColumns: IUserListColumn[]\n columns: IUserListColumn[]\n tableParams: typeof NgTableParams\n\n newValuesCounter: number\n totalValues: number\n totalMatchingRecords: number\n numberOfUsers: number\n numberOfMobileUsers: number\n mobileLicenses: any\n authenticationMode: AuthenticationMode\n useAD: (user: UserInfoModel) => boolean\n\n businessUnits: BusinessUnit[]\n sorting: any[] | string\n filter: FilterElement[]\n headline: string\n\n delete: (user: UserInfoModel) => void\n resetPassword: (user: UserInfoModel) => void\n editUser: (user: UserInfoModel) => void\n editUserHandler: ({user}) => void\n\n getTableValues: (params: any) => Promise\n buildColumns: () => void\n getValues: () => void\n getValueForElement: (element: any, item: any) => void\n showCol: (item: any, col: any) => void\n selectColumn: (column: any) => void\n}\n\nangular\n .module('DigiLean')\n .directive(\"userListResult\", ['$filter', '$translate', '$sce', 'modalService', 'navigationService','authService','$uibModal', 'NgTableParams',\n function ($filter, $translate, $sce, modalService, navigationService,authService, $uibModal, NgTableParams) {\n return {\n templateUrl: 'userListResult.html',\n restrict: 'E',\n scope: {\n 'filter': '<',\n 'mobilelicenses': '<',\n 'editUserHandler': '&?',\n },\n link: function (scope: IUserListResultScope, elem, attrs) {\n\n scope.columns = []\n scope.registrations = []\n scope.newValuesCounter = 0\n scope.totalValues = 0\n scope.totalMatchingRecords = 0\n scope.allUsers = []\n\n scope.hasImprovementModule = navigationService().hasModule(\"IMPROVEMENT\")\n scope.hasDeviationModule = navigationService().hasModule(\"DEVIATION\")\n scope.hasA3Module = navigationService().hasModule(\"A3\")\n scope.hasStrategy = navigationService().hasModule(\"STRATEGY\")\n scope.hasProject = navigationService().hasModule(\"PROJECT\")\n scope.hasLearningModule = navigationService().hasModule(\"LEARNING\")\n \n scope.businessUnits = []\n getAllUnitsCached().then(units => {\n if (units.length > 0) {\n scope.businessUnits = units\n setupAllColumns()\n scope.buildColumns()\n }\n })\n // if page is refreshed we need to refresh the access to modules\n scope.subscribe(\"UserAuthenticatedAndReady\", function (profile) {\n scope.hasImprovementModule = navigationService().hasModule(\"IMPROVEMENT\")\n scope.hasDeviationModule = navigationService().hasModule(\"DEVIATION\")\n scope.hasA3Module = navigationService().hasModule(\"A3\")\n scope.hasProject = navigationService().hasModule(\"PROJECT\")\n scope.hasStrategy = navigationService().hasModule(\"STRATEGY\")\n scope.hasLearningModule = navigationService().hasModule(\"LEARNING\")\n setupAllColumns()\n })\n \n\n // Rewrite this to give correct count if user is businessunitAdmin????\n customerService.getActiveUserLicenses().then(function (active) {\n scope.numberOfUsers = active\n customerService.getActiveMobileLicenses().then(function (activemobile) {\n scope.numberOfMobileUsers = activemobile\n scope.totalValues = scope.numberOfUsers + scope.numberOfMobileUsers\n if(scope.totalMatchingRecords > scope.totalValues) { //total values does not include support user and can therefore have one value less than totalMatchingRecords\n scope.totalValues = scope.totalMatchingRecords\n } \n })\n })\n setupAllColumns()\n\n // Filter handling\n scope.$watch('filter', function (filter) {\n if (!filter) {\n scope.filter = []\n }\n scope.getValues()\n })\n\n scope.$watch('mobilelicenses', function (licenses) {\n if(licenses){\n scope.mobileLicenses = licenses\n setupAllColumns()\n scope.buildColumns()\n }\n })\n\n scope.getValueForElement = function (element, item) {\n var sourceColumn = element.sourceColumn\n var value = item[sourceColumn]\n return value\n }\n\n\n scope.getValues = function () {\n scope.buildColumns()\n scope.tableParams = new NgTableParams({\n count: 25,\n },{\n getData: scope.getTableValues\n })\n\n }\n scope.sorting = \"\"\n scope.getTableValues = function (params) {\n\n var sorting: any[] = []\n // Build sortExpression for database to be able to deserialize, becuase NgTableParams.sorting is a dynamic object.\n for (var propt in params._params.sorting) {\n sorting.push({\n property: propt,\n direction: params._params.sorting[propt]\n })\n }\n scope.sorting = sorting\n addBusinessUnitToFilter() //add this filter here to make sure no timing issues occur\n // We will build params based on the built-in NgTableParams + our sorting array\n var dbParams: TableParams = {\n page: params._params.page,\n count: params._params.count,\n sorting: scope.sorting,\n filters: scope.filter\n }\n return customerService.getTableValues(dbParams).then(function (data) {\n scope.totalMatchingRecords = data.total!\n if(scope.totalMatchingRecords > scope.totalValues){ //total values does not include support user and can therefore have one value less than totalMatchingRecords\n scope.totalValues = scope.totalMatchingRecords\n }\n params.total(data.total) // recal. page nav controls\n return data.values\n\n })\n }\n\n function addBusinessUnitToFilter(){\n scope.isBusinessunitAdmin = authService.hasRole(\"BusinessunitAdmin\");\n if(!scope.isBusinessunitAdmin) return;\n const currentUser = getUserProfile()\n var businessUnitId = currentUser.businessUnitId?.toString() || \"0\"; //setting id equal to zero should never happen, \n // but if it does then no users will be retrieved since the businessunitadmin does not have a valid businessunit associated with it\n var businessUnitFilter = {\n sourceColumn: \"businessUnitId\",\n operator: \"InList\",\n items: [businessUnitId]\n }\n scope.filter.push(businessUnitFilter)\n }\n\n customerService.getAuthenticationMode().then(function(result) {\n scope.authenticationMode = result\n })\n scope.useAD = function(user) {\n if (scope.authenticationMode == 0)\n return false\n if (scope.authenticationMode == 2 && !user.useAD)\n return false\n return true\n }\n \n scope.showCol = function(item, col) {\n let show = item[col.field]\n return !!show\n }\n\n function setupAllColumns(){\n scope.allColumns = [\n {\n title: \"COMMON_USER\",\n cssClass: \"\",\n field: 'user',\n visible: true,\n sortable: 'user',\n getValue: renderValue,\n dataType: \"text\"\n },\n {\n title: \"ADMIN_ASSETTYPE_BUSINESS_UNIT\",\n cssClass: \"\",\n field: \"businessUnitId\",\n visible: scope.businessUnits.length > 0,\n sortable: \"businessUnitId\",\n getValue: renderValue,\n dataType: \"string\"\n },\n {\n title: \"ADMIN_ADMIN\",\n cssClass: \"fa fa-key\",\n field: \"isAdmin\",\n visible: true,\n sortable: \"isAdmin\",\n getValue: renderValue,\n dataType: \"bool\"\n },\n {\n title: \"ADMIN_IS_BUSINESSUNITADMIN\",\n cssClass: \"far fa-building\",\n field: \"isBusinessunitAdmin\",\n visible: scope.businessUnits.length > 0,\n sortable: \"isBusinessunitAdmin\",\n getValue: renderValue,\n dataType: \"bool\"\n },\n {\n title: \"ADMIN_IS_BOARDDESIGNER\",\n cssClass: \"fas fa-desktop\",\n field: \"isBoardDesigner\",\n visible: true,\n sortable: \"isBusinessunitAdmin\",\n getValue: renderValue,\n dataType: \"bool\"\n },\n {\n title: \"ADMIN_IS_DATAADMIN\",\n cssClass: \"fas fa-database\",\n field: \"isDataAdmin\",\n visible: true ,\n sortable: \"isDataAdmin\",\n getValue: renderValue,\n dataType: \"bool\"\n },\n {\n title: \"ADMIN_IS_MESSAGEWRITER\",\n cssClass: \"fas fa-envelope\",\n field: \"isMessageWriter\",\n visible: true ,\n sortable: \"isMessageWriter\",\n getValue: renderValue,\n dataType: \"bool\"\n },\n {\n title: \"ADMIN_IS_IMPROVEMENTADMIN\",\n cssClass: \"fas fa-lightbulb\",\n field: \"isImprovementAdmin\",\n visible: scope.hasImprovementModule,\n sortable: \"isImprovementAdmin\",\n getValue: renderValue,\n dataType: \"bool\"\n },\n {\n title: \"ADMIN_IS_DEVIATIONADMIN\",\n cssClass: \"fas fa-exclamation-triangle\",\n field: \"isDeviationAdmin\",\n visible: scope.hasDeviationModule,\n sortable: \"isDeviationAdmin\",\n getValue: renderValue,\n dataType: \"bool\"\n },\n {\n title: \"ADMIN_IS_PROJECTADMIN\",\n cssClass: \"fas fa-calendar-alt\",\n field: \"isProjectAdmin\",\n visible: scope.hasProject,\n sortable: \"isProjectAdmin\",\n getValue: renderValue,\n dataType: \"bool\"\n },\n {\n title: \"ADMIN_IS_A3ADMIN\",\n cssClass: \"far fa-file\",\n field: \"isA3Admin\",\n visible: scope.hasA3Module ,\n sortable: \"isA3Admin\",\n getValue: renderValue,\n dataType: \"bool\"\n },\n {\n title: \"ADMIN_IS_STRATEGYADMIN\",\n cssClass: \"fas fa-rocket\",\n field: \"isStrategyAdmin\",\n visible: scope.hasStrategy,\n sortable: \"isStrategyAdmin\",\n getValue: renderValue,\n dataType: \"bool\"\n },\n {\n title: \"ADMIN_IS_LEARNINGMATERIALEDITOR\",\n cssClass: \"fas fa-graduation-cap\",\n field: \"isLearningAdmin\",\n visible: scope.hasLearningModule,\n sortable: \"isLearningAdmin\",\n getValue: renderValue,\n dataType: \"bool\"\n },\n {\n title: \"COMMON_MOBILE_USER\",\n cssClass: \"fa fa-mobile-alt\",\n field: \"isMobileUser\",\n visible: scope.numberOfMobileUsers>0 || scope.mobileLicenses > 0,\n sortable: \"isMobileUser\",\n getValue: renderValue,\n dataType: \"bool\"\n }\n ]\n }\n\n scope.buildColumns = function () {\n scope.columns = scope.allColumns.filter(c => c.visible)\n }\n\n scope.selectColumn = function(column) {\n column.visible = !column.visible\n scope.buildColumns()\n }\n\n\n function renderValue(this: any, $scope, row) {\n const item = this \n const field = item.field\n const value = row[field]\n if (this.dataType === \"date\") {\n return $filter('date')(value, \"mediumDate\")\n }\n if (this.dataType === \"timestamp\") {\n return $filter('date')(value, \"dd.MM.yyyy HH:mm:ss\")\n }\n if (this.dataType === \"bool\") {\n if (value === \"true\") {\n return \"\"\n } else {\n return \"\"\n }\n } \n return value\n }\n\n scope.delete = function (user) {\n $translate(['COMMON_CANCEL', 'COMMON_DELETE', 'ADMIN_MESSAGE_DELETE_USER_CONFIRMATION']).then(function (translations) {\n var modalOptions = {\n closeButtonText: translations.COMMON_CANCEL,//'Cancel',\n actionButtonText: translations.COMMON_DELETE,//'Delete User',\n headerText: translations.COMMON_DELETE + ' ' + user.firstName + ' ' + user.lastName + '?',\n bodyText: translations.ADMIN_MESSAGE_DELETE_USER_CONFIRMATION//'All data on user will be lost. Are you sure you want to delete this user?'\n }\n \n modalService.showModal({}, modalOptions).then(function (result) {\n userAdmin.deleteUser(user.id!).then(res => {\n $translate('ADMIN_MESSAGE_USER_DELETED').then(function (msg) {\n toaster.info(msg)\n }, function (translationId) {\n scope.headline = translationId\n })\n scope.getValues()\n \n }, function (err) {\n $translate('ADMIN_ERROR_MESSAGE_DELETE_USER').then(function (msg) {\n toaster.error(msg)\n }, function (translationId) {\n scope.headline = translationId\n })\n })\n })\n })\n }\n\n scope.resetPassword = function (user) {\n $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'forgotPasswordForm.html',\n controller: 'forgotPasswordModalController',\n resolve: {\n user: function () {\n return {\n email: user.email,\n }\n }\n }\n })\n }\n\n scope.editUser = function(user){\n if(user && user.isSupport){\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'useraccessform.html',\n controller: 'userAccessController',\n resolve: {\n user: function () {\n return user\n }\n }\n }) \n modalInstance.result.then(function (user) { \n }, function () {\n })\n } else {\n scope.editUserHandler({ user: user })\n }\n \n }\n\n }\n\n }\n }])\n","import * as timeService from \"@common/services/timeService\"\nimport * as boardService from \"@common/services/boardService\"\n\n// Controller for actionListNewTask.html\nvar DigiLean = angular.module('DigiLean');\nDigiLean.controller('actionListNewTaskController', ['$scope', '$filter', '$uibModalInstance', 'boardTaskService', 'authService','boardid', 'date',\n function ($scope, $filter, $uibModalInstance, boardTaskService, authService, boardid, date) {\n $scope.boards = {};\n $scope.date = date;\n $scope.selectedEmployee = {};\n $scope.selectedBoard = null;\n var userid = authService.getCurrentUser().userId;\n $scope.task = {};\n\n boardService.getMemberBoards().then(function (data) {\n $scope.boards = data;\n if (boardid) {\n $scope.selectedBoard = $filter('filter')(data, { id: boardid }, true)[0];\n } else {\n $scope.selectedBoard = data[0];\n }\n $scope.getUserListForBoard();\n });\n\n $scope.getUserListForBoard = function () {\n boardService.getUserListForBoard(boardid).then(function (data) {\n angular.forEach(data, function (employee, key) {\n employee.fullName = employee.firstName + \" \" + employee.lastName;\n });\n $scope.employees = data;\n if (data.length > 0) {\n $scope.selectedEmployee = $filter('filter')(data, { id: userid }, true)[0];\n }\n });\n }\n\n // Datepicker setup\n $scope.formats = ['dd.MM.yyyy', 'dd-MMMM-yyyy', 'yyyy/MM/dd', 'yyyy-MM-dd', 'shortDate']\n $scope.format = $scope.formats[0];\n $scope.altInputFormats = ['M!/d!/yyyy'];\n $scope.datepickerOpen = function () {\n $scope.datePicker.opened = true;\n }\n $scope.datePicker = {\n opened: false\n };\n $scope.dateOptions = timeService.globalDatePickerOptions();\n\n\n $scope.ok = function () {\n // Create new action \n\n var tagSingleString = $(\"#tagsSelected\").val();\n var tagsArray = tagSingleString.split(\",\");\n var tags = [];\n for (var i = 0; i < tagsArray.length; i++) { // Hide all \n tags.push({\n Id: 0,\n Tag: tagsArray[i],\n BoardTaskId: 0\n });\n }\n // var boardId = null;\n // // if ($scope.selectedBoard) {\n // boardId = boardid;\n // // }\n date = moment($scope.date).utc().toDate();\n var task = {\n id: 0,\n isActionItem: true, // Belongs to action list\n boardId: boardid,\n title: $scope.task.title,\n text: $scope.task.text,\n boardDate: date,\n status: 'blank',\n tags: tags\n }\n\n var responsible = $scope.selectedEmployee;\n task.responsibleUserId = responsible.id;\n task.responsibleDisplayName = responsible.displayName;\n task.responsibleUser = responsible.firstName + \" \" + responsible.lastName;\n\n boardTaskService().addTask(task).then(function (taskId) {\n task.id = taskId;\n $scope.publish(\"SendCreateActionListItem\", task);\n $uibModalInstance.close(task);\n });\n\n };\n\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n\n\n\n setTimeout(function () {\n $(\"#taskTags\").tagit({\n // availableTags: sampleTags,\n // This will make Tag-it submit a single form value, as a comma-delimited field.\n singleField: true,\n singleFieldNode: $('#tagsSelected')\n });\n }, 200);\n\n $scope.dateChanged = function(event) {\n const eventdate = event.originalEvent.detail\n $scope.date = eventdate\n }\n }]);","import * as boardService from \"@common/services/boardService\"\n\nvar DigiLean = angular.module('DigiLean');\nDigiLean.controller('actionListEditTaskController', ['$scope', '$filter', '$uibModalInstance', 'boardTaskService', 'authService', 'task', 'date', \n function ($scope, $filter, $uibModalInstance, boardTaskService, authService, task, date) {\n $scope.boards = {};\n $scope.task = task;\n $scope.date = date;\n $scope.selectedEmployee = {};\n $scope.selectedBoard = null;\n var userid = authService.getCurrentUser().userId;\n\n $scope.getUserListForBoard = function () {\n boardService.getUserListForBoard(task.boardId).then(function (data) {\n angular.forEach(data, function (employee, key) {\n employee.fullName = employee.firstName + \" \" + employee.lastName;\n });\n $scope.employees = data;\n if (data.length > 0) {\n if($scope.task && $scope.task.responsibleUserId){\n $scope.selectedEmployee = $filter('filter')(data, { id: $scope.task.responsibleUserId }, true)[0];\n } else {\n $scope.selectedEmployee = $filter('filter')(data, { id: userid }, true)[0];\n } \n }\n });\n }\n $scope.getUserListForBoard();\n\n $scope.ok = function (task) {\n var tagSingleString = $(\"#tagsSelected\").val();\n var tagsArray = tagSingleString.split(\",\");\n var tags = [];\n for (var i = 0; i < tagsArray.length; i++) { // Hide all \n tags.push({\n Id: 0,\n Tag: tagsArray[i],\n BoardTaskId: 0\n });\n }\n task.tags = tags;\n $scope.date = moment($scope.date).utc().toDate();\n task.boardDate = $scope.date;\n\n boardTaskService().updateTask(task).then(function () {\n $uibModalInstance.close(task);\n });\n };\n\n $scope.updateDate = function ($event) {\n const date = $event.originalEvent.detail\n $scope.date = date\n $scope.task.boardDate = moment(date).toDate()\n boardTaskService().updateDate($scope.task.id, $scope.task.boardDate)\n }\n\n $scope.updateResponsible = function (newResponsible) {\n var options = {\n taskId: $scope.task.id,\n user: newResponsible\n };\n \n $scope.task.responsibleUserId = newResponsible.id;\n $scope.task.responsibleUser = newResponsible.fullName;\n $scope.task.responsibleDisplayName = newResponsible.displayName;\n newResponsible.userName = newResponsible.fullName;\n boardTaskService().assignUser(options).then(function () { \n });\n };\n \n $scope.delete = function (task) {\n boardTaskService().deleteTask(task.id).then(function (taskId) {\n $uibModalInstance.close(task);\n });\n };\n\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n\n $scope.dateChanged = function($event) {\n const date = $event.originalEvent.detail\n $scope.date = date\n }\n\n setTimeout(function () {\n $(\"#taskTags\").tagit({\n // availableTags: sampleTags,\n // This will make Tag-it submit a single form value, as a comma-delimited field.\n singleField: true,\n singleFieldNode: $('#tagsSelected')\n });\n }, 200);\n\n \n // Init tags and focus\n setTimeout(function () {\n $(\"#taskTags\").tagit({\n // This will make Tag-it submit a single form value, as a comma-delimited field.\n singleField: true,\n singleFieldNode: $('#tagsSelected')\n });\n if ($scope.task.tags) {\n if (typeof stringValue === \"string\") {\n var tagArray = $scope.task.tags.split(\",\");\n for (var i = 0; i < tagArray.length; i++) {\n $(\"#taskTags\").tagit('createTag', tagArray[i]);\n }\n } else {\n var tagArray = $scope.task.tags;\n for (var i = 0; i < tagArray.length; i++) {\n $(\"#taskTags\").tagit('createTag', tagArray[i].tag);\n }\n }\n }\n }, 50);\n }]);","import * as dashboardService from \"@common/services/dashboardService\"\n\nangular\n .module('DigiLean')\n .directive(\"dashboardPreview\", ['$filter', 'appstoreService',\n function ($filter, appstoreService) {\n return {\n templateUrl: 'dashboardPreview.html',\n restrict: 'E',\n scope: {\n template: '='\n },\n link: function (scope, elem, attrs) {\n \n scope.showImage = false;\n var apps = appstoreService().getApps();\n scope.$watch('template', function (template) {\n \n if (template && template.id) {\n dashboardService.getTemplate(template.id).then(function(model) {\n scope.model = model;\n scope.selectPage(model.pages[0]);\n })\n } else {\n scope.showImage = true;\n }\n });\n\n\n scope.selectPage = function(page) {\n // set app image\n \n page.widgets.forEach(app => {\n var matchingApp = $filter('filter')(apps, { component: app.component }, true); \n if (matchingApp.length > 0) {\n app.imageUrl = matchingApp[0].previewImageUrl;\n }\n \n });\n scope.selectedPage = page;\n }\n\n scope.gridsterOptions = { //margins: [20, 10], (top, right, bottom, and left).\n margins: [5, 5],\n columns: 40,\n maxRows: 200,\n sparse: true, // \"true\" can increase performance of dragging and resizing for big grid (e.g. 20x50)\n swapping: false, // allow widgets of same size to swap place\n resizable: {\n enabled: false,\n },\n draggable: {\n enabled: false, // whether dragging items is supported\n \n }\n };\n }\n }\n }]);\n","import * as timeService from \"@common/services/timeService\"\nimport * as boardService from \"@common/services/boardService\"\n\n// Controller for the actual modal\nvar DigiLean = angular.module('DigiLean');\nDigiLean.controller('boardActionController', ['$scope', '$rootScope', '$filter', '$uibModalInstance', '$translate', 'modalService', 'boardTaskService', 'boardId', 'activityService', 'task', 'activeTab',\n function ($scope, $rootScope, $filter, $uibModalInstance, $translate, modalService, boardTaskService, boardId, activityService, task, activeTab) {\n\n $scope.boards = {};\n $scope.selectedEmployee = null;\n $scope.selectedBoard = {};\n $scope.task = task;\n var taskCurrentBoardId = task.boardId;\n \n\n // Tabs\n var tabs = [\"Info\", \"Comments\", \"History\"];\n $scope.indexTab = tabs.indexOf(activeTab);\n $scope.selectTab = function (tab) {\n $scope.indexTab = tabs.indexOf(tab);\n }\n // Make sure boardDate is date object \n task.boardDate = moment.utc(task.boardDate).toDate();\n\n\n $scope.blankuser = { id: null, fullName: \"\", userName: \"\", displayName: \"\" }\n\n var cancelTranslation = $translate.instant('COMMON_CANCEL');\n console.log(cancelTranslation);\n $rootScope.$on('$translateChangeSuccess', function () {\n console.log(\"boardactioncontroller translated event recieved\");\n cancelTranslation = $translate.instant('COMMON_CANCEL');\n });\n\n $scope.canEdit = false;\n // Chceck if user is allowed to edit task\n boardTaskService().canEdit(task.id).then(function (canEdit) {\n $scope.canEdit = canEdit;\n });\n\n boardService.getUserListForBoard(boardId).then(function (data) {\n angular.forEach(data, function (employee, key) {\n employee.fullName = employee.firstName + \" \" + employee.lastName;\n });\n $scope.employees = data;\n\n $scope.employees.unshift($scope.blankuser);\n $scope.selectedEmployee = $filter('filter')(data, { id: task.responsibleUserId }, true)[0];\n if (!$scope.selectedEmployee) {\n $scope.selectedEmployee = $scope.blankuser;\n }\n });\n\n boardService.getMemberBoards().then(function (data) {\n $scope.boards = data;\n $scope.selectedBoard = $filter('filter')(data, { id: boardId }, true)[0];\n });\n\n\n\n // Init tags and focus\n setTimeout(function () {\n\n $(\"#taskTags\").tagit({\n // This will make Tag-it submit a single form value, as a comma-delimited field.\n singleField: true,\n singleFieldNode: $('#tagsSelected')\n });\n if ($scope.task.tags) {\n\n if (typeof stringValue === \"string\") {\n var tagArray = $scope.task.tags.split(\",\");\n for (var i = 0; i < tagArray.length; i++) {\n $(\"#taskTags\").tagit('createTag', tagArray[i]);\n }\n } else {\n var tagArray = $scope.task.tags;\n for (var i = 0; i < tagArray.length; i++) {\n $(\"#taskTags\").tagit('createTag', tagArray[i].tag);\n }\n }\n }\n }, 50);\n\n var getTags = function () {\n\n var tagSingleString = $(\"#tagsSelected\").val();\n var tagsArray = tagSingleString.split(\",\");\n var tags = [];\n for (var i = 0; i < tagsArray.length; i++) { // Hide all \n tags.push({\n Id: tagsArray[i].id,\n Tag: tagsArray[i],\n BoardTaskId: $scope.task.id\n });\n }\n return tags;\n }\n\n\n // History\n var getActivityLog = function () {\n var activityRequest = {\n activity: \"BoardTask\",\n activityId: $scope.task.id\n };\n var $translate = $filter('translate');\n var translateOptions = {\n month: $translate('COMMON_TIMEELAPSED_MONTH'),\n days: $translate('COMMON_TIMEELAPSED_DAYS'),\n hours: $translate('COMMON_TIMEELAPSED_HOURS'),\n mins: $translate('COMMON_TIMEELAPSED_MINUTES'),\n seconds: $translate('COMMON_TIMEELAPSED_SECONDS'),\n now: $translate('COMMON_TIMEELAPSED_NOW')\n }\n activityService().getLogForActivity(activityRequest).then(function (logItems) {\n logItems.forEach(function (activity) {\n activity.occured = timeService.getTimeElapsed(activity.activityDate, translateOptions);\n if (activity.payLoad && typeof activity.payLoad === \"string\") {\n activity.payLoad = JSON.parse(activity.payLoad); // Payload gives the whole object, in this case the Task.\n }\n });\n $scope.activityLog = logItems;\n\n });\n }\n getActivityLog();\n\n // Get Comments\n var getComments = function () {\n boardTaskService().getComments($scope.task.id).then(function (comments) {\n $scope.comments = comments;\n });\n }\n getComments();\n\n $scope.activeComment = \"\";\n $scope.hasAddedComments = false;\n $scope.activeCommentChanged = function (value) {\n $scope.hasAddedComments = true;\n $scope.activeComment = value;\n }\n\n // IF date not set, than suggest a week from now\n if (!task.boardDate) {\n var utcDate = timeService.getUTCDate();\n task.boardDate = utcDate.add(7, 'days').toDate();\n }\n\n\n\n $scope.boardChanged = function (board) {\n $scope.task.boardId = board.id;\n }\n\n $scope.responsibleChanged = function (user) {\n $scope.task.responsibleUserId = user.id;\n $scope.task.responsibleUser = user.userName;\n $scope.task.responsibleDisplayName = user.displayName;\n }\n\n $scope.archive = function () {\n boardTaskService().moveTaskToArchive($scope.task.id).then(function (result) {\n $uibModalInstance.dismiss('cancel');\n });\n }\n \n \n\n $scope.delete = function () {\n var taskId = $scope.task.id;\n var repeatParentId = $scope.task.repeatParentId;\n var siblingId = $scope.task.siblingId;\n\n if (!repeatParentId && !siblingId) {\n boardTaskService().deleteTask(taskId).then(function () {\n $uibModalInstance.dismiss('cancel');\n });\n }\n\n if (repeatParentId) {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'repeatdelete.html',\n controller: 'repeatdeleteController',\n windowClass: 'newdeviation-modal-window',\n resolve: {\n taskId: function () {\n return taskId;\n },\n repeatParentId: function () {\n return repeatParentId;\n }\n }\n });\n modalInstance.result.then(function (result) {\n $uibModalInstance.close($scope.task);\n });\n }\n\n if (siblingId) {\n\n $translate(['COMMON_CANCEL', 'BOARD_DELETE_TASKS', 'BOARD_DELETE_CLONED_TASK', 'BOARD_DELETE_CLONED_TASK_DESCRIPTION']).then(function (translations) {\n var modalOptions = {\n closeButtonText: translations.COMMON_CANCEL,\n actionButtonText: translations.BOARD_DELETE_TASKS,\n headerText: translations.BOARD_DELETE_CLONED_TASK,\n bodyText: translations.BOARD_DELETE_CLONED_TASK_DESCRIPTION\n };\n\n modalService.showModal({}, modalOptions).then(function (result) {\n boardTaskService().deleteClonedTask(siblingId).then(function (result) {\n $scope.publish(\"SendTasksDeleted\", result);\n $uibModalInstance.dismiss('cancel');\n });\n });\n });\n }\n }\n\n $scope.ok = function () {\n // Create action and set as result\n $scope.isProcessing = true;\n $scope.task.tags = getTags();\n if ($scope.hasAddedComments) {\n var comment = {\n boardTaskId: $scope.task.id,\n comment: $scope.activeComment\n };\n boardTaskService().addComment(comment).then(function (savedComment) {\n // Comment was added\n $scope.comments.push(savedComment);\n });\n }\n boardTaskService().updateActionListItem($scope.task).then(function (result) {\n $scope.isProcessing = false;\n angular.forEach(result.affectedTaskIds, function (id, key) {\n var clone = $.extend(true, {}, result.task);\n clone.id = id;\n });\n // check if task should be moved to another board action list\n if ($scope.task.boardId !== taskCurrentBoardId) {\n var change = {\n taskId: $scope.task.id,\n fromBoardId: $scope.task.boardId,\n toBoardId: $scope.selectedBoard.id\n };\n $scope.publish(\"SendTaskChangedBoard\", change);\n }\n $uibModalInstance.close($scope.task);\n });\n\n\n };\n\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n }]);","import * as assetService from \"@common/services/assetService\"\nimport * as dashboardService from \"@common/services/dashboardService\"\nimport * as boardService from \"@common/services/boardService\"\nimport toaster from \"@common/components/toast\"\nimport { getAllUnitsCached } from \"@common/services/businessUnitService\"\nimport { NgTableParams } from \"@common/thirdparty/ng-table/ng-table\"\nimport { getUserProfile } from \"@common/stores/userStore\"\n\nvar DigiLean = angular.module('DigiLean');\nDigiLean.controller('flexiboardAdminController', ['$scope', '$translate', '$uibModal', '$state', '$filter','modalService','folderService','authService','debounce',\nfunction ($scope, $translate, $uibModal, $state, $filter, modalService, folderService, authService, debounce) {\n $scope.boards = [];\n $scope.activeboards = [];\n $scope.selectedBoardType = 'Dashboard';\n\n $scope.isBusinessunitAdmin = authService.hasRole(\"BusinessunitAdmin\");\n $scope.isEnterpriseAccount = false;\n var businessUnitId = 0;\n var businessUnitFilter = null;\n $scope.isFilterBusinessUnitActive = false;\n $scope.businessUnits = []\n $scope.filter = []\n \n getAllUnitsCached().then(units => {\n if (units.length > 0) {\n $scope.businessUnits = units\n } \n setupAllColumns()\n $scope.buildColumns()\n })\n\n function checkBoardType(boards){\n if(boards){\n for(var b=0; b< boards.length; b++){\n if(boards[b].boardType === null){\n var settings = JSON.parse(boards[b].settings);\n if(settings && settings.IsWeeklyBoard){\n boards[b].boardType = \"Weekly\"; \n } else {\n boards[b].boardType = \"Kanban\"; \n } \n }\n } \n }\n }\n\n function initialize() {\n assetService.getAllAssets(true).then(function (assets) {\n $scope.assets = assets;\n //loadBoards();\n $scope.getValues();\n });\n if($scope.isBusinessunitAdmin){\n $scope.isEnterpriseAccount = true; // BusinessunitAdmin is always enterprise\n const currentUser = getUserProfile()\n businessUnitId = currentUser.businessUnitId || 0; // Set a default value of 0 if businessUnitId is undefined \n }\n }\n initialize();\n\n $scope.getValues = function () {\n $scope.buildColumns()\n $scope.tableParams = new NgTableParams({\n count: 25,\n },{\n getData: $scope.getDashboardTableValues\n })\n\n }\n $scope.sorting = \"\"\n $scope.getTableValues = function (params) {\n\n var sorting = [];\n // Build sortExpression for database to be able to deserialize, becuase NgTableParams.sorting is a dynamic object.\n for (var propt in params._params.sorting) {\n sorting.push({\n property: propt,\n direction: params._params.sorting[propt]\n })\n }\n $scope.sorting = sorting\n addBusinessUnitToFilter() //add this filter here to make sure no timing issues occur\n // We will build params based on the built-in NgTableParams + our sorting array\n setFilter();\n var dbParams = {\n page: params._params.page,\n count: params._params.count,\n sorting: $scope.sorting,\n filters: $scope.filter\n }\n return boardService.getTableValues(dbParams).then(function (data) {\n $scope.totalMatchingRecords = data.total;\n if($scope.totalMatchingRecords > $scope.totalValues){ //total values does not include support user and can therefore have one value less than totalMatchingRecords\n $scope.totalValues = $scope.totalMatchingRecords\n }\n params.total(data.total) // recal. page nav controls\n return data.values\n\n })\n }\n\n $scope.toggleBoardType = function (type) {\n $scope.selectedBoardType = type;\n $scope.filter = [];\n reloadBoards(); \n }\n\n function reloadBoards(){\n if ($scope.selectedBoardType == \"Dashboard\") {\n $scope.tableParams = new NgTableParams({\n count: 25,\n },{\n getData: $scope.getDashboardTableValues\n })\n } else {\n $scope.tableParams = new NgTableParams({\n count: 25,\n },{\n getData: $scope.getTableValues\n }) \n }\n }\n\n $scope.getDashboardTableValues = function (params) {\n\n var sorting = [];\n // Build sortExpression for database to be able to deserialize, becuase NgTableParams.sorting is a dynamic object.\n for (var propt in params._params.sorting) {\n sorting.push({\n property: propt,\n direction: params._params.sorting[propt]\n })\n }\n $scope.sorting = sorting\n addBusinessUnitToFilter() //add this filter here to make sure no timing issues occur\n setFilter();\n // We will build params based on the built-in NgTableParams + our sorting array\n var dbParams = {\n page: params._params.page,\n count: params._params.count,\n sorting: $scope.sorting,\n filters: $scope.filter\n }\n return boardService.getDashboardTableValues(dbParams).then(function (data) {\n $scope.totalMatchingRecords = data.total;\n if($scope.totalMatchingRecords > $scope.totalValues){ //total values does not include support user and can therefore have one value less than totalMatchingRecords\n $scope.totalValues = $scope.totalMatchingRecords\n }\n params.total(data.total) // recal. page nav controls\n return data.values\n\n })\n }\n\n \n function addBusinessUnitToFilter(){\n $scope.isBusinessunitAdmin = authService.hasRole(\"BusinessunitAdmin\");\n if(!$scope.isBusinessunitAdmin) return;\n const currentUser = getUserProfile()\n var businessUnitId = currentUser.businessUnitId?.toString() || \"0\"; //setting id equal to zero should never happen, \n // but if it does then no users will be retrieved since the businessunitadmin does not have a valid businessunit associated with it\n var businessUnitFilter = {\n sourceColumn: \"businessUnitId\",\n operator: \"InList\",\n items: [businessUnitId]\n }\n $scope.filter.push(businessUnitFilter)\n }\n\n\n\n $scope.subscribe(\"DashboardCreated\", function (board) {\n if(board){\n reloadBoards(); \n }\n });\n\n\n $scope.subscribe(\"BoardCreated\", function (board) {\n if(board){\n reloadBoards(); \n }\n });\n\n $scope.subscribe(\"BoardDeleted\", function (id) {\n reloadBoards(); \n });\n $scope.subscribe(\"DashboardDeleted\", function (dashboard) {\n reloadBoards(); \n });\n $scope.edit = function (board) {\n var options = {\n targetType : \"Board\",\n targetId : board.id\n }\n\n if(board.boardType === \"Dashboard\"){\n options.targetType = \"Dashboard\";\n } else if(board.boardType === 'Performance'){\n options.includeCustomGroup = false;\n options.includeProjects = false;\n }\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'boardSettings.html',\n controller: 'boardSettingsController',\n resolve: {\n options: function () {\n return options;\n }\n }\n });\n modalInstance.result.then(function (asset) {\n reloadBoards(); \n }, function () {\n\n });\n \n }\n\n $scope.updateBusinessUnitFilter = function (updatedSourceColumn, filters) {\n businessUnitFilter = null;\n $scope.isFilterBusinessUnitActive = false;\n angular.forEach(filters, function (filter) {\n if (filter) {\n $scope.isFilterBusinessUnitActive = true;\n businessUnitFilter = filter;\n }\n });\n filterDebounce();\n reloadBoards(); \n };\n\n $scope.resetFilter = function () {\n $scope.filter = [];\n $scope.isSearchWordActive = false;\n $scope.q = \"\";\n $scope.selectedBoardType = 'Dashboard';\n $scope.isFilterBusinessUnitActive = false;\n reloadBoards(); \n }\n\n $scope.searchWord = function () {\n $scope.isSearchWordActive = $scope.q ? true : false;\n filterDebounce();\n reloadBoards();\n }\n\n const filterDebounce = debounce(setFilter, 500, false)\n function setFilter() {\n\n let filter = []\n\n if ($scope.isSearchWordActive && $scope.q) {\n \n let itemFilter = {\n sourceColumn: \"Name\",\n operator: \"MultiContains\",\n items: [$scope.q]\n }\n filter.push(itemFilter)\n }\n\n if($scope.selectedBoardType){\n var boardTypeFilter = {\n sourceColumn: \"BoardType\",\n operator: \"InList\",\n items: [$scope.selectedBoardType]\n }\n filter.push(boardTypeFilter)\n }\n if($scope.isFilterBusinessUnitActive){\n filter.push(businessUnitFilter)\n }\n $scope.filter = filter\n }\n $scope.openBoardDesigner = function (board) {\n switch(board.boardType) {\n case \"Dashboard\":\n $state.go('flexiboard', { id: board.id, mode:\"admin\"}, { reload: false });\n break;\n case \"SmartActionList\":\n $state.go('board', { id: board.id, mode: \"admin\" }, { reload: false });\n break;\n case \"Performance\":\n $state.go('board', { id: board.id, mode: \"admin\" }, { reload: false });\n break;\n default:\n $state.go('boarddesigner', { id: board.id, mode: \"admin\" }, { reload: false });\n }\n }\n\n\n $scope.deleteBoard = function (board) {\n $translate(['COMMON_CANCEL', 'COMMON_DELETE', 'ADMIN_DELETED_BOARD', 'ADMIN_DELETED_BOARD_DESCRIPTION']).then(function (translations) {\n var modalOptions = {\n closeButtonText: translations.COMMON_CANCEL,\n actionButtonText: translations.ADMIN_DELETED_BOARD,\n headerText: translations.COMMON_DELETE + ' ' + board.name + '?',\n bodyText: translations.ADMIN_DELETED_BOARD_DESCRIPTION\n };\n\n modalService.showModal({}, modalOptions).then(function (result) {\n if(board.boardType === \"Dashboard\"){\n dashboardService.deleteDashboard(board.id).then(function (data) {\n toaster.info($translate.instant(\"ADMIN_MESSAGE_BOARD_DELETED\"));\n });\n } else {\n boardService.deleteBoard(board.id).then(function () {\n toaster.info($translate.instant(\"ADMIN_MESSAGE_BOARD_DELETED\"));\n $scope.publish(\"SendBoardDeleted\", board.id);\n });\n }\n \n });\n\n });\n }\n\n function setupAllColumns(){\n $scope.allColumns = [\n {\n title: \"COMMON_TYPE\",\n cssClass: \"\",\n field: \"boardType\",\n visible: true,\n sortable: \"boardType\",\n getValue: renderValue,\n dataType: \"string\"\n }, \n {\n title: \"COMMON_NAME\",\n cssClass: \"pull-left\",\n field: 'name',\n visible: true,\n sortable: 'name',\n getValue: renderValue,\n dataType: \"text\"\n },\n {\n title: \"ADMIN_ASSETTYPE_BUSINESS_UNIT\",\n cssClass: \"\",\n field: \"businessUnitId\",\n visible: $scope.businessUnits.length > 0,\n sortable: \"businessUnitId\",\n getValue: renderValue,\n dataType: \"string\"\n },\n {\n title: \"\",\n cssClass: \"\",\n field: \"owner\",\n visible: true,\n sortable: \"owner\",\n getValue: renderValue,\n dataType: \"string\"\n },\n {\n title: \"\",\n cssClass: \"\",\n field: \"assetName\",\n visible: true,\n sortable: \"assetName\",\n getValue: renderValue,\n dataType: \"string\"\n },\n {\n title: \"COMMON_PUBLIC\",\n cssClass: \"folder-icon fal fa-globe\",\n field: \"isPublic\",\n visible: true,\n sortable: \"isPublic\",\n getValue: renderValue,\n dataType: \"bool\"\n },\n {\n title: \"COMMON_ID\",\n cssClass: \"\",\n field: 'id',\n visible: true,\n sortable: 'id',\n getValue: renderValue,\n dataType: \"number\"\n }\n ]\n }\n\n $scope.buildColumns = function () {\n $scope.columns = $filter('filter')($scope.allColumns, { visible: true });\n }\n\n function renderValue($scope, row) {\n const item = this \n const field = item.field\n const value = row[field]\n if (this.dataType === \"date\") {\n return $filter('date')(value, \"mediumDate\")\n }\n if (this.dataType === \"timestamp\") {\n return $filter('date')(value, \"dd.MM.yyyy HH:mm:ss\")\n }\n if (this.dataType === \"bool\") {\n if (value === \"true\") {\n return \"\"\n } else {\n return \"\"\n }\n }\n if (this.dataType === \"type\") {\n if (value === \"Dashboard\") {\n return \" {{ \"+ item.name + \"}}
        {{board.description}}\" \n } else if (value === \"Performance\") {\n return \"\"\n } else if (value === \"SmartActionList\") {\n return \"\"\n }\n }\n return value\n }\n\n}]);","import * as dashboardService from \"@common/services/dashboardService\"\nimport * as boardService from \"@common/services/boardService\"\nimport toaster from \"@common/components/toast\"\n\nconst DigiLean = angular.module('DigiLean')\nDigiLean.controller('flexiboardTemplateAdmin', ['$scope','$translate', 'modalService',\n function ($scope, $translate, modalService) {\n $scope.templates = [];\n\n $scope.restore = function (board) {\n $translate(['COMMON_CANCEL', 'ADMIN_RESTORE', 'ADMIN_RESTORE_BOARD_DESCRIPTION']).then(function (translations) {\n var modalOptions = {\n closeButtonText: translations.COMMON_CANCEL,\n actionButtonText: translations.ADMIN_RESTORE,\n headerText: translations.ADMIN_RESTORE + ' ' + board.name + '?',\n bodyText: translations.ADMIN_RESTORE_BOARD_DESCRIPTION\n };\n\n modalService.showModal({}, modalOptions).then(function (result) {\n boardService.restore(board.id).then(function (data) {\n loadBoards();\n getActiveBoards();\n $translate('ADMIN_MESSAGE_BOARD_RESTORED').then(function (msg) {\n toaster.success(msg);\n }, function (translationId) {\n $scope.headline = translationId;\n });\n });\n });\n });\n }\n\n var loadTemplates = function () {\n boardService.getTemplates().then(function (templates) {\n $scope.templates = templates;\n });\n }\n\n\n loadTemplates();\n\n\n $scope.subscribe(\"BoardTemplateCreated\", function (item) {\n loadTemplates();\n });\n\n $scope.subscribe(\"BoardTemplateDeleted\", function (id) {\n loadTemplates(); \n });\n\n $scope.deleteTemplate = function (template) {\n $translate(['COMMON_CANCEL', 'COMMON_DELETE', 'ADMIN_DELETED_BOARD_TEMPLATE_DESCRIPTION']).then(function (translations) {\n var modalOptions = {\n closeButtonText: translations.COMMON_CANCEL,\n actionButtonText: translations.COMMON_DELETE,\n headerText: translations.COMMON_DELETE + ' ' + template.name + '?',\n bodyText: translations.ADMIN_DELETED_BOARD_TEMPLATE_DESCRIPTION\n };\n\n modalService.showModal({}, modalOptions).then(function (result) {\n if (template.boardType == \"Dashboard\") {\n dashboardService.deleteTemplate(template.id).then(function () {\n $translate('ADMIN_MESSAGE_TEMPLATE_DELETED').then(function (msg) {\n toaster.success(msg);\n });\n loadTemplates();\n //$scope.publish(\"SendBoardDeleted\", board.id);\n });\n } else {\n boardService.deleteTemplate(template.id).then(function () {\n $translate('ADMIN_MESSAGE_TEMPLATE_DELETED').then(function (msg) {\n toaster.success(msg);\n });\n loadTemplates();\n //$scope.publish(\"SendBoardDeleted\", board.id);\n });\n }\n \n });\n\n });\n };\n\n}]);","import * as customerService from \"@common/services/customers/customerService\"\nimport * as assetService from \"@common/services/assetService\"\n\nvar DigiLean = angular.module('DigiLean')\nDigiLean.directive(\"membersSelector\", ['$filter', 'authService', 'navigationService',\n function ($filter, authService, navigationService) {\n return {\n templateUrl: 'membersSelector.html',\n restrict: 'E',\n scope: {\n 'assetId': '<',\n // 'canEdit': '=',\n 'memberSelectionChanged': '&',\n 'options': ' Board or Dashboard\n // options.assetId\n loadAllUsers();\n loadAssets();\n if (scope.hasProjectModule) {\n loadProjects();\n }\n\n if (!assetId) return;\n originalAssetId = assetId;\n loadUsersForAsset(scope.assetId);\n assetService.getById(scope.assetId).then(function (asset) {\n scope.asset = asset;\n if (!asset) return;\n if (asset.projectId) {\n scope.participanttype = \"PROJECT\";\n originalParticipantType = \"PROJECT\";\n }\n if (asset.isSystemAsset && !asset.projectId) {\n scope.participanttype = \"CUSTOMIZED\"\n originalParticipantType = \"CUSTOMIZED\";\n }\n });\n\n });\n\n var updateSelection = function (assetId, participants) {\n var selection = {\n assetId: assetId,\n participants: participants,\n assetType : scope.participanttype\n }\n scope.memberSelectionChanged({ selection: selection })\n }\n\n scope.toggleEditParticipants = function () {\n scope.editParticipants = !scope.editParticipants;\n };\n\n \n scope.assetChangeHandler = function (assetinfo) {\n if (assetinfo) {\n scope.assetId = assetinfo.asset.id;\n scope.selectedAsset = assetinfo.asset;\n loadUsersForAsset(assetinfo.asset.id);\n } \n }\n scope.assetChanged = function (asset) {\n loadUsersForAsset(asset.id);\n }\n\n var loadAllUsers = function () {\n customerService.getAllUsers().then(function (users) {\n scope.allUsers = users;\n updateParticipants();\n });\n }\n\n var loadUsersForAsset = function (assetId) {\n customerService.getUsersForAsset(assetId).then(function (members) {\n scope.participants = members;\n updateSelection(assetId, members);\n updateParticipants();\n });\n }\n\n function setAsset(){\n for (var k = 0; k < scope.assets.length; k++) {\n scope.assets[k].cssLevel = \"level-\" + scope.assets[k].level; \n }\n setSelectedAsset();\n scope.assetmodel = { assetId: scope.assetId,\n assets: scope.assets};\n }\n function loadAssets() {\n scope.isAdmin = authService.hasRole(\"Admin\") || authService.hasRole(\"BusinessunitAdmin\");\n if(scope.isAdmin){\n assetService.getAllAssets().then(function (assets) {\n scope.assets = assets;\n setAsset();\n });\n } else {\n assetService.getList().then(function (assets) {\n scope.assets = assets;\n setAsset();\n });\n }\n }\n\n function loadProjects() {\n assetService.getProjectAssets().then(function (assets) {\n scope.projectassets = assets;\n setProjectAsset();\n });\n \n }\n\n\n function setProjectAsset() {\n if (scope.assetId) {\n scope.projectasset = $filter('filter')(scope.projectassets, { id: scope.assetId }, true)[0];\n } else {\n scope.projectasset = {};\n }\n var projectAssetId = null;\n if(scope.projectasset) projectAssetId = scope.projectasset.id;\n scope.projectassetmodel = { assetId: projectAssetId,\n assets: scope.projectassets};\n }\n function setSelectedAsset() {\n if (scope.assetId) {\n scope.selectedAsset = $filter('filter')(scope.assets, { id: scope.assetId }, true)[0];\n } else {\n scope.selectedAsset = {};\n }\n }\n\n function updateParticipants() {\n if (!scope.participanttype == 'CUSTOMIZED') return;\n if (!scope.allUsers) return;\n if (!scope.participants) return;\n // Set up users to select from\n scope.users = scope.allUsers.slice();\n \n // Remove current participant so we can refresh the list\n for (var i = 0; i < scope.participants.length; i++) {\n var matchingUser = $filter('filter')(scope.users, { userId: scope.participants[i].userId }, true);\n if (matchingUser.length > 0) {\n var index = scope.users.indexOf(matchingUser[0]);\n scope.users.splice(index, 1);\n }\n }\n\n }\n\n scope.changeParticipantType = function (type) {\n if (type === 'PROJECT') {\n scope.participanttype = 'PROJECT';\n } else if (type === 'CUSTOMIZED') {\n scope.participanttype = 'CUSTOMIZED';\n scope.users = scope.allUsers.slice();\n if (originalParticipantType == \"CUSTOMIZED\") {\n loadUserForAsset(originalAssetId);\n } else {\n scope.participants = [];\n updateSelection(0, scope.participants);\n }\n } else {\n scope.participanttype = 'ASSET';\n }\n };\n\n scope.addParticipants = function (user) {\n scope.participants.unshift(user);\n var matchingUser = $filter('filter')(scope.users, { userId: user.userId }, true);\n if (matchingUser.length > 0) {\n var i = scope.users.indexOf(matchingUser[0]);\n scope.users.splice(i, 1);\n }\n if (originalParticipantType == \"CUSTOMIZED\") {\n updateSelection(originalAssetId, scope.participants);\n } else {\n updateSelection(0, scope.participants);\n }\n };\n\n scope.removeParticipants = function (user) {\n scope.users.unshift(user);\n var matchingUser = scope.participants.find(u => u.userId == user.userId )\n if (matchingUser) {\n var i = scope.participants.indexOf(matchingUser)\n scope.participants.splice(i, 1)\n }\n if (originalParticipantType == \"CUSTOMIZED\")\n updateSelection(originalAssetId, scope.participants)\n else\n updateSelection(0, scope.participants)\n \n }\n }\n }\n }])\n","import * as boardService from \"@common/services/boardService\"\n\nvar DigiLean = angular.module('DigiLean');\nDigiLean.directive(\"boardAccessChecker\",\n function () {\n return {\n templateUrl: 'boardAccessChecker.html',\n restrict: 'E',\n scope: {\n 'accessOptions': ' 0) {\n item = category[0];\n item.count += 1;\n } else {\n item = { action: activity.action, count: 1 }\n $scope.activities.push(item);\n }\n item.hasChanged = true;\n item.lastModified = activity.activityDate;\n // Calculate time elapsed for all elements\n updateFeedTimeStamp();\n $scope.$apply();\n removeAnmiation(item);\n });\n }\n }]);","import * as systemHubService from \"@common/services/systemHubService\"\nimport * as customerService from \"@common/services/customers/customerService\"\n\nvar DigiLean = angular.module('DigiLean')\nDigiLean.controller('customerMonitoringController', ['$scope', '$element', '$filter', 'authService',\n function ($scope, $element, $filter, authService) {\n\n $scope.title = 'Users online';\n\n $scope.customerEvents = [];\n $scope.customersOnline = [];\n $scope.customers = [];\n $scope.totalConnections = 0;\n $scope.usersOnline = 0;\n $scope.totalUsersOnline = 0;\n $scope.totalTeamsUsersOnline = 0;\n $scope.showClients = function (customer) {\n customer.showClients = !customer.showClients;\n }\n $scope.subscribe(\"UserAuthenticatedAndReady\", function (profile) {\n if (!authService.hasRole(\"KaizenAdmin\")) return;\n loadData();\n });\n\n\n function loadData() {\n // This is only for Kaizen so return if not in role.\n if (!authService.hasRole(\"KaizenAdmin\")) return;\n customerService.getCustomersSimpleForAdmin().then(function (customers) {\n angular.forEach(customers, function (item, key) {\n var currentCustomer = {\n customerId: item.id,\n name: item.name,\n clients: [],\n cssState: \"\"\n }\n $scope.customers.push(currentCustomer)\n })\n systemHubService.getAllUsersOnlineRest().then(function(users) {\n handleAllUsersOnline(users)\n })\n })\n }\n \n\n loadData();\n\n var hasLoadedAllUsers = false;\n $scope.subscribe(\"CustomerUsersConnectedChanged\", function (customer) {\n if (!hasLoadedAllUsers) {\n $scope.publish(\"GetAllUsersOnline\");\n hasLoadedAllUsers = true;\n }\n updateCustomerOnlineCount(customer);\n $scope.$apply();\n $scope.publish(\"GetOnlineUsersStatus\");\n });\n\n $scope.translationData = {\n totalUsersOnline: $scope.totalUsersOnline\n };\n\n $scope.subscribe(\"OnlineUsersStatus\", function (usersOnline) {\n $scope.totalConnections = usersOnline.totalNumberOfConnections;\n });\n $scope.publish(\"GetOnlineUsersStatus\");\n\n $scope.subscribe(\"AllUsersOnline\", function (usersOnline) {\n handleAllUsersOnline(usersOnline)\n $scope.$apply()\n })\n\n function handleAllUsersOnline(users) {\n angular.forEach(users, function (companyOnline, key) {\n updateCustomerOnlineCount(companyOnline)\n })\n }\n var maxClients = 2;\n function updateCustomerOnlineCount(customerOnline) {\n var customer = $filter('filter')($scope.customers, { customerId: customerOnline.customerId }, true);\n \n if (customer.length > 0) {\n customer[0].teamsClients = 0;\n customer[0].clients = customerOnline.clients;\n customer[0].clients.forEach(client => {\n if (client.source == \"teams\") {\n customer[0].teamsClients += 1;\n }\n });\n customer[0].cssState = \"animated bounce\";\n }\n $scope.customersOnline = $filter('filter')($scope.customers, function (customer) {\n return customer.clients.length > 0;\n });\n $scope.customersOnline.sort(function (a, b) {\n if (a.name.toLowerCase() > b.name.toLowerCase()) {\n return 1;\n } else {\n return -1\n }\n })\n updateTotalUsersOnline();\n setCustomerProgressCount();\n }\n\n function setCustomerProgressCount() {\n angular.forEach($scope.customers, function (customer, key) {\n\n customer.progress = customer.clients.length / maxClients * 100;\n customer.progressBackground = \"#0099DE\";\n customer.progressBorderColor = \"transparent\"\n });\n\n };\n\n function updateTotalUsersOnline() {\n var count = 0;\n var teamsCount = 0;\n var allClients = [];\n angular.forEach($scope.customers, function (customer, key) {\n count += customer.clients.length;\n if (customer.clients.length > maxClients) {\n maxClients = customer.clients.length;\n }\n customer.clients.forEach(client => {\n if (client.source == \"teams\") {\n teamsCount += 1;\n }\n allClients.push(client);\n });\n });\n var uniqueUsers = _.countBy(allClients, \"userName\");\n $scope.usersOnline = Object.keys(uniqueUsers).length;\n $scope.totalUsersOnline = count;\n $scope.totalTeamsUsersOnline = teamsCount;\n $scope.translationData.totalUsersOnline = count;\n }\n\n let intervalId = 0\n var chart;\n function loadChart() {\n var renderElement = $($element).find(\".liveCustomerChart\")[0];\n chart = new Highcharts.Chart({\n chart: {\n renderTo: renderElement,\n defaultSeriesType: 'spline'\n },\n title: {\n text: ''\n },\n credits: {\n enabled: false //remove link to highcharts.com\n },\n exporting: {\n enabled: false //remove context menu\n },\n xAxis: {\n type: 'datetime',\n tickPixelInterval: 150,\n maxZoom: 20 * 1000\n },\n yAxis: {\n minPadding: 0.2,\n maxPadding: 0.2,\n title: {\n text: ''\n }\n },\n series: [{\n name: 'Users online',\n data: []\n }]\n });\n\n if (intervalId)\n return\n // Timer that updates the chart\n intervalId = setInterval(function () {\n var series = chart.series[0],\n shift = series.data.length > 1000; // shift if the series is \n // longer than 20\n var point = [new Date().getTime(), $scope.totalUsersOnline];\n // add the point\n chart.series[0].addPoint(point, true, shift);\n }, 5000);\n };\n\n loadChart();\n $scope.$on(\"$destroy\", () => {\n clearInterval(intervalId)\n })\n }]);","import CountUp from './../../../../thirdparty/countUp/countUp.min';\nvar DigiLean = angular.module('DigiLean');\n\nDigiLean.directive(\"notificationsOverview\", ['notificationService', '$filter','$timeout',\n function (notificationService, $filter, $timeout) {\n return {\n templateUrl: 'notificationsOverview.html',\n restrict: 'E',\n scope: {\n 'datasourceId': '<',\n },\n link: function (scope, elem, attrs) {\n \n\n notificationService().getNotificationsOverview().then(function (result) {\n // Assign values\n scope.total = result.total;\n scope.mobileCount = result.mobileCount;\n scope.emailCount = result.emailCount;\n scope.actionResults = result.actionResults;\n updateCounters();\n });\n/*\n var countUpOptions = {\n useEasing: true,\n useGrouping: true,\n separator: ',',\n decimal: '.',\n prefix: '',\n suffix: ''\n };*/\n var countUpOptions = {\n decimal: '.'\n };\n var updateCounters = function () {\n var numAnim = new CountUp(\"totaNumberOfNotifications\", 0, scope.total, 0, 3, countUpOptions);\n numAnim.start();\n var emailAnim = new CountUp(\"totaNumberOfEmailNotifications\", 0, scope.emailCount, 0, 3, countUpOptions);\n emailAnim.start();\n var mobileAnim = new CountUp(\"totaNumberOfMobileNotifications\", 0, scope.mobileCount, 0, 3, countUpOptions);\n mobileAnim.start();\n }\n\n scope.subscribe('NotificationSent', function (notification) {\n scope.total += 1;\n if (notification.mobile) {\n scope.mobileCount += 1;\n }\n if (notification.email) {\n scope.emailCount += 1;\n }\n var hasAction = $filter('filter')(scope.actionResults, { action: notification.action }, true);\n if (hasAction.length > 0) {\n var action = hasAction[0];\n action.hasChanged = true;\n action.total += 1;\n if (notification.mobile) {\n action.mobileCount += 1;\n }\n if (notification.email) {\n action.emailCount += 1;\n }\n removeAnmiation(action);\n \n } else {\n var newAction = {\n action: notification.action,\n total: 1,\n mobileCount: 0,\n emailCount: 0,\n }\n if (notification.mobile) {\n newAction.mobileCount += 1;\n }\n if (notification.email) {\n newAction.emailCount += 1;\n }\n scope.actionResults.push(newAction);\n newAction.hasChanged = true;\n removeAnmiation(newAction);\n }\n updateCounters();\n // scope.$apply();\n });\n\n function removeAnmiation(action) {\n $timeout(function () {\n action.hasChanged = false;\n }, 5000);\n }\n }\n\n\n }\n }]);\n","import CountUp from './../../../../thirdparty/countUp/countUp.min'\nimport * as customerService from \"@common/services/customers/customerService\"\nimport * as timeService from \"@common/services/timeService\"\n\nvar DigiLean = angular.module('DigiLean');\nDigiLean.directive(\"licensesChanges\", ['$filter','$timeout',\n function ($filter, $timeout) {\n return {\n templateUrl: 'licensesChanges.html',\n restrict: 'E',\n scope: {\n 'datasourceId': '<',\n },\n link: function (scope, elem, attrs) {\n scope.actionResults = []\n \n scope.total = 0;\n scope.mobileCount = 0;\n\n scope.emailCount = 0;\n scope.options = {\n timePeriod: {\n timeframe: \"30\",\n useDefaultTimeframes: true\n }\n };\n scope.timePeriod = timeService.getTimePeriod('30');\n\n customerService.getLicensesChanges(scope.timePeriod).then(function (result) {\n scope.actionResults = result;\n });\n\n scope.periodChangedHandler = function (timePeriod) {\n if (!timePeriod.timeframe) return;\n scope.timePeriod = timePeriod.period;\n scope.isLoading = true;\n customerService.getLicensesChanges(scope.timePeriod).then(function (result) {\n scope.actionResults = result;\n scope.isLoading = false;\n });\n\n };\n\n var countUpOptions = {\n useEasing: true,\n useGrouping: true,\n separator: ',',\n decimal: '.',\n prefix: '',\n suffix: ''\n };\n var updateCounters = function () {\n var numAnim = new CountUp(\"totaNumberOfNotifications\", 0, scope.total, 0, 3, countUpOptions);\n numAnim.start();\n var emailAnim = new CountUp(\"totaNumberOfEmailNotifications\", 0, scope.emailCount, 0, 3, countUpOptions);\n emailAnim.start();\n var mobileAnim = new CountUp(\"totaNumberOfMobileNotifications\", 0, scope.mobileCount, 0, 3, countUpOptions);\n mobileAnim.start();\n }\n\n scope.subscribe('NotificationSent', function (notification) {\n if(notification){\n scope.total += 1;\n if (notification.mobile) {\n scope.mobileCount += 1;\n }\n if (notification.email) {\n scope.emailCount += 1;\n }\n var hasAction = $filter('filter')(scope.actionResults, { action: notification.action }, true);\n if (hasAction.length > 0) {\n var action = hasAction[0];\n action.hasChanged = true;\n action.total += 1;\n if (notification.mobile) {\n action.mobileCount += 1;\n }\n if (notification.email) {\n action.emailCount += 1;\n }\n removeAnmiation(action);\n \n } else {\n var newAction = {\n action: notification.action,\n total: 1,\n mobileCount: 0,\n emailCount: 0,\n }\n if (notification.mobile) {\n newAction.mobileCount += 1;\n }\n if (notification.email) {\n newAction.emailCount += 1;\n }\n scope.actionResults.push(newAction);\n newAction.hasChanged = true;\n removeAnmiation(newAction);\n }\n updateCounters();\n }\n // scope.$apply();\n });\n\n function removeAnmiation(action) {\n $timeout(function () {\n action.hasChanged = false;\n }, 5000);\n }\n }\n\n\n }\n }]);\n","\nimport * as timeService from \"@common/services/timeService\"\nimport * as employeeService from \"@common/services/employeeService\"\n\nvar DigiLean = angular.module(\"DigiLean\");\nDigiLean.controller('dailyFeedController', ['$rootScope', '$scope', '$uibModal', '$filter', '$translate', 'activityService', 'navigationService', 'deviationService', 'suggestionService',\n function ($rootScope, $scope, $uibModal, $filter, $translate, activityService, navigationService, deviationService, suggestionService) {\n $scope.isLoading = true;\n $scope.feed = [];\n $scope.items = []; //used by paging\n var translateOptions = {};\n $scope.translationData = {\n noOfFeeds: $scope.feed.length\n };\n\n // REMEMBER: to update dailyfeedActivitySelector.allEvents if modified\n var allEvents = [\"BoardCreation\",\n \"BoardDeleted\",\n \"TaskComment\",\n \"TaskCloned\",\n \"TaskUpdated\",\n \"TaskRepeated\",\n \"NewTask\",\n \"DeleteTask\",\n \"TaskAssigned\",\n \"TaskStatusUpdated\",\n \"TaskDeviationCreated\",\n \"UpdatedResponsibleDeviation\",\n \"UpdatedDueDateDeviation\",\n \"UpdatedProblemReasonDeviation\",\n \"TaskMoved\",\n \"TaskMovedToActionList\",\n \"TaskCreatedToActionList\",\n \"TaskMovedFromActionListToBoard\",\n \"TaskAttachmentAdded\",\n \"TaskAttachmentDeleted\",\n \"NewSuggestion\",\n \"ImprovementDeleted\",\n \"NewImprovement\",\n \"NewAttachment\",\n \"DeleteAttachment\",\n \"DeviationAttachmentAdded\",\n \"DeviationAttachmentDeleted\",\n \"DeviationDeleted\",\n \"UpdatedStatusSuggestion\",\n \"UpdatedCategorySuggestion\",\n \"UpdatedPrioritySuggestion\",\n \"UpdatedResponsibleSuggestion\",\n \"UpdatedSuggestion\",\n \"ImprovementLikeAdded\",\n \"ImprovementComment\",\n \"ImprovementActivatedToA3\",\n \"ImprovementDueDateChanged\",\n \"A3Created\",\n \"A3Updated\",\n \"A3VersionCreated\",\n \"A3StepUpdated\",\n \"A3Deleted\",\n \"A3StepCommentedOn\",\n \"NewDeviation\",\n \"DeviationActivatedToA3\",\n \"UpdatedStatusDeviation\",\n \"UpdatedSeverityDeviation\",\n \"DeviationUpdated\",\n \"DeviationComment\"];\n $scope.validEvents = allEvents;\n // DEFAULT TRANSLATION\n $translate(['COMMON_TIMEELAPSED_MONTH', 'COMMON_TIMEELAPSED_DAYS', 'COMMON_TIMEELAPSED_HOURS', 'COMMON_TIMEELAPSED_MINUTES', 'COMMON_TIMEELAPSED_SECONDS', 'COMMON_TIMEELAPSED_NOW']).then(function (translations) {\n translateOptions = {\n month: translations.COMMON_TIMEELAPSED_MONTH,\n days: translations.COMMON_TIMEELAPSED_DAYS,\n hours: translations.COMMON_TIMEELAPSED_HOURS,\n mins: translations.COMMON_TIMEELAPSED_MINUTES,\n seconds: translations.COMMON_TIMEELAPSED_SECONDS,\n now: translations.COMMON_TIMEELAPSED_NOW\n }\n // Now we can get data\n getSettings();\n\n });\n\n function getSettings() {\n employeeService.getUserSettings().then(function (userSettings) {\n if (userSettings) {\n if (!userSettings.feed) {\n $scope.validEvents = allEvents;\n } else {\n $scope.validEvents = userSettings.feed;\n }\n } else {\n $scope.validEvents = allEvents;\n }\n subscribeToEvents();\n getLatestActivity();\n });\n }\n\n var translateAndRecalculateTimeElapsed = function () {\n // Recalculate time elapsed\n $scope.feed.forEach(function (activity) {\n activity.occured = timeService.getTimeElapsed(activity.activityDate, translateOptions);\n });\n }\n\n // When language has changed.\n $rootScope.$on('$translateChangeSuccess', function () {\n translateOptions = {\n month: $translate.instant('COMMON_TIMEELAPSED_MONTH'),\n days: $translate.instant('COMMON_TIMEELAPSED_DAYS'),\n hours: $translate.instant('COMMON_TIMEELAPSED_HOURS'),\n mins: $translate.instant('COMMON_TIMEELAPSED_MINUTES'),\n seconds: $translate.instant('COMMON_TIMEELAPSED_SECONDS'),\n now: $translate.instant('COMMON_TIMEELAPSED_NOW')\n }\n translateAndRecalculateTimeElapsed();\n });\n\n\n // Subscribe to Events\n function subscribeToEvents() {\n $scope.subscribe('ActivityOccured', function (activity) {\n // Handle activity and add to list. Need some filter for what is relevant.\n if (activity.assetId && !navigationService().hasAccessToAsset(activity.assetId)) {\n return;\n }\n if (!$scope.isSupportedEvent(activity)) return;\n if (alreadyInList(activity)) return;\n if (isNotRelevant(activity)) {\n return;\n }\n activity.cssState = \"animated slideInDown\";\n $scope.feed.unshift(activity);\n // Recalculate time elapsed\n $scope.feed.forEach(function (activity) {\n activity.occured = timeService.getTimeElapsed(activity.activityDate, translateOptions);\n if (activity.payLoad && typeof activity.payLoad === \"string\") {\n activity.payLoad = JSON.parse(activity.payLoad);\n }\n });\n // $scope.$apply();\n $scope.translationData.noOfFeeds = $scope.feed.length;\n });\n }\n\n $scope.subscribe('UserSettingsChanged', function (settings) {\n if (settings) {\n if (!settings.feed) {\n $scope.validEvents = allEvents;\n } else {\n $scope.validEvents = settings.feed;\n }\n // Now we can refresh data\n subscribeToEvents();\n getLatestActivity();\n }\n });\n\n\n // Valid event activities for user\n $scope.subscribe('UserAuthenticatedAndReady', function (profile) {\n $scope.profile = profile;\n if (!profile.settings || !profile.settings.feed) {\n $scope.validEvents = allEvents;\n } else {\n $scope.validEvents = profile.settings.feed;\n }\n // Now we can get data\n subscribeToEvents();\n getLatestActivity();\n });\n\n\n $scope.openActivitySelector = function () {\n\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'dailyfeedActivitySelector.html',\n controller: 'dailyfeedActivitySelector',\n resolve: {\n validEvents: function () {\n return $scope.validEvents;\n }\n }\n });\n };\n \n function getLatestActivity() {\n // Handle activity and add to list. Need some filter for what is relevant.\n activityService().getDailyFeed($scope.validEvents).then(function (log) {\n $scope.feed = [];\n log.forEach(function (activity) {\n if (!isNotRelevant(activity)) {\n activity.occured = timeService.getTimeElapsed(activity.activityDate, translateOptions);\n if (activity.payLoad && typeof activity.payLoad === \"string\") {\n activity.payLoad = JSON.parse(activity.payLoad);\n }\n $scope.feed.push(activity);\n }\n });\n $scope.isLoading = false;\n \n $scope.translationData.noOfFeeds = $scope.feed.length;\n });\n }\n\n $scope.isSupportedEvent = function (activity) {\n for (var i = 0; i < $scope.validEvents.length; i++) {\n if (activity.action === $scope.validEvents[i]) return true;\n }\n return false;\n };\n\n var isNotRelevant = function (activity) {\n // Private task\n if (!activity.assetId && activity.activity === \"BoardTask\") return true;\n return false;\n }\n var alreadyInList = function (activity) {\n // Private task\n var inList = $filter('filter')($scope.feed, { id: activity.id });\n return inList.length > 0;\n }\n\n $scope.openDeviation = function (id) {\n deviationService().get(id).then(function (deviation) {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n templateUrl: 'fullDeviation.html',\n controller: 'fullDeviationController',\n windowClass: 'full-screen',\n resolve: {\n deviation: function () {\n return deviation;\n },\n activeTab: function () {\n return \"Info\";\n }\n }\n });\n });\n };\n\n $scope.openImprovementSuggestion = function (id) {\n suggestionService().get(id).then(function (suggestion) {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n templateUrl: 'fullImprovementInfoForm.html',\n controller: 'fullImprovementModalController',\n windowClass: 'fullSuggestion-modal-window',\n resolve: {\n suggestion: function () {\n return suggestion;\n },\n activeTab: function () {\n return \"Info\";\n }\n }\n });\n });\n };\n\n $scope.addSuggestionLike = function (id) {\n suggestionService().addLike(id).then(function (like) {\n\n });\n };\n\n }]);","import * as employeeService from \"@common/services/employeeService\"\n\nvar DigiLean = angular.module(\"DigiLean\");\nDigiLean.controller('dailyfeedActivitySelector', ['$scope', '$filter', '$translate', '$uibModalInstance', 'validEvents',\n function ($scope, $filter, $translate, $uibModalInstance, validEvents) {\n $scope.validEvents = validEvents;\n\n function init(){\n resetAllEvents();\n if($scope.validEvents){\n for(var e=0; e < $scope.allEvents.length; e++){\n var matchingActivity = $filter('filter')($scope.validEvents, $scope.allEvents[e].id, true);\n if (matchingActivity.length > 0) {\n $scope.allEvents[e].include = true;\n } else {\n $scope.allEvents[e].include = false;\n }\n }\n }\n }\n init();\n\n // REMEMBER: to update dailyfeedController.allEvents if modified\n function resetAllEvents(){\n $scope.allEvents = [ \n {id: \"BoardCreation\",\n include: true,\n module: \"Board\",\n translation: $translate.instant('DASHBOARD_DAILY_FEED_CREATED_BOARD')},\n {id: \"BoardDeleted\",\n include: true,\n module: \"Board\",\n translation: $translate.instant('DASHBOARD_DAILY_FEED_DELETED_BOARD')},\n {id: \"TaskComment\",\n include: true,\n module: \"Board\",\n translation: $translate.instant('DASHBOARD_DAILY_FEED_COMMENTED_ON_TASK')},\n {id: \"NewTask\",\n module: \"Board\",\n include: true,\n translation: $translate.instant('DASHBOARD_DAILY_FEED_CREATED_TASK')},\n {id: \"DeleteTask\",\n module: \"Board\",\n include: true,\n translation: $translate.instant('DASHBOARD_DAILY_FEED_DELETED_TASK')},\n {id: \"TaskAssigned\",\n module: \"Board\",\n include: true,\n translation: $translate.instant('DASHBOARD_DAILY_FEED_ASSIGNED_TASK')},\n {id: \"TaskUpdated\",\n module: \"Board\",\n include: true,\n translation: $translate.instant('DASHBOARD_DAILY_FEED_UPDATED_TASK')},\n {id: \"TaskStatusUpdated\",\n module: \"Board\",\n include: true,\n translation: $translate.instant('DASHBOARD_DAILY_FEED_COMPLETED_TASK')},\n {id: \"TaskCloned\",\n module: \"Board\",\n include: true,\n translation: $translate.instant('BOARD_CLONED_TASK')},\n {id: \"TaskRepeated\",\n module: \"Board\",\n include: true,\n translation: $translate.instant('BOARD_REPEATED_TASK')},\n {id: \"TaskMoved\",\n module: \"Board\",\n include: true,\n translation: $translate.instant('COMMON_MOVED_TASK')},\n {id: \"TaskMovedToActionList\",\n module: \"Board\",\n include: true,\n translation: $translate.instant('COMMON_MOVED_TASK_TO_ACTIONLIST')},\n {id: \"TaskMovedFromActionListToBoard\",\n module: \"Board\",\n include: true,\n translation: $translate.instant('COMMON_MOVED_TASK_FROM_ACTIONLIST_TO_BOARD')},\n {id: \"TaskCreatedToActionList\",\n module: \"Board\",\n include: true,\n translation: $translate.instant('DASHBOARD_DAILY_FEED_CREATED_ACTIONLIST_TASK')},\n {id: \"TaskAttachmentAdded\",\n module: \"Board\",\n include: true,\n translation: $translate.instant('DASHBOARD_DAILY_FEED_ADDED_ATTACHMENT_ON_TASK')},\n {id: \"TaskAttachmentDeleted\",\n module: \"Board\",\n include: true,\n translation: $translate.instant('DASHBOARD_DAILY_FEED_DELETED_ATTACHMENT_ON_TASK')},\n {id: \"TaskDeviationCreated\",\n module: \"Board\",\n include: true,\n translation: $translate.instant('BOARD_CREATED_DEVIATION_TASK')},\n\n {id: \"NewImprovement\",\n include: true,\n module: \"Improvement\",\n translation: $translate.instant('DASHBOARD_DAILY_FEED_NEW_SUGGESTION')},\n {id: \"ImprovementDeleted\",\n include: true,\n module: \"Improvement\",\n translation: $translate.instant('IMPROVEMENT_IMPROVEMENT_DELETED')},\n {id: \"NewAttachment\",\n include: true,\n module: \"Improvement\",\n translation: $translate.instant('DASHBOARD_DAILY_FEED_ADDED_ATTACHMENT_ON_SUGGESTION')},\n {id: \"DeleteAttachment\",\n include: true,\n module: \"Improvement\",\n translation: $translate.instant('DASHBOARD_DAILY_FEED_DELETED_ATTACHMENT_ON_SUGGESTION')},\n {id: \"UpdatedStatusSuggestion\",\n include: true,\n module: \"Improvement\",\n translation: $translate.instant('COMMON_UPDATED_STATUS')},\n {id: \"UpdatedCategorySuggestion\",\n include: true,\n module: \"Improvement\",\n translation: $translate.instant('COMMON_UPDATED_CATEGORY')},\n {id: \"UpdatedPrioritySuggestion\",\n include: true,\n module: \"Improvement\",\n translation: $translate.instant('IMPROVEMENT_CHANGED_PRIORITY')},\n {id: \"ImprovementDueDateChanged\",\n include: true,\n module: \"Improvement\",\n translation: $translate.instant('COMMON_UPDATED_DUE_DATE')},\n {id: \"UpdatedResponsibleSuggestion\",\n include: true,\n module: \"Improvement\",\n translation: $translate.instant('COMMON_CHANGED_RESPONSIBLE')},\n {id: \"ImprovementComment\",\n include: true,\n module: \"Improvement\",\n translation: $translate.instant('DASHBOARD_DAILY_FEED_COMMENTED_ON_SUGGESTION')},\n {id: \"ImprovementLikeAdded\",\n include: true,\n module: \"Improvement\",\n translation: $translate.instant('DASHBOARD_DAILY_FEED_LIKED_SUGGESTION')},\n {id: \"UpdatedSuggestion\",\n include: true,\n module: \"Improvement\",\n translation: $translate.instant('DASHBOARD_DAILY_FEED_UPDATED_SUGGESTION')},\n \n {id: \"NewDeviation\",\n module: \"Deviation\",\n include: true,\n translation: $translate.instant('DASHBOARD_DAILY_FEED_NEW_DEVIATION')},\n {id: \"DeviationDeleted\",\n module: \"Deviation\",\n include: true,\n translation: $translate.instant('DEVIATION_DEVIATION_DELETED')},\n {id: \"UpdatedResponsibleDeviation\",\n module: \"Deviation\",\n include: true,\n translation: $translate.instant('COMMON_CHANGED_RESPONSIBLE')},\n {id: \"UpdatedDueDateDeviation\",\n module: \"Deviation\",\n include: true,\n translation: $translate.instant('COMMON_UPDATED_DUE_DATE')},\n {id: \"UpdatedProblemReasonDeviation\",\n module: \"Deviation\",\n include: true,\n translation: $translate.instant('ADMIN_MESSAGE_CAUSE_UPDATED')},\n {id: \"DeviationAttachmentAdded\",\n module: \"Deviation\",\n include: true,\n translation: $translate.instant('DASHBOARD_DAILY_FEED_ADDED_ATTACHMENT_ON_DEVIATION')},\n {id: \"DeviationAttachmentDeleted\",\n module: \"Deviation\",\n include: true,\n translation: $translate.instant('DASHBOARD_DAILY_FEED_DELETED_ATTACHMENT_FROM_DEVIATION')},\n {id: \"UpdatedStatusDeviation\",\n module: \"Deviation\",\n include: true,\n translation: $translate.instant('COMMON_UPDATED_STATUS')},\n {id: \"UpdatedSeverityDeviation\",\n module: \"Deviation\",\n include: true,\n translation: $translate.instant('DEVIATION_CHANGED_SEVERITY')},\n {id: \"DeviationUpdated\",\n module: \"Deviation\",\n include: true,\n translation: $translate.instant('DASHBOARD_DAILY_FEED_UPDATED_DEVIATION')},\n {id: \"DeviationComment\",\n module: \"Deviation\",\n include: true,\n translation: $translate.instant('DASHBOARD_DAILY_FEED_COMMENTED_ON_DEVIATION')},\n \n {id: \"A3Created\",\n module: \"A3\",\n include: true,\n translation: $translate.instant('DASHBOARD_DAILY_FEED_CREATED_A3')},\n {id: \"A3Updated\",\n module: \"A3\",\n include: true,\n translation: $translate.instant('DASHBOARD_DAILY_FEED_UPDATED_A3')}, \n {id: \"ImprovementActivatedToA3\",\n module: \"A3\",\n include: true,\n translation: $translate.instant('DASHBOARD_DAILY_FEED_CREATED_A3_FROM_IMPROVEMENT')},\n {id: \"DeviationActivatedToA3\",\n module: \"A3\",\n include: true,\n translation: $translate.instant('DASHBOARD_DAILY_FEED_CREATED_A3_FROM_DEVIATION')},\n {id: \"A3VersionCreated\",\n module: \"A3\",\n include: true,\n translation: $translate.instant('DASHBOARD_DAILY_FEED_CREATED_A3_VERSION')},\n {id: \"A3StepUpdated\",\n module: \"A3\",\n include: true,\n translation: $translate.instant('DASHBOARD_DAILY_FEED_UPDATED_A3_STEP')},\n {id: \"A3Deleted\",\n module: \"A3\",\n include: true,\n translation: $translate.instant('DASHBOARD_DAILY_FEED_DELETED_A3')},\n {id: \"A3StepCommentedOn\",\n module: \"A3\",\n include: true,\n translation: $translate.instant('DASHBOARD_DAILY_FEED_COMMENTED_ON_A3')},\n \n ];\n }\n \n\n $scope.isSupportedEvent = function(activity) {\n for (var i = 0; i < $scope.validEvents.length; i++) {\n if (activity === $scope.validEvents[i]) return true; \n }\n return false;\n };\n\n $scope.showAllActivities = function () {\n resetAllEvents();\n $scope.validEvents = null;\n };\n\n $scope.toggleActivity = function (activity) {\n if($scope.validEvents){ //allready filtered events\n var matchingActivity = $filter('filter')($scope.validEvents, activity, true);\n if (matchingActivity.length > 0) {\n var i = $scope.validEvents.indexOf(matchingActivity[0]);\n $scope.validEvents.splice(i, 1);\n } else {\n $scope.validEvents.push(activity);\n }\n } else { //first filtered event\n $scope.validEvents = [];\n for(var e=0; e < $scope.allEvents.length; e++){\n if($scope.allEvents[e].include){\n $scope.validEvents.push($scope.allEvents[e].id); \n }\n } \n }\n };\n \n $scope.ok = function () {\n employeeService.getUserSettings().then(function (userSettings) {\n userSettings.feed = $scope.validEvents;\n employeeService.updateUserSettings(userSettings).then(function () {\n $scope.publish(\"UserSettingsChanged\", userSettings);\n });\n });\n $uibModalInstance.close();\n };\n\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n }]);","import * as customerService from \"@common/services/customers/customerService\"\nimport * as dashboardService from \"@common/services/dashboardService\"\nimport * as staticFileService from \"@common/shared/staticFileService\"\nimport * as displayService from \"@common/services/displayService\"\nimport * as boardService from \"@common/services/boardService\"\nimport toaster from \"@common/components/toast\"\n\nangular\n .module('DigiLean')\n .controller(\"dashboardDesignerController\", ['$scope', '$state', '$translate', '$filter', '$stateParams', '$uibModal', 'authService', 'modalService', 'debounce',\n function ($scope, $state, $translate, $filter, $stateParams, $uibModal, authService, modalService, debounce) {\n $scope.id = parseInt($stateParams.id);\n \n $scope.isInPresentationMode = false;\n var rotatePageTimer;\n var isRotatingPage = false;\n $scope.rotateIntervals = [\n {\n title: $translate.instant(\"DASHBOARD_ROTATION_5_SECONDS\"),\n interval: 5000\n },\n {\n title: $translate.instant(\"DASHBOARD_ROTATION_15_SECONDS\"),\n interval: 15000\n },\n {\n title: $translate.instant(\"DASHBOARD_ROTATION_30_SECONDS\"),\n interval: 30000\n },\n {\n title: $translate.instant(\"DASHBOARD_ROTATION_1_Minute\"),\n interval: 60000\n },\n {\n title: $translate.instant(\"DASHBOARD_ROTATION_5_Minute\"),\n interval: 300000\n },\n {\n title: $translate.instant(\"DASHBOARD_ROTATION_10_Minute\"),\n interval: 600000\n }\n ];\n\n $scope.selectedInterval = $scope.rotateIntervals[2]; // 30 sec default\n // Pick up settings from address bar\n if ($stateParams.interval) {\n var interval = parseInt($stateParams.interval);\n var selectedInterval = $filter(\"filter\")($scope.rotateIntervals, { interval: interval });\n if (selectedInterval.length > 0) {\n $scope.selectedInterval = selectedInterval[0];\n }\n }\n if ($stateParams.mode) {\n if ($stateParams.mode == \"info\") {\n setTimeout(function() {\n startPresentationView();\n }, 100);\n \n } else {\n stopPresentationView();\n }\n } else {\n stopPresentationView();\n }\n \n $scope.isAdmin = authService.hasRole(\"Admin\");\n $scope.subscribe('UserAuthenticatedAndReady', function (profile) {\n \n });\n\n customerService.getCurrent().then(function (customer) {\n $scope.logoUrl = customer.logoUrl;\n });\n\n $scope.subscribe('DashboardUpdated', function (dashboard) {\n if ($scope.currentDashboard.id === dashboard.id) {\n loadDashboard(dashboard, $scope.currentPage);\n $scope.$apply();\n }\n });\n\n $scope.gridsterOptions = { //margins: [20, 10], (top, right, bottom, and left).\n margins: [20, 20],\n columns: 40,\n maxRows: 200,\n sparse: true, // \"true\" can increase performance of dragging and resizing for big grid (e.g. 20x50)\n swapping: false, // allow widgets of same size to swap place\n resizable: {\n enabled: true,\n handles: ['n', 'e', 's', 'w', 'ne', 'se', 'sw', 'nw'],\n resize: widgetResizing, // optional callback fired when item is resized,\n stop: widgetResized // optional callback fired when item is finished resizing\n },\n draggable: {\n enabled: true, // whether dragging items is supported\n handle: '.widget-drag-handle', // optional selector for drag handle\n stop: function (event, $element, widget) {\n $scope.save();\n }\n }\n };\n $scope.isClosed = true; \n $scope.isAdminMode = false;\n $scope.gridsterOptions.draggable.enabled = false;\n $scope.gridsterOptions.resizable.enabled = false;\n\n $scope.options = {\n timePeriod: {\n timeframe: \"none\",\n timeframes: ['all', 'last12mth', 'year', '30', 'year', 'month', 'previousmonth', 'thisandnextweek', 'isoweek', 'day', 'custom', 'none']\n }\n };\n\n $scope.currentIndex = null;\n\n\n $scope.periodChangedHandler = function (timePeriod) {\n $scope.options.timePeriod = timePeriod;\n\n if ($scope.isAdminMode) {\n commitChanges();\n }\n };\n\n $scope.selectPage = function (page) {\n page.widgets.forEach(function (widget) {\n if (widget.settings && typeof widget.settings === \"string\") {\n widget.settings = JSON.parse(widget.settings);\n console.log(\"parsing settings\");\n //widget.isAdminMode = $scope.isAdminMode;\n }\n });\n $scope.currentPage = page;\n }\n\n\n $scope.giveWidgetFocus = function (widget) {\n var index = $scope.currentPage.widgets.indexOf(widget);\n $scope.currentPage.widgets.splice(index, 1);\n $scope.currentPage.widgets.push(widget);\n\n };\n\n\n \n $scope.changeRotateInterval = function (interval) {\n $scope.selectedInterval = interval;\n if (isRotatingPage) {\n stopRotationOfPage();\n startRotationOfPage();\n }\n }\n $scope.togglePresentationView = function () {\n $scope.isInPresentationMode = !$scope.isInPresentationMode;\n if ($scope.isInPresentationMode) {\n startPresentationView();\n } else {\n stopPresentationView();\n }\n }\n\n function startPresentationView() {\n $scope.isInPresentationMode = true;\n $(\"#page-wrapper\").css(\"margin-left\", 0);\n $(\"#page-navigation-menu\").hide();\n $(\"#page-topnavbar\").hide();\n $(\"#page-footer\").hide();\n displayService.showFullScreen();\n // \n $scope.publish(\"PresentationViewStarted\");\n // rotate page\n startRotationOfPage();\n }\n\n function stopPresentationView() {\n $scope.isInPresentationMode = false;\n stopRotationOfPage();\n $(\"#page-wrapper\").css(\"margin-left\", '');\n $(\"#page-navigation-menu\").show();\n $(\"#page-topnavbar\").show();\n $(\"#page-footer\").show();\n $scope.publish(\"PresentationViewStopped\");\n displayService.hideFullScreen();\n }\n\n function setFocus() {\n //Set focus on dashboard\n var dashboard = document.querySelector(\"#dashboard\")\n dashboard.focus();\n }\n\n function stopRotationOfPage() {\n if (rotatePageTimer) {\n clearInterval(rotatePageTimer);\n }\n isRotatingPage = false;\n }\n function startRotationOfPage() {\n setFocus();\n rotatePageTimer = setInterval(function () {\n if (!$scope.presentationPaused) {\n var pages = $scope.currentDashboard.pages;\n $scope.currentIndex = pages.indexOf($scope.currentPage);\n $scope.currentIndex += 1;\n\n $scope.selectPage(pages[Math.abs($scope.currentIndex % pages.length)]);\n }\n }, $scope.selectedInterval.interval);\n isRotatingPage = true;\n }\n\n $scope.next = function () {\n var numberOfPages = $scope.currentDashboard.pages.length;\n $scope.currentIndex++;\n\n $scope.selectPage($scope.currentDashboard.pages[$scope.currentIndex % numberOfPages]);\n };\n\n $scope.previous = function () {\n var numberOfPages = $scope.currentDashboard.pages.length;\n $scope.currentIndex = $scope.currentIndex > 0 ? $scope.currentIndex - 1 : 0;\n $scope.selectPage($scope.currentDashboard.pages[$scope.currentIndex % numberOfPages]);\n };\n\n $scope.keyPress = function (keyEvent) {\n if (isRotatingPage) {\n if (keyEvent.key == \"ArrowRight\") {\n $scope.next();\n keyEvent.preventDefault();\n }\n\n if (keyEvent.key == \"ArrowLeft\") {\n $scope.previous();\n keyEvent.preventDefault();\n }\n\n if (keyEvent.key == \" \" && isRotatingPage) {\n $scope.presentationPaused = !$scope.presentationPaused;\n keyEvent.preventDefault();\n }\n }\n }\n\n $scope.delete = function () {\n $translate(['COMMON_CANCEL', 'COMMON_DELETE', 'ADMIN_MESSAGE_DELETE_DASHBOARD_CONFIRMATION']).then(function (translations) {\n var modalOptions = {\n closeButtonText: translations.COMMON_CANCEL,\n actionButtonText: translations.COMMON_DELETE,\n headerText: translations.COMMON_DELETE + ' ' + $scope.currentDashboard.title + '?',\n bodyText: translations.ADMIN_MESSAGE_DELETE_DASHBOARD_CONFIRMATION\n };\n\n modalService.showModal({}, modalOptions).then(function (result) {\n dashboardService.deleteDashboard($scope.currentDashboard.id).then(function (data) {\n $state.go('myspace');\n $translate('ADMIN_MESSAGE_DASHBOARD_DELETED').then(function (msg) {\n toaster.info(msg);\n }, function (translationId) {\n $scope.headline = translationId;\n });\n });\n });\n });\n }\n\n $scope.remove = function (widget) {\n \n dashboardService.deleteWidget(widget.id).then(function (affected) {\n if (affected === 1) {\n var index = $scope.currentPage.widgets.indexOf(widget);\n $scope.currentPage.widgets.splice(index, 1);\n }\n // All boards component also needs to be deleted? Esp smartactionlist\n if (widget.component == 'smartactionlist') {\n \n var boardId = widget.settings.boardId;\n boardService.deleteBoard(boardId)\n }\n \n });\n }\n $scope.changeApp = function (widget) {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'appstore.html',\n controller: 'appstoreController',\n windowClass: 'newdeviation-modal-window',\n resolve: {\n //task: function () {\n // return task;\n //}\n }\n });\n\n modalInstance.result.then(function (result) {\n widget.component = result.component;\n widget.header = result.name;\n });\n };\n\n function loadDashboard(dashboard, preferredPage) {\n // $scope.currentDashboard = null;\n $scope.currentPage = null;\n // Parse settings on widget\n for (let i = 0; i 0) {\n $scope.currentPage = currentPage[0];\n } else {\n $scope.currentPage = $scope.currentDashboard.pages[0];\n }\n } else {\n $scope.currentPage = $scope.currentDashboard.pages[0];\n }\n }\n function getDashboard() {\n dashboardService.get($scope.id).then(function (dashboard) {\n loadDashboard(dashboard);\n });\n }\n getDashboard();\n\n \n $scope.updateTitle = function () {\n dashboardService.updateTitle($scope.currentDashboard.id,$scope.currentDashboard.title).then(function (saved) {\n });\n };\n\n $scope.save = function () {\n console.log(\"dashboard save called\");\n $scope.commitChangesDebounced(); // Make sure we throttle, since so many events can call save.\n };\n\n var commitChanges = function () {\n console.log(\"changes commited\");\n $scope.currentPage.settings = JSON.stringify($scope.options);\n $scope.currentDashboard.pages.forEach(function (page) {\n page.widgets.forEach(function (widget) {\n if (widget.settings && typeof widget.settings !== \"string\") {\n widget.settings = JSON.stringify(widget.settings);\n }\n });\n });\n\n dashboardService.saveDashboard($scope.currentDashboard).then(function (savedDashboard) {\n $scope.publish(\"SendDashboardUpdated\", savedDashboard);\n });\n\n return true;\n };\n // Debounce function so that save is called to often.\n $scope.commitChangesDebounced = debounce(commitChanges, 2000, false);\n\n $scope.viewMode = function () {\n $scope.isAdminMode = false;\n $scope.isClosed = true;\n $scope.gridsterOptions.draggable.enabled = false;\n $scope.gridsterOptions.resizable.enabled = false;\n $(\"#pagelist\").sortable(\"disable\"); // Turn off sortable on pages\n var widgets = $(\".widget\");\n angular.forEach(widgets, function (widget, key) {\n var gridsterContainerHeight = $(widget).closest(\".gridster-item\").height();\n $(widget).height(gridsterContainerHeight);\n });\n };\n\n $scope.adminMode = function () {\n $scope.isAdminMode = true;\n $scope.isClosed = false;\n if ($scope.isInPresentationMode) {\n $scope.togglePresentationView();\n stopRotationOfPage();\n }\n $scope.gridsterOptions.draggable.enabled = true;\n $scope.gridsterOptions.resizable.enabled = true;\n // Adjust height of widgets\n resizeWidgetsHosts();\n addSortableOnPageList();\n };\n\n function addSortableOnPageList() {\n // add sortable\n setTimeout(function () {\n //\n // ^^^ this is required otherwise re-enabling sortable will not work!\n\n $(\"#pagelist\").sortable({\n disabled: false,\n update: pagesOrderChanged\n });\n $(\"#pagelist\").disableSelection();\n }, 500);\n }\n\n var pagesOrderChanged = function (ui, sender) {\n var pageList = $(\"#pagelist li\");\n angular.forEach(pageList, function (page, key) {\n var pageId = $(page).data(\"pageid\");\n if (pageId) {\n var currentPage = $filter(\"filter\")($scope.currentDashboard.pages, { id: pageId })[0];\n currentPage.sortOrder = key;\n console.log(key + \" pageid: \" + pageId);\n }\n });\n $scope.save();\n };\n\n var resizeWidgetsHosts = function () {\n var widgets = $(\".widget\");\n angular.forEach(widgets, function (widget, key) {\n resizeWidgetHost(widget);\n });\n };\n\n $scope.addPage = function () {\n var page = {\n dashboardId: $scope.currentDashboard.id,\n title: \"new page\",\n widgets: []\n };\n dashboardService.addPage(page).then(function (page) {\n $scope.currentDashboard.pages.push(page);\n $scope.currentPage = page;\n toaster.success(\"FLEXIBOARD_PAGE_ADDED\")\n $scope.publish(\"SendDashboardUpdated\", $scope.currentDashboard);\n });\n };\n\n $scope.removePage = function (page) {\n var modalOptions = {\n closeButtonText: 'Cancel',\n actionButtonText: 'Delete page',\n headerText: 'Delete ' + page.title + '?',\n bodyText: 'Are you sure you want to delete this page?'\n };\n\n modalService.showModal({}, modalOptions).then(function (result) {\n dashboardService.deletePage(page.id).then(function (affected) {\n $scope.publish(\"SendDashboardUpdated\", $scope.currentDashboard);\n // Reload dashboard after delete\n getDashboard();\n });\n });\n\n };\n $scope.cloneApp = function (widget) {\n dashboardService.copyWidget(widget.id).then(function (savedWidget) {\n if (savedWidget.settings && typeof savedWidget.settings === \"string\") {\n savedWidget.settings = JSON.parse(savedWidget.settings);\n } else {\n savedWidget.settings = null;\n }\n if ($scope.currentPage.widgets.length === 0) {\n $scope.currentPage.widgets.push(savedWidget);\n } else {\n $scope.currentPage.widgets.unshift(savedWidget);\n }\n setTimeout(resizeWidgetsHosts, 200);\n $scope.publish(\"SendDashboardUpdated\", $scope.currentDashboard);\n });\n };\n\n var customized = \"KPI\";\n $scope.popularApps = [\n {\n name: $translate.instant(\"DASHBOARD_SMARTACTIONLIST\"),\n component: \"smartactionlist\",\n category: $translate.instant(\"COMMON_BOARD\"),\n imageUrl: staticFileService.image(\"smartactionlist.jpg\"),\n description: $translate.instant(\"DASHBOARD_SMARTACTIONLIST_DESCRIPTION\"),\n defaultXSize: 30,\n defaultYSize: 10\n }, \n {\n name: $translate.instant(\"DASHBOARD_SINGLE_VALUE\"),\n component: \"singlevalue\",\n category: \"KPI\",\n imageUrl: staticFileService.image(\"singlevalue.jpg\"),\n description: $translate.instant(\"DASHBOARD_SINGLE_VALUE_DESC\"),\n defaultXSize: 9,\n defaultYSize: 4\n },\n {\n name: $translate.instant(\"DASHBOARD_SINGLE_VALUE_TARGET\"),\n component: \"singlevaluetarget\",\n category: \"KPI\",\n imageUrl: staticFileService.image(\"singlevaluetarget.jpg\"),\n description: $translate.instant(\"DASHBOARD_SINGLE_VALUE_TARGET_DESC\"),\n defaultXSize: 9,\n defaultYSize: 4\n },\n {\n name: $translate.instant(\"DASHBOARD_TARGET_GRAPH\"),\n component: \"targetgraph\",\n category: \"KPI\",\n imageUrl: staticFileService.image(\"targetgraph.jpg\"),\n description: $translate.instant(\"DASHBOARD_TARGET_GRAPH_DESC\"),\n defaultXSize: 14,\n defaultYSize: 14\n },\n {\n name: $translate.instant(\"DASHBOARD_PIE_CHART\"),\n component: \"piechart\",\n category: customized,\n imageUrl: staticFileService.image('piechart.jpg'),\n description: $translate.instant(\"DASHBOARD_PIE_CHART_DESC\"),\n defaultXSize: 12,\n defaultYSize: 12\n },\n {\n name: $translate.instant(\"DASHBOARD_COMPARE_CHART\"),\n component: \"comparechart\",\n category: customized,\n imageUrl: staticFileService.image(\"comparechart.jpg\"),\n description: $translate.instant(\"DASHBOARD_COMPARE_CHART_DESC\"),\n defaultXSize: 14,\n defaultYSize: 14\n },\n {\n name: $translate.instant(\"DASHBOARD_MULTI_CHART\"),\n component: \"multichart\",\n category: customized,\n imageUrl: staticFileService.image(\"multichart.jpg\"),\n description: $translate.instant(\"DASHBOARD_MULTI_CHART_DESC\"),\n defaultXSize: 14,\n defaultYSize: 14\n },\n ];\n\n $scope.addAppToDashboard = function (app) {\n var sizeX = 12;\n var sizeY = 12;\n\n if (app.defaultXSize) {\n sizeX = app.defaultXSize;\n }\n if (app.defaultYSize) {\n sizeY = app.defaultYSize;\n }\n // get max row\n var row = 0;\n if ($scope.currentPage.widgets.length > 0) {\n var maxWidget = Math.max.apply(Math, $scope.currentPage.widgets.map(function (widget) { return widget.row + widget.sizeX; }));\n row = maxWidget;\n }\n\n var widget = {\n header: app.name,\n component: app.component,\n row: 0,\n col: 0,\n sizeX: sizeX,\n sizeY: sizeY,\n dashboardPageId: $scope.currentPage.id\n };\n\n dashboardService.addWidget(widget).then(function (savedWidget) {\n $scope.currentPage.widgets.push(savedWidget);\n setTimeout(resizeWidgetsHosts, 200);\n $scope.publish(\"SendDashboardUpdated\", $scope.currentDashboard);\n });\n };\n\n $scope.addApp = function () {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'appstore.html',\n controller: 'appstoreController',\n windowClass: 'newdeviation-modal-window',\n });\n\n modalInstance.result.then(function (app) {\n $scope.addAppToDashboard(app);\n });\n };\n\n $(window).on('resize.fullscreenchange', function () {\n console.log(\"dashboard: resize.fullscreenchange\")\n setTimeout(function () {\n $scope.$broadcast(\"widget-resized\", {});\n }, 200);\n });\n\n $scope.$on('$destroy', function () {\n $(window).off('resize.fullscreenchange');\n });\n\n var resizeWidgetHost = function (widget) {\n var gridsterContainerHeight = $(widget).closest(\".gridster-item\").height();\n\n $(widget).height(gridsterContainerHeight);\n };\n\n function widgetResizing(event, $element, widget) {\n $scope.widgetResizeDebounced(event, $element, widget);\n }\n\n function adjustSize(event, $element, widget) {\n var gridsterContainerHeight = $($element).height();\n var widgetElement = $element.find(\".widget\");\n $(widgetElement).height(gridsterContainerHeight);\n\n $scope.$broadcast(\"widget-resized\", {});\n }\n $scope.widgetResizeDebounced = debounce(adjustSize, 200, false);\n\n function widgetResized(event, $element, widget) {\n $scope.save();\n }\n }]);","import toaster from \"@common/components/toast\"\n\nvar DigiLean = angular.module('DigiLean');\nDigiLean.controller('myA3sController', ['$scope', '$state', '$element', '$filter', '$uibModal', '$translate', 'a3Service', 'navigationService', 'boardTaskService', 'taskDrawingService',\n function ($scope, $state, $element, $filter, $uibModal, $translate, a3Service, navigationService, boardTaskService, taskDrawingService) {\n\n // Check if user has A3.\n $scope.hasA3Module = navigationService().hasModule(\"A3\");\n $scope.subscribe('UserAuthenticatedAndReady', function (profile) {\n var hasAccess = $filter('filter')(profile.modules, { name: \"A3\" });\n $scope.hasA3Module = hasAccess.length > 0;\n });\n\n $scope.a3s = [];\n $scope.items = [];\n\n $scope.isLoading = true;\n a3Service().getA3forUser().then(function (a3s) {\n \n $scope.a3s = a3s;\n // add counters for pr status that can be showed on a3.\n angular.forEach($scope.a3s, function (a3) {\n calculateTaskStatuses(a3);\n a3.showActionListTasks = false;\n a3.a3 = a3;\n angular.forEach(a3.tasks, function (task) {\n task.boardDate = moment(task.boardDate).toDate();\n });\n });\n $scope.isLoading = false;\n });\n\n\n $scope.subscribe(\"A3sDeleted\", function (ids) {\n // remove a3 from list\n var a3ToRemove = $filter('filter')($scope.a3s, idInList('id', ids));\n if (a3ToRemove.length > 0) {\n angular.forEach(a3ToRemove, function (a3) {\n var index = $scope.a3s.indexOf(a3);\n $scope.a3s.splice(index, 1);\n });\n $scope.$apply();\n }\n });\n\n $scope.subscribe('TaskStatusUpdated', function (status) {\n angular.forEach($scope.a3s, function (a3) {\n var task = $filter('filter')(a3.tasks, { id: status.taskId });\n if (task.length > 0) {\n task[0].status = status.status;\n $scope.$apply(function () {\n calculateTaskStatuses(a3);\n });\n }\n });\n });\n\n function calculateTaskStatuses(a3) {\n a3.tasksOpen = $filter('filter')(a3.tasks, { status: \"blank\" }).length;\n a3.tasksCompleted = $filter('filter')(a3.tasks, { status: \"OK\" }).length;\n a3.tasksInComplete = $filter('filter')(a3.tasks, { status: \"unacceptable\" }).length;\n }\n\n $scope.createNew = function () {\n\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'newA3Form.html',\n controller: 'newA3ModalController',\n resolve: {\n a3: function () {\n return {\n id: 0,\n title: \"\",\n assetId: \"\"\n }\n }\n\n }\n });\n\n /* // When user has created new a3\n modalInstance.result.then(function (a3) {\n a3Service().addA3(a3).then(function (savedA3) {\n $state.go('a3wizard', { id: savedA3.id }, { reload: false });\n $scope.publish(\"SendA3Created\", savedA3);\n });\n }, function () {\n //$log.info('Modal dismissed at: ' + new Date());\n });\n*/\n };\n\n $scope.showActionListTasks = function (a3) {\n a3.showActionListTasks = !a3.showActionListTasks;\n\n // get user for a3\n a3Service().getUserlistForA3(a3.id).then(function (users) {\n a3.users = users;\n });\n };\n\n // Datepicker setup\n $scope.formats = ['dd.MM.yyyy', 'dd-MMMM-yyyy', 'yyyy/MM/dd', 'yyyy-MM-dd', 'shortDate']\n $scope.format = $scope.formats[0];\n $scope.altInputFormats = ['M!/d!/yyyy'];\n\n $scope.opened = [];\n $scope.open = function (index) {\n $scope.opened[index] = true;\n };\n\n $scope.changeActionDate = function (item, $event) {\n const date = $event.originalEvent.detail\n item.boardDate = date\n if (item.boardDate) { // Valid date format\n item.error = false;\n var actionDate = {\n taskId: item.id,\n actionDate: item.boardDate\n };\n a3Service().updateItemActionDate(actionDate).then(function () {\n $translate('A3_ACTION_ITEM_SAVED').then(function (msg) {\n toaster.success(msg);\n });\n // publish event on change\n $scope.publish(\"SendTaskDateUpdated\", actionDate);\n });\n } else {\n $translate('COMMON_NOT_VALID_DATE').then(function (trans) {\n item.error = trans;\n });\n\n }\n };\n\n $scope.updateResponsible = function (user, item, a3) {\n item.responsibleDisplayName = user.displayName;\n var taskAssigned =\n {\n taskId: item.id,\n a3Id: a3.a3id,\n userId: user.id,\n userName: user.fullName,\n userDisplayName: user.displayName,\n previousUserId: item.responsibleUserId,\n previousUserName: item.responsibleUser\n };\n var options = {\n taskId: item.id,\n user: taskAssigned\n };\n boardTaskService().assignUser(options).then(function () {\n \n });\n };\n\n $scope.changeStatus = function (item) {\n item.status = taskDrawingService().getNextStatus(item.status).status;\n var status = {\n taskId: item.id,\n status: item.status\n };\n boardTaskService().updateStatus(item.id, status).then(function () {\n \n });\n };\n\n $scope.newPieChart = {\n data: [0, 0, 0, 0], \n options: {\n radius: 18,\n fill: [\"#f3f3f4\"],\n }\n };\n $scope.planPieChart = {\n data: [1, 1, 1, 1], \n options: {\n radius: 18,\n //fill: [\"#434348\", \"#f3f3f4\", \"#f3f3f4\", \"#f3f3f4\"],\n\n fill: [\"#5cb85c\", \"#f3f3f4\", \"#f3f3f4\",\"#f3f3f4\"],\n }\n };\n $scope.doPieChart = {\n data: [1, 1, 1, 1], \n options: {\n radius: 18,\n fill: [\"#5cb85c\", \"#5cb85c\", \"#f3f3f4\",\"#f3f3f4\"],\n }\n };\n $scope.checkPieChart = {\n data: [1, 1, 1, 1], \n options: {\n radius: 18,\n fill: [\"#5cb85c\", \"#5cb85c\", \"#5cb85c\",\"#f3f3f4\"],\n }\n };\n $scope.actPieChart = {\n data: [1, 1, 1, 1], \n options: {\n radius: 18,\n fill: [\"#5cb85c\", \"#5cb85c\", \"#5cb85c\", \"#5cb85c\"]\n }\n };\n\n\n }]);","import * as customerService from \"@common/services/customers/customerService\"\nimport * as timeService from \"@common/services/timeService\"\n\nvar DigiLean = angular.module(\"DigiLean\");\nDigiLean.controller('systemactivityfeedController', ['$scope', '$interval', '$filter','$element', 'activityService', 'authService',\n function ($scope, $interval, $filter,$element, activityService, authService) {\n\n $scope.feed = [];\n $scope.customers = [];\n\n $scope.translationData = {\n noOfFeeds: $scope.feed.length\n };\n\n var $translate = $filter('translate');\n var translateOptions = {\n month: $translate('COMMON_TIMEELAPSED_MONTH'),\n days: $translate('COMMON_TIMEELAPSED_DAYS'),\n hours: $translate('COMMON_TIMEELAPSED_HOURS'),\n mins: $translate('COMMON_TIMEELAPSED_MINUTES'),\n seconds: $translate('COMMON_TIMEELAPSED_SECONDS'),\n now: $translate('COMMON_TIMEELAPSED_NOW')\n }\n // This is only for Kaizen so return if not in role.\n if (!authService.hasRole(\"KaizenAdmin\")) return;\n\n\n // Subscribe to Events\n var subscribeToEvents = function () {\n $scope.subscribe('SystemActivityOccured', function (activity) {\n // Handle activity and add to list. Need some filter for what is relevant.\n activity.cssState = \"slideInDown\";\n $scope.feed.unshift(activity);\n // Recalculate time elapsed\n $scope.feed.forEach(function (activity) {\n activity.occured = timeService.getTimeElapsed(activity.activityDate, translateOptions);\n if (activity.payLoad && typeof activity.payLoad === \"string\") {\n activity.payLoad = JSON.parse(activity.payLoad);\n\n }\n var customer = $filter('filter')($scope.customers, { id: activity.customerId }, true);\n activity.customer = customer[0].name;\n });\n $scope.$apply();\n $scope.translationData.noOfFeeds = $scope.feed.length;\n });\n }\n subscribeToEvents();\n var getLatestActivity = function () {\n // Handle activity and add to list. Need some filter for what is relevant.\n activityService().getLog().then(function (log) {\n log.forEach(function (activity) {\n updateActivityTimeSpan(activity);\n var customer = $filter('filter')($scope.customers, { id: activity.customerId }, true);\n activity.customer = customer[0].name;\n });\n $scope.feed = log;\n $scope.translationData.noOfFeeds = $scope.feed.length;\n });\n }\n\n var updateActivityTimeSpan = function (activity) {\n activity.occured = timeService.getTimeElapsed(activity.activityDate);\n }\n\n var updateFeedTimeStamp = function () {\n $scope.feed.forEach(function (activity) {\n updateActivityTimeSpan(activity);\n });\n }\n\n // refresh timestamp\n\n var updateTimer = $interval(updateFeedTimeStamp, 5000);\n // listen on DOM destroy (removal) event, and cancel the next UI update\n // to prevent updating time after the DOM element was removed.\n $element.on('$destroy', function () {\n $interval.cancel(updateTimer);\n });\n\n customerService.getCustomersSimpleForAdmin().then(function (customers) {\n $scope.customers = customers;\n getLatestActivity();\n });\n }]);","import * as assetService from \"@common/services/assetService\"\n\nangular\n .module('DigiLean')\n .directive(\"deviationListFilter\", ['$uibModal', '$filter', '$translate', 'deviationService', 'areaService', 'authService', 'projectService', 'debounce',\n function ($uibModal, $filter, $translate, deviationService, areaService, authService, projectService, debounce) {\n return {\n templateUrl: 'deviationListFilter.html',\n restrict: 'E',\n scope: {\n 'filterInitial': '<',\n 'onFilterChanged': '&',\n 'showHeader': \"<\",\n 'showarchived': \"<\"\n },\n link: function (scope, elem, attrs) {\n\n scope.isSearchWordActive = false;\n scope.isFilterActive = false;\n scope.consequenceFilterActive = false;\n scope.myResponsibleFilterActive = false;\n scope.myRegistrationFilterActive = false;\n scope.archivedFilterActive = false;\n scope.assets = [];\n scope.followupAssets = [];\n scope.categories = [];\n scope.consequences = [];\n scope.causes = [];\n scope.projects = [];\n scope.areas = [];\n scope.deviationtypes = [];\n\n scope.severityOptions = [\n {\n severityDB: 1,\n translated: $translate.instant('COMMON_LOW'),\n cssClass: \"low-severity-button\",\n filteredAndInResultList: false\n }, {\n severityDB: 2,\n translated: $translate.instant('COMMON_MEDIUM'),\n cssClass: \"medium-severity-button\",\n filteredAndInResultList: false\n }, {\n severityDB: 3,\n translated: $translate.instant('COMMON_HIGH'),\n cssClass: \"high-severity-button\",\n filteredAndInResultList: false\n }, {\n severityDB: 0,\n translated: $translate.instant('COMMON_NOT_SPECIFIED'),\n cssClass: \"btn-default\",\n filteredAndInResultList: false\n }\n ];\n\n scope.status = [\n { id: 0, name: $translate.instant(\"COMMON_NEW\"), filteredAndInResultList: false },\n { id: 10, name: $translate.instant(\"DEVIATION_IN_PROGRESS\"), filteredAndInResultList: false },\n { id: 20, name: $translate.instant(\"DEVIATION_RESOLVED\"), filteredAndInResultList: false },\n { id: 30, name: $translate.instant(\"COMMON_REJECTED\"), filteredAndInResultList: false },\n ];\n\n scope.$watch('filterInitial', function (filters) {\n if (!filters) return;\n filters.forEach(filter => {\n switch (filter.sourceColumn) {\n case \"status\":\n filter.items.forEach(item => {\n var status = $filter('filter')(scope.status, { id: parseInt(item) }, true);\n if (status && status.length > 0) {\n status[0].filteredAndInResultList = true;\n }\n });\n break;\n case \"severity\":\n filter.items.forEach(item => {\n var severity = $filter('filter')(scope.severityOptions, { severityDB: parseInt(item) }, true);\n if (severity && severity.length > 0) {\n severity[0].filteredAndInResultList = true;\n }\n });\n break;\n case \"deviationTypeId\":\n setDeviationTypeFilter();\n break;\n case \"assetId\":\n setAssetFilter();\n break;\n case \"followupAssetId\":\n setFollowupAssetFilter();\n break;\n case \"projectId\":\n setProjectFilter();\n break;\n case \"areaId\":\n setAreaFilter();\n break;\n case \"problemCategoryId\":\n setCategoryFilter();\n break;\n case \"lossTypeId\":\n setConsequenceFilter();\n break;\n case \"problemReasonId\":\n setCauseFilter();\n break;\n case \"archivedDate\":\n scope.archivedFilterActive = true;\n break;\n case \"ownerUserId\":\n scope.myResponsibleFilterActive = true;\n break;\n case \"createdByUserId\":\n scope.myRegistrationFilterActive = true;\n break;\n case \"dueDate\":\n scope.overdueFilterActive = true;\n break;\n case \"statusImplementedDate\":\n scope.overdueFilterActive = true;\n break;\n default:\n break;\n }\n });\n });\n\n scope.toggleArchivedFilter = function () {\n scope.archivedFilterActive = !scope.archivedFilterActive;\n filterDebounce();\n }\n\n scope.toggleOverdueFilter = function () {\n scope.overdueFilterActive = !scope.overdueFilterActive;\n filterDebounce();\n }\n\n scope.filterPriority = function (priority) {\n priority.filteredAndInResultList = !priority.filteredAndInResultList;\n filterDebounce();\n }\n\n scope.openFollowUpGroupFilter = function () {\n var copyOfFollowupAssets = scope.followupAssets ? JSON.parse(JSON.stringify(scope.followupAssets)) : [];\n var modalInstance = $uibModal.open({\n templateUrl: 'assetMultiSelectorForm.html',\n controller: 'assetMultiSelectorController',\n windowClass: 'assetparticipants-modal-window',\n resolve: {\n assets: function () {\n return copyOfFollowupAssets;\n }\n }\n });\n modalInstance.result.then(function (filteredAssets) {\n scope.followupAssets = filteredAssets;\n scope.selectedFollowupAssets = scope.followupAssets.filter(a => a.filteredAndInResultList === true)\n filterDebounce();\n });\n }\n\n scope.openGroupFilter = function () {\n var copyOfAssets = scope.assets ? JSON.parse(JSON.stringify(scope.assets)) : [];\n var modalInstance = $uibModal.open({\n templateUrl: 'assetMultiSelectorForm.html',\n controller: 'assetMultiSelectorController',\n windowClass: 'assetparticipants-modal-window',\n resolve: {\n assets: function () {\n return copyOfAssets;\n }\n }\n });\n modalInstance.result.then(function (filteredAssets) {\n scope.assets = filteredAssets;\n scope.selectedAssets = scope.assets.filter(a => a.filteredAndInResultList === true)\n filterDebounce();\n });\n }\n scope.clearFilter = function () {\n scope.resetFilter();\n if (scope.onFilterChanged) {\n scope.onFilterChanged({ filter: scope.filter })\n }\n }\n scope.resetFilter = function () {\n scope.query = \"\";\n resetStatusFilter();\n resetAssetFilter();\n resetFollowupAssetFilter();\n resetAreaFilter();\n resetProjectFilter();\n resetCategoryFilter();\n resetConsequenceFilter();\n resetCauseFilter();\n resetDeviationTypeFilter();\n resetSeverityFilter();\n scope.myResponsibleFilterActive = false;\n scope.myRegistrationFilterActive = false;\n scope.filter = [];\n }\n\n scope.toggleMyRegistrationFilter = function () {\n scope.myRegistrationFilterActive = !scope.myRegistrationFilterActive;\n filterDebounce();\n }\n scope.toggleMyResponsibleFilter = function () {\n scope.myResponsibleFilterActive = !scope.myResponsibleFilterActive;\n filterDebounce();\n }\n\n function initializeAssets(){\n if (!scope.assets || scope.assets.length === 0) return;\n\n for (var k = 0; k < scope.assets.length; k++) {\n scope.assets[k].cssLevel = \"level-\" + scope.assets[k].level; \n }\n scope.followupAssets = JSON.parse(JSON.stringify(scope.assets));\n \n setAssetFilter();\n setFollowupAssetFilter();\n }\n \n function loadAssets() {\n if(authService.hasRole(\"Admin\") || authService.hasRole(\"DeviationAdmin\") || authService.hasRole(\"BoardDesigner\")){\n assetService.getAllAssets(true).then(function (assets) {\n scope.assets = assets;\n initializeAssets(); \n });\n } else {\n assetService.getList().then(function (assets) {\n scope.assets = assets;\n initializeAssets(); \n });\n }\n }\n\n function loadCategories() {\n deviationService().getProblemCategoriesWithDeviation().then(function (items) {\n scope.categories = items;\n setCategoryFilter();\n });\n }\n function loadConsequences() {\n deviationService().getConsequences().then(function (items) {\n scope.consequences = items;\n setConsequenceFilter();\n });\n }\n function loadCauses() {\n deviationService().getCauses().then(function (items) {\n scope.causes = items;\n setCauseFilter();\n });\n }\n\n\n function loadProjects() {\n projectService().getProjectListWithDeviation().then(function (items) {\n scope.projects = items;\n setProjectFilter();\n });\n }\n function loadAreas() {\n areaService().getAreasWithDeviation().then(function (items) {\n scope.areas = items;\n setAreaFilter();\n });\n }\n\n function loadDeviationTypes() {\n deviationService().getDeviationTypes().then(function (types) {\n scope.deviationtypes = types;\n setDeviationTypeFilter();\n });\n\n }\n\n function setAreaFilter() {\n if (scope.filterInitial && scope.areas && scope.areas.length > 0) {\n var filter = $filter('filter')(scope.filterInitial, { sourceColumn: \"areaId\" }, true);\n if (filter && filter.length > 0) {\n filter[0].items.forEach(item => {\n var area = $filter('filter')(scope.areas, { id: parseInt(item) }, true);\n if (area && area.length > 0) {\n area[0].filteredAndInResultList = true;\n }\n });\n }\n }\n }\n function setCategoryFilter() {\n if (scope.filterInitial && scope.categories && scope.categories.length > 0) {\n var filter = $filter('filter')(scope.filterInitial, { sourceColumn: \"problemCategoryId\" }, true);\n if (filter && filter.length > 0) {\n filter[0].items.forEach(item => {\n var category = $filter('filter')(scope.categories, { id: parseInt(item) }, true);\n if (category && category.length > 0) {\n category[0].filteredAndInResultList = true;\n }\n });\n }\n }\n }\n function setConsequenceFilter() {\n if (scope.filterInitial && scope.consequences && scope.consequences.length > 0) {\n var filter = $filter('filter')(scope.filterInitial, { sourceColumn: \"lossTypeId\" }, true);\n if (filter && filter.length > 0) {\n filter[0].items.forEach(item => {\n var consequence = $filter('filter')(scope.consequences, { id: parseInt(item) }, true);\n if (consequence && consequence.length > 0) {\n consequence[0].filteredAndInResultList = true;\n }\n });\n }\n }\n }\n function setCauseFilter() {\n if (scope.filterInitial && scope.causes && scope.causes.length > 0) {\n var filter = $filter('filter')(scope.filterInitial, { sourceColumn: \"problemReasonId\" }, true);\n if (filter && filter.length > 0) {\n filter[0].items.forEach(item => {\n var cause = $filter('filter')(scope.causes, { id: parseInt(item) }, true);\n if (cause && cause.length > 0) {\n cause[0].filteredAndInResultList = true;\n }\n });\n }\n }\n }\n function setProjectFilter() {\n if (scope.filterInitial && scope.projects && scope.projects.length > 0) {\n var filter = $filter('filter')(scope.filterInitial, { sourceColumn: \"projectId\" }, true);\n if (filter && filter.length > 0) {\n filter[0].items.forEach(item => {\n var project = $filter('filter')(scope.projects, { id: parseInt(item) }, true);\n if (project && project.length > 0) {\n project[0].filteredAndInResultList = true;\n }\n });\n }\n }\n }\n function setFollowupAssetFilter() {\n scope.selectedFollowupAssets = [];\n if (scope.filterInitial && scope.followupAssets && scope.followupAssets.length > 0) {\n var filter = $filter('filter')(scope.filterInitial, { sourceColumn: \"followupAssetId\" }, true);\n if (filter && filter.length > 0) {\n filter[0].items.forEach(item => {\n var asset = $filter('filter')(scope.followupAssets, { id: parseInt(item) }, true);\n if (asset && asset.length > 0) {\n asset[0].filteredAndInResultList = true;\n scope.selectedFollowupAssets.push(asset[0]);\n }\n });\n }\n }\n }\n\n function setAssetFilter() {\n scope.selectedAssets = [];\n if (scope.filterInitial && scope.assets && scope.assets.length > 0) {\n var filter = $filter('filter')(scope.filterInitial, { sourceColumn: \"assetId\" }, true);\n if (filter && filter.length > 0) {\n filter[0].items.forEach(item => {\n var asset = $filter('filter')(scope.assets, { id: parseInt(item) }, true);\n if (asset && asset.length > 0) {\n asset[0].filteredAndInResultList = true;\n scope.selectedAssets.push(asset[0]);\n }\n });\n }\n }\n }\n function setDeviationTypeFilter() {\n if (scope.filterInitial && scope.deviationtypes && scope.deviationtypes.length > 0) {\n var filter = $filter('filter')(scope.filterInitial, { sourceColumn: \"deviationTypeId\" }, true);\n if (filter && filter.length > 0) {\n filter[0].items.forEach(item => {\n var type = $filter('filter')(scope.deviationtypes, { id: parseInt(item) }, true);\n if (type && type.length > 0) {\n type[0].filteredAndInResultList = true;\n }\n });\n }\n }\n }\n\n function resetStatusFilter() {\n angular.forEach(scope.status, function (status) {\n status.filteredAndInResultList = false;\n });\n }\n function resetAssetFilter() {\n angular.forEach(scope.assets, function (asset) {\n asset.filteredAndInResultList = false;\n });\n scope.selectedAssets = [];\n }\n function resetFollowupAssetFilter() {\n angular.forEach(scope.followupAssets, function (asset) {\n asset.filteredAndInResultList = false;\n });\n scope.selectedFollowupAssets = [];\n }\n function resetDeviationTypeFilter() {\n angular.forEach(scope.deviationtypes, function (type) {\n type.filteredAndInResultList = false;\n });\n }\n\n function resetProjectFilter() {\n angular.forEach(scope.projects, function (project) {\n project.filteredAndInResultList = false;\n });\n }\n function resetAreaFilter() {\n angular.forEach(scope.areas, function (area) {\n area.filteredAndInResultList = false;\n });\n }\n function resetCategoryFilter() {\n angular.forEach(scope.categories, function (category) {\n category.filteredAndInResultList = false;\n });\n }\n function resetConsequenceFilter() {\n angular.forEach(scope.consequences, function (consequence) {\n consequence.filteredAndInResultList = false;\n });\n }\n function resetCauseFilter() {\n angular.forEach(scope.causes, function (cause) {\n cause.filteredAndInResultList = false;\n });\n }\n function resetSeverityFilter() {\n angular.forEach(scope.severityOptions, function (item) {\n item.filteredAndInResultList = false;\n });\n }\n\n function getAllData() {\n loadDeviationTypes();\n loadAreas();\n loadProjects();\n loadCategories();\n loadConsequences();\n loadCauses();\n loadAssets();\n scope.resetFilter();\n }\n getAllData();\n\n\n scope.search = function () {\n if (scope.query) {\n scope.isSearchWordActive = true;\n\n } else {\n scope.isSearchWordActive = false;\n }\n filterDebounce();\n }\n\n\n scope.filterSeverity = function (severity) {\n severity.filteredAndInResultList = !severity.filteredAndInResultList;\n filterDebounce();\n }\n scope.filterDeviationType = function (type) {\n type.filteredAndInResultList = !type.filteredAndInResultList;\n filterDebounce();\n }\n\n scope.filterStatus = function (status) {\n status.filteredAndInResultList = !status.filteredAndInResultList;\n filterDebounce();\n }\n scope.filterArea = function (area) {\n area.filteredAndInResultList = !area.filteredAndInResultList;\n filterDebounce();\n }\n scope.filterAsset = function (asset) {\n asset.filteredAndInResultList = !asset.filteredAndInResultList;\n filterDebounce();\n }\n scope.filterFollowupAsset = function (asset) {\n asset.filteredAndInResultList = !asset.filteredAndInResultList;\n filterDebounce();\n }\n scope.filterProject = function (project) {\n project.filteredAndInResultList = !project.filteredAndInResultList;\n filterDebounce();\n }\n scope.filterCategory = function (category) {\n category.filteredAndInResultList = !category.filteredAndInResultList;\n filterDebounce();\n }\n scope.filterConsequence = function (consequence) {\n consequence.filteredAndInResultList = !consequence.filteredAndInResultList;\n filterDebounce();\n }\n scope.filterCause = function (cause) {\n cause.filteredAndInResultList = !cause.filteredAndInResultList;\n filterDebounce();\n }\n\n\n function addToFilterIfActive(filter, list, sourceColumn, property) {\n var itemToShow = $filter('filter')(list, { filteredAndInResultList: true }, true);\n if (itemToShow.length > 0) {\n\n var itemFilter = {\n sourceColumn: sourceColumn,\n operator: \"InList\",\n items: []\n };\n itemToShow.forEach(item => {\n itemFilter.items.push(item[property])\n });\n filter.push(itemFilter)\n }\n }\n\n var filterDebounce = debounce(setFilter, 500, false);\n function setFilter() {\n\n var filter = [];\n addToFilterIfActive(filter, scope.severityOptions, \"severity\", \"severityDB\");\n addToFilterIfActive(filter, scope.deviationtypes, \"deviationTypeId\", \"id\");\n addToFilterIfActive(filter, scope.status, \"status\", \"id\");\n addToFilterIfActive(filter, scope.assets, \"assetId\", \"id\");\n addToFilterIfActive(filter, scope.followupAssets, \"followupAssetId\", \"id\");\n addToFilterIfActive(filter, scope.projects, \"projectId\", \"id\");\n addToFilterIfActive(filter, scope.areas, \"areaId\", \"id\");\n addToFilterIfActive(filter, scope.categories, \"problemCategoryId\", \"id\");\n addToFilterIfActive(filter, scope.consequences, \"lossTypeId\", \"id\");\n addToFilterIfActive(filter, scope.causes, \"problemReasonId\", \"id\");\n if (scope.myResponsibleFilterActive) {\n var userid = authService.getCurrentUser().userId;\n var itemFilter = {\n sourceColumn: \"ownerUserId\",\n operator: \"InList\",\n items: [userid]\n };\n filter.push(itemFilter);\n }\n if (scope.myRegistrationFilterActive) {\n let userid = authService.getCurrentUser().userId;\n let itemFilter = {\n sourceColumn: \"createdByUserId\",\n operator: \"InList\",\n items: [userid]\n };\n filter.push(itemFilter);\n }\n if (scope.archivedFilterActive) {\n let archivedDate = {\n sourceColumn: \"archivedDate\",\n operator: \"IsNotNull\",\n items: []\n };\n filter.push(archivedDate);\n }\n if (scope.overdueFilterActive) {\n let itemFilter = {\n sourceColumn: \"dueDate\",\n operator: \"LessThanDate\",\n items: [moment().subtract(1, 'days')]\n };\n let notImplementedFilter = {\n sourceColumn: \"statusImplementedDate\",\n operator: \"IsNull\",\n items: []\n };\n filter.push(itemFilter);\n filter.push(notImplementedFilter);\n }\n if (scope.isSearchWordActive && scope.query) {\n // CHeck for ID filter\n if (isNumeric(scope.query)) {\n // Check if suggestion is ID and show.\n deviationService().get(scope.query).then(function (deviation) {\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n templateUrl: 'fullDeviation.html',\n controller: 'fullDeviationController',\n windowClass: 'full-screen',\n resolve: {\n deviation: function () {\n return deviation;\n },\n activeTab: function () {\n return \"Info\";\n }\n }\n });\n modalInstance.result.then(function () {\n\n });\n });\n }\n var itemFilter = {\n sourceColumn: \"title\",\n operator: \"Contains\",\n items: [scope.query]\n };\n\n\n filter.push(itemFilter);\n }\n if (scope.onFilterChanged) {\n scope.onFilterChanged({ filter })\n }\n\n }\n\n function isNumeric(num) {\n return !isNaN(num)\n }\n }\n }\n }]);","import * as pdfService from \"@common/services/pdfService\"\nimport envConfig from \"@common/envConfig\"\n\nangular\n .module('DigiLean')\n .directive(\"deviationListResult\", ['$filter', '$translate', 'deviationService', '$uibModal', 'NgTableParams', 'excelService',\n function ($filter, $translate, deviationService, $uibModal, NgTableParams, excelService) {\n return {\n templateUrl: 'deviationListResult.html',\n restrict: 'E',\n scope: {\n 'filterParams': '<',\n 'options': '<',\n 'tableParamsChanged': '&?',\n 'columnListChanged': '&'\n },\n link: function (scope, elem, attrs) {\n\n scope.columns = [];\n scope.totalValues = 0;\n scope.totalMatchingRecords = 0;\n var isFilterLoaded = false;\n var isOptionsLoaded = false;\n var deviationTypesWithUserLanguage = [];\n // default values\n scope.sorting = [];\n scope.pageCount = 25;\n scope.tableSorting = { lastModified: \"desc\" };\n // Options\n scope.showFilter = false;\n scope.showFileGenerators = false;\n scope.showArchived = false;\n scope.isTeamsMode = envConfig.isTeamsMode;\n \n\n deviationService().getAllDeviationTypes().then(function (result) {\n deviationTypesWithUserLanguage = result\n });\n \n\n function renderValue($scope, row) {\n var item = this;\n var field = item.field;\n var value = row[field];\n if (this.dataType === \"date\") {\n return $filter('date')(value, \"mediumDate\");\n }\n if (this.dataType === \"timestamp\") {\n return $filter('date')(value, \"dd.MM.yyyy HH:mm:ss\");\n }\n if (this.dataType === \"bool\") {\n if (value === \"true\") {\n return \"\";\n } else {\n return \"\";\n }\n }\n return value;\n }\n scope.allColumns = deviationService().getAllColumns(renderValue);\n\n scope.timePeriod = null;\n scope.$watch('filterParams', function (params) {\n if (!params) return;\n isFilterLoaded = true;\n if (!params.filter) {\n scope.filter = [];\n } else {\n scope.filter = params.filter;\n }\n if (params.timePeriod) {\n scope.timePeriod = params.timePeriod;\n }\n if (params.sorting) {\n scope.tableSorting = params.sorting;\n }\n if (params.listColumns) {\n params.listColumns.forEach((c) => {\n var column = $filter('filter')(scope.allColumns, { field: c.field })[0];\n if (column) {\n column.visible = c.visible;\n }\n })\n }\n\n if (isFilterLoaded) {\n scope.getValues();\n }\n });\n function getTotalCount() {\n deviationService().getTotalNumberOfDeviations(scope.showArchived).then(function (count) {\n scope.totalValues = count;\n });\n }\n\n\n scope.$watch('options', function (options) {\n if (!options) {\n scope.showFileGenerators = true;\n scope.showFilter = true;\n scope.showArchived = true;\n } else {\n // Apply options\n scope.showFileGenerators = options.showFileGenerators;\n scope.showFilter = options.showFilter;\n scope.showArchived = options.showArchived;\n }\n isOptionsLoaded = true;\n getTotalCount();\n scope.getValues();\n });\n\n\n scope.filterChanged = function (filter) {\n scope.filter = filter\n scope.getValues();\n }\n\n scope.openDeviation = function (deviation) {\n deviationService().get(deviation.id).then(function (deviation) {\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n templateUrl: 'fullDeviation.html',\n controller: 'fullDeviationController',\n windowClass: 'full-screen',\n resolve: {\n deviation: function () {\n return deviation;\n },\n activeTab: function () {\n return \"Info\";\n }\n }\n });\n modalInstance.result.then(function (updatedSuggestion) {\n scope.tableParams.reload();\n });\n });\n\n }\n scope.exportToPDF = function () {\n var columns = getColumns();\n columns.push({ field: \"id\" })\n var dbParams = {\n page: 1,\n count: 5000,\n sorting: scope.sorting,\n filters: scope.filter,\n columns: columns,\n timePeriod: scope.timePeriod\n }\n pdfService.createDeviationListReport(dbParams);\n }\n\n\n scope.exportToExcel = function () {\n var columns = getColumns();\n columns.push({ field: \"id\" })\n var dbParams = {\n page: 1,\n count: 5000,\n sorting: scope.sorting,\n filters: scope.filter,\n columns: columns,\n timePeriod: scope.timePeriod\n }\n excelService().exportDeviationValues(dbParams);\n }\n\n\n scope.getValueForElement = function (element, item) {\n var sourceColumn = element.sourceColumn;\n var value = item[sourceColumn];\n return value;\n }\n\n\n scope.getValues = function (params) {\n if (!isOptionsLoaded || !isFilterLoaded) return;\n scope.buildColumns();\n scope.tableParams = new NgTableParams({\n sorting: scope.tableSorting,\n count: scope.pageCount,\n },\n {\n getData: scope.getTableValues\n });\n }\n\n\n scope.getTableValues = function (params) {\n\n var sorting = [];\n // Build sortExpression for database to be able to deserialize, becuase NgTableParams.sorting is a dynamic object.\n for (var propt in params._params.sorting) {\n sorting.push({\n property: propt,\n direction: params._params.sorting[propt]\n });\n }\n scope.sorting = sorting;\n // Resolve paging;\n if (scope.tableSorting != params._params.sorting) {\n scope.tableSorting = params._params.sorting;\n raiseTableParamsChanged();\n }\n\n // Resolve filter\n let filters = []\n if (scope.filter && Array.isArray(scope.filter)) {\n // copy elements to local filter by spread operator ...\n filters = [...scope.filter]\n }\n\n if (!scope.showArchived) {\n const archivedFilter = {\n sourceColumn: \"D.archivedDate\",\n operator: \"IsNull\",\n items: []\n }\n filters.push(archivedFilter)\n }\n\n // We will build params based on the built-in NgTableParams + our sorting array\n var dbParams = {\n page: params._params.page,\n count: params._params.count,\n sorting: scope.sorting,\n filters: filters,\n timePeriod: scope.timePeriod\n }\n return deviationService().getTableValues(dbParams).then(function (data) {\n scope.totalMatchingRecords = data.total;\n params.total(data.total); // recal. page nav controls\n // check values\n data.values.forEach(value => {\n value.isOverdue = isOverdue(value.dueDate, value.statusImplementedDate);\n value.deviationType = getDeviationTypeTranslation(value);\n });\n return data.values;\n\n });\n }\n\n function getDeviationTypeTranslation(value) {\n if (!deviationTypesWithUserLanguage || deviationTypesWithUserLanguage.length == 0) return value.deviationType;\n var deviationType = $filter('filter')(deviationTypesWithUserLanguage, { id: value.deviationTypeId }, true);\n if (deviationType && deviationType.length > 0) {\n return deviationType[0].title;\n }\n return value.deviationType;\n }\n var raiseTableParamsChanged = function () {\n if (!scope.tableParamsChanged) return;\n // Raise settings changeHandler\n var tableParamsSettings = {\n sorting: scope.tableSorting,\n pageCount: scope.pageCount\n }\n scope.tableParamsChanged({ params: tableParamsSettings });\n\n }\n\n scope.buildColumns = function () {\n scope.columns = $filter('filter')(scope.allColumns, { visible: true });\n }\n\n var getColumns = function () {\n var columns = [];\n scope.columns.forEach((c) => {\n columns.push({\n field: c.field\n });\n })\n return columns;\n }\n\n scope.selectColumn = function (column) {\n column.visible = !column.visible;\n scope.columnListChanged({\n listColumns: {\n listColumns: scope.allColumns\n }\n });\n scope.buildColumns();\n }\n\n function isOverdue(date, implementedDate) {\n // Overdue check\n\n if (!date) return false;\n if (implementedDate) return false;\n var duration = moment.duration(moment().diff(moment(date)));\n var days = duration.asDays();\n if (days > 1) {\n return true;\n }\n return false;\n }\n\n }\n\n }\n }]);\n","import { getCompanySetting } from \"@common/stores/companySettingsStore\"\nimport * as customerService from \"@common/services/customers/customerService\"\nimport * as assetService from \"@common/services/assetService\"\nimport * as timeService from \"@common/services/timeService\"\nimport * as employeeService from \"@common/services/employeeService\"\nimport * as pdfService from \"@common/services/pdfService\"\nimport envConfig from \"@common/envConfig\"\n\nvar DigiLean = angular.module('DigiLean');\nDigiLean.controller('fullDeviationController', ['$scope', '$state', '$filter', '$uibModal', '$uibModalInstance', '$translate', 'authService', 'navigationService', 'areaService', 'activityService', 'deviationService', 'deviation', 'modalService', 'actionlistService', 'projectService', 'activeTab', 'dataListService',\n function ($scope, $state, $filter, $uibModal, $uibModalInstance, $translate, authService, navigationService, areaService, activityService, deviationService, deviation, modalService, actionlistService, projectService, activeTab, dataListService) {\n $scope.deviation = deviation;\n $scope.assets = [];\n $scope.areas = [];\n $scope.projects = [];\n deviation.asset = null;\n\n $scope.showFileGenerators = true;\n if (envConfig.isTeamsMode) {\n $scope.showFileGenerators = false;\n }\n\n $scope.showAttachments = false;\n $scope.changedDueDate = false;\n $scope.selectedReportedAsset = null;\n $scope.selectedAsset = null;\n $scope.selectedArea = null;\n var activityLogLoaded = false;\n var currentSeverity = deviation.severity;\n var oldDueDate = deviation.dueDate;\n var consequencesLoaded = false;\n $scope.mytime = null;\n $scope.hstep = 1;\n $scope.mstep = 5;\n $scope.options = {\n hstep: [1, 2, 3],\n mstep: [1, 5, 10, 15, 25, 30]\n };\n $scope.showTime = false;\n $scope.showArea = false;\n $scope.showProject = false;\n\n $scope.customfields = [];\n var customFieldChanged = false;\n\n // Seleted categories\n var selectedCategories = [];\n for (let index = 0; index < deviation.categories.length; index++) {\n const element = deviation.categories[index];\n selectedCategories.push(element.problemCategory);\n }\n $scope.selectedCategories = selectedCategories;\n\n var currency = customerService.getDefaultCurrency()\n getCompanySetting(\"currency\").then(function (setting) {\n if (setting) {\n currency = setting\n }\n });\n\n\n // Default check of modules. Will work unless page is refreshed \n $scope.hasA3 = navigationService().hasModule(\"A3\");\n\n // if page is refreshed we need to refresh the access to modules\n $scope.subscribe(\"UserAuthenticatedAndReady\", function (profile) {\n $scope.hasA3 = navigationService().hasModule(\"A3\");\n });\n\n $scope.canEdit = false;\n // Check if user is allowed to edit\n deviationService().canEdit(deviation.id).then(function (canEdit) {\n $scope.canEdit = canEdit;\n });\n\n function setSeverityDescription(){\n if($scope.severities){\n for(var i=0; i< $scope.severities.length; i++){\n if($scope.severities[i].severity == 0){\n $scope.severityNotSpecifiedDescription = $scope.severities[i].customLanguageLabel.label;\n } else if($scope.severities[i].severity == 1){\n $scope.severityLowDescription = $scope.severities[i].customLanguageLabel.label;\n } else if($scope.severities[i].severity == 2){\n $scope.severityMediumDescription = $scope.severities[i].customLanguageLabel.label;\n } else if($scope.severities[i].severity == 3){\n $scope.severityHighDescription = $scope.severities[i].customLanguageLabel.label;\n }\n } \n }\n }\n\n var deviationTypeId = $scope.deviation.deviationTypeId;\n deviationService().getDeviationTypeConfiguration(deviationTypeId).then(function (configuration) {\n $scope.configuration = configuration;\n $scope.deviationtypeTitle = configuration.title;\n checkFields($scope.configuration.fields);\n setCategories($scope.configuration.categories);\n setConsequences($scope.configuration.consequences);\n setProblemReasons($scope.configuration.causes);\n $scope.severities = $scope.configuration.severities;\n setSeverityDescription();\n if($scope.deviation){\n $scope.changeSeverity($scope.deviation.severity);\n }\n });\n\n $scope.descriptionChanged = function (content) {\n $scope.deviation.text = content;\n }\n\n $scope.archive = function () {\n deviationService().archive(deviation.id).then(function () {\n deviation.archivedDate = moment().toDate();\n $uibModalInstance.close($scope.deviation);\n });\n };\n\n $scope.unArchive = function () {\n deviationService().unArchive(deviation.id).then(function () {\n deviation.archivedDate = null;\n $uibModalInstance.close($scope.deviation);\n });\n };\n\n $scope.print = function () {\n pdfService.printDeviationReport($scope.deviation.id);\n };\n\n function checkFields(validFields) {\n if (validFields) {\n var hasCustomFields = false;\n for (var f = 0; f < validFields.length; f++) {\n switch (validFields[f].type) {\n case \"PROJECT\":\n loadProjects();\n $scope.showProject = true;\n break;\n case \"AREA\":\n loadAreas();\n $scope.showArea = true;\n break;\n case \"DEVIATION_INCIDENT_TIME\":\n $scope.showTime = true;\n $scope.mytime = moment($scope.deviation.incidentDate).toDate();\n break;\n default:\n $scope.customfields.push(validFields[f]);\n hasCustomFields = true;\n }\n }\n if (hasCustomFields) {\n setCustomFieldValues(validFields)\n }\n }\n }\n\n $scope.modifyCustomField = function () {\n customFieldChanged = true;\n };\n\n function setCustomFieldValues() {\n\n deviationService().getCustomFields($scope.deviation.id).then(function (values) {\n\n $scope.customfields.forEach(field => {\n var match = $filter('filter')(values, { deviationTypeFieldId: field.id }, true);\n if (match.length > 0) {\n var value = match[0];\n switch (field.type) {\n case \"bool\":\n if (value && value.value == \"true\") {\n field.value = true;\n } else {\n field.value = false;\n }\n break;\n case \"number\":\n if (value && value.value) {\n field.value = Number(value.value); //both number and double will be handled \n }\n break;\n case \"list\":\n setCustomList(field, value.value);\n break;\n default:\n field.value = value.value;\n break;\n }\n } else { // If no value, make sure we load the list\n switch (field.type) {\n case \"list\":\n setCustomList(field, null);\n break;\n \n }\n }\n });\n });\n\n }\n\n function setCustomList(field, listid) {\n var listOptions = { includeDeletedItems: false };\n dataListService().getItems(field.dataListId, listOptions).then(function (list) {\n field.datalistelements = list;\n field.value = listid;\n if (listid) {\n var listelement = $filter('filter')(field.datalistelements, { id: parseInt(listid) }, true);\n field.selectedDataListItem = listelement[0];\n }\n });\n }\n\n\n\n $scope.selectListItem = function (selectedDataListItem, item) {\n item.value = selectedDataListItem.id.toString();\n customFieldChanged = true;\n }\n\n function saveCustomFieldsValues() {\n if ($scope.customfields.length > 0) {\n deviationService().updateCustomFields($scope.deviation.id, $scope.customfields).then(function (result) {\n });\n }\n }\n\n\n $scope.subscribe(\"DeviationActionItemAdded\", function (item) {\n if (item.deviationId && item.deviationId === $scope.deviation.id) {\n $scope.deviation.actionListCount = $scope.deviation.actionListCount + 1;\n }\n });\n\n\n // set color based on severity\n var severityColors = [\"#c0c0c0\", \"#1872ab\", \"#FFCE54\", \"#DA4453\"];\n $scope.severityLowDescription = \"\";\n $scope.severityMediumDescription = \"\";\n $scope.severityHighDescription = \"\";\n $scope.severityNotSpecifiedDescription = \"\";\n $scope.background = severityColors[$scope.deviation.severity];\n\n $scope.changeSeverity = function (severity) {\n $scope.deviation.severity = severity;\n $scope.background = severityColors[$scope.deviation.severity];\n $scope.severityDescription = \"\";\n if($scope.severities){\n var selectedSeverity = $filter('filter')($scope.severities, { severity: severity }, true)[0];\n if(selectedSeverity){\n $scope.severityDescription = selectedSeverity.customLanguageLabel.label;\n } \n }\n };\n\n $scope.statuses = [];\n $scope.deviation.selectedStatus = []; \n $scope.activityLog = [];\n //Modified propertie flag\n $scope.statusChanged = false;\n $scope.problemCategoryChanged = false;\n $scope.problemReasonChanged = false;\n var consequencesChanged = false;\n $scope.selectedOwner = {};\n\n var newResponsible = deviation.owner;\n var newResponsibleUserId = deviation.ownerUserId;\n var oldResponsible = deviation.owner;\n var oldResponsibleUserId = deviation.ownerUserId;\n\n $scope.setTime = function (time) {\n $scope.deviation.incidentDate.setHours(time.getHours());\n $scope.deviation.incidentDate.setMinutes(time.getMinutes());\n };\n\n // File upload\n $scope.uploadedFiles = []; // For uploading new attachments, will be connected to dropzone.\n $scope.fileUploaded = function (file) {\n deviationService().addAttachment($scope.deviation.id, file).then(function (improvementAttachment) {\n improvementAttachment.cssState = \"animated slideInDown\";\n setTimeout(function () {\n improvementAttachment.cssState = \"\";\n }, 500);\n $scope.deviation.attachments.push(improvementAttachment);\n });\n };\n\n // Resolve active tab\n var tabs = [\"Info\", \"Action\", \"Categories\", \"Consequence\", \"Cause\", \"Evaluation\", \"Comments\", \"History\"];\n if (activeTab == \"Attachments\") {\n $scope.showAttachments = true;\n } else {\n $scope.indexTab = tabs.indexOf(activeTab);\n }\n $scope.selectTab = function (tab) {\n $scope.indexTab = tabs.indexOf(tab);\n if (tab === \"History\") {\n getActivityLog();\n } /*else if (tab === \"Comments\") {\n sortCommentOrder();\n } */\n };\n // Attachments\n\n $scope.toggleShowAttachments = function (show) {\n $scope.showAttachments = show;\n };\n\n $scope.deleteAttachment = function (attachment) {\n deviationService().deleteAttachment($scope.deviation.id, attachment.id).then(function (improvementAttachment) {\n // Send event\n attachment.cssState = \"animated slideOutLeft\";\n setTimeout(function () {\n var index = $scope.deviation.attachments.indexOf(attachment);\n $scope.deviation.attachments.splice(index, 1);\n }, 500);\n });\n };\n\n // Datepicker setup\n $scope.deviation.incidentDate = moment($scope.deviation.incidentDate).toDate();\n $scope.incidentDateChanged = function($event) {\n const date = $event.originalEvent.detail\n $scope.deviation.incidentDate = date\n }\n\n if ($scope.deviation.dueDate) {\n $scope.deviation.dueDate = moment($scope.deviation.dueDate).toDate();\n }\n $scope.datepickerDueDateOpen = function () {\n $scope.datePickerDueDate.opened = true;\n };\n $scope.datePickerDueDate = {\n opened: false\n };\n\n $scope.isEvaluated = false;\n if ($scope.deviation.statusEvaluatedDate) {\n $scope.isEvaluated = true;\n }\n function loadProjects() {\n\n projectService().getList().then(function (projects) {\n $scope.projects = projects;\n $scope.projectmodel = {\n projectId: $scope.deviation.projectId,\n projects: $scope.projects\n }\n });\n\n }\n $scope.projectChangeHandler = function (projectinfo) {\n if (projectinfo) {\n $scope.deviation.projectId = projectinfo.project.id;\n } else {\n $scope.deviation.projectId = null;\n }\n }\n\n function setConsequences(consequences) {\n $scope.consequences = consequences;\n consequencesLoaded = true;\n // Map id to correct type\n for (var i = 0; i < $scope.deviation.consequences.length; i++) {\n var registeredconsequence = $scope.deviation.consequences[i];\n var match = $filter('filter')(consequences, { id: registeredconsequence.lossTypeId }, true);\n if (match.length === 1) {\n match[0].checked = true;\n match[0].amount = $scope.deviation.consequences[i].amount;\n } \n }\n }\n\n $scope.modifyConsequence = function (consequence) {\n consequencesChanged = true;\n if ($scope.deviation.consequences) {\n var match = $filter('filter')($scope.deviation.consequences, { lossTypeId: consequence.id }, true);\n\n if (match.length === 1) {\n if (consequence.checked) {\n match[0].amount = consequence.amount;\n } else {\n consequence.amount = null;\n var index = $scope.deviation.consequences.indexOf(match[0]);\n $scope.deviation.consequences.splice(index);\n }\n } else { //consequences is not allready selected\n consequence.lossTypeId = consequence.id;\n $scope.deviation.consequences.push(consequence);\n }\n\n } else {\n $scope.deviation.consequences = [];\n consequence.lossTypeId = consequence.id;\n $scope.deviation.consequences.push(consequence);\n }\n };\n\n $scope.setConsequence = function (consequence) {\n if (consequence.amount) {\n consequence.checked = true;\n\n var valueString = consequence.amount.toString();\n var valuereplacecomma = valueString.replace(/,/g, '.');\n consequence.amount = valuereplacecomma;\n if (consequence.amount == '' || Number(consequence.amount)) {\n consequence.notvalidnumber = false;\n $scope.modifyConsequence(consequence);\n } else {\n consequence.notvalidnumber = true;\n }\n } else {\n consequence.notvalidnumber = false;\n }\n };\n\n function setupAsset(assets, displayLevel){\n $scope.assets = assets;\n var selectedReportedAssets = $filter('filter')($scope.assets, { id: $scope.deviation.assetId }, true);\n if (selectedReportedAssets.length > 0) {\n $scope.selectedReportedAsset = selectedReportedAssets[0];\n }\n var selectedAssets = $filter('filter')($scope.assets, { id: $scope.deviation.followUpAssetId }, true);\n if (selectedAssets.length > 0) {\n $scope.selectedAsset = selectedAssets[0];\n }\n if(displayLevel){\n for (var k = 0; k < $scope.assets.length; k++) {\n $scope.assets[k].cssLevel = \"level-\" + $scope.assets[k].level; \n }\n } \n $scope.assetmodel = { assetId: $scope.deviation.followUpAssetId,\n assets: $scope.assets};\n $scope.reportedassetmodel = { assetId: $scope.deviation.assetId,\n assets: $scope.assets};\n }\n\n function getAssetList() {\n if (authService.hasRole(\"Admin\") || authService.hasRole(\"DeviationAdmin\")) {\n assetService.getAllAssets(true).then(function (data) {\n setupAsset(data, true);\n });\n } else {\n assetService.getList().then(function (data) {\n var showLevel = false;\n if (data && data.length>7) showLevel=true;\n setupAsset(data, showLevel);\n });\n }\n };\n getAssetList();\n\n function loadAreas() {\n areaService().getList().then(function (areas) {\n $scope.areas = areas;\n if ($scope.deviation.areaId) {\n var match = $filter('filter')($scope.areas, { id: $scope.deviation.areaId }, true);\n if (match.length > 0) {\n $scope.selectedArea = match[0];\n }\n }\n });\n }\n\n function extendFollowupAssetIfAssetOwner(users){\n if (!users || users.length == 0) return;\n if (!authService.hasRole(\"Admin\") && !authService.hasRole(\"DeviationAdmin\")) { // all assets are already loaded if user is admin\n var userid = authService.getCurrentUser().userId\n var matchingUser = users.find(u => u.userId === userid && u.assetRole === 'Owner')\n if (matchingUser) {\n assetService.getAllAssets(true).then(function (data) {\n var selectedAssets = $filter('filter')(data, { id: $scope.deviation.followUpAssetId }, true);\n if (selectedAssets.length > 0) {\n $scope.selectedAsset = selectedAssets[0];\n }\n for (var k = 0; k < data.length; k++) {\n data[k].cssLevel = \"level-\" + data[k].level; \n }\n $scope.assetmodel = { assetId: $scope.deviation.followUpAssetId,assets: data}; \n });\n }\n } \n }\n\n $scope.members = [];\n function getUsers() {\n if ($scope.deviation.followUpAssetId) {\n customerService.getUsersForAsset($scope.deviation.followUpAssetId).then(function (users) {\n extendFollowupAssetIfAssetOwner(users);\n $scope.members = users.filter(u => u.assetRole !== 'Viewer')\n $scope.selectedOwner = {};\n if ($scope.deviation.ownerUserId) {\n $scope.selectedOwner = $filter('filter')($scope.members, { userId: $scope.deviation.ownerUserId })[0];\n }\n });\n }\n }\n getUsers();\n\n $scope.projectChanged = function (project) {\n $scope.deviation.projectId = project.id;\n };\n\n $scope.reportedAssetChangeHandler = function (assetinfo) {\n if (assetinfo) {\n $scope.deviation.assetId = assetinfo.asset.id;\n $scope.selectedReportedAsset = assetinfo.asset;\n } \n }\n\n $scope.assetChangeHandler = function (assetinfo) {\n if (assetinfo) {\n $scope.deviation.followUpAssetId = assetinfo.asset.id;\n $scope.selectedAsset = assetinfo.asset;\n getUsers();\n } \n }\n\n $scope.areaChanged = function (area) {\n $scope.deviation.areaId = area.id;\n $scope.deviation.area = area;\n };\n\n $scope.selectedOwnerChanged = function (owner) {\n if (owner) {\n $scope.deviation.ownerUserId = owner.userId;\n $scope.deviation.owner = owner.fullName;\n $scope.deviation.ownerDisplayName = owner.displayName;\n newResponsible = owner.fullName;\n newResponsibleUserId = owner.userId;\n }\n };\n\n function setCategories(categories) {\n $scope.categories = categories;\n }\n\n function setProblemReasons(reasons) {\n $scope.problemReasons = reasons;\n if ($scope.deviation.problemReasons.length > 0) {\n for (var i = 0; i < $scope.deviation.problemReasons.length; i++) {\n var reason = $filter('filter')($scope.problemReasons, { id: $scope.deviation.problemReasons[i] }, true);\n if (reason.length > 0) {\n reason[0].checked = true;\n }\n }\n }\n }\n\n function translateStatuses() {\n $translate(['COMMON_NEW', 'DEVIATION_IN_PROGRESS', 'DEVIATION_RESOLVED', 'DEVIATION_RESOLVED', 'COMMON_REJECTED']).then(function (translations) {\n $scope.statuses = [\n {\n statusDisplayText: translations.COMMON_NEW,\n statusDatabase: 0\n },\n {\n statusDisplayText: translations.DEVIATION_IN_PROGRESS,\n statusDatabase: 10\n },\n {\n statusDisplayText: translations.DEVIATION_RESOLVED,\n statusDatabase: 20\n },\n {\n statusDisplayText: translations.COMMON_REJECTED,\n statusDatabase: 30\n }];\n setSelectedStatus();\n });\n\n }\n\n function setSelectedStatus() {\n $scope.deviation.selectedStatus = $filter('filter')($scope.statuses, { statusDatabase: deviation.status }, true)[0];\n }\n translateStatuses();\n\n $scope.modifyReason = function (reason) {\n if ($scope.deviation.problemReasons) {\n var i = $scope.deviation.problemReasons.indexOf(reason.id);\n if (i == -1) { //reason is not allready selected\n $scope.deviation.problemReasons.push(reason.id);\n } else {\n $scope.deviation.problemReasons.splice(i);\n }\n\n } else {\n $scope.deviation.problemReasons = [];\n $scope.deviation.problemReasons.push(reason.id);\n }\n $scope.problemReasonChanged = true;\n };\n\n // History\n function getActivityLog() {\n if (!activityLogLoaded) {\n var activityRequest = {\n activity: \"Deviation\",\n activityId: $scope.deviation.id\n };\n var $translate = $filter('translate');\n var translateOptions = {\n month: $translate('COMMON_TIMEELAPSED_MONTH'),\n days: $translate('COMMON_TIMEELAPSED_DAYS'),\n hours: $translate('COMMON_TIMEELAPSED_HOURS'),\n mins: $translate('COMMON_TIMEELAPSED_MINUTES'),\n seconds: $translate('COMMON_TIMEELAPSED_SECONDS'),\n now: $translate('COMMON_TIMEELAPSED_NOW')\n };\n activityService().getLogForActivity(activityRequest).then(function (logItems) {\n logItems.forEach(function (activity) {\n activity.occured = timeService.getTimeElapsed(activity.activityDate, translateOptions);\n if (activity.payLoad && typeof activity.payLoad === \"string\") {\n activity.payLoad = JSON.parse(activity.payLoad); // Payload gives the whole object, in this case the Task.\n if(activity.action == 'DeviationCategoriesChanged') {\n setCategoryActivityPayload(activity.payLoad);\n }\n }\n });\n $scope.activityLog = logItems;\n activityLogLoaded = true;\n });\n }\n }\n\n function setCategoryActivityPayload(payload){\n if(payload && payload.Categories && $scope.categories){\n payload.Categories.forEach(function (category) {\n for(var i=0; i< $scope.categories.length; i++){\n if($scope.categories[i].id == category.ProblemCategoryId){\n category.ProblemCategory = $scope.categories[i];\n } else if ($scope.categories[i].children && $scope.categories[i].children.length > 0){\n for(var y=0; y< $scope.categories[i].children.length; y++){\n if($scope.categories[i].children[y].id == category.ProblemCategoryId){\n category.ProblemCategory = $scope.categories[i].children[y];\n break;\n } \n }\n }\n }\n //category.ProblemCategory = $filter('filter')($scope.categories, { id: category.ProblemCategoryId }, true)[0];\n });\n } \n }\n\n $scope.activeComment = \"\";\n $scope.activeCommentChanged = function (value) {\n $scope.hasAddedComments = true;\n $scope.activeComment = value;\n };\n\n $scope.setStatusChanged = function (newStatus) {\n if (newStatus.statusDatabase !== 20) { //Status different to solved\n $scope.statusChanged = true;\n $scope.deviation.status = newStatus.statusDatabase;\n } else {\n // Get actionlist\n actionlistService().getActionListForDeviation($scope.deviation.id).then(function (items) {\n if (items && items.length > 0) {\n var notCompletedActionItems = false;\n for (var a = 0; a < items.length; a++) {\n if (items[a].status !== 'OK') {\n notCompletedActionItems = true;\n }\n }\n if (notCompletedActionItems) {\n $translate(['COMMON_CANCEL', 'DASHBOARD_CHANGE_STATUS', 'COMMON_CHANGE_STATUS', 'DEVIATION_CHANGE_STATUS_CONFIRMATION']).then(function (translations) {\n var modalOptions = {\n closeButtonText: translations.COMMON_CANCEL,\n actionButtonText: translations.COMMON_CHANGE_STATUS,\n headerText: translations.DASHBOARD_CHANGE_STATUS + ' ' + $scope.deviation.selectedStatus.statusDisplayText + '?',\n bodyText: translations.DEVIATION_CHANGE_STATUS_CONFIRMATION\n };\n\n modalService.show({}, modalOptions).then(function (result) {\n $scope.statusChanged = true;\n $scope.deviation.status = newStatus.statusDatabase;\n $scope.deviation.selectedStatus = newStatus;\n });\n\n if (!$scope.statusChanged) {\n $scope.deviation.selectedStatus = $filter('filter')($scope.statuses, { statusDatabase: deviation.status }, true)[0];\n }\n });\n }\n else {\n $scope.statusChanged = true;\n $scope.deviation.status = newStatus.statusDatabase;\n }\n } else {\n $scope.statusChanged = true;\n $scope.deviation.status = newStatus.statusDatabase;\n }\n });\n }\n };\n\n $scope.dueDateChanged = function ($event) {\n const date = $event.originalEvent.detail\n $scope.deviation.dueDate = date\n $scope.changedDueDate = true\n }\n\n\n $scope.toA3 = function () {\n var assetId = \"\";\n if ($scope.deviation.assetId) {\n assetId = $scope.deviation.assetId;\n }\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'newA3Form.html',\n controller: 'newA3ModalController',\n resolve: {\n a3: function () {\n return {\n id: 0,\n title: $scope.deviation.title,\n assetId: assetId,\n deviationId: $scope.deviation.id,\n goal: \"\",\n }\n }\n }\n });\n return modalInstance.result.then(function (a3) {\n $scope.publish(\"SendDeviationActivatedtoA3\", $scope.deviation);\n $uibModalInstance.close($scope.deviation);\n }\n );\n };\n\n $scope.showA3 = function () {\n if(!$scope.deviation.a3Id) return;\n $state.go('a3wizard',{id:$scope.deviation.a3Id}, {reload:false});\n $uibModalInstance.close($scope.deviation);\n }\n\n $scope.deleteConsequence = function (consequence, index) {\n $scope.deviation.consequences.splice(index, 1);\n consequencesChanged = true;\n };\n\n $scope.consequenceChanged = function (consequence) {\n consequence.lossTypeId = consequence.type.id;\n consequence.lossType = $filter('filter')($scope.consequences, { id: consequence.lossTypeId }, true)[0];\n consequencesChanged = true;\n };\n\n $scope.createNewConsequence = function () {\n var newConsequence = {\n amount: null,\n unit: currency\n };\n if ($scope.deviation.consequences) {\n $scope.deviation.consequences.push(newConsequence);\n } else {\n var consequenceArray = [];\n $scope.deviation.consequences = consequenceArray;\n $scope.deviation.consequences.push(newConsequence);\n }\n };\n\n employeeService.getList().then(function (data) {\n $scope.employees = data;\n });\n\n $scope.comments = [];\n deviationService().getComments(deviation.id).then(function (deviationComments) {\n $scope.totalComments = deviationComments.total;\n $scope.comments = deviationComments.comments;\n });\n\n $scope.subscribe(\"DeviationCommentedOn\", function (c) {\n $scope.totalComments += 1;\n });\n $scope.saveComment = function (comment) {\n return deviationService().addComment(deviation.id, comment);\n };\n $scope.showAddComment = true;\n $scope.addComment = function (comment) {\n return $scope.saveComment(comment).then(function (savedComment) {\n $scope.comments.push(savedComment);\n });\n };\n $scope.deleteComment = function (comment) {\n return deviationService().deleteComment(deviation.id, comment.id).then(function () {\n $scope.totalComments -= 1;\n });\n };\n\n $scope.setEvaluationStatus = function (status) {\n $scope.deviation.evaluationStatus = status;\n $scope.deviation.statusEvaluatedDate = moment().toDate();\n $scope.isEvaluated = true;\n };\n\n $scope.setEvaluationTextChanged = function (text) {\n $scope.deviation.statusEvaluatedDate = moment().toDate();\n $scope.isEvaluated = true;\n };\n\n\n $scope.$watchCollection('selectedCategories', function (newCol, oldCol, scope) {\n if (newCol.length != oldCol.length) {\n $scope.validate();\n }\n });\n\n $scope.isValid = true;\n $scope.validationMessages = [];\n $scope.validate = function () {\n // Rules\n $scope.validationMessages = [];\n // Has categories\n if ($scope.selectedCategories.length == 0) {\n $scope.validationMessages.push($translate.instant(\"DEVIATION_VALIDATION_CATEGORIES_REQUIRED\"));\n }\n // // If deviation closed, we need an evaluation test\n // if ($scope.isResolved && $scope.deviation.evaluationText.length == 0) {\n // // evaluationText\n // // statusDisplayText: translations.DEVIATION_RESOLVED,\n // // statusDatabase: 20\n // $scope.validationMessages.push($translate.instant(\"DEVIATION_VALIDATION_EVALUATION_TEXT_REQUIRED\"));\n // }\n\n if ($scope.validationMessages.length > 0) {\n $scope.isValid = false;\n } else {\n $scope.isValid = true;\n }\n return $scope.isValid;\n };\n\n $scope.ok = function () {\n if (!$scope.validate()) return;\n\n\n // Categories\n // Check if deviation categories matches selectedCategories \n $scope.deviation.categories = [];\n for (let index = 0; index < $scope.selectedCategories.length; index++) {\n const element = $scope.selectedCategories[index];\n $scope.deviation.categories.push({\n deviationId: deviation.id,\n problemCategoryId: element.id\n });\n }\n\n deviationService().updateDeviation($scope.deviation).then(function (deviation) {\n if ($scope.statusChanged) {\n $scope.statusChanged = false;\n }\n\n if ($scope.problemReasonChanged) {\n\n var selectedProblemReasons = [];\n if ($scope.deviation.problemReasons.length > 0) {\n for (var i = 0; i < $scope.deviation.problemReasons.length; i++) {\n var reason = $filter('filter')($scope.problemReasons, { id: $scope.deviation.problemReasons[i] }, true);\n if (reason.length > 0) {\n selectedProblemReasons.push(reason[0]);\n }\n }\n }\n var problemreasons = {\n deviationId: deviation.id,\n currentProblemReasons: selectedProblemReasons\n }\n $scope.publish(\"SendDeviationProblemReasonChanged\", problemreasons);\n }\n\n if (consequencesChanged) {\n var consequences = {\n deviationId: deviation.id,\n consequences: $scope.deviation.consequences\n }\n deviationService().updateConsequences(consequences).then(function (result) {\n consequencesChanged = false;\n });\n\n }\n\n var newSeverity = parseInt($scope.deviation.severity);\n if (currentSeverity !== newSeverity) {\n var severity = {\n deviationId: deviation.id,\n oldSeverity: currentSeverity,\n newSeverity: newSeverity\n };\n $scope.publish(\"SendDeviationSeverityChanged\", severity);\n }\n\n saveCustomFieldsValues();\n\n $scope.deviation = deviation;\n $uibModalInstance.close($scope.deviation);\n });\n\n };\n\n $scope.deleteDeviation = function (deviation) {\n var id = deviation.id;\n deviationService().delete(id).then(function (result) {\n if (result.affectedTaskIds && result.affectedTaskIds.length > 0) {\n $scope.publish(\"SendTasksDeleted\", result.affectedTaskIds);\n }\n\n $uibModalInstance.close($scope.deviation);\n });\n };\n\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n\n }]);","import { cloneDeep } from \"lodash\"\nexport function translateOldDeviationSettings(settings, currentUserId, dueDate) {\n\n if (!settings)\n return {}\n \n let converted = cloneDeep(settings)\n\n // old filter was an object, so if it's an array it's the new format\n if (settings.filter && !Array.isArray(settings.filter)) {\n converted.filter = []\n\n // area -> areaId\n if (settings.filter.area && Array.isArray(settings.filter.area)) {\n const itemFilter = generateItemFilter(\"areaId\", settings.filter.area)\n converted.filter.push(itemFilter)\n }\n // asset -> followupAssetId\n if (settings.filter.asset && Array.isArray(settings.filter.asset)) {\n const itemFilter = generateItemFilter(\"followupAssetId\", settings.filter.asset)\n converted.filter.push(itemFilter)\n }\n // category -> problemCategoryId\n if (settings.filter.category && Array.isArray(settings.filter.category)) {\n const itemFilter = generateItemFilter(\"problemCategoryId\", settings.filter.category)\n converted.filter.push(itemFilter)\n }\n // deviationtype -> deviationTypeId\n if (settings.filter.deviationtype && Array.isArray(settings.filter.deviationtype)) {\n const itemFilter = generateItemFilter(\"deviationTypeId\", settings.filter.deviationtype)\n converted.filter.push(itemFilter)\n }\n // project -> projectId\n if (settings.filter.project && Array.isArray(settings.filter.project)) {\n const itemFilter = generateItemFilter(\"projectId\", settings.filter.project)\n converted.filter.push(itemFilter)\n }\n // severity -> severity\n if (settings.filter.severity && Array.isArray(settings.filter.severity)) {\n const itemFilter = generateItemFilter(\"severity\", settings.filter.severity)\n converted.filter.push(itemFilter)\n }\n // status -> status\n if (settings.filter.status && Array.isArray(settings.filter.status)) {\n const itemFilter = generateItemFilter(\"status\", settings.filter.status)\n converted.filter.push(itemFilter)\n }\n // myRegistration -> createdByUserId\n if (settings.filter.myRegistration) {\n const itemFilter = generateItemFilter(\"createdByUserId\", [currentUserId])\n converted.filter.push(itemFilter)\n }\n //myResponsible -> ownerUserId\n if (settings.filter.myResponsible) {\n const itemFilter = generateItemFilter(\"ownerUserId\", [currentUserId])\n converted.filter.push(itemFilter)\n }\n\n // overdueFilterActive\n if (settings.filter.overdueFilterActive) {\n const dueDateFilter = {\n sourceColumn: \"dueDate\",\n operator: \"LessThanDate\",\n items: [dueDate]\n }\n converted.filter.push(dueDateFilter)\n const statusImplementedFilter = {\n sourceColumn: \"statusImplementedDate\",\n operator: \"IsNull\",\n items: []\n }\n converted.filter.push(statusImplementedFilter)\n }\n\n // timeframe \n if (settings.filter.timeframe) {\n converted.timePeriod = {\n timeframe: settings.filter.timeframe,\n period: settings.filter.timePeriod\n }\n }\n }\n \n\n return converted\n}\n\nfunction generateItemFilter(sourceColumn, items) {\n if (!items || !Array.isArray(items) || items.length === 0)\n return null\n \n let itemFilter = {\n sourceColumn: sourceColumn,\n operator: \"InList\",\n items: []\n }\n // const itemsString = items.map(i => `${i}`)\n itemFilter.items = items\n return itemFilter\n}","import * as dragula from \"dragula\"\nimport { translateLabelInstant } from \"@common/services/language/DigiLeanLang\"\nimport {translateOldDeviationSettings} from \"@common/shared/settingsTranslatorDeviation\"\nimport * as employeeService from \"@common/services/employeeService\"\n\nangular\n .module('DigiLean')\n .directive('ongoingDeviation', ['$stateParams', '$filter', '$uibModal', 'deviationService', 'actionlistService', 'modalService', 'debounce', 'authService',\n function ($stateParams, $filter, $uibModal, deviationService, actionlistService, modalService, debounce, authService) {\n return {\n templateUrl: 'ongoingDeviation.html',\n restrict: 'E',\n scope: {\n 'context': '@',\n 'viewMode': '@',\n 'appTitle': '@',\n 'appTheme': ' 0;\n }\n\n // Kanban column options\n const toggleAllKanbanColumns = function (visible) {\n scope.showNewColumn = visible;\n scope.showInProgressColumn = visible;\n scope.showResolvedColumn = visible;\n scope.showRejectedColumn = visible;\n }\n toggleAllKanbanColumns(false); // Default hidden untill filter resolves.\n\n scope.timePeriod = null;\n scope.isSettingsLoaded = false;\n // default timeperiod\n var timeSettings = {\n timeframe: \"30\",\n useDefaultTimeframes: true,\n timeframes: [],\n period: null,\n getTimePeriod: function () {\n return {\n useDefaultTimeframes: timeSettings.useDefaultTimeframes,\n timeframes: timeSettings.timeframes,\n timeframe: timeSettings.timeframe,\n period: timeSettings.period\n }\n },\n setTimePeriod: function (timeframe, period) {\n timeSettings.timeframe = timeframe;\n timeSettings.period = period;\n // debounce, to make sure not starting loading several timeframes.\n scope.options = {\n timePeriod: timeSettings.getTimePeriod()\n }\n }\n }\n\n\n scope.setTimePeriodDebounced = debounce(timeSettings.setTimePeriod, 100, false);\n // Default options\n scope.setTimePeriodDebounced(timeSettings.timeframe, timeSettings.period);\n\n scope.periodChangedHandler = function (timePeriod) {\n if (scope.timePeriod && timePeriod.period\n && scope.timePeriod.from === timePeriod.period.from\n && scope.timePeriod.to === timePeriod.period.to) {\n return;\n }\n scope.timePeriod = timePeriod;\n getDataDebounce();\n scope.settingsChanged();\n };\n\n scope.columnListChangeHandler = function (listColumns) {\n if (listColumns) {\n scope.listColumns = listColumns.listColumns;\n }\n scope.settingsChanged();\n }\n\n // ViewMode\n scope.toggleViewMode = function (viewMode) {\n scope.viewMode = viewMode;\n scope.settingsChanged();\n }\n\n // Title\n scope.$watch('appTitle', function (title) {\n if (title) {\n scope.title = title;\n }\n });\n // Theme\n scope.$watch('appTheme', function (theme) {\n if (theme) {\n scope.theme = theme;\n }\n });\n // /* FILTER * /;\n scope.filter = null;\n\n var userid = authService.getCurrentUser().userId\n var dueDate = moment().subtract(1, 'days');\n \n scope.$watch('context', function (context) {\n if (context == \"standAlone\") {\n employeeService.getUserPreference(\"DeviationOngoingFilter\").then(function (filterpreferences) {\n if (filterpreferences && filterpreferences.value) {\n var userSettings = filterpreferences.value;\n // assign settings\n // Check to see if the settings are old, timeframe will be a property on the old settings\n if (userSettings.timeframe) {\n scope.settings = {\n filter: userSettings,\n timePeriod: {\n timeframe: userSettings.timeframe,\n period: userSettings.timePeriod\n }\n }\n } \n else if (userSettings.myResponsible || userSettings.myRegistration || userSettings.project\n || userSettings.asset || userSettings.category || userSettings.deviationtype\n || userSettings.severity || userSettings.status || userSettings.area) {\n scope.settings = {\n filter: userSettings\n }\n }\n else {\n scope.settings = userSettings;\n if (userSettings.viewMode && userSettings.viewMode == \"List\") {\n scope.viewMode = userSettings.viewMode;\n }\n }\n scope.settings = translateOldDeviationSettings(scope.settings, userid, dueDate)\n }\n });\n }\n });\n\n scope.$watch('settings', function (settings) {\n // Apply other settings\n scope.isSettingsLoaded = true;\n if (settings) {\n settings = translateOldDeviationSettings(settings, userid, dueDate);\n\n if (settings.title) {\n scope.title = settings.title;\n }\n if (settings.theme) {\n scope.theme = settings.theme;\n }\n if (settings.filter) {\n scope.filter = settings.filter;\n }\n if (settings.sorting) {\n sorting = settings.sorting;\n }\n if (settings.listColumns) {\n scope.listColumns = settings.listColumns;\n scope.listColumns.forEach((c) => {\n var column = $filter('filter')(scope.allColumns, { field: c.field }, true);\n if (column && column.length >= 0) {\n column[0].visible = c.visible;\n }\n })\n }\n \n if (settings.timePeriod) {\n scope.setTimePeriodDebounced(settings.timePeriod.timeframe, settings.timePeriod.period);\n }\n }\n });\n\n\n\n var setFilterOptions = function () {\n scope.filterWithTimePeriod = {\n filter: scope.filter,\n timePeriod: scope.timePeriod.period,\n listColumns: scope.listColumns,\n sorting: sorting\n }\n }\n scope.tableParamsChanged = function (params) {\n // When sorting or page size has changed in List\n sorting = params.sorting;\n scope.settingsChanged();\n }\n\n scope.settingsChanged = function () {\n if (!scope.isSettingsLoaded) return;\n // Raise settings changeHandler\n var appSettings = {\n filter: scope.filter,\n viewMode: scope.viewMode,\n listColumns: scope.listColumns,\n sorting: sorting,\n timePeriod: {\n period: scope.timePeriod.period,\n timeframe: scope.timePeriod.timeframe\n }\n }\n if (scope.context == \"app\" && scope.settingsChangedHandler) {\n\n scope.settingsChangedHandler({ settings: appSettings });\n }\n if (scope.context == \"standAlone\" && scope.isSettingsLoaded) {\n // Handle setting internally\n employeeService.updateUserPreference(\"DeviationOngoingFilter\", appSettings).then(function () {\n\n });\n }\n }\n\n\n scope.filterChanged = function (filter) {\n scope.filter = filter;\n getDataDebounce();\n // Raise settings changed event\n scope.settingsChanged();\n };\n\n function resetData() {\n scope.data = {\n new: [],\n inprogress: [],\n resolved: [],\n rejected: []\n }\n }\n resetData()\n /* GetData */\n const getdata = async () => {\n if (!scope.timePeriod) return;\n let promises = []\n setFilterOptions();\n getTotalNumberOfDeviations();\n toggleKanbanColumnsBasedOnFilter();\n\n if (scope.showNewColumn) promises.push(getValuesByStatus(0).then(d => { scope.data.new = d; return d.total }))\n if (scope.showInProgressColumn) promises.push(getValuesByStatus(10).then(d => { scope.data.inprogress = d; return d.total }))\n if (scope.showResolvedColumn) promises.push(getValuesByStatus(20).then(d => { scope.data.resolved = d; return d.total }))\n if (scope.showRejectedColumn) promises.push(getValuesByStatus(30).then(d => { scope.data.rejected = d; return d.total }))\n\n Promise.all(promises).then(all => {\n scope.totalItems = all.reduce((a, b) => a + b, 0);\n });\n }\n\n const toggleKanbanColumnsBasedOnFilter = function () {\n if (scope.filter && Array.isArray(scope.filter)) {\n // Check if filter on status\n const found = scope.filter.find((item) => item.sourceColumn == 'status')\n if (found) {\n scope.showNewColumn = found.items.indexOf(0) > -1;\n scope.showInProgressColumn = found.items.indexOf(10) > -1\n scope.showResolvedColumn = found.items.indexOf(20) > -1\n scope.showRejectedColumn = found.items.indexOf(30) > -1\n return;\n }\n }\n toggleAllKanbanColumns(true);\n }\n\n const getDataDebounce = debounce(getdata, 500, false);\n\n const getValuesByStatus = function (status) {\n\n let filters = []\n if (scope.filter && Array.isArray(scope.filter)) {\n // copy elements to local filter by spread operator ...\n filters = [...scope.filter]\n }\n\n const statusFilter = {\n sourceColumn: \"status\",\n operator: \"InList\",\n items: [status]\n }\n filters.push(statusFilter)\n const archivedFilter = {\n sourceColumn: \"D.archivedDate\",\n operator: \"IsNull\"\n }\n filters.push(archivedFilter)\n\n const sorting = [{\n direction: \"desc\",\n property: \"lastModified\"\n }]\n\n // We will build params based on the built-in NgTableParams + our sorting array\n const tableParams = {\n page: pageNum,\n count: pageSize,\n timePeriod: scope.timePeriod.period,\n sorting,\n filters,\n }\n\n return deviationService().getOngoingByFilter(tableParams).then(function (data) {\n if(status < 20){ // status is either new or in progress (not resolved or rejected)\n data.values.forEach(value => {\n value.dateStyleClass = getDateStyle(value.dueDate)\n })\n }\n return data\n })\n }\n\n /* Paging */\n scope.pageNumChanged = function ($event) {\n pageNum = $event.detail.pageNum ? $event.detail.pageNum : 1\n getDataDebounce()\n }\n scope.pageSizeChanged = function ($event) {\n pageSize = $event.detail.pageSize ? $event.detail.pageSize : 10\n getDataDebounce()\n }\n\n const getTotalNumberOfDeviations = function () {\n deviationService().getTotalNumberOfDeviations(false).then(function (count) {\n scope.totalNumberOfDeviations = count;\n });\n }\n\n /* Drag and drop */\n let drake;\n scope.columnLoaded = function (column) {\n if (drake && drake.containers && column)\n drake.containers.push(column)\n }\n function setupDragula() {\n drake = dragula({ revertOnSpill: true }) // append containers\n drake.on(\"over\", (el, container) => {\n container.classList.add(\"hover\");\n });\n drake.on(\"out\", (el, container) => {\n container.classList.remove(\"hover\");\n });\n drake.on(\"drop\", (el, target, source, sibling) => {\n const fromStatus = source.dataset.status\n const toStatus = target.dataset.status\n const id = el.dataset.id\n if (fromStatus == toStatus)\n return false\n\n const changedStatus = {\n deviationId: id,\n status: parseInt(toStatus)\n }\n\n if (toStatus !== \"20\") {\n deviationService().updateStatus(changedStatus).then(() => { }, (err) => {\n console.log(err)\n source.appendChild(el)\n return\n })\n } else {\n checkUncompletedActionItems(changedStatus, fromStatus); \n }\n })\n }\n setupDragula();\n\n\n /* Deviation*/\n scope.openDeviation = function (deviation) {\n deviationService().get(deviation.id).then(function (deviation) {\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n templateUrl: 'fullDeviation.html',\n controller: 'fullDeviationController',\n windowClass: 'full-screen',\n resolve: {\n deviation: function () {\n return deviation;\n },\n activeTab: function () {\n return \"Info\";\n }\n }\n });\n });\n }\n if ($stateParams.id && scope.context != 'app') {\n var deviation = {\n id: parseInt($stateParams.id)\n }\n scope.openDeviation(deviation);\n }\n\n\n scope.showArchive = false;\n\n\n /* EVENT HANDLE CODE */\n\n var updateDeviation = function (deviationId) {\n checkAndReplace(scope.data.new.values, deviationId)\n checkAndReplace(scope.data.inprogress.values, deviationId)\n checkAndReplace(scope.data.resolved.values, deviationId)\n checkAndReplace(scope.data.rejected.values, deviationId)\n }\n\n function checkAndReplace(datalist, deviationId) {\n const deviation = datalist.find(s => s.id == deviationId)\n if (deviation)\n replaceDeviation(datalist, deviationId, deviation)\n }\n\n async function replaceDeviation(list, deviationId, existingDeviation) {\n const dbDeviation = await getDeviationDb(deviationId)\n const index = list.indexOf(existingDeviation)\n list.splice(index, 1, dbDeviation)\n dbDeviation.dateStyleClass = getDateStyle(dbDeviation.dueDate)\n dbDeviation.cssState = \"animated bounce\"\n removeAnmiation(dbDeviation)\n }\n\n async function getDeviationDb(id) {\n const dbDeviation = await deviationService().get(id)\n setViewFieldsFromDb(dbDeviation)\n return dbDeviation\n }\n\n function setViewFieldsFromDb(deviation) {\n if (deviation.comments && deviation.comments.length > 0)\n deviation.commentCount = deviation.comments.length\n if (deviation.asset)\n deviation.assetName = deviation.asset.name\n if (deviation.categories)\n deviation.categories = deviation.categories.map((c => {\n return {\n problemCategoryId: c.problemCategoryId,\n problemCategoryTitle: c.problemCategory.title\n }\n })); \n }\n\n function removeFromList(list, deviationId) {\n const currentDeviation = list.find(l => l.id == deviationId)\n if (!currentDeviation)\n return\n\n const index = list.indexOf(currentDeviation)\n list.splice(index, 1)\n }\n function removeAnmiation(suggestion) {\n setTimeout(function () {\n suggestion.cssState = \"\"\n }, 1000)\n }\n\n scope.subscribe(\"DeviationCreated\", function (deviation) {\n getDataDebounce();\n });\n scope.subscribe(\"DeviationConsequencesChanged\", function (deviation) {\n updateDeviation(deviation.deviationId);\n });\n\n scope.subscribe(\"DeviationUpdated\", function (deviation) {\n updateDeviation(deviation.id);\n });\n // When deviation has changed status,we'll sync the changes\n scope.subscribe(\"DeviationChangedStatus\", function (deviationStatus) {\n getDataDebounce();\n });\n\n scope.subscribe(\"DeviationSeverityChanged\", function (severityInformation) {\n updateDeviation(severityInformation.deviationId);\n });\n\n scope.subscribe(\"DeviationDeleted\", function (deviation) {\n // deviationId, status\n removeFromList(scope.data.new.values, deviation.id)\n removeFromList(scope.data.inprogress.values, deviation.id)\n removeFromList(scope.data.resolved.values, deviation.id)\n removeFromList(scope.data.rejected.values, deviation.id)\n });\n\n /* OLD CODE - MUST BE REPLACED */\n\n\n scope.newDeviation = function () {\n // Make sure task responsbile dropdown is closed if open.\n var settings = {};\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'newDeviation.html',\n controller: 'newDeviationController',\n windowClass: 'newdeviation-modal-window',\n resolve: {\n settings: function () {\n return settings;\n }\n }\n });\n };\n\n\n function getDateStyle(date) {\n if (!date) return \"\";\n // Overdue check\n\n var overdue = \"\";\n var duration = moment.duration(moment().diff(moment(date)));\n var days = duration.asDays();\n if (days > 1) {\n overdue = \"overdue\";\n }\n return overdue;\n }\n\n async function checkUncompletedActionItems(changedStatus, oldStatus) {\n \n const items = await actionlistService().getActionListForDeviation(changedStatus.deviationId)\n \n if (items && items.length > 0) {\n let notCompletedActionItems = false;\n \n for (var a = 0; a < items.length; a++) {\n if (items[a].status !== 'OK') {\n notCompletedActionItems = true;\n break;\n }\n }\n if (notCompletedActionItems) {\n \n const modalOptions = {\n closeButtonText: translateLabelInstant(\"COMMON_CANCEL\"),\n actionButtonText: translateLabelInstant(\"COMMON_CHANGE_STATUS\"),\n headerText: translateLabelInstant(\"DASHBOARD_CHANGE_STATUS\") + ' ' + changedStatus.statusText + '?',\n bodyText: translateLabelInstant(\"DEVIATION_CHANGE_STATUS_CONFIRMATION\")\n };\n\n try {\n await modalService.show({}, modalOptions)\n // answered OK\n return deviationService().updateStatus(changedStatus)\n }\n catch(er) {}\n // answered cancel\n const rollbackStatus = {\n deviationId: changedStatus.deviationId,\n status: parseInt(oldStatus)\n }\n return deviationService().updateStatus(rollbackStatus)\n }\n }\n deviationService().updateStatus(changedStatus)\n }\n\n \n\n scope.selectColumn = function (column) {\n column.visible = !column.visible;\n scope.listColumns = scope.allColumns;\n if (scope.context == \"app\") {\n scope.settingsChanged();\n }\n setFilterOptions();\n }\n\n }\n };\n }]);\n","import * as dashboardService from \"@common/services/dashboardService\"\nimport { getDefaultAppStyle, getDefaultAppTheme, calcDefaultAppFontSize } from \"@common/components/dashboard/designer/common/appStyleService\"\n\nangular\n .module('DigiLean')\n .directive(\"ongoingDeviationApp\", ['debounce', \n function (debounce) {\n return {\n templateUrl: 'ongoingDeviationApp.html',\n restrict: 'E',\n scope: {\n 'isAdminMode': '=',\n 'settings': '=',\n 'settingsChangeHandler': '&',\n 'layoutFactor': '<'\n },\n link: function (scope, elem, attrs) {\n\n // Default settings\n scope.title = \"\";\n scope.filter = null;\n scope.timePeriod = null;\n scope.theme = getDefaultAppTheme()\n scope.viewMode = \"Kanban\";\n\n // Dashboard Settings handling\n scope.$watch('settings', function (settings) {\n scope.settings = settings;\n if (scope.settings) {\n if (scope.settings.title) {\n scope.title = scope.settings.title;\n }\n if (scope.settings.theme) {\n scope.theme = scope.settings.theme;\n }\n if (scope.settings.viewMode) {\n scope.viewMode = scope.settings.viewMode;\n }\n if (scope.settings.listColumns) {\n scope.listColumns = scope.settings.listColumns;\n }\n if (scope.settings.timePeriod) {\n scope.timePeriod = scope.settings.timePeriod;\n }\n if (scope.settings.sorting) {\n scope.sorting = scope.settings.sorting;\n }\n scope.filter = settings.filter;\n }\n resizeDebounced();\n \n scope.appSettings = {\n viewMode: scope.viewMode,\n filter: scope.filter,\n listColumns: scope.listColumns,\n timePeriod: scope.timePeriod,\n sorting: scope.sorting\n };\n\n });\n \n scope.updateSettings = function () {\n if (scope.isAdminMode == false) return;\n var componentSettings = {\n title: scope.title,\n theme: scope.theme,\n filter: scope.filter,\n listColumns: scope.listColumns,\n viewMode: scope.viewMode,\n timePeriod: scope.timePeriod,\n sorting: scope.sorting\n };\n scope.settingsChangeHandler({ settings: componentSettings });\n }\n\n scope.titleChangedEvent = function($event) {\n scope.title = $event.detail\n scope.updateSettings()\n }\n \n scope.themeChangedEvent = function($event) {\n scope.theme = $event.detail\n scope.updateSettings()\n }\n \n scope.appStyle = getDefaultAppStyle()\n function calcStyles() {\n scope.appStyle[\"font-size\"] = calcDefaultAppFontSize(scope.layoutFactor)\n }\n calcStyles()\n \n\n scope.settingsChanged = function (settings) {\n if (!scope.isAdminMode) return;\n if (settings.viewMode) {\n scope.viewMode = settings.viewMode;\n }\n if (settings.timePeriod) {\n scope.timePeriod = settings.timePeriod;\n }\n if (settings.filter) {\n scope.filter = settings.filter;\n }\n if (settings.listColumns) {\n scope.listColumns = settings.listColumns;\n }\n if (settings.sorting) {\n scope.sorting = settings.sorting;\n }\n scope.updateSettings(); \n }\n \n scope.$on(\"widget-resized\", function (event, args) {\n resizeDebounced();\n });\n\n\n function resize() {\n var host = $(elem).closest(\".grid-stack-item-content\");\n if (host.length == 0)\n host = $(elem).closest(\".modal-body\")\n \n if (host.length == 0) return;\n var height = host.height();\n\n // Find header to subtract from new height\n // var header = $(elem).find(\".ibox-title\");\n // var headerHeight = header.height() + 20;\n var headerHeight = 0;\n var container = $(elem).find(\".ongoing-deviation-container\");\n if (container.length === 0) return;\n $(container).css(\"height\", (height - headerHeight));\n }\n const resizeDebounced = debounce(resize, 200, false)\n resizeDebounced();\n }\n }\n }]);\n","/*\n@param {object} settings - task\n@param {object} settings - assetId\n@param {object} settings - severity\n@param {object} settings - deviationTypeId\n@param {object} settings - incidentDate\n\nTODO: candidate for typescript\n*/\n\nimport { getUserProfile } from \"@common/stores/userStore\"\nimport * as customerService from \"@common/services/customers/customerService\"\nimport * as assetService from \"@common/services/assetService\"\n\nangular.module(\"DigiLean\").controller('newDeviationController', ['$scope', '$filter', '$translate', '$uibModalInstance', 'projectService', 'navigationService', 'areaService', 'deviationService', 'authService', 'settings', 'dataListService',\n function ($scope, $filter, $translate, $uibModalInstance, projectService, navigationService, areaService, deviationService, authService, settings, dataListService) {\n $scope.isAdmin = authService.hasRole(\"Admin\") || authService.hasRole(\"DeviationAdmin\");\n $scope.configuration = {};\n $scope.deviation = {\n evaluationText: \"\",\n deviationTypeId: settings.deviationTypeId\n };\n $scope.selectedCategories = [];\n $scope.selectedArea = null;\n $scope.selectedConsequence = {};\n\n $scope.customfields = [];\n $scope.selectedDataListItem = null;\n\n $scope.steps = [];\n $scope.currentStep = {};\n $scope.settings = settings;\n $scope.users = [];\n $scope.uploadedFiles = [];\n\n $scope.mytime = null;\n $scope.hstep = 1;\n $scope.mstep = 5;\n $scope.options = {\n hstep: [1, 2, 3],\n mstep: [1, 5, 10, 15, 25, 30]\n };\n\n var severityColors = [\"#c0c0c0\", \"#1872ab\", \"#FFCE54\", \"#DA4453\"];\n $scope.severityLowDescription = \"\";\n $scope.severityMediumDescription = \"\";\n $scope.severityHighDescription = \"\";\n $scope.severityNotSpecifiedDescription = \"\";\n \n \n\n $scope.showTime = false;\n $scope.showArea = false;\n $scope.showProject = false;\n $scope.hasProject = navigationService().hasModule(\"PROJECT\");\n $scope.project = null;\n $scope.projects = [];\n // if page is refreshed we need to refresh the access to modules\n $scope.subscribe(\"UserAuthenticatedAndReady\", function (profile) {\n $scope.hasProject = navigationService().hasModule(\"PROJECT\");\n loadProjects();\n });\n\n $scope.$watchCollection('selectedCategories', function (newCol, oldCol, scope) {\n if (!$scope.categories) return\n if ($scope.categories.length == 1 && newCol.length == 1) return\n if (newCol.length != oldCol.length) {\n $scope.validate();\n }\n });\n\n var deviationTypeId = $scope.settings.deviationTypeId;\n deviationService().getDeviationTypeConfiguration(deviationTypeId).then(function (configuration) {\n $scope.configuration = configuration;\n checkFields($scope.configuration.fields);\n $scope.categories = $scope.configuration.categories;\n setSingelCategory();\n $scope.consequences = $scope.configuration.consequences;\n $scope.problemReasons = $scope.configuration.causes;\n $scope.severities = $scope.configuration.severities;\n setSeverityDescription();\n if($scope.deviation){\n $scope.changeSeverity($scope.deviation.severity);\n }\n });\n\n function setSingelCategory(){\n if($scope.categories && $scope.categories.length == 1){\n $scope.selectedCategories.push($scope.categories[0]);\n }\n }\n\n function setSeverityDescription(){\n if($scope.severities){\n for(var i=0; i< $scope.severities.length; i++){\n if($scope.severities[i].severity == 0){\n $scope.severityNotSpecifiedDescription = $scope.severities[i].customLanguageLabel.label;\n } else if($scope.severities[i].severity == 1){\n $scope.severityLowDescription = $scope.severities[i].customLanguageLabel.label;\n } else if($scope.severities[i].severity == 2){\n $scope.severityMediumDescription = $scope.severities[i].customLanguageLabel.label;\n } else if($scope.severities[i].severity == 3){\n $scope.severityHighDescription = $scope.severities[i].customLanguageLabel.label;\n }\n } \n }\n }\n \n $scope.descriptionChanged = function (content) {\n $scope.deviation.text = content;\n }\n\n function checkFields(validFields) {\n if (validFields) {\n for (var f = 0; f < validFields.length; f++) {\n switch (validFields[f].type) {\n case \"PROJECT\":\n loadProjects();\n break;\n case \"AREA\":\n loadAreas();\n break;\n case \"DEVIATION_INCIDENT_TIME\":\n $scope.showTime = true;\n break;\n case \"list\":\n setCustomList(validFields[f]);\n \n break;\n default:\n $scope.customfields.push(validFields[f]);\n }\n }\n }\n }\n\n function setCustomList(field){\n var listOptions = {includeDeletedItems:false};\n dataListService().getItems(field.dataListId, listOptions).then(function (list) {\n field.datalistelements = list;\n $scope.customfields.splice(field.sortOrder, 0, field);\n });\n }\n\n function loadProjects() {\n if(!$scope.projects || $scope.projects.length == 0){\n projectService().getOngoingProjects().then(function (projects) {\n $scope.projects = projects;\n $scope.projectmodel = { projectId: $scope.deviation.projectId,\n projects: $scope.projects}\n $scope.showProject = true;\n });\n }\n }\n\n $scope.projectChangeHandler = function (projectinfo) {\n if (projectinfo) {\n $scope.deviation.projectId = projectinfo.project.id;\n } else {\n $scope.deviation.projectId = null;\n } \n }\n\n function loadAreas() {\n areaService().getList().then(function (areas) {\n $scope.areas = areas;\n $scope.showArea = true;\n });\n }\n\n $scope.incidentDateChanged = function($event) {\n const date = $event.originalEvent.detail\n $scope.deviation.incidentDate = date\n }\n\n $scope.changeSeverity = function (severity) {\n $scope.deviation.severity = severity;\n $scope.background = severityColors[$scope.deviation.severity];\n $scope.severityDescription = \"\";\n if($scope.severities){\n var selectedSeverity = $filter('filter')($scope.severities, { severity: severity }, true)[0];\n if(selectedSeverity){\n $scope.severityDescription = selectedSeverity.customLanguageLabel.label;\n } \n }\n };\n\n function reset() {\n $scope.datetimepickerOpen = function () {\n $scope.datetimePicker.opened = true;\n }\n $scope.datetimePicker = {\n opened: false\n };\n\n $scope.deviation.incidentDate = moment().toDate();\n if($scope.settings.incidentDate){\n $scope.deviation.incidentDate = $scope.settings.incidentDate;\n }\n $scope.deviation.incidentDate.setHours(0);\n $scope.deviation.incidentDate.setMinutes(0);\n\n\n const currentUser = getUserProfile()\n $scope.users.push(currentUser);\n $scope.user = currentUser;\n $scope.user.fullName = $scope.user.firstName + \" \" + $scope.user.lastName;\n $scope.deviation.createdByUserId = $scope.user.userId;\n $scope.deviation.createdByUser = $scope.user.fullName;\n\n $scope.currentStep = $scope.steps[0];\n if ($scope.settings.severity) {\n $scope.changeSeverity($scope.settings.severity);\n } else {\n $scope.changeSeverity(0);\n }\n\n if ($scope.settings.task) {\n $scope.task = $scope.settings.task;\n $scope.deviation.boardTaskId = $scope.task.taskId;\n $scope.deviation.title = $scope.settings.task.title;\n $scope.deviation.text = $scope.settings.task.text; //TODO: is this needed?\n }\n }\n reset();\n\n $scope.setTime = function (time) {\n $scope.deviation.incidentDate.setHours(time.getHours());\n $scope.deviation.incidentDate.setMinutes(time.getMinutes());\n };\n\n $scope.areaChanged = function (area) {\n $scope.deviation.areaId = area.id;\n };\n\n $scope.changeRegisteredBy = function (user) {\n $scope.user = user;\n if (user && user.userId) {\n $scope.deviation.createdByUserId = $scope.user.userId;\n $scope.deviation.createdByUser = $scope.user.fullName;\n } else {\n $scope.deviation.createdByUserId = null;\n $scope.deviation.createdByUser = null;\n } \n };\n\n assetService.getAllAssets().then(function (assets) {\n $scope.assets = assets;\n for (var k = 0; k < $scope.assets.length; k++) {\n $scope.assets[k].cssLevel = \"level-\" + $scope.assets[k].level; \n }\n\n if ($scope.settings.assetId) {\n $scope.deviation.assetId = $scope.settings.assetId;\n $scope.deviation.followUpAssetId = $scope.settings.assetId;\n }\n if($scope.isAdmin){\n $scope.assetmodel = { assetId: $scope.settings.assetId,\n assets: $scope.assets};\n } else {\n assetService.getList().then(function (myAssets) {\n $scope.assetmodel = { assetId: $scope.settings.assetId,\n assets: myAssets};\n });\n } \n $scope.followupassetmodel = { assetId: $scope.settings.assetId,\n assets: $scope.assets};\n });\n\n\n $scope.steps.push({ id: 'STEP_1', title: $translate.instant(\"COMMON_DESCRIPTION\") });\n $scope.steps.push({ id: 'STEP_2', title: $translate.instant(\"COMMON_CATEGORIES\") });\n $scope.steps.push({ id: 'STEP_3', title: $translate.instant(\"DEVIATION_CONSEQUENCE\") });\n $scope.steps.push({ id: 'STEP_4', title: $translate.instant(\"DEVIATION_CAUSE\") });\n $scope.steps.push({ id: 'STEP_5', title: $translate.instant(\"DEVIATION_HANDLING\") });\n $scope.currentStep = $scope.steps[0];\n\n\n $scope.modifyReason = function (reason) {\n if ($scope.deviation.problemReasons) {\n var i = $scope.deviation.problemReasons.indexOf(reason.id);\n if (i == -1) { //reason is not allready selected\n $scope.deviation.problemReasons.push(reason.id);\n } else {\n $scope.deviation.problemReasons.splice(i);\n }\n } else {\n $scope.deviation.problemReasons = [];\n $scope.deviation.problemReasons.push(reason.id);\n }\n }\n\n $scope.modifyConsequence = function (consequence) {\n if ($scope.deviation.consequences) {\n var match = $filter('filter')($scope.deviation.consequences, { lossTypeId: consequence.id }, true);\n if (match.length === 1) {\n if (consequence.checked) {\n match[0].amount = consequence.amount;\n } else {\n consequence.amount = null;\n var index = $scope.deviation.consequences.indexOf(match[0]);\n $scope.deviation.consequences.splice(index);\n }\n } else { //consequences is not allready selected\n let deviationConsequence = {\n lossTypeId: consequence.id,\n amount: consequence.amount,\n unit: consequence.unit\n };\n $scope.deviation.consequences.push(deviationConsequence);\n }\n } else {\n $scope.deviation.consequences = [];\n let deviationConsequence = {\n lossTypeId: consequence.id,\n amount: consequence.amount,\n unit: consequence.unit\n };\n $scope.deviation.consequences.push(deviationConsequence);\n }\n };\n\n $scope.setConsequence = function (consequence) {\n if (consequence.amount) {\n consequence.checked = true;\n \n var valueString = consequence.amount.toString();\n var valuereplacecomma = valueString.replace(/,/g, '.');\n consequence.amount = valuereplacecomma;\n if (consequence.amount == '' || Number(consequence.amount)) {\n consequence.notvalidnumber = false;\n $scope.modifyConsequence(consequence);\n } else {\n consequence.notvalidnumber = true;\n } \n } else {\n consequence.notvalidnumber = false;\n }\n };\n\n $scope.selectStep = function (step) {\n $scope.currentStep = step;\n };\n\n $scope.assetChangeHandler = function (assetinfo) {\n if (assetinfo) {\n $scope.deviation.assetId = assetinfo.asset.id;\n customerService.getUsersForAsset(assetinfo.asset.id).then(function (assetUsers) {\n $scope.users = assetUsers;\n angular.forEach($scope.users, function (user, key) {\n user.fullName = user.firstName + \" \" + user.lastName;\n });\n if ($scope.user && $scope.user.userId) {\n var match = $filter('filter')($scope.users, { userId: $scope.user.userId });\n if (match.length > 0) {\n $scope.user = match[0];\n }\n }\n });\n } \n }\n\n $scope.followUpAssetChangeHandler = function (assetinfo) {\n if (assetinfo) {\n $scope.deviation.followUpAssetId = assetinfo.asset.id;\n } \n }\n\n // Attachments\n $scope.showAttachments = false;\n $scope.toggleShowAttachments = function (show) {\n $scope.showAttachments = show;\n };\n\n // Handling\n $scope.isResolved = false;\n $scope.resolveDeviation = function () {\n $scope.isResolved = !$scope.isResolved;\n if ($scope.isResolved) {\n $scope.deviation.status = 20;\n } else {\n $scope.deviation.status = 0;\n $scope.deviation.evaluationText = \"\";\n }\n };\n\n $scope.nextStep = function () {\n var currentIndex = $scope.steps.indexOf($scope.currentStep);\n if ((currentIndex + 1) < $scope.steps.length) {\n $scope.selectStep($scope.steps[currentIndex + 1]);\n }\n };\n $scope.previousStep = function () {\n var currentIndex = $scope.steps.indexOf($scope.currentStep);\n if (currentIndex > 0) {\n $scope.selectStep($scope.steps[currentIndex - 1]);\n }\n };\n\n $scope.isValid = true;\n $scope.validationMessages = [];\n $scope.validate = function () {\n // Rules\n $scope.validationMessages = [];\n // Has categories\n if ($scope.selectedCategories.length == 0) {\n $scope.validationMessages.push($translate.instant(\"DEVIATION_VALIDATION_CATEGORIES_REQUIRED\"));\n }\n\n //Check mandatory custom fields\n if(mandatoryFieldsMissing()){\n $scope.validationMessages.push($translate.instant(\"ADMIN_DATA_FIELD_MISSING\"));\n }\n // If deviation closed, we need an evaluation test\n if ($scope.isResolved && $scope.deviation.evaluationText.length == 0) {\n // evaluationText\n // statusDisplayText: translations.DEVIATION_RESOLVED,\n // statusDatabase: 20\n $scope.validationMessages.push($translate.instant(\"DEVIATION_VALIDATION_EVALUATION_TEXT_REQUIRED\"));\n }\n\n if ($scope.validationMessages.length > 0) {\n $scope.isValid = false;\n } else {\n $scope.isValid = true;\n }\n return $scope.isValid;\n };\n\n $scope.checkIfValidate = function(){\n // check if error message should be updated and the form is valid\n if(!$scope.isValid){ //the form has been previous validated as invalid\n $scope.validate();\n }\n }\n\n function mandatoryFieldsMissing(){\n for(let index = 0; index < $scope.customfields.length; index++){\n if($scope.customfields[index].isMandatory){\n if($scope.customfields[index].type == 'list'){\n if(!($scope.customfields[index].selectedDataListItem && $scope.customfields[index].selectedDataListItem.id)){\n return true;\n }\n } else if($scope.customfields[index].type == 'number'){\n if(isNaN($scope.customfields[index].value)){\n return true;\n }\n } else if($scope.customfields[index].type == 'text'){\n if(!$scope.customfields[index].value){\n return true;\n }\n }\n }\n\n }\n return false;\n }\n\n function saveCustomFieldsValues(deviationId){\n if(deviationId){\n var deviationtypefieldvalues = [];\n for(let index = 0; index < $scope.customfields.length; index++){\n if($scope.customfields[index].type == 'list'){\n if($scope.customfields[index].selectedDataListItem && $scope.customfields[index].selectedDataListItem.id){\n var valueData = {\n DeviationId: deviationId,\n DeviationTypeFieldId: $scope.customfields[index].id,\n Value: $scope.customfields[index].selectedDataListItem.id\n }\n deviationtypefieldvalues.push(valueData);\n }\n } else {\n var valueData = {\n DeviationId: deviationId,\n DeviationTypeFieldId: $scope.customfields[index].id,\n Value: $scope.customfields[index].value\n }\n deviationtypefieldvalues.push(valueData);\n }\n }\n if(deviationtypefieldvalues.length > 0 ){\n deviationService().addCustomFields(deviationId, deviationtypefieldvalues).then(function (result) {\n });\n }\n\n }\n }\n\n $scope.isSaving = false;\n $scope.addDeviation = function () {\n if (!$scope.validate()) return;\n\n $scope.isSaving = true;\n $scope.deviation.files = $scope.uploadedFiles;\n $scope.deviation.categories = [];\n for (let index = 0; index < $scope.selectedCategories.length; index++) {\n const element = $scope.selectedCategories[index];\n $scope.deviation.categories.push({\n problemCategoryId: element.id\n });\n }\n deviationService().addDeviation($scope.deviation).then(function (createdDeviation) {\n saveCustomFieldsValues(createdDeviation.id);\n if ($scope.settings.task) {\n $scope.publish(\"SendTaskDeviationCreated\", $scope.settings.task);\n }\n $scope.isSaving = false;\n $uibModalInstance.close(createdDeviation.id);\n });\n };\n\n $scope.cancel = function () {\n $scope.isSaving = false;\n $uibModalInstance.dismiss('cancel');\n };\n\n $scope.deviation.isAnonymous = false;\n }]);\n","import { getCompanySetting } from \"@common/stores/companySettingsStore\"\nimport * as customerService from \"@common/services/customers/customerService\"\nimport * as displayService from \"@common/services/displayService\"\nimport envConfig from \"@common/envConfig\";\n\nangular.module('DigiLean').factory('deviationService', ['$http', '$translate', 'userProvider',\n function ($http, $translate, userProvider) {\n\n function deviationService() {\n var resource = \"/deviation\";\n var resourceUrl = envConfig.webApiUrl + resource;\n\n return {\n getNextStatus: function (currentStatus) {\n currentStatus = currentStatus.toString();\n if (currentStatus === \"0\") return \"20\"; // New to Resolved\n if (currentStatus === \"10\") return \"20\"; // IN progress to Resolved\n if (currentStatus === \"20\") return \"30\"; // Resolved to Rejected\n if (currentStatus === \"30\") return \"10\"; // Rejected to New\n return \"0\";\n },\n getSeverityColor(severity) {\n switch (severity) {\n case 1:\n return \"#1872ab\";\n case 2:\n return \"#FFCE54\";\n case 3:\n return \"#DA4453\";\n default:\n return \"#2A2E36\";\n }\n },\n /* If the sortable identificator is modified, remember to update the OngoingDeviationFilterSettings.cs in backend */\n getAllColumns: function (renderValue) {\n return [\n {\n title: $translate.instant(\"COMMON_STATUS\"),\n field: 'status',\n visible: true,\n sortable: 'status',\n getValue: renderValue,\n dataType: \"text\"\n },\n {\n title: $translate.instant(\"COMMON_TITLE\"),\n field: 'title',\n visible: true,\n sortable: 'title',\n getValue: renderValue,\n dataType: \"text\"\n },\n {\n title: $translate.instant(\"DEVIATION_SEVERITY\"),\n field: 'severity',\n visible: true,\n sortable: 'severity',\n getValue: renderValue,\n dataType: \"int\"\n },\n {\n title: $translate.instant(\"COMMON_DEVIATION_TYPE\"),\n field: 'deviationType',\n visible: true,\n sortable: 'deviationType',\n getValue: renderValue,\n dataType: \"text\"\n },\n {\n title: $translate.instant(\"COMMON_REPORTED_BY\"),\n field: 'assetName',\n sortable: 'assetName',\n getValue: renderValue,\n visible: true,\n dataType: \"text\"\n },\n {\n title: $translate.instant(\"DEVIATION_FOLLOW_UP_GROUP\"),\n field: 'followupAssetName',\n sortable: 'followupAssetName',\n getValue: renderValue,\n visible: true,\n dataType: \"text\"\n },\n {\n title: $translate.instant(\"COMMON_RESPONSIBLE\"),\n field: 'owner',\n sortable: 'owner',\n getValue: renderValue,\n visible: true,\n dataType: \"text\"\n },\n {\n title: $translate.instant(\"COMMON_DUE_DATE\"),\n field: 'dueDate',\n visible: true,\n sortable: 'dueDate',\n getValue: renderValue,\n dataType: \"date\"\n },\n {\n title: $translate.instant(\"DEVIATION_INCIDENT_DATE\"),\n field: 'incidentDate',\n visible: true,\n sortable: 'incidentDate',\n getValue: renderValue,\n dataType: \"date\"\n },\n {\n title: $translate.instant(\"DEVIATION_RESOLVED\"),\n field: 'statusImplementedDate',\n visible: true,\n sortable: 'statusImplementedDate',\n getValue: renderValue,\n dataType: \"date\"\n },\n {\n title: $translate.instant(\"COMMON_LAST_CHANGED\"),\n field: 'lastModified',\n visible: true,\n sortable: 'lastModified',\n getValue: renderValue,\n dataType: \"date\"\n },\n ];\n },\n getTableValues: function (tableParams) {\n var url = resourceUrl + \"/getTableValues/\";\n return $http.post(url, tableParams).then(function (result) {\n return result.data;\n });\n },\n\n getOngoingByFilter: function (filter) {\n var url = resourceUrl + \"/getOngoingByFilter/\";\n return $http.post(url, filter).then(function (result) {\n return result.data;\n });\n },\n\n getActionTableValues: function (tableParams) {\n var url = resourceUrl + \"/getActionTableValues/\";\n return $http.post(url, tableParams).then(function (result) {\n return result.data;\n });\n },\n\n getTotalNumberOfDeviations: function (includeArchived) {\n if (!includeArchived) includeArchived = false;\n var url = resourceUrl + \"/getTotalNumberOfDeviations?archived=\" + includeArchived;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n getConsequenceUnit: function () {\n getCompanySetting(\"currency\").then(function (setting) {\n var currency = customerService.getDefaultCurrency()\n if (setting) {\n currency = setting\n }\n var units = [\n {\n id: 'hour',\n name: $translate.instant('COMMON_HOURS')\n },\n {\n id: currency,\n name: currency\n }\n ];\n return units;\n });\n\n },\n getConsequenceUnitLabel: function (id) {\n id = id.toString().toUpperCase();\n if (id === \"HOUR\") return $translate.instant('COMMON_HOURS');\n return id;\n },\n\n getNoEvaluationStatus: function (options) {\n var url = resourceUrl + \"/GetNoEvaluationStatus\";\n return $http.post(url, options).then(function (result) {\n return result.data;\n });\n },\n canEdit: function (id) {\n var url = resourceUrl + \"/canedit/\" + id;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n\n getNoProjectDeviationPerStatus: function (projectId) {\n var url = resourceUrl + \"/getNoProjectDeviationPerStatus/\" + projectId;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n getDeviationsForAssetWithActionItems: function (assetId) {\n var url = resourceUrl + \"/getDeviationsForAssetWithActionItems/\" + assetId;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n updateResponsible: function (data) {\n resourceUrl = resourceUrl + \"/UpdateResponsible/\";\n return $http.put(resourceUrl, data).then(function (result) {\n return result.data;\n });\n },\n\n getPermissionsForType: function(deviationTypeId) {\n var url = envConfig.webApiUrl + \"/deviationadmin/GetPermissionsForType/\" + deviationTypeId;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n updateDeviationTypePermissions: function (fieldId, units) {\n var url = envConfig.webApiUrl + \"/deviationadmin/updateDeviationTypePermissions/\" + fieldId;\n return $http.put(url, units).then(function (result) {\n return result.data;\n });\n },\n getFieldsForType: function(deviationTypeId) {\n var url = envConfig.webApiUrl + \"/deviationadmin/getFieldsForType/\" + deviationTypeId;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n\n updateCustomFieldTranslationLabel: function (fieldId, item) {\n var url = envConfig.webApiUrl + \"/deviationadmin/UpdateCustomFieldTranslationLabel/\" + fieldId;\n return $http.put(url, item).then(function (result) {\n return result.data;\n });\n },\n getAllCustomFields: function() {\n\n var url = envConfig.webApiUrl + \"/deviationadmin/getAllCustomFields/\";\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n addDeviationTypeField: function (field) {\n var url = envConfig.webApiUrl + \"/deviationadmin/AddDeviationTypeField/\" + field.deviationTypeId;\n return $http.post(url, field).then(function (result) {\n return result.data;\n });\n },\n addDeviationCustomField: function (field) {\n var url = envConfig.webApiUrl + \"/deviationadmin/AddDeviationCustomField/\";\n return $http.post(url, field).then(function (result) {\n return result.data;\n });\n },\n deleteDeviationTypeField: function (fieldId) {\n var url = envConfig.webApiUrl + \"/deviationadmin/deleteDeviationTypeField/\" + fieldId;\n return $http.delete(url).then(function (result) {\n return result.data;\n });\n },\n addCustomFields(deviationId, deviationtypefieldvalues) {\n var url = resourceUrl + \"/\" + deviationId + \"/addCustomFields/\";\n return $http.post(url, deviationtypefieldvalues).then(function (result) {\n return result.data;\n });\n },\n deleteDeviationCustomField: function (id) {\n var url = envConfig.webApiUrl + \"/deviationadmin/DeleteDeviationCustomField/\" + id;\n return $http.delete(url).then(function (result) {\n return result.data;\n });\n },\n getCustomFields: function (deviationId) {\n var url = resourceUrl + \"/getCustomFields/\" + deviationId;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n updateCustomFields: function (id, fields) {\n var url = resourceUrl + \"/updateCustomFields/\" + id;\n return $http.put(url, fields).then(function (result) {\n return result.data;\n });\n },\n updateDeviationTypeField: function (id, field) {\n var url = envConfig.webApiUrl + \"/deviationadmin/UpdateDeviationTypeField/\" + id;\n return $http.put(url, field).then(function (result) {\n return result.data;\n });\n },\n updateDeviationCustomField: function (id, field) {\n var url = envConfig.webApiUrl + \"/deviationadmin/UpdateDeviationCustomField/\" + id;\n return $http.put(url, field).then(function (result) {\n return result.data;\n });\n },\n updateItemsSortOrder: function (id, listSorting) {\n var url = envConfig.webApiUrl + \"/deviationadmin/updateItemsSortOrder/\" + id;\n return $http.put(url, listSorting).then(function (result) {\n return result.data;\n });\n },\n getConsequencesForType: function (deviationTypeId) {\n var url = envConfig.webApiUrl + \"/deviationadmin/getConsequencesForType/\" + deviationTypeId;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n getSeveritiesForType: function (deviationTypeId) {\n var url = envConfig.webApiUrl + \"/deviationadmin/getSeveritiesForType/\" + deviationTypeId;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n updateDeviationSeverityTranslation: function (item) {\n var url = envConfig.webApiUrl + \"/deviationadmin/updateDeviationSeverityTranslation/\";\n return $http.put(url, item).then(function (result) {\n return result.data;\n });\n },\n addDeviationTypeConsequence: function (field) {\n var url = envConfig.webApiUrl + \"/deviationadmin/AddDeviationTypeConsequence\";\n return $http.post(url, field).then(function (result) {\n return result.data;\n });\n },\n deleteDeviationTypeConsequence: function (fieldId) {\n var url = envConfig.webApiUrl + \"/deviationadmin/deleteDeviationTypeConsequence/\" + fieldId;\n return $http.delete(url).then(function (result) {\n return result.data;\n });\n },\n\n getCategoriesForType: function (deviationTypeId) {\n var url = envConfig.webApiUrl + \"/deviationadmin/getCategoriesForType/\" + deviationTypeId;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n addDeviationTypeCategory: function (item) {\n var url = envConfig.webApiUrl + \"/deviationadmin/AddDeviationTypeCategory\";\n return $http.post(url, item).then(function (result) {\n return result.data;\n });\n },\n deleteDeviationTypeCategory: function (id) {\n var url = envConfig.webApiUrl + \"/deviationadmin/deleteDeviationTypeCategory/\" + id;\n return $http.delete(url).then(function (result) {\n return result.data;\n });\n },\n\n getCausesForType: function (deviationTypeId) {\n var url = envConfig.webApiUrl + \"/deviationadmin/getCausesForType/\" + deviationTypeId;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n addDeviationTypeCause: function (field) {\n var url = envConfig.webApiUrl + \"/deviationadmin/AddDeviationTypeCause\";\n return $http.post(url, field).then(function (result) {\n return result.data;\n });\n },\n deleteDeviationTypeCause: function (fieldId) {\n var url = envConfig.webApiUrl + \"/deviationadmin/deleteDeviationTypeCause/\" + fieldId;\n return $http.delete(url).then(function (result) {\n return result.data;\n });\n },\n\n getSeverityText: function (severityId) {\n switch (severityId) {\n case \"1\":\n return $translate.instant('COMMON_LOW');\n case \"2\":\n return $translate.instant('COMMON_MEDIUM');\n case \"3\":\n return $translate.instant('COMMON_HIGH');\n default:\n return $translate.instant('COMMON_NOT_SPECIFIED');\n }\n },\n\n getAllSeverities: function () {\n const severities = [\"1\", \"2\", \"3\", \"\"];\n return severities.map(severity => ({\n label: deviationService().getSeverityText(severity),\n severity: severity\n }));\n },\n\n addDeviation: function (deviation) {\n var url = resourceUrl;\n return $http.post(url, deviation).then(function (result) {\n return result.data;\n });\n },\n archive: function (id) {\n var url = resourceUrl + \"/\" + id + \"/archive\";\n return $http.put(url).then(function (result) {\n return result.data;\n });\n },\n unArchive: function (id) {\n var url = resourceUrl + \"/\" + id + \"/unArchive\";\n return $http.put(url).then(function (result) {\n return result.data;\n });\n },\n updateStatus: function (status) {\n var url = resourceUrl + \"/\" + status.deviationId + \"/updatestatus\";\n return $http.put(url, status).then(function () {\n return;\n });\n },\n getTranslationsWithConsequences: function () {\n var url = envConfig.webApiUrl + \"/deviationadmin/getTranslationsWithConsequences\";\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n\n updateConsequences: function (consequences) {\n var url = resourceUrl + \"/\" + consequences.deviationId + \"/updateConsequences\";\n return $http.put(url, consequences).then(function () {\n return;\n });\n },\n\n get: function (id, showNoAccessPopup = true) {\n var url = resourceUrl + \"/\" + id;\n if (showNoAccessPopup) {\n return $http.get(url).then(function (result) {\n return result.data;\n },\n function (response) {\n if (response.status === 404) {\n displayService.showNoAccessPopup();\n }\n });\n }\n \n else {\n return $http.get(url).then(function (result) {\n return result.data;\n });\n }\n },\n\n getUserListForDeviation: function (id) {\n var url = resourceUrl + \"/getUserListForDeviation/\" + id;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n\n delete: function (id) {\n var url = resourceUrl + \"/\" + id;\n return $http.delete(url).then(function (result) {\n return result.data;\n });\n },\n\n addComment: function (deviationId, comment) {\n var url = resourceUrl + \"/\" + deviationId + \"/AddComment\";\n return $http.post(url, comment).then(function (result) {\n return result.data;\n });\n },\n\n getComments: function (deviationId) {\n var url = resourceUrl + \"/getComments/\" + deviationId;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n deleteComment: function (deviationId, commentId) {\n var url = resourceUrl + \"/\" + deviationId + \"/deleteComment/\" + commentId;\n return $http.delete(url).then(function (result) {\n return result.data;\n });\n },\n\n addAttachment: function (deviationId, fileInfo) {\n var url = resourceUrl + \"/\" + deviationId + \"/addAttachment\";\n return $http.post(url, fileInfo).then(function (result) {\n return result.data;\n });\n },\n\n deleteAttachment: function (deviationId, attachmentId) {\n var url = resourceUrl + \"/\" + deviationId + \"/deleteAttachment/\" + attachmentId;\n return $http.delete(url).then(function (result) {\n return result.data;\n });\n },\n\n getList: function () {\n var url = resourceUrl;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n\n getListByStatus: function (status, timePeriod) {\n var url = resourceUrl + \"/getbystatus/\" + status;\n return $http.post(url, timePeriod).then(function (result) {\n return result.data;\n });\n },\n\n getTranslationsWithProblemCategories: function () {\n var url = envConfig.webApiUrl + \"/deviationadmin/getTranslationsWithProblemCategories\";\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n\n getProblemCategories: function () {\n var url = resourceUrl + \"/getProblemCategories\";\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n getProblemCategoriesWithDeviation: function () {\n var url = resourceUrl + \"/getProblemCategoriesWithDeviation\";\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n\n saveCategoryTree: function (categorytree) {\n var url = envConfig.webApiUrl + \"/deviationadmin/saveCategoryTree\";\n return $http.put(url, categorytree).then(function (result) {\n return result.data;\n });\n },\n\n createProblemCategory: function (problemCategory) {\n var url = envConfig.webApiUrl + \"/deviationadmin/addProblemCategory\";\n return $http.post(url, problemCategory).then(function (result) {\n return result.data;\n });\n },\n updateProblemCategory: function (problemCategory) {\n var url = envConfig.webApiUrl + \"/deviationadmin/updateProblemCategory\";\n return $http.put(url, problemCategory).then(function (result) {\n return result.data;\n });\n },\n\n deleteProblemCategory: function (id) {\n var url = envConfig.webApiUrl + \"/deviationadmin/deleteProblemCategory/\" + id;\n return $http.delete(url).then(function (result) {\n return result.data;\n });\n },\n\n getTranslationsWithCauses: function () {\n var url = envConfig.webApiUrl + \"/deviationadmin/getTranslationsWithCauses\";\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n getCauses: function () {\n var url = resourceUrl + \"/getProblemReasons\";\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n\n createCause: function (cause) {\n var url = envConfig.webApiUrl + \"/deviationadmin/addProblemReason\";\n return $http.post(url, cause).then(function (result) {\n return result.data;\n });\n },\n updateCause: function (cause) {\n var url = envConfig.webApiUrl + \"/deviationadmin/updateProblemReason\";\n return $http.put(url, cause).then(function (result) {\n return result.data;\n });\n },\n\n deleteCause: function (id) {\n var url = envConfig.webApiUrl + \"/deviationadmin/deleteProblemReason/\" + id;\n return $http.delete(url).then(function (result) {\n return result.data;\n });\n },\n\n\n createDeviationType: function (type) {\n var url = envConfig.webApiUrl + \"/deviationadmin/createDeviationType\";\n return $http.post(url, type).then(function (result) {\n return result.data;\n });\n },\n\n getTranslationsWithDeviationType: function (id) {\n var url = envConfig.webApiUrl + \"/deviationadmin/getTranslationsWithDeviationType/\" + id;\n return $http.get(url, id).then(function (result) {\n return result.data;\n });\n },\n\n deleteDeviationType: function (id) {\n var url = envConfig.webApiUrl + \"/deviationadmin/DeleteDeviationType/\" + id;\n return $http.delete(url).then(function (result) {\n return result.data;\n });\n },\n\n updateDeviationType: function (type) {\n var url = envConfig.webApiUrl + \"/deviationadmin/updateDeviationType\";\n return $http.put(url, type).then(function (result) {\n return result.data;\n });\n },\n\n getDeviationTypes: function () {\n var options = {\n LanguageCode: userProvider().getUserLanguage()\n }\n var url = resourceUrl + \"/getDeviationTypes\";\n return $http.post(url, options).then(function (result) {\n return result.data;\n });\n },\n getAllDeviationTypes: function () {\n var options = {\n LanguageCode: userProvider().getUserLanguage()\n }\n var url = resourceUrl + \"/GetAllDeviationTypes\";\n return $http.post(url, options).then(function (result) {\n return result.data;\n });\n },\n getDeviationsByFilter: function (options) {\n var url = resourceUrl + \"/getDeviationsByFilter\";\n return $http.post(url, options).then(function (result) {\n return result.data;\n });\n },\n getDeviationsForPeriod: function (options) {\n var url = resourceUrl + \"/getDeviationsForPeriod\";\n return $http.post(url, options).then(function (result) {\n return result.data;\n });\n },\n\n\n getDeviationType: function (id) {\n var url = resourceUrl + \"/getDeviationType/\" + id;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n\n getDeviationTypeConfiguration: function (id) {\n var options = {\n LanguageCode: userProvider().getUserLanguage()\n }\n var url = resourceUrl + \"/getDeviationTypeConfiguration/\" + id;\n return $http.put(url, options).then(function (result) {\n return result.data;\n });\n },\n\n getConsequences: function () {\n var url = resourceUrl + \"/getLossTypes\";\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n\n createConsequence: function (lossType) {\n var url = envConfig.webApiUrl + \"/deviationadmin/addLossType\";\n return $http.post(url, lossType).then(function (result) {\n return result.data;\n });\n },\n updateConsequence: function (lossType) {\n var url = envConfig.webApiUrl + \"/deviationadmin/updateLossType\";\n return $http.put(url, lossType).then(function (result) {\n return result.data;\n });\n },\n\n deleteConsequence: function (id) {\n var url = envConfig.webApiUrl + \"/deviationadmin/deleteLossType/\" + id;\n return $http.delete(url).then(function (result) {\n return result.data;\n });\n },\n\n\n /* returns summary of number of deviation pr category in period (including percentage and accumulated */\n getSummaryOfCategories: function (timePeriod) {\n var url = resourceUrl + \"/GetSummaryOfCategories\";\n return $http.post(url, timePeriod).then(function (result) {\n return result.data;\n });\n },\n getSummaryOfCategoriesWithFilter: function (options) {\n var url = resourceUrl + \"/getSummaryOfCategoriesWithFilter\";\n return $http.post(url, options).then(function (result) {\n return result.data;\n });\n },\n\n\n getEvaluationSummaryList: function (options) {\n var url = resourceUrl + \"/GetEvaluationSummaryList\";\n return $http.post(url, options).then(function (result) {\n return result.data;\n });\n },\n getSummaryOfCauses: function (options) {\n var url = resourceUrl + \"/GetSummaryOfCauses\";\n return $http.post(url, options).then(function (result) {\n return result.data;\n });\n },\n getSummaryOfConsequences: function (options) {\n var url = resourceUrl + \"/GetSummaryOfConsequences\";\n return $http.post(url, options).then(function (result) {\n return result.data;\n });\n },\n getAssetMonthCountOnStatus: function (timePeriod) {\n var url = resourceUrl + \"/GetAssetMonthCountOnStatus\";\n return $http.post(url, timePeriod).then(function (result) {\n return result.data;\n });\n },\n\n getSeverityMonthCountOnStatus: function (timePeriod) {\n var url = resourceUrl + \"/GetSeverityMonthCountOnStatus\";\n return $http.post(url, timePeriod).then(function (result) {\n return result.data;\n });\n },\n\n getAreaMonthCountOnStatus: function (timePeriod) {\n var url = resourceUrl + \"/GetAreaMonthCountOnStatus\";\n return $http.post(url, timePeriod).then(function (result) {\n return result.data;\n });\n },\n\n getLeadTimeForAssets: function (timePeriod) {\n var url = resourceUrl + \"/getLeadTimeForAssets\";\n return $http.post(url, timePeriod).then(function (result) {\n return result.data;\n });\n },\n\n updateDeviation: function (deviation) {\n var url = resourceUrl + \"/\" + deviation.id;\n return $http.put(url, deviation).then(function (result) {\n return result.data;\n });\n },\n\n getUserlist: function (id) {\n var url = resourceUrl + \"/getUserListForDeviation/\" + id;\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n\n getMyDeviations: function () {\n var url = resourceUrl + \"/getMyDeviations/\";\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n getStackedDeviationGroupedSum: function (options) {\n var url = resourceUrl + \"/GetStackedDeviationGroupedSum/\";\n return $http.post(url, options).then(function (result) {\n return result.data;\n });\n },\n\n }\n }\n return deviationService;\n }]);","import envConfig from \"@common/envConfig\";\n\nangular.module('DigiLean').factory('qualityService', ['$rootScope', '$http',\n function ($rootScope, $http) {\n\n function qualityService() {\n var resource = \"/quality\";\n var resourceUrl = envConfig.webApiUrl + resource;\n\n return {\n getStandardVisualizationTypes(){\n return [\n {\n type: \"DYNAMIC\",\n title: \"Dynamic\"\n },\n {\n type: \"5S\",\n title: \"5S\"\n },\n {\n type: \"GREENCROSS\",\n title: \"Green cross\"\n },\n {\n type: \"A\",\n title: \"A\"\n },\n {\n type: \"C\",\n title: \"C\"\n },\n {\n type: \"D\",\n title: \"D\"\n },\n {\n type: \"I\",\n title: \"I\"\n },\n {\n type: \"K\",\n title: \"K\"\n },\n {\n type: \"L\",\n title: \"L\"\n },\n {\n type: \"P\",\n title: \"P\"\n },\n {\n type: \"Q\",\n title: \"Q\"\n },\n ];\n },\n updateDateStatus: function (dateStatus) {\n var url = resourceUrl + \"/UpdateDateStatus\";\n return $http.put(url, dateStatus).then(function (result) {\n return result.data;\n });\n },\n deleteDateStatus: function (id) {\n var url = resourceUrl + \"/DeleteDateStatus/\" + id;\n return $http.delete(url).then(function (result) {\n return result.data;\n });\n },\n deleteVisualizationType: function (visualizationTypeId) {\n var url = resourceUrl + \"/DeleteVisualizationType/\" + visualizationTypeId;\n return $http.delete(url).then(function (result) {\n return result.data;\n });\n },\n getAllStatusValuesForPeriod: function (visualizationType, timePeriod, filters) {\n var url = resourceUrl + \"/getAllStatusValuesForPeriod\";\n var visualizationPeriodQuery = {\n visualizationType: visualizationType,\n timePeriod: timePeriod,\n filters:filters\n };\n return $http.post(url, visualizationPeriodQuery).then(function (result) {\n return result.data;\n });\n },\n\n getStatusValuesForYear: function (visualizationType, areaId, projectId, assetId,year, filters) {\n var url = resourceUrl + \"/GetStatusValuesForYear\";\n var visualizationYearQuery = {\n timeZone: Intl.DateTimeFormat().resolvedOptions().timeZone,\n visualizationType: visualizationType,\n areaId: areaId,\n projectId: projectId,\n assetId: assetId,\n year: year,\n filters: filters\n };\n return $http.post(url, visualizationYearQuery).then(function (result) {\n return result.data;\n });\n },\n\n \n getStatusDeviationValuesForYear: function (deviationTypeId, assetId, year, filters) {\n var url = resourceUrl + \"/GetStatusDeviationValuesForYear\";\n var visualizationDeviationYearQuery = {\n timeZone: Intl.DateTimeFormat().resolvedOptions().timeZone,\n deviationTypeId: deviationTypeId,\n assetId:assetId,\n year: year,\n filters: filters\n };\n return $http.post(url, visualizationDeviationYearQuery).then(function (result) {\n return result.data;\n });\n },\n \n getStatusDeviationValuesForMonth: function (deviationTypeId, assetId, month, year, filters) {\n var url = resourceUrl + \"/GetStatusDeviationValuesForMonth\";\n var visualizationYearQuery = {\n timeZone: Intl.DateTimeFormat().resolvedOptions().timeZone,\n deviationTypeId: deviationTypeId,\n assetId:assetId,\n year: year,\n month: month,\n filters: filters\n };\n return $http.post(url, visualizationYearQuery).then(function (result) {\n return result.data;\n });\n },\n getStatusValuesForMonth: function (visualizationType, areaId, projectId, assetId,month, year, filters) {\n var url = resourceUrl + \"/GetStatusValuesForMonth\";\n var visualizationYearQuery = {\n timeZone: Intl.DateTimeFormat().resolvedOptions().timeZone,\n visualizationType: visualizationType,\n areaId: areaId,\n projectId: projectId,\n assetId: assetId,\n year: year,\n month: month,\n filters: filters\n };\n return $http.post(url, visualizationYearQuery).then(function (result) {\n return result.data;\n });\n },\n getLatestProjectStatusValue: function (visualizationType, projectId) {\n var url = resourceUrl + \"/GetLatestProjectStatusValue\";\n var visualizationProjectQuery = {\n visualizationType: visualizationType,\n projectId: projectId\n };\n return $http.post(url, visualizationProjectQuery).then(function (result) {\n return result.data;\n });\n },\n getVisualizationTypeVariants: function (visualizationType) {\n var url = resourceUrl + \"/GetVisualizationTypeVariants\";\n var visualizationProjectQuery = {\n visualizationType: visualizationType\n };\n return $http.post(url, visualizationProjectQuery).then(function (result) {\n return result.data;\n });\n },\n getVisualizationTypesForProjects: function () {\n var url = resourceUrl + \"/getVisualizationTypesForProjects\";\n \n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n getTableValues: function (visualizationType, tableParams) {\n var url = resourceUrl + \"/getTableValues/\" + visualizationType;\n return $http.post(url, tableParams).then(function (result) {\n return result.data;\n });\n },\n getActiveVisualizationTypes: function () {\n var url = resourceUrl + \"/GetActiveVisualizationTypes\";\n return $http.get(url).then(function (result) {\n return result.data;\n });\n },\n }\n }\n return qualityService;\n }]);","import * as pdfService from \"@common/services/pdfService\"\nimport envConfig from \"@common/envConfig\"\n\nvar DigiLean = angular.module('DigiLean');\nDigiLean.directive(\"deviationProjectStatusPdfButton\", ['$filter', 'projectService',\n function ($filter, projectService) {\n return {\n templateUrl: 'deviationProjectStatusPdfButton.html',\n restrict: 'E',\n scope: {\n 'projectId': '=',\n 'timePeriod': '<'\n },\n link: function (scope, elem, attrs) {\n\n scope.showFileGenerators = true;\n if (envConfig.isTeamsMode) {\n scope.showFileGenerators = false;\n }\n scope.projects = [];\n var loadProjects = function () {\n projectService().getProjectListWithDeviation().then(function (projects) {\n scope.projects = projects;\n });\n }\n loadProjects();\n\n scope.selectProject = function (project) {\n pdfService.printDeviationProjectReport(project.id, scope.timePeriod);\n };\n scope.$watch(\"timePeriod\", function (timePeriod) {\n var s = timePeriod;\n });\n }\n\n }\n }]);\n","import * as customerService from \"@common/services/customers/customerService\"\nimport * as assetService from \"@common/services/assetService\"\nimport * as timeService from \"@common/services/timeService\"\nimport * as boardService from \"@common/services/boardService\"\n\nvar DigiLean = angular.module('DigiLean')\nDigiLean.directive(\"stackedDeviationHorizontalBarChart\", ['$filter', '$translate', 'projectService', 'deviationService',\n function ($filter, $translate, projectService, deviationService) {\n return {\n templateUrl: 'stackedDeviationHorizontalBarChart.html',\n restrict: 'E',\n scope: {\n 'isAdminMode': '=',\n 'timeframe': '@',\n 'timePeriod': '<',\n 'settings': '=',\n 'settingsChangeHandler': '&'\n },\n link: function (scope, elem, attrs) {\n var grafcolor = ['#2A2E36', '#0099DE', '#d9534f', '#23c6c8', '#0077B5', '#5e5e5e', '#f8ac59', '#17987e'],\n graphtextcolor = '#ffffff';\n\n scope.projects = null;\n var deviationTypes = null;\n var problemCategories = null;\n var groupColumn = \"projectId\";\n var stackingColumn = \"status\";\n var categorySummaryData = null;\n var showTotal = true;\n var groupingElementFound = false;\n var recordingTranslated = $translate.instant('DEVIATION_NUMBER_OF_DEVIATIONS');\n\n\n scope.$watch('timePeriod', function (timePeriod) {\n if (!timePeriod) return;\n loadData(scope.timePeriod);\n });\n\n function capitalizeFirstLetter(string) {\n return string[0].toUpperCase() + string.slice(1);\n }\n\n function loadData(timePeriod) {\n if (!scope.timePeriod) return;\n var grouping = {\n sourceColumn: capitalizeFirstLetter(groupColumn) //\"ProjectId\", \n };\n var stacking = {\n sourceColumn: capitalizeFirstLetter(stackingColumn) //\"Status\", \n };\n \n var options = {\n groupingElement: grouping, \n timeZone: timeService.getUserTimeZone(), // Which timezone we would like the result to be calculated in.\n timePeriod: scope.timePeriod,\n filters: scope.filters,\n stackingElement: stacking \n };\n deviationService().getStackedDeviationGroupedSum(options).then(function (data) {\n categorySummaryData = data;\n drawChart(data);\n }); \n }\n\n scope.subscribe(\"DeviationCreated\", function (deviation) {\n loadData(scope.timePeriod);\n });\n\n // Dashboard Settings handling\n scope.$watch('settings', function (settings) {\n if (settings) {\n \n scope.settings = settings;\n if (settings.dataSource) {\n scope.dataSource = settings.dataSource;\n }\n if (settings.groupColumn) {\n groupColumn = settings.groupColumn;\n }\n if (settings.stackingColumn) {\n stackingColumn = settings.stackingColumn;\n }\n if (settings.filters) {\n scope.filters = settings.filters;\n }\n if (settings.showTotal) {\n showTotal = settings.showTotal;\n }\n initialize(groupColumn);\n }\n });\n\n function initialize(groupedBy) { \n if (groupedBy === \"areaId\") {\n areaService().getList(true).then(function (areas) {\n scope.areas = areas;\n if(!groupingElementFound){\n groupingElementFound = true;\n initialize(stackingColumn);\n } else{\n loadData(scope.timePeriod);\n }\n });\n } else if (groupedBy === \"assetId\" || groupedBy === \"followUpAssetId\") {\n assetService.getAllAssets().then(function (data) {\n assets = data;\n if(!groupingElementFound){\n groupingElementFound = true;\n initialize(stackingColumn);\n } else{\n loadData(scope.timePeriod);\n }\n });\n }\n else if (groupedBy === \"projectId\") {\n projectService().getList(true).then(function (data) {\n scope.projects = data;\n if(!groupingElementFound){\n groupingElementFound = true;\n initialize(stackingColumn);\n } else{\n loadData(scope.timePeriod);\n }\n });\n } else if (groupedBy === \"problemCategoryId\") {\n deviationService().getProblemCategories().then(function (categories) {\n problemCategories = categories;\n if(!groupingElementFound){\n groupingElementFound = true;\n initialize(stackingColumn);\n } else{\n loadData(scope.timePeriod);\n }\n }); \n } else if (groupedBy === \"deviationTypeId\") {\n deviationService().getAllDeviationTypes().then(function (types) {\n deviationTypes = types;\n if(!groupingElementFound){\n groupingElementFound = true;\n initialize(stackingColumn);\n } else{\n loadData(scope.timePeriod);\n }\n });\n } else if (groupedBy === \"categoryId\") {\n if (scope.dataSource.id.startsWith(\"Improvement\")) {\n suggestionService().getCategories().then(function (categories) {\n scope.suggestionCategories = categories;\n if(!groupingElementFound){\n groupingElementFound = true;\n initialize(stackingColumn);\n } else{\n loadData(scope.timePeriod);\n }\n });\n } else {//assue A3 categories\n a3Service().getCategories().then(function (categories) {\n scope.a3Categories = categories;\n if(!groupingElementFound){\n groupingElementFound = true;\n initialize(stackingColumn);\n } else{\n loadData(scope.timePeriod);\n }\n });\n }\n } else if (groupedBy === \"boardId\") {\n boardService.getAll().then(function (boards) {\n scope.boards = boards;\n if(!groupingElementFound){\n groupingElementFound = true;\n initialize(stackingColumn);\n } else{\n loadData(scope.timePeriod);\n }\n });\n } else if (groupedBy === \"suggestedByUserId\" || groupedBy === \"createdByUserId\" || groupedBy === \"ownerUserId\" || groupedBy === \"responsibleUserId\") {\n customerService.getAllUsers().then(function (users) {\n scope.users = users;\n if(!groupingElementFound){\n groupingElementFound = true;\n initialize(stackingColumn);\n } else{\n loadData(scope.timePeriod);\n }\n });\n } else if (groupedBy === \"a3TemplateId\") {\n a3templateService().getList().then(function (templates) {\n scope.a3templates = templates;\n if(!groupingElementFound){\n groupingElementFound = true;\n initialize(stackingColumn);\n } else{\n loadData(scope.timePeriod);\n }\n });\n } else {\n if(!groupingElementFound){\n groupingElementFound = true;\n initialize(stackingColumn);\n } else{\n loadData(scope.timePeriod);\n }\n }\n }\n\n function getPointName(element, groupedBy) {\n if (groupedBy === \"assetId\" || groupedBy === \"followUpAssetId\") {\n return getNameById(assets, element);\n } else if (groupedBy === \"priorityStatus\") {\n return suggestionService().getPriorityStatusText(parseInt(element));\n } else if (groupedBy === \"problemCategoryId\") {\n return getNameById(problemCategories, element);\n } else if (groupedBy === \"a3TemplateId\") {\n return getNameById(scope.a3templates, element);\n } else if (groupedBy === \"categoryId\") {\n if (scope.dataSource.id.startsWith(\"Improvement\")) {\n return getNameById(scope.suggestionCategories, element);\n } else { // Only A3\n return getNameById(scope.a3Categories, element);\n }\n } else if (groupedBy === \"areaId\") {\n return getNameById(scope.areas, element);\n }else if (groupedBy === \"projectId\") { \n return getNameById(scope.projects, element);\n } else if (groupedBy === \"deviationTypeId\") {\n return getNameById(deviationTypes, element); \n } else if (groupedBy === \"boardId\") {\n return getNameById(scope.boards, element);\n } else if (groupedBy === \"suggestedByUserId\" || groupedBy === \"createdByUserId\" || groupedBy === \"ownerUserId\" || groupedBy === \"responsibleUserId\") {\n return getNameByUserId(scope.users, element);\n } else if (groupedBy === \"severity\") {\n switch (element) {\n case \"1\":\n return $translate.instant('COMMON_LOW');\n case \"2\":\n return $translate.instant('COMMON_MEDIUM');\n case \"3\":\n return $translate.instant('COMMON_HIGH');\n default:\n return $translate.instant('COMMON_NOT_SPECIFIED');\n }\n } else if (groupedBy === \"status\") {\n switch (element) {\n case \"0\":\n return $translate.instant('COMMON_NEW');\n case \"10\":\n return $translate.instant('DEVIATION_IN_PROGRESS');\n case \"20\":\n return $translate.instant('DEVIATION_RESOLVED');\n case \"30\":\n return $translate.instant('COMMON_REJECTED');\n case \"unacceptable\":\n return $translate.instant('BOARD_INCOMPLETED');\n case \"blank\":\n return $translate.instant('BOARD_OPEN');\n case \"OK\":\n return $translate.instant('DASHBOARD_COMPLETED');\n default:\n return $translate.instant('COMMON_NOT_SPECIFIED');\n }\n } else {\n return element;\n }\n }\n\n function getNameById(source, id) {\n if (id && source) {\n for (var k = 0; k < source.length; k++) {\n if (source[k].id.toString() === id.toString()) {\n if (source[k].name) {\n return source[k].name;\n } else if (source[k].title) {\n return source[k].title;\n } else {\n return $translate.instant('COMMON_NOT_SPECIFIED');\n }\n }\n }\n return $translate.instant('COMMON_NOT_SPECIFIED');\n } else {\n return $translate.instant('COMMON_NOT_SPECIFIED');\n }\n }\n\n // Used when grouped by user\n function getNameByUserId(source, id) {\n if (id && source) {\n for (var k = 0; k < source.length; k++) {\n if (source[k].userId.toString() === id.toString()) {\n if (source[k].fullName) {\n return source[k].fullName;\n } else if (source[k].userName) {\n return source[k].userName;\n } else {\n return $translate.instant('COMMON_NOT_SPECIFIED');\n }\n }\n }\n return $translate.instant('COMMON_NOT_SPECIFIED');\n } else {\n return $translate.instant('COMMON_NOT_SPECIFIED');\n }\n }\n\n function drawChart(data) {\n scope.xAxisData = [];\n\n if (data) { \n var xAxisId = [];\n var distinctStackedElements = [];\n var totalSerie = [];\n for (var i = 0; i < data.length; i++) {\n var index = xAxisId.indexOf(data[i].element);\n if (index < 0) {\n xAxisId.push(data[i].element);\n var xAxisDataLabel = getPointName(data[i].element, groupColumn);\n scope.xAxisData.push(xAxisDataLabel);\n }\n\n var stackedindex = distinctStackedElements.indexOf(data[i].stackedElement);\n if (stackedindex < 0) {\n distinctStackedElements.push(data[i].stackedElement);\n totalSerie.push(0);\n }\n }\n }\n\n scope.seriesData = []; \n var i = distinctStackedElements.length-1;\n for (i; i >= 0; i--) {\n var name = getPointName(distinctStackedElements[i], stackingColumn);\n //var color = grafcolor[i];\n var dataValues = [];\n var stackedidtofilter = distinctStackedElements[i];\n var elementsWithGivenStackedValue = $filter('filter')(data, { stackedElement: distinctStackedElements[i] }, true);\n for (var y = 0; y < xAxisId.length; y++) {\n var foundValue = $filter('filter')(elementsWithGivenStackedValue, { element: xAxisId[y] })[0];\n if(foundValue){\n dataValues.push(foundValue.value);\n totalSerie[i] = totalSerie[i] + foundValue.value;\n }else{\n dataValues.push(0);\n }\n }\n var element = {\n name: name,\n data: dataValues\n };\n scope.seriesData.push(element);\n }\n\n if(showTotal){\n var t = totalSerie.length-1;\n totalSerie.reverse(); \n for (t; t >= 0; t--) {\n scope.seriesData[t].data.unshift(totalSerie[t]);\n }\n scope.xAxisData.unshift($translate.instant('COMMON_TOTAL'));\n }\n\n var renderElement = $(elem).find(\".stacked-deviation-horizontal-bar-chart\")[0];\n Highcharts.chart({\n chart:{\n renderTo: renderElement,\n type: 'bar'\n },\n title: {\n text: ''\n },credits: {\n enabled: false\n }, exporting: {\n enabled: false //remove context menu\n },\n xAxis: {\n categories: scope.xAxisData,\n \n },\n yAxis: {\n min: 0,\n title: {\n text: ''\n },\n allowDecimals: false,\n },\n tooltip: {\n headerFormat: '{point.x}
        ',\n pointFormat: '{series.name}: {point.y}
        ' + $translate.instant('COMMON_TOTAL') + ': {point.stackTotal}'\n },\n legend: {\n reversed: true\n },\n plotOptions: {\n series: {\n stacking: 'normal'\n }\n },\n series: scope.seriesData\n });\n }\n\n }\n }\n }]);\n","import * as customerService from \"@common/services/customers/customerService\"\nimport toaster from \"@common/components/toast\"\n\nangular\n .module('DigiLean')\n .controller(\"forgotPasswordModalController\", ['$scope', '$state', '$uibModalInstance', '$translate', 'user',\n function ($scope, $state, $uibModalInstance, $translate, user) {\n\n $scope.loginData = {\n userId: \"\",\n password: \"\",\n confirmPassword: \"\",\n code: \"\"\n };\n $scope.email = user.email;\n $scope.message = null;\n $scope.errormessage = null;\n $scope.errors = [];\n \n $scope.reset = function () {\n \n $scope.message = null;\n $scope.errormessage = null;\n customerService.createPasswordToken($scope.email).then(function (result) {\n toaster.success($translate.instant('ADMIN_MESSAGE_RESET_PASSWORD'));\n $scope.errormessage = null;\n close();\n },\n function (response) {\n if (response.status === 404){\n $scope.errormessage = $translate.instant('ADMIN_USER_NOT_FOUND');\n }\n else{\n $scope.message = response.statusText;\n }\n });\n };\n\n $scope.ok = function () {\n $uibModalInstance.close($scope.standard);\n };\n\n $scope.close = close;\n function close() {\n $uibModalInstance.dismiss('cancel');\n }\n }]);\n","import * as profileService from \"@common/services/user/profileService\"\nimport * as employeeService from \"@common/services/employeeService\"\n\n// Controller for the actual modal\nvar DigiLean = angular.module('DigiLean');\nDigiLean.controller('myprofileController', ['$scope', '$filter', '$state', 'authService', 'suggestionService', 'navigationService', '$uibModal', 'learningService', 'learningPublicService',\n function ($scope, $filter, $state, authService, suggestionService, navigationService, $uibModal, learningService, learningPublicService) {\n\n\n $scope.hasLearningModule = navigationService().hasModule(\"LEARNING\");\n $scope.hasImprovementModule = navigationService().hasModule(\"IMPROVEMENT\");\n $scope.hasDeviationModule = navigationService().hasModule(\"DEVIATION\");\n\n $scope.profile = null;\n\n // Check if user has visited settings page\n employeeService.getUserPreference(\"HasVisitedSettingsPage\").then(function (value) {\n if (!value) {\n // go to settings\n $state.go('settings');\n }\n });\n\n\n var userid = authService.getCurrentUser().userId;\n $scope.subscribe(\"UserAuthenticatedAndReady\", function (profile) {\n // In case of refresh we need to make sure we \n userid = authService.getCurrentUser().userId;\n $scope.isMobileUser = profile.user.isMobileUser;\n var hasAccess = $filter('filter')(profile.modules, { name: \"DEVIATION\" });\n $scope.hasDeviationModule = hasAccess.length > 0;\n var hasImprovementAccess = $filter('filter')(profile.modules, { name: \"IMPROVEMENT\" });\n $scope.hasImprovementModule = hasImprovementAccess.length > 0;\n var hasLearningAccess = $filter('filter')(profile.modules, { name: \"LEARNING\" });\n $scope.hasLearningModule = hasLearningAccess.length > 0;\n if ($scope.hasLearningModule) {\n recommendLearning(profile.user.preferredLanguage);\n }\n });\n\n var getMyProfile = function () {\n profileService.getMyProfile().then(function (profile) {\n $scope.profile = profile;\n $scope.isMobileUser = profile.isMobileUser;\n if ($scope.hasLearningModule) {\n recommendLearning($scope.profile.preferredLanguage);\n }\n \n });\n }\n getMyProfile();\n suggestionService().getMySuggestions().then(function (suggestions) {\n $scope.suggestionimplemented = 0;\n $scope.suggestions = suggestions;\n suggestions.forEach(function (suggestion) {\n //if(suggestion.status == \"Implemented\" || suggestion.status == \"Evaluated\") $scope.suggestionimplemented++;\n if (suggestion.statusImplementedDate) $scope.suggestionimplemented++;\n\n });\n $scope.suggestions = suggestions;\n $scope.translationData = {\n noOfSuggestions: $scope.suggestions.length\n };\n });\n\n\n function recommendLearning(userlanguage) {\n learningPublicService.getUserHelpLearningMaterial(userlanguage).then(function (result) {\n var learningmaterial = result;\n $scope.learningMaterialTitle = learningmaterial.title;\n $scope.learningMaterialLink = learningmaterial.link;\n });\n return;\n }\n\n function getLearningMaterialLink(material) {\n let link = \"/#/learning/\"\n link += material.externalId ? \"external\" : \"internal\"\n link += `/${material.id}?pageid=0`\n return link\n }\n\n $scope.openSuggestions = function () {\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n templateUrl: 'myRegisteredSuggestionsForm.html',\n controller: 'mysuggestionsController',\n windowClass: 'fullDeviation-modal-window',\n resolve: {\n }\n });\n }\n\n $scope.quickAccess = [];\n employeeService.getUserPreference(\"FlexiboardFavoriteBoards\").then(function (settings) {\n if (settings && settings.value) {\n angular.forEach(settings.value, function (board) {\n board.isStar = true;\n board.hasAccess = false;\n });\n $scope.quickAccess = settings.value;\n }\n });\n $scope.updateProfilePhoto = function () {\n var modalInstance = $uibModal.open({\n backdrop: 'static',\n templateUrl: 'myprofilephoto.html',\n controller: 'myprofilephotoController',\n resolve: {\n }\n });\n modalInstance.result.then(function () {\n getMyProfile();\n }, function () {\n });\n }\n }]);","import * as timeService from \"@common/services/timeService\"\n\nangular\n .module('DigiLean')\n .directive('myNotifications', ['$translate','$state', '$interval','$filter', 'notificationService',\n function ($translate,$state, $interval, $filter, notificationService) {\n return {\n templateUrl: 'myNotifications.html',\n restrict: 'E',\n scope: {\n\n },\n link: function (scope, elem, attrs) {\n \n scope.notifications = [];\n var actions = notificationService().getNotificationActions();\n\n scope.subscribe('Notification', function (notification) {\n notification.isNew = true;\n updateNotificationWithActionData(notification);\n scope.notifications.unshift(notification);\n updateNewAlertCounter(newAlerts + 1);\n calculateTimeElapsed();\n });\n scope.subscribe('MarkedAllNotificationsAsRead', function () {\n updateNewAlertCounter(0);\n calculateTimeElapsed();\n })\n scope.subscribe('NotificationSeen', function (notification) {\n updateNewAlertCounter(newAlerts - 1);\n calculateTimeElapsed();\n var partOfList = $filter('filter')(scope.notifications, { id: notification.id }, true);\n if (partOfList.length > 0) {\n partOfList[0].isNew = false;\n }\n });\n\n scope.openNotification = function(notification) {\n if (notification.ïsNew) {\n notificationService().seenNotification(notification.id).then(function(){\n $state.go('inbox', { tab: 'notification', notificationid: notification.id }, { reload: false });\n }); \n } else {\n $state.go('inbox', { tab: 'notification', notificationid: notification.id }, { reload: false });\n }\n \n }\n notificationService().getUnseenNotificationsCount().then(function(count) {\n updateNewAlertCounter(count);\n });\n\n var newAlerts = 0;\n function updateNewAlertCounter(count) {\n if (count < 0) count = 0;\n if (count >= 100) {\n scope.newAlerts = \"99+\";\n } else {\n scope.newAlerts = count;\n }\n newAlerts = count;\n }\n\n function updateNotificationWithActionData(notification) {\n var targetAction = $filter('filter')(actions, { action: notification.action }, true);\n if (targetAction.length > 0) {\n notification.title = $translate.instant(targetAction[0].translateLabel);\n notification.actionSymbol = targetAction[0].actionSymbol;\n }\n }\n var translateOptions = {\n month: $translate.instant('COMMON_TIMEELAPSED_MONTH'),\n days: $translate.instant('COMMON_TIMEELAPSED_DAYS'),\n hours: $translate.instant('COMMON_TIMEELAPSED_HOURS'),\n mins: $translate.instant('COMMON_TIMEELAPSED_MINUTES'),\n seconds: $translate.instant('COMMON_TIMEELAPSED_SECONDS'),\n now: $translate.instant('COMMON_TIMEELAPSED_NOW')\n }\n var calculateTimeElapsed = function () {\n // Recalculate time elapsed\n scope.notifications.forEach(function (notification) {\n notification.timeElapsed = timeService.getTimeElapsed(notification.notificationTime, translateOptions);\n });\n }\n\n var updateTimer = $interval(calculateTimeElapsed, 5000);\n elem.on('$destroy', function () {\n $interval.cancel(updateTimer);\n });\n }\n }\n }]);\n","import * as assetService from \"@common/services/assetService\"\n\nangular\n .module('DigiLean')\n .directive('myMessageNotifications', ['$filter', 'navigationService',\n function ($filter, navigationService) {\n return {\n templateUrl: 'myMessageNotifications.html',\n restrict: 'E',\n scope: {\n\n },\n link: function (scope, elem, attrs) {\n var newAlerts = 0;\n var memberassets = [];\n var projectassets = [];\n\n assetService.getList().then(function (assets) {\n memberassets = assets;\n });\n scope.hasProjectModule = navigationService().hasModule(\"PROJECT\");\n \n if(scope.hasProjectModule){\n assetService.getMyProjectAssets().then(function (assets) {\n projectassets = assets;\n });\n }\n\n scope.subscribe(\"MessageReceived\", function (message) {\n if(!isRelevantMessage(message)) return;\n newAlerts = newAlerts + 1;\n updateNewAlertCounter(newAlerts);\n });\n \n scope.subscribe(\"ProjectMessageAdded\", function (message) {\n if(scope.hasProjectModule){\n if(!isRelevantMessage(message)) return;\n\n newAlerts = newAlerts + 1;\n updateNewAlertCounter(newAlerts);\n }\n });\n\n function assetMatch(list1, list2) {\n for (const itemlist1 of list1) {\n for (const itemlist2 of list2) {\n if (itemlist1.id === itemlist2.assetId) {\n return true;\n }\n }\n } \n return false;\n }\n\n scope.resetAlertCounter = function() {\n updateNewAlertCounter(0);\n }\n\n \n function updateNewAlertCounter(count) {\n if (count < 0) count = 0;\n if (count >= 100) {\n scope.newAlerts = \"99+\";\n } else {\n scope.newAlerts = count;\n }\n newAlerts = count;\n }\n\n function isRelevantMessage(message){\n if(message.isPublic)\n return true;\n if(message.assets){\n return assetMatch(memberassets, message.assets);\n }\n if(message.projectId){\n var projectfilter = $filter('filter')(projectassets, { id: message.projectId }); \n if(projectfilter && projectfilter.length == 1){\n return true;\n }\n }\n return false;\n }\n }\n }\n }]);\n","import envConfig from \"@common/envConfig\"\nimport * as assetService from \"@common/services/assetService\"\nimport { userFull } from \"@common/stores/userStore\"\nimport * as employeeService from \"@common/services/employeeService\"\n\nconst DigiLean = angular.module('DigiLean')\nDigiLean.controller('profileSettingsController', ['$scope','$stateParams', '$filter', 'navigationService','authService',\n function ($scope, $stateParams, $filter, navigationService, authService) {\n\n $scope.digiLeanVersion = envConfig.digiLeanBuildVersion\n $scope.hasVisitedSettingsPage = true;\n\n $scope.businessUnitId = userFull.user.businessUnitId\n $scope.tabs = [\n {\n name: \"info\",\n isActive: false,\n title: \"COMMON_INFO\"\n },\n {\n name: \"notifications\",\n isActive: false,\n title: \"COMMON_NOTIFICATIONS\"\n },\n {\n name: \"permissions\",\n isActive: false,\n title: \"ADMIN_PERMISSIONS\"\n },\n ]\n\n employeeService.getUserPreference(\"HasVisitedSettingsPage\").then(function(value) {\n if (!value) {\n $scope.hasVisitedSettingsPage = false;\n }\n });\n\n $scope.selectedTab = null;\n $scope.selectedTabName = \"\";\n \n\n $scope.selectTab = function (tab) {\n if ($scope.selectedTab) {\n $scope.selectedTab.isActive = false;\n }\n tab.isActive = true;\n $scope.selectedTab = tab\n $scope.selectedTabName = tab.name;\n if($scope.selectedTabName == 'permissions'){\n assetService.getList().then(function (assets) {\n $scope.assets = assets;\n });\n $scope.hasProjectModule = navigationService().hasModule(\"PROJECT\");\n \n if($scope.hasProjectModule){\n assetService.getMyProjectAssets().then(function (assets) {\n $scope.projectassets = assets;\n });\n }\n $scope.isAdmin = authService.hasRole(\"Admin\");\n $scope.isBusinessunitAdmin = authService.hasRole(\"BusinessunitAdmin\")\n $scope.isBoardDesigner = authService.hasRole(\"BoardDesigner\")\n $scope.isDataAdmin = authService.hasRole(\"DataAdmin\")\n $scope.isMessageWriter = authService.hasRole(\"MessageWriter\")\n $scope.isImprovementAdmin = authService.hasRole(\"ImprovementAdmin\");\n $scope.isDeviationAdmin = authService.hasRole(\"DeviationAdmin\");\n $scope.isProjectAdmin = authService.hasRole(\"ProjectAdmin\");\n $scope.isA3Admin = authService.hasRole(\"A3Admin\");\n $scope.isLearningMaterialEditor = authService.hasRole(\"LearningAdmin\");\n $scope.isStrategyAdmin = authService.hasRole(\"StrategyAdmin\");\n \n }\n }\n\n // Select tab based on input or default first.\n if ($stateParams.tab) {\n var tab = $stateParams.tab;\n var hasTab = $filter('filter')($scope.tabs, { name: tab });\n if (hasTab.length == 1) {\n $scope.selectTab(hasTab[0]);\n } else {\n $scope.selectTab($scope.tabs[0]);\n }\n\n } else {\n $scope.selectTab($scope.tabs[0]);\n }\n\n $scope.ok = function () {\n $scope.hasVisitedSettingsPage = true;\n // user has visited\n employeeService.updateUserPreference(\"HasVisitedSettingsPage\", true)\n }\n\n }]);","import { loadUserProfile } from \"@common/services/user/userService\"\nimport * as profileService from \"@common/services/user/profileService\"\nimport * as employeeService from \"@common/services/employeeService\"\nimport toaster from \"@common/components/toast\"\n\nangular\n.module('DigiLean')\n.directive('profileInfoSettings', ['$uibModal','languageAdminService',\n function ($uibModal,languageAdminService) {\n return {\n templateUrl: 'profileInfoSettings.html',\n restrict: 'E',\n scope: {\n\n },\n link: function (scope, elem, attrs) {\n scope.firstName = \"\";\n scope.lastName = \"\";\n scope.email = \"\";\n scope.preferredLanguage = \"\";\n scope.selectedLanguage = null;\n\n scope.languages = languageAdminService().getSupportedLanguages();\n\n function setSelectedLanguage(){\n const selected = scope.languages.find(l => l.languageCode == scope.preferredLanguage)\n if (selected) {\n scope.selectedLanguage = selected\n }\n }\n\n async function getMyProfile () {\n const profile = await profileService.getMyProfile()\n scope.profile = profile;\n scope.firstName = profile.firstName;\n scope.lastName = profile.lastName;\n scope.email = profile.email;\n scope.preferredLanguage = profile.preferredLanguage;\n setSelectedLanguage()\n scope.$apply()\n }\n getMyProfile();\n scope.updateProfilePhoto = function () {\n var modalInstance = $uibModal.open({ backdrop: 'static',\n templateUrl: 'myprofilephoto.html',\n controller: 'myprofilephotoController',\n resolve: {\n }\n });\n modalInstance.result.then(function () {\n getMyProfile();\n }, function () {\n });\n }\n scope.changeLanguage = function (language) {\n if(!language)\n return\n \n const code = language.languageCode\n employeeService.changeLanguage(code).then(function () {\n // this loads all the language stuff\n loadUserProfile()\n })\n scope.preferredLanguage = code\n setSelectedLanguage()\n var payload = {\n locale: scope.preferredLanguage\n }\n \n scope.publish(\"UserLanguageUpdated\", payload)\n }\n\n scope.updateProfile = async function() {\n var profileInfo = {\n firstName: scope.firstName,\n lastName: scope.lastName,\n email: scope.email\n };\n try {\n await profileService.updateProfileInfo(profileInfo)\n toaster.success(\"COMMON_USER_SAVED\")\n } catch(err) {\n toaster.error(err.message)\n }\n }\n }\n }\n }]);\n","import * as profileService from \"@common/services/user/profileService\"\n\nvar DigiLean = angular.module('DigiLean'); \nDigiLean.controller('myprofilephotoController', ['$scope', '$uibModalInstance',\n function ($scope, $uibModalInstance) {\n \n $scope.originalImage = \"\";\n $scope.croppedImage = \"\";\n\n function getProfile() {\n profileService.getMyProfile().then(function(profile) {\n $scope.profile = profile;\n if (profile.profileImage) {\n $scope.originalImage = profile.profileImage.fileUrl\n }\n });\n }\n getProfile();\n \n $scope.fileUrl = \"\";\n $scope.uploadedFiles = []; // For uploading new attachments, will be connected to dropzone.\n $scope.fileUploaded = function (file) {\n $scope.fileUrl = \"\";\n profileService.updateProfileImage(file.id).then(function () {\n getProfile();\n })\n };\n\n var formData = null;\n $scope.croppedImageUrl = null;\n $scope.cropSizeChanged = function() {\n if ($scope.croppedImage) {\n setTimeout(function() {\n var blob = dataURLtoBlob($scope.croppedImage);\n $scope.croppedImageUrl = URL.createObjectURL( blob );\n formData = new FormData();\n formData.append(\"myFile\", blob, \"cropped.jpg\");\n }, 100);\n } \n }\n\n function dataURLtoBlob(dataurl) {\n var arr = dataurl.split(','), mime = arr[0].match(/:(.*?);/)[1],\n bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);\n while(n--){\n u8arr[n] = bstr.charCodeAt(n);\n }\n return new Blob([u8arr], {type:mime});\n }\n\n $scope.isProcessing = false;\n $scope.ok = function () {\n $scope.isProcessing = true;\n if (formData) {\n profileService.uploadProfileImage(formData).then(function(data){\n profileService.updateProfileImage(data[0].id).then(function (profile) {\n $uibModalInstance.close();\n $scope.isProcessing = false;\n })\n \n })\n }\n \n };\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n }]);","import * as profileImageService from \"@common/services/user/profileImageService\"\n\nangular\n .module('DigiLean')\n .directive(\"profileImage\", ['Lightbox',\n function (Lightbox) {\n return {\n templateUrl: 'profileImage.html',\n restrict: 'E',\n scope: {\n 'userId': '=',\n 'shape': '@?',\n 'size': '@?'\n },\n link: function (scope, elem, attrs) {\n scope.shape = \"square\";\n scope.size = \"small\";\n scope.css = \"\";\n scope.imageUrl = null\n \n scope.$watch('userId', async function (userId) {\n scope.imageUrl = await profileImageService.getProfileImageUrl(scope.userId, \"ExtraSmall\") \n });\n scope.$watch('shape', function (shape) {\n if (shape == \"round\") {\n scope.css = \"img-circle\";\n }\n });\n scope.openLightboxModal = function () {\n var images = [\n {\n 'url': scope.file.validFileUrl,\n 'thumbUrl': scope.file.validFileUrl\n }\n ];\n Lightbox.openModal(images, 0);\n };\n }\n }\n }]);\n","import envConfig from \"@common/envConfig\"\n\nvar DigiLean = angular.module('DigiLean');\nDigiLean.controller('inboxController', ['$scope','$stateParams', '$filter', '$translate',\n function ($scope, $stateParams, $filter, $translate) {\n\n $scope.tabs = [\n {\n name: \"notifications\",\n isActive: false,\n title: $translate.instant(\"COMMON_NOTIFICATIONS\")\n },\n {\n name: \"messages\",\n isActive: false,\n title: $translate.instant(\"COMMON_MESSAGES\")\n }\n ]\n\n if (!envConfig.disableFeedbackToDigiLean) {\n $scope.tabs.push({\n name: \"feedbacks\",\n isActive: false,\n title: $translate.instant(\"NAV_FEEDBACK_TO_DIGILEAN\")\n })\n }\n\n $scope.selectedTab = null;\n $scope.selectedTabName = \"\";\n \n $scope.selectTab = function (tab) {\n if ($scope.selectedTab) {\n $scope.selectedTab.isActive = false;\n }\n tab.isActive = true;\n $scope.selectedTab = tab\n $scope.selectedTabName = tab.name;\n }\n\n // Select tab based on input or default first.\n if ($stateParams.tab) {\n var tab = $stateParams.tab;\n var hasTab = $filter('filter')($scope.tabs, { name: tab });\n if (hasTab.length == 1) {\n $scope.selectTab(hasTab[0]);\n } else {\n $scope.selectTab($scope.tabs[0]);\n }\n\n } else {\n $scope.selectTab($scope.tabs[0]);\n }\n if ($stateParams.notificationid) {\n $scope.selectedNotificationId = parseInt($stateParams.notificationid);\n }\n }]);","import * as timeService from \"@common/services/timeService\"\n\nangular\n .module('DigiLean')\n .directive('inboxNotifications', ['$translate', '$filter', '$interval', 'notificationService',\n function ($translate, $filter, $interval, notificationService) {\n return {\n templateUrl: 'inboxNotifications.html',\n restrict: 'E',\n scope: {\n \"selectedNotificationId\": \" 0) {\n partOfList[0].seenTime = notification.seenTime;\n }\n });\n scope.subscribe('MarkedAllNotificationsAsRead', function (user) {\n setAllAsRead();\n });\n\n function loadNotifications() {\n var status = 0; // Open\n scope.allNotifications = [];\n \n scope.isLoading = true;\n if (scope.viewMode == \"Archived\") status = 1;\n\n var queryOptions = {\n count: 100,\n status: status\n }\n notificationService().getMyNotifications(queryOptions).then(function (notifications) {\n notifications.forEach(function (notification) {\n notification.isNew = false;\n updateNotificationWithActionData(notification);\n });\n \n calculateTimeElapsed();\n\n // If selectedNotification, we will insert it first and load message.\n if (scope.selectedNotificationId) {\n var hasNotification = $filter('filter')(notifications, { id: scope.selectedNotificationId });\n if (hasNotification.length == 1) {\n var notification = hasNotification[0];\n var index = notifications.indexOf(notification);\n if (index >= 0) {\n notifications.splice(index, 1);\n notifications.unshift(notification);\n scope.toggleNotification(notification);\n }\n }\n }\n\n scope.allNotifications = notifications;\n // Preload 10 first? => Will result in many API calls\n // for (let index = 0; index < 10; index++) {\n // if (notifications.length > index) {\n // scope.toggleNotification(notifications[index]);\n // }\n // }\n scope.isLoading = false;\n });\n }\n loadNotifications();\n\n scope.toggleViewMode = function (viewMode) {\n loadNotifications();\n }\n scope.toggleNotification = function (notification) {\n if (notification.isOpen) {\n notification.isOpen = false;\n return;\n }\n notification.isOpen = true;\n notificationService().getActivityForNotification(notification.activityLogItemId).then(function (item) {\n notification.isLoaded = true;\n var payLoad = JSON.parse(item.payLoad);\n notification.payLoadText = item.payLoad;\n notification.payLoad = payLoad;\n });\n\n if (!notification.seenTime) {\n // Toggle as seen\n notificationService().seenNotification(notification.id).then(function () {\n\n });\n }\n };\n\n scope.markAllasRead = function() {\n notificationService().markAllAsSeen().then(function(){\n setAllAsRead();\n });\n }\n\n scope.archiveNotfication = function (notification) {\n notification.animation = \"fadeOutUp\";\n setTimeout(function () {\n var index = scope.notifications.indexOf(notification);\n scope.notifications.splice(index, 1);\n index = scope.allNotifications.indexOf(notification);\n scope.allNotifications.splice(index, 1);\n notificationService().archiveNotification(notification.id).then(function () {\n\n });\n }, 200);\n\n }\n\n function setAllAsRead() {\n scope.allNotifications.forEach(x => {\n x.seenTime = moment();\n });\n }\n\n function updateNotificationWithActionData(notification) {\n var targetAction = $filter('filter')(actions, { action: notification.action }, true);\n if (targetAction.length > 0) {\n notification.title = $translate.instant(targetAction[0].translateLabel);\n notification.actionSymbol = targetAction[0].actionSymbol;\n }\n }\n\n var translateOptions = {\n month: $translate.instant('COMMON_TIMEELAPSED_MONTH'),\n days: $translate.instant('COMMON_TIMEELAPSED_DAYS'),\n hours: $translate.instant('COMMON_TIMEELAPSED_HOURS'),\n mins: $translate.instant('COMMON_TIMEELAPSED_MINUTES'),\n seconds: $translate.instant('COMMON_TIMEELAPSED_SECONDS'),\n now: $translate.instant('COMMON_TIMEELAPSED_NOW')\n }\n var calculateTimeElapsed = function () {\n // Recalculate time elapsed\n scope.allNotifications.forEach(function (notification) {\n notification.timeElapsed = timeService.getTimeElapsed(notification.notificationTime, translateOptions);\n });\n }\n\n var updateTimer = $interval(calculateTimeElapsed, 5000);\n elem.on('$destroy', function () {\n $interval.cancel(updateTimer);\n });\n }\n }\n }]);\n","import { getUserProfile } from \"@common/stores/userStore\"\nimport * as boardService from \"@common/services/boardService\"\n\nangular\n .module('DigiLean')\n .directive(\"taskCommentMessage\", ['$uibModal', 'boardTaskService',\n function ($uibModal, boardTaskService) {\n return {\n templateUrl: 'taskCommentMessage.html',\n restrict: 'E',\n scope: {\n \"payLoad\": \"<\",\n },\n link: function (scope, elem, attrs) {\n scope.task = null;\n scope.isLoading = true;\n scope.users = [];\n scope.selectedCommentId = 0;\n scope.$watch('payLoad', function (payLoad) {\n if (!payLoad) return;\n scope.selectedCommentId = payLoad.Id;\n boardTaskService().get(payLoad.BoardTaskId).then(function (task) {\n scope.task = task;\n if (task.boardId && task.boardId > 0) {\n boardService.getUserListForBoard(task.boardId).then(function (users) {\n scope.users = users;\n });\n }\n });\n\n scope.currentUser = getUserProfile();\n boardTaskService().getCommentWithReplies(payLoad.BoardTaskId).then(function (model) {\n scope.comments = model.comments;\n });\n \n });\n \n scope.saveComment = function(comment) {\n comment.boardTaskId = scope.task.id;\n return boardTaskService().addComment(comment);\n };\n\n scope.deleteComment = function(comment) {\n return boardTaskService().deleteComment(scope.task.id, comment.id);\n };\n\n scope.openTask = function (activeTab) {\n if (!activeTab) activeTab = \"Info\";\n var options = {\n // archiveAvailable: true,\n // users: scope.users\n }\n\n $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'boardTask.html',\n controller: 'boardTaskController',\n resolve: {\n task: function () {\n return scope.task;\n },\n activeTab: function () {\n return activeTab;\n },\n options: function () {\n return options;\n }\n }\n });\n\n }\n }\n }\n }]);","import * as customerService from \"@common/services/customers/customerService\"\nimport { getUserProfile } from \"@common/stores/userStore\"\n\nangular\n .module('DigiLean')\n .directive(\"deviationCommentMessage\", ['$uibModal', 'deviationService',\n function ($uibModal, deviationService) {\n return {\n templateUrl: 'deviationCommentMessage.html',\n restrict: 'E',\n scope: {\n \"payLoad\": \"<\",\n },\n link: function (scope, elem, attrs) {\n scope.deviation = null;\n scope.isLoading = true;\n scope.users = [];\n scope.selectedCommentId = 0;\n scope.$watch('payLoad', function (payLoad) {\n if (!payLoad) return;\n scope.selectedCommentId = payLoad.Id;\n deviationService().get(payLoad.DeviationId).then(function (deviation) {\n scope.deviation = deviation;\n if (scope.deviation.followUpAssetId) {\n customerService.getUsersForAsset(scope.deviation.followUpAssetId).then(function (users) {\n scope.users = users;\n });\n }\n });\n // Get current user + users for commenting\n \n scope.currentUser = getUserProfile();\n deviationService().getComments(payLoad.DeviationId).then(function (model) {\n scope.comments = model.comments;\n });\n \n });\n \n scope.saveComment = function(comment) {\n return deviationService().addComment(scope.deviation.id, comment);\n };\n\n scope.deleteComment = function(comment) {\n return deviationService().deleteComment(scope.deviation.id, comment.id);\n };\n\n scope.openDeviation = function (activeTab) {\n if (!activeTab) activeTab = \"Info\";\n \n $uibModal.open({ backdrop: 'static',\n templateUrl: 'fullDeviation.html',\n controller: 'fullDeviationController',\n windowClass: 'full-screen',\n resolve: {\n deviation: function () {\n return scope.deviation;\n },\n activeTab: function () {\n return activeTab;\n }\n }\n });\n\n }\n }\n }\n }]);","import * as customerService from \"@common/services/customers/customerService\"\nimport { getUserProfile } from \"@common/stores/userStore\"\n\nangular\n .module('DigiLean')\n .directive(\"improvementCommentMessage\", ['$uibModal', 'suggestionService',\n function ($uibModal, suggestionService) {\n return {\n templateUrl: 'improvementCommentMessage.html',\n restrict: 'E',\n scope: {\n \"payLoad\": \"<\",\n },\n link: function (scope, elem, attrs) {\n scope.suggestion = null;\n scope.isLoading = true;\n scope.users = [];\n scope.selectedCommentId = 0;\n scope.$watch('payLoad', function (payLoad) {\n if (!payLoad) return;\n scope.selectedCommentId = payLoad.Id;\n suggestionService().get(payLoad.ImprovementSuggestionId).then(function (suggestion) {\n suggestion.dateStyleClass = getDateStyle(suggestion.dueDate);\n scope.suggestion = suggestion;\n if (scope.suggestion.assetId) {\n customerService.getUsersForAsset(scope.suggestion.assetId).then(function (users) {\n scope.users = users;\n });\n }\n });\n // Get current user + users for commenting\n scope.currentUser = getUserProfile();\n suggestionService().getComments(payLoad.ImprovementSuggestionId).then(function (model) {\n scope.comments = model.comments;\n });\n \n });\n\n function getDateStyle(date) {\n if (!date) return \"\";\n // Overdue check\n\n var overdue = \"\";\n var duration = moment.duration(moment().diff(moment(date)));\n var days = duration.asDays();\n if (days > 1) {\n overdue = \"overdue\";\n }\n return overdue;\n }\n \n scope.saveComment = function(comment) {\n comment.suggestionId = scope.suggestion.id;\n return suggestionService().addComment(comment);\n };\n\n scope.deleteComment = function(comment) {\n return suggestionService().deleteComment(scope.suggestion.id, comment.id);\n };\n\n scope.openSuggestion = function (activeTab) {\n if (!activeTab) activeTab = \"Info\";\n\n var modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'fullImprovementInfoForm.html',\n controller: 'fullImprovementModalController',\n windowClass: 'fullSuggestion-modal-window',\n resolve: {\n suggestion: function () {\n return scope.suggestion;\n },\n activeTab: function () {\n return activeTab;\n }\n }\n });\n\n }\n }\n }\n }]);","import { getUserProfile } from \"@common/stores/userStore\"\nimport * as employeeService from \"@common/services/employeeService\"\n\nangular\n .module('DigiLean')\n .directive(\"pageCommentAddedMessage\", ['learningService',\n function (learningService) {\n return {\n templateUrl: 'pageCommentAddedMessage.html',\n restrict: 'E',\n scope: {\n \"payLoad\": \"<\",\n },\n link: function (scope, elem, attrs) {\n scope.page = null;\n scope.isLoading = true;\n scope.users = [];\n scope.selectedCommentId = 0;\n scope.$watch('payLoad', function (payLoad) {\n if (!payLoad) return;\n scope.selectedCommentId = payLoad.Id;\n learningService().getPage(payLoad.LearningItemId).then(function (page) {\n scope.page = page;\n learningService().getLearningMaterial(page.learningMaterialId).then(function (material) {\n scope.learningMaterial = material;\n })\n });\n // Get current user + users for commenting\n \n scope.currentUser = getUserProfile()\n learningService().getPageComments(payLoad.LearningItemId).then(function (model) {\n scope.comments = model.comments;\n });\n \n employeeService.getList().then(function (data) {\n scope.users = data;\n });\n });\n\n\n scope.saveComment = function (comment) {\n comment.learningItemId = scope.page.id;\n return learningService().addPageComment(scope.page.id, comment);\n };\n\n scope.deleteComment = function (comment) {\n return learningService().deleteComment(scope.page.id, comment.id);\n };\n }\n }\n }]);","import * as customerService from \"@common/services/customers/customerService\"\n\nangular\n .module('DigiLean')\n .directive(\"licensesChangedMessage\", \n function () {\n return {\n templateUrl: 'licensesChangedMessage.html',\n restrict: 'E',\n scope: {\n \"payLoad\": \"<\",\n },\n link: function (scope, elem, attrs) {\n scope.actionResults = [];\n scope.isLoading = true;\n\n scope.$watch('payLoad', function (payLoad) {\n if (!payLoad) return;\n scope.actionResults = [];\n customerService.getLicenseChange(payLoad.Id).then(function (info) {\n scope.isLoading = false;\n scope.actionResults.push(info);\n });\n });\n }\n }\n });","import toaster from \"@common/components/toast\"\n\nvar DigiLean = angular.module(\"DigiLean\")\nDigiLean.component(\"myDigileanFeedback\", \n{\n templateUrl: \"mydigileanfeedback.html\",\n controller: ['suggestionService',\n function(suggestionService) {\n let $ctrl = this\n $ctrl.feedbacks = []\n $ctrl.showComments = function(fb) {\n fb.showComments = !fb.showComments\n }\n\n function getMyFeedBack() {\n suggestionService().getMyDigiLeanFeedback().then(data => {\n if (data && data.length > 0)\n $ctrl.feedbacks = data\n })\n }\n $ctrl.addcomment = function(event, fb) {\n const comment = event.detail\n const feedbackId = fb.id\n return suggestionService().commentOnFeedback(feedbackId, comment).then(comment => {\n getMyFeedBack()\n }, err => {\n toaster.error(\"Could not post comment\")\n })\n }\n $ctrl.$onInit = function() {\n getMyFeedBack()\n }\n }]\n})","import cronstrue from \"cronstrue\"\r\nimport {LitElement, html, css} from \"lit\"\r\nimport {customElement, property} from \"lit/decorators.js\"\r\n\r\n@customElement('quartz-cron-displayer')\r\nexport class DeviceInfo extends LitElement {\r\n \r\n static styles = css`\r\n :host {\r\n\t\t display: inline;\r\n\t }\r\n `\r\n \r\n options = {\r\n use24HourTimeFormat: true,\r\n verbose: true\r\n }\r\n\r\n @property({attribute: true})\r\n cronexp: string = \"\"\r\n\r\n render() {\r\n if (!this.cronexp || this.cronexp.startsWith(\"{\"))\r\n return html`Empty cron expression`\r\n\r\n this.title = this.cronexp\r\n\r\n const humanReadable = cronstrue.toString(this.cronexp, this.options)\r\n \r\n return html`\r\n ${humanReadable}\r\n `\r\n }\r\n}\r\n","import {LitElement, html, css} from \"lit\"\nimport {customElement, property} from \"lit/decorators.js\"\nimport { DiagramModified, DiagramIncomingMessage, DiagramOutgoingMessage } from \"./diagramEditor\"\nimport {getUserProfile} from \"@common/stores/userStore\"\nimport { Base64 } from \"js-base64\"\nimport envConfig from \"@common/envConfig\"\n// https://www.diagrams.net/doc/faq/embed-mode\n// https://www.diagrams.net/doc/faq/configure-diagram-editor\n\n@customElement('digilean-diagram-editor')\nexport class DigileanDiagramEditor extends LitElement {\n static self: DigileanDiagramEditor\n private config = {\n css: \"button.geBigButton { background: #1c84c6; color: #EEE } button.geBigButton:hover { background: #2095d5 }\",\n defaultLibraries: \"general;uml;er;bpmn;lean_mapping\",\n // enabledLibraries: [\"general\", \"uml\", \"er\", \"bpmn\", \"lean_mapping\"]\n }\n \n private language = \"en\"\n private urlParams = {\"dark\": \"0\", \"pv\": \"0\"}\n\n private drawDomain = envConfig.diagramsUrl // previously hardcoded to \"https://embed.diagrams.net\"\n private ui = \"min\" //\"sketch\" // \n\n private xml: string | null = \"\"\n private format = \"xmlsvg\"\n private svg = \"\"\n\n private libraries = false\n private frameStyle = \"position:absolute;border:0;width:100%;height:100%;\"\n //private hideBtns = \"saveAndExit=0&noSaveBtn=1&noExitBtn=1\"\n\n private frame: HTMLIFrameElement | null = null\n static styles = css`\n :host {\n display: block;\n height: 100%;\n max-width: 100%;\n }\n `\n\n constructor() {\n super()\n DigileanDiagramEditor.self = this\n }\n\n @property({attribute: true})\n title = \"\"\n\n @property({attribute: true})\n data = \"\"\n\n private ready = false\n getFrameStyle() {\n return this.frameStyle + ';left:' +\n document.body.scrollLeft + 'px;top:' +\n document.body.scrollTop + 'px;'\n }\n getFrameUrl() {\n const params = new URLSearchParams()\n let url = this.drawDomain\n params.append(\"embed\", \"1\")\n params.append(\"proto\", \"json\")\n params.append(\"spin\", \"1\")\n // hide buttons\n params.append(\"saveAndExit\", \"1\")\n params.append(\"noSaveBtn\", \"1\")\n params.append(\"noExitBtn\", \"0\")\n\n // if (this.ui != null)\n // params.append(\"ui\", this.ui)\n \n if (this.libraries)\n params.append(\"libraries\", \"1\")\n \n if (this.config != null) \n params.append(\"configure\", \"1\")\n \n if (this.urlParams != null) {\n Object.keys(this.urlParams).map(key => {\n const val = this.urlParams[key]\n params.append(key, val)\n })\n }\n if (this.language) {\n params.append(\"lang\", this.language)\n }\n let parms = params.toString()\n url += \"?\" + parms\n return url\n }\n \n postMessage(msg: DiagramOutgoingMessage) {\n if (!this.frame)\n this.frame = this.shadowRoot?.querySelector(\"iframe\") as HTMLIFrameElement\n \n if (this.frame) {\n this.frame?.contentWindow?.postMessage(JSON.stringify(msg), '*')\n }\n }\n handleMessageEvent(evt: MessageEvent) {\n const self = DigileanDiagramEditor.self\n \n if (evt.origin != self.drawDomain)\n return\n\n if (evt.data.length > 0) {\n try {\n const msg = JSON.parse(evt.data)\n if (msg != null)\n self.handleMessage(msg)\n }\n catch (e) {\n console.error(e)\n }\n }\n }\n dispatchCustomEvent(name: string, detail: any) {\n const options = {\n detail,\n bubbles: true,\n composed: true\n };\n this.dispatchEvent(new CustomEvent(name, options));\n }\n handleMessage(msg: DiagramIncomingMessage) {\n console.log(msg.event)\n if (msg.event == \"configure\") {\n this.configureEditor()\n }\n else if (msg.event == \"init\") {\n this.initializeEditor()\n }\n else if (msg.event == \"autosave\") {\n this.save(msg.xml!, true)\n }\n else if (msg.event == \"export\") {\n this.saveSvgAndExit(msg.data)\n }\n else if (msg.event == \"save\") {\n this.save(msg.xml!, false)\n this.xml = msg.xml!\n if (msg.exit) {\n this.export()\n }\n else {\n this.setStatus(\"allChangesSaved\", false)\n }\n }\n \n if (msg.event == \"exit\") {\n this.stopEditing()\n }\n }\n\n export() {\n this.postMessage({action: \"export\", format: this.format, xml: this.xml})\n }\n showTemplateDialog() {\n this.postMessage({action: \"template\", format: this.format})\n }\n save(xml: string, draft: boolean) {\n this.xml = xml\n }\n saveSvgAndExit(data) {\n const svgBase64 = data.substring(data.indexOf(',') + 1)\n const svg = Base64.decode(svgBase64) // use this for proper encoding, not atob\n this.dispatchCustomEvent(\"saveandexit\", svg)\n }\n stopEditing() {\n this.dispatchCustomEvent(\"exitnosave\", \"exitnosave\")\n }\n initializeEditor() {\n if (!this.data)\n return\n const data: DiagramOutgoingMessage = {\n action: \"load\",\n autosave: 0,\n saveAndExit: \"1\",\n modified: \"unsavedChanges\",\n xml: this.data,\n title: this.title\n }\n this.postMessage(data)\n }\n configureEditor() {\n this.postMessage({action: 'configure', config: this.config})\n }\n setStatus(messageKey: string, modified: DiagramModified) {\n this.postMessage({action: \"status\", messageKey: messageKey, modified: modified})\n }\n connectedCallback() {\n super.connectedCallback()\n window.addEventListener('message', this.handleMessageEvent)\n const userProfile = getUserProfile()\n if (userProfile)\n this.language = userProfile.preferredLanguage!\n this.ready = true\n }\n disconnectedCallback() {\n super.disconnectedCallback()\n window.removeEventListener('message', this.handleMessageEvent)\n }\n \n render() {\n if (this.ready) {\n const frameUrl = this.getFrameUrl()\n const frameStyle = this.getFrameStyle()\n return html`\n \n `\n }\n return html`
        Loading ...
        `\n }\n}","import { NgComponent } from \"@common/model/angularModel\"\nimport angular from \"angular\"\nconst DigiLean = angular.module(\"DigiLean\")\nconst html = String.raw\nDigiLean.component(\"digileanDiagram\", \n{\n bindings: {\n 'isEditPossible': '<',\n 'title': '<',\n 'svgInput': '<',\n 'svgHeight': '<',\n 'svgWidth': '<'\n },\n template: html`\n
        \n
        \n `,\n controller: ['$element', '$uibModal', function(this: NgComponent, $element, $uibModal) {\n const $ctrl = this\n \n $ctrl.svg = \"\"\n\n let divEl: HTMLDivElement\n let data = \"\"\n \n const setSvgImage = (svg: string) => {\n $ctrl.svg = svg\n if (divEl) {\n divEl.innerHTML = svg\n let svgEl = divEl.querySelector(\"svg\")\n if (svgEl) {\n data = svgEl.getAttribute(\"content\") as string\n svgEl.removeAttribute(\"content\")\n svgEl.removeAttribute(\"width\")\n svgEl.removeAttribute(\"height\")\n }\n }\n }\n \n // $ctrl.$onInit = function() {}\n\n function dispatchSvgChangedEvent() {\n const options = {\n detail: $ctrl.svg,\n bubbles: true,\n composed: true\n }\n $element[0].dispatchEvent(new CustomEvent(\"svg-changed\", options))\n }\n \n const openEditDialog = function () {\n const modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'DiagramEditorFullscreen.html',\n controller: 'DiagramEditorFullscreenController',\n windowClass: \"digilean-diagram-edit\",\n resolve: {\n data: () => data,\n title: () => $ctrl.title,\n showTemplates: () => $ctrl.showTemplates\n }\n })\n modalInstance.result.then(function (newSvg) {\n $ctrl.showTemplates = false\n // empty on discard\n if (newSvg) {\n setSvgImage(newSvg)\n dispatchSvgChangedEvent()\n }\n\n }, function (er) {\n console.log(er)\n })\n }\n\n \n $ctrl.edit = function(event) {\n event.preventDefault()\n event.stopPropagation()\n if ($ctrl.isEditPossible)\n openEditDialog()\n }\n\n const openTemplateDialog = function () {\n const modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'DiagramTemplateSelector.html',\n controller: 'DiagramTemplateSelectorController',\n windowClass: \"digilean-diagram-template-selector\",\n })\n modalInstance.result.then(function (res) {\n setSvgImage(res.templateSvg)\n dispatchSvgChangedEvent()\n if (res.name == \"Blank\")\n $ctrl.showTemplates = true\n openEditDialog()\n\n }, (er) => {\n console.log(er)\n })\n }\n\n $ctrl.$postLink = function() {\n let el = $element[0]\n el.triggerTemplate = openTemplateDialog // expose on element\n el.triggerEdit = openEditDialog // expose on element\n divEl = el.querySelector(\"#digilean-diagram\")\n if ($ctrl.svgInput) \n setSvgImage($ctrl.svgInput)\n else {\n setTimeout(() => {\n openTemplateDialog()\n }, 500)\n }\n setHeightAndWidth()\n }\n\n function setHeightAndWidth() {\n console.log(\"svgHeight\", $ctrl.svgHeight)\n console.log(\"svgWidth\", $ctrl.svgWidth)\n if (!divEl) return\n\n if ($ctrl.svgHeight)\n divEl.style.setProperty(\"height\", `calc(${$ctrl.svgHeight}px - 1em)`)\n \n if ($ctrl.svgWidth)\n divEl.style.setProperty(\"width\", `calc(${$ctrl.svgWidth}px - 1em)`)\n }\n $ctrl.$onChanges = function (changes) {\n if (changes.svgHeight && changes.svgHeight.currentValue) {\n setHeightAndWidth()\n }\n }\n }]\n})","import type { WidgetSettings } from \"@common/model/types\"\nimport angular from \"angular\"\nimport { calcDefaultAppFontSize, getDefaultAppTheme, getDefaultAppStyle } from \"@common/components/dashboard/designer/common/appStyleService\"\nimport { NgComponent } from \"@common/model/angularModel\"\n\nconst DigiLean = angular.module(\"DigiLean\")\n\nDigiLean.component(\"digileanDiagramApp\", \n{\n bindings: {\n 'isAdminMode': '<',\n 'settings': '<',\n 'layoutFactor': '<',\n 'userAccess': '<'\n },\n templateUrl: \"DigileanDiagramApp.html\",\n controller: ['$element', '$scope', 'authService', function(this: NgComponent, $element, $scope, authService) {\n const $ctrl = this\n \n $ctrl.title = \"Diagram\"\n $ctrl.canEdit = false\n $ctrl.isBoardDesigner = authService.hasRole(\"BoardDesigner\");\n $ctrl.titleChangedEvent = function($event: JQuery.Event) {\n $ctrl.title = $event.detail\n saveSettings()\n }\n $ctrl.svg = \"\"\n\n $ctrl.theme = getDefaultAppTheme()\n $ctrl.editInViewMode = false\n\n $ctrl.appStyle = getDefaultAppStyle()\n function calcStyles() {\n $ctrl.appStyle[\"font-size\"] = calcDefaultAppFontSize($ctrl.layoutFactor)\n }\n\n calcStyles()\n \n $ctrl.showTemplates = false\n let diagramEl = null\n\n function setSvg(svg: string) {\n $ctrl.svg = svg\n }\n \n function getCurrentSvgFromSettings() {\n const svg = $ctrl.settings.content\n setSvg(svg)\n }\n\n $ctrl.toggledEditViewMode = function() {\n saveSettings()\n }\n\n $ctrl.$onInit = function() {\n setSettingsInitially()\n }\n $ctrl.$postLink = function() {\n let el = $element[0]\n diagramEl = el.querySelector(\"digilean-diagram\")\n setTimeout(() => {\n resizeSvg()\n }, 500)\n }\n const setSettingsInitially = () => {\n if ($ctrl.settings) {\n const settingsNow = $ctrl.settings as WidgetSettings\n if (settingsNow.content)\n getCurrentSvgFromSettings()\n \n if (settingsNow.title)\n $ctrl.title = settingsNow.title\n \n if (settingsNow.theme)\n $ctrl.theme = settingsNow.theme\n \n if (settingsNow.editInViewMode)\n $ctrl.editInViewMode = settingsNow.editInViewMode\n }\n }\n\n function saveSettings() {\n let settings: WidgetSettings = {\n title: $ctrl.title,\n content: $ctrl.svg,\n editInViewMode: $ctrl.editInViewMode,\n theme: $ctrl.theme\n }\n dispatchCustomEvent(\"settings-changed\", { settings })\n }\n $ctrl.saveSettings = saveSettings\n function dispatchCustomEvent(name:string, detail: any) {\n const options = {\n detail,\n bubbles: true,\n composed: true\n }\n $element[0].dispatchEvent(new CustomEvent(name, options))\n }\n\n \n $ctrl.isEditPossible = function () {\n return ($ctrl.editInViewMode && ($ctrl.canEdit || $ctrl.isBoardDesigner)) || $ctrl.isAdminMode \n }\n \n\n const openTemplateDialog = function () {\n ///@ts-ignore\n diagramEl?.triggerTemplate()\n }\n $ctrl.template = openTemplateDialog\n\n $ctrl.themeChanged = function(event) {\n const orgEvt = event.originalEvent\n const theme = orgEvt.detail\n $ctrl.theme = theme\n saveSettings()\n }\n $ctrl.svgChanged = function(event) {\n const orgEvt = event.originalEvent\n const svg = orgEvt.detail\n $ctrl.svg = svg\n saveSettings()\n }\n $ctrl.$onChanges = function (changes) {\n if(changes.userAccess)\n {\n $ctrl.canEdit = changes.userAccess.currentValue.isAdmin || changes.userAccess.currentValue.assetRole == \"Member\" || changes.userAccess.currentValue.assetRole == \"Owner\";\n }\n if (changes.layoutFactor && changes.layoutFactor.currentValue)\n calcStyles()\n }\n\n $ctrl.height = 0\n $ctrl.width = 0\n function resizeSvg() {\n if (!$element) return\n let appEl = $element[0]\n\n let width = appEl.offsetWidth\n $ctrl.width = width\n let height = appEl.offsetHeight\n\n let headerEl = appEl.querySelector(\".app-header\")\n if (headerEl)\n height = height - headerEl.offsetHeight\n \n $ctrl.height = height\n }\n\n $scope.$on(\"widget-resized\", function () {\n resizeSvg()\n })\n }]\n})","import angular from \"angular\"\nconst DigiLean = angular.module('DigiLean')\nDigiLean.controller('DiagramEditorFullscreenController', ['$scope', '$uibModalInstance', 'data', 'title', 'showTemplates',\n function ($scope, $uibModalInstance, data, title, showTemplates) {\n \n $scope.title = title\n $scope.data = data\n $scope.ready = true\n $scope.show = !!showTemplates\n\n $scope.saveAndExit = function(event) {\n const orgEvt = event.originalEvent\n const newSvg = orgEvt.detail\n $uibModalInstance.close(newSvg)\n }\n $scope.exitNoSave = function(event) {\n $uibModalInstance.close()\n }\n\n let editorEl = document.querySelector(\"digilean-diagram-editor\")\n $scope.save = function () {\n if (!editorEl)\n editorEl = document.querySelector(\"digilean-diagram-editor\")\n ///@ts-ignore\n editorEl.export()\n }\n $scope.showTemplates = function() {\n if (!editorEl)\n editorEl = document.querySelector(\"digilean-diagram-editor\")\n ///@ts-ignore\n editorEl.showTemplateDialog()\n }\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel')\n }\n }])","import angular from \"angular\"\nimport * as staticFileService from \"@common/shared/staticFileService\"\n\nconst DigiLean = angular.module('DigiLean')\ninterface DigileanDiagramTemplate {\n imageUrl: string\n url: string\n name: string\n description: string\n}\n\nDigiLean.controller('DiagramTemplateSelectorController', ['$scope', '$uibModalInstance', '$translate',\n function ($scope, $uibModalInstance, $translate) {\n \n const templates: DigileanDiagramTemplate[] = [\n {\n imageUrl: staticFileService.previewImage(\"Diagram-preview-blank.jpg\"),\n url: staticFileService.diagramTemplate(\"BlankTemplate.drawio.svg\"),\n name: $translate.instant('DIAGRAM_TEMPLATE_BLANK'),\n description: \"Blank template\"\n },\n {\n imageUrl: staticFileService.previewImage(\"Diagram-preview-simplefishbone.jpg\"),\n url: staticFileService.diagramTemplate(\"SimpleFishboneTemplate.drawio.svg\"),\n name: $translate.instant('DIAGRAM_TEMPLATE_SIMPLE_FISHBONE'),\n description: \"Simple Fishbone template\"\n },\n {\n imageUrl: staticFileService.previewImage(\"Diagram-preview-fishbone.jpg\"),\n url: staticFileService.diagramTemplate(\"FishboneTemplate.drawio.svg\"),\n name: $translate.instant('DIAGRAM_TEMPLATE_FISHBONE'),\n description: \"Fishbone template\"\n },\n {\n imageUrl: staticFileService.previewImage(\"Diagram-preview-vsm.jpg\"),\n url: staticFileService.diagramTemplate(\"ValueStreamMapping.drawio.svg\"),\n name: $translate.instant('DIAGRAM_TEMPLATE_VALUE_STREAM_MAPPING'),\n description: \"Value Stream Mapping template\"\n },\n {\n imageUrl: staticFileService.previewImage(\"Diagram-preview-fivewhys.jpg\"),\n url: staticFileService.diagramTemplate(\"FiveWhysTemplate.drawio.svg\"),\n name: $translate.instant('DIAGRAM_TEMPLATE_FIVE_WHYS'),\n description: \"Five Whys template\"\n },\n {\n imageUrl: staticFileService.previewImage(\"Diagram-preview-spaghetti.jpg\"),\n url: staticFileService.diagramTemplate(\"Spaghetti.drawio.svg\"),\n name: $translate.instant('DIAGRAM_TEMPLATE_SPAGHETTI'),\n description: \"Spaghetti template\"\n }\n ]\n $scope.templates = templates\n $scope.ready = true\n \n const fetchTemplate = async (url: string) => {\n const res = await fetch(url)\n const svg = await res.text()\n return svg\n }\n\n $scope.selectTemplate = async function(template: DigileanDiagramTemplate) {\n const templateSvg = await fetchTemplate(template.url)\n $uibModalInstance.close({templateSvg, name: template.name})\n }\n \n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel')\n }\n }])","import angular from \"angular\"\nimport * as connectorAdminService from \"@common/services/admin/connectorAdminService\"\nimport toaster from \"@common/components/toast\"\nimport type { Connector } from \"@api\"\nimport { NgComponent } from \"@common/model/angularModel\"\n\nconst DigiLean = angular.module('DigiLean')\nDigiLean.component('integrationsAdmin', {\n templateUrl: \"integrationsAdmin.html\",\n controller: ['$scope', '$uibModal', '$translate', 'modalService',\n function(this: NgComponent, $scope, $uibModal, $translate, modalService) {\n let $ctrl = this\n \n $ctrl.connectors = []\n\n $ctrl.isKaizenAdmin = false\n \n $ctrl.$onInit = function() {\n loaddata()\n }\n\n //$ctrl.$onDestroy = function() {\n //uaSub.unsubscribe()\n //}\n async function loaddata() {\n const list = await connectorAdminService.getList()\n $ctrl.connectors = list\n }\n\n $ctrl.addConnector = async function () {\n const modalInstance = $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'newConnector.html',\n controller: 'newConnectorController',\n resolve: {}\n })\n \n await modalInstance.result.catch(err => {\n if (err !== \"cancel\")\n console.error(err)\n })\n }\n $ctrl.delete = async function (connector: Connector) {\n const translations = await $translate(['COMMON_CANCEL', 'COMMON_DELETE', 'ADMIN_MESSAGE_DELETE_CONNECTOR_CONFIRMATION'])\n const modalOptions = {\n closeButtonText: translations.COMMON_CANCEL,\n actionButtonText: translations.COMMON_DELETE,\n headerText: translations.COMMON_DELETE + ' ' + connector.name + '?',\n bodyText: translations.ADMIN_MESSAGE_DELETE_CONNECTOR_CONFIRMATION.replace('?', ' ') + connector.name + '?'\n }\n\n await modalService.showModal({}, modalOptions).catch(err => {\n if (err !== \"cancel\")\n console.error(err)\n })\n const deletedConnector = await connectorAdminService.deleteConnector(connector.id)\n $scope.publish(\"SendConnectorDeleted\", deletedConnector)\n\n const msg = await $translate('ADMIN_MESSAGE_CONNECTOR_DELETED')\n toaster.info(msg)\n }\n\n $ctrl.startConnector = function (connector: Connector) {\n $scope.publish(\"SendStartConnector\", {id: connector.id, customerId: connector.customerId})\n }\n\n $ctrl.stopConnector = function (connector: Connector) {\n $scope.publish(\"SendStopConnector\", {id: connector.id, customerId: connector.customerId})\n }\n\n\n // events //\n $scope.subscribe(\"ConnectorCreated\", async function (connector: Connector) {\n loaddata()\n const msg = await $translate('ADMIN_DATA_CONNECTOR_CREATED')\n toaster.info(msg + \": \" + connector.name)\n })\n $scope.subscribe(\"ConnectorUpdated\", async function (connector: Connector) {\n loaddata()\n const msg = await $translate('ADMIN_DATA_CONNECTOR_UPDATED')\n toaster.info(msg + \": \" + connector.name)\n })\n $scope.subscribe(\"ConnectorDeleted\", async function (connector: Connector) {\n loaddata()\n const msg = await $translate('ADMIN_DATA_CONNECTOR_DELETED')\n toaster.info(msg + \": \" + connector.name)\n })\n }\n ]\n})\n","import angular from \"angular\"\nimport toaster from \"@common/components/toast\"\nimport * as connectorAdminService from \"@common/services/admin/connectorAdminService\"\nimport type { Connector, Job } from \"@api\"\nimport { NgComponent } from \"@common/model/angularModel\"\n\nconst DigiLean = angular.module('DigiLean')\nDigiLean.component('connectorAdmin', {\n templateUrl: \"connectorAdmin.html\",\n controller: ['$scope', '$stateParams', '$translate', '$uibModal', 'modalService',\n function(this: NgComponent, $scope, $stateParams, $translate, $uibModal, modalService) {\n let $ctrl = this\n \n $ctrl.timezone = new Date().toTimeString().slice(9)\n $ctrl.jobs = []\n $ctrl.jobtypes = []\n\n let connectorId = $stateParams.id as string\n $ctrl.connector = {}\n\n $ctrl.isKaizenAdmin = false\n\n $ctrl.$onInit = function() {\n loaddatas()\n }\n\n async function loaddatas() {\n const list = await connectorAdminService.getJobs(connectorId)\n $ctrl.jobs = list\n const connector = await connectorAdminService.get(connectorId)\n $ctrl.connector = connector\n const jobtypes = await connectorAdminService.getJobTypes()\n $ctrl.jobtypes = jobtypes\n }\n\n $ctrl.updateConnector = async function () {\n const uptConnector = await connectorAdminService.update($ctrl.connector)\n $scope.publish(\"SendConnectorUpdated\", uptConnector)\n }\n \n $ctrl.startConnector = function (connector: Connector) {\n $ctrl.publish(\"SendStartConnector\", {id: connector.id, customerId: connector.customerId})\n }\n\n $ctrl.stopConnector = function (connector: Connector) {\n $ctrl.publish(\"SendStopConnector\", {id: connector.id, customerId: connector.customerId})\n }\n\n $ctrl.addJob = function () {\n $uibModal.open({ backdrop: 'static',\n animation: true,\n templateUrl: 'newJob.html',\n controller: 'newJobController',\n resolve: {\n connectorId: function () {\n return connectorId\n }\n }\n })\n }\n $ctrl.delete = async function (job: Job) {\n const translations = await $translate(['COMMON_CANCEL', 'COMMON_DELETE', 'ADMIN_MESSAGE_DELETE_JOB_CONFIRMATION'])\n const modalOptions = {\n closeButtonText: translations.COMMON_CANCEL,\n actionButtonText: translations.COMMON_DELETE,\n headerText: translations.COMMON_DELETE + ' ' + job.name + '?',\n bodyText: translations.ADMIN_MESSAGE_DELETE_JOB_CONFIRMATION.replace(' ?', ' ' + job.name + '?')\n };\n\n await modalService.showModal({}, modalOptions).catch(err => {\n if (err !== \"cancel\")\n console.error(err)\n })\n const deletedJob = await connectorAdminService.deleteJob(job.id)\n $scope.publish(\"SendJobDeleted\", deletedJob)\n\n const msg = await $translate('ADMIN_MESSAGE_JOB_DELETED')\n toaster.info(msg)\n }\n\n $ctrl.start = function (connector: Connector) {\n $scope.publish(\"SendStartConnector\", connector);\n }\n $ctrl.stop = function (connector: Connector) {\n $scope.publish(\"SendStopConnector\", connector);\n }\n $ctrl.runJobNow = function (job: Job) {\n $scope.publish(\"SendExecuteJob\", job);\n }\n \n $ctrl.errorsExpanded = function (job) {\n var id = '#collapseErrors' + job.id;\n var element = angular.element(document).find(id);\n return element.hasClass('in');\n }\n \n $ctrl.logsExpanded = function (job) {\n var id = '#collapseLogs' + job.id;\n var element = angular.element(document).find(id);\n return element.hasClass('in');\n }\n // events //\n $scope.subscribe(\"ConnectorUpdated\", async function (connector: Connector) {\n const msg = await $translate('ADMIN_MESSAGE_CONNECTOR_UPDATED')\n toaster.info(msg)\n })\n $scope.subscribe(\"JobCreated\", async function (job: Job) {\n loaddatas();\n const msg = await $translate('ADMIN_DATA_JOB_ADDED')\n toaster.info(msg + \": \" + job.name);\n })\n $scope.subscribe(\"JobUpdated\", async function (job: Job) {\n loaddatas()\n const msg = await $translate('ADMIN_DATA_JOB_UPDATED')\n toaster.info(msg + \": \" + job.name)\n })\n $scope.subscribe(\"JobDeleted\", async function (job: Job) {\n loaddatas()\n const msg = await $translate('ADMIN_DATA_JOB_DELETED')\n toaster.info(msg + \": \" + job.name)\n })\n $scope.subscribe(\"JobExecuted\", async function (job: Job) {\n const msg = await $translate('ADMIN_DATA_JOB_EXECUTED')\n toaster.info(msg + \": \" + job.name)\n })\n }\n ]\n})\n","// Controller for the actual modal\nimport * as connectorAdminService from \"@common/services/admin/connectorAdminService\"\nconst DigiLean = angular.module('DigiLean')\nDigiLean.controller('newJobController', ['$scope', '$uibModalInstance', 'dataSourceService', 'connectorId',\n function ($scope, $uibModalInstance, dataSourceService, connectorId) {\n \n $scope.connectorId = connectorId\n \n $scope.job = { connectorId: $scope.connectorId, cronExpression: '0/1 * * * ? *' }\n $scope.jobTypes = []\n $scope.dataSources = []\n\n $scope.cronOptions = {\n formInputClass: 'form-control cron-gen-input', // Form input class override\n formSelectClass: 'form-control cron-gen-select', // Select class override\n formRadioClass: 'cron-gen-radio', // Radio class override\n formCheckboxClass: 'cron-gen-checkbox', // Radio class override\n hideMinutesTab: false, // Whether to hide the minutes tab\n hideHourlyTab: false, // Whether to hide the hourly tab\n hideDailyTab: false, // Whether to hide the daily tab\n hideWeeklyTab: false, // Whether to hide the weekly tab\n hideMonthlyTab: false, // Whether to hide the monthly tab\n hideYearlyTab: false, // Whether to hide the yearly tab\n hideAdvancedTab: false, // Whether to hide the advanced tab\n use24HourTime: false, // Whether to show AM/PM on the time selectors\n hideSeconds: false // Whether to show/hide the seconds time picker\n }\n\n $scope.ok = async function () {\n $scope.job.enabled = true\n const newjob = await connectorAdminService.addJob($scope.job)\n $scope.publish(\"SendJobCreated\", newjob)\n $uibModalInstance.close()\n }\n\n var loadData = async function () {\n const jobtypes = await connectorAdminService.getJobTypes()\n $scope.jobTypes = jobtypes\n\n\n const list = await dataSourceService().getList()\n $scope.dataSources = list\n }\n\n $scope.close = function () {\n $uibModalInstance.dismiss('cancel')\n }\n\n loadData()\n }])","import angular from \"angular\"\nconst DigiLean = angular.module('DigiLean')\nDigiLean.controller('jobScheduleDialogController', ['$scope', '$uibModalInstance', 'cronExpression',\n function ($scope, $uibModalInstance, cronExpression) {\n $scope.cronExpression = cronExpression\n $scope.cronOptions = {\n use24HourTime: true,\n cronFormat: 'quartz',\n formInputClass: 'form-control cron-gen-input',\n formSelectClass: 'form-control cron-gen-select',\n formRadioClass: 'cron-gen-radio',\n formCheckboxClass: 'cron-gen-checkbox',\n hideMinutesTab: false,\n hideHourlyTab: false,\n hideDailyTab: false,\n hideWeeklyTab: false,\n hideMonthlyTab: false,\n hideYearlyTab: false,\n hideAdvancedTab: false,\n hideSeconds: true\n }\n $scope.ok = function() {\n $uibModalInstance.close({cronExpression: $scope.cronExpression})\n }\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel')\n }\n }])","import \"./jobScheduleDialog\"\nimport * as connectorAdminService from \"@common/services/admin/connectorAdminService\"\nimport angular from \"angular\"\nimport type { DataSource, Job, JobPart } from \"@api\"\nimport toaster from \"@common/components/toast\"\nimport dialog from \"@common/components/digilean/DigileanDialog\"\nimport { NgComponent } from \"@common/model/angularModel\"\n\nconst DigiLean = angular.module('DigiLean')\n\ninterface JobAdminComponent extends NgComponent {\n job?: Job\n selectedDataSource: Partial\n}\n\nDigiLean.component('jobAdmin', {\n templateUrl: \"jobAdmin.html\",\n controller: ['$scope', '$stateParams', '$translate', 'dataSourceService', '$uibModal',\n function(this: JobAdminComponent, $scope, $stateParams, $translate, dataSourceService, $uibModal) {\n let $ctrl = this\n let jobId = parseInt($stateParams.id)\n \n $ctrl.selectedDataSource = { id: 0}\n $ctrl.selectDataSource = function() {\n if ($ctrl.job)\n $ctrl.job.dataSourceId = $ctrl.selectedDataSource.id\n }\n $ctrl.jobTypes = []\n $ctrl.dataSources = []\n \n $scope.subscribe(\"JobUpdated\", async function (job: Job) {\n const msg = await $translate('ADMIN_MESSAGE_JOB_UPDATED')\n toaster.info(msg)\n })\n\n const loadData = async () => {\n const job = await connectorAdminService.getJob(jobId)\n $ctrl.job = job\n \n if (job.dataSourceId)\n $ctrl.selectedDataSource.id = job.dataSourceId\n \n const jobtypes = await connectorAdminService.getJobTypes()\n $ctrl.jobTypes = jobtypes\n \n const dataSources = await dataSourceService().getList()\n $ctrl.dataSources = dataSources\n }\n \n $ctrl.$onInit = function() {\n loadData()\n }\n\n $ctrl.updateJob = async () => {\n if (!$ctrl.job)\n return\n const jobUpdated = await connectorAdminService.updateJob($ctrl.job)\n $scope.publish('SendJobUpdated', jobUpdated)\n $ctrl.job = jobUpdated\n }\n $ctrl.formatError = function(error) {\n if (error.required && error.required.length > 0) {\n const fieldsRequired = error.required.map(field => field.$name)\n return \"these fields are required: \" + fieldsRequired.join(',')\n }\n return \"\"\n }\n\n $ctrl.openTemplateDialog = async () => {\n if (!$ctrl.job)\n return\n const modalInstance = $uibModal.open({\n backdrop: 'static',\n animation: true,\n templateUrl: 'jobScheduleDialog.html',\n controller: 'jobScheduleDialogController',\n resolve: { cronExpression: () => $ctrl.job!.cronExpression }\n })\n try {\n const res = await modalInstance.result.catch((er: any) => console.log(er))\n $ctrl.job.cronExpression = res.cronExpression\n } catch (e) {}\n }\n $ctrl.newJobPart = async () => {\n let jobPart: JobPart = {\n enabled: true\n }\n \n try {\n const res = await dialog.openForm({\n title: \"ADMIN_DATA_NEW_JOBPART\",\n okBtnText: \"COMMON_SAVE\",\n booleanResult: false\n }, \"\", jobPart)\n \n jobPart.config = res.config\n jobPart.name = res.name\n jobPart.source = res.source\n jobPart.jobPartType = res.jobPartType\n \n const job = structuredClone($ctrl.job) as Job\n if (!job.jobParts || !Array.isArray(job.jobParts))\n job.jobParts = []\n job.jobParts.push(jobPart)\n $ctrl.job = job\n $ctrl.updateJob()\n }\n catch(err) {\n if (err != \"cancel\")\n console.log(err)\n }\n }\n $ctrl.onJobPartUpdate = (e: CustomEvent) => {\n const jobpartUpdated = e.detail as JobPart\n const job = structuredClone($ctrl.job) as Job\n if (jobpartUpdated.id && job.jobParts) {\n let jobparts = job.jobParts as JobPart[]\n const index = jobparts.findIndex(j => j.id === jobpartUpdated.id)\n if (index > -1) {\n jobparts[index] = jobpartUpdated\n }\n $ctrl.job = job\n $ctrl.updateJob()\n }\n }\n }\n ]\n})\n","import {LitElement, html, css} from \"lit\"\nimport {customElement, property} from \"lit/decorators.js\"\nimport { JobPart } from \"@api\"\n\n@customElement('edit-jobpart-dialog')\nexport class EditJobPartDialog extends LitElement {\n static styles = css`\n :host {\n display: flex;\n flex-direction: column;\n gap: 0.6rem;\n }\n .display {\n color: var(--digilean-primary-text);\n font-size: 0.9rem;\n }\n `\n \n @property({attribute: false})\n jobPart: JobPart = {name: \"\", config: \"{}\", jobPartType: \"\", source: \"\"}\n\n nameChange(e: Event) {\n const value = (e.target as HTMLInputElement).value\n console.log(\"nameChange:\", value)\n \n }\n configChange(e) {\n const value = (e.target as HTMLInputElement).value\n console.log(\"configChange:\", value)\n }\n \n render() {\n if (!this.jobPart)\n return html`

        loading

        `\n\n return html`\n \n \n \n \n \n \n \n \n `\n }\n}\n","import { JobRunLog, JobRunResult, JobRunState } from \"@api\"\nimport {LitElement, html, css} from \"lit\"\nimport {customElement, property} from \"lit/decorators.js\"\nimport { formatDateTime} from \"@common/services/datetime/dateTimeFormattingLocale\"\n\n@customElement('jobrun-state')\nexport class JobRunStateViewer extends LitElement {\n\n static styles = css`\n :host {\n height: var(--digilean-icon-height, 2rem);\n width: var(--digilean-icon-width, 2rem);\n display: inline-block;\n }\n `\n @property({attribute: true})\n state: JobRunState = JobRunState.Running\n\n @property({attribute: true})\n result: JobRunResult = JobRunResult.Success\n\n @property({attribute: true})\n date: string = \"\"\n\n render() {\n let dateFormatted = \"\"\n if (this.date) {\n let date = new Date(this.date)\n dateFormatted = `start ${formatDateTime(date)}`\n }\n this.title = `${this.state} ${dateFormatted}`\n if (this)\n\n switch (this.state) {\n case JobRunState.Running:\n return html``\n case JobRunState.Completed:\n if (this.result == JobRunResult.Failed)\n return html``\n return html``\n \n // case JobRunState.WithErrors:\n // return html``\n default:\n return html``\n }\n }\n}\n","import { JobRunLog, JobRunState } from \"@api\"\nimport {LitElement, html, css} from \"lit\"\nimport {customElement, property} from \"lit/decorators.js\"\n\nimport moment from \"moment\"\n\n@customElement('jobrun-duration')\nexport class JobRunStateViewer extends LitElement {\n _timerInterval = 0\n static styles = css`\n :host {\n height: var(--digilean-icon-height, 2rem);\n width: var(--digilean-icon-width, 2rem);\n display: inline-flex;\n flex-direction: row;\n font-size: 8px;\n }\n span {\n flex-basis: 0;\n flex-grow: 1;\n flex-shrink: 1;\n }\n `\n\n private _jobrun: JobRunLog | undefined\n\n get jobrun() {\n return this._jobrun!\n }\n @property({attribute: false})\n set jobrun(value: JobRunLog) {\n this._jobrun = value\n if (this._jobrun.state == JobRunState.Running){\n if (!this._timerInterval)\n this._timerInterval = window.setInterval(() => this.requestUpdate(), 5000)\n } else\n this.removeTimer()\n }\n\n removeTimer() {\n if (this._timerInterval)\n window.clearInterval(this._timerInterval)\n }\n\n disconnectedCallback() {\n super.disconnectedCallback()\n this.removeTimer()\n }\n render() {\n\n if (!this.jobrun || !this.jobrun.started)\n return html``\n\n let start = new Date(this.jobrun.started)\n let end = new Date()\n\n if (this.jobrun.finished)\n end = new Date(this.jobrun.finished)\n else if (this.jobrun.state !== JobRunState.Running)\n return html`n/a`\n \n const startDate = moment(start)\n const endDate = moment(end)\n const diff = endDate.diff(startDate, \"seconds\")\n \n let diffS = diff\n let diffM = 0\n if (diff > 59) {\n diffM = Math.floor(diff / 60)\n diffS = diff % 60\n }\n\n if (diffM == 0) {\n return html`\n \n `\n } else {\n \n return html`\n \n ` \n }\n }\n}\n","import { JobRunState, MonitorState } from \"@api\"\nimport {LitElement, html, css} from \"lit\"\nimport {customElement, property} from \"lit/decorators.js\"\nimport { formatDateTime} from \"@common/services/datetime/dateTimeFormattingLocale\"\n\n@customElement('connector-state')\nexport class ConnectorStateViewer extends LitElement {\n\n static styles = css`\n :host {\n height: var(--digilean-icon-height, 2rem);\n width: var(--digilean-icon-width, 2rem);\n display: inline-block;\n }\n `\n @property({attribute: true})\n state: MonitorState = MonitorState.NoRun\n\n @property({attribute: true})\n date: string = \"\"\n\n render() {\n let dateFormatted = \"\"\n if (this.date) {\n let date = new Date(this.date)\n dateFormatted = `start ${formatDateTime(date)}`\n }\n this.title = `${this.state} ${dateFormatted}`\n switch (this.state) {\n case MonitorState.Success:\n return html``\n case MonitorState.RecentError:\n return html``\n case MonitorState.NoRun:\n return html``\n default:\n return html``\n }\n }\n}\n","import { ConnectorMonitorList, ConnectorMonitor, TableParams, TableValues, LogMessageTableValues, JobRunLog, LogMessage, JobMonitor } from \"@api\"\nimport backend from \"@common/services/backendHttp\"\n\nconst resourceUrl = \"api/monitoring\"\n\nexport const getConnector = async (id: string, count?: number, page?: number) => {\n let url = `${resourceUrl}/${id}`\n if (count)\n url = `${url}/${count}`\n if (page)\n url = `${url}/${page}`\n return await backend.get(url)\n}\n\nexport const getJobRuns = async (id: string, jobId: number, count?: number, page?: number) => {\n let url = `${resourceUrl}/${id}/jobRuns/${jobId}`\n if (count)\n url = `${url}/${count}`\n if (page)\n url = `${url}/${page}`\n return await backend.get(url)\n}\n\nexport const getJobRunLogs = async (runId: string, jobPartId?: number | null) => {\n let url = `${resourceUrl}/jobs/logs/${runId}`\n if (jobPartId)\n url = `${url}?jobPartId=${jobPartId}`\n return await backend.get(url)\n}\n\nexport const getNextRun = async (jobId: number) => {\n const url = `${resourceUrl}/jobs/${jobId}/nextrun`\n return await backend.get(url)\n}\n\nexport const getConnectorsCompany = async () => {\n return await backend.get(resourceUrl)\n}\n\nexport const getConnectorsAll = async () => {\n const url = `${resourceUrl}/allconnectors`\n return await backend.get(url)\n}\n\nexport const getLogsPaged = async (jobId: number, count: number = 25, page: number = 1, typeFilter: string[] = []) => {\n const url = `${resourceUrl}/logs/${jobId}`\n let options: TableParams = {\n count,\n page\n }\n if (typeFilter.length > 0) {\n options.filters = [\n {\n sourceColumn: \"type\",\n operator: \"InList\",\n items: typeFilter\n }\n ]\n }\n return await backend.post(url, options)\n}\n\nexport function getLastErrors(connectorId: string, days?: number) {\n let url = `${resourceUrl}/${connectorId}/lastErrors`\n if (days)\n url = `${url}/${days}`\n return backend.get(url)\n}","import * as monitoringService from \"@common/services/data/monitoringService\"\nimport moment from \"moment\"\nimport toaster from \"@common/components/toast\"\nimport { userFullProfile } from \"@common/stores/userStore\"\nimport angular from \"angular\"\nimport { ConnectorMonitorList, Heartbeat, LogMessage, LogMessageType, MonitorState } from \"@api\"\nimport type { Subscription } from \"rxjs\"\nimport dialog from \"@common/components/digilean/DigileanDialog\"\nimport { NgComponent } from \"@common/model/angularModel\"\n\nconst DigiLean = angular.module('DigiLean')\nDigiLean.component('integrationsMonitor', {\n templateUrl: \"integrationsMonitor.html\",\n bindings: {\n 'showAll': '<',\n },\n controller: ['$scope',\n function(this: NgComponent, $scope) {\n let $ctrl = this\n\n $ctrl.loading = false\n let sub: Subscription | null = null\n\n $ctrl.company = { name: \"\" }\n $ctrl.$onInit = function() {\n sub = userFullProfile.subscribe(ufp => {\n if (ufp && ufp.company)\n $ctrl.company = ufp.company\n })\n loaddata()\n }\n $ctrl.$onDestroy = function() {\n sub?.unsubscribe()\n }\n $ctrl.connectors = []\n\n $ctrl.isValidDate = function (date) {\n var result = moment(date)\n return result.isValid\n }\n\n async function loaddata() {\n console.log(\"load all monitor overview data\")\n $ctrl.loading = true\n let list: ConnectorMonitorList[] = []\n\n try {\n if ($ctrl.showAll)\n list = await monitoringService.getConnectorsAll()\n else \n list = await monitoringService.getConnectorsCompany()\n\n $ctrl.connectors = list\n }\n catch (error) {\n console.error(error)\n toaster.error(\"Something went wrong when loading monitor data\")\n }\n finally {\n $ctrl.loading = false\n }\n }\n $ctrl.reload = loaddata\n\n // events //\n $scope.subscribe(\"NewLogMessage\", function (log: LogMessage) {\n if (log.type == LogMessageType.Error) {\n console.log(\"NewLogMessage log.type,Error, set lastday to error\", log)\n if (log.connectorId) {\n const connector = $ctrl.connectors.find(c => c.id) as ConnectorMonitorList\n if (connector) {\n connector.stateLastDay = MonitorState.RecentError\n }\n }\n }\n })\n \n $scope.subscribe(\"ConnectorCreated\", function (connector) {\n toaster.info(\"New Connector created: \" + connector.name)\n })\n $scope.subscribe(\"ConnectorUpdated\", function (connector) {\n toaster.info(\"Connector updated: \" + connector.name)\n })\n $scope.subscribe(\"ConnectorDeleted\", function (connector) {\n toaster.info(\"Connector deleted: \" + connector.name)\n })\n\n function openLastErrorLog (connectorId: string, days: number) {\n let el = document.createElement(\"monitor-job-log\")\n el.connectorid = connectorId\n el.setAttribute(\"connectorid\", connectorId)\n el.days = days\n \n dialog.openElement({\n title: `Last ${days} days errors`,\n hideOkBtn: true,\n }, el)\n }\n $scope.openLastErrorLog = openLastErrorLog\n }\n ]\n})","import { ConnectorMonitor, Heartbeat } from \"@api\"\nimport * as monitoringService from \"@common/services/data/monitoringService\"\nimport angular from \"angular\"\nimport { debounce } from \"lodash\"\n\nimport { NgComponent } from \"@common/model/angularModel\"\n\ninterface IConnectorMonitor extends NgComponent {\n data: ConnectorMonitor\n loading: boolean\n showNumRuns: number\n pageNum: number\n connectorId: string\n}\n\nconst DigiLean = angular.module('DigiLean')\nDigiLean.component('connectorMonitor', {\n templateUrl: \"connectorMonitor.html\",\n controller: ['$stateParams',\n function(this: IConnectorMonitor, $stateParams) {\n let $ctrl = this\n \n $ctrl.loading = false\n $ctrl.showNumRuns = 7\n $ctrl.pageNum = 1\n $ctrl.connectorId = $stateParams.id as string\n \n $ctrl.runs = {}\n $ctrl.data = { id: $ctrl.connectorId,name: \"\", customerId: 0 }\n $ctrl.$onInit = function() {\n loadData()\n }\n \n const loadData = async () => {\n $ctrl.loading = true\n\n const data = await monitoringService.getConnector($ctrl.connectorId, $ctrl.showNumRuns, $ctrl.pageNum)\n \n $ctrl.data = data\n $ctrl.loading = false\n }\n $ctrl.reload = function() {\n reloadDebounced()\n }\n\n const reloadDebounced = debounce(loadData, 1000)\n }\n ]\n})","import angular from \"angular\"\nimport { getJob } from \"@common/services/admin/connectorAdminService\"\nimport { getLogsPaged } from \"@common/services/data/monitoringService\"\nimport { LogMessageType } from \"@api\"\nimport { cloneDeep } from \"lodash\"\nimport { NgComponent } from \"@common/model/angularModel\"\n\ntype LoggTypeFilter = { \n [k in LogMessageType]: boolean\n}\n\nconst DigiLean = angular.module('DigiLean')\nDigiLean.component('jobLogs', {\n templateUrl: \"jobLogs.html\",\n controller: ['$stateParams',\n function(this: NgComponent, $stateParams) {\n let $ctrl = this\n\n $ctrl.loading = false\n $ctrl.jobId = $stateParams.id as string\n $ctrl.job = {}\n $ctrl.connectorId = 0\n $ctrl.connectorName = \"\"\n $ctrl.$onInit = function() {\n getJobData()\n getLogData()\n }\n $ctrl.totalItems = 0\n let pageNum = 1\n let pageSize = 50\n const getJobData = async () => {\n const job = await getJob($ctrl.jobId)\n $ctrl.job = job\n $ctrl.connectorId = job.connectorId\n $ctrl.connectorName = job.connectorName\n }\n\n $ctrl.logData = { total: 0, items: []}\n const getLogData = async () => {\n const data = await getLogsPaged($ctrl.jobId, pageSize, pageNum)\n $ctrl.logData = data\n $ctrl.totalItems = data.total\n }\n\n const getLogDataFiltered = async (filter: LoggTypeFilter) => {\n\n const typeFilter = Object.keys(filter).reduce((sum: string[], curr: string) => {\n if (filter[curr])\n sum.push(curr)\n return sum\n }, [])\n \n const data = await getLogsPaged($ctrl.jobId, pageSize, pageNum, typeFilter)\n $ctrl.logData = data\n $ctrl.totalItems = data.total\n }\n\n $ctrl.pageNumChanged = function($event) {\n pageNum = $event.detail.pageNum ? $event.detail.pageNum : 1\n getLogData()\n }\n $ctrl.pageSizeChanged = function($event) {\n pageSize = $event.detail.pageSize ? $event.detail.pageSize : 10\n getLogData()\n }\n\n $ctrl.filter = {}\n $ctrl.logtypes = LogMessageType\n for (let key in $ctrl.logtypes)\n $ctrl.filter[key] = false\n \n $ctrl.filterToggle = function(key: string) {\n const filter = cloneDeep($ctrl.filter) as LoggTypeFilter\n filter[key] = !filter[key]\n getLogDataFiltered(filter)\n }\n }\n ]\n})","import { LogMessage, LogMessageType } from \"@api\"\nimport {LitElement, html, css} from \"lit\"\nimport {customElement, property} from \"lit/decorators.js\"\nimport { classMap } from \"lit/directives/class-map.js\"\n\n@customElement('logmessage-viewer')\nexport class JobRunStateViewer extends LitElement {\n \n static styles = css`\n :host {\n display: block;\n }\n article {\n display: flex;\n flex-direction: row;\n font-size: 1rem;\n gap: 0.6rem;\n }\n .error {\n color: var(--digilean-error);\n }\n .success {\n color: var(--digilean-success);\n }\n .warning {\n color: var(--digilean-warning)\n }\n .jobstartstop {\n color: var(--digilean-primary)\n }\n `\n\n @property({attribute: true})\n log: LogMessage | null = null\n\n get showjobpartid() {\n return this._showJobPartId.toString()\n }\n private _showJobPartId = false\n @property({attribute: true})\n set showjobpartid(value: string) {\n if (value == \"false\")\n this._showJobPartId = false\n else\n this._showJobPartId = true\n }\n\n render() {\n if (!this.log)\n return html``\n \n const classes = {\n error: this.log.type == LogMessageType.Error,\n success: this.log.type == LogMessageType.Success,\n warning: this.log.type == LogMessageType.Warning,\n jobstartstop: (this.log.type == LogMessageType.JobStarted || this.log.type == LogMessageType.JobFinished)\n }\n return html`\n
        \n \n
        ${this.log.type}
        \n
        ${this.log.message}
        \n ${this.log.exception ? html`
        ${this.log.exception}
        ` : \"\"}\n ${this.log.jobPartId && this._showJobPartId ? html`
        jobPartId ${this.log.jobPartId}
        ` : \"\"}\n
        \n `\n }\n}\n","\nimport angular from \"angular\"\nimport { getAuthUser } from \"@common/stores/userStore\"\nimport { NgComponent } from \"@common/model/angularModel\"\n\nconst DigiLean = angular.module('DigiLean')\nDigiLean.component('monitoringAll', {\n templateUrl: \"monitoringAll.html\",\n controller: function() {\n let $ctrl = this as NgComponent\n $ctrl.showAll = false\n\n const user = getAuthUser()\n \n const hasRole = user.roles.hasRole(\"KaizenAdmin\")\n $ctrl.showAll = hasRole\n }\n})","import \"@common/components/users/userBadge.css\"\n//import { NgComponent } from \"@common/model/angularModel\"\n//import { UserShortInfoWithImage, getProfileImageUrl } from \"@common/services/user/profileImageService\"\nimport angular from \"angular\"\n\n// interface UserBadgeCtrl extends NgComponent {\n// user: UserShortInfoWithImage\n// }\n\nconst digiLean = angular.module('DigiLean')\ndigiLean.component(\"userBadge\", {\n templateUrl: 'userBadge.html',\n bindings: {\n user: '<',\n showFullName: '<',\n big: '<'\n },\n controller: function() {\n // TODO: We should use this component instead of populating user lists with images everywhere\n\n // const $ctrl = this as UserBadgeCtrl\n\n // async function checkAndGetProfileImage() {\n // if ($ctrl.user && !$ctrl.user.profileImage)\n // $ctrl.user.profileImageUrl = await getProfileImageUrl($ctrl.user.userId!, \"ExtraSmall\")\n // }\n // $ctrl.$onInit = function() {\n // checkAndGetProfileImage()\n // }\n }\n})","import angular from \"angular\"\nimport {html} from \"@common/services/template/templateLiteral\"\nimport '@common/shared/dates/datePicker.css'\nimport \"./scalableText.css\"\n\nconst DigiLean = angular.module(\"DigiLean\")\nDigiLean.component(\"scalableText\", \n{\n bindings: {\n 'text': '<'\n },\n controller: function() {\n // let $ctrl = this\n // $ctrl.$onInit = function() {\n // console.log(\"scalableText\", $ctrl.text)\n // }\n //$ctrl.$onDestroy = function() {}\n },\n template: html`\n \n \n {{$ctrl.text}}\n \n \n `\n})","import angular from \"angular\"\nimport moment from \"moment\"\nimport '@common/shared/dates/datePicker.css'\nimport { NgComponent } from \"@common/model/angularModel\"\n// import \"./scalableText.css\"\n\nconst DigiLean = angular.module(\"DigiLean\")\nDigiLean.component(\"kpiMonthSelector\", \n{\n bindings: {\n 'statusByMonth': '<',\n },\n controller: ['$element', function(this: NgComponent, $element) {\n let $ctrl = this\n\n $ctrl.selectedMonth = moment().format('MMM')\n $ctrl.selectedYear = moment().year()\n $ctrl.currentYear = moment().year()\n $ctrl.monthNames = []\n $ctrl.months = [0,1,2,3,4,5,6,7,8,9,10,11]\n\n $ctrl.$onInit = function() {\n setMonthNames()\n }\n\n $ctrl.changeYear = function(change){\n $ctrl.selectedYear = $ctrl.selectedYear + change\n dispatchCustomEvent(\"selected-year-changed\", $ctrl.selectedYear)\n }\n $ctrl.changeToMonth = function(month) {\n $ctrl.selectedMonth = moment().month(month).format('MMM')\n dispatchCustomEvent(\"selected-month-changed\", month)\n }\n // $ctrl.$onDestroy = function() {}\n \n function setMonthNames(){\n var threeletters = moment.monthsShort(\"-MMM-\")\n for(var i=0; i({\n title: \"COMMON_CONFIGURATION\",\n okBtnText: \"COMMON_SAVE\",\n booleanResult: false\n }, dialogEl)\n\n jobPart.config = res.config\n jobPart.name = res.name\n jobPart.source = res.source\n jobPart.jobPartType = res.jobPartType\n this.requestUpdate()\n\n this.emitUpdate(jobPart)\n }\n catch (err) {\n if (err != \"cancel\")\n console.error(err)\n }\n }\n toggleCheck(jobpart: JobPart) {\n jobpart.enabled = !jobpart.enabled\n }\n render() {\n if (!this.job)\n return html`

        loading

        `\n\n return html`\n \n \n \n \n \n \n \n \n \n \n \n \n ${this.job.jobParts?.map(jobPart => {\n return html`\n \n \n \n \n \n \n \n \n `\n })}\n \n \n
        #Job Part Type
        \n this.toggleCheck(jobPart)}\n />\n ${jobPart.name}${jobPart.source}${jobPart.jobPartType}\n ${jobPart.config}\n this.openConfigEdit(jobPart)}>edit\n
        \n `\n }\n\n emitUpdate(jobpart: JobPart) {\n const options = {\n detail: jobpart,\n bubbles: false,\n composed: true\n }\n this.dispatchEvent(new CustomEvent(\"jobpart-update\", options))\n }\n}\n","import { JobMonitor, JobPart, JobRun, JobRunLog, JobRunResult, JobRunState, LogMessage, LogMessageType } from \"@api\"\nimport { getJobRunLogs } from \"@common/services/data/monitoringService\"\nimport dialog from \"@common/components/digilean/DigileanDialog\"\nimport { translateLabel } from \"@common/services/language/DigiLeanLang\"\n\ninterface JobRunMatrix {\n nextRun?: string\n main: JobRun[]\n parts: Record\n}\n\nexport interface JobMatrix extends Record {}\n\nexport function CapJobs (jobs: JobMonitor[], showRuns: number) {\n if (jobs && Array.isArray(jobs)) {\n jobs = jobs.map(j => {\n return capJob(j, showRuns)\n })\n }\n return jobs\n}\n\nexport function capJob(job: JobMonitor, showRuns: number) {\n if (job.runs && Array.isArray(job.runs) && job.runs.length > showRuns)\n job.runs = job.runs.slice(0, showRuns)\n return job\n}\n\nexport function UpdateRun (jobs: JobMonitor[], showRuns: number, jobId: number, run: JobRunLog) {\n if (jobs && Array.isArray(jobs)) {\n const job = jobs.find(j => j.id == jobId)\n if (job) {\n if (job.runs && Array.isArray(job.runs)) {\n const runExists = job.runs.find(r => r.runId == run.runId)\n if (runExists) {\n const index = job.runs.indexOf(runExists)\n job.runs.splice(index, 1, run)\n } else {\n job.runs.unshift(run)\n }\n }\n else {\n job.runs = [run]\n }\n }\n }\n CapJobs(jobs, showRuns)\n return jobs\n}\n\nexport function UpdateRunByLog(jobs: JobMonitor[], showRuns: number, newLog: LogMessage) {\n let { jobId, runId, jobPartId } = newLog\n if (!jobId || !runId) \n return\n\n if (!jobs || !Array.isArray(jobs))\n return\n \n const job = jobs.find(j => j.id == jobId)\n if (!job)\n return\n \n updateOneJobRunByLog(job, newLog)\n \n CapJobs(jobs, showRuns)\n return jobs\n}\n\nexport function updateOneJobRunByLog(job: JobMonitor, log: LogMessage) {\n let { jobId, runId, jobPartId } = log\n if (!jobId || !runId) \n return\n\n const clonedJob = structuredClone(job)\n if (clonedJob.runs && Array.isArray(clonedJob.runs)) {\n const runExists = clonedJob.runs.find(r => r.runId == runId)\n if (runExists) {\n if (jobPartId) {\n const jobPartRun = runExists.jobParts.find(p => p.jobPartId == jobPartId)\n if (jobPartRun) {\n updateRunByLog(jobPartRun, log)\n } else if (log.type == LogMessageType.JobStarted) {\n let newJobPartRun: JobRun = {\n jobId: log.jobId!,\n jobPartId,\n runId,\n state: JobRunState.Running,\n result: JobRunResult.Success,\n started: new Date().toISOString()\n }\n runExists.jobParts.push(newJobPartRun)\n }\n } else {\n updateRunByLog(runExists, log)\n }\n } else if (log.type == LogMessageType.JobStarted || !jobPartId) {\n let newRun: JobRunLog = {\n jobId: log.jobId!,\n runId,\n state: JobRunState.Running,\n result: JobRunResult.Success,\n started: new Date().toISOString(),\n jobParts: []\n }\n clonedJob.runs.unshift(newRun)\n }\n }\n return clonedJob\n}\n\nfunction updateRunByLog(jobPartRun: JobRun, log: LogMessage) {\n if (log.type == LogMessageType.JobFinished) {\n jobPartRun.state = JobRunState.Completed\n jobPartRun.finished = new Date().toISOString()\n }\n else if (log.type == LogMessageType.JobFailed || log.type == LogMessageType.Error) {\n jobPartRun.state = JobRunState.Completed\n jobPartRun.result = JobRunResult.Failed\n jobPartRun.finished = new Date().toISOString()\n }\n \n}\n\nexport async function refreshRunLog (jobRun: JobRun) {\n if (!jobRun || !jobRun.runId)\n return []\n \n const logs = await getJobRunLogs(jobRun.runId, jobRun.jobPartId)\n return logs\n}\n\nexport async function openLog (jobId: number, jobRun: JobRun, name: string) {\n const id = `joblog${jobId}${jobRun ? jobRun.jobPartId : \"\"}`\n let el = document.createElement(\"monitor-job-log\")\n el.id = id\n el.run = jobRun\n\n const closeLbl = await translateLabel(\"COMMON_CLOSE\")\n dialog.openElement({\n title: `${name}, : \n `,\n hideOkBtn: true,\n cancelBtnText: closeLbl\n }, el)\n}\n\nexport async function showConfig (jobPart: JobPart) {\n let jsonString = jobPart.config ? jobPart.config : \"\"\n if (jsonString) {\n const json = JSON.parse(jsonString)\n jsonString = JSON.stringify(json, null, 4)\n }\n const closeLbl = await translateLabel(\"COMMON_CLOSE\")\n const configLbl = await translateLabel(\"COMMON_CONFIGURATION\")\n const template = ``\n dialog.openHtml({\n title: configLbl,\n hideOkBtn: true,\n cancelBtnText: closeLbl\n }, template)\n}","import { Job, JobMonitor, JobRun, LogMessage, LogMessageType } from \"@api\"\nimport {LitElement, html, css} from \"lit\"\nimport {customElement, property, state} from \"lit/decorators.js\"\nimport * as monitoringService from \"@common/services/data/monitoringService\"\nimport { capJob, openLog, showConfig, updateOneJobRunByLog } from \"./loggMonitor\"\nimport { systemHub } from \"@common/services/systemHub\"\n\n@customElement('job-monitor-row')\nexport class JobMonitorRow extends LitElement {\n static styles = css`\n :host {\n display: table-row-group;\n margin-bottom: 0.5rem;\n }\n .table-row {\n display:table-row;\n &.main-job {\n background: white;\n .table-cell {\n border: 1px solid var(--digilean-tertiary-background);\n }\n }\n &.hidden {\n display: none;\n }\n }\n .table-cell {\n display: table-cell;\n padding: 3px;\n border: 1px solid var(--digilean-white);\n }\n .part-name {\n cursor: pointer;\n }\n .job-result-cell {\n cursor: pointer;\n padding: 3px;\n display: flex;\n justify-content: flex-start;\n gap: 0.4rem;\n align-items: center;\n height: 3rem;\n }\n .jobpart-cell {\n border-bottom: 1px solid var(--digilean-white);\n }\n fa-icon {\n height: 1.6rem;\n width: 1.6rem;\n }\n span.empty {\n display: inline-block;\n height: 1.6rem;\n width: 1.6rem;\n }\n `\n\n @property({ attribute: true, type: Number})\n numRuns = 7\n\n connectorId=\"\"\n private _setup: Job = { id: 0, name: \"\", jobParts: []}\n \n get jobSetup() {\n return this._setup\n }\n @property({attribute: false})\n set jobSetup(val: Job) {\n this._setup = val\n this.getRuns()\n }\n async getRuns () {\n if (!this.jobSetup)\n return\n try {\n this.connectorId = this.jobSetup.connectorId!\n const monitor = await monitoringService.getJobRuns(this.connectorId, this.jobSetup.id, this.numRuns)\n if (monitor)\n this.jobMonitor = monitor\n }\n catch (e) {}\n }\n\n openLogDialog(jobRun: JobRun) {\n let name = this.jobSetup.name\n let jobPartId = jobRun.jobPartId ? jobRun.jobPartId : null\n if (jobPartId) {\n if (this.jobSetup.jobParts && this.jobSetup.jobParts.length > 0) {\n const jobPart = this.jobSetup.jobParts?.find(p => p.id == jobPartId)\n if (jobPart)\n name = jobPart.name!\n }\n }\n openLog(this.jobSetup.id, jobRun, name).then(()=>{}, ()=>{})\n }\n \n connectedCallback(): void {\n super.connectedCallback()\n systemHub.on(\"NewLogMessage\",this._handleLog)\n }\n disconnectedCallback(): void {\n systemHub.off(\"NewLogMessage\",this._handleLog)\n super.disconnectedCallback()\n }\n\n logEvents = [ LogMessageType.JobStarted, LogMessageType.JobFinished, LogMessageType.JobFailed]\n private _handleLog = (log: LogMessage) => {\n if (log.connectorId == this.connectorId && this.logEvents.includes(log.type!))\n {\n if (this.jobSetup.id && log.jobId && log.runId && this.jobSetup.id === log.jobId) {\n this.updateRunFromLog(log)\n }\n }\n }\n\n @state()\n jobMonitor: JobMonitor = {id: 0,name: \"\",runs: []}\n\n @property({attribute: true, type: Boolean})\n visibleDetails = false\n\n toggleDetailsVisible() {\n if (this.jobMonitor.runs.length === 0)\n return\n this.visibleDetails = !this.visibleDetails\n }\n \n updateRunFromLog(log: LogMessage) {\n const updatedData = updateOneJobRunByLog(this.jobMonitor, log)\n if (updatedData) {\n capJob(updatedData, this.numRuns)\n this.jobMonitor = updatedData\n this.updateNextRunTime(log)\n }\n }\n\n async updateNextRunTime(log: LogMessage) {\n if (log.jobId && this.jobMonitor && this.jobMonitor.id == log.jobId &&\n (log.type == LogMessageType.JobStarted || log.type == LogMessageType.JobFinished) && !log.jobPartId) {\n \n let nextRun = await monitoringService.getNextRun(log.jobId).catch(() => {})\n if (nextRun) {\n /// @ts-ignore\n this.jobMonitor.nextTime = nextRun\n }\n }\n }\n\n render() {\n if (this.jobMonitor.runs.length === 0 && !this.jobMonitor.nextTime) {\n return html`\n
        \n
        \n \n ${this.jobSetup.name}\n
        \n
        \n `\n }\n \n return html`\n
        \n \n
        this.toggleDetailsVisible()}>\n ${this.jobMonitor.runs.length > 0 ? html`\n ${this.visibleDetails ? \n html``:\n html``}\n `: html``\n }\n ${this.jobMonitor.name}\n
        \n
        \n \n
        \n ${this.jobMonitor.runs.map(run => html`\n
        this.openLogDialog(run)}>\n
        \n  \n  \n \n
        \n
        \n `)}\n
        \n \n
        \n
        \n
        \n ${this.jobSetup.jobParts?.map(jobPart => html`\n
        showConfig(jobPart)}>\n ${jobPart.name}\n
        \n `)}\n \n
        \n ${this.jobMonitor.runs.map(run => html`\n
        \n ${run.jobParts.map(part => html`\n
        this.openLogDialog(part)}>\n \n  \n \n
        \n `)}\n
        \n `)}\n
        \n `\n }\n}\n","import { ConnectorMonitor, JobMonitor } from \"@api\"\nimport {LitElement, html, css} from \"lit\"\nimport {customElement, property} from \"lit/decorators.js\"\nimport \"./jobMonitor\"\n\n@customElement('connector-monitor-table')\nexport class ConnectorMonitorTable extends LitElement {\n static styles = css`\n :host {\n display: block;\n }\n .table {\n display: table;\n width: 100%;\n }\n .table-header-group {\n display: table-header-group;\n }\n .table-row {\n display:table-row;\n border: 1px solid var(--digilean-white);\n }\n .table-cell {\n display: table-cell;\n padding: 3px;\n border: 1px solid var(--digilean-white);\n }\n .table-header-group .table-cell {\n font-weight: bold;\n }\n `\n connectorId = \"\"\n @property({ attribute: true, type: Number})\n numRuns = 7\n\n @property({attribute: false})\n data: ConnectorMonitor = {\n jobsSetup: [], id: \"\", name: \"\", customerId: 0\n }\n\n render() {\n if (!this.data.jobsSetup)\n return html`Loading`\n return html`\n
        \n
        \n
        \n
        \n \n
        \n
        \n \n
        \n
        \n
        \n\n ${this.data.jobsSetup.map(jobSetup => html`\n \n \n `)}\n
        \n `\n }\n}","import {LitElement, html, css} from \"lit\"\nimport {customElement, property, state} from \"lit/decorators.js\"\nimport { refreshRunLog } from \"@common/components/monitoring/integrations/loggMonitor\"\nimport { JobRun, LogMessage } from \"@api\"\nimport { getLastErrors } from \"@common/services/data/monitoringService\"\n\n@customElement('monitor-job-log')\nexport class MonitorJobLog extends LitElement {\n static styles = css`\n :host {\n display: block;\n }\n .div-spinner {\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n }\n .error {\n color: var(--digilean-error);\n }\n `\n\n @property({attribute: false})\n run?: JobRun\n\n @property({attribute: true})\n connectorid = \"\"\n\n @property({attribute: true, type: Number})\n days = 0\n\n @state()\n loading = false\n\n @state()\n logs: LogMessage[] = []\n\n connectedCallback(): void {\n super.connectedCallback()\n this.getLogs()\n }\n getLogs = async () => {\n this.loading = true\n if (this.run) {\n const logsloaded = await refreshRunLog(this.run)\n this.logs = logsloaded\n } else if (this.connectorid) {\n const errors = await getLastErrors(this.connectorid, this.days)\n this.logs = errors\n }\n this.loading = false\n }\n render() {\n return html`\n

        \n :\n

        \n ${this.loading ? html`\n
        \n \n
        \n ` : html`\n ${this.logs.map(log => html`\n \n `)}\n `}\n `\n }\n}","import type { AzureAdDigiLeanGroup, AzureAdDigiLeanUser } from \"@api\"\nimport backend from \"@common/services/backendHttp\"\n\nlet resourceUrl = \"api/AzureAd\"\n\nexport const lookupUserAd = async (searchTerm: string) => {\n const url = `${resourceUrl}/lookup?searchTerm=${searchTerm}`\n const res = await backend.get(url)\n return res\n}\n\nexport const lookupGroupAd = async (searchTerm: string) => {\n const url = `${resourceUrl}/lookupGroups?searchTerm=${searchTerm}`\n const res = await backend.get(url)\n return res\n}","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, withKeys as _withKeys, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, unref as _unref, renderList as _renderList, Fragment as _Fragment, toDisplayString as _toDisplayString } from \"vue\"\n\nconst _hoisted_1 = { class: \"search-row\" }\nconst _hoisted_2 = {\n key: 0,\n class: \"loading\"\n}\nconst _hoisted_3 = {\n key: 1,\n class: \"error\"\n}\nconst _hoisted_4 = [\"label\"]\nconst _hoisted_5 = { key: 2 }\nconst _hoisted_6 = [\"onClick\"]\n\nimport {ref, onMounted} from \"vue\"\n import { lookupUserAd } from \"@common/services/user/userAzureAdService\"\n import { DialogResult } from \"@common/components/digilean/DigileanDialog\"\n import { AzureAdDigiLeanUser } from \"@api\"\n\n \nexport default /*@__PURE__*/_defineComponent({\n __name: 'UserAzureLookup',\n setup(__props) {\n\n const users = ref([])\n const inputField = ref()\n\n const performSearch = () => {\n if (inputField.value) {\n search(inputField.value.value)\n }\n }\n const loading = ref(false)\n \n const showError = ref(false)\n let errorLabel = ref(\"COMMON_NO_RESULTS\")\n\n const search = async (searchTerm: string) => {\n showError.value = false\n if (!searchTerm || !searchTerm.trim())\n return\n \n loading.value = true\n try {\n const us = await lookupUserAd(searchTerm)\n if (us && us.length > 0)\n users.value = us\n else {\n errorLabel.value = \"COMMON_NO_RESULTS\"\n showError.value = true\n users.value = []\n }\n }\n catch(err) {\n errorLabel.value = \"COMMON_ERROR_MSG\"\n showError.value = true\n users.value = []\n }\n finally {\n loading.value = false\n }\n }\n const select = (user: AzureAdDigiLeanUser) => {\n const options = { detail: user, bubbles: true, composed: true }\n inputField.value?.dispatchEvent(new CustomEvent(DialogResult.dialogOkFromOutside, options))\n }\n onMounted(() => {\n setTimeout(() => {\n if (inputField.value)\n inputField.value.focus()\n }, 100)\n })\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _cache[3] || (_cache[3] = _createElementVNode(\"h2\", null, [\n _createElementVNode(\"translate-label\", { label: \"COMMON_SEARCH\" }),\n _createTextVNode(),\n _createElementVNode(\"translate-label\", { label: \"COMMON_AZURE_AD\" }),\n _createTextVNode(),\n _createElementVNode(\"translate-label\", { label: \"COMMON_USERS\" })\n ], -1)),\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"digilean-input\", {\n type: \"text\",\n placeholder: \"search name\",\n ref_key: \"inputField\",\n ref: inputField,\n onKeyup: _withKeys(performSearch, [\"enter\"])\n }, null, 544),\n _createElementVNode(\"digilean-button\", { onClick: performSearch }, _cache[0] || (_cache[0] = [\n _createElementVNode(\"translate-label\", { label: \"COMMON_SEARCH\" }, null, -1)\n ]))\n ]),\n (loading.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, _cache[1] || (_cache[1] = [\n _createElementVNode(\"spinner-icon\", { spin: \"true\" }, null, -1)\n ])))\n : _createCommentVNode(\"\", true),\n (showError.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _createElementVNode(\"translate-label\", { label: _unref(errorLabel) }, null, 8, _hoisted_4)\n ]))\n : _createCommentVNode(\"\", true),\n (users.value.length>0)\n ? (_openBlock(), _createElementBlock(\"table\", _hoisted_5, [\n _cache[2] || (_cache[2] = _createElementVNode(\"thead\", null, [\n _createElementVNode(\"tr\", null, [\n _createElementVNode(\"th\", null, [\n _createElementVNode(\"translate-label\", { label: \"COMMON_USERNAME\" })\n ]),\n _createElementVNode(\"th\", null, [\n _createElementVNode(\"translate-label\", { label: \"COMMON_EMAIL\" })\n ]),\n _createElementVNode(\"th\", null, [\n _createElementVNode(\"translate-label\", { label: \"ADMIN_FIRST_NAME\" })\n ]),\n _createElementVNode(\"th\", null, [\n _createElementVNode(\"translate-label\", { label: \"ADMIN_LAST_NAME\" })\n ]),\n _createElementVNode(\"th\", null, [\n _createElementVNode(\"translate-label\", { label: \"COMMON_ADMIN_DEPARTMENT\" })\n ]),\n _createElementVNode(\"th\", null, [\n _createElementVNode(\"translate-label\", { label: \"COMMON_ADMIN_JOBTITLE\" })\n ])\n ])\n ], -1)),\n _createElementVNode(\"tbody\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(users.value, (user) => {\n return (_openBlock(), _createElementBlock(\"tr\", {\n class: \"users\",\n onClick: () => select(user)\n }, [\n _createElementVNode(\"td\", null, _toDisplayString(user.userPrincipalName), 1),\n _createElementVNode(\"td\", null, _toDisplayString(user.mail), 1),\n _createElementVNode(\"td\", null, _toDisplayString(user.givenName), 1),\n _createElementVNode(\"td\", null, _toDisplayString(user.surname), 1),\n _createElementVNode(\"td\", null, _toDisplayString(user.department), 1),\n _createElementVNode(\"td\", null, _toDisplayString(user.jobTitle), 1)\n ], 8, _hoisted_6))\n }), 256))\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ], 64))\n}\n}\n\n})","\n\n","import script from \"./UserAzureLookup.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserAzureLookup.vue?vue&type=script&setup=true&lang=ts\"\n\nimport _style_0 from \"./UserAzureLookup.vue?vue&type=style&index=0&id=dac1df80&inline&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['styles',[_style_0]]])\n\nexport default __exports__","export default \"\\n.search-row {\\n display: flex;\\n flex-direction: row;\\n gap: 1rem;\\n}\\n.loading, .error {\\n display: flex;\\n flex-direction: row;\\n justify-content: center;\\n padding: 1rem 0;\\n}\\n.error {\\n color: var(--digilean-danger);\\n font-weight: bold;\\n}\\ndigilean-input {\\n width: 300px;\\n}\\ntable {\\n border-collapse: collapse;\\n}\\nth, td {\\n text-align: left;\\n padding: 8px;\\n}\\ntr.users {\\n cursor: pointer;\\n}\\ntr.users:hover {\\n background: var(--digilean-primary);\\n color: var(--digilean-main-menu-text);\\n}\\ntr.active {\\n background: var(--digilean-selected);\\n}\\n\"","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, withKeys as _withKeys, unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, toDisplayString as _toDisplayString } from \"vue\"\n\nconst _hoisted_1 = { class: \"search-row\" }\nconst _hoisted_2 = {\n key: 0,\n class: \"loading\"\n}\nconst _hoisted_3 = {\n key: 1,\n class: \"error\"\n}\nconst _hoisted_4 = [\"label\"]\nconst _hoisted_5 = { key: 2 }\nconst _hoisted_6 = [\"onClick\"]\n\nimport {ref, onMounted} from \"vue\"\n import { lookupGroupAd } from \"@common/services/user/userAzureAdService\"\n import { DialogResult } from \"@common/components/digilean/DigileanDialog\"\n import { AzureAdDigiLeanGroup } from \"@api\"\n\n \nexport default /*@__PURE__*/_defineComponent({\n __name: 'GroupAzureLookup',\n setup(__props) {\n\n const groups = ref([])\n const inputField = ref()\n\n const performSearch = () => {\n if (inputField.value) {\n search(inputField.value.value)\n }\n }\n\n let loading = ref(false)\n\n let showError = ref(false)\n let errorLabel = ref(\"COMMON_NO_RESULTS\")\n\n const search = async (searchTerm: string) => {\n showError.value = false\n\n if (!searchTerm || !searchTerm.trim())\n return\n \n loading.value = true\n try {\n const azGroups = await lookupGroupAd(searchTerm)\n if (azGroups && azGroups.length > 0)\n groups.value = azGroups\n else {\n errorLabel.value = \"COMMON_NO_RESULTS\"\n showError.value = true\n groups.value = []\n }\n } catch(err) {\n console.log(err)\n errorLabel.value = \"COMMON_ERROR_MSG\"\n showError.value = true\n groups.value = []\n } finally {\n loading.value = false\n }\n \n }\n const select = (group: AzureAdDigiLeanGroup) => {\n const options = { detail: group, bubbles: true, composed: true }\n inputField.value?.dispatchEvent(new CustomEvent(DialogResult.dialogOkFromOutside, options))\n }\n onMounted(() => {\n setTimeout(() => {\n if (inputField.value)\n inputField.value.focus()\n }, 100)\n })\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _cache[3] || (_cache[3] = _createElementVNode(\"h2\", null, [\n _createElementVNode(\"translate-label\", { label: \"COMMON_SEARCH\" }),\n _createTextVNode(),\n _createElementVNode(\"translate-label\", { label: \"COMMON_AZURE_AD\" }),\n _createTextVNode(),\n _createElementVNode(\"translate-label\", { label: \"COMMON_ASSETS\" })\n ], -1)),\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"digilean-input\", {\n type: \"text\",\n placeholder: \"search name\",\n ref_key: \"inputField\",\n ref: inputField,\n onKeyup: _withKeys(performSearch, [\"enter\"])\n }, null, 544),\n _createElementVNode(\"digilean-button\", { onClick: performSearch }, _cache[0] || (_cache[0] = [\n _createElementVNode(\"translate-label\", { label: \"COMMON_SEARCH\" }, null, -1)\n ]))\n ]),\n (_unref(loading))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, _cache[1] || (_cache[1] = [\n _createElementVNode(\"spinner-icon\", { spin: \"true\" }, null, -1)\n ])))\n : _createCommentVNode(\"\", true),\n (_unref(showError))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _createElementVNode(\"translate-label\", { label: _unref(errorLabel) }, null, 8, _hoisted_4)\n ]))\n : _createCommentVNode(\"\", true),\n (groups.value.length>0)\n ? (_openBlock(), _createElementBlock(\"table\", _hoisted_5, [\n _cache[2] || (_cache[2] = _createElementVNode(\"thead\", null, [\n _createElementVNode(\"tr\", null, [\n _createElementVNode(\"th\", null, [\n _createElementVNode(\"translate-label\", { label: \"COMMON_NAME\" })\n ]),\n _createElementVNode(\"th\", null, [\n _createElementVNode(\"translate-label\", { label: \"COMMON_DESCRIPTION\" })\n ])\n ])\n ], -1)),\n _createElementVNode(\"tbody\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(groups.value, (group) => {\n return (_openBlock(), _createElementBlock(\"tr\", {\n class: \"users\",\n onClick: () => select(group)\n }, [\n _createElementVNode(\"td\", null, _toDisplayString(group.displayName), 1),\n _createElementVNode(\"td\", null, _toDisplayString(group.description), 1)\n ], 8, _hoisted_6))\n }), 256))\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ], 64))\n}\n}\n\n})","\n\n","import script from \"./GroupAzureLookup.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./GroupAzureLookup.vue?vue&type=script&setup=true&lang=ts\"\n\nimport _style_0 from \"./GroupAzureLookup.vue?vue&type=style&index=0&id=83686bc0&inline&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['styles',[_style_0]]])\n\nexport default __exports__","export default \"\\n.search-row {\\n display: flex;\\n flex-direction: row;\\n gap: 1rem;\\n}\\n.loading, .error {\\n display: flex;\\n flex-direction: row;\\n justify-content: center;\\n padding: 1rem 0;\\n}\\n.error {\\n color: var(--digilean-danger);\\n font-weight: bold;\\n}\\ndigilean-input {\\n width: 300px;\\n}\\ntable {\\n border-collapse: collapse;\\n}\\nth, td {\\n text-align: left;\\n padding: 8px;\\n}\\ntr.users {\\n cursor: pointer;\\n}\\ntr.users:hover {\\n background: var(--digilean-primary);\\n color: var(--digilean-main-menu-text);\\n}\\ntr.active {\\n background: var(--digilean-selected);\\n}\\n\"","import { KPI, StrategyGoal } from \"@api\"\nimport backend from \"@common/services/backendHttp\"\n\nconst resourceUrl = \"api/strategy\"\n\nexport const updateKPI = async (kpiId: number, kpi: KPI) => {\n const url = `${resourceUrl}/UpdateKPI/${kpiId}`\n const res = await backend.put(url, kpi)\n return res\n}\n\nexport const addKPI = async (kpi: KPI) => {\n const url = `${resourceUrl}/addKPI/`\n const res = await backend.post(url, kpi)\n return res\n}\n\nexport const getGoalsWithKPIsByAsset = async (assetId: number, year: number) => {\n const strategyAssetYear = {\n assetId: assetId,\n year: year\n }\n const url = `${resourceUrl}/GetGoalsWithKPIsByAsset/`\n const res = await backend.post(url,strategyAssetYear)\n return res\n}","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n class: \"row\",\n style: {\"margin-bottom\":\"150px\"}\n}\nconst _hoisted_2 = { class: \"table table-hover bowler-chart\" }\nconst _hoisted_3 = {\n \"ng-repeat-start\": \"item in strategygoals\",\n \"ng-show\": \"editable || item.kpIs.length > 0\"\n}\n\nimport { onMounted, ref, PropType } from \"vue\"\nimport moment from \"moment\"\nimport * as assetservice from \"@common/services/assetService\"\nimport * as strategy from \"@common/services/strategy/strategyService\"\n//import * as time from \"@common/services/timeService\"\nimport { translateLabelInstant} from \"@common/services/language/DigiLeanLang\"\nimport { StrategyGoal } from \"@api\";\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'strategyFlexibleBowlerChart',\n props: {\n goals: {\n type: Object as PropType,\n }\n},\n setup(__props) {\n\nconst year = ref(0)\nconst assetid = ref(0)\nconst editable = ref(true) //(false)\nconst isAdmin = ref(false) \nconst groupByInterval = ref(\"month\")\nlet strategygoals: StrategyGoal[] | null = null\n\nconst props = __props\nonMounted(() => {\n console.log(\"mounted vue comp\")\n year.value = moment().year();\n //isAdmin = authService.hasRole(\"Admin\") || authService.hasRole(\"StrategyAdmin\");\n getAssetList()\n //const timecells = time.getMonths\n})\n\nlet previousPeriod = async function () {\n try {\n year.value = year.value - 1;\n }\n catch (err) {\n if (err != \"cancel\")\n console.error(err)\n }\n}\n\nlet toggleEdit = async function () {\n try {\n editable.value = !editable.value\n }\n catch (err) {\n if (err != \"cancel\")\n console.error(err)\n }\n}\n\nlet loadData = async function () {\n strategygoals = await strategy.getGoalsWithKPIsByAsset(assetid.value, year.value)\n if(strategygoals){\n strategygoals.forEach((goal, goalindex) => {\n if(goal.kpIs){\n goal.kpIs.forEach((kpi, kpiindex) => {\n if (kpi.dataSourceId) {\n //getValuesForSerie(kpi);\n }\n else if (kpi.targetDataSourceId) {\n //getTargetValuesForSerie(kpi);\n }\n })\n }\n }) \n }\n}\n\nlet getAssetList = async function () {\n if(isAdmin){\n const assets = await assetservice.getAllAssets(true) \n if(!assets) return\n\n for (var k = 0; k < assets.length; k++) {\n ///@ts-ignore\n assets[k].cssLevel = \"level-\" + assets[k].level \n } \n const topAsset = {\n id : null,\n name: translateLabelInstant('STRATEGY_TOP_LEVEL')\n }\n const assetname = topAsset.name\n const assetid = topAsset.id\n loadData(); \n \n } else {\n const assets = await assetservice.getList() \n if(!assets || assets.length == 0) return\n\n for (var k = 0; k < assets.length; k++) {\n ///@ts-ignore\n assets[k].cssLevel = \"level-\" + assets[k].level \n } \n const asset = assets[0]\n const assetname = assets[0].name\n const assetid = assets[0].id\n loadData();\n }\n \n}\n\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createElementVNode(\"p\", null, _toDisplayString(year.value), 1),\n _createElementVNode(\"digilean-button\", {\n onClick: _cache[0] || (_cache[0] = () => _unref(previousPeriod)())\n }, _cache[1] || (_cache[1] = [\n _createElementVNode(\"translate-label\", { label: \"COMMON_ENABLED\" }, null, -1)\n ])),\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"table\", _hoisted_2, [\n _cache[6] || (_cache[6] = _createElementVNode(\"thead\", null, [\n _createElementVNode(\"tr\", null, [\n _createElementVNode(\"th\", null, [\n _createElementVNode(\"translate-label\", { label: \"STRATEGY_BREAKTHROUGH_OBJECTIVES\" })\n ]),\n _createElementVNode(\"th\", null, \"KPI\"),\n _createElementVNode(\"th\", null, [\n _createElementVNode(\"translate-label\", { label: \"ADMIN_DATA_DATASOURCE_UNIT\" })\n ]),\n _createElementVNode(\"th\")\n ])\n ], -1)),\n _createElementVNode(\"tbody\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.run?.logs, (log) => {\n return (_openBlock(), _createElementBlock(\"tr\", _hoisted_3, _cache[2] || (_cache[2] = [\n _createElementVNode(\"td\", {\n colspan: \"16\",\n style: {\"background\":\"white\",\"border-left\":\"3px solid\"},\n \"ng-style\": \"{'border-left-color':item.color}\"\n }, [\n _createElementVNode(\"i\", {\n class: \"fa fa-circle m-r\",\n style: {\"font-size\":\"18px\"},\n \"ng-style\": \"{'color':item.color}\"\n }),\n _createElementVNode(\"span\", { class: \"bold\" }, _toDisplayString(\"item.name\")),\n _createElementVNode(\"div\", { class: \"btn-group m-l\" }, [\n _createElementVNode(\"button\", {\n \"ng-show\": \"editable\",\n type: \"button\",\n \"ng-click\": \"addNewKPI(item)\",\n class: \"btn btn-xs btn-default\"\n }, [\n _createElementVNode(\"translate-label\", { label: \"STRATEGY_KPI_NEW\" })\n ])\n ])\n ], -1)\n ])))\n }), 256)),\n _cache[3] || (_cache[3] = _createElementVNode(\"tr\", { \"ng-repeat-start\": \"kpi in item.kpIs\" }, [\n _createElementVNode(\"td\", {\n rowspan: \"2\",\n style: {\"background\":\"white\",\"border-left\":\"3px solid\"},\n \"ng-style\": \"{'border-left-color':item.color}\"\n }, [\n _createElementVNode(\"div\", { \"ng-if\": \"!editable\" }, _toDisplayString(\"kpi.title\") + \"   \"),\n _createElementVNode(\"div\", {\n \"ng-if\": \"editable\",\n \"ng-click\": \"openKPIConfiguration(kpi,item)\"\n }, [\n _createElementVNode(\"a\", null, _toDisplayString(\"kpi.title\") + \"  \")\n ])\n ]),\n _createElementVNode(\"td\", { rowspan: \"2\" }, _toDisplayString(\"kpi.target\")),\n _createElementVNode(\"td\", { rowspan: \"2\" }, _toDisplayString(\"kpi.unit\")),\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"translate-label\", { label: \"STRATEGY_PLAN\" })\n ])\n ], -1)),\n _cache[4] || (_cache[4] = _createElementVNode(\"tr\", { \"ng-repeat-end\": \"\" }, [\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"translate-label\", { label: \"STRATEGY_ACTUAL\" })\n ])\n ], -1)),\n _cache[5] || (_cache[5] = _createElementVNode(\"tr\", { \"ng-repeat-end\": \"\" }, null, -1))\n ])\n ])\n ])\n ], 64))\n}\n}\n\n})","\n\n","import script from \"./strategyFlexibleBowlerChart.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./strategyFlexibleBowlerChart.vue?vue&type=script&setup=true&lang=ts\"\n\nimport _style_0 from \"./strategyFlexibleBowlerChart.vue?vue&type=style&index=0&id=49720876&inline&lang=css\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['styles',[_style_0]]])\n\nexport default __exports__","export default \"\\np {\\n color: orange;\\n}\\n\"","// import common web/teams modules\nimport \"@common/thirdparty\"\n\n\nimport '@common/thirdparty/orgchart/orgchart.js'; // For testing in strategymap => Remove if not going to be used\nimport 'nestable';\n\nimport 'bootstrap-select';\nimport 'bootstrap-select/dist/css/bootstrap-select.css';\n\nimport 'angular-cron-gen'\nimport 'metismenu';\n\nimport 'ng-file-upload';\nimport '@common/thirdparty/draganddrop/draganddrop.min';\nimport '@common/thirdparty/inspinia/inspinia';\n\nimport 'angular-ui-tree';\n\nimport './app/app';\nimport './app/config';\n\nimport \"@common/digileanSharedFiles\"\n\n// services\n\nimport '@common/shared/auth/authService';\nimport '@common/shared/auth/authInterceptorService';\n\nimport '@common/shared/domainService';\nimport '@common/shared/hmsService';\nimport '@common/shared/themeService';\nimport '@common/shared/layout/clock/clock';\nimport '@common/shared/layout/fullscreen/fullscreen';\n\nimport '@common/shared/layout/version/versionChecker';\nimport '@common/shared/evaluationService';\nimport '@common/shared/dataValueCenter';\nimport '@common/shared/activityCenter';\n\n\n// directives\n\nimport '@common/components/admin/data/dropzoneLocal'\nimport '@common/components/hours/hoursService';\nimport '@common/components/hours/hub/hoursHubController';\nimport '@common/components/hours/invoiceReport/invoiceReport';\nimport '@common/components/hours/hoursRegistration';\n\n// Strategy\nimport '@common/components/strategy/strategyGoalService';\nimport '@common/components/strategy/strategyController';\nimport '@common/components/strategy/strategyMap/strategyMap';\nimport '@common/components/strategy/strategyMap/strategyMapChart/strategyMapChart';\nimport '@common/components/strategy/strategyMap/cards/strategyCardPopup';\nimport '@common/components/strategy/strategyMap/cards/strategyGoalCard';\nimport '@common/components/strategy/strategyKPI/strategyBowlerChartController';\nimport '@common/components/strategy/strategyKPI/strategyBowlerMonthlyActual';\nimport '@common/components/strategy/strategyKPI/strategyBowlerMonthlyPlan';\nimport '@common/components/strategy/strategyKPI/strategyBowlerTitle';\nimport '@common/components/strategy/strategyKPI/strategyKPIConfigurationController';\nimport '@common/components/strategy/goalDetailsController';\nimport '@common/components/strategy/goalCreate/goalCreate';\nimport '@common/components/strategy/goalCreate/goalCreatePopup';\nimport '@common/components/strategy/goalEdit/goalEdit';\nimport '@common/components/strategy/goalEdit/goalEditPopup';\nimport '@common/components/strategy/goalKanban/goalKanban';\nimport '@common/components/strategy/goalKanban/goalKanbanCard'\nimport '@common/components/strategy/goalSelector/goalSelectorController';\nimport '@common/components/strategy/teamGoalsTable/teamGoalsTable';\nimport '@common/components/strategy/teamGoalsTable/goalKpiTable/goalKpiTable';\nimport '@common/components/strategy/strategyboard/strategyBoard';\nimport '@common/components/strategy/strategyboard/breakthroughNewController';\nimport '@common/components/strategy/strategyboard/assetCell/assetCell';\nimport '@common/components/strategy/strategyboard/strategyDescriptionCell/strategyDescriptionCell.js';\nimport '@common/components/strategy/strategyboard/strategyNameCell/strategyNameCell';\nimport '@common/components/strategy/strategyboard/strategyEndDateCell/strategyEndDateCell';\nimport '@common/components/strategy/strategyboard/strategyStartDateCell/strategyStartDateCell';\nimport '@common/components/strategy/strategyboard/strategySubGoalCell/strategySubGoalCell';\nimport '@common/components/strategy/links/strategyLinks';\nimport '@common/components/strategy/attachments/strategyAttachments';\nimport '@common/components/strategy/strategyGoalResources/strategyGoalResourceLinks';\nimport '@common/components/strategy/strategyTaskList/strategyTaskListResult';\nimport '@common/components/strategy/strategyTaskList/strategyTaskList';\n\n\nimport '@common/components/A3/a3ActionList/a3ActionList';\nimport '@common/components/A3/a3ActionList/a3SmartActionList';\nimport '@common/components/A3/comments/a3Comments';\nimport '@common/components/A3/cards/a3Card';\nimport '@common/components/A3/a3Table/a3TableService';\nimport '@common/components/A3/a3Table/a3Table';\nimport '@common/components/A3/a3Table/a3selector/a3SelectorController';\nimport '@common/components/A3/a3Table/taskList/a3TaskListModalController';\nimport '@common/components/A3/a3Table/templates/a3LinkToPreviewCell/a3LinkToPreviewCell';\nimport '@common/components/A3/a3Table/templates/a3GoalCell/a3GoalCell';\nimport '@common/components/A3/a3Table/templates/a3StatusCell/a3StatusCell';\nimport '@common/components/A3/a3Table/templates/a3OwnerCell/a3OwnerCell';\nimport '@common/components/A3/a3Table/templates/a3TasksCell/a3TasksCell';\nimport '@common/components/A3/a3Table/templates/a3TitleCell/a3TitleCell';\nimport '@common/components/A3/a3Table/templates/a3ProgressTasksCell/a3ProgressTasksCell';\nimport '@common/components/A3/a3Table/templates/a3EndDateCell/a3EndDateCell';\nimport '@common/components/A3/a3Table/templates/a3ParticipantsCell/a3ParticipantModalController';\nimport '@common/components/A3/a3Table/templates/a3ParticipantsCell/a3ParticipantsCell';\nimport '@common/components/A3/a3milestones/a3milestones';\nimport '@common/components/A3/preview/a3info/a3infoController';\nimport '@common/components/A3/preview/cost/costInfoController';\nimport '@common/components/A3/preview/a3step/a3stepController';\nimport '@common/components/A3/preview/a3stepActionPlan/a3stepActionPlanController';\nimport '@common/components/A3/templates/layout/a3info/a3infoTemplateController';\nimport '@common/components/A3/templates/layout/cost/costInfoTemplateController';\nimport '@common/components/A3/templates/layout/a3step/a3stepTemplateController';\nimport '@common/components/A3/templates/layout/a3stepActionPlan/a3stepActionPlanTemplateController';\nimport '@common/components/A3/templates/store/a3templateStore';\nimport '@common/components/A3/reports/monthlyrealized/initiativesmonthlyrealized';\n\nimport '@common/components/A3/reports/monthlyrealized/timeinitiativesmonthlyrealized';\nimport '@common/components/A3/reports/aggregatedrealized/initiativesaggregatedtimerealized';\nimport '@common/components/A3/reports/aggregatedrealized/initiativesaggregatedrealized';\nimport '@common/components/actionlist/a3/actionlistA3';\nimport '@common/components/actionlist/a3tasks/actionlistA3tasks';\nimport '@common/components/actionlist/actionlist';\nimport '@common/components/actionlist/boards/actionlistBoards';\nimport '@common/components/actionlist/boardtasks/actionlistBoardtasks';\nimport '@common/components/actionlist/deviation/actionlistDeviation';\nimport '@common/components/actionlist/deviationtasks/actionlistDeviationtasks';\nimport '@common/components/actionlist/improvement/actionlistImprovement';\nimport '@common/components/actionlist/improvementtasks/actionlistImprovementtasks';\nimport '@common/components/admin/data/datasourceTrend/datasourceTrendReport';\nimport '@common/components/admin/data/registrationtarget/registrationtarget';\n\nimport '@common/components/board/template/newFlexiboardTemplateController';\n\nimport '@common/components/dashboard/designer/appstore/greencross/greencross-date';\nimport '@common/components/dashboard/designer/appstore/greencross/greencrossController';\nimport '@common/components/dashboard/greencross/colorlabelConfigurationController';\nimport '@common/components/dashboard/designer/appstore/greencross/greencrossStatusModalController';\nimport '@common/components/dashboard/designer/appstore/dailyKPI/daily-kpi-date';\nimport '@common/components/dashboard/designer/appstore/dailyKPI/fiveSController';\nimport '@common/components/dashboard/designer/appstore/dailyKPIDynamic/dailyKpiDynamic';\nimport '@common/components/dashboard/designer/appstore/dailyKPIK/kLetter';\nimport '@common/components/dashboard/designer/appstore/dailyKPIA/aLetter';\nimport '@common/components/dashboard/designer/appstore/dailyKPID/dLetter';\nimport '@common/components/dashboard/designer/appstore/dailyKPIL/lLetter';\nimport '@common/components/dashboard/designer/appstore/dailyKPIP/pLetter';\nimport '@common/components/dashboard/designer/appstore/dailyKPIQ/qLetter';\nimport '@common/components/dashboard/designer/appstore/dailyKPIC/cLetter';\nimport '@common/components/dashboard/designer/appstore/dailyKPII/iLetter';\nimport '@common/components/dashboard/designer/appstore/livetrend/livetrendController';\nimport '@common/components/dashboard/designer/appstore/multichart/multichartcontroller';\nimport '@common/components/dashboard/designer/appstore/targetgraph/targetgraph';\nimport '@common/components/dashboard/designer/appstore/trendbarchart/trendbarchart';\nimport '@common/components/dashboard/designer/appstore/minmaxchart/minmaxchart';\nimport '@common/components/dashboard/designer/appstore/stackedHorizontalBarChart/stackedHorizontalBarChart';\nimport '@common/components/dashboard/designer/appstore/splitPackedBubbleChart/splitPackedBubbleChart';\nimport '@common/components/dashboard/designer/appstore/pareto/paretochart';\nimport '@common/components/dashboard/designer/appstore/piechart/piechartcontroller';\nimport '@common/components/dashboard/designer/appstore/strategyMapChartApp/strategyMapChartAppController';\nimport '@common/components/dashboard/radarchart/radarchart';\nimport '@common/components/dashboard/radarchart/radarchartRegistrationController';\nimport '@common/components/dashboard/designer/appstore/registration/registration';\nimport '@common/components/dashboard/designer/appstore/registration/registrationDialogController';\nimport '@common/components/dashboard/designer/appstore/register/registerController';\nimport '@common/components/dashboard/designer/appstore/singlevalue/singlevalueController';\nimport '@common/components/dashboard/designer/appstore/singlevalueregistration/singlevalueregistrationController';\nimport '@common/components/dashboard/designer/appstore/singlevaluetarget/singlevaluetarget';\nimport '@common/components/dashboard/designer/appstore/teamtasks/teamtasks';\nimport '@common/components/dashboard/designer/appstore/timeboard/timeboard';\nimport '@common/components/dashboard/designer/appstore/projectboard/projectboardApp';\nimport '@common/components/dashboard/designer/appstore/performanceboard/performanceboard';\nimport '@common/components/dashboard/designer/appstore/performanceboard/configuration/performanceboardConfig';\nimport '@common/components/dashboard/designer/appstore/performanceboard/configuration/performanceboardConfigController';\nimport '@common/components/dashboard/designer/appstore/a3table/a3tableApp';\nimport '@common/components/dashboard/designer/appstore/smarttable/smarttableApp';\nimport '@common/components/dashboard/designer/appstore/kanbanboard/kanbanBoard';\nimport '@common/components/dashboard/designer/appstore/weeklyboard/weeklyboard';\nimport '@common/components/dashboard/designer/appstore/weeklyboard/weekSelector';\nimport '@common/components/dashboard/designer/appstore/texteditor/texteditorController';\nimport '@common/components/dashboard/designer/appstore/usersonline/usersonlineController';\n\nimport '@common/components/dashboard/designer/appstore/datasourceValuesList/datasourceValuesList';\nimport '@common/components/dashboard/designer/appstore/smileyApp/smileyApp'\n\n\n// IMPROVEMENT\nimport '@common/components/improvement/wheelImprovement/wheelImprovementController';\nimport '@common/components/improvement/improvementController';\nimport '@common/components/improvement/mysuggestions/mysuggestionsController';\nimport '@common/components/improvement/improvementreports/teammemberimprovement';\n\nimport '@common/components/improvement/improvementstatus.js';\nimport '@common/components/improvement/newFeedbackModalController';\n\nimport '@common/components/learning/learningController';\nimport '@common/components/learning/learningService';\nimport '@common/components/learning/learningPublicService';\nimport '@common/components/learning/viewer/learningViewerController';\nimport '@common/components/learning/viewer/learningSummaryViewer';\nimport '@common/components/learning/pdf/learningPagePdfExport';\nimport '@common/components/learning/comments/learningPageComments';\nimport '@common/components/learning/comments/learningPageCommentController'; // check location of this file\nimport '@common/components/learning/evaluation/learningPageEvaluation';\nimport '@common/components/learning/evaluation/learningPageEvaluationStatus';\nimport '@common/components/learning/favorites/myFavoritePages';\nimport '@common/components/tasks/team/teammember';\nimport '@common/components/tasks/info/taskInfo';\n\nimport '@common/shared/layout/inTrialInfo/inTrialInfo';\nimport '@common/shared/layout/navnewtask/navnewtask';\nimport '@common/shared/layout/navnewsuggestion/navnewsuggestion';\nimport '@common/shared/layout/navnewa3/navnewa3';\nimport '@common/shared/layout/navnewbubble/navnewbubble';\n\nimport '@common/shared/layout/favorites/favoritesController';\nimport '@common/shared/modal/draggable-modal';\n\nimport '@common/shared/contenteditable/contentEditable';\nimport '@common/shared/htmlTextArea/htmlTextArea';\nimport '@common/shared/comments/topLevelComment';\nimport '@common/shared/comments/replyableComment';\nimport '@common/shared/comments/commentEditor';\nimport '@common/shared/messages/message';\nimport '@common/shared/messages/replyableMessage';\nimport '@common/shared/messages/simpleReply';\nimport '@common/shared/messages/messageRepliesDialog';\nimport '@common/shared/editors/froalaCustom';\nimport '@common/shared/editors/froalaDiagram';\nimport '@common/shared/editors/froalaEditor';\nimport '@common/shared/editors/froalaView';\nimport '@common/shared/errorHandling/onErrorSrc';\nimport '@common/animations/heart/heartAnimation';\nimport '@common/shared/logs/logMessageViewer';\nimport '@common/shared/zoom/zoomSelector';\n\n\nimport './app/directives';\nimport './app/filters';\n\n\n// controllers\n\nimport './app/mainController';\nimport './app/navigationController';\n\n\nimport '@common/components/A3/templates/a3templateService';\nimport '@common/components/A3/templates/preview/a3TemplatePreview';\nimport '@common/components/A3/a3Controller';\nimport '@common/components/A3/a3StepDescription/a3StepDescriptionModalController';\nimport '@common/components/A3/designer/a3designerController';\nimport '@common/components/A3/newA3/newA3ModalController';\nimport '@common/components/A3/a3wizardController';\nimport '@common/components/A3/preview/a3previewController';\nimport '@common/components/A3/slideshow/a3slideshowController';\nimport '@common/components/A3/templates/a3templatesController';\nimport '@common/components/A3/templates/layout/a3templateLayoutController';\nimport '@common/components/A3/reports/a3reportsController';\nimport '@common/components/A3/reports/benefitsRealizationController';\nimport '@common/components/A3/reports/timeBenefitsRealizationController';\nimport '@common/components/A3/links/a3Links';\nimport '@common/components/actionlist/actionlistService';\nimport '@common/components/admin/area/area';\n\nimport '@common/components/admin/apiclients/apiClients'\nimport '@common/components/admin/apiclients/apiClients.css'\nimport '@common/components/admin/apiclients/newApiClientController'\nimport '@common/components/admin/apiclients/editApiClientController'\n\n\nimport '@common/components/admin/contactlist/contactlist';\nimport '@common/components/admin/assets/assetscontroller';\nimport '@common/components/admin/assets/assetEdit';\nimport '@common/components/admin/organization/organizationAdminController';\nimport '@common/components/admin/organization/organizationSettings';\nimport '@common/components/admin/organization/accountSetup/accountSetupController';\nimport '@common/components/admin/organization/messagecenter/mailsender';\nimport '@common/components/admin/organization/messagecenter/messageSender';\nimport '@common/components/admin/organization/messagecenter/pushNotificationSender';\nimport '@common/components/dashboard/smartlogic/cellCloneConfigController';\nimport '@common/components/admin/improvement/improvementAdminController';\nimport '@common/components/admin/a3/a3AdminController';\nimport '@common/components/admin/changepassword/changePasswordModalController';\nimport '@common/components/admin/customers/deployCustomerDialogController';\nimport '@common/components/admin/customers/disableCustomerDialogController';\nimport '@common/components/admin/customers/supportUserDialogController';\nimport '@common/components/admin/customers/customerOrderDialogController';\nimport '@common/components/admin/customers/allowedModulesDialogController';\nimport '@common/components/admin/customers/customers.css';\nimport '@common/components/admin/customers/customersController';\nimport '@common/components/admin/customers/payingCustomersController';\nimport '@common/components/admin/customers/trialsController';\nimport '@common/components/admin/customers/invoicing';\nimport '@common/components/admin/customers/invoices';\nimport '@common/components/admin/integrations/connectors/newConnectorController'\n\nimport '@common/components/admin/data/lists/datalistController';\nimport '@common/components/admin/data/lists/datalistsController';\nimport '@common/components/admin/data/lists/newDataListController';\nimport '@common/components/admin/data/lists/editDataListController';\nimport '@common/components/admin/data/excelImportController';\nimport '@common/components/admin/data/excel/singleDataSourceImportController';\nimport '@common/components/admin/data/excel/multipleDataSourcesImportController';\nimport '@common/components/admin/data/newdatasource/newDataSourceController';\n\n\nimport '@common/components/admin/data/dataAdminController';\nimport '@common/components/admin/data/dataSourceController';\nimport '@common/components/admin/data/manualKpiIdentifier/manualKpiIdentifierAdminController';\nimport '@common/components/admin/data/manualKpiIdentifier/dataVisualizationTypeController';\n\n\nimport '@common/components/admin/deviations/deviationTypeDetails/deviationTypeDetailsController';\nimport '@common/components/admin/deviations/newDeviationType/newDeviationTypeController';\nimport '@common/components/admin/deviations/editDeviationType/editDeviationTypeController';\nimport '@common/components/admin/deviations/editDeviationTypePermission/editDeviationTypePermissionController';\nimport '@common/components/admin/deviations/deviationTypeAdminController';\nimport '@common/components/admin/deviations/deviationTypeCategories/deviationTypeCategories';\nimport '@common/components/admin/deviations/deviationTypeCauses/deviationTypeCauses';\nimport '@common/components/admin/deviations/deviationTypeConsequences/deviationTypeConsequences';\nimport '@common/components/admin/deviations/deviationTypeSetting/deviationTypeSetting';\nimport '@common/components/admin/deviations/deviationCustomFieldAdmin/deviationCustomFieldAdminController';\nimport '@common/components/admin/deviations/categoryAdminController';\nimport '@common/components/admin/deviations/causeAdminController';\nimport '@common/components/admin/deviations/consequenceAdminController';\nimport '@common/components/admin/learning/learningAdminController';\nimport '@common/components/admin/learning/newLearningMaterial/newLearningMaterialController';\nimport '@common/components/admin/learning/editLearningMaterial/editLearningMaterialController';\nimport '@common/components/admin/learning/stats/learningMaterialStatsController';\nimport '@common/components/admin/learning/designer/learningDesignerController';\nimport '@common/components/admin/learning/designer/learningSummary';\nimport '@common/components/admin/learning/designer/learningFrontPage';\nimport '@common/components/admin/learning/designer/learningPage';\nimport '@common/components/admin/learning/designer/sections/textSection';\nimport '@common/components/admin/learning/designer/sections/imageSection';\nimport '@common/components/admin/learning/designer/sections/summarySection';\nimport '@common/components/admin/learning/designer/sections/diagramSection';\nimport '@common/components/admin/learning/designer/sections/videoSection';\nimport '@common/components/admin/learning/designer/sections/fileSection';\nimport '@common/components/admin/data/lists/customerAdminController';\nimport '@common/components/admin/projects/projectRoleAdminController';\nimport '@common/components/admin/projects/projectAdminController';\nimport '@common/components/admin/projects/projectListAdminController';\nimport '@common/components/admin/projects/projectPortfolioAdminController';\nimport '@common/components/admin/organization/signupService';\nimport '@common/components/admin/users/userAccessController'\nimport '@common/components/admin/users/userscontroller';\nimport '@common/components/admin/users/userEdit';\nimport '@common/components/admin/users/userListResult';\n\n\nimport '@common/components/dashboard/designer/appstore/actionList/actionListNewTaskController';\nimport '@common/components/dashboard/designer/appstore/actionList/actionListEditTaskController';\n\nimport '@common/components/board/newBoard/boardtypes/dashboard/dashboardPreview';\n\nimport '@common/components/board/boardActionController';\n\nimport '@common/components/admin/boards/flexiboardContainerAdminController';\nimport '@common/components/admin/boards/flexiboardAdminController';\nimport '@common/components/admin/boards/flexiboardTemplateAdmin';\n\nimport '@common/components/common/confirmationDialog/confirmationDialogController';\nimport '@common/components/common/members/membersSelector';\nimport '@common/components/common/access/boardAccessChecker';\nimport '@common/components/common/numericInput/numericInput';\nimport '@common/components/dashboard/activitycount/activitycountController';\nimport '@common/components/dashboard/customerfeedback/changestatusController';\nimport '@common/components/dashboard/customerfeedback/customerfeedbackController';\nimport '@common/components/dashboard/customermonitoring/customerMonitoringController';\nimport '@common/components/dashboard/customermonitoring/notifications/notificationsOverview';\nimport '@common/components/dashboard/customermonitoring/licenses/licensesChanges';\nimport '@common/components/dashboard/dailyfeed/dailyfeedController';\nimport '@common/components/dashboard/dailyfeed/dailyfeedActivitySelector';\nimport '@common/components/dashboard/designer/dashboardDesignerController';\n\nimport '@common/components/dashboard/designer/appstore/multichart/graphConfigurationController';\nimport '@common/components/dashboard/designer/appstore/myCompetenceBalls/myCompetenceBalls';\nimport '@common/components/dashboard/designer/appstore/myA3s/myA3sController';\nimport '@common/components/dashboard/designer/appstore/myprojects/myprojectsController';\nimport '@common/components/dashboard/designer/appstore/teamtasks/teamTaskConfiguration';\nimport '@common/components/dashboard/designer/appstore/projectnextmilestone/projectNextMilestone';\nimport '@common/components/dashboard/systemactivity/systemactivityfeedController';\nimport '@common/services/admin/connectorAdminService'\n\n\nimport '@common/components/deviation/deviationSearchList/deviationList';\nimport '@common/components/deviation/deviationSearchList/deviationListFilter';\nimport '@common/components/deviation/deviationSearchList/deviationListResult';\nimport '@common/components/deviation/fullDeviation/fullDeviationController';\nimport '@common/components/deviation/mydeviations/mydeviationsController';\nimport '@common/components/deviation/ongoing/deviationColumn';\nimport '@common/components/deviation/ongoing/ongoingDeviation';\nimport '@common/components/deviation/ongoing/ongoingDeviation.css';\nimport '@common/components/deviation/ongoing/ongoingDeviationApp';\nimport '@common/components/deviation/ongoing/deviationCommonService';\nimport '@common/components/deviation/newDeviationController';\nimport '@common/components/deviation/newDeviation/newDeviationButton';\nimport '@common/components/deviation/deviationService';\nimport '@common/components/deviation/qualityService';\nimport '@common/components/deviation/newDeviationController';\nimport '@common/components/deviation/deviationCategories/deviationCategoriesSelector';\nimport '@common/components/deviation/projectStatus/deviationProjectStatusController';\nimport '@common/components/deviation/projectStatus/deviationProjectStatusPdfButton/deviationProjectStatusPdfButton';\nimport '@common/components/deviation/projectStatus/stackedDeviationHorizontalBarChart/stackedDeviationHorizontalBarChart.js';\n\n\nimport '@common/components/login/forgotPassword/forgotPasswordModalController';\n\nimport '@common/components/profile/myprofileController';\nimport '@common/components/profile/notifications/myNotifications';\nimport '@common/components/profile/notifications/myMessageNotifications';\nimport '@common/components/profile/profileSettings/profileSettingsController';\nimport '@common/components/profile/profileSettings/profileInfoSettings';\nimport '@common/components/profile/profileSettings/notificationSettings';\nimport '@common/components/profile/myRegisteredSuggestions/myRegisteredSuggestionsController';\nimport '@common/components/profile/myRegisteredIncidents/myRegisteredIncidentsController';\nimport '@common/components/profile/taskThisWeek/taskThisWeek';\nimport '@common/components/profile/myprofilephotoController';\nimport '@common/components/profile/profileImage';\nimport '@common/components/profile/inbox/inboxController';\nimport '@common/components/profile/inbox/inboxNotifications';\nimport '@common/components/profile/inbox/notificationMessages/taskAssigned/taskAssignedMessage';\nimport '@common/components/profile/inbox/notificationMessages/taskComment/taskCommentMessage';\nimport '@common/components/profile/inbox/notificationMessages/newDeviation/newDeviationMessage';\nimport '@common/components/profile/inbox/notificationMessages/deviationComment/deviationCommentMessage';\nimport '@common/components/profile/inbox/notificationMessages/improvementChangedStatus/improvementChangedStatusMessage';\nimport '@common/components/profile/inbox/notificationMessages/improvementComment/improvementCommentMessage';\nimport '@common/components/profile/inbox/notificationMessages/updatedResponsibleDeviation/updatedResponsibleDeviationMessage';\nimport '@common/components/profile/inbox/notificationMessages/updatedResponsibleSuggestion/updatedResponsibleSuggestionMessage';\nimport '@common/components/profile/inbox/notificationMessages/pageCommentAdded/pageCommentAddedMessage';\nimport '@common/components/profile/inbox/notificationMessages/licensesChanged/licensesChangedMessage';\nimport '@common/components/profile/inbox/notificationMessages/projectMessageAdded/projectMessageAdded';\n\n// project - confirmed not common\nimport '@common/components/project/projectTarget/projectTarget';\nimport '@common/components/project/projectDelete/projectDeleteController';\nimport '@common/components/project/attachments/projectAttachments';\nimport '@common/components/project/projectboard/templates/linkCell/projectLinkCell';\nimport '@common/components/project/newProject/newProjectController';\nimport '@common/components/project/projectController';\nimport '@common/components/project/status/projectPercentPlanComplete';\n\n\nimport '@common/components/improvement/status/feedbackstatus.js'\nimport '@common/components/dashboard/mydigiLeanfeedback/mydigileanfeedback.js'\n\nimport './css/layout.css';\nimport '../../node_modules/angular-ui-tree/dist/angular-ui-tree.min.css';\n\nimport '@common/thirdparty/datepicker3.css';\nimport '@common/thirdparty/angular-loading-bar.min.css';\nimport '@common/thirdparty/bootstrap/css/angular-bootstrap-lightbox.css';\n\nimport '@common/thirdparty/jquery.step.css';\n\nimport '@common/shared/comments/comments.css';\nimport '@common/shared/messages/messages.css';\nimport '@common/components/common/numericInput/numericInput.css';\nimport '@common/components/login/login.css';\nimport '@common/components/admin/data/lists/datalist.css';\nimport '@common/components/admin/learning/learning.css';\nimport '@common/components/A3/designer/a3designer.css';\n\nimport '@common/components/hours/hours.css';\nimport '@common/components/profile/profileSettings/profileSettings.css';\n\nimport '@common/components/tasks/tasks.css';\n\nimport '@common/components/actionlist/actionlist.css';\n\nimport '@common/components/board/newBoard/boardtypes/dashboard/dashboardPreview.css';\n\nimport '@common/components/deviation/deviationSearchList/deviationListResult.css';\n\n\nimport '@common/components/dashboard/designer/appstore/teamtasks/teamtasks.css';\nimport '@common/components/document/imagefileinfo/imagefile.css';\nimport '@common/components/strategy/strategy.css';\nimport '@common/components/strategy/goalCreate/goalCreate.css';\nimport '@common/components/strategy/goalEdit/goalEdit.css';\nimport '@common/components/strategy/strategyMap/strategyMap.css';\nimport '@common/components/strategy/strategyTaskList/strategyTaskListResult.css';\nimport '@common/components/dashboard/designer/dashboarddesigner.css';\n\nimport '@common/components/improvement/improvementActionList/improvementActionList.css';\nimport '@common/components/improvement/improvementList/improvementListResult.css';\nimport '@common/components/A3/a3.css';\nimport '@common/components/profile/profile.css';\nimport '@common/components/profile/inbox/inboxNotifications.css';\nimport '@common/components/profile/notifications/myNotifications.css';\nimport '@common/components/dashboard/dailyfeed/dailyfeed.css';\nimport '@common/components/deviation/deviation.css';\nimport '@common/components/A3/preview/a3previewDesigner.css';\nimport '@common/components/A3/templates/a3templates.css';\nimport '@common/components/A3/templates/preview/a3TemplatePreview.css';\nimport '@common/components/A3/templates/store/a3templateStore.css';\nimport '@common/components/dashboard/designer/appstore/appstore.css';\n\nimport '@common/components/dashboard/designer/appstore/calendar/calendar.css';\nimport '@common/components/dashboard/designer/appstore/kanbanboard/kanbanBoard.css';\nimport '@common/components/dashboard/designer/appstore/weeklyboard/weeklyboard.css';\nimport '@common/components/dashboard/designer/appstore/smartActionList/smartActionList.css';\nimport '@common/components/dashboard/designer/appstore/smileyApp/smileyApp.css';\nimport '@common/components/dashboard/designer/appstore/dailyKPI/fiveS.css';\nimport '@common/components/dashboard/designer/appstore/greencross/greencross.css';\nimport '@common/components/dashboard/designer/appstore/performanceboard/performanceboard.css';\nimport '@common/components/dashboard/designer/appstore/texteditor/texteditor.css';\n\nimport '@common/components/A3/a3Table/a3Table.css';\nimport '@common/shared/layout/clock/clock.css';\nimport '@common/shared/layout/favorite.css';\nimport '@common/shared/zoom/zoom.css';\n\nimport '@common/animations/heart/heartAnimation.css';\nimport \"@common/components/selectors/groupselector/groupSelector.css\"\n\nimport '@common/components/admin/data/job.css';\n\nimport \"@common/components/formatters/quartzCronDisplayer\"\n\nimport \"@common/components/diagram/DigileanDiagram.css\"\nimport \"@common/components/diagram/DigileanDiagramEditor\"\nimport \"@common/components/diagram/DigileanDiagram\"\nimport \"@common/components/diagram/DigileanDiagramApp\"\nimport \"@common/components/diagram/DiagramEditorFullscreen\"\nimport \"@common/components/diagram/DiagramTemplateSelector\"\nimport \"@common/services/user/userService\"\n\nimport \"@common/components/admin/integrations/integrations.css\"\nimport \"@common/components/admin/integrations/integrationsAdmin\"\nimport \"@common/components/admin/integrations/connectors/connectorAdmin\"\nimport \"@common/components/admin/integrations/jobs/newJobController\"\nimport \"@common/components/admin/integrations/jobs/jobAdmin\"\nimport \"@common/components/admin/integrations/jobs/editJobpartDialog\"\n\nimport '@common/components/monitoring/JobRunStateViewer'\nimport '@common/components/monitoring/JobRunTimeViewer'\nimport '@common/components/monitoring/ConnectorStateViewer'\n\nimport '@common/components/monitoring/integrations/integrationsMonitor'\nimport '@common/components/monitoring/integrations/connectorMonitor'\nimport '@common/components/monitoring/integrations/jobLogs'\nimport '@common/components/monitoring/integrations/LoggMessageViewer'\nimport '@common/components/monitoring/monitoringAll'\nimport '@common/components/monitoring/monitoring.css'\n\nimport \"@common/components/users/userBadge\"\nimport \"@common/components/formatters/scalableText\"\nimport \"@common/components/dashboard/designer/appstore/greencross/kpiMonthSelector\"\n\nimport \"@common/services/pageStateService\"\n\nimport \"@app/app/users/userComponent\"\n\nimport \"@common/components/admin/integrations/jobs/jobPartsAdmin\"\nimport \"@common/components/monitoring/integrations/connectorMonitorTable\"\nimport \"@common/components/monitoring/integrations/monitorJobLog\"\n\n// VUE components reg\nimport { defineCustomElement } from \"vue\"\n\n\nimport UserAzureLookup from \"@common/components/users/UserAzureLookup.vue\"\nconst UserAzureLookupCe = defineCustomElement(UserAzureLookup)\ncustomElements.define('user-azure-lookup', UserAzureLookupCe)\n\nimport GroupAzureLookup from \"@common/components/users/GroupAzureLookup.vue\"\nconst GroupAzureLookupCe = defineCustomElement(GroupAzureLookup)\ncustomElements.define('group-azure-lookup', GroupAzureLookupCe)\n\nimport strategyFlexibleBowlerChart from \"@common/components/strategy/strategyKPI/strategyFlexibleBowlerChart.vue\"\nconst strategyFlexibleBowlerChartCe = defineCustomElement(strategyFlexibleBowlerChart)\ncustomElements.define('strategy-flexible-bowler-chart', strategyFlexibleBowlerChartCe)"],"names":["angular","module","controller","$scope","$uibModalInstance","translationId","close","dismiss","$state","$filter","$translate","$rootScope","a3Service","NgTableParams","existing","existingA3s","a3s","selectedA3","getA3s","then","allA3s","length","e","filtered","filter","value","index","arr","id","tableParams","dataset","ok","selected","newPieChart","data","options","radius","fill","planPieChart","doPieChart","checkPieChart","actPieChart","statusOptions","statusDB","translated","instant","cssClass","filteredAndInResultList","pie","directive","templateUrl","restrict","scope","link","elem","attrs","goal","active","color","background","$watch","model","a3","getSortValue","subscribe","a3Id","setActive","setTimeout","$","focus","goalChanged","updateA3Goal","result","a3Title","title","goToA3","go","version","reload","taskDrawingService","projectService","displayName","user","matchingUser","users","userId","ownerUserId","ownerDisplayName","mapUser","fullName","clearSelectedUser","selectUser","displayname","a3Owner","updateOwner","registeredowner","$uibModal","participants","project","getUsers","projectUsers","projectuserinfo","projectId","unshift","indexOf","splice","openParticipants","open","backdrop","animation","resolve","boardTaskService","progress","label","customOption","calculateProgress","getNoA3TaskPerStatus","statusdata","taskCompletedCount","taskCount","blank","unacceptable","Math","round","progressOptions","setProgress","updatedstatus","task","openTasks","windowClass","option","getStatus","selectedStatusOption","status","sortorder","autofocus","statusChanged","updateA3Status","refresh","statustask","titleChanged","updateA3Title","element","milestones","a3ProjectId","getMilestonesForA3Project","forEach","milestone","plannedDate","moment","toDate","actualDate","datePicker","opened","endDatePicker","add","name","completedDate","createA3Milestone","push","delete","deleteA3Milestone","milestoneChanged","updateA3Milestone","milestonePlannedDateChanged","$event","date","originalEvent","detail","milestoneActualDateChanged","event","isLoading","getPreviewImageUrl","url","previewUrl","get","toogleEditModeOn","isEditMode","getLinks","links","linkCountChangeHandler","linkCount","cssState","isPartOf","i","deleteLink","addLink","notValidTitle","notValidUrl","stored","toggleEditMode","debounce","stepContent","content","style","JSON","parse","froalaInit","commitChanges","saveStep","step","commitChangesDebounced","contentChanged","val","froalaOptions","toolbarButtons","imageEditButtons","getProjectInfoForA3s","statusorder","dbstatus","getStatusOrder","milestoneMissed","duration","diff","asDays","checkMilestones","estimatedSavings","estimatedTotalCost","estimated","actualSavings","actualTotalCost","realized","calculateRealization","translations","translatedTitle","COMMON_TITLE","translatedStatus","COMMON_STATUS","$on","translatedTitel","languageCode","sourceColumn","toggleShowMilestone","showMilestone","suggestionService","authService","layoutService","statusAggregated","axisLabel","aggregateResult","array","aggregated","PROJECT_STATUS_AGGREGATED","A3_REALIZED","COMMON_ESTIMATED","COMMON_HOURS","endDate","utc","endOf","timePeriod","from","startOf","toJSON","to","getTimeInitiativeMonthlyRealized","find","Highcharts","chart","renderTo","type","text","fontWeight","fontSize","fontFamily","credits","enabled","exporting","xAxis","categories","monthNumbers","yAxis","min","legend","shadow","tooltip","shared","plotOptions","column","grouping","borderWidth","series","amount","pointPadding","pointPlacement","getStatusData","monthlyRealized","yAxisText","PROJECT_MONTHLY_REALIZED","monthly","$stateParams","getStepForId","stepid","steps","parseInt","versionNumber","canEdit","widgets","versions","getVersion","layout","widget","key","component","a3StepId","actionPlan","save","$window","a3templateService","loadTemplate","public","getPublicTemplate","a3templateId","template","withoutProjectInfo","s","isProjectInfo","defaultLayout","a3info","position","header","row","col","sizeX","sizeY","getStepWidget","info","stepIndex","defaultContent","width","height","zoom","getDefaultLayout","w","innerWidth","bind","currentTarget","window","gridsterOptions","margins","columns","sparse","resizable","draggable","calculateTaskCounts","total","overdue","t","a3taskCount","a3taskOverdueCount","publish","assetId","assetid","getA3sForAssetWithActionItems","target","deviationService","deviations","deviationtaskCount","deviationtaskOverdueCount","getDeviationsForAssetWithActionItems","deviationId","improvements","improvementtaskCount","improvementtaskOverdueCount","improvemenmttaskOverdueCount","getImprovementsForAssetWithActionItems","improvementId","newBoard","contactlistService","contact","savedItem","checkEmail","email","invalidEmail","test","signupService","getTrialStatus","trialinfo","trials","getActiveTrialStatus","getConvertedTrialStatus","loadBoards","trial","showBoards","hasLoadedBoards","isLoadingBoards","boardService","getBoardsByCustomer","customerId","values","boards","dataSourceService","isLoaded","datasourceId","dataSource","thisMonthSettings","timeframe","valueElement","unit","decimals","thisYearSettings","thisYearMultiSettings","dataSeries","datasource","manual","graphType","graphcolor","formula","accumulated","selectedGrouping","dataService","existingDataSources","dataSourceDescription","allDataSources","usedColumns","uploadedFile","allProjects","missingProjects","commonProperties","sources","dimensionCount","getDataSource","description","objectSource","unitOfTime","getRefId","areaId","dateElement","isMandatory","getValue","elements","getElements","fileParsed","toString","init","x","sourceNames","map","exists","checkIfAlreadyExists","n","includes","split","trim","setDefaults","loadDataSources","loadProjects","display","getOptions","selectedRef","inUse","findExisting","match","readValues","drop","el","console","log","getList","numberOfValues","sortOrder","getLatestValues","record","dimension","dimension2","dimension3","dimension4","existingValues","v","p","projectNumber","ref","indexData","refIndex","include","toLowerCase","canCreateNewDataSource","allExists","d","createDataSources","projectIndex","rows","r","m","addProjects","writeValuesToDataSource","readValue","timeStamp","timeStampFormat","format","convertTimestamp","projects","getProjectId","existingDataSource","addList","convertToLocal","utcDateString","nameIndex","nameWithUnit","replace","sourceName","dates","dateSeparator","timeSeparator","firstPart","secondPart","thirdPart","dateStrings","substring","firstVals","f","firstMax","max","secondVals","secondMax","thirdVals","maxValuesSorted","part","sort","a","b","components","first","second","third","determineTimeFormat","selectedHeader","excelData","localStorage","refObject","addExcelJob","job","config","Object","assign","$$hashKey","jobType","mapping","stringify","fileName","valueIndex","nameAndUnit","createDataSource","eraseAllExistingValues","deleteAllValues","modalService","importExportService","dataListService","dataList","updateList","isSystemList","createList","unitsOfTime","db","selectedUnitOfTime","setUnitOfTime","unitoftime","setTargets","dataSourceId","getTargets","targets","registration","greenOperator","greenValue","yellowDescription","getYellowOperator","redOperator","redvalue","redValue","validFrom","isSame","selectedDate","notValidDate","operators","dbCode","html","redoperators","selectedGreenOperator","selectedRedOperator","greenvalue","notValidExpression","selectedItemForUpdate","isProcessing","settings","setDataSource","componentSettings","settingsChangeHandler","selectedDateChangedEvent","selectedDateChanged","validateExpression","Number","setYellowText","operator","greenChanged","greenoperator","newRedOperators","setAvailableRedOperator","redChanged","utcDate","datasourceid","redoperator","addTarget","savedRegistration","deleteTarget","$location","$timeout","languageAdminService","savedSuccessfully","message","isElementRegistrationNew","selectedAttributeType","selectedDataList","alreadyUpdated","customfields","getAllCustomFields","fields","typeinfo","customTypes","typelabel","getLists","list","datalists","defaultConfig","languageLabel","nativeLabel","selectedLanguage","languages","getSupportedLanguages","changeLanguage","language","item","customLanguageLabel","customLanguageLabels","q","updateTranslationLabel","updateCustomFieldTranslationLabel","setItemViewMode","updateDeviationCustomField","setItemEditMode","dataListId","dataListName","updateItem","addCustomField","newField","selectedAttributeTypeChanged","deleteCustomField","field","modalOptions","closeButtonText","COMMON_CANCEL","actionButtonText","COMMON_DELETE","headerText","bodyText","ADMIN_MESSAGE_DELETE_DEVIATION_CUSTOMFIELD_CONFIRMATION","showModal","deleteDeviationCustomField","saveElement","addDeviationCustomField","checkShow","itemId","validItems","problemCategoryId","deviationTypeId","deviationType","getProblemCategories","getCategoriesForType","validcategories","validCategoriesForType","show","toggleShow","addDeviationTypeCategory","deleteDeviationTypeCategory","problemReasonId","causes","getCauses","getCausesForType","validcauses","validCausesForType","addDeviationTypeCause","deleteDeviationTypeCause","getDeviationType","currentStep","selectStep","typeSettings","requiredByDigilean","getFieldsForType","allfields","deviationCustomFieldId","toggleMandatoryField","addDeviationTypeField","updateDeviationTypeField","savedField","deleteDeviationTypeField","itemsSortableOptions","connectWith","handle","placeholder","stop","ui","items","sortable","droptargetModel","itemsSortOrder","sortOrders","updateItemsSortOrder","selectedCustomLanguageLabel","translabel","getTranslationsWithDeviationType","updateDeviationType","createDeviationType","learningService","async","setPublishStatus","material","publishStatus","respone","updatePublishStatus","errorVectorizingPageIds","errorPageIds","join","alert","checkReplishState","checkRepublish","canRepublish","selectedPageId","isKaizen","hasRole","pageid","setEditMode","mode","republish","res","pages","getItems","summary","concat","setCurrentPage","newUrl","selectFrontPage","frontPage","selectedPage","selectedPageType","page","selectPage","pageSelectHandler","pageId","currentPage","pageTitle","pageTitleChanged","updateItemTitle","itemTitle","learningPublicService","setAllSectionsEditMode","sections","updatePageSectionSortOrder","pageSectionSortOrder","section","sectionsSortableOption","getPage","isExternal","sectionType","scrollTo","loadPage","setSectionViewMode","setSectionEditMode","tempsection","removeSection","deleteSection","addSection","learningItemId","createSection","savedSection","materialId","loadSummary","setAllItemsEditMode","setSelectPageId","currentPageId","payLoad","removeItem","deleteItem","itemTitleChanged","summarySortableOptions","chapters","summarySortOrder","updateSummarySortOrder","pageListSortableOptions","droptarget","source","chapterId","attr","received","chapterSortOrder","updateChapterSortOrder","addChapter","chapter","learningMaterialId","itemType","parentSortOrder","createItem","addPage","addToChapter","parentId","update","files","updateSection","deleteFile","file","fileUploaded","$sce","trustSrc","src","trustAsResourceUrl","videoUrlChanged","videoUrl","load","getLearningMaterials","materials","editSettings","edit","found","addLearningMaterial","deleteMaterial","deleteLearningMaterial","err","imageId","setLanguage","createLearningMaterial","created","uploadedFiles","calculateLevels","range","numberOfLevels","levelSize","levels","levelStart","level","start","end","getLevel","getLearningMaterialStats","totalVisitsLevels","totalVisitsRange","uniqueUsersLevels","uniqueUsersRange","likesLevel","likesRange","dislikeLevel","dislikesRange","numberOfCommentsLevels","numberOfCommentsRange","totalVisitsLevel","totalVisits","uniqueUsersLevel","uniqueUsers","likes","dislikesLevel","dislikes","numberOfCommentsLevel","numberOfComments","openComments","addProject","newproject","createdProject","yearlyTimespan","totalProjects","translateFilter","nameFilter","numberFilter","customerFilter","projectCustomerName","ownerFilter","owner","projectCustomer","showTeamBoards","ADMIN_MESSAGE_DELETE_PROJECT_CONFIRMATION","deleteProject","deletedProject","foundProject","projectItem","factory","$http","$compile","service","boardElement","table","empty","board","isKamishibai","boardType","showHorizontalRowHeaders","ShowHorizontalRowHeaders","categoryDirection","append","each","columnStyle","categoryStyle","backgroundColor","foregroundColor","dateText","dayContainer","weekdayName","responsible","categoryId","userName","responsibleUser","responsibleUserId","userDisplayName","responsibleDisplayName","responsibleForCategory","drawResponsibleForCategory","body","rowStyle","rowData","rowResponsible","rowResponsibleCategory","td","boardCell","tasks","rowCategoryId","columnCategoryId","tableWidth","cellMaxWidth","off","resize","css","this","boardid","portletHeader","internalScope","$new","trigger","access","isWeeklyBoard","iconclass","getIconClass","actionContainer","getActionContainer","responsibleContainer","drawResponsibleContainer","commentsContainer","drawCommentsContainer","commentCount","attachmentContainer","drawAttachmentContainer","attachmentCount","hasOwnProperty","tags","tag","animationClass","statusClass","theme","getTaskCardTheme","portletStyle","wrapperClass","kamishibaiIconStyle","repeatParentId","siblingId","durationInSeconds","startTime","endTime","getBoardDate","getTextDescription","drawTags","getTaskInfoIndicators","boardDate","container","wrap","parent","improvementSuggestionId","taskType","remove","rowsInDom","attributes","cell","taskHtml","drawTask","recalculateZindex","removeAnimations","removeClass","portletA","portletB","offsetLeft","offsetTop","sortedPortlets","compareForZindex","portlet","zindex","cells","cellHeights","targetHeight","getResponsibleForCategory","category","rowCategory","categoryResponsibleUserId","rowCategoryResponsibleUserId","getResponsibleData","selectorWithDataAttributes","username","getIEVersion","sAgent","navigator","userAgent","Idx","completeCss","updateCompletedStatus","subTaskCount","subTaskCompletedCount","count","taskId","editTask","isReadOnly","activeTab","archiveAvailable","getSiblings","siblings","cancel","deleteJustThis","deleteAClonedTask","deleteAll","deleteClonedTask","move","clone","getTaskInfoBoardName","parenttask","postIts","getPostIts","setColor","taskColor","predefinedPostIt","fillColor","selectedPostIt","setStyle","backgroundPostIt","borderColor","hasDueDate","displayColor","changePriorityStatus","statusClasses","nextIndex","inArray","priorityStatus","taskid","prioritystatus","updatePriorityStatus","openTask","canChangeBoard","dragDescription","postitPlaceholder","dragTarget","fillcolor","BOARD_POSIT_DRAG_DESCRIPTION","isSelected","postIt","getTagsDescription","cursor","helper","clearSelection","selectedColor","selectColor","selectColorHandler","labels","defaultLabels","l","tasktagID","taskselectedID","tagit","singleField","singleFieldNode","tagArray","createNew","newLabel","_","templateColorChanged","reset","tagSingleString","tagsArray","dragulaService","PostIts","postit","configuration","thirddecision","filters","targetDataSourceId","targetDataSource","targetFilters","targetValue","undefined","updateName","updateTargetValue","operatorChanged","selectDataSource","hasDataSerie","withTarget","externalOnly","selectTargetDataSource","changeFormula","newFormula","nameMissing","dataSourceMissing","targetMissing","getRepeatInfo","repeatInfo","deleteTask","deleteFuture","deleteFutureRepeatingTask","deleteRepeatingTask","smartActionListService","createColumn","listColumn","showAddButton","isEmptyOrNull","displayUser","property","propertyValue","isPartOfColumn","comparer","smartTableColumnId","hasTask","addTask","removeTask","saveChanges","changeSettings","cellValue","dropColumn","cellId","boardTaskId","updateCell","savedCell","sortTasks","animate","getColumns","boardTasks","predefinedLabels","emptyLabel","orderByFilter","createResponsibleColumn","userDetails","assignUser","taskAssigned","hasColumnForResponsible","responsibleUserDisplayName","userProfile","allUsers","showNotAssignedColum","responsibles","createStatusColumn","progressStatus","updateProgressStatus","updateStatus","editable","createCategories","smartActionList","actionList","textColumns","attributeType","usePredefinedLabels","columnIndex","createRows","selectedCategory","rowIndex","targetColumn","smartColumnId","isDefault","rowModel","updateTask","setValue","getAttribute","uniqueResponsibleList","createdRowsFromCategory","getRowForTask","getTargetColumn","targetRow","taskRowValue","taskRows","addTaskToRow","timeOptions","taskRow","addTaskToRowIfSpace","newRow","createTaskRow","moveTask","targetOptions","targetWeek","targetMonth","lastWeek","indexNumber","startWeek","subtract","calculateDuration","reCalculateRow","targetRowId","reCalculateRowByIndex","targetRowIndex","endWeek","startCell","colspan","durationInWeeksCurrentMonth","firstWeek","taskCell","month","weeks","lastweek","isoWeek","isStartOutsideCurrentPeriod","isEndOutsideCurrentPeriod","startDate","number","showDueDate","enddateBeforeStartdate","borderStyle","taskBorderStyle","customColorBackground","attribute","checkDate","isBefore","emptyUser","profileImageUrl","responsibleImageUrl","startTimeUpdated","endTimeUpdated","Id","Tag","BoardTaskId","addBoardTask","createdTask","targetDay","startDay","endDay","durationInDaysCurrentWeek","firstDay","week","days","lastday","isoWeekday","startMonth","endMonth","durationInMonthsCurrentYear","currentYear","year","startYear","endYear","proposition","okText","cancelText","commaActive","parseString","valueString","decimalPlaces","base","trail","floor","countDecimals","parseFloat","toFixed","addNumber","sum","valueChanged","backSpace","comma","suggestion","headline","statuses","getSuggestionStatuses","comment","selectedStatus","suggestionStatus","suggestionId","updateStatusOnCustomerSuggestion","msg","suggestions","allSuggestions","suggestionsToBeHandled","improvement","changed","changeStatus","suggestionComment","comments","getCustomerSuggestions","activeComment","showSuggestionsToBeHandled","showAllSuggestions","showComments","addComment","currentComment","savedComment","answer","a3TableService","boardData","hasBoard","loadBoard","boardId","isAdminMode","createNewA3TableDebounced","boardChanged","selectedBoard","updateSettings","currentBoardId","isPublic","IsWeeklyBoard","getStandardA3Columns","createA3Table","savedModel","loadAllA3s","updateContainerHeightDebounced","a3Changed","targetSize","host","closest","args","appstoreService","selectedApp","allApps","getApps","apps","isAllSelected","types","selectType","list1","list2","isUnion","item1","j","operation","resetSelection","selectApp","app","kpiLetterBaseDirective","fiveSDirective","post","visualizationType","aLetterDirective","cLetterDirective","dLetterDirective","dailyKpiDynamicDirective","iLetterDirective","kLetterDirective","lLetterDirective","pLetterDirective","qLetterDirective","navigationService","selectedFilters","categorySummaryData","drilledDown","countTranslated","accumulatedTranslated","recordingTranslated","hasProject","hasModule","periodChangedHandler","period","loadData","setTimePeriodDebounced","categoryChart","timeSettings","useDefaultTimeframes","timeframes","getTimePeriod","setTimePeriod","TimePeriod","Filters","getSummaryOfCategoriesWithFilter","drawChart","resizeChart","deviation","filterChangedHandler","paddingRight","paddingBottom","setSize","currentItem","renderElement","verticalAlign","formatter","y","crosshair","opposite","plotLines","dashStyle","zIndex","point","events","click","columnOrderNo","subCategorySummary","deviationGroupElements","deviationNew","ownerUserDisplayName","filterDatasource","DigiLean","qualityService","profile","hasDeviation","setStatusValue","newValue","Date","UTC","dateOfMonth","updateDateStatus","savedStatus","getRegistrations","showDatasourceValues","deviationOptions","SortDirection","timePeriodColumn","showDeviations","greencrossDirective","showNavigation","showRangeSelector","userid","getCurrentUser","getFirstDate","fromDate","totalSerie","seriesData","splitPackedBubbleChart","listOptions","includeDeletedItems","hasCompetanceBallModule","getFeatureList","getFeatureSource","competenceball","createdByUserId","getCompetenceCategoryName","catid","cat","getValuesForPeriod","competenceballs","registeredCategories","prop","dataValues","elementsWithGivenCategory","miniboble","apply","Chart","useHTML","pointFormat","packedbubble","minSize","maxSize","zMin","zMax","layoutAlgorithm","splitSeries","gravitationalConstant","bubblePadding","dataLabels","textOutline","$element","today","addNextMilestone","nextMilestone","isAfter","abs","hasProjectModule","hasAccess","modules","getMyProjectsInfo","isAdmin","incidentfilter","changeIncidentFilter","setting","valid","validConfiguration","wrongConfiguration","next","translationData","getNextMilestonesForProject","nextmilestone","loadNextMilestone","disableCopy","cloneTask","copyTask","archive","moveTaskToArchive","unarchive","moveTaskFromArchive","defaultDateColor","selectCustomColor","cellChangeHandler","dateMissed","dateModel","changeColor","changeColorSettings","diffToPlannedDate","trunc","changeColorXDaysBefore","updateDate","localDate","newDate","getFullYear","getMonth","getDate","moveSettings","modifiedBy","lastModified","lastModifiedByUser","updateModifiedInfo","getModifiedInfo","openInNewTab","showDropdown","textChanged","urlChanged","openChanged","mathService","unitPlacement","updateAggregateCell","roundNumber","smartActionListColumnId","columnId","numberChanged","sendEvent","payload","numberCellAggregateValue","aggregateType","valuePerRow","calculateAggregateValue","noOfCellWithValue","updatedValue","existingValue","updateValue","affectedBoardId","u","setResponsible","lastName","hasDescription","taskCommentCount","attachment","openImprovement","improvementid","openDeviation","deviationid","openCloneInfo","newStatus","taskStatus","isAvailableInProjectBoard","openConfiguration","newsettings","updateStartDate","taskMoved","durationUpdated","order","selectTextAndColor","addColumn","columnid","checked","rowId","projectBoardAttributeId","tablecell","a3TableColumnId","boardAttributeId","projectAttribute","a3TableCell","check","cellChanged","changeHandler","minwidth","typeOfSettings","reduceWidth","increaseWidth","updateWidthSetting","widthSetting","updateColumnWidth","newvalue","smarttableService","getIcons","icon","icons","predefinedIcons","exist","smartTableRowId","clear","selectIconAndColor","projectAttributeId","noOfRowCellWithValue","existingValueForRow","existingValueForProject","existingSumForProject","simpelUser","rating","ratingChanged","score","probability","consequence","calculateScore","probabilityChanged","consequenceChanged","nameChanged","daysBetweenMeetings","connectTargetToDatasource","orderedTargets","setupProgressBar","progressbarItems","temp","helpertarget","colorStyleClass","z","k","progresswidth","getOperatorSortOrder","reorderTargets","aOp","bOp","cannotDeleteTarget","selectedOperator","targetValueChanged","colorChanged","newTarget","setGoal","goalData","setAssesment","assesmentData","categoryNameChanged","deleteCategory","addCategory","smartcellService","newid","selectedProject","selectedExisting","choosenid","smartCloneId","smartCloneName","getActiveProjects","getClonedCellIdentificators","ids","setName","useSingelValue","useProject","setProject","getProjectValueForClonedCell","smartCloneCellValue","updateCloneValue","newCellValue","matchesFilters","inList","matchesFilter","valueInList","isfiltered","datasources","getAllTags","filterTags","isActive","filteredList","filteredTags","filteredDataSourceIds","dataSources","getFilteredListByTags","filterDataSource","clearFilter","applyFilter","selectedFilter","includeAll","getCategories","deselectAll","modifyFilter","selectedItems","filterChangeHandler","updatedSourceColumn","templates","areaService","getAreaList","areas","identifiers","consequences","getConsequences","setFilter","setFilterForElement","elementFilters","filterItem","updateFilter","hasFilter","isCustomField","customFieldId","filterChanged","listid","listItems","setPreSelectedGraphColor","selectedGraphColor","grafcolor","getColors","selectedDataSource","selectedSerie","selectedIndex","selectedManualValue","selectedName","selectedManualType","editManual","changeDate","datavalue","itemClicked","$index","resetRegistration","graphtype","sortableOptions","itemMoved","newSerie","modifyManualDatatype","serie","datatype","axis","addManualSerie","deleteSerie","modifySelectedSerie","severities","getSeverityText","severity","getTypeList","getAllDeviationTypes","selectableElements","getPriorityList","priorities","getPriorityStatusText","operator1","operator2","valueoperator1","valueoperator2","operator1option","operator2option","translatedText","clearOperator1","clearOperator2","filter2","projetIdentifiers","strategyService","goals","getBreakthroughObjectives","selectedText","units","getConsequenceUnit","uploadPath","showTimeSelector","change","setSelectedCategories","selectedCategories","children","subCategory","addSelectedCategory","removeSelectedCategory","toggleCategory","toggleSubCategory","params","showFilter","showFileGenerators","showArchived","getSummaryOfCauses","getSummaryOfConsequences","smile","meh","frown","selectedType","getDeviationTypes","deviationtype","filtersettings","consequenceSettings","cons","getConsequenceUnitLabel","getNoEvaluationStatus","evaluation","getConsequenseSingelSettings","getEvaluationSummaryList","rowdata","categoryFilter","causeFilter","cause","lossTypeFilter","lossType","causeId","lossTypeId","getDeviations","getMyDeviations","setDeviationFirstInList","newText","$apply","deletedid","typeId","bindings","context","labelNew","newClicked","columnLoaded","deviationCommonService","$ctrl","labelText","labelNewText","$onChanges","changes","currentValue","dueDate","hasResponsible","$onInit","$postLink","ulEl","querySelector","deviationOpenForEdit","updatedDeviation","openA3","initSettings","settingProjectStatus","groupColumn","stackingColumn","settingProjectType","settingProjectSeverity","settingProjectCategory","settingCreatedBy","fromInProgressToImpl","fromNewToInProgress","getData","leadtimecategories","dataFromInProgressToImplemented","dataFromNewToInProgress","getLeadTimeForAssets","leadtimedata","results","asset","fromInProgressToImplemented","reversed","stacking","IMPROVEMENT_TOTAL_LEAD_TIME","IMPROVEMENT_FROM_IMPL_TO_EVALUATED","DEVIATION_FROM_IN_PROGRESS_TO_RESOLVED","IMPROVEMENT_FROM_PLANNED_TO_IN_PROGRESS","DEVIATION_FROM_NEW_TO_INPROGRESS","xfirstlinecategories","xmonthcategories","browserDataSuggestionByArea","firstlinecategorynew","firstlinecategoryimpl","noOfSuggestions","COMMON_NEW","IMPROVEMENT_IMPL","DEVIATION_NUMBER_OF_DEVIATIONS","getAreaMonthCountOnStatus","newSuggestionByData","new","implementedSuggestionByData","implemented","areaName","area","suggestionCount","stack","showInLegend","zeroes","autoRotation","textOverflow","tickWidth","lineColor","tickLength","allowDecimals","stackTotal","legendItemClick","myname","myvis","visible","setVisible","groupPadding","browserDataSuggestionByAsset","getSeverityDescription","getSeverityMonthCountOnStatus","newBySeverityData","implementedBySeverityData","getSeverityColor","severityImpl","getAssetMonthCountOnStatus","newSuggestionByAssetData","implementedSuggestionByAssetData","assetName","thisMonthInvoicedSettings","thisYearInvoicedSettings","thisMonthPieSettings","groupedBy","$document","statusData","suggestionStatus1","suggestionStatus2","suggestionStatus3","suggestionStatus4","suggestionSortableOptions","receive","matrixSortableOptions","like","existingSuggestions","improvementTitle","newTitle","existingfilteredSuggestions","improvementResponsible","newResponsibleUserId","newResponsibleUser","fullSuggestion","index2","filterById","filterValues","suggestionOpenForEdit","animationsEnabled","updatedSuggestion","roi","likedByMe","likedBy","commentedByMe","commentedBy","addLike","newItem","suggestedBy","suggestionDate","addSuggestion","improvementOverdueCount","improvementTodayCount","improvementFutureCount","getUserTasks","dateStyleClass","future","improvementCount","chartHeight","unrealizedLabel","realizedLabel","labelcategories","getTimeRealizationForAssets","estimatedValue","realizedValue","bar","fromImplToEval","fromPlannedToInProgress","fromNewToPlanned","dataFromImplementedToEvaluated","dataFromPlannedToInProgress","dataFromNewToPlanned","fromImplementedToEvaluated","IMPROVEMENT_FROM_IN_PROGRESS_TO_IMPL","IMPROVEMENT_FROM_NEW_TO_PLANNED","getLikesForSuggestion","colorById","getColorById","newColorById","IMPROVEMENT_NUMBER_OF_SUGGESTIONS","getNoOfSuggestionByAssetAndStatusAndMonth","notSpecified","impAssetId","impAsset","hasImprovementModule","improvementStatus","getMySuggestions","showLikes","openImprovementSuggestion","improvementsuggestionid","missingTitle","attachments","improvementCommonService","dispatchEvent","CustomEvent","bubbles","composed","hasFinancialNumbers","estimatedCostOfInvestment","costOfInvestment","estimatedGainOfInvestment","gainOfInvestment","previousperiod","previousRankingData","rankingData","getImplementedSuggestionByAsset","prevdata","trend","setTrend","initiatives","getTopTimeImprovementInitiatives","te","getValues","noNew","noPlanned","noInProgress","noImplemented","noEvaluated","noArchived","getNoImprovementPerStatus","planned","inProgress","evaluated","archived","pagetitle","evaluationService","favoriteService","isUseful","isNotUseful","isStar","getMyEvaluationForPage","hasPageAsFavorite","setUseful","removeEvaluationFromPage","evaluatePage","setNotUseful","setStar","addPageAsFavorite","removePageAsFavorite","getEvaluationsForPage","getPageFavoriteStatus","favoriteStatus","getMyFavoritePages","getLink","uiOnParamsChanged","newParams","location","debug","oldUrl","previousPage","nextPage","setNextPage","addPageVisit","current","currentIndex","SuggestionId","getDateStyle","openSuggestion","projectName","ProjectId","Title","Text","TaskId","DeviationId","resolved","noOfIncidents","existingDeviations","openDeviations","suggestionimplemented","openSuggestionss","notificationService","wantsAll","userSettings","refreshModules","hasDeviationModule","hasA3Module","hasLearningModule","resetAllEvents","allEvents","notMobile","notEmail","translation","wantsNotifications","addNotificationSettings","getMyNotificationSettings","userSetting","matchingActivity","evt","toggleEmail","toggleMobile","toggleAll","customerService","noOfMilestoneMet","noOfMilestoneDelayed","noOfMilestoneRemaining","percentOnTime","percentDelayed","percentRemaining","totalMilestones","isValidDate","_isValid","checkOnTime","estimatedDate","getProjectInfo","estimatedStartDate","estimatedEndDate","calculateMilestones","plotBackgroundColor","plotBorderWidth","plotShadow","styledMode","align","headerFormat","distance","size","colors","innerSize","getAttachments","deleteAttachment","addAttachment","totalDeviations","totalSuggestions","getProjectCustomers","customers","getCustomerProjectsDeliveredOnTime","getCustomerProjectNoOfSuggestions","getCustomerProjectNoOfDeviations","getProjectCustomerStats","totalProjectsLevels","totalProjectsRange","onTimeLevels","onTimeRange","totalSuggestionsLevel","totalSuggestionsRange","totalDeviationsLevel","totalDeviationsRange","getMilestonesForProject","createMilestone","deleteMilestone","updateMilestone","dbId","changeType","planService","getDateFromCurrentDate","numberOfDaysToAdd","someDate","setDate","currentDate","currentDateValue","getToday","boardPlans","handleRowIconClick","planData","getPlanData","COMMON_ALL","COMMON_IN_PROGRESS","IMPROVEMENT_IMPLEMENTED","IMPROVEMENT_EVALUATED","search","selectStatus","selectTeamBoards","getBoardPlansForPeriod","projectInfo","projectBoardId","permanentDelete","removeProjectFromBoard","canEditMilestones","updateEstimatedStartDate","updateEstimatedEndDate","updateEndDate","actual","getMilestones","estimatedDatePicker","statusStartDate","statusEndDate","saveMilestone","savePlannedDateMilestone","saveActualDateMilestone","startAngle","endAngle","center","openSuggestions","noImplementedSuggestions","noEvaluatedSuggestions","noTotalSuggestions","getNoProjectImprovementPerStatus","showImprovements","noResolvedDeviations","noRejectedDeviations","noTotalDeviations","getNoProjectDeviationPerStatus","rejected","dashboards","getBoardsForProject","getDashboardsForProject","getA3ForProject","createNewBoard","createNewA3","projectTargetId","updateProjectTarget","statusValue","hms","getDeviationSeverity","celltype","changeVisualizationType","getStandardProjectColumns","getStandardSmartTableColumns","isStrategyContext","projectExists","projectNameExists","toUpperCase","existingProjects","okWithSameProjectName","checkName","newtype","existingtype","choosentype","getVisualizationTypesForProjects","setVisualizationType","newType","contacts","qcontact","projectModel","getProjectContactPerson","matching","membership","role","personId","customer","updateContact","updateProjectContactPerson","registeredcontact","clearContact","deleteProjectContactPerson","newContact","suggestedName","firstName","phoneNumber","companyName","newcontact","projectAttributeChangeHandler","isStartDate","isEndDate","milestoneName","milestoneId","foundMilestone","updatedDate","saveActualDate","saveEstimatedDate","valuePerProject","noOfProjectCellWithValue","assetRole","addUser","getNoProjectTaskPerStatus","updateProjectDescription","updateProjectName","updateProjectNumber","projectStatus","updateProjectStatus","getLatestProjectStatusValue","registerDate","registrationDate","isCloned","clonedBoardId","commitCellOnlyDebounced","saveCellChanges","getSummaryOfCategories","regression","regressionSettings","currentAssetId","strategyGoalId","strategyGoalService","goalId","isValid","goalCreateChangedHandler","goalCreate","assetList","strategyGoal","strategyGoals","createGoals","createGoal","goalEditChangedHandler","goalEdit","getGoal","changesToSave","updateColor","updateAsset","Promise","all","taskoptions","responsibleUserName","selectedStrategyGoal","setSelectedStrategyGoal","vision","strategy","loadStrategyBoard","getStrategyBoard","getVision","visioninfo","updateStrategy","Vision","getBoardsForStrategyGoal","getDashboardsForStrategyGoal","getA3sForStrategyGoal","strategygoalid","addStrategyGoalToA3","saved","onTarget","showNoteIcon","note","locale","yearForValue","setActualValue","actualformatted","toLocaleString","isWithinTimePeriod","valueDate","timeperiodfrom","timeperiodto","checkUpdatedDatasourceValue","kpi","getSumForPeriod","checkOnTarget","set","plan","openDataValuesPopup","datasourceoptions","kpiid","kpiMonthlyValues","valuechanged","kpiId","openDataValues","updateNote","newNote","kpiMonthlyValue","KPIId","updateKPIMonthlyValue","clearNote","newActual","setPlanValue","planformatted","targetFilter","newPlan","updateKPI","deleteKPI","setDirectionDown","setDirectionUp","firstdecision","targetdecision","updateTitle","updateUnit","startDateUpdated","changedStartDate","endDateUpdated","titleMissing","loadGoal","goToHub","breakthroughGoalId","breakthroughgoal","assets","goalInfo","clearAsset","emptyAsset","selectAsset","updateDescription","goalDescription","hasParentGoal","parentgoal","editGoal","parentGoal","loadSubGoals","showSubGoals","toggleShowSubGoals","loadGoals","getTeamGoals","currentParentId","currentrowspan","childGoals","rowspan","getInfo","threeCService","threeCStatusChangedHandler","itemStatus","statusColumnProvider","responsibleColumnProvider","addTasks","alltasks","numberOfUsers","o","loadedUsers","loadModel","columnGroupList","columnProvider","groupModel","groupingChanged","loadTasks","toggleUser","hide","isMemberOfAsset","initTask","hasColumnWithTask","isTaskPartOfTaskList","getTask","columnOptions","entityType","taskTypeId","newResponsible","updateResponsible","updateSuggestion","deviationResponsible","updateDeviation","timeOut","animateClass","columnGrouping","createTask","selectedUser","tab","taskOverdueCount","taskTodayCount","taskFutureCount","deviationCount","deviationOverdueCount","deviationTodayCount","deviationFutureCount","a3Count","a3OverdueCount","a3TodayCount","a3FutureCount","hasImprovement","hasA3","workList","activityService","Initialize","saveActivity","activity","action","activityId","categoryName","duedate","oldDueDate","newDueDate","problemreasons","oldSeverity","newSeverity","categoryText","activityOwner","activityOwnerUserId","suggestedByUserId","activityOwnerId","repeatResult","original","a3Ids","a3Version","run","activityCenter","require","elm","ngModel","updateViewValue","$setViewValue","innerHTML","on","$render","$viewValue","dataValueCenter","$q","func","wait","immediate","timeout","deferred","defer","arguments","callNow","promise","domain","domains","getDomain","activeDomains","getItem","addActiveDomain","setItem","removeDomain","FroalaEditor","DefineIconTemplate","DefineIcon","NAME","addClass","froalaView","nv","explicitlyTrustedValue","trustAsHtml","onErrorSrc","$set","priority","greencrossSeverity","contentChangedHandler","initialized","attribution","pastePlain","imagePaste","toolbarSticky","toolbarInline","placeholderText","heightMin","linkAlwaysBlank","quickInsertTags","editContent","$onDestroy","$interval","showFullscreenIcon","toggleFullScreen","isInFullScreen","document","fullScreenElement","mozFullScreen","webkitIsFullScreen","msFullscreenElement","docElm","exitFullscreen","msExitFullscreen","mozCancelFullScreen","webkitExitFullscreen","requestFullscreen","mozRequestFullScreen","webkitRequestFullScreen","msRequestFullscreen","isClosed","ibox","button","slideToggle","toggleClass","addA3","savedA3","savedsuggestion","getMyProjects","selectProject","projectid","updateinfo","projectChangeHandler","projectinfo","num","scale","sig","isNumeric","str","allowblank","isNaN","correctForComma","goTo","reply","pagerService","Error","subTitle","userAccess","modalDefaults","keyboard","modalFade","customModalDefaults","customModalOptions","tempModalDefaults","tempModalOptions","extend","okButton","which","$eval","ngEnter","preventDefault","setPage","pager","totalPages","getPager","pageSize","slice","startIndex","endIndex","$watchCollection","old","totalItems","startPage","endPage","ceil","publishEventMap","constructor","prototype","evnt","_thisScope","call","handlerMap","handler","error","handlers","$id","PubSubService","getSettingsFromDataSource","settingsSource","getTargetIndicatorColor","targetindicator","getInternalTargetResultForPeriod","validTargetsInPeriod","fromdate","todate","totalNumOfYears","daysOfNewMonth","daysInMonth","valueUnit","totalNumOfMonths","isoYearStartDate","isoWeekYear","isoYearEndDate","totalNumOfWeeks","totalNumOfDays","targetIndicator","RedOperator","targetDescription","getTargetResultByValueAndOperator","targetOperator","getTargetResultForUnitOfTime","validTargetPeriod","zoomMax","zoomMin","zoomLevels","internalZoomLevels","calcInternal","getIndex","zoomRounded","setZoom","zoomChanged","zoomOut","stopPropagation","zoomIn","zoomChangedHandler","constant","pushing","floating","swapping","colWidth","rowHeight","outerMargin","isMobile","mobileBreakPoint","mobileModeEnabled","minColumns","minRows","maxRows","defaultSizeX","defaultSizeY","minSizeX","maxSizeX","minSizeY","maxSizeY","saveGridItemCalculatedHeightInMobile","handles","scrollSensitivity","scrollSpeed","gridsterConfig","gridster","flag","layoutChanged","loaded","floatItemsUp","updateHeight","movingItem","$broadcast","grid","allItems","destroy","setOptions","canItemOccupy","autoSetItemPosition","colIndex","putItem","excludeItems","Array","h","bottom","right","intersect","getBoundingBox","maxRow","maxCol","minRow","minCol","left","top","putItems","ignoreItems","oldRow","samePosition","oldColumn","inGrid","moveOverlappingItems","floatItemUp","swapItems","item2","item1Row","item1Col","overlappingItems","moveItemsDown","topRows","topRow","rowsToMove","moveItemDown","len","bestRow","bestColumn","plus","maxHeight","gridHeight","pixelsToRows","pixels","ceilOrFloor","curRowHeight","pixelsToColumns","curColWidth","$el","previewStyle","gridsterDebounce","controllerAs","compile","$tplElem","prepend","$elem","isVisible","ele","visibility","curWidth","offsetWidth","setElementPosition","setElementSizeY","setElementSizeX","optionsKey","$parent","newConfig","prevWidth","offsetHeight","onResize","addResizeListener","$win","removeResizeListener","isMoving","setPosition","preventMove","camelCase","titleCase","cols","setSizeY","setSizeX","marginLeft","marginRight","marginTop","marginBottom","margin","getElementSizeX","getElementSizeY","startEvent","moveEvent","endEvent","contentZooming","msTouchAction","lastXYById","numberOfKeys","theObject","keys","computeDocumentToElementDelta","theElement","elementLeft","elementTop","oldIEUserAgent","offsetElement","offsetParent","documentMode","currentStyle","documentToTargetDelta","useSetReleaseCapture","doEvent","theEvtObj","prevent","pointerList","changedTouches","pointerObj","pointerId","identifier","pageX","offsetX","pageY","offsetY","srcElement","sx","sy","scrollElement","parentNode","scrollLeft","scrollTop","clientX","clientY","msSetPointerCapture","setCapture","addEventListener","msReleasePointerCapture","releaseCapture","removeEventListener","preventManipulation","preventMouseEvent","enable","msPointerEnabled","msContentZooming","attachEvent","returnValue","disable","detachEvent","GridsterTouch","GridsterDraggable","itemOptions","elmX","elmY","elmW","elmH","mouseX","mouseY","lastMouseX","lastMouseY","mOffX","mOffY","minTop","minLeft","realdocument","inputTags","dragStart","drag","oldCol","hasCallback","itemsInTheWay","hasItemsInTheWay","boundingBoxItem","sameSize","sameRow","sameCol","inline","emptyRow","emptyCol","rowOffset","colOffset","itemInTheWay","innerHeight","dragStop","mouseDown","nodeName","$target","hasClass","$dragHandles","querySelectorAll","outerloop","hl","mouseMove","maxLeft","maxTop","diffX","diffY","dX","dY","mouseUp","gridsterTouch","toggle","GridsterResizable","ResizeHandle","handleClass","savedDraggable","hClass","getMinHeight","getMinWidth","resizeStart","oldSizeX","oldSizeY","isChanged","resizeStop","unifiedInput","$dragHandle","handlesOpts","c","later","clearTimeout","$parse","controllers","gridsterItem","$optionsGetter","aspects","$getters","expressions","aspectFn","aspect","expression","watchExpressions","positionChanged","sizeChanged","changedX","changedY","newVals","oldVals","newVal","updateResizable","updateDraggable","whichTransitionEvent","createElement","transitions","debouncedTransitionEndPublisher","closestSlider","matches","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","getOffset","getBoundingClientRect","tagName","documentElement","pageYOffset","pageXOffset","scrollX","scrollY","stringParsers","re","rgb","toRGB","g","rgba","hex","toHex","RGBtoHSB","exec","setHue","setSaturation","setLightness","setAlpha","substr","callLeft","callTop","knob","getSlider","getLeftPosition","getTopPosition","setSlider","setKnob","D","M","B","P","F","Y","eq","isDefined","colorpickerParent","S","I","colorpickerIsOpen","$$phase","$digest","$emit","$modelValue","colorpicker","colorpickerPosition","colorpickerInline","C","colorpickerFixedPosition","L","colorpickerWithInput","colorpickerSize","O","A","colorpickerCloseOnSelect","jQuery","fn","jquery","emulateTransitionEnd","one","support","transition","WebkitTransition","MozTransition","OTransition","special","bsTransitionEnd","bindType","delegateType","is","handleObj","VERSION","TRANSITION_DURATION","detach","Event","isDefaultPrevented","Constructor","noConflict","setState","DEFAULTS","loadingText","resetText","proxy","removeAttr","slide","interval","pause","cycle","$indicators","paused","sliding","$active","$items","keydown","prev","clearInterval","setInterval","getItemIndex","getItemForDirection","relatedTarget","direction","carousel","$trigger","transitioning","getParent","addAriaAndCollapsedClass","collapse","contains","insertAfter","dropdown","$body","$dialog","$backdrop","isShown","originalBodyPad","scrollbarWidth","ignoreBackdropClick","remote","BACKDROP_TRANSITION_DURATION","checkScrollbar","setScrollbar","escape","appendTo","adjustDialog","enforceFocus","hideModal","has","handleUpdate","resetAdjustments","resetScrollbar","removeBackdrop","scrollHeight","clientHeight","paddingLeft","bodyIsOverflowing","clientWidth","measureScrollbar","className","removeChild","modal","hoverState","inState","placement","selector","delay","viewport","padding","$viewport","isFunction","hover","enter","leave","_options","fixTitle","getDefaults","getDelegateOptions","tip","isInStateTrue","hasContent","ownerDocument","getUID","setContent","getPosition","getCalculatedOffset","applyPlacement","$tip","offset","setOffset","using","getViewportAdjustedDelta","replaceArrow","arrow","getTitle","SVGElement","scroll","random","getElementById","$arrow","toggleEnabled","removeData","getContent","popover","$scrollElement","offsets","activeTarget","process","getScrollHeight","isWindow","activate","parents","parentsUntil","scrollspy","checkPosition","checkPositionWithEventLoop","affixed","unpin","pinnedOffset","RESET","getState","getPinnedOffset","affix","offsetBottom","requestAnimationFrame","cancelAnimationFrame","getTime","useEasing","useGrouping","separator","decimal","easingFn","formattingFn","prefix","suffix","startVal","endVal","countDown","frameVal","dec","pow","formatNumber","easeOutExpo","printValue","textContent","timestamp","remaining","rAF","callback","pauseResume","dataTransfer","dropEffect","effectAllowed","ctrlKey","unbind","dragChannel","onDropSuccess","$evalAsync","onDropFailure","classList","dragImage","T","uniqueID","opera","isString","generate","image","xOffset","yOffset","setDragImage","dragImageElementId","channel","toJson","setData","draggingClass","uiDraggable","dragHandleClass","uiOnDragOver","$channel","uiOnDragLeave","uiOnDragEnter","fromJson","uiOnDrop","$data","$position","dropChannel","dragEnterClass","dragHoverClass","onDragEnter","onDragLeave","RegExp","dropValidate","$drop","$observe","font","fontColor","measureText","getContext","fillStyle","fillRect","fillText","Image","toDataURL","$t","outerHeight","outerWidth","Qt","border","overflow","touches","E","H","R","isArray","charAt","String","localeCompare","isStart","isEnd","N","stripTime","ms","time","G","Kt","V","ot","isDuration","as","W","asMonths","months","Boolean","hours","minutes","seconds","milliseconds","U","Z","Q","Jt","X","K","J","tt","et","nt","it","rt","st","lt","at","ut","isMoment","ee","_ambigTime","_ambigZone","utcOffset","_fullCalendar","ct","ie","dt","ht","mt","ft","token","se","maybe","gt","qt","parseZone","localeData","pt","longDateFormat","stripZone","vt","oe","le","yt","St","wt","Et","bt","Deferred","_value","reject","state","Dt","shift","addQuickly","Tt","Ct","Ht","allDay","Rt","It","xt","rendering","kt","_id","Lt","Mt","dataAttrPrefix","stick","eventProps","Bt","leftCol","rightCol","zt","Ft","Ot","Nt","forwardSegs","Gt","forwardPressure","At","Vt","Pt","extraClasses","customButtons","getViewSpec","changeView","buttonTextOverride","buttonTextDefault","overrides","buttonText","themeIcon","themeButtonIcons","buttonIcons","mousedown","not","mouseup","last","setToolbarOptions","render","removeElement","activateButton","deactivateButton","disableButton","enableButton","getViewsWithButtons","_t","_locale","opt","bindOption","bindOptions","prependTo","footer","defaultView","handleWindowResize","windowResizeDelay","proxyCall","view","instantiateView","setElement","massageCurrentDate","isDateSet","intervalStart","intervalEnd","captureInitialScroll","releaseScroll","queryScroll","updateSize","contentHeight","aspectRatio","reduce","publiclyTrigger","reportEventChange","getNow","select","buildSelectSpan","unselect","computePrevDate","computeNextDate","getUnitViewSpec","applyTimezone","dynamicOverrides","viewSpecCache","populateOptionsHash","triggerOptionHandlers","unrenderBusinessHours","renderBusinessHours","rezoneArrayEventSources","refetchEvents","triggerWith","rerenderEvents","prevYear","nextYear","gotoDate","incrementDate","zoomTo","getCalendar","getView","optionHandlers","Wt","_months","_monthsShort","_weekdays","_weekdaysShort","_week","dow","_fullCalendar_weekCalc","defaultAllDayEventDuration","defaultTimedEventDuration","timezone","hasTime","local","localizeMoment","getIsAmbigTimezone","toArray","now","getEventEnd","getDefaultEventEnd","humanizeDuration","humanize","Ut","defaultDate","getSuggestedViewHeight","isHeightAuto","setToolbarsTitle","freezeContentHeight","thawContentHeight","initialize","Yt","Re","lazyFetching","_status","_fetchId","sourceFetchers","pushLoading","popLoading","success","complete","startParam","endParam","timezoneParam","ajax","xe","sourceNormalizers","origArray","grep","googleCalendarId","jt","eventDataTransform","Ie","_recurring","allDayDefault","normalizeEvent","forceEventDuration","day","_start","_end","_allDay","dateDelta","durationDelta","undo","valueOf","requestEvents","isFetchNeeded","fetchEvents","fetchEventSources","refetchEventSources","getEventSources","getEventSourceById","addEventSource","removeEventSource","removeEventSources","updateEvent","updateEvents","renderEvent","renderEvents","removeEvents","clientEvents","mutateEvent","normalizeEventDates","normalizeEventTimes","eventSources","getEventCache","getPrunedEventCache","buildEventFromInput","expandEvent","fullCalendar","internalApiVersion","Zt","views","De","intersectRanges","applyAll","isInt","htmlEscape","cssToStr","capitaliseFirstLetter","getOuterRect","getClientRect","getContentRect","getScrollbarWidths","intersectRects","parseFieldSpecs","compareByFieldSpecs","compareByFieldSpec","flexibleCompare","computeIntervalUnit","divideRangeByDuration","divideDurationByDuration","multiplyDuration","durationHasTime","Xt","warn","createObject","ne","momentProperties","hasZone","toISOString","formatRange","ae","queryMostGranularFormatUnit","Class","mixin","when","makeArray","TaskQueue","ue","EmitterMixin","_prepareIntercept","guid","triggerHandler","ce","ListenerMixin","listenerId","listenTo","getListenerNamespace","stopListeningTo","de","isIgnoringMouse","delayUnignoreMouse","initMouseIgnoring","tempIgnoreMouse","unignoreMouse","he","isHidden","parentEl","autoHide","documentMousedown","viewportConstrain","fe","CoordCache","els","forcedOffsetParentEl","origin","boundingRect","isHorizontal","isVertical","lefts","rights","tops","bottoms","build","queryBoundingRect","buildElHorizontals","buildElVerticals","ensureBuilt","getHorizontalIndex","getVerticalIndex","getLeftOffset","getRightOffset","getRightPosition","getWidth","getTopOffset","getBottomOffset","getBottomPosition","getHeight","isPointInBounds","isLeftInBounds","isTopInBounds","ge","DragListener","subjectEl","originX","originY","scrollEl","isInteracting","isDistanceSurpassed","isDelayEnded","isDragging","isTouch","delayTimeoutId","minDistance","handleTouchScrollProxy","startInteraction","bindHandlers","initAutoScroll","handleInteractionStart","startDelay","handleDistanceSurpassed","endInteraction","endDrag","destroyAutoScroll","unbindHandlers","handleInteractionEnd","touchmove","handleTouchMove","touchend","touchcancel","touchstart","handleTouchScroll","mousemove","handleMouseMove","selectstart","contextmenu","startDrag","handleDragStart","handleMove","handleDrag","updateAutoScroll","handleDragEnd","handleDelayEnd","isAutoScroll","scrollBounds","scrollTopVel","scrollLeftVel","scrollIntervalId","scrollIntervalMs","handleDebouncedScroll","endAutoScroll","computeScrollBounds","setScrollVel","constrainScrollVel","scrollWidth","scrollIntervalFunc","handleScrollEnd","pe","origHit","hit","coordAdjust","computeCoords","queryHit","subjectCenter","prepareHits","handleHitOver","handleHitOut","handleHitDone","releaseHits","ve","sourceEl","top0","left0","y0","x0","topDelta","leftDelta","isFollowing","isAnimating","updatePosition","revertDuration","getEl","additionalClass","opacity","me","Grid","hasDayInteractions","isRTL","elsByFill","eventTimeFormat","displayEventTime","displayEventEnd","minResizeDuration","largeUnit","dayDragListener","segDragListener","segResizeListener","externalDragListener","buildDayDragListener","computeEventTimeFormat","computeDisplayEventTime","computeDisplayEventEnd","setRange","rangeUpdated","processRangeOptions","spanToSegs","diffDates","getHitSpan","getHitEl","bindDayHandler","dayTouchStart","dayMousedown","bindSegHandlers","bindGlobalHandlers","segSelector","unbindGlobalHandlers","clearDragListeners","renderSkeleton","renderDates","unrenderDates","dragstart","externalDragStart","sortstart","selectedEvent","interactionStart","hitOver","computeSelection","renderSelection","hitOut","unrenderSelection","hitDone","interactionEnd","triggerDayClick","reportSelection","renderEventLocationHelper","fabricateHelperEvent","renderHelper","calendar","unrenderHelper","renderHighlight","unrenderHighlight","computeSelectionSpan","isSelectionSpanAllowed","renderFill","unrenderFill","highlightSegClasses","getNowIndicatorUnit","renderNowIndicator","unrenderNowIndicator","renderFillSegEls","fillSegHtml","fillSegTag","getDayClasses","intervalDuration","highlightStateClass","mousedOverSeg","isDraggingSeg","isResizingSeg","isDraggingExternal","segs","renderBgEvents","renderFgEvents","eventsToSegs","renderBgSegs","renderFgSegs","unrenderEvents","handleSegMouseout","unrenderFgSegs","unrenderBgSegs","getEventSegs","renderFgSegEls","fgSegHtml","resolveEventEl","bgEventSegEl","bgEventSegClasses","bgEventSegCss","getSegSkinCss","businessHoursSegClasses","buildBusinessHourSegs","buildBusinessHourEvents","businessHours","computeBusinessHourEvents","ke","bindSegHandlersToEl","bindSegHandlerToEl","handleSegTouchStart","handleSegTouchEnd","handleSegMouseover","handleSegMousedown","handleSegClick","isEventResizable","startSegResize","isEventDraggable","buildSegDragListener","isEventSelected","buildSegSelectListener","buildSegResizeListener","selectEvent","segDragStart","hideEvent","computeEventDrop","isEventSpanAllowed","eventToSpan","renderDrag","applyDragOpacity","unrenderDrag","segDragStop","reportEventDrop","showEvent","listenToExternalDrag","computeExternalDrop","isExternalSpanAllowed","reportExternalDrop","segResizeStart","computeEventStartResize","computeEventEndResize","renderEventResize","unrenderEventResize","segResizeStop","reportEventResize","computeEventResize","getEventTimeText","getSegClasses","getSegCustomClasses","getSegBackgroundColor","getSegBorderColor","getSegTextColor","getSegDefaultBackgroundColor","getSegDefaultBorderColor","textColor","getSegDefaultTextColor","eventToSegs","eventToSpans","eventToRange","eventRangeToSpans","invertRanges","eventRangeToSegs","eventSpanToSegs","eventStartMS","eventDurationMS","sortEventSegs","compareEventSegs","eventOrderSpecs","pluckEventDateProps","isBgEvent","ye","DayTableMixin","breakOnWeeks","dayDates","dayIndices","daysPerRow","rowCnt","colCnt","colHeadFormat","updateDayTable","isHiddenDay","updateDayTableCols","computeColCnt","computeColHeadFormat","getCellDate","getCellDayIndex","getCellRange","getColDayIndex","getDateDayIndex","sliceRangeByRow","computeDayRange","firstRowDayIndex","lastRowDayIndex","sliceRangeByDay","renderHeadHtml","widgetHeaderClass","renderHeadTrHtml","renderHeadIntroHtml","renderIntroHtml","renderHeadDateCellsHtml","renderHeadDateCellHtml","buildGotoAnchorHtml","forceOff","renderBgTrHtml","renderBgIntroHtml","renderBgCellsHtml","renderBgCellHtml","widgetContentClass","bookendCells","Se","DayGrid","numbersVisible","bottomCoordPadding","rowEls","cellEls","helperEls","rowCoordCache","colCoordCache","renderDayRowHtml","getCellEl","removeSegPopover","renderNumberTrHtml","renderNumberIntroHtml","renderNumberCellsHtml","renderNumberCellHtml","dayNumbersVisible","cellWeekNumbersVisible","firstDayOfWeek","class","getCellHit","renderSegRows","tbodyEl","renderFillRow","rowStructs","popoverSegs","pop","groupSegRows","renderSegRow","isEventResizableFromStart","isEventResizableFromEnd","buildSegLevels","cellMatrix","segMatrix","segLevels","segPopover","limitRows","unlimitRow","computeRowLevelLimit","limitRow","getCellSegs","renderMoreLink","after","moreEls","limitedEls","getMoreLinkText","resliceDaySegs","dayEl","moreEl","hiddenSegs","showSegPopover","renderSegPopoverContent","we","TimeGrid","slotDuration","snapDuration","snapsPerSlot","minTime","maxTime","labelFormat","labelInterval","colEls","slatContainerEl","slatEls","nowIndicatorEls","slatCoordCache","processOptions","renderHtml","renderContentSkeleton","renderSlatRowHtml","axisStyleAttr","computeLabelInterval","Oe","snap","computeSnapTime","sliceRangeByTimes","dayIndex","updateSegVerticals","fgSegs","bgSegs","businessSegs","getTotalSlatHeight","computeDateTop","computeTimeTop","renderHelperSegs","unrenderHelperSegs","renderBusinessSegs","unrenderBusinessSegs","colContainerEls","renderHighlightSegs","unrenderHighlightSegs","fgContainerEls","bgContainerEls","helperContainerEls","highlightContainerEls","businessContainerEls","helperSegs","highlightSegs","renderFgSegsIntoContainers","unrenderNamedSegs","attachSegsByCol","groupSegsByCol","updateFgSegCoords","isMultiDayEvent","computeSegVerticals","assignSegVerticals","generateSegVerticalCss","computeFgSegHorizontals","assignFgSegHorizontals","computeFgSegForwardBack","forwardCoord","sortForwardSegs","backwardCoord","compareForwardSegs","generateFgSegHorizontalCss","Ee","View","isDateRendered","dateRenderQueue","isEventsBound","isEventsSet","isEventsRendered","eventRenderQueue","intervalUnit","nextDayThreshold","isHiddenDayHash","isNowIndicatorRendered","initialNowDate","initialNowQueriedMs","nowIndicatorTimeoutID","nowIndicatorIntervalID","initThemingProps","initHiddenDays","rejectOn","computeRange","skipHiddenDays","computeTitle","computeTitleFormat","getAllDayHtml","isPlainObject","unsetDate","unrenderSkeleton","handleDate","handleDateUnset","unbindEvents","requestDateRender","bindEvents","requestDateUnrender","executeDateRender","executeDateUnrender","captureScroll","freezeHeight","startNowIndicator","thawHeight","onDateRender","requestEventsUnrender","stopNowIndicator","triggerUnrender","triggerRender","handleDocumentMousedown","processUnselect","updateNowIndicator","updateWidth","setHeight","capturedScroll","capturedScrollDepth","isInitial","isComputed","discardScroll","computeInitialScroll","hardSetScroll","setScroll","setEvents","unsetEvents","isEventSet","handleEvents","handleEventsUnset","whenEventsSet","getCurrentEvents","requestEventsRender","executeEventsRender","executeEventsUnrender","requestCurrentEventsRender","onEventsRender","onBeforeEventsUnrender","destroyEvents","renderedEventSegEach","isEventStartEditable","startEditable","isEventGenerallyEditable","triggerEventDrop","triggerExternalDrop","durationEditable","triggerEventResize","triggerSelect","destroySelection","unselectEvent","processRangeUnselect","processEventUnselect","be","Scroller","overflowX","overflowY","renderEl","applyOverflow","lockOverflow","getScrollTop","setScrollTop","getClientWidth","getClientHeight","Calendar","dirDefaults","localeDefaults","loadingLevel","Te","defaults","rtlDefaults","buildViewSpec","singleUnit","buildViewSpecOptions","buildViewSpecButtonText","buttonTextKey","isValidViewType","names","registerOptionHandlerObj","triggerOptionHandlerObj","titleRangeSeparator","monthYearFormat","weekends","weekNumbers","weekNumberTitle","weekNumberCalculation","scrollTime","allDayText","dragOpacity","dragRevertDuration","dragScroll","unselectAuto","dropAccept","eventOrder","eventLimit","eventLimitText","eventLimitClick","dayPopoverFormat","longPressDelay","englishDefaults","locales","datepickerLocale","weekHeader","Ce","datepicker","regional","en","He","prevText","nextText","currentText","showMonthAfterYear","yearSuffix","dayOfMonthFormat","mediumTimeFormat","smallTimeFormat","extraSmallTimeFormat","hourFormat","noMeridiemTimeFormat","smallDayDateFormat","weekFormat","smallWeekFormat","dataType","cache","spanContainsSpan","getPeerEvents","constraint","eventConstraint","overlap","eventOverlap","isSpanAllowed","eventAllow","selectConstraint","selectOverlap","selectAllow","constraintToEvents","eventIntersectsRange","getCurrentBusinessHourEvents","expandBusinessHourEvents","Le","BasicView","scroller","dayGridClass","dayGrid","colWeekNumbersVisible","weekNumberWidth","headContainerEl","headRowEl","instantiateDayGrid","Me","weekday","renderSkeletonHtml","renderHead","hasRigidRows","weekNumberStyleAttr","computeScrollerHeight","setGridHeight","Be","MonthView","isFixedWeeks","basic","basicDay","basicWeek","fixedWeekCount","ze","AgendaView","timeGridClass","timeGrid","axisWidth","noScrollRowEls","bottomRuleEl","instantiateTimeGrid","Fe","Ne","Ge","agenda","allDaySlot","slotEventOverlap","agendaDay","agendaWeek","Ae","Ve","href","renderSegList","renderEmptyMessage","groupSegsByDay","dayHeaderHtml","listDayFormat","noEventsMessage","listDay","listWeek","listDayAltFormat","listMonth","listYear","defineLocale","monthsShort","weekdays","weekdaysShort","weekdaysMin","meridiemParse","isPM","meridiem","LT","LTS","LL","LLL","LLLL","sameDay","nextDay","nextWeek","lastDay","sameElse","relativeTime","past","mm","hh","dd","MM","yy","ordinalParse","ordinal","doy","closeText","monthNames","monthNamesShort","dayNames","dayNamesShort","dayNamesMin","dateFormat","allDayHtml","weekdaysParseExact","preparse","postformat","nextBigText","monthsParseExact","monthsParse","shortMonthsParse","longMonthsParse","Function","monthsNominativeEl","monthsGenitiveEl","_monthsGenitiveEl","_monthsNominativeEl","calendarEl","_calendarEl","ll","lll","llll","meridiemHour","standalone","ss","isFormat","monthsRegex","monthsShortRegex","monthsStrictRegex","monthsShortStrictRegex","words","correctGrammaticalCase","translate","nominative","accusative","genitive","unix","HC","UNDEFINED","mathRound","mathMin","mathMax","merge","pick","HighchartsAdapter","axisProto","Axis","tickProto","Tick","_axisInit","_axisRender","_axisSetCategories","setCategories","_tickGetLabelSize","getLabelSize","_tickAddLabel","addLabel","_tickDestroy","_tickRender","Category","obj","userOptions","deepClone","buildTree","cats","out","depth","addLeaf","leaves","addGridPart","path","tickPosition","tick","pos","horiz","tickmarkOffset","walk","thing","parts","setupGroups","reverseTree","stats","categoriesTree","isGrouped","labelsDepth","labelsSizes","labelsGridPath","isXAxis","directionFactor","side","lineWidth","originalTickLength","hasVisibleSeries","hasData","labelsGrid","drawHorizontalBorders","userTickLength","renderer","strokeWidth","stroke","tickColor","axisGroup","groupSize","labelGroup","group","startAt","destroyed","newCategories","doRedraw","cleanGroups","ticks","positions","groupedOptions","userXY","labelFormatter","isFirst","isLast","addGroupedLabels","userAttr","rotation","hasOptions","mergedAttrs","mergedCSS","childCount","labelOffsets","getBBox","treeCat","lvlSize","minPos","maxPos","bBox","tickPos","xy","baseLine","fontMetrics","reverseCrisp","fix","fixOffset","userX","userY","ret","_modules","splat","CenteredSeriesMixin","coll","pane","defaultOptions","updateCenter","renderBackground","defaultBackgroundOptions","getPlotBandPath","shape","linearGradient","x1","y1","x2","y2","stops","MAX_VALUE","innerRadius","outerRadius","getCenter","axes","Pane","pInt","addEvent","noop","correctFloat","redraw","isDirty","createLabelCollector","setScale","setTitle","defaultRadialGaugeOptions","minorGridLineWidth","minorTickInterval","minorTickLength","minorTickPosition","minorTickWidth","defaultRadialXOptions","gridLineWidth","maxPadding","minPadding","showLastLabel","defaultRadialYOptions","gridLineInterpolation","defaultRadialOptions","plotBands","fireEvent","axisOffset","getLinePath","isCircular","symbols","arc","startAngleRad","endAngleRad","innerR","xBounds","yBounds","postTranslate","angleRad","plotLeft","plotTop","setAxisTranslation","transA","minPixelPadding","minPointOffset","beforeSetTickPositions","autoConnect","userMax","PI","pointRange","closestPointRange","setAxisSize","isRadial","sector","cos","sin","thickness","getPlotLinePath","reverse","plotWidth","relativeLength","sqrt","tickPositions","getTitlePosition","high","middle","low","allowOverlap","polar","defaultYAxisOptions","inverted","zoomType","labelCollector","labelCollectors","angle","styles","tickInterval","defined","isNumber","seriesType","seriesTypes","Series","Point","threshold","trackByArea","xLow","xHigh","yLow","yHigh","pointArrayMap","pointValKey","deferTranslatePolar","toYData","highToXY","rectPlotX","plotHigh","plotHighX","plotLowX","plotX","modifyValue","points","plotY","isNull","plotLow","yBottom","tooltipPos","getGraphPath","connectEnds","connectNulls","doCurve","polarPlotY","graphPath","areaPath","isArea","xMap","drawDataLabels","_hasPointLabels","inside","_plotY","dataLabel","dataLabelUpper","below","alignDataLabel","drawPoints","origProps","isInside","negative","zone","lowerGraphic","graphic","upperGraphic","zones","getZone","isTopInside","setStackedPoints","toPixels","stateMarkerGraphic","lowerStateMarkerGraphic","upperStateMarkerGraphic","haloPath","destroyElements","getPointSpline","spline","defaultPlotOptions","arearange","marker","states","halo","chartWidth","shapeArgs","minPointLength","rectPlotY","barX","shapeType","polarArc","pointWidth","directTouch","trackerGroups","drawGraph","getSymbol","crispCol","drawTracker","getColumnMetrics","pointAttribs","translate3dPoints","translate3dShapes","pointClass","dense","translatedThreshold","getThreshold","barW","pointXOffset","plotHeight","TrackerMixin","borderRadius","crop","dial","pivot","fixedBox","forceDL","noSharedTooltip","generatePoints","baseLength","rearLength","baseWidth","topWidth","overshoot","translateX","translateY","circle","plotGroup","seriesGroup","clip","clipRect","processData","drawTrackerPoint","whiskerLength","medianWidth","whiskerWidth","q1","median","q3","doQuartiles","q1Plot","lowPlot","q3Plot","highPlot","stem","whiskers","box","medianShape","stemColor","stemWidth","dashstyle","stemDashStyle","whiskerColor","medianColor","medianPlot","linkedTo","linkedParent","columnMetrics","arrayMax","arrayMin","objectEach","StackItem","waterfallStacks","stackLabels","renderWaterfallStackTotals","stackTotalGroup","dummyStackItem","lineWidthPlus","showLine","processedYData","isIntermediateSum","isSum","stackKey","stackState","stateIndex","absolutePos","absoluteNeg","posTotal","negTotal","connectorThreshold","stackedYNeg","stackedYPos","minPointLengthOffset","yData","dataMin","dataMax","updateParallelArrays","upColor","getCrispPath","graph","xData","usePercentage","ignoreHiddenSeries","getExtremes","getClassName","stickyTracking","followPointer","drawLegendSymbol","LegendSymbolMixin","drawRectangle","Legend","numberFormat","stableSort","bubbleLegend","connectorClassName","connectorColor","connectorDistance","connectorWidth","legendIndex","ranges","sizeBy","sizeByAbsoluteValue","zThreshold","BubbleLegend","addToLegend","itemDistance","getMaxLabelSize","maxLabel","movementX","legendItemWidth","legendItemHeight","autoRanges","seriesIndex","baseline","getLabelStyles","fillOpacity","setOpacity","getRangeRadius","bubbleStyle","connectorStyle","labelStyle","rtl","getRadius","connectors","bubbleItems","legendSymbol","legendItem","renderRange","legendGroup","hideOverlappingLabels","crispLine","formatLabel","placed","alignAttr","newOpacity","oldOpacity","getRanges","isBubble","ignoreSeries","zData","displayNegative","predictBubbleSizes","lastLineHeight","plotSizeX","plotSizeY","minPxSize","maxPxSize","updateRanges","correctSizes","getVisibleBubbleSeriesIndex","destroyItem","getLinesHeights","itemHeight","_legendItemPos","retranslateItems","getMargins","updateNames","isNew","isNewLabel","animationLimit","radiusPlus","symbol","softThreshold","turboThreshold","zoneAxis","parallelArrays","specialGroup","getRadii","radii","processedXData","scatter","dlBox","buildKDTree","applyZones","ttBelow","beforePadding","allowZoomOutside","isLog","networkgraphIntegrations","verlet","attractiveForceFunction","repulsiveForceFunction","barycenter","xFactor","yFactor","nodes","fixedPosition","mass","degree","repulsive","diffTemperature","attractive","getMass","fromNode","toNode","integrate","friction","maxSpeed","dispX","prevX","dispY","prevY","temperature","vectorLength","getK","euler","getDegree","QuadTreeNode","boxSize","isInternal","isEmpty","insert","getBoxPosition","divideBox","updateMassAndCenter","QuadTree","maxDepth","root","isRoot","insertNodes","visitNodeRecursive","calculateMassAndCenter","setAnimation","layouts","setInitialRendering","integration","attractiveForce","repulsiveForce","approximation","forces","initialRendering","initPositions","setK","resetSimulation","enableSimulation","createQuadTree","quadTree","applyLimits","coolDown","startTemperature","prevSystemTemperature","systemTemperature","getSystemTemperature","maxIterations","isFinite","isStable","simulation","win","setArea","linkLength","addElementsToCollection","removeElementFromCollection","forcedStop","setMaxIterations","setTemperature","setDiffTemperature","initialPositions","setCircularPositions","setRandomPositions","linksFrom","linksTo","initialPositionRadius","force","barycenterForces","getBarycenter","barnesHutApproximation","getDistXY","theta","repulsiveForces","attractiveForces","applyLimitBox","getDistR","absX","absY","graphLayoutsLookup","beforeStep","dragNodesMixin","onMouseDown","pointer","normalize","chartX","chartY","inDragMode","onMouseMove","isInsidePlot","hasDragged","redrawHalo","onMouseUp","fixedDraggable","hoverPoint","hasDraggableNodes","Color","bubble","isParentNode","extendClass","calculateParentRadius","neighbours","seriesInteraction","parentNodeLimit","parentNodeRadius","useSimulation","parentNodeFormatter","parentNodeTextPath","dragBetweenSeries","parentNodeOptions","isCartesian","axisTypes","accumulateAllPoints","parentNodeLayout","textPath","formatPrefix","seriesBox","parentNodeMass","brighten","parentNodesGroup","createParentNodes","dataLabelOnNull","addSeriesLayout","graphLayoutsStorage","addLayout","forExport","collisionNmb","deferLayout","allDataPoints","getPointRadius","placeBubbles","checkOverlap","positionBubble","asin","acos","stages","rawPositions","resizeRadius","POSITIVE_INFINITY","NEGATIVE_INFINITY","calculateZExtremes","Infinity","minRadius","maxRadius","removed","addPoint","Pointer","searchPointByAngle","searchKDTree","atan2","getConnectors","rightContX","rightContY","leftContX","leftContY","prevPointCont","toXY","polarPlotX","kdByAngle","areasplinerange","searchPoint","findNearestPointBy","preventPostTranslate","hasParallelCoordinates","hasClipCircleSetter","clipCircle","setClip","markerGroup","isSVG","scaleX","scaleY","SVGRenderer","uniqueKey","defs","clipPath","exports","formattedValue","tooltipValueFormat","isDatetimeAxis","dateTimeLabelFormats","unitName","erase","parallelCoordinates","parallelAxes","reserveSpace","setParallelInfo","parallelInfo","counter","boost","seriesThreshold","MAX_SAFE_INTEGER","boostThreshold","keepProps","parallelPosition","setParallelPosition","closestPointRangePx","forceRedraw","ready","fix_height","heightWithoutNavbar","navbarHeigh","wrapperHeigh","defineProperty","configurable","enumerable","__esModule","default","provider","NgTableDefaultGetDataProvider","ngTableDefaultGetGroups","ngTableDefaults","NgTableEventsChannel","NgTableSettings","ngTableCoreModule","IDefaults","ISettings","NgTableController","NgTableFilterConfigProvider","NgTableFilterConfig","ngTable","NgTableColumn","ngTableColumnsBinding","ngTableDynamic","ngTableFilterRow","NgTableFilterRowController","ngTableGroupRow","NgTableGroupRowController","ngTablePagination","ngTableSelectFilterDs","ngTableSorterRow","NgTableSorterRowController","ngTableBrowserModule","addTableParamsEvent","createEventSubscriptionFn","createPublishEventFn","isNullInstance","$inject","defaultSettings","ngTableSettings","createDefaults","isCommittedDataset","initialEvents","_params","sorting","_settings","reloadPages","generatePagesArray","equals","ngTableEventsChannel","publishPagesChanged","parameters","publishAfterCreated","paginationMaxBlocks","paginationMinBlocks","isGroupingFun","sortDirection","hasErrorState","errParamsMemento","createComparableParams","hasFilterChanges","prevParamsMemento","hasGlobalSearchFieldChanges","hasGroup","isDataReloadRequired","isSortBy","orderBy","convertSortToOrderBy","parseGroup","$loading","copy","runInterceptorPipeline","getGroups","publishAfterReloadData","catch","publishDatasetChanged","encodeURIComponent","groupSortDirection","debugMode","$log","groupOptions","defaultSort","interceptors","response","responseError","ngTableDefaultGetData","counts","filterOptions","filterComparator","filterDelay","filterDelayThreshold","filterFilterName","filterFn","filterLayout","isExpanded","sortingIndicator","optimizeFilterDelay","titleAlt","headerTitle","groupable","headerTemplateURL","filterData","$columns","buildColumns","setupBindingsToInternalScope","loadFilterData","compileDirectiveTemplates","buildColumn","create","$column","createGetterSetter","$attrs","ngTableColumn","$filterRow","disabled","delayFilter","subscribeToTableEvents","some","onDataReloadStatusChange","templateHeader","pagination","templatePagination","isObject","parseNgTableDynamicExpr","setupFilterRowBindingsToInternalScope","setupGroupRowBindingsToInternalScope","show_filter","hasVisibleFilterColumn","disableFilter","$groupRow","showGroup","getVisibleColumns","onAfterReloadData","$groups","visibleColumnCount","onPagesChanged","defaultBaseUrl","defaultExt","aliasUrls","$get","instantiate","resetConfigs","setConfig","getUrlForAlias","getTemplateUrl","getFilterPlaceholderValue","getFilterCellCss","groupFns","setGroup","getGroupables","getGroupTitle","isGroupingFunc","groupBy","isSelectedGroup","changeSortDirection","$selGroup","toggleDetail","findGroupColumn","$selGroupTitle","bindDataSource","getSelectListData","hasEmptyOption","$selectData","NgTableSelectFilterDsController","sortBy","metaKey","sortingFilterName","dataOptions","publishAfterDataFiltered","applySort","publishAfterDataSorted","applyPaging","getFilterFn","getOrderByFn","$hideRows","finally","put","ngTableModule","__WEBPACK_EXTERNAL_MODULE_0__","installedModules","moduleId","getter","object","__export","data_1","grouping_1","ngTableDefaults_1","ngTableSettings_1","ngTableParams_1","ngTableEventsChannel_1","ngTableDefaults_2","ngTableSettings_2","ngTable_directive_1","ngTableColumn_1","ngTableColumnsBinding_directive_1","ngTableController_1","ngTableDynamic_directive_1","ngTableFilterConfig_1","ngTableFilterRow_directive_1","ngTableFilterRowController_1","ngTableGroupRow_directive_1","ngTableGroupRowController_1","ngTablePagination_directive_1","ngTableSelectFilterDs_directive_1","ngTableSorterRow_directive_1","ngTableSorterRowController_1","ng1","eventName","_a","fnName","_this","_i","eventSelectorOrScope","eventSelector","actualEvtSelector","createEventSelectorFn","eventArgs","fnArgs","publisher","util_1","baseParameters","baseSettings","currentPages","oldPages","newPages","significantFilter","filterValue","maxBlocks","maxPage","maxPivotPages","minPage","numPages","newParameters","previousFilter","parseParamsFromUrl","lastKey","pData","oldData","reason","newSettings","originalDataset_1","asString","pairs","subkey","isSignificantValue","pname","collectValue","currentVal","previousVal","fetchedData","interceptor","thenFn","rejectFn","dataRow","groupRow","tr","getAttrValue","parsedAttribute","expr","localValue","parsedExpr","titleExpr","isScopeLike","defaultScope","extendedCol","_loop_1","getterSetter","getterFn","localValue_1","wrappedGetterFn_1","initialValue","setter","newColumns","shallowClone","core_1","timer","oldParams","currentParams","headerTemplate","theadFound_1","paginationTemplate","tableParamsExpr","showGroupGetter_1","newDatapage","visibleColumns","predicate","tElement","newCols","$injector","customConfig","mergeConfig","aliasName","filterKey","filterDef","filterName","ngTableFilterConfig","newGrouping","groupableCols","newDirection","groupKey","existingGroupCol","groupedColumn","pubParams","isMatch","dataInput","parsedSortable","inverseSort","sortingParams","defaultDataOptions","pagedData","fData","parsedFilter","orderedData","orderByFn","groupFn","groupField_1","getPath","originalDataOptions","groups","groupName","ks","browser_1","_boxResizeBaseSize","_boxResizeNormalRatio","_boxResizeHoverRatio","_iconMoveNormalRatio","_iconMoveHoverRatio","_boxResizeNormalSize","_boxResizeHoverSize","_posDragStartX","_posDragStartY","_posResizeStartX","_posResizeStartY","_posResizeStartSize","_boxResizeIsHover","_areaIsHover","_boxResizeIsDragging","_areaIsDragging","_calcCirclePerimeterCoords","_size","_x","_y","_calcResizeIconCenterCoords","_isCoordWithinArea","_isCoordWithinBoxResize","_drawArea","draw","_cropCanvas","drawIconMove","drawIconResizeBoxNESW","processMouseMove","_events","_minSize","_dontDragOutside","_ctx","canvas","processMouseDown","processMouseUp","_resizeCtrlBaseRadius","_resizeCtrlNormalRatio","_resizeCtrlHoverRatio","_resizeCtrlNormalRadius","_resizeCtrlHoverRadius","_resizeCtrlIsHover","_resizeCtrlIsDragging","_calcSquareCorners","_calcSquareDimensions","_isCoordWithinResizeCtrl","rect","drawIconResizeCircle","_image","getImage","setImage","getX","setX","getY","setY","getSize","getMinSize","setMinSize","drawCropArea","beginPath","moveTo","lineTo","closePath","restore","strokeStyle","drawIconResizeBoxBase","strokeRect","drawIconResizeBoxNWSE","drawImage","exifdata","iptcdata","atob","ArrayBuffer","Uint8Array","charCodeAt","FileReader","onload","XMLHttpRequest","responseType","send","readAsArrayBuffer","Blob","File","byteLength","DataView","getUint8","getUint16","getInt16","getUint32","numerator","denominator","getInt32","fromCharCode","ExifIFDPointer","Components","GPSInfoIFDPointer","Tags","TiffTags","GPSTags","StringValues","ExposureProgram","MeteringMode","LightSource","Flash","SensingMethod","SceneCaptureType","SceneType","CustomRendered","WhiteBalance","GainControl","Contrast","Saturation","Sharpness","SubjectDistanceRange","FileSource","HTMLImageElement","getTag","pretty","readFromBinaryFile","clientTop","clientLeft","clearRect","getResultImageDataURI","setNewImageSource","crossOrigin","rotate","onerror","setMaxDimensions","setAreaMinSize","setResultImageSize","setResultImageFormat","setResultImageQuality","setAreaType","resultImage","changeOnFly","areaType","areaMinSize","resultImageSize","resultImageFormat","resultImageQuality","onChange","onLoadBegin","onLoadDone","onLoadError","$dataURI","OrgChart","lazyLoading","enableDragDrop","enableSearch","enableTouch","miniMap","nodeMenu","nodeContextMenu","menu","toolbar","sticky","nodeMouseClick","details","nodeMouseDbClick","none","mouseScrool","showXScroll","showYScroll","nodeBinding","linkBinding","searchFields","searchDisplayField","searchFieldsWeight","clinks","slinks","levelSeparation","siblingSeparation","subtreeSeparation","mixedHierarchyNodesSeparation","assistantSeparation","minPartnerSeparation","partnerChildrenSplitSeparation","partnerNodeSeparation","orientation","normal","scaleInitial","scaleMin","scaleMax","editUI","searchUI","xScrollUI","yScrollUI","nodeMenuUI","nodeContextMenuUI","toolbarUI","notifierUI","menuUI","exportUrl","expand","CENTER","UI","anim","outPow","speed","smooth","roots","_mergeObject","_layoutConfigs","subTreeConfig","_event_id","_guid","_validateConfig","server","_vScroll","boundary","getScale","viewBox","getViewBox","setViewBox","_draw","xScroll","_gragStartedId","_timeout","_touch","_initialized","_moveInterval","_movePosition","_setInitialSizeIfNotSet","loadXML","_xml2json","getXML","_json2xml","_hideBeforeAnimationCompleted","read","visibleNodeIds","allFields","_get","node","animations","bordersByRootIdAndLevel","expandCollapseBtn","lonely","centerNode","svg","getSvg","insertAdjacentHTML","_attachEventHandlers","addListener","exportMenuButton","_attachInitEventHandlers","addSearchControl","notif","_hideBeforeAnimation","getNodeElement","_showAfterAnimation","viewbox","ripple","rippleId","inOutPow","maxX","minX","maxY","minY","_getViewBox","setAttribute","getNode","createElementNS","randomId","templateName","appendChild","parentState","childrenState","vertical","horizontal","fit","fullscreenElement","webkitFullscreenElement","mozFullScreenElement","openFullScreenIcon","webkitRequestFullscreen","closeFullScreenIcon","setLayout","setOrientation","isNullOrEmpty","_search","ANIM_THRESHOLD","getElementsByTagName","TEXT_THRESHOLD","IMAGES_THRESHOLD","LINKS_THRESHOLD","EXPCOLL_THRESHOLD","isChild","stParent","getCollapsedIds","childrenIds","collapsed","stateToUrl","exp","adjustify","URLSearchParams","generateId","_removeEvent","removeForEventId","code","QUOTA_EXCEEDED_ERR","_canUpdateLink","isAssistant","isPartner","hasPartners","hasAssistants","updateNode","pid","stpid","removeNode","_getNewPidsAndStpidsForIds","_moveToBoundaryArea","newPidsForIds","newStpidsForIds","addNode","insertedNodeId","_ajax","readyState","setRequestHeader","_arrayContains","transform","hasAttribute","inPow","inSin","outSin","inOutSin","inExp","outExp","inOutExp","inCirc","outCirc","inOutCirc","rebound","inBack","outBack","inOutBack","impulse","expPulse","_addEvent","_resizeHandler","platform","maxTouchPoints","_globalMouseDownHandler","_globalClickHandler","_globalContextHandler","_globalDbClickHandler","ctrlZoom","_mouseScrollHandler","getExportMenuButton","_exportMenuClickHandler","getListenerList","passive","cancelBubble","top_left","bottom_left","right_top","left_top","ORIENTATION","ID","PID","STPID","TAGS","NODES","ELASTIC","MAX_DEPTH","SCALE_FACTOR","LAZY_LOADING_FACTOR","maximize","minimize","expandCollapse","yScroll","pan","insertfirst","safari","COLLAPSE_PARENT_NEIGHBORS","COLLAPSE_SUB_CHILDRENS","COLLAPSE_PARENT_SUB_CHILDREN_EXCEPT_CLICKED","mixed","tree","treeLeftOffset","treeRightOffset","nodeOpenTag","linkOpenTag","expcollOpenTag","linkFieldsOpenTag","grCloseTag","IT_IS_LONELY_HERE","RES","IT_IS_LONELY_HERE_LINK","FIRE_DRAG_NOT_CLICK_IF_MOVE","STRING_TAGS","MAX_NODES_MESS","OFFLINE_MESS","SEARCH_PLACEHOLDER","IMPORT_MESSAGE","FIXED_POSITION_ON_CLICK","ADD_NEW_FIELD","ASSISTANT","A4w","A4h","A3w","A3h","A2w","A2h","A1w","A1h","Letterw","Letterh","Legalw","Legalh","LINK_ROUNDED_CORNERS","MOVE_STEP","MOVE_INTERVAL","MIXED_LAYOUT_ALL_NODES","CLINK_CURVE","SEARCH_RESULT_LIMIT","input","textAlign","outline","readOnly","onchange","addValidation","wrapper","hr","_intersects","_addPoint","_addPointTop","_addPointBottom","_addPointLeft","_addPointRight","leftNeighbor","rightNeighbor","wrapperElement","matchMedia","_createDetailsView","_createEditView","htmlRipple","_fieldIsImg","_addField","insertBefore","getPointerElement","showStickIn","_show","firstNodeId","secondNodeId","_menuPosition","onClick","exportSVG","filename","expandChildren","nodeId","exportPDF","exportPNG","exportCSV","exportXML","idb","dbName","tableName","keyPath","_open","_browser","msie","indexedDB","onsuccess","onupgradeneeded","objectStoreNames","deleteObjectStore","createObjectStore","transaction","objectStore","write","expandAllIcon","fitIcon","zoomInIcon","zoomOutIcon","layoutIcon","_visible","div","expandAll","fullScreen","layoutBtn","hideLayout","showLayout","png","pdf","csv","excel","xml","_defaultExportOptions","_export","ext","mime","landscape","childNodes","_downloadFile","_pages","loading","_json2csv","_pagesA100","_pagesAfit","_pagesFit","vb","listener","event_id","removeAll","importCSV","_csvToArray","_importSetColumnNames","columnNames","readAsText","_importCenter","_overlay","createTextNode","onclick","onmousedown","_dragging","_originalLeft","_originalTop","_mouseLeft","_mouseTop","onmousemove","onmouseup","importXML","expandIds","collapseIds","expandCollapseToLevel","method","_expCollHandler","replaceAll","TypeError","writable","endsWith","up","_mouseDownHandler","_nodeMouseDownHandler","_nodeClickHandler","_nodeMenuClickHandler","_lonelyButtonHandler","_nodeContextHandler","_nodeDbClickHandler","_centerPointInPercent","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","delta","wheelDelta","_getClientXY","_dragEventFired","mozUserSelect","webkitUserSelect","userSelect","_getTransform","cloneNode","firstChild","getStParentNodes","elementFromPoint","_getOffsetXY","down","startMove","xWithoutScale","yWithoutScale","stopMove","_commonClickHandler","_menuHandlerMouseDownHandler","_move","stChildren","stChildrenIds","_getClientTouchesXY","viewBoxLeft","viewBoxTop","dist","_pinchMiddlePointInPercent","_setPositions","stContainerNodes","_walk","_m","_lastWalk","lcn","_firstWalk","_secondWalk","_prelim","_modifier","_setLevelMaxNodeHeight","_setNeighbors","_hasChildren","_fChild","_leftMidPoint","_mid","_getLeftSibling","isSplit","_rightMidPoint","partnerSeparation","_nodeWithPartnersSize","_apportion","_getNodeHeight","nodeHasPartnersPosition","_setMinMaxXY","_getRightSibling","nodeIsPartnerPosition","_getLeftmost","_getPartnerRightPanelWidth","_getPartnerLeftPanelWidth","_getPartnerRightPanelHeight","_getPartnerLeftPanelHeight","createSearchIcon","createInputField","activeElement","keyCode","_serverSearch","nextSibling","previousSibling","_getFistImgField","__searchField","__searchMarks","layoutConfigs","actionParams","oldNodes","vbIsInitializedFromState","_getResponse","_read","limit","_createNodes","_doNotChangePositionOfClickedNodeIfAny","_setMinMaxXYAdjustifyIterate","_initDinamicNode","_setCollpasedProperty","allChildren","_initNode","ppid","_getSubLevels","subLevels","_iterate","_getTemplate","_getOrderFieldValue","desc","_getMin","_addExpandedNodeIdsIterate","pnode","_getNodeWidth","_isVisible","getAllFields","_getMostDeepChild","sl","visId","_iterate2","expandCollapseSize","linkAdjuster","fromX","fromY","toX","toY","assistanseLink","minus","nodeMenuButton","img_0","link_field_0","ana","field_0","field_1","invisibleGroup","mirror","ula","olivia","belinda","rony","field_2","mery","polina","mila","diva","luba","derek","isla","deborah","subLevel","_defsIds","_lblIsImg","wrapText","_getPosition","_getOpacity","collapsedChildrenCount","getRootOf","indexes","ppnodes","lastLeft","firstRight","maxSidePartnersWithChildren","rightIds","leftIds","xa","ya","xb","yb","xc","yc","xd","yd","_linkPpTop","_linkPpBottom","_linkPpRight","_linkPpLeft","_linkRightToLeft","_linkBottomToTop","_linkLeftToRight","_linkTopToBottom","_roundedEdge","qx1","qy1","qx2","qy2","x3","y3","cnode","__linkPpBottomTop","mid","__linkPpLeftRight","_interceptions","_getTags","_trim","head","rippleContainer","_getOffset","_getTopLeft","opr","addons","InstallTrigger","HTMLElement","pushNotification","StyleMedia","chrome","webstore","runtime","firefox","edge","blink","CSS","_isHTML","nodeType","_getTestDiv","_getLabelSize","DOMParser","parseFromString","getComputedTextLength","setAttributeNS","XMLSerializer","serializeToString","URL","createObjectURL","msSaveBlob","download","scaleLessThen","setNodeSize","_imgs2base64","_getDataUri","readAsDataURL","onloadend","implementation","createDocument","accentFold","isActiveClone","_getScrollSensitivity","isTrial","childrenCount","requestParams","onSetViewBoxCallback","onDrawCallback","deltaX","wheelDeltaX","deltaY","wheelDeltaY","shiftKey","innerBar","ignore","pdfPrevUI","loc","ppdfCmdTitle","ppdfSave","ppdfCancel","ppdfFormat","ppdfFitToDrwaing","ppdfA4","ppdfA3","ppdfA2","ppdfA1","ppdfLetter","ppdfLegal","ppdfLayout","ppdfPortrait","ppdfLandscape","ppdfFittopagewidth","ppdfMargin","ppdfHeader","ppdfFooter","ppdfScale","_handler","_showHide","outerHTML","contentWindow","_exportHtml","clinkTemplates","_clink","addClink","removeClink","orange","blue","yellow","slinkTemplates","_slinks","labelPosition","addSlink","removeSlink","_getCanvas","drawnNodes","checkedLevel","globalAlpha","selectorBackgroundColor","searchAndComputeScore","__score","addNodeToResult","searchIndexesOf","_put","_buildStateNames","paramScale","paramX","paramY","paramExp","paramMin","paramAdjustify","writeToUrlParams","history","replaceState","writeToIndexedDB","writeToLocalStorage","readFromUrlParams","readFromIndexedDB","readFromLocalStorage","_magnify","magnify","timerBack","transformStart","nodeElement","front","magnifyBack","angularPeity","buildChartDirective","chartType","span","replaceWith","peity","watcher","opts","svgElement","createSVGRect","graphers","prepare","$svg","delimiter","register","cx","cy","allowDuplicates","caseSensitive","fieldName","removeConfirmation","tagLimit","availableTags","autocomplete","showAutocompleteOnFocus","allowSpaces","singleFieldDelimiter","tabIndex","beforeTagAdded","afterTagAdded","beforeTagRemoved","afterTagRemoved","onTagClicked","onTagLimitExceeded","onTagAdded","onTagRemoved","tagSource","_create","tagList","addBack","tagInput","term","_subtractArray","assignedTags","_showAutocomplete","minLength","_trigger","tagLabel","createTag","BACKSPACE","_lastTag","removeTag","COMMA","ENTER","TAB","SPACE","autoFocus","_cleanedInput","blur","Widget","_tags","_updateSingleTagsField","_findTagByLabel","_formatStr","_isNew","_effectExists","effects","effect","preprocessTag","existingTag","duringInitialization","before","fadeOut","dequeue","removeTagByLabel","webpackContext","req","webpackContextResolve","__webpack_require__","DigiLeanLogo","envConfig","visibilityState","hasFocus","logStateChange","nextState","capture","persisted","digiLean","$transitions","onStart","metisMenu","showhide","closebox","minimalize","fadeIn","fullscreen","appInsights","appInsightsConnectionString","connectionString","disableAjaxTracking","disableFetchTracking","loadAppInsights","DlSubject","BehaviorSubject","getClonedValue","super","RoleArray","DigiLeanAuthRoles","authUserSubject","loggedIn","roles","setAuthUser","getAuthUser","authUser","asObservable","userFullProfileSubject","userFullProfile","setFullUserProfile","userFull","cloneDeep","getUserFullProfile","userProfileSubject","setUserProfile","getUserProfile","handleErrorsAspNet","allErrorMsgs","errors","handleThrownErrorMsg","msgs","resourceUrl","sendProxyEvent","eventKey","systemHubUrl","signalrUrl","systemHubStateSub","HubConnection","Disconnected","systemHubState","getConnectionId","systemHub","connectionId","HubConnectionBuilder","withUrl","accessTokenFactory","withAutomaticReconnect","nextRetryDelayInMilliseconds","retryContext","elapsedMilliseconds","onclose","connectSystemHub","onreconnecting","onreconnected","onConnected","isTeamsMode","hostname","connectToSignalR","baseUrl","backendUrl","authUserInfo","auser","jsonContentType","postForm","formData","fullUrl","headers","getBearer","fetch","resHandler","createRequest","contentType","bearer","Request","http","request","errorFetchMsg","json","arrayBuffer","statusText","silentRenew","BackendHttpError","pd","ex","postFile","fd","FormData","loadUserProfile","handleGetUserProfileError","getUserPreference","updateUserPreference","valString","preference","setAuthUserFromOidc","access_token","idToken","id_token","customer_id","preferred_username","sub","idp","tokenExpire","expires_at","convertOidcDigiLeanUser","signOut","fullProfile","loadUserFullProfile","logPrefix","rootPath","oicdConfig","authority","authServerUrl","client_id","redirect_uri","response_mode","response_type","loadUserInfo","post_logout_redirect_uri","userStore","store","sessionStorage","accessTokenExpiringNotificationTimeInSeconds","silentRequestTimeoutInSeconds","automaticSilentRenew","silent_redirect_uri","monitorSession","setLogger","manager","addUserLoaded","addUserSignedOut","isAlreadyRenewing","logDebug","signinSilent","trackException","exception","properties","place","issue","login","signinRedirect","addUserUnloaded","addUserSignedIn","addAccessTokenExpiring","addAccessTokenExpired","addSilentRenewError","loggedOutUrl","webStorage","getUser","expired","getLoggedInUser","signoutRedirect","loadingPromise","loadAllLabelsForLanguage","selectedLangStore","getLang","allLabels","labelsCount","langLabelsStore","setAndLoadLang","selectedLang","getTranslation","labelLang","translateLabel","translateLabelInstant","allModules","$cacheFactory","$templateCache","requireAll","requireContext","tpl","loginRequest","hash","loginHint","login_hint","appBootstrapped","ufp","preferredLanguage","strictDi","unsubscribe","bootstrapApp","$stateProvider","$urlRouterProvider","$locationProvider","$httpProvider","$translateProvider","$compileProvider","tmhDynamicLocaleProvider","otherwise","html5Mode","hashPrefix","localeLocationPattern","useLoader","currLang","destination","reloadOnSearch","dynamic","debugInfoEnabled","useApplyAsync","useXDomain","common","global","useUTC","tmhDynamicLocale","setLang","use","setMomentLocale","webApiUrl","getLog","getDailyFeed","getLogForActivity","activityRequest","getLogForStrategy","getActivityLast24hours","Map","cachedGetRequest","cacheTimeMinutes","invalidateEvents","createCache","cachedPromise","expire","checkIfExpired","backendHttp","setMinutes","getMinutes","resourceUrlSettings","resourceUrlMessages","getLicensesChanges","sendMessage","deleteMessage","getCurrent","getAccount","getReplies","messageId","getUsersForAsset","getCustomersSimpleForAdmin","getAvailableUserLicensesForBusinessUnit","businessUnitId","getActiveUserLicenses","getActiveMobileLicenses","getAuthenticationMode","checkExistingUser","userNameOrEmail","getTimeElapsed","_data","mins","years","mth","getTimeframeLabel","validateDate","getUserTimeZone","Intl","DateTimeFormat","resolvedOptions","timeZone","getTimeZoneOffset","getTimezoneOffset","getUTCDate","getMonths","monthNo","getWeeksInMonth","monthNumber","startOfMonth","endOfMonth","startWeekNumber","endWeekNumber","totalWeeksInMonth","numberOfWeeks","isoWeeksInYear","activeWeekNumber","activeYear","weekYear","getCurrentWeek","startDateYear","endDateYear","weekNumber","weekDays","firstDayNextWeek","addTimeElapsedForMsg","timeElapsed","sendTime","isToday","inputDate","isDateInWeek","getDurationInDays","getDateInWeek","weekDay","getWeekDayNameFromDate","startOfWeek","endOfWeek","fiscalmonthSettings","companyfiscalmonth","getTimePeriodBeforeAfter","daysBeforeNow","daysAfterNow","viewerFileExtensions","extension","getFileType","toLocaleLowerCase","saveFileAs","blobData","objectUrl","anchor","revokeObjectURL","saveArrayBufferAsExcel","lang","exportProjectBoard","exportSmartActionList","exportA3Table","exportDataValues","exportImprovementValues","exportDeviationValues","moduleCache","dashBoardLinks","uiRef","clearCache","updateCache","hasAccessToAsset","isViewer","isBoardAdmin","moduleName","allModulesConfig","startUsing","learning","featureKey","getCustomerAllowedModules","getAllowedModulesConfig","allowed","getModulesSetupForKaizenAdmin","allowModule","feature","disallowModule","getCustomerAllowedModulesForCustomer","getCustomerEnabledModules","enableModule","disableModule","visualizationProjectQuery","dateStatus","removeClone","a3Status","getA3MiniInfo","getA3forUser","getA3ByStatus","deleteA3s","setPrivateStatus","updateProjectInfo","getA3ProjectInfo","getInitiativeMonthlyRealized","createA3FromTemplate","createA3FromDeviation","saveLayout","a3Versionid","getUserlistForA3","versionId","updateParticipants","a3ParticipantGroup","saveA3Metadata","approveStep","getActionList","assignActionListItemUser","stepItemId","deleteActionListItem","saveItemDescription","updateItemActionDate","actionDate","createActionItem","a3id","getCommentsOnStep","addCommentToStep","getStrategyGoals","removeStrategyGoalFromA3","linkId","fileInfo","attachmentId","createCategory","updateCategory","getImprovementStatus","a3status","useCache","getAreasWithDeviation","getById","person","getFlexiBoards","getBoardsInfo","getFlexiBoardsForAdmin","folder","getNotificationActions","actionSymbol","archiveNotification","seenNotification","markAllAsSeen","getUnseenNotificationsCount","getMyNotifications","getMyLatestNotifications","getActivityForNotification","activityLogItemId","getNotificationsOverview","deleteNotificationSettings","createSmartTable","smartTableTemplate","addRow","deleteRow","deleteColumn","updateColumnSortOrder","updateRowSortOrder","updateStartTime","updateEndTime","updateColumn","updated","getMyTasks","timeperiod","getTagCount","getTableValues","getTotalNumberOfTasks","getTotalNumberOfBoardTasks","getListForCurrentUser","timeZoneOffset","getMyTasksByStatus","getSubTasks","getBoardInfo","getComments","getCommentWithReplies","getBoardStatus","getTasksByA3","getTasksByProject","getProjectPortfolioTasksForPeriod","addSubTask","updateBoard","taskboard","clearSubTaskBoard","dateOptions","dayOfWeek","updateSortOrderForSubtasks","updateactionItemstatus","moveTaskToPersonalBoard","moveActionItemToTask","moveTaskToActionItem","updateActionListItem","createActionListItem","updateDuration","taskDuration","taskStartDate","updateRowPosition","rowPosition","repeatTask","repeatOption","deleteComment","commentId","getNumberOfValuesForPeriod","getGroupedSumForPeriod","getStackedGroupedSum","getTargetValuesForPeriod","getManualTargetValuesForPeriod","query","getLastDate","getAverageForPeriod","listId","LanguageCode","listSorting","deleteList","addItemToList","updateDataListItem","deleteDataListItem","listInUse","createModuleList","currencySetting","limited","currency","hasStrategy","translationNumber","boardGroupElements","newboards","newElements","improvementSuggestionCompleted","improvementSuggestionNew","deviationCompleted","a3GroupElements","a3Completed","a3New","a3ROI","a3Gains","a3PotentialGains","addTag","deleteTag","tagid","getTargetSumForPeriod","getLimitedModuleList","getModuleList","addElement","updateElement","deleteElement","companySettingsCache","getCompanySetting","keystr","valueFromServer","getCompanySettingServer","updateSettingInCache","saveCompanySetting","keyValue","updateCompanySettingServer","toDayStartDate","toDayEndDate","hasCustomTimeframe","numberDays","defaultTimeframes","updateHandler","hasNumberTimeframe","hasFiscalyear","periodChanged","timeFrameMapping","last3years","last3fiscalyears","lastyear","last12mth","thisvslastyear","thisfiscalvslastfiscalyear","fiscalyear","YTD","YTW","YTM","thisyear","previousmonth","nextfourweeks","thisandnextweek","previousisoweek","isoweek","thisweek","yesterday","custom","customStartDate","customEndDate","mappings","getTimeframeClass","toggleToDayStartDate","toggleToDayEndDate","updateDisplayPeriod","displayTimeframe","updateNumberDays","selectNumberPeriod","selectCustomPeriod","fromDateChanged","toDateChanged","showOption","displayPeriod","getTranslationKey","internalDataSources","average","widthType","setGraphWidth","validDataSource","DASHBOARD_DATA_SOURCE","COMMON_FILTER","COMMON_LAYOUT","nextStep","previousStep","setSerie","changeGraphWidth","targetNeeded","datasourcefilters","filterDataSourceByType","resultList","updatedSource","targetGreenOperator","registrationSettings","searchQuery","selectGroupedBy","selectedGroupedBy","customField","missingUnitOfTime","groupingIntervall","selectedGroupingIntervall","removeNonGroupable","DASHBOARD_DATA_GROUPING","selectGroupingIntervall","timeintervall","arrayUniqueElements","stackedColumn","checkDataSource","includeValue","selectedStackedColumn","selectStackedColumn","Toast","_content","customIcon","destroyTimer","destroyTimeSeconds","getTimestampId","setDestroyTime","changedCallback","destroyCallback","destroyNow","ToastListStore","toastMaster","showToastMaster","showPopover","hideToastMaster","hidePopover","toast","findIndex","toastStore","toasts","addToast","warning","removeToast","resetTargets","processTargets","showRegistration","targetsource","setInternalTargets","setCurrentDatasourceTarget","setManual","setOtherDatasourceAsTarget","greenOperatorChanged","clearRegistration","greenValueChanged","redValueChanged","transformRequest","identity","getUsersWithProfileImage","updateProfileImage","nothing","fileUrl","getProfile","getMyProjectAssets","getAllAssets","getAllAssetsIncludingSystem","getAssetBusinessTree","saveAssetBusinessTree","createCustomAsset","updateCustomAssetMembers","cssLevel","unitsCached","getAllUnitsCached","showFullScreen","hideFullScreen","resourceAdminUrl","getTemplates","getTemplate","deleteTemplate","getAll","closeModal","closeOnClickOutside","closeOnEsc","dangerMode","getAllBoardNames","getProjectForBoard","getProjectBoards","getBoardCategories","changeSortOrder","getUserListForBoard","assignResponsibleForCategory","tasksInPeriod","getTaskStatusText","getBoardList","getStatusList","statusItems","setUpData","listOperations","dataLists","renderValue","listitem","getValueForElement","newValuesCounter","propt","dbParams","totalValues","dataField","registerData","stopTime","countDownTime","countdownMinutes","showHours","showMinutes","showSeconds","nearTheEnd","isCountdownFinished","isCounting","currentSeconds","updateCountDown","alertText","addLeadingZero","startCountDown","setCssLevel","setAsset","allowBunitSelect","assetType","assetinfo","selectedAssets","matchingAsset","matchingSelectedAsset","profileImageUsers","getAllUsersIncludeProfileImage","getProfileImagesForUsers","imageUrl","getProfileImageUrl","profileImage","imageSize","storageUrl","formatProfileImageUrl","showname","updateduserinfo","userChangeHandler","userinfo","setBoard","boardSelectedIsMandatory","mandatory","clearBoard","fromBoardId","toBoardId","isActionItem","selectBoard","newBoardSelected","selectedColumn","selectedRow","mapResponsibleToRow","moveTaskToRowColumn","placeTaskInYearlyBoard","showColumnRow","placeTaskInBoard","mapDateToColumn","mapDateToRow","mapResponsibleToColumn","actionItemToTask","raw","getInputsRecursive","inputs","shadowRoot","shEls","isEnUs","observer","handleIntersect","entries","entry","isIntersecting","defaultOpen","IntersectionObserver","observe","disconnect","startingDay","dateUpdated","dateValue","dispatchDateChangedEvent","transclude","selectedCustomerText","toggleDropdown","searchCustomer","getCustomers","selectCustomer","searchChange","dropzone","uploadUrl","toDigiLean","maxFilesize","paramName","maxThumbnailFilesize","uploadMultiple","autoProcessQueue","autoUpload","withCredentials","maxFiles","removeFile","eventHandlers","uploadedfiles","fileUploadedHandler","removeFilesAfterUpload","documentPasteHandler","clipboardData","kind","addFile","getAsFile","processDropzone","processQueue","resetDropzone","removeAllFiles","cachedFileUrls","addToCache","urlObj","searchParams","nowPlus9","setHours","getHours","getExpireDateFromUrl","getFileUrl","blobName","fileInfoId","trackTrace","severityLevel","cachedUrl","Reflect","deleteProperty","tryGetCachedUrl","blobInfo","fixTransparentText","isObjectEqual","object1","object2","isEqual","copy1","omitBy","isUndefined","copy2","timePeriod1","timePeriod2","timeframe1","timeframe2","removedToCopy1","deepOmit","removedToCopy2","removedFromCopy1","removedFromCopy2","removedFromToCopy1","removedFromToCopy2","keysToOmit","keysToOmitIndex","keyBy","omitFromObject","fileClone","fileType","fileExtension","structuredClone","validFileUrl","Lightbox","applyFile","unobserve","fileId","blobNameThumbnail","fileUrlThumbnail","openLightboxModal","images","openModal","showProjectMilestone","isInTeams","isConfigurableTab","actionListSettings","showAggregateSum","fixedHeader","yearlyBoardOptions","showTeamMembers","showHeader","isStandAlone","noAccessLabel","handleForbidden","rejection","originalDisplay","subscription","hasSubscription","KaizenAdmin","rolesArr","DigiLeanButton","DigiLeanButtonPrimary","DigiLeanInput","inputField","changeEvent","inputEvent","DigileanJsonEditor","_jsonStringFormatted","_errorMsg","validate","setJson","oldVal","requestUpdate","DigiLeanDialogSizes","okBtnText","cancelBtnText","hideOkBtn","booleanResult","Minimum","DigiLeanDialogElement","dialog","_title","bodyTemplate","_okText","_cancelText","DialogResult","dialogOkFromOutside","once","dispatchCustomEvent","dialogCancel","cleanup","indata","getInputValues","dialogOk","child","lastElementChild","inputElements","minWidth","minHeight","dialogStyle","appendElement","setTranslatedDefaultLabels","okTextTranslated","cancelTextTranslated","waitForClose","booleanRessult","openForm","mergeOptions","tmp","stringsTemp","propValue","strings","convertStringToLiteralModel","convertStringToLiteralModelGen","openHtml","openElement","confirm","optionsIncoming","DigiLeanChecked","connectedCallback","disconnectedCallback","classes","DigiLeanFailed","dead","DigiLeanWorking","DigiLeanOkWithErrors","SpinnerIcon","spin","formatDateTime","dateDate","formatted","dateTimeBrowserLang","dateTimeNb","formatDateTimeLong","dateTimeLongBrowserLang","dateTimeLongNb","dateOnlyFormat","dateOnlyBrowserLang","dateOnlyNb","hour","minute","dateTimeLongFormat","dateTimeShortFormat","dateTimeShortBrowserLang","dateTimeShortNb","DateViewer","dateFormatted","formatDateOnly","formattedDateTime","DateTimeViewer","formatDateTimeShort","TranslateLabel","_label","UserDebug","userJsonString","parseExpire","expTic","parsedDiff","diffStr","secTotal","restS","minTotal","restM","hourTotal","restHour","parseDiff","expiredDate","UserTokenViewer","base64Url","tokenstring","parseToken","tokenJsonString","AppConfigDebug","configFormatted","ApiScopesDialog","clientScopes","allScopes","loadScopes","scps","getAllScopes","isChecked","cs","toggleCheck","emitScopeChanges","scopes","FontawesomeIconLit","readPdf","loadingTask","pdfLib","GlobalWorkerOptions","workerSrc","loadLib","getDocument","cMapUrl","cMapPacked","enableXfa","PdfZoomOptions","PdfRenderer","currentPdfDocument","alreadyLoading","currentZoomOption","pageFit","currentSize","numberOfPages","renderPage","pageNo","containerSize","zoomOption","getNewScale","pageViewport","getViewport","renderContext","canvasContext","resizeCurrentPage","scaleHeight","scaleWidth","pageHeight","pageWidth","dispose","viewOptions","PdfViewer","_url","_zoomoption","viewOptionSelected","currentPageNo","totalNumOfPages","debounceLoadPdf","loadPdf","debouncePdfResizeActual","resizePage","renderPdfPage","canvasWrapperEl","wrapperRectangle","pdfRenderer","previousWrapperBoxSize","viewOptionChanged","zoomoption","debouncePdfResize","resizeObserver","ResizeObserver","contentBoxSize","diffWidth","diffHeight","startsWith","checkZoomOptionProp","firstUpdated","_changedProperties","prevPage","canvasEl","__name","props","required","setup","__props","us","getBusinessUnitUsers","_cache","defaultAppStyle","getDefaultAppStyle","calcDefaultAppFontSize","factor","fontApp","internal","calcStyles","appStyle","layoutFactor","setPdfSasUrl","pdfFileInfoId","pdfFileName","loadingPdfUrl","sasUrl","pdfSasUrl","pdfReady","getSettingsFromProp","pdfZoomOption","zoomOptionChanged","updateTheme","titleChangedEvent","CustomEventsEmitter","binding","dir","emit","rootEl","findRoot","getRootNode","_hoisted_1","_hoisted_2","for","_hoisted_3","_hoisted_4","_hoisted_5","accept","vCustomEventsEmitter","wrapperEl","inputEl","uploading","isDraggingOver","errorMsg","onChangeInput","uploadFile","filesUploaded","uploadFileBlobStorage","getAndValidateFileDragging","ev","onDrop","onDragOver","draggingover","ref_key","unitNameComputed","getAllUnits","PopupElement","buttonSlot","contentSlot","getSlots","ToastComponent","animationseconds","_toast","toastUpdated","destroyToast","getClasses","getIcon","ToastMaster","animationSeconds","onToastRemoving","toastId","removeToastDelay","toastEl","renderRoot","fixStrategy","getStrategyMap","getStrategyMapByAsset","canEditGoal","getAllActiveTeamGoals","getAllTeamGoals","getAllGoals","getActiveBreakthroughObjectives","getStrategyBoardById","getSubGoalsBoard","updateStrategyGoalSortOrder","getNoImprovementPerStrategyStatus","getMyStrategyTasks","strategyGoalsQuery","strategyGoalsList","getTasksForStrategyGoals","strategyGoalsId","addKPI","getGoalsWithKPIsByAsset","strategyAssetYear","getGoalKPIs","strategyGoalLink","strategyFileInfo","saveDashboard","dashboard","dashboardTitle","dashboardId","updateWidget","widgetClone","deleteDashboard","templateId","deletePage","addWidget","copyWidget","placementWidget","deleteWidget","widgetId","hasDefaultAccess","userAccessLevel","useResizing","createLog","changeTheme","getAllUsers","subHeader","getLogInfo","boardInfo","totalMatchingRecords","initializeItem","createdDate","pdca","concernChanged","concern","concernValue","updateConcern","causeChanged","causeCellId","counterMeasureChanged","counterMeasureCellId","counterMeasureId","ownerChanged","dueDateChanged","counterMeasure","animateRow","isPartOfTasks","removeTaskFromBoard","dateChanged","dateChangedHandler","clearUser","setOwner","selectedOwner","ownerChangedHandler","setStatus","PDCAoptions","statusChangedHandler","pieChart","changesDebounced","lastDate","existingFilter","a3filter","newperiod","a3CellChangeHandler","newCustomer","newname","COMMON_SUBMIT","ADMIN_MESSAGE_NEW_CUSTOMER","createNewCustomer","clonedNameCell","cloneProjectId","openConfigurationModal","existingCellValue","projectlist","filers","openDataSource","diffPlannedVSActual","savedDate","getTranslatedSmartColumnName","getUserSettings","updateUserSettings","uniqueBoards","prefJson","previewA3","a3VersionId","createImprovementListReport","downloadPdf","pdfLabel","saveArrayBufferAsPdf","errorLabel","parseColumnSettings","getColStyle","widthPx","excelService","themeChangedEvent","accessOptions","showArchive","taskAdded","taskDeleted","settingsSortColumn","quickAccess","setFontStyle","fontStyle","refreshTimeBoardModel","timeboardEnabled","setTimeBoardModel","timeBoardModel","viewMode","zoomOptions","showActionListSelectOptions","toggleAdminMode","loadsmartActionList","timeBoardOptions","kanbanEnabled","useActionList","optionsChangeHandler","viewModeSelection","taskLevelDetails","taskDetailLevel","saveAsTemplate","toggleViewMode","exportToExcel","exportToPDF","sortColumnIndex","isAscedning","sortColumn","foundColumn","getNextSortOrder","currentSortOrder","cellModels","existingBoards","newActionListCreated","createNewActionList","setupTable","resizeDebounced","setColumnSorting","standardList","createTable","createFromTemplate","createSmartActionListFromTemplate","linkExistingActionList","setTaskStyle","calculateCells","archivedtaskid","unarchivedtask","changeDateColor","updateChangeColorXDaysBefore","getArchivedTasks","archivedtasks","currentboard","currentcolumns","savetemplate","createsmartActionList","toggleArchive","updateBoardTitle","boardName","toggleButton","headerHeight","smartKanban","yearlyBoardcontainer","cellModel","hasCell","createNewTask","taskSortOrder","saveTaskSortOrder","taskOrder","updateTaskSortOrder","saveQuickAccess","columnNameUpdated","newTask","newTaskFirstInList","deleteBoard","ADMIN_DELETED_BOARD","ADMIN_DELETED_BOARD_DESCRIPTION","modalInstance","cellSettings","savedAttribute","addNumberAutomaticColumn","headertext","editTimeframe","calculateNumberCellTotal","colDef","projectAttributes","cellNumber","updateAggregateType","updateUnitPlacement","updateDecimals","targetType","targetId","cellUpdated","updatedColumn","hasColumn","addColumnTotasks","isPartOfBoard","tabletask","updatedSortOrder","columnOrder","columnWidthChangeHandler","addToFavorites","removeFromFavorites","isFavorite","smartActionListTemplate","actionlistService","currentView","getActionListTasks","targetDate","readonly","getNextStatus","taskIds","getTaskDateStyle","previewImage","diagramTemplate","optimizationChallenges","configurationChallenges","strategygoals","problemCategories","deviationTypes","a3templates","listGroupedElements","showTarget","targetSerieData","groupingElement","suggestionCategories","a3Categories","checkElementType","loadTargetData","groupByInterval","greentarget","greenelement","setupTargetSerieData","setupChartData","setupChart","sourceCol","typeChecking","getPointName","getNameById","getNameByUserId","potentialOptimizationChallenges","complexityindex","selectDataSourceModal","getColor","xAxisData","xAxisDataLabel","barChart","appEl","headerEl","toggleShowTarget","endOfDaytoDate","definition","currentPeriod","comparePeriod1","getAllData","currentFiscalYearStart","currentFiscalYearEnd","period1","period2","period3","options1","options2","promises","options3","currentChart","itemStyle","getMonthLabel","indexorder","combined","getYearLabel","dataValue","xAxisIndex","fiscalsetting","handleResizing","widgetEl","froalaEl","windowWidth","stepLayout","print","stepFromCollection","findMaxRow","databound","onStepSelected","isActionList","previewOnly","pdfTitle","timezoneOffset","adminMode","clickGridsterItem","refreshCalendar","getTasks","eventDurationEditable","eventClick","calEvent","jsEvent","dayClick","eventDrop","revertFunc","getBoardMemebers","setCalendar","isPersonalCalendar","calendarType","employee","actiontasks","setTheme","dateSourceSelection","editInViewMode","calculateDays","selection","targetDateUpdated","isCountDown","editValueElement","checkDeviationEvents","checkImprovementEvents","checkA3Events","strippedDatasource","dataFilterService","convertSeverityToKPIDate","updateAggregateStatus","convertedDate","selectedYear","isRelevant","automatic","getAutomaticStatusesForYear","getStatusesForYear","selectedMonthNumber","getStatusesForMonth","assetFilter","areaFilter","projectFilter","updateChangedStatus","getVisualizationTypeIdentificator","typeVariant","dateInSelectedMonth","getDatasourceStatusesForYear","getTimePeriodYear","statusByMonth","calculateStatusForMonth","getDatasourceStatusesForMonth","getTimePeriodMonth","daysInPeriod","calculateStatusForDay","currentyear","currentmonth","totalSumMonth","totalSumDay","convertColorClassToColorCode","currentStatus","identificationName","typeSelected","visualizationTypeId","loadAreas","loadAssets","newSuggestion","labelsettings","incidentDate","initializeAutomatic","boardAssetId","intAssetId","boardAsset","updateArea","updateProject","getStatusValuesForYear","getStatusesForMonthEvent","selectedMonth","sqlMonth","getStatusDeviationValuesForMonth","getStatusValuesForMonth","getStatusDeviationValuesForYear","valuelabels","getDeviationTypeConfiguration","severitylabels","getDeviationTypeSeverityLabels","selectConfiguration","setDisplayYear","resizeImage","img","imageFileName","loadImageUrl","isMenuActive","menuActive","getMessages","allMessages","typeColor","messages","showMetaInfo","assetfilter","messageassets","assetsToBeDisplayed","messageasset","assetToBeDisplayed","isAssetMatch","selectAssets","messageoptions","toggleShowMetaInfo","allAssets","setDefaultSeverity","selectedSeverity","getAllSeverities","fontIncident","incidentStyle","setCustomList","hasFilterValues","selectedDataListItem","setFilteredSelectors","setFilterOrDefaultValue","selectedAsset","selectedFollowUpAsset","followupassets","selectedArea","getOngoingProjects","hasElement","modifyConsequence","problemReasons","modifyReason","initRegistration","resetDeviation","registrationsetup","setCurrentUser","isLoadingConfig","getSelectableElements","listOfAllElements","filteritems","listOfSelectableElements","filteredvalues","filteredseverities","evaluationText","showTime","isDeviationAdmin","validFields","customRegistrationField","customSourceColumn","checkFields","getConfiguration","incidentDateChanged","setTime","deviationConsequence","setConsequence","valuereplacecomma","notvalidnumber","validationMessages","categoryField","lisOfFields","mandatoryFieldsMissing","areaChanged","assetUsers","userSetup","selectFollowupAsset","selectedFollowupAsset","selectArea","selectListItem","selectSeverity","isSaving","addDeviation","followUpAssetId","createdByUser","selectedProblemReason","createdDeviation","deviationtypefieldvalues","valueData","DeviationTypeFieldId","Value","addCustomFields","saveCustomFieldsValues","isPopupOpen","setConfigForRegistrationElement","hasConfigValues","datalistelements","setValueObjects","loadDeviationTypes","deviationTypeErrorMessage","deviationTypeTitle","typeconfiguration","nextSortOrder","setDefaultValues","dataMissing","isInputOk","categoryregistrationsetup","setCategoryDefaultValues","consequenceregistrationsetup","hasDefaultValues","setConsequenceDefaultValues","problemreasonregistrationsetup","setProblemReasoneDefaultValues","includeTasks","canIncludeTasks","templateInfo","toggleIncludeTasks","hasComments","replies","openReplies","messageText","showNewMessage","isMember","userAsset","showAddMessage","toggleMessageEdit","updateMessage","addMessage","msgtitle","enddate","startdate","newmessage","selectedTemplate","parseStyle","selectedTemplateChanged","canEditMembers","refreshUserList","isWeekday","selectedAssetId","updateBoardName","columnSortableOptions","sourceItemHandleScope","destSortableScope","itemScope","sortableScope","orderChanged","rowSortableOptions","hideWeekDayOption","editCategory","boardCategory","removeCategory","editMembers","lastColumn","isColumnCategory","BackgroundColor","ForegroundColor","lastRow","isRowCategory","switchColumnRow","hasValue","BOARD_DELETE_CATEGORY","BOARD_DELETE_CATEGORY_DESCRIPTION","rowindex","updateWeekdayName","toggleIsWeekday","taskInfo","selectedEmployee","employees","parentTitle","translatedPersonalBoard","startdateAvailable","origionalBoardDate","boardoptions","personalBoard","showAddComment","isLoadingComments","currentUser","setCanChangeBoard","predefinedPostItBackground","predefinedPostItForeground","getUsersForBoard","descriptionChanged","changedResponsible","activityLog","changedDescription","changedTags","changedDueDate","hasAddedComments","changedStatus","changedBoard","showSubTasks","tabs","indexTab","selectTab","stringValue","deleted","translateOptions","logItems","occured","activityDate","getActivityLog","taskComments","activeCommentChanged","boardDateChanged","updateBoardDate","changedDuration","updateSubTaskDueDate","saveComment","getTags","changeBoard","openParentTask","subTasks","getBoards","filesToShow","modelChangeHandler","modelRows","noOfDaysShown","loadDataForWeek","selectedWeek","targetValues","createRow","calculateTotal","getTargetStatus","produced","projectRow","plannedTotal","producedTotal","daysWithValues","dayInWeek","registrations","plannedsum","targetRegistrations","newRegistration","setProduced","deleteRegistration","saveRegistration","saveDataValue","setPlanned","deletePlannedRegistration","savePlannedRegistration","mapValuesToDay","mapTargetValuesToDay","missingMandatoryValues","savedValue","copyRowSettings","copyObject","resetRowRegistrationForEachDay","targetvalues","setupTimeOptions","currentMonth","currentWeek","hasWeek","selectWeek","openDropdown","selectedTimePeriod","valueId","valueindex","closeDropdown","notfiyModelChanged","resetTableRowsIndexes","copyRow","newrow","rowWithValues","openRowConfiguration","isNewRow","updatedRow","configrow","daySum","plannedSum","previousWeek","currentWeekIndex","currentWeekNumber","previousWeekIndex","previousMonth","getPreviousWeek","nextWeekIndex","nextMonth","selectYear","setMonthSelection","setWeekSelection","selectMonth","previousYear","refreshData","previousMonthIndex","nextMonthIndex","changeNoOfDaysShown","registerValue","selectedAsssetId","assetmodel","assetChangeHandler","saveOK","yearlyboardRenderService","monthlyRenderService","weeklyRenderService","boardRowProvider","actionListRowProvider","yearlyViewModeProvider","renderService","loadYear","monthlyViewModeProvider","loadMonth","weeklyViewModeProvider","loadWeek","rowProvider","useCategorySelection","showPostIts","getDisplayPeriods","selectedViewMode","currentViewMode","showWrench","isUnprocessedFilterActive","filterUser","resetFilter","filterOnStatusBlank","hideWrench","notfiyOptionsChanged","getSelectedTimeOptions","renderTask","updateTaskDuration","durationStart","durationEnd","currentTimePeriod","checkBoardSettings","settingsAsString","boardOptions","selectedCategoryChanged","createLayoutAndLoad","existingtask","fromRowId","repeatedTasks","smartActionListTasks","actionListTasks","taskExistInActionList","toRowId","hasBoardDesignerPrivileges","openSettings","refreshUsers","predefinedPostIts","boardsettinginfo","targetMode","targetPeriodIndex","taskOptions","targetCell","taskDurationChangedHandler","clearAnimations","renderTasks","renderOptions","actionListTask","isRecalculating","displayYear","displayMonth","displaWeek","revertOnSpill","removeOnSpill","accepts","sibling","moves","targetYear","targetYearEnd","dropRowElement","targetCellId","taskElement","origionalEndTime","previousRowIndex","targetCategoryId","previousRowId","commitDurationChanged","couldMoveSubTasks","commitRowPositionUpdatedDebounced","targetMonthNumber","targetWeekNumber","targetDayNumber","saveDuration","loadUsers","categoryEditOptions","updateBoardOptionsDetailLevel","detaillevel","updateBoardOptionsView","setProfileImage","postits","checkIsenddateBeforeStartdate","previousUserId","previousUserName","startTimeOpened","endTimeOpened","BOARD_DELETE_TASKS","BOARD_DELETE_CLONED_TASK","BOARD_DELETE_CLONED_TASK_DESCRIPTION","boardSelected","includePersonalBoard","boardDrawService","boardLayoutService","fileService","boardTableContainer","hasDeviationAccess","cellContainer","drawBoard","adjustActionListHeight","setupTasks","setupTaskModifications","addSortable","nextDirection","currentDirection","rowsDirections","switchClass","setupCategoryResponsible","readjustTaskWidth","setupStatus","addUserList","addTaskToBoard","loadImage","reapplyTaskBehaviours","loadImages","updateExistingTask","updateCommentCount","updateAttachmentCount","updateTaskStatus","taskBeingMoved","toContainer","toColumnId","toIndex","isPartOfCellAlready","insertAfterIndex","moveTaskOnBoard","moveTaskDateOnBoard","taskAssignedToUser","removeTasksFromBoard","categoryAssigned","updateResponsibleForCategory","assignUserToCategory","addTooltipBehaviour","archiveoptions","redrawTasks","updateSubTaskStatus","daysContainers","weekDayElement","dayContainerElement","formattedDate","singleDay","taskToBeImported","getFilesForTask","fileResults","updateImage","updateAttachments","updateSubTask","setupToggleDescription","moreButton","displayText","setupTaskOpen","activeTask","getTaskFromDOM","postItDroppedEvent","droppable","hoverClass","userDroppedEvent","userDroppedToColumnHeaderEvent","userDroppedToRowHeaderEvent","targetBoardId","statusChangeDebounced","dataStatus","tasktitle","taskReordered","activeCell","targetColor","categoryid","boardSourceType","cloneOptions","sender","actionItemAddedToBoard","taskOrders","fromContainer","fromColumnId","publishMoveTask","taskMovedSettings","shouldReApply","changedContent","portlets","predefinedLabelColumnProvider","canEditComponent","hasColumnProvidersBeenSet","setColumnProviders","selectedBoardDate","hasRows","hasColumns","responsibleUserid","includepersonalboard","showDate","causeValue","counterMeasureValue","showImage","repeatOptions","repeatType","selectOption","selectedRepeatOption","taskDueDateChange","blankuser","taskBoardDateChange","resizeOptionsTimeout","setHeightBasedOnOptions","setHeightWindow","setSettings","updateActionlistOptions","actionListOptions","boardTableHeight","boardContainer","windowHeight","boardTargetHeight","weekNumberTranslation","viewType","actionListViewContext","isViewerOnly","hasBoardActionListSetting","showActionList","loadCurrentWeek","weekChange","activeFilterButton","inActiveFilterButton","publishWeekChanged","reloadTags","lastDayPreviousWeek","translatedWeekNumber","currentDateInWeek","formats","weekpickerOpen","weekpicker","weekpickerDateChanged","tagFilterState","filterToggle","over","seletedItem","toggleActionList","moveLastWeeksUncompletedTasks","weekOptions","fromWeek","numberOfDays","refreshTableLayout","filteredUser","filterTagByUser","filteredColor","filterTagByColor","tasksWithblankStatus","archivePeriod","shouldClearColorSelection","filterColor","shouldClearUserSelection","taskToShow","getColorFilter","getUserFilter","userListExpanded","tasksToShow","activeTags","getFilter","showTaskWithoutTag","allTasks","getPostItFromColor","currentIconClass","iconClass","taskDom","updateResponsibleCallBack","idSelectorElement","userList","ul","lessText","moreText","drawTimeElement","timeElement","hideButton","userDisplay","showAsUnread","unreadCssClass","attachmentcontainer","fileResult","hasPreview","taskcontainer","commentscontainer","taskTitle","taskText","responsibleuserid","responsibleuser","getDeviationAction","columnsOpen","infoContainer","li","iconClasses","displayUsers","showAll","shouldExpandButtonBeVisible","showAllTooltip","showFewerTooltip","updateUsers","activateDraggable","userplaceHolder","toggleShowAll","listExpandedHandler","connectedUsers","isConnected","updateConnectedUsers","selectUserHandler","inprogress","waiting","isPartOfList","toggleFilter","removeFromList","addToList","contentDescription","getDescription","removeAnmiation","noOfActiveStatusColumn","openForEdit","isPartOfContainer","replaceTask","updatedTaskId","existingTask","currentTask","statusContainer","navigateToBoard","isFilterActive","filterTasks","resetBoardsFilter","boardsToShow","getFilteredListByBoards","filteredPriority","activePriorityFilter","priorityOptions","priorityDB","hideStatus","filterPriority","filterBoard","removeFilter","parentTask","setupTask","newBoardDate","updateDueDate","existsOutsideParent","parentTaskTitle","colorClasses","static","isInboxZero","openA3ActionItem","showstarttime","responsibleChanged","oldResponsibleUserId","isTaskInWorkList","checkInboxStatus","allTask","setStrategyGoalInfo","strategytasks","matchingTasks","goalcolor","goalname","currentColorIndex","currentActionList","colorClass","projectBoards","openBoardTaskPopup","usersWithProfileImage","completed","checkCompletedStatus","completeAnimation","completeAnimationName","improvementStatusChangeDebounced","deviationStatusChangeDebounced","showCompleteAnimation","changeImprovementStatus","changeDeviationStatus","changeTaskStatus","play","okContainer","loop","autoplay","thisBoard","isBoardsLoaded","isUsersLoaded","getTaskInList","updatedTask","ResponsibleUserId","subtask","selectThisBoard","subTask","userPopover","boardPopover","getUserSelectPopover","getBoardSelectPopover","editUser","showClearUser","anchorName","positionAnchor","editBoard","selectUserEvent","clearSelectedUserEvent","selectBoardEvent","clearBoardEvent","moveTaskToRowColumnEvent","popoverEl","closePopover","togglePopoverEvent","getBoardData","filterInitial","onFilterChanged","showStatusFilter","resetListFilter","isSearchWordActive","likesFilterActive","myResponsibleFilterActive","overdueFilterActive","hasStrategyModule","isMoreTagsAvailable","tagsVisible","toggleOverdueFilter","filterDebounce","toggleMyResponsibleFilter","showAllTags","addInitialFilter","filterStatus","filterAsset","filterTag","filterGoal","addToFilterIfActive","itemFilter","notImplementedFilter","itemToShow","updateGuiFromFilter","updateGuiFromFilterSpecialCase","appl","itemsint","listofstr","stringtoint","propVal","getHasModule","pageCount","previousFilterName","timePeriodOptions","loadValues","isOverdue","allColumns","selectColumn","teams","loadTeamMembers","team","teamMembers","selectedTeam","members","teamspace","setSelectedTeam","teamChanged","useProjectGroup","selectedAssetType","includeProjects","includeCustomGroup","memberselectoroptions","includeProject","memberSelectionChanged","setPublicStatus","participant","customAsset","Owner","OwnerDisplayName","OwnerUserId","oldAssetId","englishText","labelCode","missingLangs","missing","findMissingTranslations","fromLanguageCode","textToTranslate","targetLanguagesCodes","translationResult","labelsMsg","saveItem","ADMIN_MESSAGE_DELETE_CONFIRMATION","getLabel","haslanguage","addItem","isWeb","isBackend","saveItemDebounce","labelObj","hasValidTranslations","importFromExcel","primaryInputSource","dataValueDeleted","AssetRoleType","AuthenticationMode","CustomerSettingKeys","CustomerSubscriptionType","DatabaseType","DataSourceElementType","DeviceType","EvaluationStatus","GroupType","ImprovementStatus","IncidentSeverity","IncidentStatus","JobRunResult","JobRunState","LearningItemType","LogMessageType","MonitorState","PublishState","TeamsAccess","UserCheckupStatus","customerAccountService","totalFee","paymentdetails","validPaymentDetails","hasReadAndAcceptedTerms","missingReadAndAcceptedTerms","firstRegistration","updatedSubscription","newStartDate","calculateSubscriptionEndDate","due","calculateDue","lastPayedDate","account","billing","daysThisMonth","getSubscription","getCustomerAccount","getPaymentDetails","billingCurrency","address","regnumber","contactFirstName","contactLastName","zip","city","country","other","countries","countryCode","countryinfo","invoice","getRecurringInvoice","sumExTax","calculateFee","trialPeriodInDays","getTrialPeriod","daysInTrial","daysLeftInTrial","calculateTrialDue","presentPredictedFee","getRecurringInvoiceFromInputData","dayOfYear","currentDayOfYear","totalDayInThisYear","dayOfMonth","currentDayOfMonth","totalDayInThisMonth","countryChanged","validatePaymentDetails","readAndAccept","updateAccount","trialPeriod","setTrialDateIfTrial","updateCustomerAccount","openPlanDialog","updatePaymentDetails","notValidCompanyName","notValidEmail","notValidAddress","notValidZip","isInteger","notValidCity","notValidCountry","removeRegNumberWhiteSpace","openCancelSubscriptionDialog","swal","buttons","closeOnConfirm","cancelSubscription","openReactivateDialog","reactivate","reactivateAccount","openFrequencyDialog","nochange","yearly","endDateCurrentSubscription","descNewSubscription","handleExceptions","fallbackErrorLabel","userLicenses","businessUnits","businessUnitsEnabled","toogleEditLicenses","editLicenses","activeUserLicenses","changeMaxLicenses","businessUnit","updatedUnit","currentSubscription","currentRegularLicenses","currentMobileLicenses","mobileLicenses","showWarningMessageMobileUserLicenses","showWarningMessageUserLicenses","translationData2","activeLicenses","updateSubscription","checkActiveUsers","newNumber","checkActiveMobileUsers","activeMobileLicenses","decreaseRegularLicences","increaseRegular","decreaseMobile","increaseMobile","filterUsers","updateRole","showAccessGiven","addOwner","addViewer","Viewer","Member","createInvoice","getInvoiceSummaryForPeriod","getProductOrders","getInvoicesForPeriod","getStandardModules","getProfessionalModules","updateCustomerProductOrder","customerPaymentDetails","errormessage","assetIds","messageAsset","AssetId","folderService","allBoards","filteredBoards","hasTeamSpace","addTeamSpaceBoard","systemBoards","isAllBoardSelected","isSmartactionlistSelected","isWeeklyboardSelected","isTimeboardSelected","isKanbanboardSelected","isFlexiboardSelected","isPerformanceSelected","toggleBoardType","toggleFolder","isOpen","addToQuickAccess","removeFromQuickAccess","quickAccessBoardsToRemove","mapBoardsToProject","newFlexiboard","ResolutionDisplayer","_res","LayoutOption","ScreenSize","screenConfigurations","Medium","Large","ExtraLarge","defaultOption","Default","layoutOptions","Landscape","calculateLayoutFactor","screenSize","screenConfig","sc","getScreenConfiguration","factorWidthFixed","isPossibleToConvertToLandscape","currentDashboard","getPageHeightByWidgets","isPossibleToChange","appScaleFactors","medium","large","extraLarge","adjustAppSize","adjustedSize","scaleFactor","popularApps","getPopularApps","isInPresentationMode","currentCustomerId","screenSizesConfiguration","ratioOptions","lo","showZoom","saveSettingsDebounced","saveSettings","pageService","showZoomOption","isBoardDesigner","ps","calcLayoutFactor","getDashboard","loadDashboard","onWindowResize","removeBackgroundPosition","backgroundImageIndex","removeBackground","fullscreenchanged","styleSheet","backgroundPostitionIndex","styleSheets","insertRule","cssRules","resetLayout","selectedTheme","themes","backgroundImageUrl","cssOpacity","customBackgroundUrl","customBackgrounds","backgrounds","selectBackground","setBackgroundUrl","addCustomBackgroundUrl","setBackground","removeCustomBackgroundUrl","setCustomBackgroundUrl","deleteRule","layoutMode","dashboardSettings","resetLayoutStatus","layoutStatus","setLayoutMode","gridViewSize","gridViewElement","getGridViewSize","previousFactor","allwidgets","rotatePageTimer","logoUrl","hasUpdatedLayout","refreshDashboard","dashboardPageId","pageToRemoveFrom","updateWidgetSettings","updatedWidget","setLayoutOption","layoutOption","layoutScreenChanged","screen","layoutRatioChanged","isDebugMode","togglePresentationView","pagesOrderChanged","disableSelection","startPresentationView","stopPresentationView","giveWidgetFocus","isRotatingPage","stopRotationOfPage","setFocus","preferredPage","oldPage","oldWidget","rotateIntervals","startRotationInterval","selectedInterval","presentationPaused","startRotationOfPage","previous","copyFlexiboard","dashboardAsTemplateId","savedDashboard","pageList","removePage","showuserinfo","copyPage","sourceId","newPage","addAppToDashboard","appSize","appCopy","defaultXSize","defaultYSize","addApp","errTranslated","tryFixLayout","fixedWidgets","uId","refreshGridFromPageState","fileStoreUrl","changeTemplate","weeklyBoardTemplate","BOARD_WEEKLY_BOARD","BOARD_WEEKLY_BOARD_DESCRIPTION","BOARD_NEW_BOARD","COMMON_CATEGORY","COMMON_MONDAY","COMMON_TUESDAY","COMMON_WEDNESDAY","COMMON_THURSDAY","COMMON_FRIDAY","yearlyBoardTemplate","BOARD_YEARLY_BOARD","BOARD_YEARLY_BOARD_DESCRIPTION","createYearlyTemplate","kanbanBoardTemplate","createKanbanBoardTemplate","emptyBoardTemplate","FLEXIBOARD_EMPTY_TEMPLATE_DESCRIPTION","FLEXIBOARD_EMPTY_TEMPLATE","createEmptyTemplate","eightWasteTemplate","performanceBoardTemplate","loadtemplates","associateWithStrategyGoal","associateDashboardWithStrategyGoal","getDeviationTypeId","createFlexiboard","selectedEightWastersTemplate","selectedPerformanceBoardTemplate","createSmartActionList","createYearlyBoard","createPerformanceBoard","createTaskBoard","validationFailed","chooseMembers","memberSelectorOptions","animationUrl","createGuid","PageService","gs","pageWidgetScopes","$pageContainerScope","gridstack","setupEvents","addWidgetFromOtherUser","addWidgetToPageStateOnly","removeWidgetFromOtherUser","uid","removeWidgetFromStateOnly","raiseWidgetSettingsChangedEvent","settingsChanged","dummyWidget","canAddNewWidget","gridItem","addWidgetToGrid","gridstackNode","newWidget","savedWidget","removeWidgetFromGrid","removeAllWidgetsFromGrid","dashboardWidget","convertWidgetToGridStack","willItFit","loadManyWidgetsToGrid","widgetOptions","newScope","wrappedEl","createWrapperElements","findWidgetUid","incomingComponentSettings","widgetToUpdate","incomingSettings","removeWidgetBackend","getGridItems","removeWidget","$destroy","widgetsNewState","currentWidgetIdsInGrid","gi","batchUpdate","deletedWidgetIds","wNew","addedWidgets","updateWidgetFromState","ws","updateGs","broadcastWidgetResizeEvent","checkNodeUpdatesAndSave","getGridItem","cloneWidget","changeWidget","dWidget","gridOptions","alwaysShowResizeHandle","float","gridEl","gridObserver","MutationObserver","mutationList","mutation","attributeName","getAndSetCurrentHeight","initializeGridStackDebounced","setLayoutConfig","lc","getLayoutConfig","setAdminOrViewMode","currentRow","getContainer","setProperty","rowsTotal","numberOfMarkingLines","gridContainer","currentMarkingLines","markingLine","syncGridMarkingLines","nativeFullScreenApps","openAppInFullScreen","navigationUI","copyValuesToScrope","engine","deleteSmartActionList","cloneApp","isWidgetReadyToLoad","previouslySavedSettings","widgetid","updatedSettings","onSettingsChangedEvent","disableDebugMode","broadcastResizeDebounced","fullScreenChanged","isFullscreen","closeFullScreen","contentEl","quickListApps","customized","general","previewImageUrl","saveImage","addProjectToBoard","projectBoard","getBoardForProject","addProjectAttributeToBoard","deleteProjectAttribute","updateProjectBoardSortOrder","updateProjectBoardRowSortOrder","updateProjectAttribute","updateProjectBoardAttribute","getMemberProjectPortfolio","getMemberProjectPortfolioInfo","getProjectPortfolioForAdmin","getProjectsInfo","GetMyProjectsMiniInfo","getUserProjects","getProjectListWithDeviation","getProjectListWithSuggestion","getProjectListWithA3","getMilestone","participantGroup","saveUserProjects","userprojects","updateCustomerInfo","projectuser","removeUser","updateCustomer","projectCustomerId","deleteProjectCustomer","projectDate","projectDescription","showtitle","projectColumns","showMoreColumns","rowOrder","calculateProjectAttributes","boardname","boardattribute","projectBoardItem","tableId","boardAttributes","getHighestSortOrder","highestSortOrder","titleUpdated","addTextFromAppColumn","addTargetFromAppColumn","addAttributeToProjects","addExisting","projecttype","exisitingProject","lastInList","projectboard","addSmarttableRow","goToProjectHub","setValidProjectInfoInPeriod","includeMilestone","NotLikeIdFilter","setProjectCustomer","ADMIN_NEW_CUSTOMER","registeredcustomer","existingProjectFilter","projectfilter","createTempDate","createTempMilestone","checkMilestone","saveCellAttributes","savePlannedDate","sortProjects","diffSinceToday","otherprojects","allActiveProjects","selectedCustomer","titlehaserror","editImage","imagePreviewUrl","editProject","setImageViewMode","setImageEditMode","editMilestones","sortByFavorites","portfolios","portfolio","portfoliotables","newId","projectBoardService","projectBoardTemplate","newBoardId","projectMessageService","calculateTimeElapsed","editMessage","isEditing","saveMessage","COMMON_MESSAGE","newMessageList","canUserChange","senderUserId","ownerId","customername","newcustomer","imageUploaded","Name","suggestedCompany","isFormReady","existboard","allusers","improvementUrl","getAllColumns","getOngoingFiltered","filterModel","getTotalNumberOfImprovements","includeArchived","getLatestSuggestions","prioritystatusno","getMyDigiLeanFeedback","commentOnFeedback","feedbackId","getUserListForSuggestion","getListByStatus","getListByAsset","getListByUser","addFeedBackToDigiLean","removeLike","deleteSuggestion","updateImprovementStrategyGoal","updateROI","activationList","getSuggestionsByFilter","getSuggestionsForPeriod","getTopImprovementInitiatives","getTimeEstimatedInitiatives","getTimeRealization","getEstimatedInitiatives","getRealization","getRealizationForAssets","getRoiForAssets","getNoMyImprovementStatus","getA3Status","suggestionstatus","recipientUserId","$applyAsync","canWrite","filterSource","filterpreferences","existingLike","suggestionInfo","likedByUserId","commentedByUserId","setDateStyleToSuggestions","followUpGroup","assignAssetNameToSuggestions","assignCategoryNameToSuggestions","setBoardDate","setResponsibleFromAllUsers","showMoreButton","suggestionid","getActionListForImprovementSuggestion","usersWithImages","loadMoreUsers","createImprovementActionItem","actionItem","altInputFormats","datepickerOpen","deleteActionItem","taskDescription","updateItemDescription","changeActionDate","autoGrow","baseScrollHeight","filterByUserPreference","preferences","filterPreferences","filteredId","filteredAssetId","setAssetFilterPreferences","setProjectFilterPreferences","setGoalFilterPreferences","setCategoryFilterPreferences","hiddenStatus","setStatusFilterPreferences","myResponsible","filterSuggestions","resetProjectFilter","resetGoalFilter","resetAssetFilter","resetCategoryFilter","updateFilterPreferences","assetsToShow","getFilteredListByAssets","categoriesToShow","getFilteredListByCategories","hasValuesInListFilter","projectsToShow","getFilteredListByProjects","goalsToShow","getFilteredListByGoals","filterProject","toggleLikesFilter","filterCategory","addIfNotAlreadyInList","currentSuggestion","isPartOfFilteredContainer","indexfiltered","changedSuggestion","newPriority","roicategories","assetCost","assetGain","assetROI","roiperassetdata","cost","gain","valueSuffix","COMMON_COST","COMMON_GAIN","generateItemFilter","projectmodel","breakgoals","loadBreakthroughGoals","categoryChanged","changeProject","changeSuggestedBy","checkEstimatedCostOfInvestment","estimatedCostOfInvestmentIsInvalid","checkEstimatedGainOfInvestment","estimatedGainOfInvestmentIsInvalid","checkEstimatedTimeInvested","estimatedCostOfInvestmentHours","estimatedTimeInvestedIsInvalid","checkEstimatedTimeGained","estimatedGainOfInvestmentHours","estimatedTimeGainIsInvalid","toggleGoal","breakthroughgoalid","addMissingBreakthroughGoals","listColumns","translatedFilter","newFilter","translateOldFilter","appSettings","authentication","priorityStatusText","selectedPriority","confirmEvaluationStatusDialog","changedROIInfo","selectedResponsible","reponsibleDisplayName","updateUserLikeStatus","modifyGoal","relatedGoals","changedGoal","loadTeamGoals","isLiked","likeSuggestion","breakthrougGoalList","lenght","matchingSubgoalslist","unselectGoal","improvementStrategyGoal","toggleSubGoal","subgoal","breakThroughGoalId","breakthrougGoal","addMissingBreakthroughGoal","commentDate","improvementAttachment","toggleModifyGoal","isStringANumber","screenName","selectedBreakthrougGoals","statusDisplayText","statusDatabaseText","IMPROVEMENT_PLANNED","IMPROVEMENT_ARCHIVED","pri","priorityDisplayText","IMPROVEMENT_LOW_EFFORT_HIGH_EFFECT","priorityDatabase","IMPROVEMENT_HIGH_EFFORT_HIGH_EFFECT","IMPROVEMENT_LOW_EFFORT_LOW_EFFECT","IMPROVEMENT_HIGH_EFFORT_LOW_EFFECT","IMPROVEMENT_NOT_PRIORITIZED","trans","translateLabels","setStatusChanged","checkTimeInvested","costOfInvestmentHours","timeInvestedIsInvalid","checkTimeGained","gainOfInvestmentHours","timeGainIsInvalid","CheckEstimatedCostOfInvestment","checkCostOfInvestment","costOfInvestmentIsInvalid","checkGainOfInvestment","gainOfInvestmentIsInvalid","toA3","priorityChanged","projectChanged","setEvaluationStatus","evaluationStatus","setEvaluationTextChanged","totalComments","suggestionComments","improvementROI","COMMON_NO","COMMON_YES","DASHBOARD_CHANGE_STATUS","IMPROVEMENT_CHANGE_STATUS_CONFIRMATION","statusEvaluatedDate","newEstimatedCostOfInvestment","newCostOfInvestment","newEstimatedGainOfInvestment","newGainOfInvestment","roisuggestion","validGoalsForAsset","goalList","subgoalList","updateGoals","changedCategory","COMMON_UPDATE_STATUS","COMMON_CHANGE_STATUS","IMPROVEMENT_UPDATE_A3_STATUS","newstatus","affectedTaskIds","affectedA3TaskIds","affectedA3Ids","mySuggestionFilterActive","toggleMySuggestionFilter","isFilterLoaded","isOptionsLoaded","tableSorting","raiseTableParamsChanged","archivedFilter","removeArchivedInFilter","implementedDate","statusImplementedDate","tableParamsChanged","tableParamsSettings","columnListChanged","getDataDebounce","refreshIfExists","translateOldImprovementSettings","currentUserId","converted","myRegistration","dueDateFilter","statusImplementedFilter","pageNum","draggedSuggestionId","showPaging","fullscreenMode","hasFullScreenElements","isSettingsLoaded","toggleAllKanbanColumns","showNewColumn","showPlannedColumn","ShowInProgressColumn","showImplementedColumn","showEvaluatedColumn","setFilterOptions","columnListChangeHandler","filterWithTimePeriod","settingsChangedHandler","toggleKanbanColumnsBasedOnFilter","totalNumberOfImprovements","getValuesByStatus","statusFilter","drake","pageNumChanged","pageSizeChanged","containers","dragula","fromStatus","toStatus","checkAndReplace","datalist","existingSuggestion","dbSuggestion","setViewFieldsFromDb","getSuggestionDb","firstAttachmentFileInfo","replaceSuggestion","addSuggestionToStatusColumn","getUserLanguage","userprofile","setDateStyleToDeviations","getDeviationsForPeriod","getDeviationsByFilter","severityOptions","severityDB","archiveFilter","archiveOptions","setArchiveFilterPreferences","filteredTypeId","deviationtypes","setDeviationTypeFilterPreferences","setAreaFilterPreferences","myRegistrationFilterActive","consequenceFilterActive","deviationStatus","resetDeviationTypeFilter","resetAreaFilter","areasToShow","getFilteredListByAreas","typesToShow","getFilteredListByDeviationTypes","prjectsToShow","filteredSeverity","activeSeverityFilter","getArchiveDateListByOptions","archivedDate","deviationCategories","getExistingDeviation","existingDeviation","getProblemCategoriesWithDeviation","toggleMyRegistrationFilter","toggleConsequenceFilter","filterSeverity","filterDeviationType","filterArea","responsibleSetting","followupAssetId","descriptionUpdate","boardTableValues","getActionTableValues","getActionListForDeviation","createDevationActionItem","getTest","PagerElement","_pagesTotal","_currentPageSize","_currentPage","_pagesArr","_pageSizes","pagesize","setPageSize","decrement","increment","updateNums","createRenderRoot","customElements","define","defaultWrapperStyle","calcStyle","paddingStyle","wrapperStyle","titleEdit","DigiLeanThemeSelector","onSelect","themeStyles","HeartbeatIndicator","intervalId","connectorid","showlabel","lastheartbeat","_lastHeartBeat","parseDateFromString","setLast","getDiff","heartbeat","startInterval","checkIfStillAlive","lastBeat","searchEl","resultEl","footerEl","showArticle","showBackBtn","showResult","articles","articlePageId","articleUrl","showClearBtn","inputValue","learningMaterials","getPublishedMaterials","searchPhrase","questionText","backBtnClicked","clearBtnClicked","viewArticle","article","websiteUrl","foundArticle","businessUnitMembers","logOut","isCurrentUser","renew","getAccessToken","errorHandling","authInterceptorServiceFactory","authData","noAuth","Authorization","Connectionid","changeClockMode","updateTime","versionService","updateText","SYSTEM_UPDATE_TITLE","SYSTEM_UPDATE_TEXT","checkVersion","displayUpdate","getLatestVersion","currentVersion","acceptedFiles","fileParsedHandler","onpaste","getProjectHours","approveHours","unApproveHours","hoursService","showDetails","hasLoadedValues","isLoadingValues","queryOptions","activityCodes","projectHours","sumHours","totalHours","invoiceHours","printPdf","reactivateSettings","projectIdHoliday","projectIdLunch","createEmptyRows","projectRows","projectInList","approvedValues","isWeekApproved","checkApprovalStatus","calculateFlexitime","calculateHolidays","hoursTotal","invoicesum","isInvoiceable","currentDay","isApproved","hasProjectRow","rowSpan","hasParent","invoiceSum","normalhourssource","normalHoursSource","reg","totalregisteredhours","totalRegisteredHours","totalovertime","normalworkinghours","normalWorkingHours","flexitimeYTDSum","totalHolidayHours","totalHolidayDays","addLunchForThisWeek","updateGoal","moveStrategyGoal","deleteGoal","strategyGoalColor","strategyGoalName","getAssetList","selectAssetId","toplevel","loadStrategyMapByAsset","topNode","strategyMapNode","pdfPreview","preview","createMenu","showAccessPopup","createNodes","getCssText","draggedNodeId","droppedNodeId","ParentId","drawCollapseChart","sheet","createNode","cssFullText","rule","cssText","visionTemplate","goalTemplate","emptyIcon","addGoal","copyGoal","parentGoalId","siblingGoalId","siblingGoal","timeperiodAll","StrategyGoalId","timecolumns","newKPI","fiscalActive","setColumnYear","fiscalYearStart","companyfiscalmonthMoment","fiscalYearEnd","getValuesForSerie","monthlyValue","getTargetValuesForSerie","kpIs","diffFiscalMonth","fiscalYear","fiscalMonth","newkpi","toggleEdit","openKPIConfiguration","updatedKPI","addNewKPI","assetname","subGoalsModel","selectedGoalId","setPreseletedAsset","accessToAsset","setUpImprovementStatus","noImprovementRemaining","noImprovementImplemented","noImprovementDelayed","delayed","arcwidth","selectedValue","tot","accum","PI2","ctx","textBaseline","dmbChart","breakthroughgoals","currentfilter","allgoals","themeService","allColors","goalcreateChangeHandler","getAvailableColors","availableColors","goalType","modifyAsset","goaleditChangeHandler","resetColumn","endOfYear","placeTaskInColumn","daysoverdue","placeTaskFirstInColumn","openBoardTask","kpis","timePeriodYTD","loadDataSourceValues","ytdActualValue","lastValueMonth","lastValueYear","setTooltipData","dayperiod","lastActualValue","loadTargetDataSourceValues","getLastValue","getYTDLabel","currentMomentMonth","ytdPlannedValue","getMonthTimePeriod","lastPlannedValue","lastValueMonthLabel","kpiOperator","lastOnTarget","YTDOnTarget","ytdActualLabel","isSubGoals","activityLogLoaded","swapArrayElements","indexA","indexB","reloadBoard","moveUp","moveDown","moveLeft","moveRight","parentBoardId","boardAttribute","myDiv","resetName","newName","STRATEGY_MESSAGE_DELETE_GOAL_DESC","openTaskPopup","updateSortorderTask","existingColumn","existingCell","updateCommentsPosition","translateAndRecalculateTimeElapsed","scrollToBottom","commentCountChangeHandler","addedComment","isvisible","COMMON_TIMEELAPSED_MONTH","COMMON_TIMEELAPSED_DAYS","COMMON_TIMEELAPSED_HOURS","COMMON_TIMEELAPSED_MINUTES","COMMON_TIMEELAPSED_SECONDS","COMMON_TIMEELAPSED_NOW","wtf","a3Table","addA3ToTable","a3TableRow","a3Row","columnType","a3Columns","calculateA3Cells","a3TableRowId","a3TableItem","a3TableId","addColumnToA3s","createdA3","a3Model","updateEndEndDate","a3Project","a3ProjectInfo","currentOwner","updateMembers","metaData","hasCustomizedGroup","generatePreview","generatePreviewDebounced","logoUra3l","alltemplates","orgLanguage","getPublicTemplates","toggleLanguage","downloadTemplate","isCompleted","isEnglishSelected","isNorwegianSelected","isAllLanguagesSelected","filterOnLanguage","isViewTimeBoard","viewcontext","moveTaskToActionList","completeCallBack","isTaskPartOfA3","updateTaskStatusCount","refreshTasks","addTaskToActionList","removeTasksFromActionList","removeTaskFromActionList","hasLoadedTasks","actionTaskQuery","actionType","entityId","getActionTasks","okTaskQuery","toggleOpenA3","openBoardTasks","actionListContainer","toggleOpenBoardTasks","toggleOpenImprovement","toggleOpenDeviation","changeAsset","createNewTeamTask","createNewImprovement","createNewDeviation","targetBoard","isTaskPartOfBoard","refreshBoardTasks","compareBoardDate","toggleOpenBoard","filterByTags","goToBoard","isTaskPartOfDeviation","isTaskPartOfImprovement","improvementSuggestionIdId","templateOptions","setAdminPrivilege","dataAdminPrivilege","isDataAdmin","availableitem","getDeviationFilterDatasource","availablevaluelabels","COMMON_SOURCE","ADMIN_DATA_DATASOURCE_TARGETS","setRegistration","setType","assetErrorMessage","projectErrorMessage","areaErrorMessage","readonlywithfilters","setDeviation","updateVariantType","variant","getRelevantVisualizationTypes","visualizationTypes","getVisualizationTypeVariants","variants","standardTypes","getStandardVisualizationTypes","defaultType","charToBeRemoved","newVariant","COMMON_CREATE_NEW","getAssetName","getProjectName","getArea","getAllStatusValuesForPeriod","associatedWithDeviationType","label1","label2","label3","label4","hide1","hide2","hide3","hide4","timePeriodColumnForDeviation","showDeviationsForInternalSources","improvementOptions","showImprovementsForInternalSources","loadValuesForDataSource","previousValue","valueChange","isPositive","drawValues","shouldTrendBeUpdated","isPostiveChange","updateTrend","newDataValue","defaultSeriesType","tickPixelInterval","maxZoom","liveTrendValueEl","yAxisPlotLines","xAxisPlotLines","dateInSelectedTimeFrame","updateDataValue","setManualData","dataSerie","accumulatedValue","setGraphWidthBasedOnGraphtype","getDataGrouping","getExtremesFromAll","groupAll","dataGrouping","chartElement","Highstock","stockChart","rangeSelector","scrollbar","line","enableMouseTracking","forced","selectDefinition","selectDefinitionModalInstance","graphContent","graphContentInner","showRegression","shouldDataBeRefreshed","manualOptions","timePeriodGroupQueryOptions","datafound","getTargetValueFromOtherDatasource","targetResult","toggleShowRegression","updatedDecimal","intervall","setTimeFrames","setupMinMax","redcolor","greencolor","setupNoneGroupingChartData","getValuesForNoneGrouping","setDefaultGroupingInterval","valueDecimals","elementMin","elementMax","setTimeSettings","setDayTimeSettings","setWeekTimeSettings","newDecimal","updateMin","updateMax","simple","showTotal","groupingElementFound","capitalizeFirstLetter","string","stackingElement","stackedBarChart","xAxisId","distinctStackedElements","stackedElement","elementsWithGivenStackedValue","foundValue","toggleShowTotal","pareto","dataPoint","totalForPeriod","displaydata","sortedCategories","sortedValues","baseSeries","autoSize","getDataAndDrawChart","drillDownSeries","pointName","drilldown","drillDownSerie","drillDownPoint","drawPieChart","selectDataSourceDebounced","drilldownSeries","allowPointSelect","COMMON_EDIT_TITLE","setTargetHeight","demoData","tickmarkPlacement","getValueDate","toDay","year1","month1","date1","mytime","checkMandatoryField","hstep","mstep","combinedDateTime","year2","month2","date2","pieElement","sliced","highcharts","debounceSelectDataSource","settingsService","hasLoadedSource","loadDataSource","registrationToggle","showTargetGoal","timeFramesYear","timeFramesMonth","timeFramesWeek","timeFramesDay","setTimeframes","toggleShowTargetGoal","dataSeriesModalInstance","setOtherDatasourceTargetResultForPeriod","targetsum","isoWeeks","setInternalTargetResultForPeriod","targetresult","checkSettings","todo","nextWeekworkList","nextweekworkList","tasklist","getDataForPeriod","periodsBackInTime","updatedperiodsBackInTime","newEndDate","startDateNext","endDateNext","periodNext","createBoard","idName","applySetting","boardSettings","getDeviationSeveritySetting","getParetoSettings","getActionListSetting","openNewTask","countdown","showCountdown","editConfiguration","resultColumn","colSettings","columnSettings","createColumns","toogleShowCountdown","showcountdown","updatedcountdownMinutes","updateCountdownMinutes","getImageUrl","matchingApp","kpiTypes","smartTable","loadSmartTable","valueText","resizeDebounce","smarttable","createdRow","addColumnToRows","tableRow","publishWeekChange","froalaStyle","froalaOptionsToolbar","froalaOptionsEditInView","charCounterCount","customerEvents","customersOnline","totalUsersOnline","showClients","currentCustomer","clients","hasLoadedAllUsers","updateCustomerOnlineCount","customerOnline","updateTotalUsersOnline","usersOnline","companyOnline","chartContainer","showDataEntryButton","hiddencolumns","showDateWithTime","valueDateFormats","valueDateFormat","toggleDataEntryButton","toggleShowTime","checkIfFiltered","getColumnVisibility","datafield","initDataList","fontSmiley","smileyStyle","selectedSmiley","lastmodifiedBy","smiley","changeSmiley","updateComment","clearComment","totalSuggestion","browserData","dataLen","COMMON_MY_SUGGESTIONS","IMPROVEMENT_TOTAL_SUGGESTIONS","charts","wheel","addFilterClickEvent","filterByAsset","filterMyStatusImprovement","assetcategories","updatededBrowserData","firstlinecategories","onLegendClick","getMaterialLink","filteredMaterials","isAllSourcesSelected","isInternalSelected","isExternalSelected","filterOnSource","allMaterials","materiallink","sortedList","thirtyDaysSince","publishDate","firstInList","secondInList","currentMaterial","identifyNew","toggleContentSource","getLearningMaterial","getVisitedItems","editLearningMaterial","getUserHelpLearningMaterial","getHelpPage","getPageComments","addPageComment","deletePageComment","commentid","btnEnabled","errorHandler","printPage","pageComments","showAddCommentVisible","loadList","selectCategory","flexiBoards","projectPortfolios","member","favorites","memberboard","needToUpdate","checkBoard","accessA3","checkA3","memberportfolio","checkPortfolio","memberproject","checkProject","flexiboards","matchingboard","matchingportfolio","dashboardtitle","addFn","mentions","selectedCommentId","saveFn","deleteFn","isDeleting","showAddReply","replyToComment","deleteFunction","isDeleted","hasChildren","addReply","saveFunction","savedReply","timeSinceComment","onUpdate","froalaEditor","tribute","lookup","fillAttr","menuItemTemplate","initials","selectTemplate","editor","attach","mentionsElements","mention","getMentions","contents","mentionUsers","um","$value","senderName","newReply","uploadTemplateAsNewFile","fileContent","urlSas","insertLabel","editLabel","RegisterCommand","refreshAfterCallback","newFileName","openEditDialog","templateSvg","er","showTemplates","newSvg","$img","pathname","fetchSvg","urlSAS","uploadToBlob","colorsBackground","colorsStep","colorsText","tabSpaces","videoUpload","imageUploadRemoteUrls","videoMaxSize","htmlAllowedTags","htmlAllowedEmptyTags","currentHtml","pastedImage","imageToUpload","isInsertImage","uploadInsertedImage","reader","popups","hideAll","blob","newHtml","uploadBlobSrcImage","isEditorActive","isSameNode","animationFinished","showAnimation","getJob","getJobTypes","langCode","onlyError","logs","skip","take","getLogs","checkMidnight","dateNow","dayNow","getDay","DigiLeanLangState","froalaInsertDiagram","connectionState","toggleConnectionState","showClock","navigation","showFullscreenOption","showNewTask","showNewSuggestion","showNewDeviation","showNewA3","toggleNotificationBubbles","changePassword","userConnectedCssClass","retrieveUserData","loadSettings","userInfo","smallImageUrl","userProfileLoaded","accountEndDate","subscriptionEndDate","missingAccountSetup","accountowner","hasActiveSubscription","allowOutsideClick","openEndedTrialDialog","openContactSalesDialog","updateNavigationModules","connector","subscribeProxyEvents","notification","customerEvent","A3Template","jobId","connectorId","competence","connectSystemHubEvents","Connected","addFeedBack","startMidnightTimer","folders","customDashboards","movedRootBoard","getLearningMaterialByLanguage","userlanguage","learningmaterial","learningMaterialLink","Board","Improvement","Deviation","Project","A3","Learning","Competenceball","Hours","Strategy","getDashboards","folderstructure","boardsWithoutFolder","folderWithBoards","sideMenu","disableFeedbackToDigiLean","dropSuccessHandler","dropValidateRoot","onRootDrop","onFolderDrop","boardOnRoot","boardInFolder","removeBoardFromCurrentLocation","newFavorite","addFavoriteFromUiRef","DASHBOARD_DELETE_FAVORITE","DASHBOARD_DELETE_FAVORITE_DESCRIPTION","anyAdminPrivilege","isBusinessunitAdmin","isImprovementAdmin","isProjectAdmin","isA3Admin","isLearningMaterialEditor","addTemplate","updateTemplate","publishTemplate","unPublishTemplate","updateSortOrder","addStep","updateStep","deleteStep","a3Favorites","FavoriteA3s","getA3Favorites","updateFavoriteA3s","addA3ToFavorites","removeA3FromFavorites","a3ToRemove","A3Filter","deleteA3Filter","deleteUserPreference","newa3","newa3Counter","hasImprovementTasks","memberAssets","assetFilterActive","templateFilterActive","myA3sFilterActive","participantFilterActive","improvementFilterActive","deviationFilterActive","addFavoriteNavigationMetadata","myAssets","resetTemplateFilter","initialLoads","setFavorites","currentA3","a3TemplateId","filteredStatus","myA3s","selectedAssetIds","selectedProjectAssets","selectedProjectAssetIds","selectedTemplates","selectedTemplateIds","activeStatusFilter","hasValueFilter","memberlist","filteredA3","shouldFilter","filterMember","a3Fav","toggleMyA3sFilter","toggleParticipantFilter","toggleImprovementFilter","toggleDeviationFilter","filterTemplate","showAllA3s","statusFilterActive","showStatus","statusObj","showImprovementTasks","showDeviation","selectMyA3s","isDeleteActivated","activateDelete","deActivateDelete","isImprovementSuggestion","isDeviation","deleteSelected","A3ToBeDeleted","setSelectedLang","commitStepChanges","templateStyle","itemToSave","SendA3TemplateUpdated","isKaizenAdmin","defaultStyle","selectedStep","stepChangesDebounced","publishedTemplate","selectedCat","parsedStyle","editStep","includeProjectInfo","saveTemplateInfo","languageChanged","updateColors","stepsSortableOptions","newA3FromTemplate","allTemplates","projectassets","projectAssetId","projectasset","projectassetmodel","changeUseProjectGroup","showAssetUsers","noAssetTemplate","isPrivate","currentuserid","selectedVersion","currentStepCssState","goToStrategyHub","commentCountChangedHandler","linkCountChangedHandler","calculateFileAndLinkCount","memberoptions","updateMetaData","updateA3Data","setSelectedCategory","a3fav","fileAndLinkCount","selectedTabIndex","checkTabData","anotherUserIsEditingStep","isCurrentUserChangingStep","stepId","parentActivity","milestoneActivityRequest","milestonelogItems","userEditingStep","setApproveButton","hasStepUpdated","lastModifiedByUserId","allowChanges","changedBy","approvedStep","a3title","projectCompletionDateChanged","saveProjectdata","projectEndDateChanged","a3IdArray","DASHBOARD_CHANGE_SUGGESTION_STATUS","A3_UPDATE_IMPROVEMENT_STATUS","insertNode","spn","newApprovedStatus","approved","stepDescriptionId","adjustZoom","scrollToTop","a3infoWidget","hasEditRight","layoutPositions","stepType","pdfCompletedlabel","activeboards","loadTemplates","A3_MESSAGE_DELETE_TEMPLATE_CONFIRMATION","openDesigner","openTemplateStore","navigateToDesigner","getEstimated","estimatedtimePeriod","estimatedtimeframe","estimatedoptions","estimatedperiodChangedHandler","ADMIN_MESSAGE_DELETE_AREA_CONFIRMATION","noAccess","addClient","client","newClient","editClient","clientId","clientToEdit","clientName","onCustomerChange","customerSelected","customerName","newSecret","generateNewSecret","secret","expireSecret","secretId","selectedCustomerChanged","changeScopesDialog","allowedScopes","scopesDialog","scopesChange","findAndMapCollapsed","currentAssetTree","assetCurrent","findCurrentAssetTreeById","isCollapsed","foundInChildren","ADMIN_MESSAGE_DELETE_CONTACT_CONFIRMATION","assetsTree","newAsset","usersWithNoAssets","showUsersWithNoAssets","setAssetType","createNewAsset","toogleUsersWithNoAssets","onAssetsUpdated","updatedAssetTree","refreshAssetTree","saveAssetTree","openAccessForEdit","treeOptions","sourceNodeScope","destNodesScope","destIndex","draggedAsset","droppingToParent","dropped","newIndex","dest","movedAsset","nodeScope","onClickAssetMembers","GENERAL","BUSINESSUNIT","assetTree","assetCloneForEdit","isNewAsset","reloadWithCollapsedState","msgIsError","otherAssetsList","parentAssetModel","resetMsg","displayAssetType","availableAssets","onAssetChanges","resetAsset","setInfoMessage","getBoardText","idTranslated","getTitleText","getA3TitleText","deleteAsset","parentAsset","openWarningPopup","taskboards","updatedAsset","noOfDashboards","noOfPortfolios","noOfTeamBoards","noOfProjects","noOfA3s","projectportfolios","azureGroupLookup","externalId","externalName","clearAzureGroup","parentChangeHandler","newParent","openAssetParticipantsForEdit","getCurrentLogo","logo","selectedTab","selectedTabName","logoId","hasTab","modulesService","selectedFiscalmonth","fiscalmonth","setFiscalmonth","goToLearningPage","helpLink","allowedModulesConfig","allowedModules","changeCurrency","changeFiscalMonth","fiscalmonthNo","toggleModule","hasActivated","hasDeActivated","redirectToDataList","reloadPage","useAD","teammembers","setupInfo","Modules","trialUsers","newTrialCustomerSetup","newUser","isNewUser","password","confirmPassword","isSupport","isApiUser","isInfoScreenUser","isMobileUser","existInAnotherInstallation","sendMail","mail","reciever","hidefroala","setAll","allSelected","appInstallations","sendPushNotification","selectedChanged","actionTitle","clearActive","ADMIN_MESSAGE_DELETE_CATEGORY_CONFIRMATION","currentPassword","errormsg","customerConnectionstringNames","customerDataConnectionstringNames","customerStorageConnectionstringNames","deployCustomer","connectionStringName","dataConnectionStringName","storageConnectionStringName","isEnabled","isSelectedModule","isSelectedLang","deployingInProgress","deploy","selectedModules","deployedCustomer","dbs","Customer","CustomerData","StorageAccount","mUsers","masterDbUsers","cUsers","customerDbUsers","msgsStr","disableUsers","supportUser","createSupportUser","adminUser","productId","productPartName","productName","quantity","selectedProduct","products","allproducts","productChanged","product","partName","startDateChanged","endDateChanged","savedOrder","defaultAllowedModules","defaultAllowed","allAllowedModules","extraModules","otherModules","isAllowed","showEditCustomer","authOptions","orders","toggleArchived","closedAccounts","archivedCustomersinfo","back","clearActiveCustomer","isDeployed","isNewCustomer","customDomain","authenticationMode","isPaying","pricePerUser","loadCustomers","openAccount","monthlycustomers","yearlycustomers","othercustomers","freeaccounts","resignation","customersinfo","showEndDate","statusCounter","editCustomer","customerinfo","customerEdit","azureAdTenantId","azureAutoSignup","customerProductOrders","mods","changeSubscription","changeBilling","bill","newCustomerAccount","createdCustomer","customerAccount","customerData","openAllowedModulesDialog","openCreateSupportUserDialog","openDeployDialog","openDisableDialog","openCustomerOrderDialog","hasLoadedCustomerStatus","accounts","daysLeft","soonPaymentTime","invoices","invoicesCreated","invoiced","customerNumber","customerInvoiced","sumInvoiced","taxInclusiveAmountCurrency","getInvoiceForCustomerNumber","invoiceCompleted","sumIncTax","lastMonth","invoiceNumber","addConnector","updatedLabel","lists","editList","matchingList","canDelete","datasourcetext","deviationtypestext","getDataSources","ADMIN_MESSAGE_DELETE_DATA_CONFIRMATION","addDataSource","sourceType","unitsOfTimeOfTime","displayUnitOfTime","isConfigurable","liveTrendSettings","selectedDataListId","updateConfigurationData","attributeTypes","dimensions","selectedDimension","isConfigured","checkAvailableDimensions","isSetupMode","dataSourceTag","newTagId","savedTag","propertyChanged","sendDataSourceUpdated","allAttributeTypes","isFlexible","dataSourceUpdated","flexibleDim","selectedDatalistItems","selectedDataListChanged","available","COMMON_INFO","ADMIN_DATA_DATASOURCE_ATTRIBUTES","elementId","isAttributeRequired","clearElementRegistration","editElement","changedElement","getActiveVisualizationTypes","cancelaction","deletepermanent","deleteVisualizationType","indexFiltered","deleteDateStatus","selectedPermission","selectedBusinessUnits","getPermissionsForType","permissions","modifyPermissions","specificSelectedBusinessUnits","deviationTypeSelectedBusinessUnits","DeviationTypeId","BusinessUnits","updateDeviationTypePermissions","permission","addType","deleteType","deleteDeviationType","severityNotSpecifiedDesc","severityLowDesc","severityMediumDesc","severityHighDesc","allSeverities","getTranslationLabel","validConsequences","consequenceId","getConsequencesForType","validConsequencesForType","getSeveritiesForType","setSeverityTranslationLabel","addDeviationTypeConsequence","deleteDeviationTypeConsequence","updateSeverityDescription","customLanguageLabelId","labelTranslation","updateDeviationSeverityTranslation","allCategories","categoryList","showEdit","setFollowUpGroup","newCategory","assetChanged","setupAsset","createProblemCategory","loadCategories","updateProblemCategory","newSubCategory","gories","deleteProblemCategory","getTranslationsWithProblemCategories","nestable","structure","saveCategoryTree","clearActiveCause","isNewCause","loadCauses","getTranslationsWithCauses","editCause","ADMIN_MESSAGE_DELETE_CAUSE_CONFIRMATION","deleteCause","createCause","updateCause","ADMIN_MESSAGE_DELETE_CONSEQUENCE_CONFIRMATION","deleteConsequence","getTranslationsWithConsequences","createConsequence","updateConsequence","getCurrentSvgFromSettings","svgChanged","debouncer","flush","openEditor","diagramEl","triggerEdit","ADMIN_MESSAGE_DELETE_CUSTOMER_CONFIRMATION","deleteProjectRole","newRole","createNewRole","newrole","ADMIN_RESTORE","ADMIN_RESTORE_BOARD_DESCRIPTION","getActiveBoards","ADMIN_DELETED_BOARD_PERMANENTLY","ADMIN_DELETED_BOARD_PERMANENTLY_DESCRIPTION","trialAccountSetup","COMMON_ASSETS","COMMON_PROJECTS","updateProjectAccess","isupdated","updateProjectMemberAccess","isProjectOwner","ownerCheckboxClicked","isOwner","viewerCheckboxClicked","showEditUser","numberOfMobileUsers","isEnterpriseAccount","businessUnitFilter","getAvailableModules","roleDB","updateBusinessunitUserCounters","availableBusinessUnitLicenses","getRoleStats","loadAccountInfo","isFilterBusinessUnitActive","canAddNewUser","filterModule","updateBusinessUnitFilter","grantAllPermissions","removeAllPermissions","translationLicensesData","noOfUsers","admincount","businessunitadmincount","boarddesignercount","dataadmincount","improvementadmincount","deviationadmincount","athreeadmincount","projectadmincount","strategyadmincount","learningadmincount","messagewritercount","roleCount","activemobile","deleteUser","maxUserLicencesText","maxMobileUserLicencesText","isUsingAD","selectedBusinessUnit","initialUserName","initialEmail","initialBusinessUnitId","hasAzureAdModule","toggleUseAdmin","increaseMobileLicences","increaseRegularLicences","clearActiveUser","setAdminCheckboxes","businessUnitChanged","checkBusinessunitAdminSetting","canAddUser","canAddMobileUser","isMessageWriter","isStrategyAdmin","isLearningAdmin","getBusinessUnitAsBusinessUnitAdmin","loadAccount","setCorrectAdminSettingsBeforeSave","canAddAnyUser","confirmMobileLicences","no","increasedNumber","confirmRegularLicences","checkUserName","ActiveUser","ExistInCurrentInstallation","setTypeRegular","setTypeMobile","ExistInAnotherInstallation","checkExistingRights","changeUser","registerNewUser","resetPassword","azureLookup","userPrincipalName","givenName","surname","azureAdObjectId","setupAllColumns","licenses","addBusinessUnitToFilter","showCol","ADMIN_MESSAGE_DELETE_USER_CONFIRMATION","editUserHandler","eventdate","taskCurrentBoardId","cancelTranslation","selectedBoardType","reloadBoards","getDashboardTableValues","searchWord","boardTypeFilter","openBoardDesigner","ADMIN_DELETED_BOARD_TEMPLATE_DESCRIPTION","participanttype","editParticipants","originalAssetId","originalParticipantType","loadAllUsers","loadUsersForAsset","isSystemAsset","updateSelection","toggleEditParticipants","setProjectAsset","changeParticipantType","loadUserForAsset","addParticipants","removeParticipants","noAccessVisible","accessInfo","activities","subscribeToEvents","getLatestActivity","updateFeedTimeStamp","updateTimer","hasChanged","handleAllUsersOnline","totalConnections","totalTeamsUsersOnline","totalNumberOfConnections","maxClients","teamsClients","teamsCount","allClients","countBy","progressBackground","progressBorderColor","mobileCount","emailCount","actionResults","updateCounters","countUpOptions","mobile","hasAction","newAction","feed","noOfFeeds","validEvents","isSupportedEvent","alreadyInList","isNotRelevant","openActivitySelector","addSuggestionLike","showAllActivities","toggleActivity","widgetResizeDebounced","changeRotateInterval","keyPress","keyEvent","ADMIN_MESSAGE_DELETE_DASHBOARD_CONFIRMATION","affected","changeApp","gridsterContainerHeight","resizeWidgetsHosts","resizeWidgetHost","maxWidget","widgetElement","calculateTaskStatuses","tasksOpen","tasksCompleted","tasksInComplete","showActionListTasks","idInList","updateActivityTimeSpan","initializeAssets","followupAssets","setAssetFilter","setFollowupAssetFilter","setAreaFilter","setCategoryFilter","setConsequenceFilter","setCauseFilter","setProjectFilter","selectedFollowupAssets","setDeviationTypeFilter","archivedFilterActive","toggleArchivedFilter","openFollowUpGroupFilter","copyOfFollowupAssets","filteredAssets","openGroupFilter","copyOfAssets","filterFollowupAsset","filterConsequence","filterCause","deviationTypesWithUserLanguage","getTotalNumberOfDeviations","getDeviationTypeTranslation","showAttachments","selectedReportedAsset","currentSeverity","showArea","showProject","problemCategory","listelement","deviationtypeTitle","hasCustomFields","getCustomFields","deviationTypeFieldId","registeredconsequence","setConsequences","reasons","setProblemReasons","severityNotSpecifiedDescription","severityLowDescription","severityMediumDescription","severityHighDescription","setSeverityDescription","changeSeverity","unArchive","modifyCustomField","customFieldChanged","actionListCount","severityColors","severityDescription","problemCategoryChanged","problemReasonChanged","consequencesChanged","displayLevel","selectedReportedAssets","reportedassetmodel","extendFollowupAssetIfAssetOwner","Categories","ProblemCategoryId","ProblemCategory","toggleShowAttachments","datepickerDueDateOpen","datePickerDueDate","isEvaluated","showLevel","reportedAssetChangeHandler","selectedOwnerChanged","statusDatabase","DEVIATION_IN_PROGRESS","DEVIATION_RESOLVED","COMMON_REJECTED","notCompletedActionItems","DEVIATION_CHANGE_STATUS_CONFIRMATION","showA3","createNewConsequence","newConsequence","deviationComments","newCol","selectedProblemReasons","currentProblemReasons","updateConsequences","updateCustomFields","deleteDeviation","translateOldDeviationSettings","showInProgressColumn","showResolvedColumn","showRejectedColumn","getOngoingByFilter","totalNumberOfDeviations","oldStatus","rollbackStatus","checkUncompletedActionItems","dbDeviation","problemCategoryTitle","getDeviationDb","replaceDeviation","currentDeviation","severityInformation","newDeviation","selectedConsequence","datetimepickerOpen","datetimePicker","changeRegisteredBy","followupassetmodel","followUpAssetChangeHandler","isResolved","resolveDeviation","checkIfValidate","isAnonymous","userProvider","fieldId","severityId","showNoAccessPopup","getUserListForDeviation","categorytree","getUserlist","getStackedDeviationGroupedSum","visualizationPeriodQuery","visualizationYearQuery","visualizationDeviationYearQuery","loginData","standard","hasImprovementAccess","hasLearningAccess","recommendLearning","getMyProfile","learningMaterialTitle","updateProfilePhoto","notifications","actions","targetAction","updateNotificationWithActionData","updateNewAlertCounter","newAlerts","partOfList","openNotification","notificationid","notificationTime","memberassets","isRelevantMessage","itemlist1","itemlist2","assetMatch","resetAlertCounter","digiLeanVersion","digiLeanBuildVersion","hasVisitedSettingsPage","setSelectedLanguage","updateProfile","profileInfo","originalImage","croppedImage","croppedImageUrl","cropSizeChanged","dataurl","bstr","u8arr","dataURLtoBlob","selectedNotificationId","loadNotifications","allNotifications","hasNotification","toggleNotification","setAllAsRead","seenTime","payLoadText","markAllasRead","archiveNotfication","ImprovementSuggestionId","LearningItemId","learningMaterial","getMyFeedBack","feedbacks","fb","addcomment","DeviceInfo","use24HourTimeFormat","verbose","cronexp","humanReadable","DigileanDiagramEditor","defaultLibraries","urlParams","drawDomain","diagramsUrl","libraries","frameStyle","frame","self","getFrameStyle","getFrameUrl","postMessage","handleMessageEvent","handleMessage","configureEditor","initializeEditor","saveSvgAndExit","exit","export","stopEditing","showTemplateDialog","draft","svgBase64","decode","autosave","saveAndExit","modified","messageKey","frameUrl","divEl","setSvgImage","svgEl","removeAttribute","dispatchSvgChangedEvent","isEditPossible","openTemplateDialog","setHeightAndWidth","svgHeight","svgWidth","triggerTemplate","svgInput","setSvg","toggledEditViewMode","setSettingsInitially","resizeSvg","settingsNow","themeChanged","exitNoSave","editorEl","fetchTemplate","loaddata","ADMIN_MESSAGE_DELETE_CONNECTOR_CONFIRMATION","deletedConnector","startConnector","stopConnector","toTimeString","jobs","jobtypes","loaddatas","updateConnector","uptConnector","addJob","ADMIN_MESSAGE_DELETE_JOB_CONFIRMATION","deletedJob","runJobNow","errorsExpanded","logsExpanded","cronExpression","jobTypes","cronOptions","formInputClass","formSelectClass","formRadioClass","formCheckboxClass","hideMinutesTab","hideHourlyTab","hideDailyTab","hideWeeklyTab","hideMonthlyTab","hideYearlyTab","hideAdvancedTab","use24HourTime","hideSeconds","newjob","cronFormat","updateJob","jobUpdated","formatError","$name","newJobPart","jobPart","jobPartType","jobParts","onJobPartUpdate","jobpartUpdated","jobparts","EditJobPartDialog","nameChange","configChange","JobRunStateViewer","Running","Success","Completed","Failed","_timerInterval","jobrun","_jobrun","removeTimer","started","finished","diffS","diffM","ConnectorStateViewer","NoRun","RecentError","getLogsPaged","typeFilter","company","stateLastDay","openLastErrorLog","showNumRuns","runs","reloadDebounced","connectorName","getJobData","getLogData","logData","logtypes","curr","getLogDataFiltered","_showJobPartId","showjobpartid","Warning","jobstartstop","JobStarted","JobFinished","jobPartId","showFullName","big","threeletters","setMonthNames","changeYear","changeToMonth","JobpartsAdmin","openConfigEdit","dialogEl","emitUpdate","jobpart","capJob","showRuns","updateOneJobRunByLog","runId","clonedJob","runExists","jobPartRun","updateRunByLog","newJobPartRun","newRun","JobFailed","refreshRunLog","jobRun","getJobRunLogs","JobMonitorRow","numRuns","_setup","logEvents","_handleLog","jobSetup","updateRunFromLog","jobMonitor","visibleDetails","getRuns","monitor","openLogDialog","closeLbl","openLog","toggleDetailsVisible","updatedData","updateNextRunTime","nextRun","nextTime","jsonString","configLbl","showConfig","ConnectorMonitorTable","jobsSetup","MonitorJobLog","logsloaded","_hoisted_6","performSearch","showError","searchTerm","lookupUserAd","onKeyup","department","jobTitle","azGroups","lookupGroupAd","previousPeriod","goalindex","kpiindex","topAsset","UserAzureLookupCe","UserAzureLookup","GroupAzureLookupCe","GroupAzureLookup","strategyFlexibleBowlerChartCe","strategyFlexibleBowlerChart"],"sourceRoot":""}