{"version":3,"sources":["webpack:///./src/views/ReportOverview.vue?dbea","webpack:///./src/views/ReportOverview.vue","webpack:///./src/views/ReportOverview.vue?82d0","webpack:///./src/views/ReportOverview.vue?9c9a"],"names":["render","_vm","this","_h","$createElement","_c","_self","staticClass","_v","directives","name","rawName","value","expression","attrs","domProps","on","$event","target","composing","reportFilterTerm","shownReports","tSettings","handleTableEvent","staticRenderFns","showAddProjectModal","newProject","submittedProjectOnce","toCloseProject","contractors","$state","project","projectData","map","c","label","id","reports","trim","length","filter","r","getProjectById","projectId","shipName","getShipById","shipId","searchString","description","number","toLowerCase","includes","_genericInit","_setPageName","isClient","isContractor","$store","dispatch","miscTypes","actions","ADD_HEADER_NAV_LINK","active","navPath","addColumn","valueKey","formatFn","val","toString","substring","addAction","iconName","Visibility","isAvailable","isSkipper","t","status","OpenSkipper","RejectedContractor","statusToCountFilterFn","OpenClient","OpenContractor","RejectedClient","e","actionID","$router","push","path","item","BaseComponent","components","NSPTable","Button","Modal","Dropdown","DateInput","component"],"mappings":"yHAAA,IAAIA,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACE,YAAY,gBAAgB,CAACF,EAAG,MAAM,CAACE,YAAY,kBAAkB,CAACF,EAAG,MAAM,CAACE,YAAY,cAAc,CAACF,EAAG,MAAM,CAACE,YAAY,qBAAqB,CAACF,EAAG,MAAM,CAACE,YAAY,oBAAoB,CAACN,EAAIO,GAAG,eAAeH,EAAG,MAAM,CAACE,YAAY,WAAW,CAACF,EAAG,MAAM,CAACE,YAAY,eAAe,CAACF,EAAG,QAAQ,CAACI,WAAW,CAAC,CAACC,KAAK,QAAQC,QAAQ,UAAUC,MAAOX,EAAoB,iBAAEY,WAAW,qBAAqBC,MAAM,CAAC,KAAO,OAAO,YAAc,iBAAiBC,SAAS,CAAC,MAASd,EAAoB,kBAAGe,GAAG,CAAC,MAAQ,SAASC,GAAWA,EAAOC,OAAOC,YAAqBlB,EAAImB,iBAAiBH,EAAOC,OAAON,iBAAgBP,EAAG,MAAM,CAACA,EAAG,WAAW,CAACS,MAAM,CAAC,MAAQb,EAAIoB,aAAa,cAAgBpB,EAAIqB,WAAWN,GAAG,CAAC,WAAa,SAASC,GAAQ,OAAOhB,EAAIsB,iBAAiBN,QAAa,UACl3BO,EAAkB,G,wUCuDD,EAArB,yG,0BACE,EAAAF,UAAY,IAAI,OAChB,EAAAG,qBAAsB,EACtB,EAAAC,WAAa,IAAI,OACjB,EAAAC,sBAAuB,EACvB,EAAAC,eAAiC,KACjC,EAAAR,iBAAmB,GANrB,sDAQE,WAAmB,MACXS,EAAW,UAAG3B,KAAK4B,OAAOC,QAAQC,mBAAvB,aAAG,EAAiCH,YACrD,OAAKA,EACEA,EAAYI,KAAI,SAACC,GACtB,MAAO,CAAEC,MAAOD,EAAExB,KAAME,MAAOsB,EAAEE,OAFV,KAV7B,wBAgBE,WAAgB,eACRJ,EAAc9B,KAAK4B,OAAOC,QAAQC,YAClCK,EAAU,eAAH,QAAG,EAAH,QAAG,EAAKnC,KAAK4B,OAAOC,QAAQC,mBAA5B,aAAQ,EAAiCK,eAAzC,QAAoD,IAEjE,OAAInC,KAAKkB,iBAAiBkB,OAAOC,OAAS,EACjCF,EAAQG,QAAO,SAACC,GAAa,YAC5BV,EAAO,OAAGC,QAAH,IAAGA,OAAH,EAAGA,EAAaU,eAAeD,EAAEE,WACxCC,EAAQ,OAAGZ,QAAH,IAAGA,GAAH,UAAGA,EAAaa,YAAYJ,EAAEK,eAA9B,aAAG,EAAoCpC,KAC/CqC,EAAe,IAAH,wBAAOhB,QAAP,IAAOA,OAAP,EAAOA,EAASrB,YAAhB,QAAwB,GAAxB,6BAChBqB,QADgB,IAChBA,OADgB,EAChBA,EAASiB,mBADO,QACQ,GADR,6BAEdjB,QAFc,IAEdA,OAFc,EAEdA,EAASkB,cAFK,QAEK,GAFL,mBAEWL,QAFX,IAEWA,IAAY,GAFvB,KAIlB,OAAOG,EACJG,cACAC,SAAS,EAAK/B,iBAAiB8B,kBAI/Bb,IAlCX,qBAqCE,WAAO,WACLnC,KAAKkD,cAAa,GAClBlD,KAAKmD,aAAa,cAEdnD,KAAKoD,YAAcpD,KAAKqD,kBACtBrD,KAAKoD,YACPpD,KAAKsD,OAAOC,SAASC,EAAA,KAAUC,QAAQC,oBAAqB,CAC1DzB,MAAO,YACP0B,QAAQ,EACRC,QAAS,cAGb5D,KAAKsD,OAAOC,SAASC,EAAA,KAAUC,QAAQC,oBAAqB,CAC1DzB,MAAO,YACP0B,QAAQ,EACRC,QAAS,aAEX5D,KAAKsD,OAAOC,SAASC,EAAA,KAAUC,QAAQC,oBAAqB,CAC1DzB,MAAO,aACP0B,QAAQ,EACRC,QAAS,YAEP5D,KAAKoD,YACPpD,KAAKsD,OAAOC,SAASC,EAAA,KAAUC,QAAQC,oBAAqB,CAC5DzB,MAAO,SACP0B,QAAQ,EACRC,QAAS,aAKb5D,KAAKoB,UACFyC,UAAU,CACT5B,MAAO,UACP6B,SAAU,YACVC,SAAU,SAACC,GAAY,UACrB,2BACE,EAAKpC,OAAOC,QAAQC,mBADtB,iBACE,EAAiCU,eAAewB,UADlD,aACE,EAAsDxD,YADxD,QACgEwD,KAInEH,UAAU,CACT5B,MAAO,gBACP6B,SAAU,YACVC,SAAU,SAACC,GAAY,UACrB,2BACE,EAAKpC,OAAOC,QAAQC,mBADtB,iBACE,EAAiCU,eAAewB,UADlD,aACE,EAAsDjB,cADxD,QACkEiB,KAIrEH,UAAU,CACT5B,MAAO,eACP6B,SAAU,YACVC,SAAU,SAACC,GAAY,UACjBlB,EAAW,oBACb,EAAKlB,OAAOC,QAAQC,mBADP,iBACb,EAAiCU,eAAewB,UADnC,aACb,EAAsDlB,mBADzC,QAEbkB,EAAIC,WAEN,OAAInB,EAAYT,OAAS,GACvB,UAAUS,EAAYoB,UAAU,EAAG,IAAnC,OAGKpB,KAGVe,UAAU,CACT5B,MAAO,cACP6B,SAAU,SACVC,SAAU,SAACC,GAAY,UACrB,2BAAO,EAAKpC,OAAOC,QAAQC,mBAA3B,iBAAO,EAAiCa,YAAYqB,UAApD,aAAO,EAAmDxD,YAA1D,QAAkEwD,KAGrEH,UAAU,CACT5B,MAAO,SACP6B,SAAU,QACVC,SAAU,SAACC,GAAD,OAAiBA,EAAI3B,UAEhC8B,UAAU,CACTC,SAAU,OAAaC,WACvBC,YAAa,kBAAM,GACnBpC,GAAI,SAGJlC,KAAKuE,aACPvE,KAAKoB,UACFyC,UAAU,CACT5B,MAAO,0BACP6B,SAAU,QACVC,SAAU,SAACC,GACT,OAAOA,EAAI1B,QAAO,SAACkC,GAAD,OAAaA,EAAEC,SAAW,OAAWC,eACpDrC,UAGNwB,UAAU,CACT5B,MAAO,oBACP6B,SAAU,QACVC,SAAU,SAACC,GACT,OAAOA,EAAI1B,QACT,SAACkC,GAAD,OAAaA,EAAEC,SAAW,OAAWE,sBACrCtC,WAKNrC,KAAKqD,gBAAkBrD,KAAKoD,aAC9BpD,KAAKoB,UAAUyC,UAAU,CACvB5B,MAAO,uBACP6B,SAAU,QACVC,SAAU,SAACC,GACT,IAAMY,EAAwB,EAAKxB,WAC/B,SAACoB,GAAD,OAAaA,EAAEC,SAAW,OAAWI,YACrC,SAACL,GAAD,OACEA,EAAEC,SAAW,OAAWK,gBACxBN,EAAEC,SAAW,OAAWM,gBAC9B,OAAOf,EAAI1B,OAAOsC,GAAuBvC,YAvJnD,8BA6JE,SAAiB2C,GACI,SAAfA,EAAEC,UACJjF,KAAKkF,QAAQC,KAAK,CAChBC,KAAM,YAAF,OAAcJ,EAAEK,KAAK5C,UAArB,mBAAyCuC,EAAEK,KAAKzC,cAhK5D,GAA6C0C,EAAA,MAAxB,EAAe,gBATnC,eAAU,CACTC,WAAY,CACVC,WAAA,KACAC,SAAA,KACAC,QAAA,KACAC,WAAA,KACAC,YAAA,SAGiB,WCxD4Z,I,YCO7aC,EAAY,eACd,EACA/F,EACAwB,GACA,EACA,KACA,WACA,MAIa,aAAAuE,E","file":"js/ReportOverview.126cd0af.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"page-wrapper\"},[_c('div',{staticClass:\"page-container\"},[_c('div',{staticClass:\"page-block\"},[_c('div',{staticClass:\"page-block-header\"},[_c('div',{staticClass:\"page-block-title\"},[_vm._v(\"Rapporten\")]),_c('div',{staticClass:\"filters\"},[_c('div',{staticClass:\"filter-item\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.reportFilterTerm),expression:\"reportFilterTerm\"}],attrs:{\"type\":\"text\",\"placeholder\":\"Filter waarde\"},domProps:{\"value\":(_vm.reportFilterTerm)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.reportFilterTerm=$event.target.value}}})])])]),_c('div',[_c('NSPTable',{attrs:{\"items\":_vm.shownReports,\"tableSettings\":_vm.tSettings},on:{\"tableEvent\":function($event){return _vm.handleTableEvent($event)}}})],1)])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\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\r\nimport BaseComponent from '@/components/BaseComponent';\r\nimport { NSPTableSettings } from '@/components/Table/typing/table-settings';\r\nimport { miscTypes } from '@/store/modules/misc/miscTypes';\r\nimport MaterialIcon from '@/typing/enums/materialIcon.enum';\r\nimport Component from 'vue-class-component';\r\nimport NSPTable from '@/components/Table/NSPTable.vue';\r\nimport Dropdown from '@/components/Dropdown/Dropdown.vue';\r\nimport DateInput from '@/components/DateInput/DateInput.vue';\r\nimport Button from '@/components/Button/Button.vue';\r\nimport Modal from '@/components/Modal/Modal.vue';\r\nimport { INSPTableEvent } from '@/components/Table/typing/table-event.interface';\r\nimport { PostPutProject } from '@/typing/api/postProject.class';\r\nimport { Project } from '@/typing/api/project.class';\r\nimport { Contractor } from '@/typing/api/contractor.class';\r\nimport { Report } from '@/typing/api/report.class';\r\nimport { Trip } from '@/typing/api/tripNew.class';\r\nimport { TripStatus } from '@/typing/enums/tripStatus.enum';\r\n\r\n@Component({\r\n components: {\r\n NSPTable,\r\n Button,\r\n Modal,\r\n Dropdown,\r\n DateInput,\r\n },\r\n})\r\nexport default class ProjectOverview extends BaseComponent {\r\n tSettings = new NSPTableSettings();\r\n showAddProjectModal = false;\r\n newProject = new PostPutProject();\r\n submittedProjectOnce = false;\r\n toCloseProject: Project | null = null;\r\n reportFilterTerm = '';\r\n\r\n get contractorItems(): any[] {\r\n const contractors = this.$state.project.projectData?.contractors;\r\n if (!contractors) return [];\r\n return contractors.map((c: Contractor) => {\r\n return { label: c.name, value: c.id };\r\n });\r\n }\r\n\r\n get shownReports(): Project[] {\r\n const projectData = this.$state.project.projectData;\r\n const reports = [...(this.$state.project.projectData?.reports ?? [])];\r\n\r\n if (this.reportFilterTerm.trim().length > 0) {\r\n return reports.filter((r: Report) => {\r\n const project = projectData?.getProjectById(r.projectId);\r\n const shipName = projectData?.getShipById(r.shipId)?.name;\r\n const searchString = `(${project?.name ?? ''} ${\r\n project?.description ?? ''\r\n } ${project?.number ?? ''} ${shipName ?? ''})`;\r\n\r\n return searchString\r\n .toLowerCase()\r\n .includes(this.reportFilterTerm.toLowerCase());\r\n });\r\n }\r\n\r\n return reports;\r\n }\r\n\r\n mounted(): void {\r\n this._genericInit(true);\r\n this._setPageName('Rapporten');\r\n\r\n if (this.isClient() || this.isContractor()) {\r\n if (this.isClient()) {\r\n this.$store.dispatch(miscTypes.actions.ADD_HEADER_NAV_LINK, {\r\n label: 'Projecten',\r\n active: false,\r\n navPath: '/projects',\r\n });\r\n }\r\n this.$store.dispatch(miscTypes.actions.ADD_HEADER_NAV_LINK, {\r\n label: 'Rapporten',\r\n active: true,\r\n navPath: '/reports',\r\n });\r\n this.$store.dispatch(miscTypes.actions.ADD_HEADER_NAV_LINK, {\r\n label: 'Exporteren',\r\n active: false,\r\n navPath: '/export',\r\n });\r\n if (this.isClient()) {\r\n this.$store.dispatch(miscTypes.actions.ADD_HEADER_NAV_LINK, {\r\n label: 'Beheer',\r\n active: false,\r\n navPath: '/manage',\r\n });\r\n }\r\n }\r\n\r\n this.tSettings\r\n .addColumn({\r\n label: 'Project',\r\n valueKey: 'projectId',\r\n formatFn: (val: any) => {\r\n return (\r\n this.$state.project.projectData?.getProjectById(val)?.name ?? val\r\n );\r\n },\r\n })\r\n .addColumn({\r\n label: 'Projectnummer',\r\n valueKey: 'projectId',\r\n formatFn: (val: any) => {\r\n return (\r\n this.$state.project.projectData?.getProjectById(val)?.number ?? val\r\n );\r\n },\r\n })\r\n .addColumn({\r\n label: 'Omschrijving',\r\n valueKey: 'projectId',\r\n formatFn: (val: any) => {\r\n let description: string =\r\n this.$state.project.projectData?.getProjectById(val)?.description ??\r\n val.toString();\r\n\r\n if (description.length > 70) {\r\n return `${description.substring(0, 67)}...`;\r\n }\r\n\r\n return description;\r\n },\r\n })\r\n .addColumn({\r\n label: 'Scheepsnaam',\r\n valueKey: 'shipId',\r\n formatFn: (val: any) => {\r\n return this.$state.project.projectData?.getShipById(val)?.name ?? val;\r\n },\r\n })\r\n .addColumn({\r\n label: 'Reizen',\r\n valueKey: 'trips',\r\n formatFn: (val: Trip[]) => val.length,\r\n })\r\n .addAction({\r\n iconName: MaterialIcon.Visibility,\r\n isAvailable: () => true,\r\n id: 'view',\r\n });\r\n\r\n if (this.isSkipper()) {\r\n this.tSettings\r\n .addColumn({\r\n label: 'Niet ingeleverde reizen',\r\n valueKey: 'trips',\r\n formatFn: (val: Trip[]) => {\r\n return val.filter((t: Trip) => t.status === TripStatus.OpenSkipper)\r\n .length;\r\n },\r\n })\r\n .addColumn({\r\n label: 'Afgekeurde reizen',\r\n valueKey: 'trips',\r\n formatFn: (val: Trip[]) => {\r\n return val.filter(\r\n (t: Trip) => t.status === TripStatus.RejectedContractor\r\n ).length;\r\n },\r\n });\r\n }\r\n\r\n if (this.isContractor() || this.isClient()) {\r\n this.tSettings.addColumn({\r\n label: 'Reizen te beoordelen',\r\n valueKey: 'trips',\r\n formatFn: (val: Trip[]) => {\r\n const statusToCountFilterFn = this.isClient()\r\n ? (t: Trip) => t.status === TripStatus.OpenClient\r\n : (t: Trip) =>\r\n t.status === TripStatus.OpenContractor ||\r\n t.status === TripStatus.RejectedClient;\r\n return val.filter(statusToCountFilterFn).length;\r\n },\r\n });\r\n }\r\n }\r\n\r\n handleTableEvent(e: INSPTableEvent): void {\r\n if (e.actionID === 'view') {\r\n this.$router.push({\r\n path: `/project/${e.item.projectId}/report/${e.item.shipId}`,\r\n });\r\n }\r\n }\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReportOverview.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReportOverview.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ReportOverview.vue?vue&type=template&id=7c1c7af2&scoped=true&\"\nimport script from \"./ReportOverview.vue?vue&type=script&lang=ts&\"\nexport * from \"./ReportOverview.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7c1c7af2\",\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""}