diff --git a/frontend-roadreport-deploy/.gitignore b/frontend-roadreport-deploy/.gitignore
new file mode 100644
index 0000000..f3ee08a
--- /dev/null
+++ b/frontend-roadreport-deploy/.gitignore
@@ -0,0 +1,45 @@
+# See http://help.github.com/ignore-files/ for more about ignoring files.
+
+package-lock.json
+
+# Compiled output
+/tmp
+/out-tsc
+/bazel-out
+
+# Node
+/node_modules
+npm-debug.log
+yarn-error.log
+
+# IDEs and editors
+.idea/
+.project
+.classpath
+.c9/
+*.launch
+.settings/
+*.sublime-workspace
+
+# Visual Studio Code
+.vscode/*
+!.vscode/settings.json
+!.vscode/tasks.json
+!.vscode/launch.json
+!.vscode/extensions.json
+.history/*
+
+# Miscellaneous
+/.angular/cache
+.sass-cache/
+/connect.lock
+/coverage
+/libpeerconnection.log
+testem.log
+/typings
+
+# System files
+.DS_Store
+Thumbs.db
+
+.angular/
diff --git a/frontend-roadreport-deploy/.vscode/settings.json b/frontend-roadreport-deploy/.vscode/settings.json
new file mode 100644
index 0000000..335f886
--- /dev/null
+++ b/frontend-roadreport-deploy/.vscode/settings.json
@@ -0,0 +1,3 @@
+{
+ "editor.defaultFormatter": "esbenp.prettier-vscode"
+}
\ No newline at end of file
diff --git a/frontend-roadreport-deploy/README.md b/frontend-roadreport-deploy/README.md
new file mode 100644
index 0000000..7c71f3f
--- /dev/null
+++ b/frontend-roadreport-deploy/README.md
@@ -0,0 +1,27 @@
+# RoadReport
+
+This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 16.1.4.
+
+## Development server
+
+Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The application will automatically reload if you change any of the source files.
+
+## Code scaffolding
+
+Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`.
+
+## Build
+
+Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory.
+
+## Running unit tests
+
+Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io).
+
+## Running end-to-end tests
+
+Run `ng e2e` to execute the end-to-end tests via a platform of your choice. To use this command, you need to first add a package that implements end-to-end testing capabilities.
+
+## Further help
+
+To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
diff --git a/frontend-roadreport-deploy/angular.json b/frontend-roadreport-deploy/angular.json
new file mode 100644
index 0000000..d80065e
--- /dev/null
+++ b/frontend-roadreport-deploy/angular.json
@@ -0,0 +1,104 @@
+{
+ "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
+ "version": 1,
+ "newProjectRoot": "projects",
+ "projects": {
+ "road-report": {
+ "projectType": "application",
+ "schematics": {
+ "@schematics/angular:component": {
+ "style": "scss"
+ }
+ },
+ "root": "",
+ "sourceRoot": "src",
+ "prefix": "app",
+ "architect": {
+ "build": {
+ "builder": "@angular-builders/custom-webpack:browser",
+ "options": {
+ "outputPath": "dist/road-report",
+ "index": "src/index.html",
+ "main": "src/main.ts",
+ "polyfills": ["zone.js"],
+ "tsConfig": "tsconfig.app.json",
+ "inlineStyleLanguage": "scss",
+ "assets": ["src/favicon.ico", "src/assets"],
+ "styles": ["src/styles.scss"],
+ "scripts": [],
+ "customWebpackConfig": {
+ "path": "./webpack.config.js"
+ },
+ "allowedCommonJsDependencies": [
+ "buffer",
+ "dayjs",
+ "apexcharts",
+ "leaflet",
+ "ngx-lightbox"
+ ]
+ },
+ "configurations": {
+ "production": {
+ "budgets": [
+ {
+ "type": "initial",
+ "maximumWarning": "1mb",
+ "maximumError": "1mb"
+ },
+ {
+ "type": "anyComponentStyle",
+ "maximumWarning": "2kb",
+ "maximumError": "4kb"
+ }
+ ],
+ "outputHashing": "all"
+ },
+ "development": {
+ "buildOptimizer": false,
+ "optimization": false,
+ "vendorChunk": true,
+ "extractLicenses": false,
+ "sourceMap": true,
+ "namedChunks": true
+ }
+ },
+ "defaultConfiguration": "production"
+ },
+ "serve": {
+ "builder": "@angular-devkit/build-angular:dev-server",
+ "configurations": {
+ "production": {
+ "browserTarget": "road-report:build:production",
+ "proxyConfig": "./proxy.conf.json"
+ },
+ "development": {
+ "browserTarget": "road-report:build:development",
+ "proxyConfig": "./proxy.conf.json"
+ }
+ },
+ "defaultConfiguration": "development"
+ },
+ "extract-i18n": {
+ "builder": "@angular-devkit/build-angular:extract-i18n",
+ "options": {
+ "browserTarget": "road-report:build"
+ }
+ },
+ "test": {
+ "builder": "@angular-devkit/build-angular:karma",
+ "options": {
+ "polyfills": ["zone.js", "zone.js/testing"],
+ "tsConfig": "tsconfig.spec.json",
+ "inlineStyleLanguage": "scss",
+ "assets": ["src/favicon.ico", "src/assets"],
+ "styles": ["src/styles.scss"],
+ "scripts": []
+ }
+ }
+ }
+ }
+ },
+ "cli": {
+ "analytics": "bd7e6812-e5ff-426b-a8aa-81ac8bb14696"
+ }
+}
diff --git a/frontend-roadreport-deploy/dist/road-report/114.83af9de57fdf8c48.js b/frontend-roadreport-deploy/dist/road-report/114.83af9de57fdf8c48.js
new file mode 100644
index 0000000..9c5844b
--- /dev/null
+++ b/frontend-roadreport-deploy/dist/road-report/114.83af9de57fdf8c48.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkroad_report=self.webpackChunkroad_report||[]).push([[114],{6114:(A,f,o)=>{o.r(f),o.d(f,{DetailModule:()=>U});var c=o(177),u=o(8185),j=o(2665),n=o(9417),h=o(9519),p=o(1626),E=o(6354),C=o(9437),y=o(7673),m=o(8685);class D extends m.MF{constructor(d){super(),this.http=d,this.imageFiles={abs_path:""}}uploadFile(d){const r=new FormData;r.append("file",d.file),r.append("category","image"),r.append("folder","image");const e=new p.Kd("POST","https://api-roadreport.pisdev.my.id/api/upload-dumps",r,{reportProgress:!0});return this.http.request(e).pipe((0,E.T)(l=>{if(l.type===p.hv.Response){const s=l.body;return this.imageFiles={abs_path:s.data.abs_path},console.log(s),{body:s,status:m.A8.UPLOADED}}if(l.type===p.hv.UploadProgress&&void 0!==l.total){const s=+Math.round(100*l.loaded/l.total);return{status:m.A8.IN_PROGRESS,progress:s}}return{status:m.A8.ERROR,body:"Unknown error occurred during upload process."}}),(0,C.W)(l=>(0,y.of)({status:m.A8.ERROR,body:l})))}removeFile(d){return this.http.post("https://api-roadreport.pisdev.my.id/api/upload-dumps/50",{id:50})}}var a=o(8699),R=o(1991),b=o(7110);let _=(()=>{class t extends R.G{constructor(r,i){super(r,i),this.http=r,this.helpers=i,this.endpoint="survey"}static{this.\u0275fac=function(i){return new(i||t)(a.KVO(p.Qq),a.KVO(b.V))}}static{this.\u0275prov=a.jDH({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();var w=o(6803),N=o(2423);function T(t,d){1&t&&(a.j41(0,"div",78),a.EFF(1," Harus diisi "),a.k0s())}function B(t,d){1&t&&(a.j41(0,"div",78),a.EFF(1," Jumlah tidak valid "),a.k0s())}function S(t,d){1&t&&(a.j41(0,"div",78),a.EFF(1," Harus diisi "),a.k0s())}function I(t,d){1&t&&(a.j41(0,"div",78),a.EFF(1," Jumlah tidak valid "),a.k0s())}function x(t,d){1&t&&(a.j41(0,"div",78),a.EFF(1," Awalan dan akhiran tidak boleh ada spasi "),a.k0s())}function G(t,d){1&t&&(a.j41(0,"div",78),a.EFF(1," Awalan dan akhiran tidak boleh ada spasi "),a.k0s())}const k=function(t){return{"is-invalid":t}},$=[{path:"",component:(()=>{class t extends j.v{uploadSuccess(r){}onValidationError(r){alert(`Validation Error ${r.error} in ${r.file?.name}`)}constructor(r,i,e,l,s,v,g,F){super(g,F,s,v),this.http=r,this.activatedRoute=i,this.router=e,this.formBuilder=l,this.api=s,this.modal=v,this.helpers=g,this.loading=F,this.adapter=new D(this.http),this.id="",this.isButtonDisabled=!1,this.form={},this.queries={sort:"-updated_at",page:1,limit:10,embed:"status_report,user,segmens,segmens.segmen,segmens.photos,schedule"}}ngOnInit(){this.id=this.activatedRoute.snapshot.params.id,this.initForm()}initForm(){this.form=this.formBuilder.group({report_id:this.id,tingkat_kerusakan:["baik",[n.k0.required]],tipe_kerusakan:["berlubang",[n.k0.required]],kedalaman_lubang:["tidak_ada",[n.k0.required]],length:[null,[n.k0.required,n.k0.pattern(/^[0-9]+(\.[0-9]{1,2})?$/)]],width:[null,[n.k0.required,n.k0.pattern(/^[0-9]+(\.[0-9]{1,2})?$/)]],jenis_material:["ACBC",[n.k0.required]],masukan_material:[null,[h.M.noWhiteSpace]],note:[null,[h.M.noWhiteSpace]]})}onBack(){this.router.navigate(["../"],{relativeTo:this.activatedRoute})}onSubmit(){if(this.form.valid){const r={photos:{abs_path:this.adapter.imageFiles.abs_path}};console.log(r),console.log(this.adapter.imageFiles),this.api.insert(this.form.value).subscribe({next:({data:i})=>{console.log("hasil post ke endpoint surveyor",i),console.log("foto yang akan dikirim",r),this.api.update(i.id,r).subscribe({next:({data:e})=>{console.log(e)}}),this.helpers.toast("success","Data Hasil Survey berhasil ditambahkan")},error:i=>{this.helpers.toast("error","Data gagal ditambahkan")}})}}static{this.\u0275fac=function(i){return new(i||t)(a.rXU(p.Qq),a.rXU(u.nX),a.rXU(u.Ix),a.rXU(n.ok),a.rXU(_),a.rXU(w.Bq),a.rXU(b.V),a.rXU(N.U))}}static{this.\u0275cmp=a.VBU({type:t,selectors:[["app-detail"]],features:[a.Vt3],decls:175,vars:22,consts:[[1,"d-lg-flex","d-md-flex","d-sm-flex","align-items-start","justify-content-between","gap-3","mb-3"],[1,"d-flex","align-items-center","gap-2","mb-2"],["type","button",1,"btn","btn-sm","bg-transparent",3,"click"],[1,"bi","bi-arrow-left"],[1,"mb-0","fw-bold"],["aria-label","breadcrumb"],[1,"breadcrumb"],[1,"breadcrumb-item","small"],["routerLink","../",1,"text-decoration-none"],["aria-current","page",1,"breadcrumb-item","active","small"],[1,""],[1,"d-flex","justify-content-between","calendar","bg-white","p-2","rounded-2","mt-2"],[1,"bi","bi-calendar",2,"color","blue"],[1,"small","ms-2","text-primary","fw-semibold"],[1,"date","small","ms-xs-1","ms-md-4","ms-lg-4"],[1,"p-4","rounded-3","bg-white"],[3,"formGroup"],[1,"row"],[1,"col-lg-6","col-md-12","col-sm-6"],[1,"mb-3","fw-bold"],[1,"uploader-wrapper"],[1,"form-label"],[1,"mb-3",2,"border","1px dashed #3d73dc",3,"adapter","fileMaxSize","uploadSuccess","validationError"],[1,"dropzoneTemplate"],[2,"text-align","center"],[1,"text-primary"],[1,"align-items-start","justify-content-between","column-gap-3","p-3","rounded-3","border","mb-3"],[1,"col"],[1,"form-check"],["id","baik","formControlName","tingkat_kerusakan","type","radio","value","baik","checked","",1,"form-check-input"],["for","baik",1,"form-check-label"],["id","sedang","formControlName","tingkat_kerusakan","type","radio","value","sedang",1,"form-check-input"],["for","sedang",1,"form-check-label"],["id","rusak_ringan","formControlName","tingkat_kerusakan","type","radio","value","rusak_ringan",1,"form-check-input"],["for","rusak_ringan",1,"form-check-label"],["id","rusak_berat","formControlName","tingkat_kerusakan","type","radio","value","rusak_berat",1,"form-check-input"],["for","rusak_berat",1,"form-check-label"],["id","berlubang","formControlName","tipe_kerusakan","type","radio","value","berlubang",1,"form-check-input"],["for","berlubang",1,"form-check-label"],["id","terkelupas","formControlName","tipe_kerusakan","type","radio","value","terkelupas",1,"form-check-input"],["for","terkelupas",1,"form-check-label"],["id","retak","formControlName","tipe_kerusakan","type","radio","value","retak",1,"form-check-input"],["for","retak",1,"form-check-label"],["id","bergelombang","formControlName","tipe_kerusakan","type","radio","value","bergelombang",1,"form-check-input"],["for","bergelombang",1,"form-check-label"],[1,"text-body-tertiary"],["type","a"],[2,"font-size","14px"],[1,"col-7"],["id","tidak_ada","formControlName","kedalaman_lubang","type","radio","value","tidak_ada",1,"form-check-input"],["for","tidak_ada",1,"form-check-label"],["id","kecil_dangkal","formControlName","kedalaman_lubang","type","radio","value","kecil_dangkal",1,"form-check-input"],["for","kecil_dangkal",1,"form-check-label"],["id","kecil_dalam","formControlName","kedalaman_lubang","type","radio","value","kecil_dalam",1,"form-check-input"],["for","kecil_dalam",1,"form-check-label"],["id","besar_dangkal","formControlName","kedalaman_lubang","type","radio","value","besar_dangkal",1,"form-check-input"],["for","besar_dangkal",1,"form-check-label"],["id","besar_dalam","formControlName","kedalaman_lubang","name","kedalaman_lubang","type","radio","value","besar_dalam",1,"form-check-input"],["for","besar_dalam",1,"form-check-label"],["for","length",1,"text-dark"],[1,"text-danger","ms-1"],["id","length","formControlName","length","type","text","placeholder",".. m",1,"form-control","my-2",3,"ngClass"],["class","invalid-feedback",4,"ngIf"],[1,"text-body-tertiary","m-0",2,"font-size","0.875em"],["for","width",1,"text-dark"],["id","width","formControlName","width","type","text","placeholder",".. m",1,"form-control","my-2",3,"ngClass"],[1,"mb-3"],["formControlName","jenis_material",1,"form-select"],["value","ACBC"],["value","ACWC"],["value","Aspal Beton"],["for","masukan_material",1,"text-dark","fw-semibold"],[1,"text-body-tertiary","fw-normal"],["id","masukan_material","formControlName","masukan_material","rows","3","placeholder","Contoh : semen 5kg, aspal 1 pickup",1,"mt-2","form-control",3,"ngClass"],["for","note",1,"text-dark","fw-semibold"],["id","note","formControlName","note","rows","3","placeholder","Masukkan disini...",1,"mt-2","form-control",3,"ngClass"],[1,"d-flex","justify-content-end","mt-4"],["type","button",1,"btn","btn-primary",3,"disabled","click"],[1,"invalid-feedback"]],template:function(i,e){1&i&&(a.j41(0,"div",0)(1,"div")(2,"div",1)(3,"button",2),a.bIt("click",function(){return e.onBack()}),a.nrm(4,"i",3),a.k0s(),a.j41(5,"h5",4),a.EFF(6,"Detail Laporan"),a.k0s()(),a.j41(7,"nav",5)(8,"ol",6)(9,"li",7)(10,"a",8),a.EFF(11,"Data Laporan"),a.k0s()(),a.j41(12,"li",9),a.EFF(13,"Detail"),a.k0s()()()(),a.j41(14,"div",10)(15,"div")(16,"div",11)(17,"span"),a.nrm(18,"i",12),a.j41(19,"span",13),a.EFF(20,"Tanggal survey"),a.k0s()(),a.j41(21,"div")(22,"span",14),a.EFF(23," - "),a.k0s()()()()()(),a.j41(24,"div",15)(25,"form",16)(26,"div",17)(27,"div",18)(28,"h5",19),a.EFF(29,"Permukaan Pengerasan"),a.k0s(),a.j41(30,"div",20)(31,"label",21),a.EFF(32," Upload Gambar Jalan "),a.k0s(),a.j41(33,"ngx-awesome-uploader",22),a.bIt("uploadSuccess",function(s){return e.uploadSuccess(s)})("validationError",function(s){return e.onValidationError(s)}),a.j41(34,"div",23)(35,"p",24),a.EFF(36," Drag & Drop atau "),a.j41(37,"span",25),a.EFF(38,"Cari"),a.k0s(),a.EFF(39," File maksimal 2 MB "),a.k0s(),a.nrm(40,"p"),a.k0s()()(),a.j41(41,"div",26)(42,"label",21),a.EFF(43," Tingkat Kerusakan "),a.k0s(),a.j41(44,"div",17)(45,"div",27)(46,"div",28),a.nrm(47,"input",29),a.j41(48,"label",30),a.EFF(49," Baik "),a.k0s()(),a.j41(50,"div",28),a.nrm(51,"input",31),a.j41(52,"label",32),a.EFF(53," Sedang "),a.k0s()()(),a.j41(54,"div",27)(55,"div",28),a.nrm(56,"input",33),a.j41(57,"label",34),a.EFF(58," Rusak Ringan "),a.k0s()(),a.j41(59,"div",28),a.nrm(60,"input",35),a.j41(61,"label",36),a.EFF(62," Rusak Berat "),a.k0s()()()()(),a.j41(63,"div",26)(64,"div",17)(65,"label",21),a.EFF(66,"Tipe Kerusakan"),a.k0s(),a.j41(67,"div",27)(68,"div",28),a.nrm(69,"input",37),a.j41(70,"label",38),a.EFF(71," Berlubang "),a.k0s()(),a.j41(72,"div",28),a.nrm(73,"input",39),a.j41(74,"label",40),a.EFF(75," Terkelupas "),a.k0s()()(),a.j41(76,"div",27)(77,"div",28),a.nrm(78,"input",41),a.j41(79,"label",42),a.EFF(80,"Retak"),a.k0s()(),a.j41(81,"div",28),a.nrm(82,"input",43),a.j41(83,"label",44),a.EFF(84," Bergelombang "),a.k0s()()()()(),a.j41(85,"div",26)(86,"label",21),a.EFF(87," Kedalaman lubang "),a.k0s(),a.j41(88,"div",45)(89,"span"),a.EFF(90,"Catatan"),a.k0s(),a.j41(91,"ol",46)(92,"li",47),a.EFF(93," Ukuran lubang, kecil (diameter < 0,5 m). "),a.k0s(),a.j41(94,"li",47),a.EFF(95," Ukuran lubang, besar (diameter > 0,5 m). "),a.k0s(),a.j41(96,"li",47),a.EFF(97,"Dangkal, kedalaman < 5 cm."),a.k0s(),a.j41(98,"li",47),a.EFF(99,"Dalam, kedalaman > 5 cm."),a.k0s()()(),a.j41(100,"div",17)(101,"div",48)(102,"div",28),a.nrm(103,"input",49),a.j41(104,"label",50),a.EFF(105," Tidak ada "),a.k0s()(),a.j41(106,"div",28),a.nrm(107,"input",51),a.j41(108,"label",52),a.EFF(109," Kecil dangkal "),a.k0s()(),a.j41(110,"div",28),a.nrm(111,"input",53),a.j41(112,"label",54),a.EFF(113," Kecil dalam "),a.k0s()()(),a.j41(114,"div",27)(115,"div",28),a.nrm(116,"input",55),a.j41(117,"label",56),a.EFF(118," Besar dangkal "),a.k0s()(),a.j41(119,"div",28),a.nrm(120,"input",57),a.j41(121,"label",58),a.EFF(122," Besar dalam. "),a.k0s()()()()(),a.j41(123,"div",26)(124,"label",59),a.EFF(125," Panjang Kerusakan"),a.j41(126,"span",60),a.EFF(127,"*"),a.k0s()(),a.nrm(128,"input",61),a.DNE(129,T,2,0,"div",62),a.DNE(130,B,2,0,"div",62),a.j41(131,"p",63),a.EFF(132," Catatan "),a.k0s(),a.j41(133,"p",63),a.EFF(134," ukur panjang lubang dengan dimensi satuan meter "),a.k0s()(),a.j41(135,"div",26)(136,"label",64),a.EFF(137," Lebar Kerusakan"),a.j41(138,"span",60),a.EFF(139,"*"),a.k0s()(),a.nrm(140,"input",65),a.DNE(141,S,2,0,"div",62),a.DNE(142,I,2,0,"div",62),a.j41(143,"p",63),a.EFF(144," Catatan "),a.k0s(),a.j41(145,"p",63),a.EFF(146," ukur lebar lubang dengan dimensi satuan meter "),a.k0s()()(),a.j41(147,"div",18)(148,"h5",19),a.EFF(149,"Estimasi Kebutuhan Material"),a.k0s(),a.j41(150,"div",66)(151,"select",67)(152,"option",68),a.EFF(153,"ACBC"),a.k0s(),a.j41(154,"option",69),a.EFF(155,"ACWC"),a.k0s(),a.j41(156,"option",70),a.EFF(157,"Aspal Beton"),a.k0s()()(),a.j41(158,"div",66)(159,"label",71),a.EFF(160," Masukkan Material "),a.j41(161,"span",72),a.EFF(162,"(Optional)"),a.k0s()(),a.nrm(163,"textarea",73),a.DNE(164,x,2,0,"div",62),a.k0s(),a.j41(165,"div",66)(166,"label",74),a.EFF(167," Keterangan Tambahan "),a.j41(168,"span",72),a.EFF(169,"(Optional)"),a.k0s()(),a.nrm(170,"textarea",75),a.DNE(171,G,2,0,"div",62),a.k0s(),a.j41(172,"div",76)(173,"button",77),a.bIt("click",function(){return e.onSubmit()}),a.EFF(174," Simpan "),a.k0s()()()()()()),2&i&&(a.R7$(25),a.Y8G("formGroup",e.form),a.R7$(8),a.Y8G("adapter",e.adapter)("fileMaxSize",200),a.R7$(95),a.Y8G("ngClass",a.eq3(14,k,e.helpers.isInvalid(e.form,"length"))),a.R7$(1),a.Y8G("ngIf",e.helpers.hasError(e.form,"length","required")),a.R7$(1),a.Y8G("ngIf",e.helpers.hasError(e.form,"length","pattern")),a.R7$(10),a.Y8G("ngClass",a.eq3(16,k,e.helpers.isInvalid(e.form,"width"))),a.R7$(1),a.Y8G("ngIf",e.helpers.hasError(e.form,"width","required")),a.R7$(1),a.Y8G("ngIf",e.helpers.hasError(e.form,"width","pattern")),a.R7$(21),a.Y8G("ngClass",a.eq3(18,k,e.helpers.isInvalid(e.form,"masukan_material"))),a.R7$(1),a.Y8G("ngIf",e.helpers.hasError(e.form,"masukan_material","noWhiteSpace")),a.R7$(6),a.Y8G("ngClass",a.eq3(20,k,e.helpers.isInvalid(e.form,"note"))),a.R7$(1),a.Y8G("ngIf",e.helpers.hasError(e.form,"note","noWhiteSpace")),a.R7$(2),a.Y8G("disabled",e.form.invalid))},dependencies:[c.YU,c.bT,u.Wk,n.qT,n.xH,n.y7,n.me,n.wz,n.Fm,n.BC,n.cb,n.j4,n.JD,m.mu],styles:["input[_ngcontent-%COMP%]::-webkit-input-placeholder{color:#bdbdbd}textarea[_ngcontent-%COMP%]::-webkit-input-placeholder{color:#bdbdbd;font-size:.875em}"]})}}return t})()}];let U=(()=>{class t{static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275mod=a.$C({type:t})}static{this.\u0275inj=a.G2t({imports:[c.MD,u.iI.forChild($),n.YN,n.X1,m.Xx]})}}return t})()}}]);
\ No newline at end of file
diff --git a/frontend-roadreport-deploy/dist/road-report/176.2371990238ef1a25.js b/frontend-roadreport-deploy/dist/road-report/176.2371990238ef1a25.js
new file mode 100644
index 0000000..534f98b
--- /dev/null
+++ b/frontend-roadreport-deploy/dist/road-report/176.2371990238ef1a25.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkroad_report=self.webpackChunkroad_report||[]).push([[176],{1176:(F,u,o)=>{o.r(u),o.d(u,{AuthModule:()=>c});var n=o(177),s=o(9417),t=o(8699),d=o(5471),m=o(8185),h=o(7110);function p(e,k){1&e&&t.nrm(0,"span",32)}function b(e,k){1&e&&(t.j41(0,"span"),t.EFF(1," Masuk "),t.k0s())}const f=[{path:"",component:(()=>{class e{constructor(a,i,r,l,g){this.formBuilder=a,this.auth=i,this.activatedRoute=r,this.router=l,this.helpers=g,this.isShowPassword=!1,this.isFormSubmitted=!1,this.redirectUrl="",this.form=this.formBuilder.group({username:[null,[s.k0.required]],password:[null,[s.k0.required]],remember_me:[!1]}),this.redirectUrl=this.activatedRoute.snapshot.queryParams.url}onSubmit(){this.form.valid&&(this.isFormSubmitted=!0,this.auth.login(this.form.value).subscribe({next:({data:a})=>{this.isFormSubmitted=!1,this.auth.setToken(a.token),this.auth.setJwtToken(a.jwtToken),this.router.navigate([this.redirectUrl??"/dashboard"])},error:a=>{this.isFormSubmitted=!1,this.helpers.toast("error","Username atau Password salah!")}}))}static{this.\u0275fac=function(i){return new(i||e)(t.rXU(s.ok),t.rXU(d.u),t.rXU(m.nX),t.rXU(m.Ix),t.rXU(h.V))}}static{this.\u0275cmp=t.VBU({type:e,selectors:[["app-auth"]],hostAttrs:[1,"flex-fill"],decls:46,vars:6,consts:[[1,"row","h-100","mx-0"],[1,"col-lg-7","d-none","d-lg-block","bg-primary","p-5","text-white","position-relative","overflow-hidden"],[1,"position-relative","z-1"],["src","assets/images/batu_city_logo.png","alt","",1,"img-fluid","mb-4","pe-none"],[1,"display-1","mb-4","fw-bold"],[1,"h5","mb-0","fw-medium"],["src","assets/images/login_accent.png","alt","",1,"position-absolute","bottom-0","z-0","pe-none",2,"right","-1.75rem"],[1,"col-lg-5","py-5"],[1,"h-100","d-flex","flex-column","align-items-center"],[1,"mx-auto","mt-auto","mb-3","pt-3",2,"width","min(100%, 380px)"],[1,"text-center","mb-5"],[1,"h4","fw-semibold","mb-2"],[1,"mb-0","text-body-tertiary"],[1,"p-4","border","rounded-3",2,"box-shadow","6px 38px 48px 0px rgba(0, 0, 0, 0.08)"],[1,"fw-semibold","text-center","mb-4"],[3,"formGroup","ngSubmit"],[1,"mb-3"],["for","username",1,"form-label"],["type","text","id","username","formControlName","username","placeholder","Masukan E-mail/Username","autocomplete","username",1,"form-control"],["for","password",1,"form-label"],[1,"input-group"],["id","password","formControlName","password","placeholder","Masukan Kata Sandi","autocomplete","off",1,"form-control",3,"type"],["type","button",1,"btn","btn-outline-secondary",3,"click"],[1,"bi",3,"ngClass"],[1,"form-check","mb-3","d-flex","justify-content-between"],[1,"rememberMe-group"],["type","checkbox","id","rememberMe","formControlName","remember_me","autocomplete","off",1,"form-check-input"],["for","rememberMe",1,"form-check-label"],["type","submit",1,"btn","btn-primary","d-block","w-100","btn-lg",3,"disabled"],["class","spinner-border spinner-border-sm","role","status","aria-hidden","true",4,"ngIf"],[4,"ngIf"],[1,"text-center","small","text-body-tertiary","mb-0","mt-auto"],["role","status","aria-hidden","true",1,"spinner-border","spinner-border-sm"]],template:function(i,r){1&i&&(t.j41(0,"div",0)(1,"div",1)(2,"div",2),t.nrm(3,"img",3),t.j41(4,"h1",4),t.EFF(5,"Road"),t.nrm(6,"br"),t.EFF(7,"Report"),t.k0s(),t.j41(8,"h2",5),t.EFF(9," Sistem Pelaporan Kerusakan Lokasi"),t.nrm(10,"br"),t.EFF(11,"Dinas PUPR Kota Batu "),t.k0s()(),t.nrm(12,"img",6),t.k0s(),t.j41(13,"div",7)(14,"div",8)(15,"div",9)(16,"div",10)(17,"h1",11),t.EFF(18,"Selamat Datang"),t.k0s(),t.j41(19,"p",12),t.EFF(20," Masukan username dan kata sandi anda untuk masuk ke dalam dashboard "),t.k0s()(),t.j41(21,"div",13)(22,"h5",14),t.EFF(23,"Masuk"),t.k0s(),t.j41(24,"form",15),t.bIt("ngSubmit",function(){return r.onSubmit()}),t.j41(25,"div",16)(26,"label",17),t.EFF(27,"Email/Username"),t.k0s(),t.nrm(28,"input",18),t.k0s(),t.j41(29,"div",16)(30,"label",19),t.EFF(31,"Password"),t.k0s(),t.j41(32,"div",20),t.nrm(33,"input",21),t.j41(34,"button",22),t.bIt("click",function(){return r.isShowPassword=!r.isShowPassword}),t.nrm(35,"i",23),t.k0s()()(),t.j41(36,"div",24)(37,"div",25),t.nrm(38,"input",26),t.j41(39,"label",27),t.EFF(40," Ingat saya "),t.k0s()()(),t.j41(41,"button",28),t.DNE(42,p,1,0,"span",29),t.DNE(43,b,2,0,"span",30),t.k0s()()()(),t.j41(44,"p",31),t.EFF(45," \xa9 All Right Reversed by Dinas PUPR Kota Batu "),t.k0s()()()()),2&i&&(t.R7$(24),t.Y8G("formGroup",r.form),t.R7$(9),t.Y8G("type",r.isShowPassword?"text":"password"),t.R7$(2),t.Y8G("ngClass",r.isShowPassword?"bi-eye-slash":"bi-eye"),t.R7$(6),t.Y8G("disabled",r.form.invalid||r.isFormSubmitted),t.R7$(1),t.Y8G("ngIf",r.isFormSubmitted),t.R7$(1),t.Y8G("ngIf",!r.isFormSubmitted))},dependencies:[n.YU,n.bT,s.qT,s.me,s.Zm,s.BC,s.cb,s.j4,s.JD]})}}return e})()}];let c=(()=>{class e{static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275mod=t.$C({type:e})}static{this.\u0275inj=t.G2t({imports:[n.MD,m.iI.forChild(f),s.X1]})}}return e})()}}]);
\ No newline at end of file
diff --git a/frontend-roadreport-deploy/dist/road-report/186.9e3760d3c202465a.js b/frontend-roadreport-deploy/dist/road-report/186.9e3760d3c202465a.js
new file mode 100644
index 0000000..5c55ed5
--- /dev/null
+++ b/frontend-roadreport-deploy/dist/road-report/186.9e3760d3c202465a.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkroad_report=self.webpackChunkroad_report||[]).push([[186],{2186:(V,g,r)=>{r.r(g),r.d(g,{LaporanModule:()=>X});var p=r(177),_=r(2665),t=r(8699),u=r(8185),F=r(5471),k=r(1991),j=r(1626),m=r(7110);let L=(()=>{class n extends k.G{constructor(e,a){super(e,a),this.http=e,this.helpers=a}static{this.\u0275fac=function(a){return new(a||n)(t.KVO(j.Qq),t.KVO(m.V))}}static{this.\u0275prov=t.jDH({token:n,factory:n.\u0275fac,providedIn:"root"})}}return n})();var l=r(6803),R=r(5211),C=r(2423),c=r(9417);function I(n,i){if(1&n&&(t.j41(0,"div",14),t.nrm(1,"i",15)(2,"input",16),t.k0s()),2&n){const e=t.XpG();t.R7$(2),t.Y8G("formControl",e.searchForm)("readonly",0===e.dataSourceLength&&e.queries.filter&&!e.queries.search)}}function y(n,i){if(1&n){const e=t.RV6();t.j41(0,"button",17),t.bIt("click",function(){t.eBV(e);const o=t.XpG();return t.Njj(o.export())}),t.nrm(1,"i",18),t.EFF(2," Export PDF "),t.k0s()}}function v(n,i){if(1&n){const e=t.RV6();t.j41(0,"button",11),t.bIt("click",function(){t.eBV(e);const o=t.XpG();return t.Njj(o.applyFilter("PROG"))}),t.EFF(1," Dalam Proses "),t.k0s()}if(2&n){const e=t.XpG();t.AVh("active","PROG"===e.statusId)}}function E(n,i){if(1&n){const e=t.RV6();t.j41(0,"button",11),t.bIt("click",function(){t.eBV(e);const o=t.XpG();return t.Njj(o.applyFilter("RJT"))}),t.EFF(1," Ditolak "),t.k0s()}if(2&n){const e=t.XpG();t.AVh("active","RJT"===e.statusId)}}function T(n,i){1&n&&(t.j41(0,"p",19),t.nrm(1,"i",20),t.EFF(2," Belum ada data. "),t.k0s())}function x(n,i){1&n&&(t.j41(0,"p",19),t.nrm(1,"i",21),t.EFF(2," Tidak ada hasil pencarian "),t.k0s())}function G(n,i){if(1&n){const e=t.RV6();t.j41(0,"button",35),t.bIt("click",function(){t.eBV(e);const o=t.XpG().$implicit,s=t.XpG(2);return t.Njj(s.onDeleteData(o.id,o.user.fullname))}),t.EFF(1," Hapus "),t.k0s()}}const D=function(n,i,e,a,o,s){return{"bg-primary":n,"bg-warning":i,"bg-danger":e,"bg-info":a,"bg-secondary":o,"bg-success":s,"text-nowrap text-white text-center rounded-2 px-2 py-2":!0,"d-block":!0}};function S(n,i){if(1&n){const e=t.RV6();t.j41(0,"tr")(1,"td"),t.EFF(2),t.nI1(3,"date"),t.k0s(),t.j41(4,"td"),t.EFF(5),t.k0s(),t.j41(6,"td"),t.EFF(7),t.k0s(),t.j41(8,"td")(9,"small",30),t.EFF(10),t.k0s()(),t.j41(11,"td")(12,"a",31),t.EFF(13),t.k0s()(),t.j41(14,"td"),t.EFF(15),t.k0s(),t.j41(16,"td")(17,"div",32)(18,"button",33),t.bIt("click",function(){const s=t.eBV(e).$implicit,d=t.XpG(2);return t.Njj(d.goToDetail(s.id))}),t.EFF(19," Detail "),t.k0s(),t.DNE(20,G,2,0,"button",34),t.k0s()()()}if(2&n){const e=i.$implicit,a=t.XpG(2);t.R7$(2),t.JRh(t.i5U(3,12,e.created_at,"dd/MM/yyyy")),t.R7$(3),t.JRh(e.no_ticket),t.R7$(2),t.JRh(e.user.fullname),t.R7$(2),t.Y8G("ngClass",t.l4e(15,D,"PROG"===e.status_report.id,"FOLUP"===e.status_report.id,"RJT"===e.status_report.id,"RPR"===e.status_report.id,"FIXED"===e.status_report.id,"DONE"===e.status_report.id)),t.R7$(1),t.SpI(" ","DONE"===e.status_report.id?"Selesai":e.status_report.name," "),t.R7$(2),t.FRS("href","https://www.google.com/maps/search/?api=1&query=",a.parsing(e.segmens[e.segmens.length-1].segmen.center_point).coordinates[1],",",a.parsing(e.segmens[e.segmens.length-1].segmen.center_point).coordinates[0],"&zoom=15&markers=",a.parsing(e.segmens[e.segmens.length-1].segmen.center_point).coordinates[1],",",a.parsing(e.segmens[e.segmens.length-1].segmen.center_point).coordinates[0],"",t.B4B),t.R7$(1),t.SpI(" ","["+a.parsing(e.segmens[e.segmens.length-1].segmen.center_point).coordinates.reverse().join(", ")+"]"," "),t.R7$(2),t.SpI(" ",e.segmens.length>0?e.segmens[e.segmens.length-1].segmen.name:"-"," "),t.R7$(5),t.Y8G("ngIf",a.isPNGL())}}function $(n,i){if(1&n&&(t.j41(0,"option",36),t.EFF(1),t.k0s()),2&n){const e=i.$implicit,a=t.XpG(2);t.Y8G("value",e)("selected",e===a.queryLimit),t.R7$(1),t.SpI(" ",e," ")}}function P(n,i){if(1&n){const e=t.RV6();t.qex(0),t.j41(1,"div",22)(2,"table",23)(3,"thead")(4,"tr")(5,"th"),t.EFF(6,"Tanggal"),t.k0s(),t.j41(7,"th"),t.EFF(8,"No Tiket"),t.k0s(),t.j41(9,"th"),t.EFF(10,"Nama Pelapor"),t.k0s(),t.j41(11,"th"),t.EFF(12,"Status"),t.k0s(),t.j41(13,"th"),t.EFF(14,"Lihat Maps"),t.k0s(),t.j41(15,"th"),t.EFF(16,"Lokasi"),t.k0s(),t.j41(17,"th"),t.EFF(18,"Aksi"),t.k0s()()(),t.j41(19,"tbody"),t.DNE(20,S,21,22,"tr",24),t.k0s()()(),t.j41(21,"div",25)(22,"div",26)(23,"span"),t.EFF(24,"Item per halalaman"),t.k0s(),t.j41(25,"select",27),t.bIt("change",function(o){t.eBV(e);const s=t.XpG();return t.Njj(s.onPageSizeChange(o))}),t.DNE(26,$,2,3,"option",28),t.k0s(),t.j41(27,"span"),t.EFF(28),t.k0s()(),t.j41(29,"ngb-pagination",29),t.bIt("pageChange",function(o){t.eBV(e);const s=t.XpG();return t.Njj(s.queryPage=o)})("pageChange",function(o){t.eBV(e);const s=t.XpG();return t.Njj(s.onPaginateChange(o))}),t.k0s()(),t.bVm()}if(2&n){const e=t.XpG();t.R7$(20),t.Y8G("ngForOf",e.dataSource),t.R7$(6),t.Y8G("ngForOf",e.pageSizeOptions),t.R7$(2),t.SpI("dari ",e.dataSourceLength,""),t.R7$(1),t.Y8G("collectionSize",e.dataSourceLength)("page",e.queryPage)("maxSize",5)("pageSize",e.queryLimit)("rotate",!0)("ellipses",!1)("boundaryLinks",!1)("directionLinks",!0)}}const N=[{path:"",component:(()=>{class n extends _.v{constructor(e,a,o,s,d,h,f,b){super(h,b,f,d),this.activatedRoute=e,this.router=a,this.auth=o,this.exportAll=s,this.modal=d,this.helpers=h,this.api=f,this.loading=b,this.statusId="",this.field={eq:this.statusId},this.searchFields="no_ticket,user.fullname,segmens.segmen.name",this.api.endpoint="report-list",this.queries={page:1,sort:"-created_at",limit:10,embed:"status_report,user,segmens,segmens.segmen,segmens.photos"},"PNGL"==this.auth.getLoggedUser().role.code&&(this.api.endpoint="report-list/pengelola")}applyFilter(e){return this.statusId=e,""!==this.statusId?this.queries.filter={status_id:{eq:this.statusId}}:"SADM"==this.auth.getLoggedUser().role.code?delete this.queries.filter.status_id:this.queries.filter={status_id:{ne:"PROG,RJT"}},this.getAll(),!0}export(){this.loading.show(),this.exportAll.endpoint=`report-list/export-all/${this.statusId}`,this.exportAll.getAll().pipe().subscribe({next:e=>{const o=e.data.rel_path;setTimeout(()=>{window.open(o,"_blank")},500),window.open(o,"_blank"),this.loading.hide()},error:e=>{}})}goToDetail(e){"PNGL"==this.auth.getLoggedUser().role.code?this.router.navigate(["dashboard","data-laporan",e]):this.router.navigate([e],{relativeTo:this.activatedRoute})}isPNGL(){const e=this.auth.getLoggedUser();return!!e&&"SADM"===e.role.code}parsing(e){return JSON.parse(e)}static{this.\u0275fac=function(a){return new(a||n)(t.rXU(u.nX),t.rXU(u.Ix),t.rXU(F.u),t.rXU(L),t.rXU(l.Bq),t.rXU(m.V),t.rXU(R.Z),t.rXU(C.U))}}static{this.\u0275cmp=t.VBU({type:n,selectors:[["app-laporan"]],features:[t.Vt3],decls:26,vars:16,consts:[[1,"mb-4","fw-bold"],[1,"rounded-3","p-4","bg-white"],[1,"d-flex","align-items-center","justify-content-between","gap-3","flex-wrap","mb-3",3,"ngClass"],["class","form-group has-search d-flex align-items-center",4,"ngIf"],["ngbDropdown",""],["class","btn no-caret text-primary me-2","style","background-color: #eef0fd",3,"click",4,"ngIf"],["id","filterDropdown","ngbDropdownToggle","",1,"btn","no-caret","text-primary",2,"background-color","#eef0fd"],[1,"ms-2","bi","bi-funnel","text-primary"],["ngbDropdownMenu","","aria-labelledby","filterDropdown"],["ngbDropdownItem","",1,"dropdown-item",3,"click"],["ngbDropdownItem","",3,"active","click",4,"ngIf"],["ngbDropdownItem","",3,"click"],["class","text-body-tertiary",4,"ngIf"],[4,"ngIf"],[1,"form-group","has-search","d-flex","align-items-center"],[1,"bi","bi-search","form-control-feedback","mx-auto","ms-3",2,"color","black"],["type","text","placeholder","Cari data...",1,"form-control","border-0","form-control",2,"background","#f2f2f2","height","48px",3,"formControl","readonly"],[1,"btn","no-caret","text-primary","me-2",2,"background-color","#eef0fd",3,"click"],[1,"bi","bi-file-earmark-text","text-primary"],[1,"text-body-tertiary"],[1,"bi","bi-exclamation-circle"],[1,"bi","bi-search"],[1,"table-responsive"],[1,"table"],[4,"ngFor","ngForOf"],[1,"d-flex","align-items-center","justify-content-between","gap-3","flex-wrap"],[1,"w-auto","d-flex","align-items-center","gap-2"],[1,"form-select","w-auto",3,"change"],[3,"value","selected",4,"ngFor","ngForOf"],[1,"mb-n3",3,"collectionSize","page","maxSize","pageSize","rotate","ellipses","boundaryLinks","directionLinks","pageChange"],[3,"ngClass"],["target","_blank",1,"text-nowrap",3,"href"],[1,"d-flex"],["type","button",1,"btn","btn-outline-primary","me-2",3,"click"],["class","btn btn-outline-primary",3,"click",4,"ngIf"],[1,"btn","btn-outline-primary",3,"click"],[3,"value","selected"]],template:function(a,o){1&a&&(t.j41(0,"h4",0),t.EFF(1,"Data Laporan"),t.k0s(),t.j41(2,"div",1)(3,"div",2),t.DNE(4,I,3,2,"div",3),t.j41(5,"div",4),t.DNE(6,y,3,0,"button",5),t.j41(7,"button",6),t.EFF(8," Filter "),t.nrm(9,"i",7),t.k0s(),t.j41(10,"div",8)(11,"button",9),t.bIt("click",function(){return o.applyFilter("")}),t.EFF(12," Semua "),t.k0s(),t.DNE(13,v,2,2,"button",10),t.j41(14,"button",11),t.bIt("click",function(){return o.applyFilter("FOLUP")}),t.EFF(15," Ditindak Lanjuti "),t.k0s(),t.j41(16,"button",11),t.bIt("click",function(){return o.applyFilter("RPR")}),t.EFF(17," Perbaikan "),t.k0s(),t.j41(18,"button",11),t.bIt("click",function(){return o.applyFilter("FIXED")}),t.EFF(19," Selesai Perbaikan "),t.k0s(),t.DNE(20,E,2,2,"button",10),t.j41(21,"button",11),t.bIt("click",function(){return o.applyFilter("DONE")}),t.EFF(22," Selesai "),t.k0s()()()(),t.DNE(23,T,3,0,"p",12),t.DNE(24,x,3,0,"p",12),t.DNE(25,P,30,11,"ng-container",13),t.k0s()),2&a&&(t.R7$(3),t.Y8G("ngClass",o.dataSourceTotal>0?"justify-content-between":"justify-content-end"),t.R7$(1),t.Y8G("ngIf",o.dataSourceTotal>0),t.R7$(2),t.Y8G("ngIf",o.dataSourceTotal>0),t.R7$(7),t.Y8G("ngIf",o.isPNGL()),t.R7$(1),t.AVh("active","FOLUP"===o.statusId),t.R7$(2),t.AVh("active","RPR"===o.statusId),t.R7$(2),t.AVh("active","FIXED"===o.statusId),t.R7$(2),t.Y8G("ngIf",o.isPNGL()),t.R7$(1),t.AVh("active","DONE"===o.statusId),t.R7$(2),t.Y8G("ngIf",0==o.dataSourceTotal),t.R7$(1),t.Y8G("ngIf",o.dataSourceTotal>0&&0===o.dataSourceLength&&o.queries.search),t.R7$(1),t.Y8G("ngIf",o.dataSourceTotal>0&&o.dataSourceLength>0))},dependencies:[p.YU,p.Sq,p.bT,c.xH,c.y7,c.me,c.BC,c.l_,l.tg,l.do,l.U0,l._H,l.s5,p.vh],styles:[".has-search[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{padding-left:3rem}.has-search[_ngcontent-%COMP%] .form-control-feedback[_ngcontent-%COMP%]{position:absolute}.form-control[_ngcontent-%COMP%]::placeholder{color:#bdbdbd}"]})}}return n})(),children:[]},{path:":id",loadChildren:()=>Promise.all([r.e(257),r.e(76),r.e(641)]).then(r.bind(r,6641)).then(n=>n.DetailModule)},{path:":id/tindak-lanjut",loadChildren:()=>Promise.all([r.e(76),r.e(367)]).then(r.bind(r,9367)).then(n=>n.TindakLanjutModule)}];let X=(()=>{class n{static{this.\u0275fac=function(a){return new(a||n)}}static{this.\u0275mod=t.$C({type:n})}static{this.\u0275inj=t.G2t({imports:[p.MD,u.iI.forChild(N),c.X1,l.zH,l.c9]})}}return n})()}}]);
\ No newline at end of file
diff --git a/frontend-roadreport-deploy/dist/road-report/257.88b5a23227acab06.js b/frontend-roadreport-deploy/dist/road-report/257.88b5a23227acab06.js
new file mode 100644
index 0000000..b770e4e
--- /dev/null
+++ b/frontend-roadreport-deploy/dist/road-report/257.88b5a23227acab06.js
@@ -0,0 +1 @@
+(self.webpackChunkroad_report=self.webpackChunkroad_report||[]).push([[257],{1200:(At,dt,v)=>{"use strict";v.d(dt,{B:()=>h});var A=v(1991),I=v(8699),o=v(1626),a=v(7110);let h=(()=>{class l extends A.G{constructor(m,d){super(m,d),this.http=m,this.helpers=d,this.endpoint="report-segmens"}static{this.\u0275fac=function(d){return new(d||l)(I.KVO(o.Qq),I.KVO(a.V))}}static{this.\u0275prov=I.jDH({token:l,factory:l.\u0275fac,providedIn:"root"})}}return l})()},4576:(At,dt,v)=>{"use strict";v.d(dt,{_:()=>h});var A=v(1991),I=v(8699),o=v(1626),a=v(7110);let h=(()=>{class l extends A.G{constructor(m,d){super(m,d),this.http=m,this.helpers=d,this.endpoint="sub-district"}static{this.\u0275fac=function(d){return new(d||l)(I.KVO(o.Qq),I.KVO(a.V))}}static{this.\u0275prov=I.jDH({token:l,factory:l.\u0275fac,providedIn:"root"})}}return l})()},5731:(At,dt,v)=>{"use strict";v.d(dt,{c:()=>h});var A=v(1991),I=v(8699),o=v(1626),a=v(7110);let h=(()=>{class l extends A.G{constructor(m,d){super(m,d),this.http=m,this.helpers=d,this.endpoint="report-schedules/detail"}static{this.\u0275fac=function(d){return new(d||l)(I.KVO(o.Qq),I.KVO(a.V))}}static{this.\u0275prov=I.jDH({token:l,factory:l.\u0275fac,providedIn:"root"})}}return l})()},2257:(At,dt,v)=>{"use strict";v.d(dt,{i:()=>et});var A=v(177),I=v(5946),o=v(6803),a=v(8244),m=(v(6484),v(7374)),c=v(8699),y=v(7110),T=v(2423),P=v(5211),W=v(1200),O=v(4576),k=v(5731);function g(rt,Rt){if(1&rt&&(c.j41(0,"li",13),c.nrm(1,"span",14),c.j41(2,"span",15),c.EFF(3),c.k0s()()),2&rt){const x=Rt.$implicit,B=c.XpG(2);c.R7$(1),c.xc7("background-color","DSS"===B.selectedOption?B.getColorByStatusDss(x.status):B.getColorByStatusTitikLaporan(x.status)),c.R7$(1),c.Y8G("ngClass","DSS"===B.selectedOption?B.getColorByStatusDss(x.status):B.getColorByStatusTitikLaporan(x.status)),c.R7$(1),c.SpI(" ",x.status,"")}}function S(rt,Rt){if(1&rt){const x=c.RV6();c.j41(0,"ul",10,11),c.bIt("ngbCollapseChange",function(C){c.eBV(x);const U=c.XpG();return c.Njj(U.isCollapsed=C)}),c.DNE(2,g,4,4,"li",12),c.k0s()}if(2&rt){const x=c.XpG();c.xc7("width","DSS"===x.selectedOption?260:190,"px"),c.Y8G("ngbCollapse",x.isCollapsed),c.R7$(2),c.Y8G("ngForOf","DSS"===x.selectedOption?x.statusDss:x.statusTitikLaporan)}}function b(rt,Rt){if(1&rt){const x=c.RV6();c.j41(0,"div",16)(1,"button",17),c.EFF(2),c.k0s(),c.j41(3,"div",18)(4,"button",19),c.bIt("click",function(){c.eBV(x);const C=c.XpG();return c.Njj(C.onOptionChange("DSS"))}),c.EFF(5," DSS "),c.k0s(),c.j41(6,"button",19),c.bIt("click",function(){c.eBV(x);const C=c.XpG();return c.Njj(C.onOptionChange("Titik Laporan"))}),c.EFF(7," Titik Laporan "),c.k0s()()()}if(2&rt){const x=c.XpG();c.R7$(2),c.SpI(" ",x.selectedOption," ")}}let et=(()=>{class rt{constructor(x,B,C,U,q,Q,ft){this.helpers=x,this.loading=B,this.api=C,this.modal=U,this.reportSegmens=q,this.subDistrict=Q,this.perbaikan=ft,this.isExpand=!0,this.polylineData=a.layerGroup(),this.showOption=!0,this.showStatus=!0,this.allowDragging=!0,this.cnterLatLng={lat:-7.869576,lng:112.5309706},this.scheduleLayer=new a.FeatureGroup,this.polylineLayer=new a.FeatureGroup,this.polygonLayer=new a.FeatureGroup,this.pointLayer=new a.FeatureGroup,this.selectedData=[],this.selectedOption="DSS",this.zoom=14,this.lat=-7.8699381,this.lng=112.5285772,this.dayjs=m,this.mapOptions={layers:[(0,a.tileLayer)("http://mt0.google.com/vt/lyrs=m&hl=en&x={x}&y={y}&z={z}&s=Ga",{maxZoom:22,minZoom:11})],scrollWheelZoom:!1,zoom:this.zoom,dragging:this.allowDragging,doubleClickZoom:!1,touchZoom:!1,tap:!1,center:(0,a.latLng)(this.lat,this.lng)},this.isCollapsed=!1,this.statusDss=[],this.statusTitikLaporan=[],this.embedReportSegments={embed:"segmen,analytic_data"},this.embedReportSegmentsPerbaikan={embed:"user.user,user.segmens.segmen,user.status_report"},this.embedReportSchedule={embed:"user.user,user.segmens.segmen,user.status_report"},this.embedReportList={embed:"segmens.segmen,segmens.analytic_data,segmens.photos,status_report,user"}}initMap(x){this.map||(this.map=x),this.map.zoomControl.setPosition("bottomright")}ngAfterViewInit(){window.dispatchEvent(new Event("resize"))}ngOnChanges(x){x.allowDragging&&(this.mapOptions.dragging=this.allowDragging)}ngOnInit(){null==this.polylineData.segmen&&null==this.perbaikanSegmen?(this.getSubDistrict(),this.getReportSegmens()):null!=this.perbaikanSegmen?this.getReportSegmensBySchedule():this.getReportSegmentById(),this.condition()}toggleCollapse(){this.isCollapsed||this.getStatusDss(),this.isCollapsed=!this.isCollapsed}toggleFullscreen(){const x=document.getElementById("map");x&&(document.fullscreenElement?document.exitFullscreen&&document.exitFullscreen():x.requestFullscreen&&x.requestFullscreen())}onOptionChange(x){this.selectedOption=x,this.map&&(this.map.removeLayer(this.pointLayer),this.map.removeLayer(this.polygonLayer),this.map.removeLayer(this.polylineLayer)),this.selectedData=[],"DSS"===x?this.map&&this.map.closePopup():"Titik Laporan"===x&&(this.getStatusTitik(),this.getStatusSegmenByReport()),this.map&&("DSS"===x?(this.polygonLayer.addTo(this.map),this.polylineLayer.addTo(this.map)):"point"===x&&this.pointLayer.addTo(this.map))}createCustomIcon(x,B,C){return new a.DivIcon({className:"custom-icon",html:``,iconSize:[B,C],iconAnchor:[B/2,C]})}addMarkers(x){const C={iconUrl:this.getIconByStatus(x),iconSize:[32,32]};return a.icon(C)}getIconByStatus(x){switch(x){case"PROG":return"assets/images/icon/marker-dalam_proses.png";case"FOLUP":return"assets/images/icon/marker-tindak_lanjut.png";case"DONE":return"assets/images/icon/marker-selesai.png";case"RPR":return"assets/images/icon/marker-perbaikan.png";case"FIXED":return"assets/images/icon/marker-selesai-perbaikan.png";default:return"assets/images/icon/marker-default.png"}}getColorByStatusTitikLaporan(x){return{"Dalam Proses":"#586AF5","Tindak Lanjut":"#FFAB00","Selesai Perbaikan":"#663000",Perbaikan:"#F35625",Selesai:"#24D07A"}[x]||"transparent"}getStatusDss(){const x={"Berlubang Parah":"#215A99","Berlubang Sedang":"#2B79CC","Berlubang Ringan":"#87C0FF","Terkelupas Parah":"#18795F","Terkelupas Sedang":"#1CA762","Terkelupas Ringan":"#4FDA95","Retak Parah":"#992A44","Retak Sedang":"#FF4671","Retak Ringan":"#FF90AA","Bergelombang Parah":"#322564","Bergelombang Sedang":"#644BC8","Bergelombang Ringan":"#977EFB","PermukaanKasar Berat":"#CCCC00","PermukaanKasar Sedang":"#FFFF00","PermukaanKasar Ringan":"#FFFF66"},B=Object.values(x);this.statusDss=Object.keys(x).map((C,U)=>({status:C,jumlah:0,color:B[U]}))}getStatusTitik(){const x={"Dalam Proses":"#586AF5","Tindak Lanjut":"#FFAB00","Selesai Perbaikan":"#663000",Perbaikan:"#F35625",Selesai:"#24D07A"},B=Object.values(x);this.statusTitikLaporan=Object.keys(x).map((C,U)=>({status:C,jumlah:0,color:B[U]}))}getColorByStatusDss(x,B){const U={"- -":"#EC8F5E","Berlubang Parah":"#215A99","Berlubang Sedang":"#2B79CC","Berlubang Ringan":"#87C0FF","Terkelupas Parah":"#18795F","Terkelupas Sedang":"#1CA762","Terkelupas Ringan":"#4FDA95","Retak Parah":"#992A44","Retak Sedang":"#FF4671","Retak Ringan":"#FF90AA","Bergelombang Parah":"#322564","Bergelombang Sedang":"#644BC8","Bergelombang Ringan":"#977EFB","PermukaanKasar Berat":"#CCCC00","PermukaanKasar Sedang":"#FFFF00","PermukaanKasar Ringan":"#FFFF66"};return U[`${x} ${B}`]||U[x]}condition(){return 0===this.polylineLayer.getLayers().length}sortCustomDss(){this.statusTitikLaporan.sort((x,B)=>{const C=["Dalam Proses","Ditindak Lanjuti","Perbaikan","Selesai"];return C.indexOf(x.status)-C.indexOf(B.status)})}sortByCustomOrder(){this.statusDss.sort((x,B)=>{const C=["Berlubang Parah","Berlubang Sedang","Berlubang Ringan","Terkelupas Parah","Terkelupas Sedang","Terkelupas Ringan","Retak Parah","Retak Sedang","Retak Ringan","Bergelombang Parah","Bergelombang Sedang","Bergelombang Ringan","NULL"];return C.indexOf(x.status)-C.indexOf(B.status)})}getReportSegmensBySchedule(){this.mapOptions.zoom=18,this.mapOptions.dragging=!1,this.perbaikan.getById(this.perbaikanSegmen).subscribe(x=>{const B=x.data.report.segmens;for(const C of B){const q=JSON.parse(C.segmen.geojson).coordinates,Q=q[0];this.lat=Q[1],this.lng=Q[0];const ft=q.map(yt=>({lat:yt[1],lng:yt[0]})),z=new a.Polyline(ft,{color:"#586AF5",weight:8});z.on("mouseover",function(){}),this.scheduleLayer.addLayer(z)}this.map&&(this.map?.panTo((0,a.latLng)(this.lat,this.lng)),this.scheduleLayer.addTo(this.map))})}getReportSegmentById(){this.loading.isLoading(),this.mapOptions.zoom=19,this.mapOptions.dragging=!1,this.reportSegmens.getById(this.polylineData.id).subscribe({next:({})=>{const B=JSON.parse(this.polylineData.segmen.geojson).coordinates,C=B[0];this.lat=C[1],this.lng=C[0];const U=B.map(Y=>({lat:Y[1],lng:Y[0]})),q=this.polylineData.user_level,Q=this.polylineData.user_type,ft=new a.Polyline(U,{color:this.getColorByStatusDss(Q,q),weight:8});console.log(Q,q),this.map&&(this.polylineLayer.addTo(this.map),this.map.setZoom(this.mapOptions.zoom)),this.map?.panTo((0,a.latLng)(this.lat,this.lng)),this.polylineLayer.addLayer(ft)},error:()=>{}})}getReportSegmens(){this.loading.isLoading(),this.reportSegmens.getAll(this.embedReportSegments).subscribe(x=>{const B=x.data;if(B&&B.length>0){this.polylineLayer.clearLayers();for(const C of B){const Q=JSON.parse(C.segmen.geojson).coordinates.map(z=>({lat:z[1],lng:z[0]})),$=new a.Polyline(Q,{color:this.getColorByStatusDss(C.user_type,C.user_level),weight:5});this.polylineLayer.addLayer($)}this.map&&this.polylineLayer.addTo(this.map)}},x=>{})}getStatusSegmenByReport(){this.api.getAll(this.embedReportList).subscribe(x=>{const B=x.data;if(B&&B[0]?.segmens&&B[0]?.segmens.length>0){this.pointLayer.clearLayers();for(const C of B){const U=C.segmens;for(const q of U){const Y=JSON.parse(q?.segmen?.geojson).coordinates.map(yt=>({lat:yt[1],lng:yt[0]})),$=q.user_type+" "+q.user_level,z=C.status_id;if("RJT"!==z){const yt=a.icon({iconUrl:this.getIconByStatus(z),iconSize:[32,32],iconAnchor:[16,32]}),Z=a.marker(Y[0],{icon:yt}).addTo(this.pointLayer);this.pointLayer.setStyle({className:"mask"}),Z.addTo(this.pointLayer),Z.on("click",X=>{for(const ht of q.photos)this.map&&a.popup({className:"custom-popup"}).setLatLng(X.latlng).setContent(`\n
\n ${C.status_report.name}\n
\n\n No.Tiket ${C.no_ticket}\n
\n\n ${C.note}\n
\n