PageSourceSearch

https://buildertrend.net/app/static/HoursWorkedByJobReport-BcXfhWty.js

js buildertrend.net collected 2026-10-02 10:37:59 UTC 5,444 bytes, 2 lines download raw bytes

1import{r as i,aP as I,I as T,k as a}from"./vendor-frozen-BjHTscMc.js";import{W as O,eA as n,c0 as M,bb as L,X as w,aq as E,r as v,q as W,p as A}from"./index-BXLY1or4.js";import{u as G,d as q,E as V,R as _}from"./JobReportTotalPanel-BJ8UupTi.js";import{u as U,R as z}from"./useReportDateRange-vnIwtut1.js";import{J as X}from"./JobReportTotalPanel-BFBsgGml.js";import{R as Y}from"./ReportingGrid-B6j8K7aO.js";import"./ReportDefinitions-BqswUFD5.js";import"./DetailFrame-CW3_R3qb.js";import"./Frame-7YfHlRN6.js";import"./DateRange-BRAzMxtm.js";import"./BTDatePicker-c-89lJ3I.js";import"./BTRangePicker-B75hsto1.js";import"./useBuilderDateFilterUtils-BCRo3QqR.js";import"./FilteredEmptyState-BzV6N6ut.js";import"./AgGridReact-MPUJK_cG.js";import"./AgGridReact.utility-CGnT5jsu.js";import"./main.esm-CFkd_k42.js";import"./standardValueFormatters-0dAQOfuH.js";import"./PercentInvoicedBar-BHYiF4hQ.js";import"./PercentageDisplay-Ii1mvGVI.js";import"./PercentInvoicedBreakdown-BkFtWDB3.js";import"./PercentageDisplayBar-X3LDSFSQ.js";import"./BTPill-r5Uyh9Qv.js";import"./BTProgressBar-BTi746li.js";import"./Currency-vBwVcJNE.js";import"./TextTruncate.utility-C3epKT3I.js";import"./BTNumberInput-drz-jbjz.js";import"./Percentage-4yHczdwr.js";var e=(o=>(o.JobName="jobName",o.JobStatus="jobStatus",o.ProjectManagers="projectManagers",o.JobGroup="jobGroup",o.RegularHours="regularHours",o.OvertimeHours="overtimeHours",o.DoubleOvertimeHours="doubleOvertimeHours",o.TotalHours="totalHours",o))(e||{});const K=[{field:e.JobName,headerName:"Job name",tooltipField:e.JobName},{type:"jobStatusBadge",field:e.JobStatus,headerName:"Job status",tooltipField:e.JobStatus},{type:"listPill",field:e.ProjectManagers,headerName:"Project managers",tooltipField:e.ProjectManagers,initialHide:!0},{type:"listPill",field:e.JobGroup,headerName:"Job group",tooltipField:e.JobGroup,initialHide:!0},{field:e.RegularHours,headerName:"Regular hours",type:"time"},{field:e.OvertimeHours,headerName:"Overtime hours",type:"time"},{field:e.DoubleOvertimeHours,headerName:"Double overtime hours",type:"time"},{field:e.TotalHours,headerName:"Total hours",type:"time"}],y=[{headerName:"DATA",children:[{field:e.DoubleOvertimeHours},{field:e.OvertimeHours},{field:e.RegularHours},{field:e.TotalHours}]},{headerName:"JOB DETAILS",children:[{field:e.JobGroup},{field:e.JobName},{field:e.JobStatus},{field:e.ProjectManagers}]}],Q=()=>
1{const o=G("hours_worked_by_job"),[r,k]=i.useState({dateRange:null,selectedItem:n.AllDates}),d=i.useRef(null),c="HoursByJobReport",R=M(L),J=w({component:c}),j=R.builderId,b=I(),h=i.useRef(!1),D=E("admin",["canViewReports"]),g=U(r),{data:f,isLoading:u,isError:l,refetch:S,isFetching:p}=q({startDate:g.startDate,endDate:g.endDate},{query:{enabled:!((r.selectedItem===n.CustomDates||r.selectedItem===n.Weekly||r.selectedItem===n.BiWeekly||r.selectedItem===n.SemiMonthly)&&(!r.dateRange||!r.dateRange[0]||!r.dateRange[1])),keepPreviousData:!0,onSuccess:()=>{h.current||(J.trackEvent({event:"PageView",uniqueId:"hours-by-job-report-load",jobId:-1,builderId:j}),h.current=!0)}}}),C=i.useCallback(async t=>{if(t.api&&!t.api.isDestroyed()){const s=t.api.getColumn(e.JobStatus);if(s){const m=t.api.getFilterModel();s.isFilterActive()?await t.api.setColumnFilterModel(e.JobStatus,m[e.JobStatus]).then(()=>{t.api.onFilterChanged()}):await t.api.setColumnFilterModel(e.JobStatus,{values:["Open"]}).then(()=>{t.api.onFilterChanged()})}}},[]),x=i.useCallback(async t=>{if(t.api&&!t.api.isDestroyed()){const s=t.api.getColumn(e.JobStatus);if(s){const m=t.api.getFilterModel();s.isFilterActive()?await t.api.setColumnFilterModel(e.JobStatus,m[e.JobStatus]).then(()=>{t.api.onFilterChanged()}):await t.api.setColumnFilterModel(e.JobStatus,{values:["Open"]}).then(()=>{t.api.onFilterChanged()})}}},[]),N=i.useCallback(()=>{d.current&&d.current.exportToExcel()},[]),B=i.useCallback(()=>{b(v.reporting.reportList.getLink())},[b]),F=i.useCallback((t,s)=>{k(s)},[]);if(!D)return T.error("You do not have access to this feature. This may be due to changes to the builder’s permission settings. Contact your site administrator for more information.",5),a.jsx(a.Fragment,{});const H=l?a.jsx(V,{emptyReason:f?.data.emptyStateCondition,reload:S,reportName:"hours worked, by job",helpCenterLink:"",isError:l}):a.jsx(Y,{ref:d,columnSideBarLayout:y,columnDefs:K,data:f?.data.rowData??[],loading:u||p,defaultColDef:{minWidth:100},exportFileName:"hours-by-job-report",filtersSideBarLayout:y,useDefaultSidebar:!0,statusBar:{statusPanels:[{align:"left",statusPanel:X}]},suppressMultiSort:!0,reportTrackingComponentName:c,onFirstDataRendered:C,onRowDataUpdated:x}),P=a.jsxs("div",{className:"report-description-date-row",children:[a.jsx(W,{className:"py-1",size:"normal-md",text:o.description}),!l&&a.jsx(z,{dateRange:r,onDateChange:F,id:"hoursByJobDatePicker",testId:"hours-by-job-date-picker",disableVirtualScroll:!0,isDisabled:u||p})]});return a.jsx(_,{testid:"hoursByJobReportLayout",headerTestid:"hours-worked-by-job-item-header",ariaLabel:"Hours Worked By Job Report Header",title:o.name,backLinkOnClick:B,secondaryActions:[a.jsx(a.Fragment,{children:!(u||l||p)&&a.jsx(A,{type:"secondary",id:"hoursByJobExportButton","data-testid":"hours-by-job-export-button",onClick:N,children:"Export"})})],description:P,children:H})},xe=O(Q)("Could not load HoursWorkedByJobReport");export{xe as HoursWorkedByJobReport,xe as default};
2//# sourceMappingURL=HoursWorkedByJobReport-BcXfhWty.js.map

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.