{"version":3,"file":"app-afb6e809.b92c98188c0d8df1.bundle.js","mappings":"uNAGIA,E,MAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOC,GAAI,s/BAAu/B,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,sEAAsE,MAAQ,GAAG,SAAW,yPAAyP,eAAiB,CAAC,qtCAAutC,WAAa,MAEtoF,S,2DCPAD,EAAOE,QAAU,i+L,wOCYV,IAAMC,EAAN,MAQNC,YAAoBC,EAAiCC,EAAwBC,EACpEC,EAAkCC,EAAoDC,GAD3E,KAAAL,OAAAA,EAAiC,KAAAC,OAAAA,EAAwB,KAAAC,WAAAA,EACpE,KAAAC,YAAAA,EAAkC,KAAAC,sBAAAA,EAAoD,KAAAC,IAAAA,EARxF,KAAAC,OAAiB,OAEjB,KAAAC,WAAqB,GAEpB,KAAAC,cAAgC,GAEhC,KAAAC,oBAAyC,GAGhDC,KAAKC,YAAc,QACpB,CAEAC,iBACCF,KAAKG,aAAe,CAAEC,KAAM,aAAcC,UAAW,aAErDL,KAAKF,cAAgB,CACpBE,KAAKV,OAAOgB,UAAUN,KAAKC,YAAc,sBAFnBM,GAAcP,KAAKQ,kBAAkBD,KAG3DP,KAAKV,OAAOgB,UAAU,6BAA6B,KAAON,KAAKS,uBAAuB,KAEvFT,KAAKD,oBAAyCC,KAAKR,WAAWkB,SAC9DV,KAAKW,0BACN,CAEAT,iCACCF,KAAKN,sBAAsBkB,wBAC3BZ,KAAKD,0BAA4BC,KAAKN,sBAAsBmB,mBAC5DC,QAAQC,IAAI,gBAAkBf,KAAKD,oBACpC,CAEAG,8BACC,IAAIc,EAAkChB,KAAKD,oBAAoBkB,KAAIC,GAAQA,EAAKhC,KAE5EiC,EADanB,KAAKR,WAAWkB,SAASO,KAAIC,GAAQA,EAAKhC,KAChCkC,QAAOF,GAAQF,EAAsBK,QAAQH,GAAQ,IAChF,GAAIC,EAAUG,OAAS,EAAG,CACzB,IAAIC,EAAiCvB,KAAKR,WAAWkB,SAASc,MAAKN,GAAQA,EAAKhC,IAAMiC,EAAU,KAChG,GAAeM,MAAXF,EAAsB,CACzB,IAAIG,QAAwB1B,KAAKN,sBAAsBiC,4BAA4BJ,GACnF,GAAuBE,MAAnBC,EAIH,OAHAZ,QAAQC,IAAI,0BAA4Bf,KAAKD,qBAC7CC,KAAKD,oBAAoBf,KAAK0C,QAC9BZ,QAAQC,IAAI,yBAA2Bf,KAAKD,oB,EAK/Ce,QAAQc,KAAK,2BACd,CAEAC,aACC7B,KAAKF,cAAcgC,SAAQC,GAC1BA,EAAaC,WAEf,CAEQxB,kBAAkBD,GACzBP,KAAKH,WAAaU,CAChB,CAEIL,kBAAkBqB,GACxBvB,KAAKR,WAAWyC,WAAWV,EAAQrC,IAQnCc,KAAKV,OAAO4C,QAAQ,oCAOpBlC,KAAKT,OAAO4C,SAAS,WAAWZ,EAAQrC,eAEzC,CAEOgB,aAAakC,GACnBtB,QAAQC,IAAIf,KAAKP,mBACXO,KAAKP,YAAY4C,OAAOD,GAAYE,MAAKC,IAC9CvC,KAAKJ,OAAS2C,EAAO3C,OACrBI,KAAKG,aAAeoC,EAAOpC,YAAY,GAEzC,CAEQqC,WAAWC,GAClB,OAAO,eAA6BA,EACrC,CAEQC,oBAAoBC,EAAwBC,GACnD,OAAOA,EAAmB,EAAI,GAAGD,OAAqBC,IAAqB,EAC5E,CAEAC,UAAUC,EAAiBC,GAE1B,OAAID,IAAWC,EAEP,wBAGO,IAAXD,EACI,uBAGD,uBACR,GA3GY1D,E,mUAAe,EAD3B,EAAA4D,W,kIAS4B,IAAiC,KAA4B,IACnE,IAA4C,IAAkC,QATxF5D,E","sources":["webpack://client-app/./src/app/project/project-overview/project-overview.scss","webpack://client-app/./src/app/project/project-overview/project-overview.html","webpack://client-app/./src/app/project/project-overview/project-overview.ts"],"sourcesContent":["// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".projects-overview-list{overflow:auto}.projects-overview-list .headers{position:sticky;top:0;grid-template-columns:minmax(225px, 1fr) 120px repeat(2, 175px) repeat(2, 120px) 80px 110px repeat(2, 150px) minmax(120px, 1fr)}.projects-overview-list .headers .cell{height:3em !important;background-color:#fff}.projects-overview-list .main{overflow:visible}.projects-overview-list .main .element{grid-template-columns:minmax(225px, 1fr) 120px repeat(2, 175px) repeat(2, 120px) 80px 110px repeat(2, 150px) minmax(120px, 1fr)}.projects-overview-list .main .element .cell{height:2.5em !important}.projects-overview-list .main .element .overview-missing-all{color:red}.projects-overview-list .main .element .overview-missing-some{color:#ffc300}.projects-overview-list .main .element .overview-missing-none{color:#007e00}.projects-overview-list .cell{border-left:1px solid #d3d3d3;border-right:1px solid #d3d3d3}.projects-overview-list .cell:first{border-left:0px}.projects-overview-list .cell:last-child{border-right:0px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/project/project-overview/project-overview.scss\"],\"names\":[],\"mappings\":\"AAIA,wBACC,aAAA,CACA,iCACC,eAAA,CACA,KAAA,CACA,+HANsB,CAOtB,uCACC,qBAAA,CACA,qBAAA,CAIF,8BACC,gBAAA,CACA,uCACC,+HAhBqB,CAiBrB,6CACC,uBAAA,CAED,6DACC,SAAA,CAGD,8DACC,aAAA,CAGD,8DACC,aAAA,CAIH,8BACC,6BAAA,CACA,8BAAA,CAED,oCACC,eAAA,CAED,yCACC,gBAAA\",\"sourcesContent\":[\"@import \\\"src/resources/customized-styles/variables\\\";\\r\\n\\r\\n//First and last column can scale in width, the rest are fixed.\\r\\n$grid-template-columns: minmax(min(225px), 1fr) 120px repeat(2,175px) repeat(2, 120px) 80px 110px repeat(2, 150px) minmax(min(120px), 1fr);\\r\\n.projects-overview-list {\\r\\n\\toverflow: auto;\\r\\n\\t.headers {\\r\\n\\t\\tposition: sticky;\\r\\n\\t\\ttop:0;\\r\\n\\t\\tgrid-template-columns: $grid-template-columns;\\r\\n\\t\\t.cell {\\r\\n\\t\\t\\theight:3em!important;\\r\\n\\t\\t\\tbackground-color: white;\\r\\n\\t\\t}\\r\\n\\t}\\r\\n\\r\\n\\t.main {\\r\\n\\t\\toverflow: visible; //Overridden from generic css-grid-table implementation\\r\\n\\t\\t.element {\\r\\n\\t\\t\\tgrid-template-columns: $grid-template-columns;\\r\\n\\t\\t\\t.cell {\\r\\n\\t\\t\\t\\theight: 2.5em!important;\\r\\n\\t\\t\\t}\\r\\n\\t\\t\\t.overview-missing-all {\\r\\n\\t\\t\\t\\tcolor: #ff0000;\\r\\n\\t\\t\\t}\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t.overview-missing-some {\\r\\n\\t\\t\\t\\tcolor: #ffc300;\\r\\n\\t\\t\\t}\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t.overview-missing-none {\\r\\n\\t\\t\\t\\tcolor: #007e00;\\r\\n\\t\\t\\t}\\r\\n\\t\\t}\\r\\n\\t}\\r\\n\\t.cell {\\r\\n\\t\\tborder-left: 1px solid lightgray;\\r\\n\\t\\tborder-right: 1px solid lightgray;\\r\\n\\t}\\r\\n\\t.cell:first {\\r\\n\\t\\tborder-left: 0px;\\r\\n\\t}\\r\\n\\t.cell:last-child {\\r\\n\\t\\tborder-right: 0px;\\r\\n\\t}\\r\\n}\\r\\n\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","module.exports = \"\\r\\n\";","import { ListService } from 'app/services/list-service';\r\nimport { Subscription } from 'aurelia-event-aggregator';\r\nimport { AppContextService } from 'app/services/app-context-service';\r\nimport { Router } from 'aurelia-router';\r\nimport { ProjectDto } from 'app/models/project-dto';\r\nimport { EventAggregator } from 'aurelia-event-aggregator';\r\nimport { autoinject } from 'aurelia-framework';\r\nimport { DateTimeFormatter } from 'app/services/date-time-formatter';\r\nimport { FullProjectInfo, ProjectLogDataService } from 'app/services/project-log-data-service';\r\nimport { ApiClient } from 'app/services/api-client';\r\n\r\n@autoinject\r\nexport class ProjectOverview { //Project Overview in the menu, is actually the dashboard.\r\n\tpublic column: string = \"name\";\r\n\tpublic displayState: { icon: string, direction: string } | undefined;\r\n\tpublic searchTerm: string = \"\";\r\n\tpublic viewContext: string;\r\n\tprivate subscriptions: Subscription[] = [];\r\n\r\n\tprivate fullProjectDataList: FullProjectInfo[] = [];\r\n\tconstructor(private events: EventAggregator, private router: Router, private appContext: AppContextService, \r\n\t\tprivate listService: ListService, private projectLogDataService: ProjectLogDataService,public api: ApiClient) {\r\n\t\tthis.viewContext = \"TopBar\";\r\n\t}\r\n\r\n\tasync activate() {\r\n\t\tthis.displayState = { icon: \"fa-sort-up\", direction: \"ascending\" };\r\n\t\tconst searchHandler = (data: any) => this.handleSearchEvent(data);\r\n\t\tthis.subscriptions = [\r\n\t\t\tthis.events.subscribe(this.viewContext + \":SearchTermChanged\", searchHandler),\r\n\t\t\tthis.events.subscribe('finished-getting-projects', () => {this.getFullNewProjectInfo()})\r\n\t\t];\r\n\t\tthis.fullProjectDataList = this.appContext.projects;\r\n\t\tthis.getAdditionalProjectInfo(); //Should not be awaited.\r\n\t}\r\n\r\n\tasync getAdditionalProjectInfo(): Promise {\r\n\t\tthis.projectLogDataService.createOrgToProjectMap();\r\n\t\tthis.fullProjectDataList = await this.projectLogDataService.fetchProjectInfo();\t\r\n\t\tconsole.log(\"full datalist\" , this.fullProjectDataList);\t\t \r\n\t}\r\n\r\n\tasync getFullNewProjectInfo(): Promise {\r\n\t\tlet fullProjectDataListId: string[] = this.fullProjectDataList.map(item => item.id);\r\n\t\tlet projectIds = this.appContext.projects.map(item => item.id);\r\n\t\tlet missingId = projectIds.filter(item => fullProjectDataListId.indexOf(item) < 0);\r\n\t\tif (missingId.length > 0) {\r\n\t\t\tlet project: ProjectDto | undefined= this.appContext.projects.find(item => item.id == missingId[0]);\r\n\t\t\tif (project != undefined) {\r\n\t\t\t\tlet fullProjectInfo = await this.projectLogDataService.fetchProjectInfoByProjectId(project);\r\n\t\t\t\tif (fullProjectInfo != undefined) {\r\n\t\t\t\t\tconsole.log(\"fullprojectlist before \" , this.fullProjectDataList);\r\n\t\t\t\t\tthis.fullProjectDataList.push(fullProjectInfo);\r\n\t\t\t\t\tconsole.log(\"fullprojectlist after \" , this.fullProjectDataList);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tconsole.warn(\"no new project was added\")\r\n\t}\r\n\r\n\tdeactivate() {\r\n\t\tthis.subscriptions.forEach(subscription => (\r\n\t\t\tsubscription.dispose()\r\n\t\t));\r\n\t}\r\n\r\n\tprivate handleSearchEvent(data: string) {\r\n\t\tthis.searchTerm = data;\r\n }\r\n\r\n\tpublic async openProject(project: ProjectDto) {\r\n\t\tthis.appContext.setProject(project.id);//in-openProject.\r\n\t\t\r\n\t\t// let justUseDefaultApiUrl = \"\";\r\n\t\t// let result = await this.api.custom(justUseDefaultApiUrl).get(`/Authentication/RefreshTokenWithProject/${project.id}`).response();\r\n\t\t// sessionStorage.setItem('prj_access_token', result.content);\r\n\t\t// console.log(\"result from projectToken \" , result);\r\n\t\t\r\n\t\t\r\n\t\tthis.events.publish('project-selector:project-changed');//in-openProject.\r\n\r\n\r\n\r\n\t\t// In bug cases, the router.navigate call may trigger useless async stack trace errors in aurelia-logging-console.js\r\n\t\t// WhyTF do we have 'instructions' and 'subroutes', and them differing from each other?\r\n\t\tlet defaultViewForOpenProject = 'dashboard'; //'building-parts'; // project-work-area\r\n\t\tthis.router.navigate(`project/${project.id}/${defaultViewForOpenProject}`); \r\n\t\t//this.router.navigate(`project/${project.id}/building-parts`); (in openProject.)\r\n\t}\r\n\r\n\tpublic async sortBy(columnName: string) {\r\n\t\tconsole.log(this.listService)\r\n\t\tawait this.listService.sortBy(columnName).then(result => {\r\n\t\t\tthis.column = result.column;\r\n\t\t\tthis.displayState = result.displayState;\r\n\t\t});\r\n\t}\r\n\r\n\tprivate formatDate(date: string): string {\r\n\t\treturn DateTimeFormatter.formatDate(date);\r\n\t}\r\n\r\n\tprivate inSyncInTotalFormat(instancesInSync:number, instancesInTotal: number): string {\r\n\t\treturn instancesInTotal > 0 ? `${instancesInSync} / ${instancesInTotal}` : \"\";\r\n\t}\r\n\t\r\n\tgetStatus(inSync : number, inTotal : number) : string {\r\n\t\t\r\n\t\tif (inSync === inTotal) {\r\n\r\n\t\t\treturn \"overview-missing-none\";\r\n\t\t}\r\n\t\t\r\n\t\tif (inSync === 0) {\r\n\t\t\treturn \"overview-missing-all\"\r\n\t\t}\r\n\r\n\t\treturn \"overview-missing-some\";\r\n\t}\r\n}\r\n"],"names":["___CSS_LOADER_EXPORT___","push","module","id","exports","ProjectOverview","constructor","events","router","appContext","listService","projectLogDataService","api","column","searchTerm","subscriptions","fullProjectDataList","this","viewContext","async","displayState","icon","direction","subscribe","data","handleSearchEvent","getFullNewProjectInfo","projects","getAdditionalProjectInfo","createOrgToProjectMap","fetchProjectInfo","console","log","fullProjectDataListId","map","item","missingId","filter","indexOf","length","project","find","undefined","fullProjectInfo","fetchProjectInfoByProjectId","warn","deactivate","forEach","subscription","dispose","setProject","publish","navigate","columnName","sortBy","then","result","formatDate","date","inSyncInTotalFormat","instancesInSync","instancesInTotal","getStatus","inSync","inTotal","autoinject"],"sourceRoot":""}