PageSourceSearch

https://vocport.gov.in/chunk-CXLKKSU7.js

js vocport.gov.in collected 2026-10-02 19:39:31 UTC 17,395 bytes, 1 lines download raw bytes

1import{a as W}from"./chunk-GZMIR4MZ.js";import{a as Q}from"./chunk-WSFU6SFG.js";import"./chunk-PJU3RY6S.js";import{a as G}from"./chunk-I7XIRC2S.js";import{a as X}from"./chunk-A5M5H5PX.js";import"./chunk-U4H4SNCJ.js";import{C as U,D as q,E as j,c as T,e as x,g as D,h as N,l as R,m as B,n as L,p as z,s as O,x as H}from"./chunk-T3OC74ZZ.js";import"./chunk-NAOEBZYB.js";import"./chunk-K2BAHOWP.js";import"./chunk-4QTHKBSW.js";import{m as I,w as M}from"./chunk-EQ6PZGEX.js";import{Eb as u,Gb as S,Hb as P,Nb as o,Ob as s,Pb as d,Tb as C,Yb as p,Zb as f,dc as y,ec as V,fc as F,gb as a,ic as E,jc as l,kc as A,lb as g,lc as _,na as m,oa as h,sb as w,sc as k,xb as v}from"./chunk-QZFOZYL5.js";import"./chunk-SZAW6ZBW.js";var J=["fileInput"],K=()=>[5,10,25,50];function Y(r,e){r&1&&(o(0,"span",21),l(1,"(Static - cannot be changed)"),s())}function Z(r,e){r&1&&(o(0,"div",40),d(1,"i",41),l(2," Title is required. "),s())}function ee(r,e){r&1&&(o(0,"div",40),d(1,"i",41),l(2," Please enter a valid count (minimum 0). "),s())}function te(r,e){r&1&&(o(0,"div")(1,"label",16),l(2," Icon Class (Optional) "),s(),d(3,"input",42),o(4,"div",43),l(5," Remix Icon class name (e.g., ri-file-chart-line, ri-timer-line) "),s()())}function ie(r,e){r&1&&(o(0,"div")(1,"label",16),l(2," Subtitle (Optional) "),s(),d(3,"input",44),s())}function ne(r,e){if(r&1){let t=C();o(0,"div",45),d(1,"i"),o(2,"div",9)(3,"div",46),l(4),s(),o(5,"div",47),l(6),s()(),o(7,"button",48),p("click",function(){m(t);let n=f(2);return h(n.removeFile())}),d(8,"i",49),s()()}if(r&2){let t=f(2);a(),P(t.getFileIcon(t.selectedFile.name)),S("fs-3",!0)("text-danger",t.isPdfFile(t.selectedFile.name))("text-success",t.isExcelFile(t.selectedFile.name))("text-info",t.isCsvFile(t.selectedFile.name)),a(3),A(t.selectedFile.name),a(2),_("",(t.selectedFile.size/1024/1024).toFixed(2)," MB ")}}function oe(r,e){r&1&&d(0,"i",50)}function se(r,e){if(r&1){let t=C();o(0,"div",3),p("click",function(){m(t);let n=f();return h(n.closeModal())}),o(1,"div",4),p("click",function(n){return m(t),h(n.stopPropagation())}),o(2,"div",5)(3,"div",6)(4,"div",7),d(5,"i",8),s(),o(6,"div",9)(7,"h5",10),l(8),s(),o(9,"p",11),l(10),s()(),o(11,"button",12),p("click",function(){m(t);let n=f();return h(n.closeModal())}),d(12,"i",13),s()(),o(13,"div",14)(14,"form",15),p("ngSubmit",function(){m(t);let n=f();return h(n.onSubmit())}),o(15,"div")(16,"label",16),l(17," Title "),o(18,"span",17),l(19,"*"),s(),v(20,Y,2,0,"span",18),s(),d(21,"input",19),v(22,Z,3,0,"div",20),s(),o(23,"div")(24,"label",16),l(25," Count "),o(26,"span",17),l(27,"*"),s(),o(28,"span",21),l(29,"(Daily updatable)"),s()(),d(30,"input",22),v(31,ee,3,0,"div",20),s(),v(32,te,6,0,"div",23)(33,ie,4,0,"div",23),o(34,"div")(35,"label",16),l(36," File Upload (Optional) "),o(37,"span",21),l(38,"(Daily updatable - max 10MB)"),s()(),o(39,"div",24),p("click",function(){m(t);let n=E(41);return h(n.click())}),o(40,"input",25,0),p("change",function(n){m(t);let c=f();return h(c.onFileSelected(n))}),s(),d(42,"i",26),o(43,"p",27),l(44,"Click to upload file or drag and drop"),s(),o(45,"p",28),l(46,"PDF, Excel (XLS, XLSX), CSV files, up to 10MB"),s()(),v(47,ne,9,12,"div",29),s(),o(48,"div")(49,"label",16),l(50," Status "),o(51,"span",17),l(52,"*"),s()(),o(53,"div",30)(54,"div",31),d(55,"input",32),o(56,"label",33),l(57,"Active"),s()(),o(58,"div",31),d(59,"input",34),o(60,"label",35),l(61,"Inactive"),s()()()()()(),o(62,"div",36)(63,"button",37),p("click",function(){m(t);let n=f();return h(n.closeModal())}),l(64,"Cancel"),s(),o(65,"button",38),p("click",function(){m(t);let n=f();return h(n.onSubmit())}),v(66,oe,1,0,"i",39),l(67),s()()()()()}if(r&2){let t,i,n=f();a(8),_(" ",n.isEditMode?"Update Vessel Position":"Add New Vessel Position"," "),a(2),_(" ",n.isEditMode?"Update daily count and PDF file (title is static)":"Create new vessel position entry for daily updates."," "),a(4),u("formGroup",n.vesselForm),a(6),u("ngIf",n.isEditMode),a(),S("bg-light",n.isEditMode),u("readonly",n.isEditMode),a(),u("ngIf",((t=n.vesselForm.get("title"))==null?null:t.invalid)&&((t=n.vesselForm.get("title"))==null?null:t.touched)),a(9),u("ngIf",((i=n.vesselForm.get("count"))==null?null:i.invalid)&&
1((i=n.vesselForm.get("count"))==null?null:i.touched)),a(),u("ngIf",!n.isEditMode),a(),u("ngIf",!n.isEditMode),a(14),u("ngIf",n.selectedFile),a(18),u("disabled",n.vesselForm.invalid||n.isSubmitting),a(),u("ngIf",n.isSubmitting),a(),_(" ",n.isSubmitting?"Saving...":n.isEditMode?"Update":"Create"," ")}}var $=class r{constructor(e,t,i,n){this.fb=e;this.apiService=t;this.alert=i;this.permissionService=n;this.vesselForm=this.fb.group({title:["",x.required],count:[0,[x.required,x.min(0)]],icon:[""],sub:[""],status:["active",x.required]})}fileInput;columns=[];data=[];totalRecords=0;isLoading=!1;rowActions=[];showModal=!1;isEditMode=!1;isSubmitting=!1;showAddButton=!1;vesselForm;selectedFile=null;currentEditId=null;ngOnInit(){this.setupTable(),this.loadData(),this.initializeRowActions(),this.initPermissions()}setupTable(){this.columns=[{key:"sno",label:"S.No",type:"number",align:"center",width:"80px"},{key:"title",label:"Title",type:"text",width:"250px"},{key:"count",label:"Count",type:"number",align:"center",width:"120px"},{key:"sub",label:"Subtitle",type:"text",width:"200px"},{key:"publishStatus",label:"Status",type:"status",align:"center",width:"150px",statusConfig:{published:{label:"Published",color:"#fff",backgroundColor:"#1B5E20"},pending:{label:"Pending",color:"#fff",backgroundColor:"#B26A00"}}},{key:"updatedAt",label:"Last Updated",type:"date",width:"150px",align:"center"}]}PERM_PREFIX="vessel-position";can(e){return this.permissionService.hasPermission(`${this.PERM_PREFIX}.${e}`)}initPermissions(){this.showAddButton=this.can("add")}initializeRowActions(){this.rowActions=[],this.can("edit")&&this.rowActions.push({icon:"edit",tooltip:"Update Count/File",color:"#0A3C7D",onClick:e=>this.onEdit(e)}),this.can("approval")&&this.rowActions.push({icon:"check",tooltip:"Approve & Publish",color:"#1B5E20",onClick:e=>this.approveVesselPosition(e),show:e=>e.publish===0},{icon:"close",tooltip:"Unpublish",color:"#B26A00",onClick:e=>this.unpublishVesselPosition(e),show:e=>e.publish===1}),this.can("delete")&&this.rowActions.push({icon:"delete",tooltip:"Delete",color:"#dc3545",onClick:e=>this.deleteVesselPosition(e)})}loadData(){this.isLoading=!0,this.apiService.getAllVesselPositionsHM(1,100).subscribe({next:e=>{if(e?.statusCode===200&&e?.data?.data){let t=e.data.data||[];this.data=t.map((i,n)=>({id:i.id,sno:n+1,title:i.title,count:i.count||0,filePath:i.filePath||null,icon:i.icon||null,sub:i.sub||null,status:i.isActive===1?"active":"inactive",publish:i.publish||0,publishStatus:i.publish===1?"published":"pending",createdAt:new Date(i.createdAt),updatedAt:new Date(i.updatedAt||i.createdAt)})),this.totalRecords=e.data.total||this.data.length}else this.data=[],this.totalRecords=0;this.isLoading=!1},error:e=>{console.error("Failed to fetch vessel positions:",e),this.alert.error(e.error?.message||"Failed to load vessel positions."),this.data=[],this.totalRecords=0,this.isLoading=!1}})}onAddNew(){this.isEditMode=!1,this.currentEditId=null,this.selectedFile=null,this.vesselForm.reset({title:"",count:0,icon:"",sub:"",status:"active"}),this.showModal=!0}onEdit(e){this.isEditMode=!0,this.currentEditId=e.id,this.selectedFile=null,this.isLoading=!0,this.apiService.getVesselPositionByIdHM(e.id).subscribe({next:t=>{let i=t?.data||t;this.vesselForm.patchValue({title:i.title||"",count:i.count||0,icon:i.icon||"",sub:i.sub||"",status:i.isActive===1?"active":"inactive"}),this.isLoading=!1,this.showModal=!0},error:t=>{console.error("Error fetching vessel position by ID:",t),this.alert.error("Failed to load vessel position details."),this.isLoading=!1}})}onFileSelected(e){let t=e.target.files[0];if(!t)return;let i=10*1024*1024,n=["application/pdf","application/msword","application/vnd.openxmlformats-officedocument.wordprocessingml.document"],c=["pdf","doc","docx"],b=t.name.split(".").pop()?.toLowerCase();if(!n.includes(t.type)||!c.includes(b||"")){this.alert.error("Only PDF, DOC, DOCX files are allowed.");return}if(t.size>i){this.alert.error("File size must not exceed 10MB.");return}this.selectedFile=t}getFileIcon(e){return this.isPdfFile(e)?"ri-file-pdf-line text-danger":this.isExcelFile(e)?"ri-file-excel-line text-success":this.isCsvFile(e)?"ri-file-text-line text-info":"ri-file-line"}isPdfFile(e){return e.toLowerCase().endsWith(".pdf")}isExcelFile(e){let t=e.toLowerCase();return t.endsWith(".xls")||t.endsWith(".xlsx")}isCsvFile(e){return e.toLowerCase().endsWith(".csv")}removeFile(){this.selectedFile=null,this.fileInput&&(this.fileInput.nativeElement.value="")}
1onSubmit(){if(this.vesselForm.invalid){this.vesselForm.markAllAsTouched();return}if(!this.isEditMode&&!this.selectedFile&&this.vesselForm.value.count===0){this.alert.error("Please provide at least a count value or upload a PDF file.");return}this.isSubmitting=!0;let e=new FormData;if(this.isEditMode){let t=this.vesselForm.value.count;if(t!=null&&t!==""){let i=Number(t);if(!isNaN(i)&&i>=0)e.append("count",i.toString());else{this.alert.error("Count must be a valid number greater than or equal to 0."),this.isSubmitting=!1;return}}e.append("isActive",this.vesselForm.value.status==="active"?"1":"0")}else{let t=(this.vesselForm.value.title||"").trim();if(!t){this.alert.error("Title is required."),this.isSubmitting=!1;return}e.append("title",t);let i=this.vesselForm.value.count,n=i!=null&&i!==""?Number(i):0;if(isNaN(n)||n<0){this.alert.error("Count must be a valid number greater than or equal to 0."),this.isSubmitting=!1;return}e.append("count",n.toString());let c=this.vesselForm.value.icon?.trim();c&&c!==""&&e.append("icon",c);let b=this.vesselForm.value.sub?.trim();b&&b!==""&&e.append("sub",b),e.append("isActive",this.vesselForm.value.status==="active"?"1":"0"),e.append("publish","0")}this.selectedFile&&e.append("filePath",this.selectedFile),this.isEditMode&&this.currentEditId?this.apiService.updateVesselPositionHM(this.currentEditId,e).subscribe({next:()=>{this.alert.success("Vessel position updated successfully!"),this.isSubmitting=!1,this.closeModal(),this.loadData()},error:t=>{console.error("Update failed:",t),this.alert.error(t.error?.message||"Failed to update vessel position."),this.isSubmitting=!1}}):this.apiService.addVesselPositionHM(e).subscribe({next:()=>{this.alert.success("Vessel position created successfully!"),this.isSubmitting=!1,this.closeModal(),this.loadData()},error:t=>{console.error("Create failed:",t),this.alert.error(t.error?.message||"Failed to create vessel position."),this.isSubmitting=!1}})}approveVesselPosition(e){this.alert.confirmAction("Approve Vessel Position",`Are you sure you want to approve and publish "${e.title}"?`).then(t=>{t.isConfirmed&&this.apiService.approveVesselPositionHM(e.id).subscribe({next:()=>{this.alert.success("Vessel position approved and published successfully!"),this.loadData()},error:i=>{console.error("Approve failed:",i),this.alert.error(i.error?.message||"Failed to approve vessel position.")}})})}unpublishVesselPosition(e){this.alert.confirmAction("Unpublish Vessel Position",`Are you sure you want to unpublish "${e.title}"?`).then(t=>{t.isConfirmed&&this.apiService.unpublishVesselPositionHM(e.id).subscribe({next:()=>{this.alert.success("Vessel position unpublished successfully!"),this.loadData()},error:i=>{console.error("Unpublish failed:",i),this.alert.error(i.error?.message||"Failed to unpublish vessel position.")}})})}deleteVesselPosition(e){this.alert.confirmDelete(e.title).then(t=>{t.isConfirmed&&this.apiService.deleteVesselPositionHM(e.id).subscribe({next:()=>{this.alert.success("Vessel position deleted successfully!"),this.loadData()},error:i=>{console.error("Delete failed:",i),this.alert.error(i.error?.message||"Failed to delete vessel position.")}})})}closeModal(){this.showModal=!1,this.isEditMode=!1,this.isSubmitting=!1,this.currentEditId=null,this.selectedFile=null,this.vesselForm.reset({status:"active"}),this.fileInput&&(this.fileInput.nativeElement.value="")}onPageChange(e){}onSortChange(e){}onFilterChange(e){}onRowAction(e){}onSelectionChange(e){}static \u0275fac=function(t){return new(t||r)(g(U),g(X),g(W),g(G))};static \u0275cmp=w({type:r,selectors:[["app-vessel-position"]],viewQuery:function(t,i){if(t&1&&y(J,5),t&2){let n;V(n=F())&&(i.fileInput=n.first)}},decls:2,vars:19,consts:[["fileInput",""],[3,"pageChange","sortChange","filterChange","addNew","displayedColumns","dataSource","totalRecords","pageSize","pageSizeOptions","isLoading","showSearch","showFilter","showAddButton","addButtonText","tableTitle","searchPlaceholder","rowActions","selectable","stickyHeader","stickyFooter","paginationStyle"],["class","modal fade show d-block bg-dark bg-opacity-75","tabindex","-1","role","dialog","aria-labelledby","vesselPositionModalTitle","aria-describedby","vesselPositionModalDescription","style","background-color: rgba(0, 0, 0, 0.75); z-index:2000;",3,"click",4,"ngIf"],["tabindex","-1","role","dialog","aria-labelledby","vesselPositionModalTitle","aria-describedby","vesselPositionModalDescription",1,"modal","fade","show","d-block","bg-dark","bg-opacity-75",2,"background-color","rgba(0, 0, 0, 0.75)","z-index","2000",3,"click"],["role","document",1,"modal-dialog","modal
1-dialog-centered","modal-lg",3,"click"],[1,"modal-content","border-0","shadow-lg","rounded-4","overflow-hidden"],[1,"modal-header","d-flex","align-items-center","gap-3","px-4","py-3","border-0",2,"background-color","#13296C","color","white","box-shadow","0 2px 8px rgba(0,0,0,0.25)"],[1,"d-flex","align-items-center","justify-content-center","rounded-3",2,"width","48px","height","48px","background-color","rgba(255,255,255,0.2)"],[1,"ri-ship-2-line","fs-4","text-white"],[1,"flex-grow-1"],["id","vesselPositionModalTitle",1,"fw-bold","mb-1","text-white"],["id","vesselPositionModalDescription",1,"small","mb-0",2,"color","rgba(255,255,255,0.85)"],["type","button",1,"btn","btn-light","btn-sm","rounded-circle","p-0","d-flex","align-items-center","justify-content-center","border-0","shadow-sm",2,"width","36px","height","36px",3,"click"],[1,"ri-close-line","fs-5",2,"color","#0B1941"],[1,"modal-body","p-4","bg-white"],[1,"d-flex","flex-column","gap-4",3,"ngSubmit","formGroup"],[1,"form-label","fw-semibold","text-dark"],[1,"text-danger"],["class","text-muted small ms-2",4,"ngIf"],["type","text","formControlName","title","placeholder","e.g., Performance of Vessels",1,"form-control","form-control-lg",3,"readonly"],["class","text-danger small mt-2",4,"ngIf"],[1,"text-muted","small","ms-2"],["type","number","formControlName","count","min","0","placeholder","Enter count value",1,"form-control","form-control-lg"],[4,"ngIf"],[1,"position-relative","border","border-2","border-dashed","rounded-3","bg-light","text-center","p-4",2,"cursor","pointer",3,"click"],["type","file","accept",".pdf,.doc,.docx","hidden","",3,"change"],[1,"ri-file-line","fs-1","text-primary","mb-2"],[1,"fw-semibold","mb-1"],[1,"text-muted","small","mb-0"],["class","mt-3 border rounded-3 p-3 bg-white shadow-sm d-flex align-items-center gap-3",4,"ngIf"],[1,"d-flex","align-items-center","gap-4","mt-2"],[1,"form-check"],["name","status","type","radio","formControlName","status","id","active","value","active",1,"form-check-input",2,"accent-color","#2947A3"],["for","active",1,"form-check-label","fw-semibold"],["name","status","type","radio","formControlName","status","id","inactive","value","inactive",1,"form-check-input",2,"accent-color","#2947A3"],["for","inactive",1,"form-check-label","fw-semibold"],[1,"modal-footer","bg-light","d-flex","justify-content-end","gap-3","py-3","px-4","border-top"],["type","button",1,"btn","btn-outline-secondary","px-4",3,"click"],["type","button",1,"btn","text-white","px-4","border-0",2,"background","linear-gradient(135deg,#2947A3,#13296C)",3,"click","disabled"],["class","ri-loader-4-line spin",4,"ngIf"],[1,"text-danger","small","mt-2"],[1,"ri-alert-line"],["type","text","formControlName","icon","placeholder","e.g., ri-file-chart-line",1,"form-control","form-control-lg"],[1,"text-muted","small","mt-1"],["type","text","formControlName","sub","placeholder","e.g., Active Reports",1,"form-control","form-control-lg"],[1,"mt-3","border","rounded-3","p-3","bg-white","shadow-sm","d-flex","align-items-center","gap-3"],[1,"fw-semibold"],[1,"text-muted","small"],["type","button",1,"btn","btn-sm","btn-outline-danger","rounded-circle",3,"click"],[1,"ri-close-line"],[1,"ri-loader-4-line","spin"]],template:function(t,i){t&1&&(o(0,"app-common-table",1),p("pageChange",function(c){return i.onPageChange(c)})("sortChange",function(c){return i.onSortChange(c)})("filterChange",function(c){return i.onFilterChange(c)})("addNew",function(){return i.onAddNew()}),s(),v(1,se,68,15,"div",2)),t&2&&(u("displayedColumns",i.columns)("dataSource",i.data)("totalRecords",i.totalRecords)("pageSize",10)("pageSizeOptions",k(18,K))("isLoading",i.isLoading)("showSearch",!0)("showFilter",!1)("showAddButton",i.showAddButton)("addButtonText","Add New Vessel Position")("tableTitle","Vessel Position Management")("searchPlaceholder","Search vessel positions...")("rowActions",i.rowActions)("selectable",!1)("stickyHeader",!0)("stickyFooter",!0)("paginationStyle","rich"),a(),u("ngIf",i.showModal))},dependencies:[M,I,q,R,T,B,L,D,N,H,j,z,O,Q],encapsulation:2})};export{$ as VesselPositionComponent};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.