{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/components/AvailableEvents/AvailableBids/AvailableBids.css?bda9","webpack:///./src/components/AvailableEvents/AvailableJobs/AvailableJobs.css?f772","webpack:///./src/dependencies/Raven.js","webpack:///./src/dependencies/JobProApi.js","webpack:///./src/dependencies/Storage.js","webpack:///./src/utils/formatCrewName.js","webpack:///./src/utils/matchCrews.js","webpack:///./src/redux/standardCrews/selectors.js","webpack:///./src/redux/standardCrews/index.js","webpack:///./src/redux/modals/crewModal/index.js","webpack:///./src/redux/modals/deleteModal/index.js","webpack:///./src/redux/modals/deliveryModal/index.js","webpack:///./src/redux/jobs/index.js","webpack:///./src/redux/modals/editModal/index.js","webpack:///./src/redux/modals/loadReportModal/index.js","webpack:///./src/redux/modals/printWorkOrderModal/index.js","webpack:///./src/redux/modals/settingsModal/index.js","webpack:///./src/redux/modals/appintmentCalendarModal/index.js","webpack:///./src/redux/modals/index.js","webpack:///./src/redux/searchBids/index.js","webpack:///./src/redux/searchPurchaseOrders/index.js","webpack:///./src/redux/searchEmployees/index.js","webpack:///./src/redux/searchJobs/index.js","webpack:///./src/redux/searchAppointments/index.js","webpack:///./src/redux/settings/index.js","webpack:///./src/redux/calendar/index.js","webpack:///./src/utils/matchEquipment.js","webpack:///./src/redux/dropdowns/index.js","webpack:///./src/redux/organization/index.js","webpack:///./src/redux/tokenInfo/index.js","webpack:///./src/redux/workOrders/index.js","webpack:///./src/redux/events/selectors.js","webpack:///./src/redux/events/index.js","webpack:///./src/selectors/eventsByCrew.js","webpack:///./src/components/shared/CrewCapacities/index.jsx","webpack:///./src/components/shared/CrewName.jsx","webpack:///./src/components/shared/Event/FieldSettings.jsx","webpack:///./src/components/shared/Address.jsx","webpack:///./src/components/shared/Event/BidEvent/ActionButtons.jsx","webpack:///./src/components/shared/Event/DisplayField.jsx","webpack:///./src/components/shared/Event/BidEvent/Contact.jsx","webpack:///./src/components/shared/Event/BidEvent/Details.jsx","webpack:///./src/components/shared/Event/BidEvent/BidEvent.jsx","webpack:///./src/components/shared/Event/BidEvent/index.js","webpack:///./src/components/shared/MultilineText.jsx","webpack:///./src/components/shared/Event/JobEvent/ActionButtons.jsx","webpack:///./src/components/shared/Event/JobEvent/Contact.jsx","webpack:///./src/components/shared/Event/JobEvent/Details.jsx","webpack:///./src/components/shared/Currency.jsx","webpack:///./src/components/shared/Event/JobEvent/Financials.jsx","webpack:///./src/components/shared/Event/JobEvent/Materials.jsx","webpack:///./src/components/shared/Event/JobEvent/Time.jsx","webpack:///./src/components/AvailableEvents/AvailableEmployees/Employee.jsx","webpack:///./src/components/shared/Event/JobEvent/JobEvent.jsx","webpack:///./src/components/shared/Event/JobEvent/index.js","webpack:///./src/components/shared/Event/DeliveryEvent/ActionButtons.jsx","webpack:///./src/components/shared/Event/DeliveryEvent/Details.jsx","webpack:///./src/utils/objectValues.js","webpack:///./src/components/shared/Event/DeliveryEvent/Materials.jsx","webpack:///./src/components/shared/Event/DeliveryEvent/DeliveryEvent.jsx","webpack:///./src/components/shared/Event/DeliveryEvent/index.js","webpack:///./src/components/shared/Event/AppointmentEvent/ActionButtons.jsx","webpack:///./src/components/shared/Event/AppointmentEvent/Details.jsx","webpack:///./src/components/shared/Event/AppointmentEvent/AppointmentEvent.jsx","webpack:///./src/components/shared/Event/AppointmentEvent/index.js","webpack:///./src/components/shared/Event/Event.jsx","webpack:///./src/components/shared/Event/index.js","webpack:///./src/components/DayView/Crew.jsx","webpack:///./src/components/DayView/JobTypeCapacity.jsx","webpack:///./src/components/DayView/JobTypeCapacities.jsx","webpack:///./src/components/DayView/DayView.jsx","webpack:///./src/components/DayView/index.js","webpack:///./src/redux/dispatcher/index.js","webpack:///./src/components/Dispatcher/Crew.jsx","webpack:///./src/components/Dispatcher/EventListInfoWindow.jsx","webpack:///./src/components/Dispatcher/markerSvg.js","webpack:///./src/components/Dispatcher/EventMarker.jsx","webpack:///./src/components/Dispatcher/DispatchMap.jsx","webpack:///./src/components/Dispatcher/EventPreview.jsx","webpack:///./src/components/Dispatcher/Dispatcher.jsx","webpack:///./src/components/Dispatcher/index.js","webpack:///./src/components/shared/EditCrew/EquipmentEdit.jsx","webpack:///./src/components/shared/EditCrew/ResourceEdit.jsx","webpack:///./src/components/shared/EditCrew/index.jsx","webpack:///./src/components/modals/CrewModal/CrewModal.jsx","webpack:///./src/components/modals/CrewModal/index.js","webpack:///./src/components/modals/DeleteEventModal/DeleteEventModal.jsx","webpack:///./src/components/modals/DeleteEventModal/index.js","webpack:///./src/components/shared/EditDelivery/index.jsx","webpack:///./src/components/modals/DeliveryModal/DeliveryModal.jsx","webpack:///./src/components/modals/DeliveryModal/index.js","webpack:///./src/components/shared/JobStatusDropdown.jsx","webpack:///./src/components/shared/EditEvent/index.jsx","webpack:///./src/components/shared/LoadingSpinner/index.jsx","webpack:///./src/components/modals/EditEventModal/EditEventModal.jsx","webpack:///./src/components/modals/EditEventModal/index.js","webpack:///./src/components/shared/Ordinal.jsx","webpack:///./src/components/modals/LoadReportModal/LoadReport.jsx","webpack:///./src/components/modals/LoadReportModal/LoadReportModal.jsx","webpack:///./src/components/modals/LoadReportModal/index.js","webpack:///./src/components/modals/PrintWorkOrderModal/index.js","webpack:///./src/components/modals/PrintWorkOrderModal/PrintWorkOrderModal.jsx","webpack:///./src/components/shared/Switch.jsx","webpack:///./src/components/modals/SettingsModal/SettingsModal.jsx","webpack:///./src/components/modals/SettingsModal/index.js","webpack:///./src/components/shared/AppointmentTypesDropDown.jsx","webpack:///./src/components/shared/DropDowns/EmployeeDropDown.jsx","webpack:///./src/components/shared/AppointmentCalendar/index.jsx","webpack:///./src/components/modals/AppointmentCalendarModal/AppointmentCalendarModal.jsx","webpack:///./src/components/modals/AppointmentCalendarModal/index.js","webpack:///./src/components/MonthView/Cell.jsx","webpack:///./src/components/MonthView/MonthView.jsx","webpack:///./src/components/MonthView/index.js","webpack:///./src/components/FinancialTotals/FinancialTotalsContent.jsx","webpack:///./src/components/FinancialTotals/FinancialTotals.jsx","webpack:///./src/components/FinancialTotals/index.js","webpack:///./src/components/MaterialTotals/MaterialTotalsContent.jsx","webpack:///./src/components/MaterialTotals/MaterialTotals.jsx","webpack:///./src/components/MaterialTotals/index.js","webpack:///./src/components/SchedulerNavbar/DateNavigator.jsx","webpack:///./src/components/SchedulerNavbar/Filters.jsx","webpack:///./src/components/SchedulerNavbar/SchedulerNavbar.jsx","webpack:///./src/components/SchedulerNavbar/index.js","webpack:///./src/components/WeekView/CrewTag.jsx","webpack:///./src/components/WeekView/Day.jsx","webpack:///./src/components/WeekView/WeekView.jsx","webpack:///./src/components/WeekView/index.js","webpack:///./src/selectors/eventsByEquipment.js","webpack:///./src/components/EquipmentWeekView/Day.jsx","webpack:///./src/components/EquipmentWeekView/Equipment.jsx","webpack:///./src/components/EquipmentWeekView/EquipmentWeekView.jsx","webpack:///./src/components/EquipmentWeekView/index.js","webpack:///./src/components/AvailableEvents/AvailableEmployees/StandardCrew.jsx","webpack:///./src/components/AvailableEvents/AvailableEmployees/Results.jsx","webpack:///./src/components/AvailableEvents/AvailableEmployees/SearchForm.jsx","webpack:///./src/components/AvailableEvents/AvailableEmployees/AvailableEmplyees.jsx","webpack:///./src/components/AvailableEvents/AvailableEmployees/index.js","webpack:///./src/components/AvailableEvents/AvailableEmployees/Sidebar.js","webpack:///./src/components/AvailableEvents/AvailableBids/Bid.jsx","webpack:///./src/components/AvailableEvents/AvailableBids/Results.jsx","webpack:///./src/components/AvailableEvents/AvailableBids/SearchForm.jsx","webpack:///./src/components/AvailableEvents/AvailableBids/AvailableBids.jsx","webpack:///./src/components/AvailableEvents/AvailableBids/index.js","webpack:///./src/components/AvailableEvents/AvailableJobs/Job.jsx","webpack:///./src/components/AvailableEvents/AvailableJobs/Results.jsx","webpack:///./src/components/AvailableEvents/AvailableJobs/SearchForm.jsx","webpack:///./src/components/AvailableEvents/AvailableJobs/AvailableJobs.jsx","webpack:///./src/components/AvailableEvents/AvailableJobs/index.js","webpack:///./src/components/AvailableEvents/AvailablePurchaseOrders/PurchaseOrder.jsx","webpack:///./src/components/AvailableEvents/AvailablePurchaseOrders/Results.jsx","webpack:///./src/components/AvailableEvents/AvailablePurchaseOrders/SearchForm.jsx","webpack:///./src/components/AvailableEvents/AvailablePurchaseOrders/AvailablePurchaseOrders.jsx","webpack:///./src/components/AvailableEvents/AvailablePurchaseOrders/index.js","webpack:///./src/components/AvailableEvents/AvailableAppointments/Appointment.jsx","webpack:///./src/components/AvailableEvents/AvailableAppointments/Results.jsx","webpack:///./src/components/AvailableEvents/AvailableAppointments/SearchForm.jsx","webpack:///./src/components/AvailableEvents/AvailableAppointments/AvailableAppointments.jsx","webpack:///./src/components/AvailableEvents/AvailableAppointments/index.js","webpack:///./src/components/AvailableEvents/index.jsx","webpack:///./src/components/AvailableEvents/AvailableJobs/SidebarJobs.js","webpack:///./src/components/Scheduler.jsx","webpack:///./src/redux/equipments/selector.js","webpack:///./src/redux/equipments/index.js","webpack:///./src/containers/SchedulerContainer.jsx","webpack:///./src/App.js","webpack:///./src/redux/reducers.js","webpack:///./src/redux/epics.js","webpack:///./src/redux/configureStore.js","webpack:///./src/index.js","webpack:///./src/components/AvailableEvents/AvailableAppointments/AvailableAppointments.css?790e","webpack:///./src/components/AvailableEvents/AvailablePurchaseOrders/AvailablePurchaseOrders.css?3049","webpack:///./src/components/shared/CrewCapacities/CrewCapacities.css?72fd","webpack:///./src/components/shared/Event/AppointmentEvent/AppointmentEvent.css?ec2c","webpack:///./src/components/shared/LoadingSpinner/LoadingSpinner.css?9084","webpack:///./src/components/shared/Event/BidEvent/BidEvent.css?8b9e","webpack:///./src/components/shared/Event/JobEvent/JobEvent.css?9eea","webpack:///./src/components/WeekView/WeekView.less?be3a","webpack:///./src/components/shared/Event/DeliveryEvent/DeliveryEvent.css?2bc7","webpack:///./src/components/EquipmentWeekView/WeekView.less?7df4","webpack:///./src/components/Scheduler.css?4568","webpack:///../mvc/JobPro.MVC/Scripts/JobProAPI.js","webpack:///./src/components/DayView/DayView.less?0d65","webpack:///./src/components/MonthView/MonthView.css?3c7b","webpack:///./src/components/shared/EditCrew/EditCrew.css?adb9","webpack:///./src/components/SchedulerNavbar/SchedulerNavbar.css?1515","webpack:///./src/components/Dispatcher/Dispatcher.css?480a","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./src/components/AvailableEvents/AvailableEmployees/AvailableEmployees.css?cf1b"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","0","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","Raven","config","raven","environment","release","process","ignoreUrls","install","JobProApi","apiUrl","oauthToken","useCors","localForage","createInstance","crew","equipment","resources","filter","resource","map","firstName","lastName","join","a","b","id","aResourceIds","bResourceIds","every","indexOf","standardCrewsSelector","createSelector","state","standardCrews","crews","settings","entity","installationCrew","deliveryCrew","distinctStandardCrews","offices","office","some","reduce","distinct","matchCrews","isStandardCrew","prev","curr","o2","DEFAULT_STATE","loading","fetchStandardCrewsComplete","type","payload","events","show","toggleCrewModal","dispatch","equipmentPromise","query","schedulable","fields","limit","resourcesPromise","isActive","isJobAssignee","Promise","all","then","eventId","toggleDeleteModal","form","purchaseOrder","toggleDeliveryModal","getState","purchaseOrderId","find","e","purchaseOrderPromise","purchaseOrders","updateJobComplete","job","jobCrews","isEditCrewEnabled","isApptEditCrewEnabled","event","toggleEditModal","fetchEditModalComplete","modals","editModal","getEventOffice","getEventStandardCrewFilter","disabled","consolidate","skip","skipItems","laterOrders","itemSplit","items","byId","item","quantity","values","groupItems","remainingItems","carriedItems","deliveryItems","packagingAlternates","firstAlternate","remainingQuantity","deliveryQuantity","Math","floor","consolidated","round","futureQuantity","q","q2","sortPurchaseOrders","deliveryOrder","sortItems","loadReport","skipConsolidatingStops","loadReportComplete","toggleLoadReportModal","byEquipment","sort","reverse","namespace","CHANGE_WORK_ORDER_TEMPLATE","CLOSE","CONFIRM","CONFIRM_COMPLETE","OPEN","OPEN_CONFIRM","calendarEvents","workOrderTemplateId","confirm","options","confirmComplete","open","Array","isArray","date","epic","combineEpics","action$","state$","pipe","ofType","printWorkOrderModal","workOrderTemplates","workOrders","uniqueId","eventsQuery","String","versaItRoot","moment","format","templates","openConfirm","CALENDAR_FIELDS","eventCrews","customers","datasheets","toggleAppointmentModal","fetchAppointmentModalComplete","toggleApptEditModal","combineReducers","getAppointmentOffice","getAppointmentStandardCrewFilter","crewModal","deleteModal","deliveryModal","jobStatus","status","jobPriorityNotes","priorityNotes","loadReportModal","settingsModal","appintmentCalendarModal","epics","description","endDate","endTime","startDate","startTime","console","log","x","isCrewUpdateNeeded","schedulerView","jobs","put","resourcePercentage","updateEvent","jobId","changes","switchMap","calendarPromise","calendar","jobCrewsPromise","resolve","printWorkOrderModalEpic","consolidatedLoad","customer","datasheet","appointmentType","appttype","scheduleAppointmentExplicit","fetchCalendar","customersPromise","eventid","bids","bidTypes","salespeople","fetchAvailableBidsComplete","searchCustomersComplete","statuses","suppliers","fetchAvailablePurchaseOrdersComplete","employees","selected_employees","employeeToggle","togleState","toggleClass","fetchAvailableEmployees","fetchAvailableEmployeesComplete","searchEmployeesComplete","jobStatuses","jobTypes","jobToggle","fetchAvailableJobsComplete","CALENDAR_EVENTS_FIELDS_DATASHEET","datasheetsearch","localStorage","getItem","appointments","appointmentToggle","fetchAvailableAppointmentsComplete","searchCustomers","searchDatasheets","searchDatasheetsComplete","FIELD_DEFAULTS","details","label","visible","onText","offText","customerName","contact","salesperson","deliveryStatus","supplier","deliveryJobs","location","line1","line2","city","zip","deliveryShipTo","financial","jobRevenue","jobProposedProfit","jobActualProfit","jobEstimatedLabor","color","detailEnabled","employeeSearchToggle","jobSearchToggle","financialEnabled","locationEnabled","materialEnabled","sortoption","SortTypes","updateSettings","schedulerStorage","reloadCalendar","debounceTime","setItem","fieldsSelector","keys","k","selector","split","container","setProperty","JSON","parse","stringify","deepCopy","CREW_FIELDS","PURCHASE_ORDER_FIELDS","activeCrew","activeEquipment","showBids","showDeliveries","showJobs","showAppointments","selected_week_view","showApptMenuItem","showMenuItem","getDefaultState","getEndDate","scheduleDate","dateDiff","diff","add","getNextPurchaseOrderDeliveryOrder","max","getNextCalendarDisplayOrder","displayOrder","mapPurchaseOrderToEvent","random","dateDelivered","evttype","performScheduleJob","performSchedulePurchaseOrder","update","scheduleBid","bidId","scheduleJobExplicit","rescheduleEvent","rescheduleEventExplicit","datasheetid","customerid","appointmentype","startdate","starttime","enddate","endtime","schedulePurchaseOrderExplicit","setActiveCrew","err","updatePurchaseOrder","openEvent","bid","hideMenuItem","isNumber","performReschedule","nextDeliveryOrder","tentative","nextDisplayOrder","getNextCalendarDisplayOrderEquipment","ApptType","apptype","StartTime","EndTime","savedSettings","flatMap","appointmenttype","Crew","Equipment","Resources","EndDate","StartDate","performScheduleAppointmentEvent","appointmentTypes","custoemrs","fetchDropdownsComplete","dropdowns","NAMESPACE","FETCH_ORGANIZATION","FETCH_ORGANIZATION_COMPLETE","latitude","longitude","fetchOrganizationComplete","organization","scope","fetchTokenInfoComplete","token","fetchWorkOrderTemplatesComplete","fetch","cache","credentials","response","json","sortEvents","sortedEvents","visibleEventsSelector","assignedEventsSelector","unassignedEventsSelector","JOB_FIELDS","filterEventsBetween","isSame","isBefore","isAfter","fetchEventsComplete","mapBidToEvent","estimatedStartDate","mapCalendarEventToEvent","mapTentativeJobToEvent","search","match","rangeUnit","startOf","endOf","criteria","jobType","purchaseOrderCriteria","tentativeJobsCriteria","scheduled","tentativeJobsPromise","endDate_gte","startDate_lte","bidType_in","status_in","jobType_in","id_in","dateDelivered_gte","dateDelivered_lte","calendarEvents_none","estimatedStartDate_gte","estimatedStartDate_lte","bidCriteria","jobs_none","graphQLPromise","post","variables","calendarCriteria","jobCriteria","poCriteria","bidPromise","crewId","datasheetId","sortCrews","sortCrewsByStandardCrew","sortEquipmentByDisplayOrder","sortEquipmentByName","sortEquipment","sortCrewsByEquipment","maximalOfficeSet","includeUnassigned","visibleEvents","active","unassignedCrewArray","getProgressBarStyle","percent","mediaQuery","styles","spread","minWidth","stacked","maxWidth","applyContainerQuery","containerQuery","workCapacities","estimatedDuration","capacities","v","laborAmount","materialLoad","materialQuantity","loadCapacity","durationCapacity","capacityType","laborCapacity","materialCapacity","estimatedDurationPercent","laborPercent","materialPercent","className","classNames","capacity","ProgressBar","bsStyle","toFixed","now","min","CrewName","style","formatCrewName","React","createContext","Address","address","multiline","props","addressIsEmpty","separator","FieldSettings","Consumer","addressFields","ActionButtons","ButtonComponent","buttonComponent","ContainerComponent","containerComponent","containerId","onOpenClick","showLabels","onClick","defaultProps","Button","ButtonToolbar","children","field","group","Contact","cellPhone","workPhone","email","Details","DisplayField","contacts","BidEvent","showActions","styleSelector","inactive","borderColor","onDoubleClick","colorMode","colors","getEvent","connect","calendarColor","hasCalendarEventDelete","tokenInfo","hasCalendarEventUpdate","ownProps","onDeleteEventClick","onEditEventClick","dispatchProps","onPrintWorkOrder","stateProps","MultilineText","text","onContextMenuClick","onShow","Intl","NumberFormat","currency","minimumFractionDigits","formatCurrency","Financials","jobTotal","Currency","profit","proposedProfit","actualProfit","Materials","totals","jobItem","proposedQuantity","itemType","aggregateMaterial","Time","Employee","employee","updateSelectedEmployeeList","employeeCheck","drag","useDrag","employeeId","ref","employeeList","position","backgroundColor","display","onChange","selected","target","checked","empid","makeStyle","getEntityActive","JobEvent","currentDate","onRescheduleRes","useDrop","accept","canDrop","collect","monitor","isDragging","isOver","drop","rs","res","standardcrew","showEmployees","curdate","evtcrew","ondbClick","jobNumber","prototypes","PropTypes","func","togglePrintWorkOrderModal","getPurchaseOrderJobs","jobsById","purchaseOrderItem","DeliveryEvent","poNumber","shipTo","assignedToResource","assignedTo","phonenumber","AppointmentEvent","Event","eventType","EventComponent","findComponent","Provider","getEventType","onCrewSelect","onEditCrewClick","onReschedule","onScheduleBid","onScheduleDelivery","onScheduleJob","propTypes","bool","isRequired","arrayOf","JobTypeCapacity","Badge","JobTypeCapacities","jobTypesByName","types","eventsByJobType","Panel","defaultExpanded","Toggle","componentClass","Heading","Title","Collapse","Body","Row","Col","md","DayView","eventsByCrew","onLoadReportClick","localeCompare","compareState","compareCity","compareLine1","compareLine2","oneOf","shape","makeEventsByCrew","mapDispatchToProps","previewEvent","EventListInfoWindow","onEventClick","onPreviewEvent","eventsListWindowEvent","onMouseOver","onMouseOut","path","fillOpacity","scale","strokeWeight","EventMarker","lat","geoPoint","lng","icon","markerSvg","fillColor","defaultAnimation","DispatchMap","context","infoWindowPosition","showInfoWindow","handleClusterClick","handleInfoWindowClose","cluster","markers","getMarkers","equals","this","setState","defaultCenter","defaultZoom","averageCenter","enableRetinaIcons","onDblClick","onCloseClick","Component","withScriptjs","withGoogleMap","EventPreview","Dispatcher","mapEvents","onDispatch","unassignedEvents","dispatcher","mapContainer","googleMapURL","containerElement","mapElement","loadingElement","spinnerStyle","spin","flexListContainer","flexGrow","listContainer","renderEquipmentOption","filterOption","option","filterString","toLocaleLowerCase","EquipmentEdit","Media","Left","labelKey","optionRenderer","valueKey","valueRenderer","getResourceFullName","ResourceEdit","crewResource","onDelete","showpercentage","clearable","InputGroup","FormControl","Number","Addon","defaultCrew","EditCrew","editCrew","cr","r2","CrewModal","onConfirm","onHide","Modal","Header","Footer","forEach","crewPayload","DeleteEventModal","transformCrewToOption","unassignedCrewOption","getCrewOptions","purchaseOrderCrew","EditDelivery","handleEditCrewClick","FormGroup","ControlLabel","input","timeFormat","placeholder","DeliveryModal","jobStatusOption","JobStatusDropdown","TimeContainer","styled","div","TimeDisplayContainer","TimeResetContainer","EditEvent","displayTimepicker","_startTimeChecker","startTimeChecker","_endTimeChecker","endTimeChecker","_resetTime","resetTime","nextProps","val","w","newStartTime","hour","minute","meridiem","newEndTime","onToggleEditCrew","isValidDate","time","switchToMinuteOnHourSelect","onDoneClick","toggleTimekeeper","TIMEPICKER_BACKGROUND","DONE_BUTTON_COLOR","DONE_BUTTON_BORDER_COLOR","Date","xs","rows","mdOffset","js","LoadingSpinner","loadingSpinner","spinwrap","spinner","cube1","cube2","EditEventModal","mapStateToProps","Ordinal","number","LoadReport","onSkipItem","showConsolidatedLoad","PanelGroup","eventKey","pluralize","inventoryQuantityLabel","bsSize","LoadReportModal","onWorkOrderTemplateChange","colorOptions","Switch","_handleToggle","handleToggle","animate","indeterminate","labelText","offColor","onColor","readonly","size","string","containerMarginLeft","width","marginLeft","displayToggleWrapperStyle","margin","displayToggleLabelStyle","displayToggleSwitchStyle","DisplayToggle","on","onUpdateField","k2","appointmentTypesOption","AppointmentTypesDropdown","Span","span","AppointmentCalendar","onSearchCustomers","onSearchDatasheets","selected_option","apptType","AppointmentTypesDropDown","ap","isLoading","defaultInputValue","onInputChange","onOpen","loadOptions","defaultOptions","autoload","AppointmentCalendarModal","onEditConfirm","searchAppointments","searchEmployees","Cell","day","MonthView","onNavigate","startMonth","endMonth","currentWeek","clone","weeks","days","startWeek","endWeek","currentDay","headerRow","headerLabel","week","FinancialTotals","estimatedLabor","revenue","HelpBlock","Form","horizontal","sm","Static","onToggleFinancial","OverlayTrigger","placement","rootClose","trigger","overlay","Popover","title","FinancialTotalsContent","uniqueJobs","unique","material","MaterialTotals","onToggleMaterial","MaterialTotalsContent","getMomentUnitFromMode","DateNavigator","dateNavigator","subtract","getDateDisplay","apptcolorOptions","bidTypeOption","bidType","jobTypeOption","salespersonOption","Filters","filters","onFilterUpdate","multi","SchedulerNavbar","onOpenSettingsModal","onSettingsChange","onToggleDetail","onToggleLocation","showFinancials","onSchedularViewButtonClick","selectJobsTab","onAppointmentCalenderClick","Navbar","fixedTop","fluid","Text","pullLeft","pullRight","ButtonGroup","onOpenAppointmentCalendarModal","view","CrewTag","crewTag","contextMenuCollect","getContextMenuIdForEvent","makeEventStyle","tinycolor","darken","getBrightness","Day","column","holdToDisplay","WeekView","onEditDeliveryClick","startOfWeek","endOfWeek","dates","weekDayColumns","header","root","MenuItem","ContextMenu","detail","hasCalendarEventCreate","evt","onSheeduleAppointment","appointment","eventtype","onEquipmentSelect","EquipmentWeekView","eventsByEquipment","onApptEditEventClick","onOpenApptEventClick","onJobContextMenuClick","includeEquipment","officeRef","equipments","eqs","eq","customerId","datahseetId","onOpenEditEventModel","StandardCrew","Results","standardcrews","selectedDayEmployees","sortedDayEmployees","emp","parseInt","results","searchResultsContainer","fontSize","sc","SearchForm","onFormUpdate","toggle","AvailableEmployees","onEmployeeSearch","Sidebar","setEmployeeToggle","aria-hidden","padding","toggleState","Bid","disable","_","shouldDisable","onBidClick","onCustomerSearch","AvailableBids","searchBids","Job","onJobClick","AvailableJobs","searchJobs","PurchaseOrder","onPurchaseOrderClick","purchaseOrderStatuses","AvailablePurchaseOrders","searchPurchaseOrders","makeStylec","Appointment","appointmentId","officeName","phoneNumber","onDatasheetSearchChange","customerquery","AvailableAppointments","updatedappointments","SidebarJobs","setJobToggle","right","CustomHTML5toTouch","backends","backend","HTML5Backend","TouchBackend","enableMouseEvents","preview","transition","TouchTransition","Scheduler","onBidsTabClick","onDeliveriesTabClick","onJobsTabClick","onAppointmentsTabClick","onToggleBids","onToggleDeliveries","onToggleJobs","onToggleAppointments","showSearch","selectedWeekView","componentSelector","DndProvider","MultiBackend","content","Nav","tabs","NavItem","component","fetchEquipmentsComplete","SchedulerContainer","onNeedAvailableBids","onNeedAvailableJobs","onNeedAvailablePurchaseOrders","onNeedCalendar","onNeedDropdowns","onNeedOrganization","onNeedSavedSettings","onNeedStandardCrews","onNeedTokenInfo","onNeedWorkOrderTemplate","onNeedAvailableEmployees","onNeedEquipments","onNeedAvailableAppointments","onNeedAppointmentCustomer","onNeedDataSheets","changeWeekView","showDeleteModal","selected_Employees","originalId","calendarEpic","eventsEpic","name_contains","name_in","processComplete","bidTypePromise","bidCategories","jobStatusPromise","jobTypesPromise","officePromise","purchaseOrderStatusPromise","salespeoplePromise","isSalesperson","suppliersPromise","appointmentTypesPromise","datasheetsPromise","includeOnScheduler","modalEpics","currentUser","settingsEpic","workOrdersEpics","employeequery","salespersonId","composeEnhancers","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","compose","epicMiddleware","createEpicMiddleware","createStoreWithMiddleware","applyMiddleware","thunk","createStore","store","initialState","rootReducer","run","rootEpic","configureStore","ReactDOM","render","App","document","getElementById","APIRequestError","Error","constructor","responseText","responseType","statusText","super","JobProAPI","apiLocation","arguments","_apiLocation","_useCors","_oauthToken","attachments","AttachmentRepository","BidCategoryRepository","BidRepository","rValue","RValueRepository","bidItemMultipliers","BidItemMultipliersRepository","BidTypeRepository","CalendarRepository","checklistDefintiions","ChecklistDefinitionRepository","commissionPlans","CommissionPlanRepository","commissionRates","CommissionRateRepository","companyNetTerms","CompanyNetTermRepository","companyTaxStatuses","CompanyTaxStatusRepository","ContactRepository","countries","CountryRepository","CurrentUserRepository","CustomerRepository","customerCategories","CustomerCategoryRepository","customerDocumentTemplates","CustomerDocumentTemplateRepository","DataSheetRepository","EmployeeRepository","EquipmentRepository","equipmentStatuses","EquipmentStatusRepository","equipmentTypes","EquipmentTypesRepository","financePrograms","FinanceProgramRepository","globalLaborCodes","GlobalLaborCodeRepository","inventory","InventoryRepository","inventoryTransactions","InventoryTransactionRepository","invoices","InvoiceRepository","invoiceTemplates","InvoiceTemplateRepository","ItemRepository","JobRepository","jobDocumentTemplates","JobDocumentTemplateRepository","JobStatusRepository","JobTypeRepository","AppointmentTypeRepository","laborMultipliers","LaborMultiplierRepository","manufacturers","ManufacturerRepository","materialMultipliers","MaterialMultiplierRepository","merchantServices","MerchantServicesRepository","noteTemplates","NoteTemplateRepository","OfficeRepository","payments","PaymentRepository","payrollDocumentTemplates","PayrollDocumentTemplateRepository","proposalAgreements","ProposalAgreements","proposalAgreementTemplates","ProposalAgreementTemplateRepository","proposalPriceRestrictions","ProposalPriceRestrictionsRepository","proposalTemplates","ProposalTemplateRepository","proposalTemplateDesigns","ProposalTemplateDesignRepository","PurchaseOrderRepository","physicalCounts","PhysicalCountRepository","inventoryPurchaseOrders","InventoryPurchaseOrderRepository","inventoryPurchaseOrderItems","InventoryPurchaseOrderItemsRepository","preferredPaymentMethods","PreferredPaymentMethodRepository","referralSources","ReferralSourceRepository","requestTypes","RequestTypeRepository","ResourceRepository","resourcePayTypes","ResourcePayTypeRepository","SettingsRepository","stageTypes","StageTypeRepository","StandardCrewRepository","stockImages","StockImageRepository","stockorders","StockOrderRepository","SupplierRepository","taxSchedules","TaxScheduleRepository","templateCategories","TemplateCategoryRepository","TemplateRepository","timerates","TimeRateRepository","timesheets","TimesheetRepository","users","UserRepository","warehouses","WarehouseRepository","zipCodeTaxSchedules","ZipCodeTaxSchedulesRepository","linkedJobs","JobLinkedJobsRepository","depositpercentageoption","DepositPercentageOptionsRepository","delete","url","params","requestHeaders","_createXhrRequest","graphql","patch","body","ping","systemStatus","testDateTime","datetime","method","encodeQueryString","reject","req","XMLHttpRequest","withCredentials","XDomainRequest","setRequestHeader","onload","onerror","requestHeader","h","send","prefix","obj","rbracket","test","_buildParams","parts","encodeURIComponent","obj1","obj2","obj3","attrname","api","_api","merge","BidContactRepository","bidContact","bidContactId","BidDocumentRepository","documentId","BidGroupRepository","bidGroup","bidGroupId","BidItemImageRepository","bidItemId","bidItemImage","bidItemImageId","BidItemRepository","images","bidItem","bidItemChanges","BidOptionRepository","bidOption","bidOptionId","getEntries","bidItemMultipliersReference","updateEntry","createEntry","bidItemMultipliersReferenceId","entry","deleteEntry","entryId","adjustmentHistory","BidAdjustmentHistoryRepository","checklistItems","BidChecklistItemsRepository","documents","groups","notes","BidNoteRepository","BidStatusRepository","bidAdjustmentHistoryId","bidAdjustmentHistory","bidChecklistItem","bidChecklistItemId","bidChecklistItems","note","calendarEvent","calendarEventId","checklistDefinitionId","rules","CommissionPlanRuleRepository","commissionPlan","commissionPlanId","commissionPlanRuleId","contactId","CurrentUserOrganizationRepository","CurrentUserOrganizationSettingsRepository","CurrentUserSettingsRepository","CustomerContactRepository","count","DataSheetNoteRepository","DataSheetDocumentRepository","requestQuestionResponses","DataSheetRequestQuestionResponseRepository","DataSheetStatusRepository","dataSheetId","requestQuestionResponseId","EmployeeCalendarRepository","EmployeeCommissionPlanRepository","EmployeeDocumentRepository","EmployeeOfficeRepository","EmployeePaymentRepository","recurringPayments","EmployeeRecurringPaymentRepository","timeRates","EmployeeTimeRateRepository","employeeCommissionPlan","employeeCommissionPlanId","officeId","payment","paymentId","recurringPayment","recurringPaymentId","timeRate","EquipmentDocumentRepository","EquipmentNoteRepository","equipmentId","noteId","invoice","itemid","valueForQuickBooks","getAlternatesByItem","itemId","searchAlternatesByItem","getRigs","getRigsList","getRigsById","rigId","getRigsByIdNoAlt","getSerializedInventory","getRecentJobsByItem","transferItems","transferFoam","adjustItemQty","transferInventoryAmtFromTruckToJobWIP","wipInventoryByJob","creditMemos","InvoiceCreditMemoRepository","InvoiceItemRepository","paidInvoices","InvoicePaidInvoiceRepository","InvoicePaymentRepository","InvoiceStatusRepository","invoiceId","invoiceItem","invoiceItemId","categories","ItemCategoryRepository","ItemOfficeRepository","pricing","ItemPricingRepository","ItemTypeRepository","ItemManufacturerRepository","defaultBin","searchCount","allocations","alternates","manufacturer","itemOffice","itemPricing","pricingId","JobCalendarRepository","JobChecklistRepository","jobChecklist","requestId","jobChecklistId","checklist","JobCrewsRepository","JobDocumentRepository","JobExpenseRepository","expense","expenseId","JobInvoicesRepository","JobItemRepository","jobItemId","changeOrders","JobChangeOrdersRepository","checklists","expenses","JobMaterialRepository","JobNoteRepository","parentJob","JobParentJobRepository","JobPurchaseOrderRepository","inventorypurchaseOrders","JobInventoryPurchaseOrderRepository","recommendations","JobRecommendationRepository","signoffs","JobSignoffRepository","JobJobStatusRepository","JobTimeRateRepository","timeSheets","JobTimeSheetsRepository","JobJobTypeRepository","changeOrder","changeOrderId","entries","JobMaterialEntryRepository","sourcing","JobMaterialSourcingRepository","JobMaterialImageRepository","materialId","autosource","requiredDate","createWaste","warehouseId","imageId","sourcingId","recommendation","recommendationId","signoff","signoffId","timeSheet","timeSheetId","configs","MerchantServicesConfigsRepository","tokens","MerchantServicesTokenRepository","preauth","MerchantServicesPreAuthRepository","MerchantServicesPaymentRepository","paymentToken","getBid","createBid","processCreditCard","getJob","getInvoice","transactionId","invoicePayments","PaymentInvoicePaymentRepository","voidpayment","invoicePayment","priceRestriction","PurchaseOrderDocumentRepository","PurchaseOrderItemRepository","PurchaseOrderNoteRepository","PurchaseOrderStatusRepository","physicalCount","InventoryPurchaseOrderDocumentRepository","InventoryPurchaseOrderItemRepository","InventoryPurchaseOrderNoteRepository","receive","purchaseOrderItemId","getByMaterialId","getByJobId","RequestTypeQuestionRepository","requestTypeId","question","questionId","questions","requestType","deliveries","ResourceDeliveryRepository","ResourceDocumentRepository","inspectionChecklists","ResourceInspectionChecklistRepository","loadTicket","ResourceLoadTicketRepository","ResourceTimeRateRepository","resourceId","inspectionChecklist","inspectionChecklistId","StockOrderItemSearchRepository","searchpendingjoborders","searchbelowthreshold","searchotheritems","TemplateOfficeRepository","template","templatesId","timesheet","UserOfficesRepository","UserOrganizationRepository","permissions","UserPermissionsRepository","currentUserOffices","usersList","UserOrganizationSettingsRepository","userId","permissionId","permissionItem","unset","officeItem","WarehouseItemRepository","WarehouseOfficesRepository","warehouse","warehouseOffice","zipCodeTaxSchedule","define","webpackContext","webpackContextResolve","code"],"mappings":"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","file":"scheduler.cf4784fb82b9872ec519.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t0: 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([1125,1]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"_1CjrVcKQ-Kh6PjRStsEcuz\",\"results\":\"_3Iu1_84jDgHmECO7ER8Teh\",\"bid\":\"_3WoGsIFAc4hOEw8fO18qwO\",\"searchResultsContainer\":\"HbCchHKd1q6OC9JzAu_GC\",\"disabled\":\"uNyUJIAwzxPMDmR2AGpGc\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"_3E0xgDXSwvt_AGa5C9abY6\",\"results\":\"_1Wy6tXxd8awYZzkAn2ZqVY\",\"job\":\"_1U2BdeOGP9Hac9XfUPV9vs\",\"searchResultsContainer\":\"_5UKdW9MOIpRc5HPpjucQc\",\"disabled\":\"_10J1Bv18RwkLhvFbjHEPhI\"};","import Raven from 'raven-js';\r\nimport config from 'config.json';\r\nRaven.config(config.raven, {\r\n environment: config.environment,\r\n release: process.env.VERSION,\r\n ignoreUrls: [/localhost/]\r\n}).install();\r\nexport default Raven;\r\n","import JobProApi from 'JobProAPI';\r\nimport config from 'config.json';\r\n\r\nexport default new JobProApi(config.apiUrl, config.oauthToken, {\r\n useCors: true\r\n});\r\n","import localForage from 'localforage';\r\n\r\n// Initialize a storage bucket for scheduler data\r\nexport default localForage.createInstance({\r\n name: 'scheduler'\r\n});\r\n","export default (crew) => crew ? `${crew.equipment ? crew.equipment.name : 'No Equipment'} ${crew.resources.filter(r => !!r.resource).map(r => ` / ${r.resource.firstName} ${r.resource.lastName}`).join('')}` : 'Unassigned';\r\n","export default (a, b) => {\r\n if (!a && !b) {\r\n return true;\r\n } else if (!a || !b) {\r\n return false;\r\n }\r\n\r\n const equipmentMatch = (!a.equipment && !b.equipment) || (a.equipment && b.equipment && a.equipment.id === b.equipment.id);\r\n if (!equipmentMatch) {\r\n return false;\r\n }\r\n\r\n const aResourceIds = a.resources?a.resources.filter(r => !!r.resource).map(r => r.resource.id):[];\r\n const bResourceIds = b.resources?b.resources.filter(r => !!r.resource).map(r => r.resource.id):[];\r\n const resourcesMatch = aResourceIds.length === bResourceIds.length && aResourceIds.every((r) => bResourceIds.indexOf(r) >= 0);\r\n return resourcesMatch;\r\n};\r\n","import { createSelector } from 'reselect';\r\nimport { matchCrews } from '../../utils';\r\n\r\n/**\r\n * Determines the largest subset of offices common to all resources on a specified crew.\r\n *\r\n * @param {any} crew\r\n * @returns Array of common offices\r\n */\r\n function maximalOfficeSet(crew) {\r\n return crew.resources\r\n .filter(r => !!r.resource)\r\n .map(r => r.resource.offices)\r\n .reduce((prev, curr) => {\r\n if (!prev) {\r\n return curr;\r\n } else {\r\n return prev.filter(o => curr.some(o2 => o2.id === o.id));\r\n }\r\n }, null) || [];\r\n}\r\n\r\n/**\r\n * Selector for standard crews based on current filtering criteria.\r\n * Limits displayed standard crews to delivery or installation crews\r\n * depending on what is currently visible.\r\n *\r\n * Note that other standard crews may be displayed if jobs/deliveries they\r\n * are assigned to are visible (this happens later in eventsByCrew.js).\r\n */\r\nexport const standardCrewsSelector = createSelector(\r\n (state) => state.standardCrews.crews,\r\n (state) => state.settings.entity,\r\n (standardCrews, entity) => {\r\n switch (entity) {\r\n case 'jobs':\r\n return standardCrews.filter((c) => c.installationCrew);\r\n case 'purchaseOrders':\r\n return standardCrews.filter((c) => c.deliveryCrew);\r\n case 'bids':\r\n default:\r\n return [];\r\n }\r\n }\r\n);\r\n\r\nexport const distinctStandardCrews = createSelector(\r\n standardCrewsSelector,\r\n (state) => state.settings.offices,\r\n (crews, offices) => {\r\n // Filter standard crews based on selected office filter\r\n const filteredCrews = offices!=null ? offices.length > 0\r\n ? crews.filter((c) => !c.office || offices.some((o) => o.id === c.office.id))\r\n : crews:crews;\r\n\r\n // Eliminate any duplicate standard crews based on equipment and resources\r\n // Map to include offices common to all resources to determine eligible events to be scheduled\r\n return filteredCrews\r\n .reduce((distinct, crew) => {\r\n if (distinct.some(c => matchCrews(c, crew))) {\r\n return distinct;\r\n } else {\r\n return [...distinct, crew];\r\n }\r\n }, [])\r\n .map(c => ({ ...c, isStandardCrew: true, offices: maximalOfficeSet(c) }));\r\n }\r\n);\r\n","import { ofType } from 'redux-observable';\r\nimport { map, switchMap } from 'rxjs/operators';\r\nimport JobProApi from '../../dependencies/JobProApi';\r\n\r\nconst CREW_FIELDS = 'id,deliveryCrew,equipment(id,color,displayOrder,name,workCapacities(capacityType,value),officeRef(id,name)),installationCrew,office(id,name),resources(resource(id,firstName,lastName,offices(id)),resourcePercentage)';\r\n\r\n// Action types\r\nconst FETCH_STANDARD_CREWS = 'FETCH_STANDARD_CREWS';\r\nexport const FETCH_STANDARD_CREWS_COMPLETE = 'FETCH_STANDARD_CREWS_COMPLETE';\r\n\r\nconst DEFAULT_STATE = {\r\n crews: [],\r\n loading: false\r\n};\r\n\r\n// Reducer\r\nexport default function (state = DEFAULT_STATE, { payload, type }) {\r\n switch (type) {\r\n case FETCH_STANDARD_CREWS:\r\n return DEFAULT_STATE;\r\n case FETCH_STANDARD_CREWS_COMPLETE:\r\n return {\r\n ...state,\r\n ...payload,\r\n loading: false\r\n }\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\n// Action creators\r\nexport const fetchStandardCrews = () => ({\r\n type: FETCH_STANDARD_CREWS\r\n});\r\n\r\nconst fetchStandardCrewsComplete = (crews) => ({\r\n type: FETCH_STANDARD_CREWS_COMPLETE,\r\n payload: { crews }\r\n});\r\n\r\n// Epics\r\nexport const fetchStandardCrewsEpic = (action$) => action$.pipe(\r\n ofType(FETCH_STANDARD_CREWS),\r\n switchMap(() => JobProApi.standardCrews.query({\r\n fields: CREW_FIELDS\r\n })),\r\n map(fetchStandardCrewsComplete),\r\n);\r\n\r\n// Selectors\r\nexport * from './selectors';\r\n","import JobProApi from '../../../dependencies/JobProApi';\r\nimport { updateEvent, updatePurchaseOrder } from '../../calendar';\r\nimport { FETCH_STANDARD_CREWS_COMPLETE } from '../../standardCrews';\r\n\r\n// Action types\r\nconst EDIT_CREW_MODAL_UPDATE = 'EDIT_CREW_MODAL_UPDATE';\r\nconst TOGGLE_CREW_MODAL = 'TOGGLE_CREW_MODAL';\r\n\r\nconst DEFAULT_STATE = {\r\n crew: {\r\n resources: []\r\n },\r\n equipment: [],\r\n events: [],\r\n loading: false,\r\n resources: [],\r\n show: false,\r\n standardCrews: []\r\n};\r\n\r\n// Reducer\r\nexport default function (state = DEFAULT_STATE, { payload, type }) {\r\n switch (type) {\r\n case EDIT_CREW_MODAL_UPDATE:\r\n return {\r\n ...state,\r\n crew: {\r\n ...state.crew,\r\n ...payload\r\n }\r\n }\r\n case FETCH_STANDARD_CREWS_COMPLETE:\r\n return {\r\n ...state,\r\n standardCrews: payload.crews\r\n };\r\n case TOGGLE_CREW_MODAL:\r\n return payload ? {\r\n ...state,\r\n ...payload,\r\n show: !!payload\r\n } : DEFAULT_STATE;\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\n// Action creators\r\nexport const editCrewModalUpdate = (changes) => ({\r\n type: EDIT_CREW_MODAL_UPDATE,\r\n payload: changes\r\n});\r\n\r\nexport const toggleCrewModal = (crew, events) => (dispatch) => {\r\n if (!crew && !events) {\r\n dispatch({\r\n type: TOGGLE_CREW_MODAL,\r\n payload: null\r\n });\r\n return;\r\n }\r\n\r\n dispatch({\r\n type: TOGGLE_CREW_MODAL,\r\n payload: {\r\n crew,\r\n events,\r\n loading: true\r\n }\r\n });\r\n\r\n const equipmentPromise = JobProApi.equipment.query(\r\n {\r\n schedulable: true,\r\n 'status!': 'Inactive',\r\n },\r\n {\r\n fields: 'id,color,name',\r\n limit: 9999,\r\n }\r\n );\r\n\r\n const resourcesPromise = JobProApi.resources.query({\r\n isActive: true,\r\n isJobAssignee: true\r\n }, {\r\n fields: 'id,employeeId,firstName,lastName'\r\n });\r\n\r\n Promise.all([equipmentPromise, resourcesPromise]).then(([equipment, resources]) => {\r\n dispatch({\r\n type: TOGGLE_CREW_MODAL,\r\n payload: {\r\n crew,\r\n equipment,\r\n events,\r\n loading: false,\r\n resources\r\n }\r\n });\r\n });\r\n};\r\n\r\nexport const editCrewModalConfirm = () => (dispatch, getState) => {\r\n const { crew, events } = getState().modals.crewModal;\r\n events.forEach((e) => {\r\n const crewPayload = crew ? {\r\n equipment: crew.equipment ? { id: crew.equipment.id } : null,\r\n resources: crew.resources.map(({ resource, resourcePercentage }) => ({\r\n resource: { id: resource.id },\r\n resourcePercentage\r\n }))\r\n } : null;\r\n if (e.purchaseOrder) {\r\n dispatch(updatePurchaseOrder(e.purchaseOrder.id, {\r\n crew: crewPayload\r\n }));\r\n } else {\r\n dispatch(updateEvent(e.id, {\r\n crew: crewPayload\r\n }));\r\n }\r\n });\r\n dispatch(toggleCrewModal());\r\n};\r\n","// Action types\r\nconst TOGGLE_DELETE_MODAL = 'TOGGLE_DELETE_MODAL';\r\n\r\nconst DEFAULT_STATE = {\r\n eventId: null,\r\n show: false\r\n};\r\n\r\n// Reducer\r\nexport default function (state = DEFAULT_STATE, { payload, type }) {\r\n switch (type) {\r\n case TOGGLE_DELETE_MODAL:\r\n return {\r\n ...state,\r\n ...payload\r\n };\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\n// Action creators\r\nexport const toggleDeleteModal = (eventId) => ({\r\n type: TOGGLE_DELETE_MODAL,\r\n payload: {\r\n eventId,\r\n show: !!eventId\r\n }\r\n});\r\n","import JobProApi from '../../../dependencies/JobProApi';\r\nimport { updatePurchaseOrder } from '../../calendar';\r\nimport { FETCH_STANDARD_CREWS_COMPLETE } from '../../standardCrews';\r\n\r\nconst DELIVERY_MODAL_UPDATE = 'DELIVERY_MODAL_UPDATE';\r\nconst TOGGLE_DELIVERY_MODAL = 'TOGGLE_DELIVERY_MODAL';\r\n\r\nconst DEFAULT_STATE = {\r\n form: {},\r\n purchaseOrder: null,\r\n resources: [],\r\n show: false,\r\n standardCrews: []\r\n};\r\n\r\n// Reducer\r\nexport default function (state = DEFAULT_STATE, { payload, type }) {\r\n switch (type) {\r\n case DELIVERY_MODAL_UPDATE:\r\n return {\r\n ...state,\r\n form: {\r\n ...state.form,\r\n ...payload\r\n }\r\n };\r\n case FETCH_STANDARD_CREWS_COMPLETE:\r\n return {\r\n ...state,\r\n standardCrews: payload.crews\r\n };\r\n case TOGGLE_DELIVERY_MODAL:\r\n return payload ? {\r\n ...state,\r\n ...payload,\r\n form: payload ? payload.purchaseOrder : {},\r\n show: !!payload\r\n } : DEFAULT_STATE;\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\n// Action creators\r\nexport const deliveryModalConfirm = () => (dispatch, getState) => {\r\n const { purchaseOrder, form } = getState().modals.deliveryModal;\r\n const { crew, dateDelivered } = form;\r\n dispatch(updatePurchaseOrder(purchaseOrder.id, {\r\n crew: crew ? {\r\n equipment: crew.equipment ? { id: crew.equipment.id } : null,\r\n resources: crew.resources.map(({ resource, resourcePercentage }) => ({\r\n resource: { id: resource.id },\r\n resourcePercentage\r\n }))\r\n } : null,\r\n dateDelivered\r\n }));\r\n};\r\n\r\nexport const deliveryModalUpdate = (changes) => ({\r\n type: DELIVERY_MODAL_UPDATE,\r\n payload: changes\r\n});\r\n\r\nexport const toggleDeliveryModal = (eventId) => (dispatch, getState) => {\r\n if (!eventId) {\r\n dispatch({\r\n type: TOGGLE_DELIVERY_MODAL,\r\n payload: null\r\n });\r\n return;\r\n }\r\n\r\n const { events } = getState().events;\r\n const purchaseOrderId = events.find((e) => e.id === eventId).purchaseOrder.id;\r\n\r\n const purchaseOrderPromise = JobProApi.purchaseOrders.get(purchaseOrderId, {\r\n fields: 'id,crew(id,equipment(id,color,name),resources(resource(id,firstName,lastName),resourcePercentage)),dateDelivered,items(id,item(itemType(id,name))quantity,summary),name,office(id),poNumber,status(name),supplier(name)'\r\n });\r\n\r\n const equipmentPromise = JobProApi.equipment.query(\r\n {\r\n schedulable: true,\r\n 'status!': 'Inactive',\r\n },\r\n {\r\n fields: 'id,name',\r\n limit: 9999,\r\n }\r\n );\r\n\r\n const resourcesPromise = JobProApi.resources.query({\r\n isActive: true,\r\n isJobAssignee: true\r\n }, {\r\n fields: 'id,calendarColor,firstName,lastName'\r\n });\r\n\r\n Promise.all([purchaseOrderPromise, equipmentPromise, resourcesPromise]).then(([purchaseOrder, equipment, resources]) => ({\r\n equipment,\r\n purchaseOrder,\r\n resources\r\n })).then((payload) => {\r\n dispatch({\r\n type: TOGGLE_DELIVERY_MODAL,\r\n payload\r\n });\r\n });\r\n};\r\n","import { ofType } from 'redux-observable';\r\nimport { map, switchMap } from 'rxjs/operators';\r\nimport JobProApi from '../../dependencies/JobProApi';\r\n\r\n// Action types\r\nconst UPDATE_JOB = 'UPDATE_JOB';\r\nconst UPDATE_JOB_COMPLETE = 'UPDATE_JOB_COMPLETE';\r\n\r\n// Action creators\r\nexport const updateJob = (jobId, changes) => ({\r\n type: UPDATE_JOB,\r\n payload: { jobId, changes }\r\n});\r\n\r\nconst updateJobComplete = (job) => ({\r\n type: UPDATE_JOB_COMPLETE,\r\n payload: job\r\n});\r\n\r\n// Epics\r\nexport const updateJobEpic = (action$) => action$.pipe(\r\n ofType(UPDATE_JOB),\r\n map(({ payload }) => payload),\r\n switchMap(({ jobId, changes }) => JobProApi.jobs.update(jobId, changes)),\r\n map(updateJobComplete)\r\n);\r\n","import { ofType } from 'redux-observable';\r\nimport { createSelector } from 'reselect';\r\nimport { filter, map, switchMap } from 'rxjs/operators';\r\nimport JobProApi from '../../../dependencies/JobProApi';\r\nimport { updateEvent } from '../../calendar';\r\nimport { updateJob } from '../../jobs';\r\n\r\n// Action types\r\nconst EDIT_EVENT_MODAL_UPDATE = 'EDIT_EVENT_MODAL_UPDATE';\r\nconst EDIT_MODAL_CONFIRM = 'EDIT_MODAL_CONFIRM';\r\nconst FETCH_EDIT_MODAL_COMPLETE = 'FETCH_EDIT_MODAL_COMPLETE';\r\nconst TOGGLE_EDIT_MODAL = 'TOGGLE_EDIT_MODAL';\r\nconst TOGGLE_EDIT_CREW = 'TOGGLE_EDIT_CREW';\r\nconst TOGGLE_APPT_EDIT_CREW = 'TOGGLE_APPT_EDIT_CREW';\r\n\r\nconst DEFAULT_STATE = {\r\n equipment: [],\r\n jobCrews: [],\r\n form: {},\r\n isEditCrewEnabled: false,\r\n isApptEditCrewEnabled: false,\r\n event: null,\r\n loading: false,\r\n resources: [],\r\n show: false\r\n};\r\n\r\n// Reducer\r\nexport default function (state = DEFAULT_STATE, { payload, type }) {\r\n switch (type) {\r\n case EDIT_EVENT_MODAL_UPDATE:\r\n return {\r\n ...state,\r\n form: {\r\n ...state.form,\r\n ...payload\r\n }\r\n };\r\n case FETCH_EDIT_MODAL_COMPLETE:\r\n return {\r\n ...state,\r\n ...payload,\r\n form: payload\r\n ? {\r\n ...payload.event,\r\n jobStatus: payload.event.job ? payload.event.job.status : '',\r\n jobPriorityNotes: payload.event.job\r\n ? payload.event.job.priorityNotes\r\n : ''\r\n }\r\n : {},\r\n loading: false\r\n };\r\n case TOGGLE_EDIT_MODAL:\r\n return payload.show\r\n ? {\r\n ...state,\r\n loading: payload.show,\r\n show: payload.show\r\n }\r\n : DEFAULT_STATE;\r\n case TOGGLE_EDIT_CREW:\r\n return {\r\n ...state,\r\n isEditCrewEnabled: !state.isEditCrewEnabled\r\n };\r\n case TOGGLE_APPT_EDIT_CREW:\r\n \r\n return {\r\n ...state,\r\n isApptEditCrewEnabled: !state.isApptEditCrewEnabled\r\n };\r\n \r\n default:\r\n return state;\r\n }\r\n}\r\n\r\n// Action creators\r\nexport const editEventModalUpdate = (changes) => ({\r\n type: EDIT_EVENT_MODAL_UPDATE,\r\n payload: changes\r\n});\r\n\r\nexport const editModalConfirm = () => ({\r\n type: EDIT_MODAL_CONFIRM\r\n});\r\n\r\nexport const toggleEditCrew = () => ({\r\n type: TOGGLE_EDIT_CREW\r\n});\r\n\r\nexport const toggleApptEditCrew = () => ({\r\n type: TOGGLE_APPT_EDIT_CREW\r\n});\r\n\r\nexport const toggleEditModal = (eventId) => ({\r\n type: TOGGLE_EDIT_MODAL,\r\n payload: {\r\n eventId,\r\n show: !!eventId\r\n }\r\n});\r\n\r\nconst fetchEditModalComplete = (payload) => ({\r\n type: FETCH_EDIT_MODAL_COMPLETE,\r\n payload\r\n});\r\n\r\n// Epics\r\nexport const confirmEditModalEpic = (action$, state$) =>\r\n action$.pipe(\r\n ofType(EDIT_MODAL_CONFIRM),\r\n map(() => {\r\n const {\r\n event,\r\n form,\r\n isEditCrewEnabled,\r\n jobCrews\r\n } = state$.value.modals.editModal;\r\n const {\r\n crew,\r\n description,\r\n endDate,\r\n endTime,\r\n jobStatus,\r\n startDate,\r\n startTime,\r\n jobPriorityNotes\r\n } = form;\r\n\r\n return async (dispatch) => {\r\n // Update crew (if needed)\r\n console.log(\r\n crew,\r\n isEditCrewEnabled,\r\n event.job,\r\n jobCrews.some((x) => x.id === (crew ? crew.id : 0))\r\n );\r\n const isCrewUpdateNeeded =\r\n crew &&\r\n isEditCrewEnabled &&\r\n event.job &&\r\n jobCrews.some((x) => x.id === (crew ? crew.id : 0));\r\n if (isCrewUpdateNeeded && state$.value.settings.schedulerView != \"equipment\") {\r\n await JobProApi.jobs.crews.put(event.job.id, crew.id, {\r\n equipment: crew.equipment ? { id: crew.equipment.id } : null,\r\n resources: crew.resources.map(\r\n ({ resource, resourcePercentage }) => ({\r\n resource: { id: resource.id },\r\n resourcePercentage\r\n })\r\n )\r\n });\r\n }\r\n\r\n if(isCrewUpdateNeeded && state$.value.settings.schedulerView == \"equipment\") {\r\n dispatch(\r\n updateEvent(event.id, {\r\n // Skip crew and update directly -\r\n crew: crew ? {\r\n \r\n equipment: crew.equipment ? { id: crew.equipment.id } : null,\r\n resources: crew.resources? crew.resources.filter(r => !!r.resource).map(r => ({\r\n resource: { id: r.resource.id },\r\n resourcePercentage: r.resourcePercentage\r\n })):[]\r\n } : null,\r\n description,\r\n endDate,\r\n endTime,\r\n startDate,\r\n startTime\r\n })\r\n );\r\n }\r\n // Update calendar event\r\n else if (isCrewUpdateNeeded && state$.value.settings.schedulerView != \"equipment\") {\r\n dispatch(\r\n updateEvent(event.id, {\r\n // Skip crew and update directly\r\n description,\r\n endDate,\r\n endTime,\r\n startDate,\r\n startTime\r\n })\r\n );\r\n } else {\r\n dispatch(\r\n updateEvent(event.id, {\r\n crew: crew\r\n ? {\r\n equipment: crew.equipment\r\n ? { id: crew.equipment.id }\r\n : null,\r\n resources: crew.resources.map(\r\n ({ resource, resourcePercentage }) => ({\r\n resource: { id: resource.id },\r\n resourcePercentage\r\n })\r\n )\r\n }\r\n : null,\r\n description,\r\n endDate,\r\n endTime,\r\n startDate,\r\n startTime\r\n })\r\n );\r\n }\r\n\r\n // Update job status\r\n if (event.job) {\r\n dispatch(\r\n updateJob(event.job.id, {\r\n status: jobStatus.value,\r\n priorityNotes: jobPriorityNotes\r\n })\r\n );\r\n }\r\n\r\n // Close the modal\r\n dispatch(toggleEditModal());\r\n };\r\n })\r\n );\r\n\r\nexport const toggleEditModalEpic = (action$) =>\r\n action$.pipe(\r\n ofType(TOGGLE_EDIT_MODAL),\r\n filter(({ payload }) => payload.show),\r\n switchMap(({ payload }) => {\r\n const { eventId } = payload;\r\n\r\n const calendarPromise = JobProApi.calendar.get(eventId, {\r\n fields:\r\n 'id,crew(id),job(id,jobNumber,name,office(id),status,priorityNotes),description,startDate,endDate,startTime,endTime'\r\n });\r\n\r\n const equipmentPromise = JobProApi.equipment.query(\r\n {\r\n schedulable: true,\r\n 'status!': 'Inactive',\r\n },\r\n {\r\n fields: 'id,name',\r\n limit: 9999,\r\n }\r\n );\r\n\r\n const jobCrewsPromise = calendarPromise.then((event) => {\r\n return event.job\r\n ? JobProApi.jobs.crews.query(event.job.id, {\r\n fields:\r\n 'id,equipment(id,color,name),resources(resource(id,firstName,lastName),resourcePercentage)'\r\n })\r\n : Promise.resolve([]);\r\n });\r\n\r\n const resourcesPromise = JobProApi.resources.query(\r\n {\r\n isActive: true,\r\n isJobAssignee: true\r\n },\r\n {\r\n fields: 'id,calendarColor,firstName,lastName'\r\n }\r\n );\r\n\r\n return Promise.all([\r\n calendarPromise,\r\n equipmentPromise,\r\n jobCrewsPromise,\r\n resourcesPromise\r\n ]).then(([event, equipment, jobCrews, resources]) => ({\r\n equipment,\r\n event: {\r\n ...event,\r\n crew: event.crew ? jobCrews.find((c) => c.id === event.crew.id) : null\r\n },\r\n jobCrews,\r\n resources\r\n }));\r\n }),\r\n map(fetchEditModalComplete)\r\n );\r\n\r\n// Selectors\r\nconst getEventOffice = (event) => {\r\n if (!event) {\r\n return null;\r\n } else if (event.purchaseOrder) {\r\n return event.purchaseOrder.office;\r\n } else if (event.job) {\r\n return event.job.office;\r\n } else {\r\n return null;\r\n }\r\n};\r\n\r\nconst getEventStandardCrewFilter = (event) => {\r\n if (!event) {\r\n return (c) => true;\r\n } else if (event.purchaseOrder) {\r\n return (c) => c.deliveryCrew;\r\n } else if (event.job) {\r\n return (c) => c.installationCrew;\r\n } else {\r\n return (c) => true;\r\n }\r\n};\r\n\r\nconst standardCrewsSelector = createSelector(\r\n (state) => state.standardCrews.crews,\r\n (state) => state.modals.editModal.event,\r\n (standardCrews, event) => {\r\n const office = getEventOffice(event);\r\n return standardCrews.filter(getEventStandardCrewFilter(event)).map((c) => ({\r\n ...c,\r\n disabled: !!office && !!c.office && c.office.id !== office.id\r\n }));\r\n }\r\n);\r\n\r\nexport const editModalSelector = (state) => ({\r\n ...state.modals.editModal,\r\n jobStatuses: state.dropdowns.jobStatuses,\r\n standardCrews: standardCrewsSelector(state)\r\n});\r\n\r\n","import { ofType } from 'redux-observable';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { createSelector } from 'reselect';\r\n\r\nfunction consolidate(purchaseOrders, skip, skipItems) {\r\n return purchaseOrders.reduce((prev, p, i, a) => {\r\n const laterOrders = a.slice(i + 1, a.length - skip);\r\n\r\n const items = groupItems([...p.items, ...prev.remainingItems]);\r\n const itemSplit = items.reduce(({ carriedItems, deliveryItems }, item) =>\r\n {\r\n const packagingAlternates = item.item.packagingAlternates;\r\n if (packagingAlternates.length === 0 || skipItems.some(s => s === item.id)) {\r\n // Item has no packaging alternates or is skipped. Include it on this delivery\r\n deliveryItems.push(item);\r\n } else {\r\n // Assume first alternate match for now\r\n const firstAlternate = packagingAlternates.find(a => item.quantity >= a.yield);\r\n let remainingQuantity = item.quantity;\r\n if (firstAlternate) {\r\n const deliveryQuantity = Math.floor(item.quantity / firstAlternate.yield);\r\n deliveryItems.push({\r\n ...item,\r\n consolidated: true,\r\n item: firstAlternate.item,\r\n quantity: deliveryQuantity\r\n });\r\n remainingQuantity = Math.round(100000 * (item.quantity % firstAlternate.yield)) / 100000;\r\n }\r\n\r\n // Make sure there is enough quantity on future orders to hit the alternate\r\n const futureQuantity = laterOrders.reduce((q, o) => {\r\n return o.items\r\n .filter(i => i.item.id === item.item.id)\r\n .filter(i => !skipItems.some(s => s === i.id))\r\n .reduce((q2, i) => q2 + i.quantity, q);\r\n }, remainingQuantity);\r\n\r\n // Assume first alternate match for now\r\n const alternate = packagingAlternates.find(a => futureQuantity >= a.yield);\r\n if (!alternate) {\r\n // Add the remaining quantity to this delivery\r\n deliveryItems.push({\r\n ...item,\r\n quantity: remainingQuantity\r\n });\r\n } else {\r\n // Push the remaining quantity to a later delivery for consolidation\r\n carriedItems.push({\r\n ...item,\r\n quantity: remainingQuantity\r\n });\r\n }\r\n }\r\n\r\n return {\r\n carriedItems,\r\n deliveryItems\r\n };\r\n }, {\r\n carriedItems: [],\r\n deliveryItems: []\r\n });\r\n\r\n prev.purchaseOrders.push({\r\n ...p,\r\n items: itemSplit.deliveryItems\r\n });\r\n prev.remainingItems = itemSplit.carriedItems;\r\n return prev;\r\n }, { purchaseOrders: [], remainingItems: [] }).purchaseOrders;\r\n}\r\n\r\nfunction groupItems(items) {\r\n const byId = items.reduce((byId, i) => {\r\n byId[i.item.id] = byId[i.item.id] || {\r\n ...i,\r\n quantity: 0\r\n };\r\n byId[i.item.id].quantity += i.quantity;\r\n return byId;\r\n }, {});\r\n return Object.values(byId);\r\n}\r\n\r\nfunction sortPurchaseOrders(a, b) {\r\n return (a.deliveryOrder - b.deliveryOrder) || (a.id - b.id);\r\n}\r\n\r\nfunction sortItems(a, b) {\r\n return a.name < b.name\r\n ? -1\r\n : a.name > b.name\r\n ? 1\r\n : 0;\r\n}\r\n\r\n// Action types\r\nconst TOGGLE_LOAD_REPORT_MODAL = 'TOGGLE_LOAD_REPORT_MODAL';\r\nconst LOAD_REPORT_COMPLETE = 'LOAD_REPORT_COMPLETE';\r\nconst SKIP_ITEM = 'SKIP_ITEM';\r\n\r\nconst DEFAULT_STATE = {\r\n loadReport: [],\r\n skipConsolidatingStops: 1,\r\n skipItems: [],\r\n show: false\r\n};\r\n\r\n// Reducer\r\nexport default function (state = DEFAULT_STATE, { payload, type }) {\r\n switch (type) {\r\n case LOAD_REPORT_COMPLETE:\r\n return {\r\n ...state,\r\n loadReport: payload\r\n };\r\n case SKIP_ITEM:\r\n return {\r\n ...state,\r\n skipItems: [...state.skipItems, payload]\r\n };\r\n case TOGGLE_LOAD_REPORT_MODAL:\r\n if (state.show) {\r\n return DEFAULT_STATE;\r\n } else {\r\n return {\r\n ...state,\r\n show: true\r\n };\r\n }\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\n// Action creators\r\nconst loadReportComplete = payload => ({\r\n type: LOAD_REPORT_COMPLETE,\r\n payload\r\n});\r\n\r\nexport const skipItem = id => ({\r\n type: SKIP_ITEM,\r\n payload: id\r\n});\r\n\r\nexport const toggleLoadReportModal = () => ({\r\n type: TOGGLE_LOAD_REPORT_MODAL\r\n});\r\n\r\n// Epics\r\nexport const epic = (action$, state$) => action$.pipe(\r\n ofType(TOGGLE_LOAD_REPORT_MODAL, SKIP_ITEM),\r\n filter(() => state$.value.modals.loadReportModal.show),\r\n map(() => loadReport(state$.value)),\r\n map(equipment => {\r\n const { skipConsolidatingStops, skipItems } = state$.value.modals.loadReportModal;\r\n return equipment.map(e => ({\r\n ...e,\r\n consolidatedLoad: consolidate(e.purchaseOrders, skipConsolidatingStops, skipItems)\r\n }));\r\n }),\r\n map(loadReportComplete),\r\n);\r\n\r\n// Selectors\r\nconst loadReport = createSelector(\r\n (state) => state.events.events,\r\n (events) => {\r\n const byEquipment = events\r\n .filter(e => e.purchaseOrder)\r\n .filter(e => e.purchaseOrder.items.some(i => !!i.item && i.quantity !== 0))\r\n .reduce((l, e) => {\r\n const equipment = l[(e.crew && e.crew.equipment.id) || 0] || {\r\n equipment: (e.crew && e.crew.equipment) || {\r\n id : 0,\r\n name: 'None'\r\n },\r\n purchaseOrders: []\r\n };\r\n return {\r\n ...l,\r\n [(e.crew && e.crew.equipment.id) || 0]: {\r\n ...equipment,\r\n purchaseOrders: [\r\n ...equipment.purchaseOrders,\r\n {\r\n ...e.purchaseOrder,\r\n items: e.purchaseOrder.items\r\n .filter(i => !!i.item && i.quantity !== 0)\r\n .sort(sortItems)\r\n }\r\n ]\r\n }\r\n };\r\n }, {});\r\n\r\n return Object.values(byEquipment)\r\n .map(e => ({\r\n ...e,\r\n purchaseOrders: e.purchaseOrders.sort(sortPurchaseOrders).reverse()\r\n }));\r\n }\r\n);\r\n\r\nexport const loadReportModalSelector = state => ({\r\n ...state.modals.loadReportModal,\r\n showConsolidatedLoad: state.modals.loadReportModal.loadReport.some(e => e.purchaseOrders.some(p => p.items.some(i => i.item.packagingAlternates.length > 0)))\r\n});\r\n","import moment from 'moment';\r\nimport { ofType } from 'redux-observable';\r\nimport { map } from 'rxjs/operators';\r\nimport { combineEpics } from 'redux-observable';\r\nimport { versaItRoot } from 'config.json';\r\n\r\nconst namespace = 'jobpro/scheduler/modals/printWorkOrderModal';\r\nconst CHANGE_WORK_ORDER_TEMPLATE = `${namespace}/CHANGE_WORK_ORDER_TEMPLATE`;\r\nconst CLOSE = `${namespace}/CLOSE`;\r\nconst CONFIRM = `${namespace}/CONFIRM`;\r\nconst CONFIRM_COMPLETE = `${namespace}/CONFIRM_COMPLETE`;\r\nconst OPEN = `${namespace}/OPEN`;\r\nconst OPEN_CONFIRM = `${namespace}/OPEN_CONFIRM`;\r\n\r\n// Default state\r\nconst DEFAULT_STATE = {\r\n calendarEvents: [],\r\n show: false,\r\n workOrderTemplateId: null\r\n};\r\n\r\n// Reducer\r\nexport default function (state = DEFAULT_STATE, { payload, type }) {\r\n switch (type) {\r\n case CHANGE_WORK_ORDER_TEMPLATE:\r\n return {\r\n ...state,\r\n workOrderTemplateId: payload\r\n };\r\n case CLOSE:\r\n case CONFIRM_COMPLETE:\r\n return DEFAULT_STATE;\r\n case OPEN_CONFIRM:\r\n return {\r\n ...state,\r\n calendarEvents: payload.calendarEvents,\r\n date: payload.date,\r\n show: true\r\n };\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\n// Action creators\r\nexport const changeWorkOrderTemplate = workOrderTemplateId => ({\r\n type: CHANGE_WORK_ORDER_TEMPLATE,\r\n payload: workOrderTemplateId\r\n});\r\n\r\nexport const close = () => ({\r\n type: CLOSE\r\n});\r\n\r\nexport const confirm = options => ({\r\n type: CONFIRM,\r\n payload: options\r\n});\r\n\r\nconst confirmComplete = () => ({\r\n type: CONFIRM_COMPLETE\r\n});\r\n\r\nexport const open = (payload) => ({\r\n type: OPEN,\r\n payload: {\r\n calendarEvents: Array.isArray(payload.eventId) ? payload.eventId : [payload.eventId],\r\n date: payload.date\r\n }\r\n});\r\n\r\nconst openConfirm = (payload) => ({\r\n type: OPEN_CONFIRM,\r\n payload: {\r\n calendarEvents: Array.isArray(payload.eventId || payload.calendarEvents) ? (payload.eventId || payload.calendarEvents) : [payload.eventId || payload.calendarEvents],\r\n date: payload.date\r\n }\r\n});\r\n\r\n// Epics\r\nconst confirmEpic = (action$, state$) => action$.pipe(\r\n ofType(CONFIRM),\r\n map(({ payload }) => {\r\n const state = state$.value;\r\n //const { date } = state.calendar;\r\n if (payload) {\r\n return {\r\n ...payload\r\n };\r\n } else {\r\n const { calendarEvents, workOrderTemplateId, date } = state.modals.printWorkOrderModal;\r\n const { workOrderTemplates } = state.workOrders;\r\n return {\r\n calendarEvents,\r\n date,\r\n workOrderTemplateId: workOrderTemplateId || workOrderTemplates.map(t => t.uniqueId)[0]\r\n };\r\n }\r\n }),\r\n map(({ date, calendarEvents, workOrderTemplateId }) => {\r\n const eventsQuery = calendarEvents.filter(j => String(j).indexOf(\"JOB\") === -1).map(j => `eventId=${j}`).join('&');\r\n window.open(`${versaItRoot}/JP_MVC/scheduler/WorkOrder.pdf?${eventsQuery}&workOrderTemplateId=${workOrderTemplateId || ''}&scheduledDate=${moment(date).format('YYYY-MM-DD')}`);\r\n }),\r\n map(confirmComplete),\r\n);\r\n\r\nconst openEpic = (action$, state$) => action$.pipe(\r\n ofType(OPEN),\r\n map(({ payload }) => {\r\n const templates = state$.value.workOrders.workOrderTemplates;\r\n if (templates.length > 1) {\r\n return openConfirm(payload);\r\n } else {\r\n return confirm({\r\n calendarEvents: payload.calendarEvents,\r\n date: payload.date,\r\n workOrderTemplateId: templates.map(t => t.id)[0]\r\n });\r\n }\r\n }),\r\n);\r\n\r\nexport const epic = combineEpics(\r\n confirmEpic,\r\n openEpic\r\n);\r\n","const namespace = 'jobpro/scheduler/modals/settingsModal';\r\nconst CLOSE = `${namespace}/CLOSE`;\r\nconst OPEN = `${namespace}/OPEN`;\r\n\r\n// Default state\r\nconst DEFAULT_STATE = {\r\n show: false\r\n};\r\n\r\n// Reducer\r\nexport default function (state = DEFAULT_STATE, { payload, type }) {\r\n switch (type) {\r\n case CLOSE:\r\n return DEFAULT_STATE;\r\n case OPEN:\r\n return {\r\n ...state,\r\n show: true\r\n };\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\n// Action creators\r\nexport const close = () => ({\r\n type: CLOSE\r\n});\r\n\r\nexport const open = () => ({\r\n type: OPEN\r\n});\r\n","import { ofType } from 'redux-observable';\r\nimport { createSelector } from 'reselect';\r\nimport { filter, map, switchMap } from 'rxjs/operators';\r\nimport JobProApi from '../../../dependencies/JobProApi';\r\nimport { updateEvent,scheduleAppointmentExplicit, reloadCalendar, CALENDAR_FETCH } from '../../calendar';\r\nimport { updateJob } from '../../jobs';\r\nimport { fetchCalendar } from '../../calendar';\r\n\r\n\r\n// Fields\r\n\r\nconst APPOINTMENT_FIELDS ='id,name';\r\nconst CUSTOMER_FIELDS='id,name'\r\nconst CREW_FIELDS = 'id,equipment(id,color,displayOrder,name,workCapacities(capacityType,value)),resources(resource(id,firstName,lastName),resourcePercentage)';\r\nconst JOB_FIELDS = 'id,capacities(estimatedDuration,laborAmount,materialQuantity),contacts(isPrimaryContact,name,firstName,lastName,cellPhone,workPhone,email),customer(id,name),estimatedStartDate,items(item(itemType(id,name)),proposedQuantity),geoPoint(latitude,longitude),jobNumber,jobTotal,jobType,location,office(id,name),name,profit(actualProfit,proposedProfit),salesperson(calendarColor),status,priorityNotes';\r\nconst CALENDAR_FIELDS = `id,apptType,crew(${CREW_FIELDS}),description,displayOrder,endDate,endTime,job(${JOB_FIELDS}),startDate,startTime,customer(id,name),datasheet(id,name)`;\r\n//const CALENDAR_FIELDS = `description,appttype`;\r\n\r\n// Action types\r\nconst EDIT_APPOINTMENT_MODAL_UPDATE = 'EDIT_APPOINTMENT_MODAL_UPDATE';\r\nconst EDIT_APPOINTMENT_MODAL_UPDATE_CONFIRM = 'EDIT_APPOINTMENT_MODAL_UPDATE_CONFIRM';\r\nconst EDIT_APPOINTMENT_MODAL_CONFIRM = 'EDIT_APPOINTMENT_MODAL_CONFIRM';\r\nconst FETCH_APPOINTMENT_MODAL_COMPLETE = 'FETCH_APPOINTMENT_MODAL_COMPLETE';\r\nconst TOGGLE_APPOINTMENT_MODAL = 'TOGGLE_APPOINTMENT_MODAL';\r\nconst TOGGLE_APPOINTMENT_CREW = 'TOGGLE_APPOINTMENT_CREW';\r\nconst TOGGLE_EDIT_APPOINTMENT_MODAL = 'TOGGLE_EDIT_APPOINTMENT_MODAL'\r\n\r\nconst DEFAULT_STATE = {\r\n equipment: [],\r\n eventCrews: [],\r\n form: {},\r\n isApptEditCrewEnabled: false,\r\n event: null,\r\n loading: true,\r\n resources: [],\r\n customers:[],\r\n datasheets:[],\r\n show: false\r\n};\r\n\r\n// Reducer\r\nexport default function (state = DEFAULT_STATE, { payload, type }) {\r\n switch (type) {\r\n case EDIT_APPOINTMENT_MODAL_UPDATE:\r\n \r\n return {\r\n ...state,\r\n form: {\r\n ...state.form,\r\n ...payload\r\n }\r\n };\r\n case FETCH_APPOINTMENT_MODAL_COMPLETE: \r\n \r\n \r\n return {\r\n \r\n ...state,\r\n ...payload,\r\n form: payload\r\n ? {\r\n ...payload.event, \r\n }\r\n : {},\r\n loading: false,\r\n \r\n };\r\n case TOGGLE_APPOINTMENT_MODAL: \r\n \r\n return {\r\n ...state, \r\n ...payload,\r\n loading:true \r\n };\r\n case TOGGLE_EDIT_APPOINTMENT_MODAL: \r\n \r\n return {\r\n ...state, \r\n ...payload, \r\n loading:true \r\n };\r\n \r\n case TOGGLE_APPOINTMENT_CREW:\r\n \r\n return {\r\n ...state,\r\n isApptEditCrewEnabled: !state.isApptEditCrewEnabled\r\n };\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\n// Action creators\r\nexport const editAppointmentModalUpdate = (changes) => ({\r\n type: EDIT_APPOINTMENT_MODAL_UPDATE,\r\n payload: changes\r\n});\r\n\r\nexport const editAppointmentModalUpdateConfirm = (changes) => ({\r\n type: EDIT_APPOINTMENT_MODAL_UPDATE_CONFIRM,\r\n payload: changes\r\n});\r\n\r\nexport const editAppointmentModalConfirm = () => ({\r\n type: EDIT_APPOINTMENT_MODAL_CONFIRM\r\n});\r\n\r\nexport const toggleAppointmentCrew = () => ({\r\n type: TOGGLE_APPOINTMENT_CREW\r\n});\r\n\r\nexport const toggleAppointmentModal = (payload) => ({\r\n type: TOGGLE_APPOINTMENT_MODAL,\r\n payload\r\n \r\n});\r\n\r\nconst fetchAppointmentModalComplete = (payload) => ({\r\n type: FETCH_APPOINTMENT_MODAL_COMPLETE,\r\n payload\r\n});\r\n\r\n// Epics\r\nexport const confirmAppointmentModalEpic = (action$, state$) =>\r\n action$.pipe(\r\n ofType(EDIT_APPOINTMENT_MODAL_CONFIRM),\r\n map(() => {\r\n const { \r\n form, \r\n } = state$.value.modals.appintmentCalendarModal;\r\n const {\r\n crew,\r\n description,\r\n endDate,\r\n endTime,\r\n customer,\r\n datasheet,\r\n appointmentType,\r\n startDate,\r\n startTime,\r\n \r\n } = form;\r\n \r\n return async (dispatch,getState) => {\r\n // Update crew (if needed) \r\n var appttype=appointmentType? appointmentType.name:\"\";\r\n \r\n dispatch(\r\n scheduleAppointmentExplicit(datasheet? datasheet.id:0, customer?customer.id:0,\r\n appttype, {\r\n crew: crew\r\n ? {\r\n equipment: crew.equipment\r\n ? { id: crew.equipment.id }\r\n : null,\r\n resources: crew.resources.map(\r\n ({ resource, resourcePercentage }) => ({\r\n resource: { id: resource.id },\r\n resourcePercentage\r\n })\r\n )\r\n }\r\n : null, \r\n },startDate,\r\n startTime, \r\n endDate,\r\n endTime, \r\n description)\r\n );\r\n \r\n // Close the modal\r\n dispatch(toggleAppointmentModal({show:false}));\r\n const { date, mode } = getState().calendar;\r\n dispatch(fetchCalendar(date, mode));\r\n \r\n };\r\n })\r\n );\r\n\r\n export const confirmEditApptModalEpic = (action$, state$) =>\r\n action$.pipe(\r\n ofType(EDIT_APPOINTMENT_MODAL_UPDATE_CONFIRM),\r\n map(() => {\r\n const {\r\n event,\r\n form \r\n } = state$.value.modals.appintmentCalendarModal;\r\n const {\r\n crew,\r\n description,\r\n endDate,\r\n endTime,\r\n customer,\r\n datasheet,\r\n appointmentType,\r\n startDate,\r\n startTime,\r\n \r\n } = form;\r\n return async (dispatch,getState) => {\r\n // Update crew (if needed)\r\n //console.log(form );\r\n \r\n\r\n if(state$.value.settings.schedulerView == \"equipment\") {\r\n dispatch(\r\n updateEvent(form.id, { \r\n crew: form.crew ,\r\n description:form.description,\r\n endDate:form.endDate,\r\n endTime:form.endTime,\r\n startDate:form.startDate,\r\n startTime:form.startTime,\r\n appttype:form.appointmentType? form.appointmentType.name:\"\",\r\n customer:form.customer,\r\n datasheet:form.datasheet\r\n })\r\n )\r\n } \r\n dispatch(toggleAppointmentModal({show:false})) ;\r\n const { date, mode } = getState().calendar;\r\n dispatch(fetchCalendar(date, mode)); \r\n \r\n };\r\n })\r\n );\r\n\r\n\r\n\r\n\r\n\r\n export const toggleApptEditModal = (payload) => ({\r\n type: TOGGLE_EDIT_APPOINTMENT_MODAL,\r\n payload:payload\r\n });\r\n\r\n export const toggleEditAppoinmentModalEpic = (action$) =>\r\n action$.pipe(\r\n ofType(TOGGLE_EDIT_APPOINTMENT_MODAL),\r\n filter(({ payload }) => payload.show),\r\n switchMap(({ payload }) => {\r\n const { eventid } = payload; \r\n const calendarPromise = JobProApi.calendar.get(eventid, {\r\n fields: CALENDAR_FIELDS \r\n });\r\n\r\n\r\n const customersPromise = JobProApi.customers.query({\r\n fields: 'id,name',\r\n limit: 500\r\n });\r\n \r\n const equipmentPromise = JobProApi.equipment.query(\r\n {\r\n schedulable: true,\r\n 'status!': 'Inactive',\r\n },\r\n {\r\n fields: 'id,name',\r\n limit: 500,\r\n }\r\n ); \r\n\r\n const resourcesPromise = JobProApi.resources.query(\r\n {\r\n isActive: true, \r\n },\r\n {\r\n fields: 'id,calendarColor,firstName,lastName'\r\n }\r\n );\r\n\r\n return Promise.all([\r\n calendarPromise,\r\n equipmentPromise, \r\n resourcesPromise,\r\n customersPromise\r\n ]).then(([event, equipment, resources,customers]) => ({\r\n event,\r\n equipment, \r\n resources,\r\n customers\r\n }));\r\n }),\r\n map(fetchAppointmentModalComplete)\r\n );\r\n\r\n\r\n\r\n\r\n\r\nexport const toggleAppointmentModalEpic = (action$) =>\r\n action$.pipe(\r\n ofType(TOGGLE_APPOINTMENT_MODAL), \r\n switchMap(() => { \r\n\r\n const customersPromise = JobProApi.customers.query({\r\n fields: 'id,name',\r\n limit: 999999\r\n });\r\n\r\n const equipmentPromise = JobProApi.equipment.query(\r\n {\r\n schedulable: true,\r\n 'status!': 'Inactive',\r\n },\r\n {\r\n fields: 'id,name',\r\n limit: 9999,\r\n }\r\n );\r\n\r\n \r\n const resourcesPromise = JobProApi.resources.query(\r\n {\r\n isActive: true, \r\n },\r\n {\r\n fields: 'id,calendarColor,firstName,lastName'\r\n }\r\n );\r\n\r\n return Promise.all([\r\n customersPromise, \r\n resourcesPromise,\r\n equipmentPromise\r\n ]).then(([customers, resources,equipment]) => ({\r\n customers,\r\n resources,\r\n equipment\r\n }));\r\n }),\r\n map(fetchAppointmentModalComplete)\r\n );\r\n\r\n// Selectors\r\nconst getAppointmentOffice = (event) => {\r\n if (!event) {\r\n return null;\r\n } else if (event.purchaseOrder) {\r\n return event.purchaseOrder.office;\r\n } else if (event.job) {\r\n return event.job.office;\r\n } else {\r\n return null;\r\n }\r\n};\r\n\r\nconst getAppointmentStandardCrewFilter = (event) => {\r\n if (!event) {\r\n return (c) => true;\r\n } else if (event.purchaseOrder) {\r\n return (c) => c.deliveryCrew;\r\n } else if (event.job) {\r\n return (c) => c.installationCrew;\r\n } else {\r\n return (c) => true;\r\n }\r\n};\r\n\r\nconst standardCrewsSelector = createSelector(\r\n (state) => state.standardCrews.crews,\r\n (state) => state.modals.editModal.event,\r\n (standardCrews, event) => {\r\n const office = getAppointmentOffice(event);\r\n return standardCrews.filter(getAppointmentStandardCrewFilter(event)).map((c) => ({\r\n ...c,\r\n disabled: !!office && !!c.office && c.office.id !== office.id\r\n }));\r\n }\r\n);\r\n\r\nexport const appointmentModalSelector = (state)=>({ \r\n show:state.show,\r\n appointmentTypes:state.dropdown.appointmentTypes,\r\n ...state\r\n});\r\n","import { combineReducers } from 'redux';\r\nimport { combineEpics } from 'redux-observable';\r\n\r\nimport crewModal from './crewModal';\r\nimport deleteModal from './deleteModal';\r\nimport deliveryModal from './deliveryModal';\r\nimport editModal, { confirmEditModalEpic, toggleEditModalEpic } from './editModal';\r\nimport loadReportModal, { epic as loadReportModalEpic } from './loadReportModal';\r\nimport printWorkOrderModal, { epic as printWorkOrderModalEpic } from './printWorkOrderModal';\r\nimport settingsModal from './settingsModal';\r\n\r\nimport appintmentCalendarModal, { confirmAppointmentModalEpic, confirmEditApptModalEpic, toggleAppointmentModalEpic,toggleEditAppoinmentModalEpic } from './appintmentCalendarModal';\r\n\r\nexport * from './crewModal';\r\nexport * from './deleteModal';\r\nexport * from './deliveryModal';\r\nexport * from './editModal';\r\nexport * from './loadReportModal';\r\nexport * from './printWorkOrderModal';\r\nexport * from './appintmentCalendarModal';\r\n\r\n\r\nexport default combineReducers({\r\n crewModal,\r\n deleteModal,\r\n deliveryModal,\r\n editModal,\r\n loadReportModal,\r\n printWorkOrderModal,\r\n settingsModal,\r\n appintmentCalendarModal,\r\n \r\n});\r\n\r\nexport const epics = combineEpics(\r\n confirmEditModalEpic,\r\n toggleEditModalEpic,\r\n printWorkOrderModalEpic,\r\n loadReportModalEpic,\r\n confirmAppointmentModalEpic,\r\n toggleAppointmentModalEpic, \r\n toggleEditAppoinmentModalEpic,\r\n confirmEditApptModalEpic \r\n);\r\n","import { ofType } from 'redux-observable';\r\nimport { debounceTime, map, switchMap } from 'rxjs/operators';\r\nimport JobProApi from '../../dependencies/JobProApi';\r\nimport config from 'config.json';\r\n\r\nconst BIDS_QUERY = `\r\nquery BidsSearch($criteria: BidCriteria) {\r\n bids(filter: $criteria, limit: 50) {\r\n address {\r\n city\r\n line1\r\n line2\r\n state\r\n zip\r\n }\r\n contacts {\r\n cellPhone\r\n email\r\n isPrimaryContact\r\n firstName\r\n name\r\n lastName\r\n workPhone\r\n }\r\n customer {\r\n id\r\n name\r\n }\r\n estimatedStartDate\r\n id\r\n name\r\n office {\r\n id\r\n name\r\n }\r\n priorityNotes\r\n salesperson {\r\n id\r\n calendarColor\r\n firstName\r\n lastName\r\n }\r\n status {\r\n name\r\n }\r\n }\r\n}\r\n`;\r\n\r\n// Action types\r\nconst FETCH_AVAILABLE_BIDS = 'FETCH_AVAILABLE_BIDS';\r\nconst FETCH_AVAILABLE_BIDS_COMPLETE = 'FETCH_AVAILABLE_BIDS_COMPLETE';\r\nconst SEARCH_CUSTOMERS = 'FETCH_CUSTOMERS_BIDS';\r\nconst SEARCH_CUSTOMERS_COMPLETE = 'FETCH_CUSTOMERS_BIDS_COMPLETE';\r\nconst UPDATE_SEARCH_CRITERIA = 'UPDATE_SEARCH_CRITERIA_BIDS';\r\n\r\nconst DEFAULT_STATE = {\r\n bids: [],\r\n customers: {\r\n customers: [],\r\n loading: false\r\n },\r\n form: {\r\n bidTypes: [],\r\n offices: [],\r\n salespeople: []\r\n },\r\n loading: false\r\n};\r\n\r\n// Reducer\r\nexport default function (state = DEFAULT_STATE, { payload, type }) {\r\n switch (type) {\r\n case FETCH_AVAILABLE_BIDS:\r\n return {\r\n ...state,\r\n bids: [],\r\n loading: true\r\n };\r\n case FETCH_AVAILABLE_BIDS_COMPLETE:\r\n return {\r\n ...state,\r\n ...payload,\r\n loading: false\r\n };\r\n case SEARCH_CUSTOMERS:\r\n return {\r\n ...state,\r\n customers: {\r\n customers: [],\r\n loading: true\r\n }\r\n };\r\n case SEARCH_CUSTOMERS_COMPLETE:\r\n return {\r\n ...state,\r\n customers: {\r\n customers: payload.customers,\r\n loading: false\r\n }\r\n };\r\n case UPDATE_SEARCH_CRITERIA:\r\n return {\r\n ...state,\r\n form: {\r\n ...state.form,\r\n ...payload\r\n },\r\n loading: true\r\n };\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\n// Action creators\r\nexport const fetchAvailableBids = () => ({\r\n type: FETCH_AVAILABLE_BIDS\r\n});\r\n\r\nconst fetchAvailableBidsComplete = (bids) => ({\r\n type: FETCH_AVAILABLE_BIDS_COMPLETE,\r\n payload: { bids }\r\n});\r\n\r\nexport const searchCustomers = (query) => ({\r\n type: SEARCH_CUSTOMERS,\r\n payload: { query }\r\n});\r\n\r\nconst searchCustomersComplete = (customers) => ({\r\n type: SEARCH_CUSTOMERS_COMPLETE,\r\n payload: { customers }\r\n});\r\n\r\nexport const openBid = (bidId) => {\r\n window.open(`${config.versaItRoot}display.asp?key=6085&fo=basic%20display&rm=page&xID=${bidId}`);\r\n};\r\n\r\nexport const updateSearchCriteria = (criteria) => ({\r\n type: UPDATE_SEARCH_CRITERIA,\r\n payload: criteria\r\n});\r\n\r\n// Epics\r\nexport const fetchAvailableBidsEpic = (action$, state$) => action$.pipe(\r\n ofType(FETCH_AVAILABLE_BIDS, UPDATE_SEARCH_CRITERIA),\r\n debounceTime(300),\r\n switchMap(() => {\r\n const { bidTypes, customerId, offices, query, salespeople } = state$.value.searchBids.form;\r\n\r\n const criteria = {\r\n jobs_none: {},\r\n };\r\n if (query) {\r\n criteria.name_contains = query;\r\n }\r\n if (bidTypes.length) {\r\n criteria.bidType_in = bidTypes.map((t) => t.value);\r\n }\r\n if (customerId) {\r\n criteria.customer = { id: customerId };\r\n }\r\n if (offices.length) {\r\n criteria.office = { name_in: offices.map((o) => o.name) };\r\n }\r\n if (salespeople.length) {\r\n criteria.salesperson = { id_in: salespeople.map(s => s.id) };\r\n }\r\n\r\n return JobProApi\r\n .post('/graphql', null, {\r\n query: BIDS_QUERY,\r\n variables: {\r\n criteria,\r\n },\r\n })\r\n .then(response => response.data.bids);\r\n }),\r\n map(fetchAvailableBidsComplete),\r\n);\r\n\r\nexport const searchCustomersEpic = (action$) => action$.pipe(\r\n ofType(SEARCH_CUSTOMERS),\r\n debounceTime(300),\r\n switchMap(({ payload }) => {\r\n const { query } = payload;\r\n return JobProApi.customers.search({\r\n query\r\n }, {\r\n fields: 'id,name'\r\n });\r\n }),\r\n map(searchCustomersComplete),\r\n);\r\n","import { ofType } from 'redux-observable';\r\nimport { debounceTime, map, switchMap } from 'rxjs/operators';\r\nimport JobProApi from '../../dependencies/JobProApi';\r\nimport config from 'config.json';\r\n\r\nconst PURCHASE_ORDER_FIELDS = 'id,office(id,name),name,poNumber,shipTo,status(name),supplier(name)';\r\n\r\n// Action types\r\nconst FETCH_AVAILABLE_PURCHASE_ORDERS = 'FETCH_AVAILABLE_PURCHASE_ORDERS';\r\nconst FETCH_AVAILABLE_PURCHASE_ORDERS_COMPLETE = 'FETCH_AVAILABLE_PURCHASE_ORDERS_COMPLETE';\r\nconst UPDATE_PURCHASE_ORDER_SEARCH_CRITERIA = 'UPDATE_PURCHASE_ORDER_SEARCH_CRITERIA';\r\n\r\nconst DEFAULT_STATE = {\r\n form: {\r\n offices: [],\r\n statuses: [],\r\n suppliers: []\r\n },\r\n loading: false,\r\n purchaseOrders: []\r\n};\r\n\r\n// Reducer\r\nexport default function (state = DEFAULT_STATE, { payload, type }) {\r\n switch (type) {\r\n case FETCH_AVAILABLE_PURCHASE_ORDERS:\r\n return {\r\n ...state,\r\n loading: true,\r\n purchaseOrders: [],\r\n };\r\n case FETCH_AVAILABLE_PURCHASE_ORDERS_COMPLETE:\r\n return {\r\n ...state,\r\n ...payload,\r\n loading: false\r\n }\r\n case UPDATE_PURCHASE_ORDER_SEARCH_CRITERIA:\r\n return {\r\n ...state,\r\n form: {\r\n ...state.form,\r\n ...payload\r\n }\r\n };\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\n// Action creators\r\nexport const fetchAvailablePurchaseOrders = () => ({\r\n type: FETCH_AVAILABLE_PURCHASE_ORDERS\r\n});\r\n\r\nconst fetchAvailablePurchaseOrdersComplete = (purchaseOrders) => ({\r\n type: FETCH_AVAILABLE_PURCHASE_ORDERS_COMPLETE,\r\n payload: { purchaseOrders }\r\n})\r\n\r\nexport const updateSearchCriteria = (criteria) => ({\r\n type: UPDATE_PURCHASE_ORDER_SEARCH_CRITERIA,\r\n payload: criteria\r\n});\r\n\r\nexport const openPurchaseOrder = (purchaseOrderId) => {\r\n window.open(`${config.versaItRoot}display.asp?key=6083&fo=menu&rm=page&xID=${purchaseOrderId}`);\r\n};\r\n\r\n// Epics\r\nexport const fetchAvailablePurchaseOrdersEpic = (action$, state$) => action$.pipe(\r\n ofType(FETCH_AVAILABLE_PURCHASE_ORDERS, UPDATE_PURCHASE_ORDER_SEARCH_CRITERIA),\r\n debounceTime(300),\r\n switchMap(() => {\r\n const { offices, query, statuses, suppliers } = state$.value.searchPurchaseOrders.form;\r\n\r\n const criteria = {};\r\n if (query) {\r\n criteria.query = query;\r\n }\r\n if (offices.length) {\r\n criteria['office.id'] = offices.map((o) => o.id);\r\n }\r\n if (statuses.length) {\r\n criteria['status.id'] = statuses.map((s) => s.id);\r\n }\r\n if (suppliers.length) {\r\n criteria['supplier.id'] = suppliers.map((s) => s.id);\r\n }\r\n\r\n return JobProApi.purchaseOrders.search(criteria, {\r\n fields: PURCHASE_ORDER_FIELDS,\r\n limit: 50\r\n });\r\n }),\r\n map(fetchAvailablePurchaseOrdersComplete),\r\n);\r\n","import { ofType } from 'redux-observable';\r\nimport { debounceTime, map, switchMap } from 'rxjs/operators';\r\nimport JobProApi from '../../dependencies/JobProApi';\r\nimport schedulerStorage from '../../dependencies/Storage';\r\n\r\nconst EMPLOYEE_FIELDS = 'id,resourceId,firstName,lastName';\r\n\r\n// Action types\r\nconst FETCH_AVAILABLE_EMPLOYEES = 'FETCH_AVAILABLE_EMPLOYEES';\r\nconst FETCH_AVAILABLE_EMPLOYEES_COMPLETE = 'FETCH_AVAILABLE_EMPLOYEES_COMPLETE';\r\nconst SEARCH_EMPLOYEES = 'FETCH_EMPLOYEES';\r\nconst SEARCH_EMPLOYEES_COMPLETE = 'FETCH_EMPLOYEES_COMPLETE';\r\nconst UPDATE_SEARCH_CRITERIA = 'UPDATE_SEARCH_CRITERIA_EMPLOYEES';\r\nconst SET_EMPLOYEE_TOGGLE = 'SET_EMPLOYEE_TOGGLE';\r\n\r\n\r\n\r\nconst DEFAULT_STATE = {\r\n employees: [],\r\n selected_employees:[], // Selected employees to show only job of these employees\r\n form: {\r\n query: '', \r\n },\r\n loading: false,\r\n employeeToggle:{\r\n togleState: false,\r\n toggleClass:'fa fa-chevron-right'\r\n },\r\n};\r\n\r\n// Reducer\r\nexport default function (state = DEFAULT_STATE, { payload, type }) {\r\n switch (type) {\r\n case FETCH_AVAILABLE_EMPLOYEES:\r\n return {\r\n ...state,\r\n employees: [],\r\n loading: true\r\n };\r\n case FETCH_AVAILABLE_EMPLOYEES_COMPLETE:\r\n return {\r\n ...state,\r\n ...payload,\r\n loading: false\r\n };\r\n\r\n case SEARCH_EMPLOYEES:\r\n return {\r\n ...state,\r\n employees: {\r\n employees: [],\r\n loading: true\r\n }\r\n };\r\n case SEARCH_EMPLOYEES_COMPLETE:\r\n return {\r\n ...state,\r\n employees: {\r\n employees: payload.employees,\r\n loading: false\r\n }\r\n };\r\n case UPDATE_SEARCH_CRITERIA:\r\n return {\r\n ...state,\r\n form: {\r\n ...state.form,\r\n ...payload\r\n },\r\n loading: true\r\n };\r\n case SET_EMPLOYEE_TOGGLE:\r\n\r\n return {\r\n ...state,\r\n form: {\r\n ...state.form, \r\n },\r\n loading: false,\r\n employeeToggle:payload\r\n };\r\n \r\n default:\r\n return state;\r\n }\r\n}\r\n\r\n// Action creators:\r\n\r\nexport const fetchAvailableEmployees = () => ({\r\n type: FETCH_AVAILABLE_EMPLOYEES,\r\n \r\n});\r\n\r\nconst fetchAvailableEmployeesComplete = (employees) => ({\r\n type: FETCH_AVAILABLE_EMPLOYEES_COMPLETE,\r\n payload: { \r\n employees \r\n \r\n}\r\n});\r\n\r\nexport const searchEmployees = (query) => ({\r\n type: SEARCH_EMPLOYEES,\r\n payload: { query }\r\n });\r\n\r\nexport const setEmployeeToggle = (toggle) => ({\r\n type: SET_EMPLOYEE_TOGGLE,\r\n payload: toggle \r\n });\r\n \r\n const searchEmployeesComplete = (employees) => ({\r\n type: SEARCH_EMPLOYEES_COMPLETE,\r\n payload: { employees }\r\n });\r\n\r\n export const updateSearchCriteria = (criteria) => ({\r\n type: UPDATE_SEARCH_CRITERIA,\r\n payload: criteria\r\n });\r\n export const updateSelectedEmployeeList = (payload)=>(\r\n {\r\n type:UPDATE_SELECTED_EMPLOYEE_LIST,\r\n payload : {payload}\r\n\r\n })\r\n\r\n\r\n// Epics\r\nexport const fetchAvailableEmployeesEpic = (action$, state$) => action$.pipe(\r\n ofType(FETCH_AVAILABLE_EMPLOYEES, UPDATE_SEARCH_CRITERIA),\r\n debounceTime(300),\r\n switchMap(() => {\r\n\r\n const { query } = state$.value.searchEmployees.form;\r\n \r\n const criteria = {\r\n isActive: true, \r\n }; \r\n \r\n if(state$.value.settings.entity === 'appointments')\r\n {\r\n if(state$.value.searchAppointments.form.offices && state$.value.searchAppointments.form.offices.length > 0 )\r\n {\r\n criteria.office = state$.value.searchAppointments.form.offices.map((o) => o.name);\r\n }\r\n }\r\n else if(state$.value.settings.entity === 'jobs')\r\n {\r\n if(state$.value.searchJobs.form.offices && state$.value.searchJobs.form.offices.length > 0 )\r\n {\r\n criteria.office = state$.value.searchJobs.form.offices.map((o) => o.name);\r\n }\r\n }\r\n\r\n \r\n if(state$.value.settings.entity !== 'appointments')\r\n {\r\n criteria.isJobAssignee = true\r\n }\r\n if (query) {\r\n \r\n criteria.employeequery = query;\r\n }\r\n \r\n return JobProApi.employees.query(criteria, {\r\n fields: EMPLOYEE_FIELDS, \r\n });\r\n }),\r\n map(fetchAvailableEmployeesComplete),\r\n);\r\n\r\n export const searchEmployeessEpic = (action$, state$) => action$.pipe(\r\n ofType(SEARCH_EMPLOYEES),\r\n debounceTime(300),\r\n switchMap(({ payload }) => {\r\n const criteria = {\r\n isActive: true, \r\n };\r\n\r\n if(state$.value.settings.entity !== 'appointments')\r\n {\r\n criteria.isJobAssignee = true\r\n }\r\n\r\n if (payload) { \r\n criteria.employeequery = payload;\r\n } \r\n return JobProApi.employees.query({\r\n criteria\r\n }, {\r\n fields: EMPLOYEE_FIELDS, \r\n });\r\n }),\r\n map(searchEmployeesComplete),\r\n); \r\n","import { ofType } from 'redux-observable';\r\nimport { debounceTime, map, switchMap } from 'rxjs/operators';\r\nimport JobProApi from '../../dependencies/JobProApi';\r\nimport config from 'config.json';\r\nimport { fetchAvailableEmployees } from '../searchEmployees'\r\n\r\nconst JOB_FIELDS = 'id,address(city,line1,line2,state,zip),capacities(laborAmount),contacts(isPrimaryContact,name,firstName,lastName,cellPhone,workPhone,email),customer(id,name),items(item(itemType(id,name)),proposedQuantity),jobNumber,jobTotal,jobType,location,office(id,name),name,profit(actualProfit,proposedProfit),salesperson(calendarColor,firstName,lastName),status,priorityNotes';\r\n\r\n// Action types\r\nconst FETCH_AVAILABLE_JOBS = 'FETCH_AVAILABLE_JOBS';\r\nconst FETCH_AVAILABLE_JOBS_COMPLETE = 'FETCH_AVAILABLE_JOBS_COMPLETE';\r\nconst SEARCH_CUSTOMERS = 'FETCH_CUSTOMERS';\r\nconst SEARCH_CUSTOMERS_COMPLETE = 'FETCH_CUSTOMERS_COMPLETE';\r\nconst UPDATE_SEARCH_CRITERIA = 'UPDATE_SEARCH_CRITERIA';\r\nconst SET_JOB_TOGGLE = 'SET_JOB_TOGGLE';\r\n\r\nconst DEFAULT_STATE = {\r\n form: {\r\n bidTypes: [],\r\n jobStatuses: [],\r\n jobTypes: [],\r\n offices: [],\r\n salespeople: []\r\n },\r\n customers: {\r\n customers: [],\r\n loading: false\r\n },\r\n jobs: [],\r\n loading: false,\r\n jobToggle:{\r\n togleState: false,\r\n toggleClass:'fa fa-chevron-left'\r\n },\r\n};\r\n\r\n// Reducer\r\nexport default function (state = DEFAULT_STATE, { payload, type }) {\r\n switch (type) {\r\n case FETCH_AVAILABLE_JOBS:\r\n return {\r\n ...state,\r\n jobs: [],\r\n loading: true\r\n };\r\n case FETCH_AVAILABLE_JOBS_COMPLETE:\r\n return {\r\n ...state,\r\n ...payload,\r\n loading: false\r\n };\r\n case SEARCH_CUSTOMERS:\r\n return {\r\n ...state,\r\n customers: {\r\n customers: [],\r\n loading: true\r\n }\r\n };\r\n case SEARCH_CUSTOMERS_COMPLETE:\r\n return {\r\n ...state,\r\n customers: {\r\n customers: payload.customers,\r\n loading: false\r\n }\r\n };\r\n case UPDATE_SEARCH_CRITERIA:\r\n return {\r\n ...state,\r\n form: {\r\n ...state.form,\r\n ...payload\r\n },\r\n loading: true\r\n };\r\n case SET_JOB_TOGGLE:\r\n return {\r\n ...state,\r\n jobToggle:payload \r\n };\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\n// Action creators\r\nexport const fetchAvailableJobs = () => ({\r\n type: FETCH_AVAILABLE_JOBS\r\n});\r\n\r\nconst fetchAvailableJobsComplete = (jobs) => ({\r\n type: FETCH_AVAILABLE_JOBS_COMPLETE,\r\n payload: { jobs }\r\n});\r\n\r\nexport const searchCustomers = (query) => ({\r\n type: SEARCH_CUSTOMERS,\r\n payload: { query }\r\n});\r\n\r\nconst searchCustomersComplete = (customers) => ({\r\n type: SEARCH_CUSTOMERS_COMPLETE,\r\n payload: { customers }\r\n});\r\n\r\nexport const openJob = (jobId) => {\r\n window.open(`${config.versaItRoot}display.asp?key=6081&fo=basic%20display&rm=page&xID=${jobId}`);\r\n};\r\n\r\nexport const updateSearchCriteria = (criteria) => {\r\n return (dispatch) => {\r\n dispatch({type: UPDATE_SEARCH_CRITERIA, payload: criteria})\r\n dispatch(fetchAvailableEmployees());\r\n }\r\n};\r\n\r\n/*export const updateSearchCriteria = (criteria) => ({\r\n type: UPDATE_SEARCH_CRITERIA,\r\n payload: criteria\r\n});*/\r\n\r\nexport const setJobToggle = (toggle) => ({\r\n type: SET_JOB_TOGGLE,\r\n payload: toggle \r\n});\r\n// Epics\r\nexport const fetchAvailableJobsEpic = (action$, state$) => action$.pipe(\r\n ofType(FETCH_AVAILABLE_JOBS, UPDATE_SEARCH_CRITERIA),\r\n debounceTime(300),\r\n switchMap(() => {\r\n const { bidTypes, customerId, jobStatuses, jobTypes, offices, query, salespeople } = state$.value.searchJobs.form;\r\n\r\n // Build API filter criteria\r\n const criteria = {\r\n processComplete: false\r\n };\r\n if (query) {\r\n criteria.query = query;\r\n }\r\n if (bidTypes.length) {\r\n criteria['bid.category'] = bidTypes.map((t) => t.value);\r\n }\r\n if (customerId) {\r\n criteria['customer.id'] = customerId;\r\n }\r\n if (jobStatuses.length) {\r\n criteria.status = jobStatuses.map((s) => s.value);\r\n }\r\n if (jobTypes.length) {\r\n criteria.type = jobTypes.map((t) => t.name);\r\n }\r\n if (offices.length) {\r\n criteria.office = offices.map((o) => o.name);\r\n }\r\n if (salespeople.length) {\r\n criteria['salesperson.id'] = salespeople.map(s => s.id);\r\n }\r\n\r\n return JobProApi.jobs.search(criteria, {\r\n fields: JOB_FIELDS,\r\n limit: 50\r\n });\r\n }),\r\n map(fetchAvailableJobsComplete),\r\n);\r\n\r\nexport const searchCustomersEpic = (action$) => action$.pipe(\r\n ofType(SEARCH_CUSTOMERS),\r\n debounceTime(300),\r\n switchMap(({ payload }) => {\r\n const { query } = payload;\r\n return JobProApi.customers.search({\r\n query\r\n }, {\r\n fields: 'id,name'\r\n });\r\n }),\r\n map(searchCustomersComplete),\r\n);\r\n","import { ofType } from 'redux-observable';\r\nimport { debounceTime, map, switchMap } from 'rxjs/operators';\r\nimport JobProApi from '../../dependencies/JobProApi';\r\nimport config from 'config.json';\r\nimport { fetchAvailableEmployees } from '../searchEmployees'\r\nimport { dispatch } from 'rxjs/internal/observable/pairs';\r\n\r\n//const CALENDAR_EVENTS_FIELDS = 'id,description, datasheet(id,name,customer(id,name),office(id,name),address(city,line1,line2,state,zip)),customer(name,phone,address(city,line1,line2,state,zip)) ,startTime,endTime)';\r\nconst CALENDAR_EVENTS_FIELDS_DATASHEET = 'id,name,address(city,line1,line2,state,zip),officename,office(id,name,color), customer(id,name,phonenumber,address(city,line1,line2,state,zip),assignedto(id,calendarColor,firstName,lastName)),assignedtoresource(id,calendarColor,firstName,lastName)';\r\nconst CALENDAR_EVENTS_FIELDS_CUSTOMER = 'id,name,phonenumber,address(city,line1,line2,state,zip),office(id,name,color),assignedto(id,calendarColor,firstName,lastName)';\r\n\r\n\r\n// Action types\r\nconst FETCH_AVAILABLE_APPOINTMENT = 'FETCH_AVAILABLE_APPOINTMENT';\r\nconst FETCH_AVAILABLE_APPOINTMENT_COMPLETE = 'FETCH_AVAILABLE_APPOINTMENT_COMPLETE';\r\nconst SEARCH_CUSTOMERS = 'FETCH_CUSTOMERS';\r\nconst SEARCH_CUSTOMERS_COMPLETE = 'FETCH_CUSTOMERS_COMPLETE';\r\nconst SEARCH_DATASHEETS = \"SEARCH_DATASHEETS\";\r\nconst SEARCH_DATASHEETS_COMPLETE = \"SEARCH_DATASHEETS_COMPLETE\"\r\nconst UPDATE_SEARCH_CRITERIA = 'UPDATE_SEARCH_CRITERIA';\r\nconst SET_APPOINTMENT_TOGGLE = 'SET_APPOINTMENT_TOGGLE';\r\nconst SEARCH_TOGGLE = 'SEARCH_TOGGLE';\r\n\r\n\r\n\r\n\r\nconst DEFAULT_STATE = {\r\n form: {\r\n customers: [], \r\n offices: [],\r\n salespeople: [],\r\n datasheetsearch:true,\r\n },\r\n datasheetsearch:localStorage.getItem('datasheetsearch') !=='true',\r\n customers: {\r\n customers: [],\r\n loading: false\r\n }, \r\n datasheets: {\r\n datasheets: [],\r\n loading: false\r\n }, \r\n appointments:[], \r\n loading: false,\r\n appointmentToggle:{\r\n togleState: false,\r\n toggleClass:'fa fa-chevron-left'\r\n },\r\n};\r\n\r\n// Reducer\r\nexport default function searchAppointments (state = DEFAULT_STATE, { payload, type }) {\r\n switch (type) {\r\n case FETCH_AVAILABLE_APPOINTMENT:\r\n \r\n return {\r\n ...state,\r\n appointments: [],\r\n loading: true\r\n };\r\n case FETCH_AVAILABLE_APPOINTMENT_COMPLETE:\r\n \r\n return {\r\n ...state,\r\n ...payload,\r\n loading: false\r\n };\r\n case SEARCH_CUSTOMERS:\r\n return {\r\n ...state,\r\n customers: {\r\n customers: [],\r\n loading: true\r\n }\r\n };\r\n case SEARCH_CUSTOMERS_COMPLETE:\r\n return {\r\n ...state,\r\n customers: {\r\n customers: payload.customers,\r\n loading: false\r\n }\r\n };\r\n case SEARCH_DATASHEETS:\r\n return {\r\n ...state,\r\n datasheets: {\r\n datasheets: [],\r\n loading: true\r\n }\r\n };\r\n case SEARCH_DATASHEETS_COMPLETE:\r\n if(!payload)\r\n payload = []; \r\n\r\n return {\r\n ...state,\r\n datasheets: {\r\n datasheets: payload.datasheets,\r\n loading: false\r\n }\r\n };\r\n case UPDATE_SEARCH_CRITERIA:\r\n return {\r\n ...state,\r\n form: {\r\n ...state.form,\r\n ...payload\r\n },\r\n loading: true\r\n };\r\n case SET_APPOINTMENT_TOGGLE:\r\n return {\r\n ...state,\r\n appointmentToggle:payload \r\n };\r\n case SEARCH_TOGGLE:\r\n \r\n try { localStorage.setItem(\"datasheetsearch\", state.datasheetsearch); } catch (e) { }\r\n \r\n return {\r\n ...state,\r\n datasheetsearch: !state.datasheetsearch,\r\n form:{\r\n ...state.form,\r\n datasheetsearch: !state.datasheetsearch\r\n }\r\n };\r\n \r\n default:\r\n return state;\r\n }\r\n}\r\n\r\n// Action creators\r\nexport const fetchAvailableAppointments = () => ({\r\n type: FETCH_AVAILABLE_APPOINTMENT\r\n});\r\n\r\nconst fetchAvailableAppointmentsComplete = (appointments) => ({\r\n type: FETCH_AVAILABLE_APPOINTMENT_COMPLETE,\r\n payload: { appointments }\r\n});\r\n\r\nexport const searchCustomers = (query) => ({\r\n type: SEARCH_CUSTOMERS,\r\n payload: { query }\r\n});\r\n\r\nexport const searchDatasheets = (query) => ({\r\n type: SEARCH_DATASHEETS,\r\n payload: { query }\r\n});\r\n\r\nconst searchCustomersComplete = (customers) => ({\r\n type: SEARCH_CUSTOMERS_COMPLETE,\r\n payload: { customers }\r\n});\r\n\r\nconst searchDatasheetsComplete = (datasheets) => ({\r\n type: SEARCH_DATASHEETS_COMPLETE,\r\n payload: { datasheets }\r\n});\r\n\r\nexport const openDatasheet = (datahseetId) => {\r\n window.open(`${config.versaItRoot}display.asp?key=6075&fo=basic%20display&rm=page&xID=${datahseetId}`);\r\n};\r\nexport const openCustomer = (customerId) => {\r\n window.open(`${config.versaItRoot}display.asp?key=6073&fo=basic%20display&rm=page&xID=${customerId}`);\r\n};\r\n\r\n\r\nexport const updateSearchCriteria = (criteria) => {\r\n return (dispatch) => {\r\n dispatch({type: UPDATE_SEARCH_CRITERIA, payload: criteria})\r\n dispatch(fetchAvailableEmployees());\r\n }\r\n};\r\n\r\n/*\r\nexport const updateSettings = (values) => {\r\n \r\n return (dispatch) => { \r\n dispatch({type: UPDATE_SETTINGS, payload: values})\r\n dispatch(fetchAvailableEmployees());\r\n } \r\n \r\n};\r\n*/\r\n\r\nexport const setAppointmentToggle = (toggle) => ({\r\n type: SET_APPOINTMENT_TOGGLE,\r\n payload: toggle \r\n});\r\n\r\nexport const toggleDatasheetsearch = () => ({\r\n type: SEARCH_TOGGLE,\r\n});\r\n\r\n// Epics\r\n\r\nexport const fetchAvailableAppointmentsEpic = (action$, state$) => action$.pipe(\r\n ofType(FETCH_AVAILABLE_APPOINTMENT, UPDATE_SEARCH_CRITERIA,SEARCH_TOGGLE),\r\n debounceTime(300),\r\n switchMap(() => {\r\n //console.log(state$.value);\r\n var appointments={\r\n datasheets:[],\r\n customers:[]\r\n };\r\n \r\n\r\n const { customerId, offices, query, customerquery, salespeople,datasheetsearch } = state$.value.searchAppointments.form;\r\n \r\n // Build API filter criteria\r\n const criteria = {\r\n processComplete: false\r\n };\r\n \r\n if (offices.length) {\r\n criteria.office = offices.map((o) => o.name);\r\n }\r\n\r\n \r\n if (salespeople.length) {\r\n criteria.salespersonId = salespeople.map(s => s.id);\r\n } \r\n \r\n if(query && customerquery)\r\n {\r\n criteria.customerName = customerquery;\r\n criteria.query = query;\r\n\r\n return JobProApi.datasheets.search(criteria, {\r\n fields: CALENDAR_EVENTS_FIELDS_DATASHEET,\r\n limit: 50\r\n });\r\n\r\n }\r\n else if(query && !customerquery)\r\n {\r\n criteria.query = query;\r\n return JobProApi.datasheets.search(criteria, {\r\n fields: CALENDAR_EVENTS_FIELDS_DATASHEET,\r\n limit: 50\r\n });\r\n }\r\n else if(customerquery)\r\n {\r\n criteria.name = customerquery;\r\n \r\n return JobProApi.customers.search(criteria, {\r\n fields: CALENDAR_EVENTS_FIELDS_CUSTOMER,\r\n limit: 50\r\n });\r\n \r\n } \r\n else\r\n {\r\n return JobProApi.datasheets.search(criteria, {\r\n fields: CALENDAR_EVENTS_FIELDS_DATASHEET,\r\n limit: 50\r\n });\r\n \r\n } \r\n \r\n }),\r\n map(fetchAvailableAppointmentsComplete),\r\n);\r\n\r\nexport const searchCustomersEpic = (action$) => action$.pipe(\r\n ofType(SEARCH_CUSTOMERS),\r\n debounceTime(300),\r\n switchMap(({ payload }) => {\r\n const { query } = payload;\r\n return JobProApi.customers.search({\r\n query\r\n }, {\r\n fields: 'id,name,phonenumber,address(city,line1,line2,state,zip),salesperson(id,calendarColor,firstName,lastName)'\r\n });\r\n }),\r\n map(searchCustomersComplete),\r\n);\r\n\r\nexport const searchDatasheetsEpic = (action$) => action$.pipe(\r\n ofType(SEARCH_DATASHEETS),\r\n debounceTime(300),\r\n switchMap(({ payload }) => {\r\n const { query } = payload;\r\n return JobProApi.datasheets.search({\r\n query\r\n }, {\r\n fields: 'id,name'\r\n });\r\n }),\r\n map(searchDatasheetsComplete),\r\n);","import { combineEpics, ofType } from 'redux-observable';\r\nimport { debounceTime, filter, map, switchMap } from 'rxjs/operators';\r\nimport schedulerStorage from '../../dependencies/Storage';\r\nimport {\r\n reloadCalendar\r\n} from '../calendar';\r\nimport { createSelector } from 'reselect';\r\n\r\nimport { fetchAvailableEmployees } from '../searchEmployees';\r\n\r\n/**\r\n * Returns a deep copy of the specified object.\r\n * @param {Object} value\r\n */\r\nfunction deepCopy(value) {\r\n return JSON.parse(JSON.stringify(value));\r\n}\r\n\r\n/**\r\n * Sets a property of the specified object based on the selector and value.\r\n * @param {Object} object\r\n * @param {String} selector\r\n * @param {*} value\r\n */\r\nfunction setProperty(object, selector, value) {\r\n const keys = selector.split('.');\r\n const container = keys.slice(0, keys.length - 1).reduce((p, c) => p[c], object);\r\n container[keys[keys.length - 1]] = {\r\n ...(container[keys[keys.length - 1]] || {}),\r\n ...value\r\n };\r\n}\r\n\r\n// Action types\r\nexport const LOAD_SAVED_SETTINGS = 'LOAD_SAVED_SETTINGS';\r\nconst TOGGLE_DETAIL = 'TOGGLE_DETAIL';\r\nconst TOGGLE_FINANCIAL = 'TOGGLE_FINANCIAL';\r\nconst TOGGLE_LOCATION = 'TOGGLE_LOCATION';\r\nconst TOGGLE_MATERIAL = 'TOGGLE_MATERIAL';\r\nconst UPDATE_FIELD = 'UPDATE_FIELD';\r\nexport const UPDATE_SETTINGS = 'UPDATE_SETTINGS';\r\n\r\nconst FIELD_DEFAULTS = {\r\n details: {\r\n label: 'Detail',\r\n fields: { \r\n description: {\r\n label: 'Description',\r\n visible: true,\r\n onText:'ON',\r\n offText:'OFF'\r\n },\r\n jobStatus: {\r\n label: 'Job Status',\r\n visible: true,\r\n onText:'ON',\r\n offText:'OFF'\r\n },\r\n customerName: {\r\n label: 'Customer Name',\r\n visible: true,\r\n onText:'ON',\r\n offText:'OFF'\r\n },\r\n contact: {\r\n label: 'Contact',\r\n visible: true,\r\n onText:'ON',\r\n offText:'OFF'\r\n },\r\n salesperson: {\r\n label: 'Salesperson',\r\n visible: true\r\n },\r\n deliveryStatus: {\r\n label: 'Delivery Status',\r\n visible: true,\r\n onText:'ON',\r\n offText:'OFF'\r\n },\r\n supplier: {\r\n label: 'Supplier',\r\n visible: true,\r\n onText:'ON',\r\n offText:'OFF'\r\n },\r\n deliveryJobs: {\r\n label: 'Delivery Jobs',\r\n visible: true,\r\n onText:'ON',\r\n offText:'OFF'\r\n },\r\n priorityNotes: {\r\n label: 'Priority Notes',\r\n visible: true,\r\n onText:'ON',\r\n offText:'OFF'\r\n }\r\n }\r\n },\r\n location: {\r\n label: 'Location',\r\n fields: {\r\n line1: {\r\n label: 'Line 1',\r\n visible: true\r\n },\r\n line2: {\r\n label: 'Line 2',\r\n visible: true\r\n },\r\n city: {\r\n label: 'City',\r\n visible: true,\r\n },\r\n state: {\r\n label: 'State/Province/Region',\r\n visible: true\r\n },\r\n zip: {\r\n label: 'Postal Code',\r\n visible: true\r\n },\r\n deliveryShipTo: {\r\n label: 'Delivery Ship-To',\r\n visible: true\r\n }\r\n }\r\n },\r\n financial: {\r\n label: 'Financial',\r\n fields: {\r\n jobRevenue: {\r\n label: 'Revenue',\r\n visible: true\r\n },\r\n jobProposedProfit: {\r\n label: 'Proposed Profit',\r\n visible: true\r\n },\r\n jobActualProfit: {\r\n label: 'Actual Profit',\r\n visible: true\r\n },\r\n jobEstimatedLabor: {\r\n label: 'Estimated Labor',\r\n visible: true\r\n }\r\n }\r\n }\r\n};\r\n\r\nconst DEFAULT_STATE = {\r\n bidTypes: [],\r\n color: 'jobStatus',\r\n detailEnabled: true,\r\n entity: 'jobs',\r\n schedulerView:'equipment',\r\n employeeSearchToggle:{\r\n togleState: false,\r\n toggleClass:'fa fa-chevron-right'\r\n },\r\n jobSearchToggle:{\r\n togleState: false,\r\n toggleClass:'fa fa-chevron-left'\r\n },\r\n fields: {},\r\n financialEnabled: false,\r\n jobStatuses: [],\r\n jobTypes: [],\r\n locationEnabled: false,\r\n materialEnabled: false,\r\n offices: [],\r\n salespeople: [],\r\n sortoption:\"Date\",\r\n SortTypes:[ \r\n {label:\"Date\",value:\"Date\"},\r\n {label:\"Customer\",value:\"Customer\"},\r\n {label:\"Address\",value:\"Address\"},\r\n ]\r\n};\r\n\r\n// Reducer\r\nexport default function (state = DEFAULT_STATE, {\r\n payload,\r\n type\r\n}) {\r\n switch (type) {\r\n case TOGGLE_DETAIL:\r\n return {\r\n ...state,\r\n detailEnabled: !state.detailEnabled\r\n };\r\n case TOGGLE_FINANCIAL:\r\n return {\r\n ...state,\r\n financialEnabled: !state.financialEnabled\r\n };\r\n case TOGGLE_LOCATION:\r\n return {\r\n ...state,\r\n locationEnabled: !state.locationEnabled\r\n };\r\n case TOGGLE_MATERIAL:\r\n return {\r\n ...state,\r\n materialEnabled: !state.materialEnabled\r\n };\r\n case UPDATE_FIELD:\r\n return {\r\n ...state,\r\n fields: {\r\n ...state.fields,\r\n [payload.key]: {\r\n ...(state.fields[payload.key] || {}),\r\n ...payload.options\r\n }\r\n }\r\n };\r\n case UPDATE_SETTINGS:\r\n return {\r\n ...state,\r\n ...payload\r\n };\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\n// Action creators\r\nexport const loadSavedSettings = () => ({\r\n type: LOAD_SAVED_SETTINGS\r\n});\r\n\r\nexport const toggleDetail = () => ({\r\n type: TOGGLE_DETAIL\r\n});\r\n\r\nexport const toggleFinancial = () => ({\r\n type: TOGGLE_FINANCIAL\r\n});\r\n\r\nexport const toggleLocation = () => ({\r\n type: TOGGLE_LOCATION\r\n});\r\n\r\nexport const toggleMaterial = () => ({\r\n type: TOGGLE_MATERIAL\r\n});\r\n\r\nexport const updateSettings = (values) => {\r\n \r\n return (dispatch) => { \r\n dispatch({type: UPDATE_SETTINGS, payload: values})\r\n dispatch(fetchAvailableEmployees());\r\n } \r\n \r\n};\r\n\r\nexport const updateField = (key, options) => ({\r\n type: UPDATE_FIELD,\r\n payload: {\r\n key,\r\n options\r\n }\r\n});\r\n\r\n// Epics\r\nconst loadSavedSettingsEpic = action$ => action$.pipe(\r\n ofType(LOAD_SAVED_SETTINGS),\r\n switchMap(() => schedulerStorage.getItem('settings')),\r\n map(settings => updateSettings(settings || {})),\r\n);\r\n\r\nconst updateSettingsEpic = action$ => action$.pipe(\r\n ofType(UPDATE_SETTINGS),\r\n map(() => reloadCalendar()),\r\n);\r\n\r\nconst saveSettingsEpic = (action$, state$) => action$.pipe(\r\n ofType(UPDATE_SETTINGS, TOGGLE_DETAIL, TOGGLE_FINANCIAL, TOGGLE_LOCATION,\r\n TOGGLE_MATERIAL, UPDATE_FIELD),\r\n debounceTime(1000),\r\n map(() => state$.value.settings),\r\n switchMap(settings => schedulerStorage.setItem('settings', settings)),\r\n filter(() => false),\r\n);\r\n\r\nexport const epic = combineEpics(\r\n loadSavedSettingsEpic,\r\n updateSettingsEpic,\r\n saveSettingsEpic\r\n);\r\n\r\n// Selectors\r\nexport const fieldsSelector = createSelector(\r\n state => state.settings.fields,\r\n fields => {\r\n return Object.keys(fields).reduce((prev, k) => {\r\n setProperty(prev, k, fields[k]);\r\n return prev;\r\n }, deepCopy(FIELD_DEFAULTS));\r\n }\r\n);\r\n","import moment from 'moment';\r\nimport { combineEpics, ofType } from 'redux-observable';\r\nimport { debounceTime, filter, flatMap, map, switchMap } from 'rxjs/operators';\r\nimport JobProApi from '../../dependencies/JobProApi';\r\nimport schedulerStorage from '../../dependencies/Storage';\r\nimport { toggleDeleteModal } from '../../redux/modals';\r\nimport { openBid } from '../../redux/searchBids';\r\nimport { openPurchaseOrder } from '../../redux/searchPurchaseOrders';\r\nimport matchCrews from '../../utils/matchCrews';\r\nimport matchEquipment from '../../utils/matchEquipment';\r\nimport { openJob } from '../searchJobs';\r\nimport { openDatasheet,openCustomer } from '../searchAppointments';\r\nimport { LOAD_SAVED_SETTINGS } from '../settings';\r\nimport { isNumber } from 'lodash';\r\n\r\nconst APPOINTMENT_FIELDS ='id,name';\r\nconst CUSTOMER_FIELDS='id,name'\r\nconst CREW_FIELDS = 'id,equipment(id,color,displayOrder,name,workCapacities(capacityType,value)),resources(resource(id,firstName,lastName),resourcePercentage)';\r\nconst JOB_FIELDS = 'id,capacities(estimatedDuration,laborAmount,materialQuantity),contacts(isPrimaryContact,name,firstName,lastName,cellPhone,workPhone,email),customer(id,name),estimatedStartDate,items(item(itemType(id,name)),proposedQuantity),geoPoint(latitude,longitude),jobNumber,jobTotal,jobType,location,office(id,name),name,profit(actualProfit,proposedProfit),salesperson(calendarColor),status,priorityNotes';\r\nconst CALENDAR_FIELDS = `id,crew(${CREW_FIELDS}),description,displayOrder,endDate,endTime,job(${JOB_FIELDS}),startDate,startTime,appointmenttype(${APPOINTMENT_FIELDS}),customer(${CUSTOMER_FIELDS}),`;\r\nconst PURCHASE_ORDER_FIELDS = `id,crew(${CREW_FIELDS}),dateDelivered,deliveryOrder,items(id,item(itemType(id,inventoryQuantityLabel,name)),job(id,geoPoint(latitude,longitude),jobNumber,name),quantity,summary),loadCapacity,name,poNumber,status(name),supplier(name)`;\r\n\r\n\r\n\r\n// Action types\r\nexport const CALENDAR_FETCH = 'CALENDAR_FETCH';\r\nexport const CALENDAR_UPDATE = 'CALENDAR_UPDATE';\r\nexport const CALENDAR_UPDATE_APPT = 'CALENDAR_UPDATE_APPT';\r\n\r\nconst RESCHEDULE_EVENT = 'RESCHEDULE_EVENT';\r\nconst RESCHEDULE_EVENT_EXPLICIT = 'RESCHEDULE_EVENT_EXPLICIT';\r\nconst SCHEDULE_BID_EXPLICIT = 'SCHEDULE_BID_EXPLICIT';\r\nconst SCHEDULE_JOB_EXPLICIT = 'SCHEDULE_JOB_EXPLICIT';\r\nconst SCHEDULE_PURCHASE_ORDER_EXPLICIT = 'SCHEDULE_PURCHASE_ORDER_EXPLICIT';\r\nconst SET_ACTIVE_CREW = 'SET_ACTIVE_CREW';\r\nconst SET_ACTIVE_EQUIPMENT = 'SET_ACTIVE_EQUIPMENT';\r\nconst TOGGLE_BIDS = 'TOGGLE_BIDS';\r\nconst TOGGLE_DELIVERIES = 'TOGGLE_DELIVERIES';\r\nconst TOGGLE_JOBS = 'TOGGLE_JOBS';\r\nconst TOGGLE_APPOINTMENTS='TOGGLE_APPOINTMENTS';\r\nconst UPDATE_SELECTED_EMPLOYEE_LIST = 'UPDATE_SELECTED_EMPLOYEE_LIST';\r\nconst SELECTED_WEEK_VIEW = \"SELECTED_WEEK_VIEW\";\r\nconst SCHEDULE_APPOINTMENT_EXPLICIT = \"SCHEDULE_APPOINTMENT_EXPLICIT\";\r\nconst APPT_CONTEXT_MENU_CLICK=\"APPT_CONTEXT_MENU_CLICK\"\r\n\r\nconst HIDE_CONTEXT_MENU_ITEM = \"HIDE_CONTEXT_MENU_ITEM\";\r\n\r\nfunction getDefaultState() {\r\n try {\r\n return {\r\n activeCrew: null,\r\n activeEquipment: null,\r\n date: moment().format(),\r\n mode: localStorage.getItem('mode') || 'week',\r\n showBids: localStorage.getItem('hideBids') !== 'true',\r\n showDeliveries: localStorage.getItem('hideDeliveries') !== 'true',\r\n showJobs: localStorage.getItem('hideJobs') !== 'true',\r\n showAppointments:localStorage.getItem('hideAppointments') !== 'true',\r\n selected_employees:[],\r\n selected_week_view : 'equipment',\r\n showApptMenuItem:false,\r\n showMenuItem:localStorage.getItem('hideMenuItem') !== 'true',\r\n };\r\n } catch (e) {\r\n return {\r\n activeCrew: null,\r\n activeEquipment: null,\r\n date: moment().format(),\r\n mode: 'week',\r\n showBids: true,\r\n showDeliveries: true,\r\n showJobs: true,\r\n showAppointments:true,\r\n selected_employees:[],\r\n selected_week_view:'equipment',\r\n showMenuItem:true\r\n };\r\n }\r\n}\r\n\r\nconst DEFAULT_STATE = getDefaultState();\r\n\r\n/**\r\n * Determines the appropriate end date for a rescheduled calendar event.\r\n *\r\n * @param {any} event The event being rescheduled.\r\n * @param {any} scheduleDate The new date the event is scheduled.\r\n * @returns The new event end date.\r\n */\r\nfunction getEndDate(event, scheduleDate) {\r\n // If there is no existing endDate, return the schedule date\r\n if (!event.endDate) {\r\n return moment(scheduleDate).format('YYYY-MM-DD');\r\n }\r\n\r\n // Determine the difference in the new schedule date and the start date\r\n const dateDiff = moment(scheduleDate).diff(event.startDate, 'days');\r\n\r\n // Apply the date difference to the current end date\r\n return moment(event.endDate).add(dateDiff, 'days').format('YYYY-MM-DD');\r\n}\r\n\r\nexport function getNextPurchaseOrderDeliveryOrder(events, crew) {\r\n return events\r\n .filter(e => !!e.purchaseOrder)\r\n .filter(e => matchCrews(crew, e.crew))\r\n .reduce((prev, e) => Math.max(prev, e.purchaseOrder.deliveryOrder), 0) + 1;\r\n}\r\n\r\nexport function getNextCalendarDisplayOrder(events, crew) {\r\n return events\r\n .filter(e => !e.purchaseOrder)\r\n .filter(e => matchCrews(crew, e.crew))\r\n .reduce((prev, e) => Math.max(prev, e.displayOrder), 0) + 1;\r\n}\r\n\r\nexport function getNextCalendarDisplayOrderAppointment(events) {\r\n return events\r\n .filter(e => !e.purchaseOrder) \r\n .reduce((prev, e) => Math.max(prev, e.displayOrder), 0) + 1;\r\n}\r\n\r\nexport function getNextCalendarDisplayOrderEquipment(events, equipment) {\r\n return events\r\n .filter(e => !e.purchaseOrder)\r\n .filter(e => matchEquipment(equipment, ((e.crew && e.crew.equipment) ? e.crew.equipment : null)))\r\n .reduce((prev, e) => Math.max(prev, e.displayOrder), 0) + 1;\r\n}\r\n\r\n\r\n\r\n// Reducer\r\nexport default function (state = DEFAULT_STATE, { payload, type }) {\r\n switch (type) {\r\n case CALENDAR_FETCH:\r\n try { localStorage.setItem(\"mode\", payload.mode); } catch (e) { }\r\n return {\r\n ...state,\r\n ...payload\r\n };\r\n case SET_ACTIVE_CREW:\r\n return {\r\n ...state,\r\n activeCrew: payload\r\n };\r\n case SET_ACTIVE_EQUIPMENT:\r\n return {\r\n ...state,\r\n activeEquipment: payload\r\n };\r\n case TOGGLE_BIDS:\r\n try { localStorage.setItem(\"hideBids\", state.showBids); } catch (e) { }\r\n return {\r\n ...state,\r\n showBids: !state.showBids,\r\n };\r\n case TOGGLE_DELIVERIES:\r\n try { localStorage.setItem(\"hideDeliveries\", state.showDeliveries); } catch (e) { }\r\n return {\r\n ...state,\r\n showDeliveries: !state.showDeliveries\r\n };\r\n case TOGGLE_JOBS:\r\n try { localStorage.setItem(\"hideJobs\", state.showJobs); } catch (e) { }\r\n return {\r\n ...state,\r\n showJobs: !state.showJobs\r\n };\r\n\r\n case TOGGLE_APPOINTMENTS:\r\n try { localStorage.setItem(\"hideAppointments\", state.showAppointments); } catch (e) { }\r\n return {\r\n ...state,\r\n showAppointments: !state.showAppointments\r\n };\r\n\r\n case UPDATE_SELECTED_EMPLOYEE_LIST: \r\n let selected_Employees = [...state.selected_employees]; \r\n try{\r\n \r\n let empid = parseInt(payload.payload.empid); \r\n if(payload.payload.selected)\r\n { \r\n if(selected_Employees.indexOf(empid) === -1) // add if does not exist\r\n { \r\n selected_Employees = [...state.selected_employees,empid]; \r\n }\r\n }\r\n else\r\n {\r\n if(selected_Employees.indexOf(empid) !== -1) // remove if exist and employee not selected\r\n { \r\n selected_Employees.splice(selected_Employees.indexOf(empid),1);\r\n }\r\n }\r\n state.selected_employees = selected_Employees; \r\n } \r\n catch(e)\r\n {\r\n console.log(e);\r\n }\r\n return {\r\n ...state, \r\n selected_Employees \r\n };\r\n case SELECTED_WEEK_VIEW:\r\n return {\r\n ...state,\r\n selected_week_view: payload\r\n };\r\n case APPT_CONTEXT_MENU_CLICK: \r\n \r\n return {\r\n ...state,\r\n showApptMenuItem : payload\r\n }\r\n\r\n\r\n case HIDE_CONTEXT_MENU_ITEM:\r\n \r\n try { localStorage.setItem(\"hideMenuItem\", state.showMenuItem); } catch (e) { }\r\n return {\r\n ...state,\r\n showMenuItem:payload\r\n };\r\n \r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nconst mapBidToEvent = (b) => ({\r\n id: `BID-${b.id}`,\r\n key: Math.random(),\r\n crew: null,\r\n startDate: b.estimatedStartDate,\r\n endDate: b.estimatedStartDate,\r\n bid: b,\r\n tentative: true,\r\n});\r\n\r\nconst mapCalendarEventToEvent = (c) => ({ \r\n ...c,\r\n key: Math.random(),\r\n evttype: c.job != null?\"jobs\":\"appointments\"\r\n});\r\n\r\n\r\nconst mapPurchaseOrderToEvent = (p) => ({\r\n id: Math.random(),\r\n crew: p.crew,\r\n startDate: p.dateDelivered,\r\n endDate: p.dateDelivered,\r\n purchaseOrder: p,\r\n evttype:'purchaseOrders'\r\n});\r\n\r\nconst performScheduleJob = (jobId, crew, date, displayOrder) => {\r\n\r\n \r\n return JobProApi.calendar.create({\r\n crew: crew ? {\r\n equipment: crew.equipment,\r\n resources: crew.resources? crew.resources.filter(r => !!r.resource).map(r => ({\r\n resource: { id: r.resource.id },\r\n resourcePercentage: r.resourcePercentage\r\n })):[]\r\n } : null,\r\n displayOrder,\r\n endDate: moment(date).format('YYYY-MM-DD'),\r\n job: jobId ? { id: jobId } : null,\r\n startDate: moment(date).format('YYYY-MM-DD')\r\n }, {\r\n fields: CALENDAR_FIELDS\r\n }).then((event) => {\r\n event.evttype=\"jobs\";\r\n return ( \r\n {\r\n type: CALENDAR_UPDATE,\r\n payload: event\r\n }\r\n \r\n )});\r\n};\r\n\r\nconst performScheduleAppointmentEvent = (datasheetid,customerid, appointmenttype, crew, startdate,starttime, enddate,endtime,displayOrder,description) => {\r\n\r\n \r\n return JobProApi.calendar.create({\r\n Crew: crew && crew.crew ? {\r\n Equipment: crew.crew.equipment,\r\n Resources: crew.crew.resources? crew.crew.resources.filter(r => !!r.resource).map(r => ({\r\n resource: { id: r.resource.id },\r\n \r\n })):[]\r\n } : null,\r\n Equipment:crew?crew.equipment:null,\r\n displayOrder, \r\n EndDate: moment(enddate).format('YYYY-MM-DD'), \r\n customer:customerid ?{id:customerid}:null,\r\n datasheet:datasheetid ?{id:datasheetid}:null,\r\n ApptType:appointmenttype,\r\n description:description,\r\n StartDate: moment(startdate).format('YYYY-MM-DD'),\r\n StartTime:starttime, \r\n EndTime:endtime \r\n\r\n }, {\r\n fields: CALENDAR_FIELDS\r\n }).then(() => ({\r\n type: CALENDAR_FETCH,\r\n payload: {mode:\"week\", date:startdate}\r\n }));\r\n};\r\n\r\n\r\n\r\n\r\nconst performSchedulePurchaseOrder = (purchaseOrderId, crew, date, deliveryOrder) => {\r\n return JobProApi.purchaseOrders.update(purchaseOrderId, {\r\n crew: crew ? {\r\n equipment: crew.equipment ? { id: crew.equipment.id } : null,\r\n resources: crew.resources.filter(r => !!r.resource).map(r => ({\r\n resource: { id: r.resource.id },\r\n resourcePercentage: r.resourcePercentage\r\n }))\r\n } : null,\r\n dateDelivered: moment(date).format('YYYY-MM-DD'),\r\n deliveryOrder\r\n }, {\r\n fields: PURCHASE_ORDER_FIELDS\r\n }).then((purchaseOrder) => ({\r\n type: CALENDAR_UPDATE,\r\n payload: mapPurchaseOrderToEvent(purchaseOrder)\r\n }));\r\n};\r\n\r\nexport const fetchCalendar = (date, mode) => ({\r\n type: CALENDAR_FETCH,\r\n payload: {\r\n date,\r\n mode\r\n }\r\n});\r\n\r\nexport const reloadCalendar = () => (dispatch, getState) => {\r\n const { calendar } = getState();\r\n const { date, mode } = calendar;\r\n dispatch(fetchCalendar(date, mode));\r\n};\r\n\r\nexport const scheduleBid = (bidId, date) => (dispatch, getState) => {\r\n const { calendar } = getState();\r\n date = date || calendar.date;\r\n\r\n return JobProApi.bids.update(bidId, {\r\n startDate: moment(date).format('YYYY-MM-DD'),\r\n }, { fields: 'id' }).then(() => { \r\n return dispatch(reloadCalendar());\r\n });\r\n};\r\n\r\nexport const scheduleJobExplicit = (jobId, crew, date) => ({\r\n type: SCHEDULE_JOB_EXPLICIT,\r\n payload: { jobId, crew, date }\r\n});\r\n\r\nexport const scheduleJobToActiveCrew = (jobId) => (dispatch, getState) => {\r\n const { calendar, events } = getState();\r\n const { activeCrew, date } = calendar;\r\n\r\n const nextDisplayOrder = getNextCalendarDisplayOrder(events.events, activeCrew);\r\n return performScheduleJob(jobId, activeCrew, date, nextDisplayOrder)\r\n .then(dispatch);\r\n};\r\n\r\nexport const rescheduleEvent = (eventId) => ({\r\n type: RESCHEDULE_EVENT,\r\n payload: { eventId }\r\n});\r\n\r\nexport const rescheduleEventExplicit = (eventId, date, crew) => ({\r\n type: RESCHEDULE_EVENT_EXPLICIT,\r\n payload: { eventId, date, crew }\r\n \r\n});\r\n\r\nexport const scheduleAppointmentExplicit = (datasheetid,customerid,appointmentype, crew, startdate, starttime, enddate, endtime,description) => ({\r\n type: SCHEDULE_APPOINTMENT_EXPLICIT,\r\n payload: { datasheetid,customerid,appointmentype, crew, startdate,starttime,enddate,endtime,description }\r\n});\r\n\r\n\r\nexport const schedulePurchaseOrderExplicit = (purchaseOrderId, date, crew) => ({\r\n type: SCHEDULE_PURCHASE_ORDER_EXPLICIT,\r\n payload: { purchaseOrderId, date, crew }\r\n});\r\n\r\nexport const schedulePurchaseOrderToActiveCrew = (purchaseOrderId) => (dispatch, getState) => {\r\n const { calendar, events } = getState();\r\n const { activeCrew, date } = calendar;\r\n\r\n // Find the largest delivery order and increment it by one\r\n const nextDeliveryOrder = getNextPurchaseOrderDeliveryOrder(events.events, activeCrew);\r\n return performSchedulePurchaseOrder(purchaseOrderId, activeCrew, date, nextDeliveryOrder)\r\n .then(dispatch);\r\n};\r\n\r\nexport const setActiveCrew = (crew) => ({\r\n type: SET_ACTIVE_CREW,\r\n payload: crew\r\n});\r\n\r\nexport const setActiveEquipment = (equipment) => ({\r\n type: SET_ACTIVE_EQUIPMENT,\r\n payload: equipment\r\n});\r\n\r\nexport const showApptContextMenuItem = (event) => ({\r\n type: APPT_CONTEXT_MENU_CLICK,\r\n payload: event.evt.customer !=null || event.evt.datasheet !=null\r\n});\r\n\r\nexport const changeWeekView = (view) => ({\r\n type: SELECTED_WEEK_VIEW,\r\n payload: view\r\n});\r\n\r\nexport const toggleBids = () => ({\r\n type: TOGGLE_BIDS,\r\n});\r\n\r\nexport const toggleDeliveries = () => ({\r\n type: TOGGLE_DELIVERIES\r\n});\r\n\r\nexport const toggleJobs = () => ({\r\n type: TOGGLE_JOBS\r\n});\r\n\r\nexport const toggleAppoinments = () => ({\r\n type: TOGGLE_APPOINTMENTS\r\n});\r\n\r\nexport const updateEvent = (eventId, changes) => (dispatch,getState) => {\r\n JobProApi.calendar.update(eventId, changes, {\r\n fields: CALENDAR_FIELDS\r\n }).then((event) => {\r\n\r\n const { date, mode } = getState().calendar;\r\n dispatch(fetchCalendar(event.startDate, mode)); \r\n \r\n }).catch((err) => {\r\n throw err;\r\n });\r\n};\r\n\r\nexport const updatePurchaseOrder = (purchaseOrderId, changes) => (dispatch) => {\r\n JobProApi.purchaseOrders.update(purchaseOrderId, changes, {\r\n fields: PURCHASE_ORDER_FIELDS\r\n }).then(() => {\r\n dispatch(reloadCalendar());\r\n }).catch((err) => {\r\n throw err;\r\n });\r\n};\r\n\r\nexport const deleteEvent = () => (dispatch, getState) => {\r\n const { events, modals } = getState();\r\n const { eventId } = modals.deleteModal;\r\n const event = events.events.find((e) => e.id === eventId);\r\n\r\n dispatch(toggleDeleteModal());\r\n\r\n if (event.purchaseOrder) {\r\n dispatch(updatePurchaseOrder(event.purchaseOrder.id, {\r\n crew: null,\r\n dateDelivered: null\r\n }));\r\n } else {\r\n JobProApi.calendar.delete(eventId).then(() => {\r\n const { date, mode } = getState().calendar;\r\n dispatch(fetchCalendar(date, mode));\r\n });\r\n };\r\n};\r\n\r\nexport const openEvent = (eventId) => (dispatch, getState) => {\r\n const { events } = getState().events;\r\n const event = events.find((e) => e.id === eventId);\r\n if (event.bid) {\r\n openBid(event.bid.id);\r\n } else if (event.purchaseOrder) {\r\n openPurchaseOrder(event.purchaseOrder.id);\r\n } else if (event.job) {\r\n openJob(event.job.id);\r\n }\r\n};\r\n\r\n// passing event directly\r\nexport const openApptEvent=(event)=>()=>{\r\nif(event.datasheet)\r\n{\r\n openDatasheet(event.datasheet.id)\r\n}\r\nelse if (event.customer)\r\n{\r\n openCustomer(event.customer.id)\r\n}\r\n\r\n}\r\n\r\nexport const hideMenuItem = (payload)=>(\r\n{ \r\n type:HIDE_CONTEXT_MENU_ITEM,\r\n payload:isNumber(payload)\r\n\r\n})\r\nexport const updateSelectedEmployeeList = (payload)=>(\r\n {\r\n type:UPDATE_SELECTED_EMPLOYEE_LIST,\r\n payload : {payload}\r\n \r\n })\r\n\r\n\r\nconst loadSavedCalendarComplete = savedSettings => (dispatch, getState) => {\r\n const { calendar } = getState();\r\n const { date } = calendar;\r\n const { mode } = savedSettings;\r\n dispatch(fetchCalendar(date, mode));\r\n};\r\n\r\nconst performReschedule = (event, crew, date, events, settings) => {\r\n \r\n const eventId = event.id;\r\n \r\n if (event.bid) {\r\n return JobProApi.bids.update(event.bid.id, {\r\n startDate: moment(date).format('YYYY-MM-DD'),\r\n }, { fields: 'id' }).then(() => {\r\n return reloadCalendar();\r\n });\r\n } else if (event.purchaseOrder) {\r\n const nextDeliveryOrder = getNextPurchaseOrderDeliveryOrder(events, crew);\r\n \r\n return JobProApi.purchaseOrders.update(event.purchaseOrder.id, {\r\n crew: crew ? {\r\n equipment: crew.equipment ? { id: crew.equipment.id } : null,\r\n resources: crew.resources.filter(r => !!r.resource).map(r => ({\r\n resource: { id: r.resource.id },\r\n resourcePercentage: r.resourcePercentage\r\n }))\r\n } : null,\r\n dateDelivered: moment(date).format('YYYY-MM-DD'),\r\n deliveryOrder: nextDeliveryOrder\r\n }, {\r\n fields: PURCHASE_ORDER_FIELDS\r\n }).then((purchaseOrder) => ({\r\n type: CALENDAR_UPDATE,\r\n payload: {\r\n ...mapPurchaseOrderToEvent(purchaseOrder),\r\n id: eventId\r\n }\r\n }));\r\n } else if (event.job && event.tentative) {\r\n return scheduleJobExplicit(event.job.id, crew, date);\r\n } else {\r\n \r\n const nextDisplayOrder = settings.schedulerView == 'crew' ? getNextCalendarDisplayOrder(events, crew) : getNextCalendarDisplayOrderEquipment(events, ((crew && crew.equipment) ? crew.equipment : null));\r\n \r\n return JobProApi.calendar.update(eventId, {\r\n \r\n crew: crew ? {\r\n \r\n equipment: crew.equipment ? { id: crew.equipment.id } : null,\r\n resources: crew.resources? crew.resources.filter(r => !!r.resource).map(r => ({\r\n resource: { id: r.resource.id },\r\n resourcePercentage: r.resourcePercentage\r\n })):[]\r\n } : null,\r\n displayOrder: nextDisplayOrder ,\r\n startDate: moment(date).format('YYYY-MM-DD'),\r\n endDate: getEndDate(event, date),\r\n customer:event.customer?{id:event.customer.id}:null,\r\n datasheet:event.datasheet ?{id:event.datasheet.datasheetid}:null,\r\n ApptType:event.appttype?event.apptype:null,\r\n description:event.description, \r\n StartTime:event.startTime,\r\n EndTime:event.endTime\r\n }, {\r\n fields: CALENDAR_FIELDS\r\n }).then((event) => ({\r\n type: CALENDAR_FETCH,\r\n payload: {mode:\"week\", date:date}\r\n }));\r\n }\r\n};\r\n\r\n// Epics\r\nconst loadSavedCalendarEpic = action$ => action$.pipe(\r\n ofType(LOAD_SAVED_SETTINGS),\r\n switchMap(() => schedulerStorage.getItem('calendar')),\r\n map(calendar => loadSavedCalendarComplete(calendar || {})),\r\n);\r\n\r\nconst rescheduleEventEpic = (action$, state$) => action$.pipe(\r\n ofType(RESCHEDULE_EVENT),\r\n map(({ payload }) => payload),\r\n flatMap(({ eventId }) => {\r\n const { calendar, events, settings } = state$.value;\r\n const { activeCrew, date } = calendar;\r\n\r\n const event = events.events.find((e) => e.id === eventId);\r\n\r\n return performReschedule(event, activeCrew, date, events.events, settings);\r\n }),\r\n);\r\n\r\nconst rescheduleEventExplicitEpic = (action$, state$) => action$.pipe(\r\n ofType(RESCHEDULE_EVENT_EXPLICIT),\r\n map(({ payload }) => payload),\r\n flatMap(({ crew, date, eventId }) => {\r\n const { events, settings } = state$.value;\r\n \r\n \r\n const event = events.events.find((e) => e.id === eventId);\r\n \r\n return performReschedule(event, crew, date, events.events, settings);\r\n }),\r\n);\r\n\r\nconst saveCalendarEpic = (action$, state$) => action$.pipe(\r\n ofType(CALENDAR_FETCH),\r\n debounceTime(1000),\r\n map(() => {\r\n const { mode } = state$.value.calendar;\r\n return {\r\n mode\r\n };\r\n }),\r\n switchMap(calendar => schedulerStorage.setItem('calendar', calendar)),\r\n filter(() => false),\r\n);\r\n\r\nconst scheduleBidExplicitEpic = (action$, state$) => action$.pipe(\r\n ofType(SCHEDULE_BID_EXPLICIT),\r\n map(({ payload }) => payload),\r\n flatMap(({ crew, date, jobId }) => {\r\n const nextDisplayOrder = getNextCalendarDisplayOrder(state$.value.events.events, crew);\r\n return performScheduleJob(jobId, crew, date, nextDisplayOrder);\r\n }),\r\n);\r\n\r\nconst scheduleJobExplicitEpic = (action$, state$) => action$.pipe(\r\n ofType(SCHEDULE_JOB_EXPLICIT),\r\n map(({ payload }) => payload),\r\n flatMap(({ crew, date, jobId }) => {\r\n const nextDisplayOrder = getNextCalendarDisplayOrder(state$.value.events.events, crew);\r\n return performScheduleJob(jobId, crew, date, nextDisplayOrder);\r\n }),\r\n);\r\n\r\nconst scheduleAppointmentExplicitEpic = (action$, state$) => action$.pipe(\r\n ofType(SCHEDULE_APPOINTMENT_EXPLICIT),\r\n map(({ payload }) => {return payload}),\r\n flatMap(\r\n ({ datasheetid,customerid,appointmentype,crew, startdate,starttime,enddate,endtime,description }) => { \r\n const nextDisplayOrder = getNextCalendarDisplayOrderAppointment(state$.value.events.events, crew);\r\n return performScheduleAppointmentEvent(datasheetid,customerid,appointmentype, crew, startdate,starttime,enddate,endtime, nextDisplayOrder,description); \r\n })\r\n);\r\n\r\nconst schedulePurchaseOrderExplicitEpic = (action$, state$) => action$.pipe(\r\n ofType(SCHEDULE_PURCHASE_ORDER_EXPLICIT),\r\n map(({ payload }) => payload),\r\n flatMap(({ crew, date, purchaseOrderId }) => {\r\n const nextDeliveryOrder = getNextPurchaseOrderDeliveryOrder(state$.value.events.events, crew);\r\n return performSchedulePurchaseOrder(purchaseOrderId, crew, date, nextDeliveryOrder);\r\n }),\r\n);\r\n\r\nexport const epic = combineEpics(\r\n loadSavedCalendarEpic,\r\n rescheduleEventEpic,\r\n rescheduleEventExplicitEpic,\r\n saveCalendarEpic,\r\n scheduleJobExplicitEpic,\r\n schedulePurchaseOrderExplicitEpic,\r\n scheduleAppointmentExplicitEpic\r\n);\r\n","export default (a, b) => {\r\n if (!a && !b) {\r\n return true;\r\n }\r\n else if (a && b && a.id === b.id){\r\n return true;\r\n }\r\n else if (!a || !b) {\r\n return false;\r\n }\r\n};\r\n","import { ofType } from 'redux-observable';\r\nimport { map, switchMap } from 'rxjs/operators';\r\nimport JobProApi from '../../dependencies/JobProApi';\r\n\r\n// Action types\r\nconst FETCH_DROPDOWNS = 'FETCH_DROPDOWNS';\r\nconst FETCH_DROPDOWNS_COMPLETE = 'FETCH_DROPDOWNS_COMPLETE';\r\n\r\nconst DEFAULT_STATE = {\r\n bidTypes: [],\r\n jobStatuses: [],\r\n jobTypes: [],\r\n offices: [],\r\n salespeople: [],\r\n suppliers: [],\r\n appointmentTypes:[],\r\n datasheets:[],\r\n custoemrs:[]\r\n};\r\n\r\n// Reducer\r\nexport default function (state = DEFAULT_STATE, { payload, type }) {\r\n switch (type) {\r\n case FETCH_DROPDOWNS:\r\n return DEFAULT_STATE;\r\n case FETCH_DROPDOWNS_COMPLETE:\r\n return {\r\n ...state,\r\n ...payload\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\n// Action creators\r\nexport const fetchDropdowns = () => ({\r\n type: FETCH_DROPDOWNS\r\n});\r\n\r\nconst fetchDropdownsComplete = (dropdowns) => ({\r\n type: FETCH_DROPDOWNS_COMPLETE,\r\n payload: dropdowns\r\n});\r\n\r\n// Epics\r\nexport const fetchDropdownsEpic = (action$) => action$.pipe(\r\n ofType(FETCH_DROPDOWNS),\r\n switchMap(() => {\r\n const bidTypePromise = JobProApi.bidCategories.query({\r\n fields: 'color,displayOrder,value'\r\n });\r\n\r\n const jobStatusPromise = JobProApi.jobStatuses.query({\r\n fields: 'color,displayOrder,includeOnScheduler,status,value'\r\n });\r\n\r\n const jobTypesPromise = JobProApi.jobTypes.query({\r\n fields: 'id,color,displayOrder,name,workCapacities(capacityType,value)'\r\n });\r\n\r\n const officePromise = JobProApi.offices.query({\r\n fields: 'id,color,name'\r\n });\r\n\r\n const purchaseOrderStatusPromise = JobProApi.purchaseOrders.statuses.query({\r\n fields: 'id,displayOrder,name'\r\n });\r\n\r\n const salespeoplePromise = JobProApi.resources.query({\r\n isActive: true,\r\n isSalesperson: true\r\n }, {\r\n fields: 'id,calendarColor,firstName,lastName'\r\n });\r\n\r\n const suppliersPromise = JobProApi.suppliers.query({\r\n fields: 'id,name',\r\n limit: 999999\r\n });\r\n const appointmentTypesPromise = JobProApi.appointmentTypes.query({\r\n fields: 'id,name,displayOrder,color'\r\n })\r\n\r\n const datasheetsPromise = JobProApi.datasheets.query({\r\n fields: 'id,name',\r\n limit: 100\r\n });\r\n\r\n const customersPromise = JobProApi.customers.query({\r\n fields: 'id,name',\r\n limit: 100\r\n });\r\n\r\n return Promise.all([\r\n bidTypePromise,\r\n jobStatusPromise,\r\n jobTypesPromise,\r\n officePromise,\r\n purchaseOrderStatusPromise,\r\n salespeoplePromise,\r\n suppliersPromise,\r\n appointmentTypesPromise,\r\n datasheetsPromise,\r\n customersPromise\r\n ]).then(([bidTypes, jobStatuses, jobTypes, offices, purchaseOrderStatuses, salespeople, suppliers,appointmentTypes,datasheets,customers]) => ({\r\n bidTypes,\r\n jobStatuses: jobStatuses.filter((s) => s.includeOnScheduler),\r\n jobTypes,\r\n offices,\r\n purchaseOrderStatuses,\r\n salespeople: salespeople.map((s)=>{\r\n let labelKey = s.firstName + ' ' + s.lastName;\r\n return {...s,labelKey}; \r\n }\r\n ),\r\n suppliers,\r\n appointmentTypes,\r\n datasheets,\r\n customers\r\n }));\r\n }),\r\n map(fetchDropdownsComplete),\r\n);\r\n","import { ofType } from 'redux-observable';\r\nimport { map, switchMap } from 'rxjs/operators';\r\nimport JobProApi from '../../dependencies/JobProApi';\r\n\r\n// Action types\r\nconst NAMESPACE = 'jobpro.scheduler/organization';\r\nconst FETCH_ORGANIZATION = `${NAMESPACE}/FETCH_ORGANIZATION`;\r\nconst FETCH_ORGANIZATION_COMPLETE = `${NAMESPACE}/FETCH_ORGANIZATION_COMPLETE`;\r\n\r\n// Default state\r\nconst DEFAULT_STATE = {\r\n latitude: -80.871266,\r\n longitude: 35.439251\r\n};\r\n\r\n// Reducer\r\nexport default function (state = DEFAULT_STATE, { payload, type }) {\r\n switch (type) {\r\n case FETCH_ORGANIZATION_COMPLETE:\r\n return {\r\n ...state,\r\n name: payload.name,\r\n latitude: payload.latitude || state.latitude,\r\n longitude: payload.longitude || state.longitude\r\n };\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\n// Action creators\r\nexport const fetchOrganization = () => ({\r\n type: FETCH_ORGANIZATION\r\n});\r\n\r\nconst fetchOrganizationComplete = organization => ({\r\n type: FETCH_ORGANIZATION_COMPLETE,\r\n payload: organization\r\n});\r\n\r\n// Epics\r\nexport const epic = action$ => action$.pipe(\r\n ofType(FETCH_ORGANIZATION),\r\n switchMap(() => JobProApi.currentUser.organization.get({\r\n fields: 'id,latitude,longitude,name'\r\n })),\r\n map(fetchOrganizationComplete),\r\n);\r\n","import { ofType } from 'redux-observable';\r\nimport { map, switchMap } from 'rxjs/operators';\r\nimport JobProApi from '../../dependencies/JobProApi';\r\n\r\n// Action types\r\nconst FETCH_TOKEN_INFO = 'FETCH_TOKEN_INFO';\r\nconst FETCH_TOKEN_INFO_COMPLETE = 'FETCH_TOKEN_INFO_COMPLETE';\r\n\r\nconst DEFAULT_STATE = {\r\n loading: true,\r\n scope: ''\r\n};\r\n\r\n// Reducer\r\nexport default function(state = DEFAULT_STATE, { payload, type }) {\r\n switch (type) {\r\n case FETCH_TOKEN_INFO:\r\n return DEFAULT_STATE;\r\n case FETCH_TOKEN_INFO_COMPLETE:\r\n return payload;\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\n// Action creators\r\nexport const fetchTokenInfo = () => ({\r\n type: FETCH_TOKEN_INFO\r\n});\r\n\r\nexport const fetchTokenInfoComplete = (token) => ({\r\n type: FETCH_TOKEN_INFO_COMPLETE,\r\n payload: token\r\n});\r\n\r\n// Epics\r\nexport const fetchTokenInfoEpic = (action$) => action$.pipe(\r\n ofType(FETCH_TOKEN_INFO),\r\n switchMap(() => JobProApi.tokenInfo()),\r\n map(fetchTokenInfoComplete)\r\n);\r\n","import { ofType } from 'redux-observable';\r\nimport { filter, flatMap, map, switchMap } from 'rxjs/operators';\r\nimport { versaItRoot } from 'config.json';\r\nimport 'whatwg-fetch';\r\n\r\nconst FETCH_WORK_ORDER_TEMPLATES = 'FETCH_WORK_ORDER_TEMPLATES';\r\nconst FETCH_WORK_ORDER_TEMPLATES_COMPLETE = 'FETCH_WORK_ORDER_TEMPLATES_COMPLETE';\r\n\r\n// Default state\r\nconst DEFAULT_STATE = {\r\n workOrderTemplates: []\r\n};\r\n\r\n// Reducer\r\nexport default function (state = DEFAULT_STATE, { payload, type }) {\r\n switch (type) {\r\n case FETCH_WORK_ORDER_TEMPLATES_COMPLETE:\r\n return {\r\n ...state,\r\n workOrderTemplates: payload\r\n };\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\n// Action creators\r\nexport const fetchWorkOrderTemplates = () => ({\r\n type: FETCH_WORK_ORDER_TEMPLATES\r\n});\r\n\r\nconst fetchWorkOrderTemplatesComplete = workOrderTemplates => ({\r\n type: FETCH_WORK_ORDER_TEMPLATES_COMPLETE,\r\n payload: workOrderTemplates\r\n});\r\n\r\n// Epics\r\nconst fetchWorkOrderTemplatesEpic = action$ => action$.pipe(\r\n ofType(FETCH_WORK_ORDER_TEMPLATES),\r\n flatMap(jobId => {\r\n // Fetching the work order templates is a cross-origin request that fails locally\r\n if (process.env.NODE_ENV !== 'production') {\r\n return new Promise(() => null);\r\n }\r\n\r\n return fetch(`${versaItRoot}/JP_MVC/scheduler/work-order-templates`, {\r\n cache: 'no-store',\r\n credentials: 'include'\r\n });\r\n }),\r\n filter(response => response.status >= 200 && response.status < 300),\r\n flatMap(response => response.json()),\r\n map(fetchWorkOrderTemplatesComplete),\r\n);\r\n\r\nexport const epics = fetchWorkOrderTemplatesEpic;\r\n","import { createSelector } from 'reselect';\r\n\r\nfunction sortEvents(a, b) {\r\n if (a.purchaseOrder && b.purchaseOrder) {\r\n return (a.purchaseOrder.deliveryOrder - b.purchaseOrder.deliveryOrder)\r\n || (a.purchaseOrder.id - b.purchaseOrder.id);\r\n } else if (a.purchaseOrder) {\r\n return -1;\r\n } else if (b.purchaseOrder) {\r\n return 1;\r\n } else {\r\n return (a.displayOrder - b.displayOrder)\r\n || (a.id - b.id);\r\n }\r\n}\r\n\r\nconst sortedEvents = createSelector(\r\n state => state.events.events,\r\n events => events.sort(sortEvents)\r\n);\r\n\r\nconst showBids = createSelector(\r\n (state) => state.calendar.showBids,\r\n (state) => state.settings.entity,\r\n (showBids, entity) => showBids || entity === 'bids'\r\n);\r\n\r\nconst showDeliveries = createSelector(\r\n (state) => state.calendar.showDeliveries,\r\n (state) => state.settings.entity,\r\n (showDeliveries, entity) => showDeliveries || entity === 'purchaseOrders'\r\n);\r\n\r\nconst showJobs = createSelector(\r\n (state) => state.calendar.showJobs,\r\n (state) => state.settings.entity,\r\n (showJobs, entity) => showJobs || entity === 'jobs'\r\n);\r\n\r\nexport const visibleEventsSelector = createSelector(\r\n sortedEvents,\r\n showBids,\r\n showDeliveries,\r\n showJobs,\r\n (events, showBids, showDeliveries, showJobs) => events.filter((e) =>\r\n (showJobs && !!e.job)\r\n || (showDeliveries && !!e.purchaseOrder)\r\n || (showBids && !!e.bid)\r\n || !!e.datasheet\r\n || !!e.customer\r\n || e.appttype !=''\r\n || e.description !=''\r\n || e.evttype === 'appointments'\r\n )\r\n);\r\n\r\nexport const assignedEventsSelector = createSelector(\r\n visibleEventsSelector,\r\n (events) => events.filter((e) => !!e.crew)\r\n);\r\n\r\nexport const unassignedEventsSelector = createSelector(\r\n visibleEventsSelector,\r\n (events) => events.filter((e) => !e.crew)\r\n);\r\nexport const assignedEventsWithEquipmentSelector = createSelector(\r\n visibleEventsSelector,\r\n (events) => events.filter((e) => !!e.crew.equipment)\r\n);\r\n\r\nexport const unassignedEventsWithEquipmentSelector = createSelector(\r\n visibleEventsSelector,\r\n (events) => events.filter((e) => !e.crew).equipment\r\n);\r\n","import moment from 'moment';\r\nimport { combineEpics, ofType } from 'redux-observable';\r\nimport { map, switchMap } from 'rxjs/operators';\r\nimport JobProApi from '../../dependencies/JobProApi';\r\nimport { CALENDAR_FETCH, CALENDAR_UPDATE, CALENDAR_UPDATE_APPT } from '../calendar';\r\n\r\nconst CREW_FIELDS = 'id,equipment(id,color,displayOrder,name,workCapacities(capacityType,value)),resources(resource(id,firstName,lastName,offices(id),calendarColor),resourcePercentage)';\r\nconst JOB_FIELDS = 'id,address(city,line1,line2,state,zip),capacities(estimatedDuration,laborAmount,materialQuantity),contacts(isPrimaryContact,name,firstName,lastName,cellPhone,workPhone,email),customer(id,name),estimatedStartDate,items(item(itemType(id,name)),proposedQuantity),geoPoint(latitude,longitude),jobNumber,jobTotal,jobType,location,office(id,name),name,profit(actualProfit,proposedProfit),salesperson(calendarColor,firstName,lastName),status,priorityNotes';\r\nconst CALENDAR_FIELDS = `id,crew(${CREW_FIELDS}),description,displayOrder,endDate,endTime,job(${JOB_FIELDS}),startDate,startTime,customer(id,name),datasheet(id,name),appttype`;\r\nconst PURCHASE_ORDER_FIELDS = `id,crew(${CREW_FIELDS}),dateDelivered,deliveryOrder,items(id,item(id,itemType(id,inventoryQuantityLabel,name),name),job(id,geoPoint(latitude,longitude),jobNumber,name),quantity,summary),loadCapacity,name,office(id,name),poNumber,shipTo,status(name),supplier(name)`;\r\n\r\n\r\nconst CALENDAR_EVENTS_QUERY = `\r\nquery Scheduler($bidCriteria: BidCriteria, $calendarCriteria: CalendarEventCriteria, $jobCriteria: JobCriteria, $poCriteria: PurchaseOrderCriteria){\r\n calendarEvents(filter: $calendarCriteria, limit: 999999) {\r\n id\r\n crewId\r\n crew {\r\n ...crewFields\r\n }\r\n description\r\n displayOrder\r\n endDate\r\n endTime\r\n jobId\r\n job {\r\n ...jobFields\r\n }\r\n startDate\r\n startTime \r\n datasheetId \r\n datasheet{\r\n id\r\n name \r\n customer {\r\n id\r\n name\r\n address {\r\n city\r\n line1\r\n line2\r\n state\r\n zip\r\n }\r\n status\r\n phonenumber\r\n salesperson {\r\n id\r\n calendarColor\r\n firstName\r\n lastName\r\n }\r\n }\r\n status \r\n salesperson {\r\n id\r\n calendarColor\r\n firstName\r\n lastName\r\n } \r\n office {\r\n id\r\n name\r\n }\r\n \r\n }\r\n customer {\r\n id\r\n name\r\n address {\r\n city\r\n line1\r\n line2\r\n state\r\n zip\r\n }\r\n status\r\n phonenumber\r\n salesperson {\r\n id\r\n calendarColor\r\n firstName\r\n lastName\r\n }\r\n }\r\n appttype\r\n }\r\n\r\n bids(filter: $bidCriteria, limit: 999999) {\r\n ...bidFields\r\n }\r\n\r\n jobs(filter: $jobCriteria, limit: 999999) {\r\n ...jobFields\r\n }\r\n\r\n purchaseOrders(filter: $poCriteria, limit: 999999) {\r\n ...purchaseOrderFields\r\n }\r\n \r\n\r\n}\r\n\r\nfragment bidFields on Bid {\r\n address {\r\n city\r\n line1\r\n line2\r\n state\r\n zip\r\n }\r\n contacts {\r\n cellPhone\r\n email\r\n isPrimaryContact\r\n firstName\r\n name\r\n lastName\r\n workPhone\r\n }\r\n customer {\r\n id\r\n name\r\n }\r\n estimatedStartDate\r\n id\r\n name\r\n office {\r\n id\r\n name\r\n }\r\n priorityNotes\r\n salesperson {\r\n id\r\n calendarColor\r\n firstName\r\n lastName\r\n }\r\n status {\r\n name\r\n }\r\n}\r\n\r\nfragment crewFields on Crew {\r\n id\r\n equipment {\r\n color\r\n displayOrder\r\n id\r\n name\r\n workCapacities {\r\n capacityType\r\n value\r\n }\r\n }\r\n resources {\r\n resource {\r\n id\r\n firstName\r\n lastName\r\n offices {\r\n id\r\n }\r\n calendarColor\r\n }\r\n }\r\n}\r\n\r\nfragment jobFields on Job {\r\n address {\r\n city\r\n line1\r\n line2\r\n state\r\n zip\r\n }\r\n capacities {\r\n estimatedDuration\r\n laborAmount\r\n materialQuantity\r\n }\r\n contacts {\r\n cellPhone\r\n email\r\n isPrimaryContact\r\n firstName\r\n name\r\n lastName\r\n workPhone\r\n }\r\n customer {\r\n id\r\n name\r\n }\r\n estimatedStartDate\r\n geoPoint {\r\n latitude\r\n longitude\r\n }\r\n id\r\n items {\r\n item {\r\n itemType {\r\n id\r\n name\r\n }\r\n }\r\n proposedQuantity\r\n }\r\n jobNumber\r\n jobTotal\r\n jobType\r\n location\r\n name\r\n office {\r\n id\r\n name\r\n }\r\n profit {\r\n actualProfit\r\n proposedProfit\r\n }\r\n salesperson {\r\n id\r\n calendarColor\r\n firstName\r\n lastName\r\n }\r\n status\r\n priorityNotes\r\n}\r\n\r\nfragment purchaseOrderFields on PurchaseOrder {\r\n id\r\n crew {\r\n ...crewFields\r\n }\r\n dateDelivered\r\n deliveryOrder\r\n items {\r\n id\r\n item {\r\n id\r\n itemType {\r\n id\r\n inventoryQuantityLabel\r\n name\r\n }\r\n name\r\n packagingAlternates {\r\n item: sourceItem {\r\n id\r\n itemType {\r\n id\r\n inventoryQuantityLabel\r\n name\r\n }\r\n name\r\n }\r\n yield\r\n }\r\n }\r\n job {\r\n id\r\n geoPoint {\r\n latitude\r\n longitude\r\n }\r\n jobNumber\r\n name\r\n }\r\n quantity\r\n summary\r\n }\r\n loadCapacity\r\n name\r\n office {\r\n id\r\n name\r\n }\r\n poNumber\r\n shipTo\r\n status {\r\n name\r\n }\r\n supplier {\r\n name\r\n }\r\n}\r\n`;\r\n\r\n// Action types\r\nconst FETCH_EVENTS_COMPLETE = 'FETCH_EVENTS_COMPLETE';\r\n\r\nconst DEFAULT_STATE = {\r\n events: [],\r\n loading: false\r\n};\r\n\r\n/**\r\n * Returns a function that can be passed to Array.filter.\r\n * Resulting function returns true if the event falls within the specified dates.\r\n * @param {moment} startDate\r\n * @param {moment} endDate\r\n * @return {function}\r\n */\r\nconst filterEventsBetween = (startDate, endDate) => (e) =>\r\n (startDate.isSame(e.endDate) || startDate.isBefore(e.endDate))\r\n && (endDate.isSame(e.startDate) || endDate.isAfter(e.startDate));\r\n\r\n// Reducer\r\nexport default function (state = DEFAULT_STATE, { payload, type }) {\r\n switch (type) {\r\n case CALENDAR_FETCH:\r\n const rangeUnit = payload.mode === 'dispatch' ? 'day' : payload.mode;\r\n const startDate = moment(payload.date).startOf(rangeUnit);\r\n const endDate = moment(payload.date).endOf(rangeUnit);\r\n return {\r\n ...state,\r\n events: state.events.filter(filterEventsBetween(startDate, endDate)),\r\n loading: true\r\n };\r\n case CALENDAR_UPDATE:\r\n return {\r\n ...state,\r\n loading: !!payload.loading,\r\n events: [\r\n ...state.events.filter((e) => e.id !== payload.id\r\n && e.id !== payload.originalId),\r\n payload\r\n ]\r\n };\r\n case CALENDAR_UPDATE_APPT:\r\n \r\n return {\r\n ...state, \r\n loading: true,\r\n events: [\r\n ...state.events,\r\n payload\r\n ]\r\n };\r\n\r\n case FETCH_EVENTS_COMPLETE: \r\n \r\n return {\r\n ...state,\r\n ...payload,\r\n loading: false\r\n };\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\n/**\r\n * Action creator for FETCH_EVENTS_COMPLETE.\r\n *\r\n * @param {any} events\r\n */\r\nconst fetchEventsComplete = (events) => ({\r\n type: FETCH_EVENTS_COMPLETE,\r\n payload: { events }\r\n});\r\n\r\nconst mapBidToEvent = (b) => ({\r\n id: `BID-${b.id}`,\r\n key: Math.random(),\r\n crew: null,\r\n startDate: b.estimatedStartDate,\r\n endDate: b.estimatedStartDate,\r\n bid: b,\r\n tentative: true,\r\n evttype:\"bids\"\r\n});\r\n\r\nconst mapCalendarEventToEvent = (c) => ({\r\n \r\n ...c,\r\n key: Math.random(),\r\n evttype: c.job != null?\"jobs\":\"appointments\"\r\n});\r\n\r\n/**\r\n * Maps a purchase order to a calendar event like object.\r\n * @param {any} p\r\n */\r\nconst mapPurchaseOrderToEvent = (p) => ({\r\n id: `PO-${p.id}`,\r\n key: Math.random(),\r\n crew: p.crew,\r\n startDate: p.dateDelivered,\r\n endDate: p.dateDelivered,\r\n purchaseOrder: p,\r\n evttype:\"purchaseOrders\"\r\n});\r\n\r\nconst mapTentativeJobToEvent = (j) => ({\r\n id: `JOB-${j.id}`,\r\n key: Math.random(),\r\n crew: null,\r\n startDate: j.estimatedStartDate,\r\n endDate: j.estimatedStartDate,\r\n job: j,\r\n tentative: true,\r\n evttype:\"jobs\"\r\n});\r\n\r\n/**\r\n * Subscribes to actions of type CALENDAR_FETCH.\r\n * Fetches calendar events dispatches the result.\r\n * @param {*} action$\r\n * @param {*} state$\r\n */\r\nconst fetchEventsEpic = (action$, state$) => action$.pipe(\r\n ofType(CALENDAR_FETCH),\r\n map(({ payload }) => payload),\r\n switchMap(({ date, mode }) => {\r\n const { settings } = state$;\r\n\r\n const rangeUnit = mode === 'dispatch' ? 'day' : mode;\r\n const startDate = moment(date).startOf(rangeUnit);\r\n const endDate = moment(date).endOf(rangeUnit);\r\n\r\n // Build API filter criteria\r\n const criteria = {\r\n startDate: startDate.format('YYYY-MM-DD'),\r\n endDate: endDate.format('YYYY-MM-DD')\r\n };\r\n if (settings.bidTypes && settings.bidTypes.length) {\r\n criteria['job.bid.category'] = settings.bidTypes.map((c) => c.value);\r\n }\r\n if (settings.jobStatuses && settings.jobStatuses.length) {\r\n criteria.jobStatus = settings.jobStatuses.map((s) => s.value);\r\n }\r\n if (settings.jobTypes && settings.jobTypes.length) {\r\n criteria.jobType = settings.jobTypes.map((t) => t.name);\r\n }\r\n if (settings.offices && settings.offices.length) {\r\n criteria.office = settings.offices.map((o) => o.name);\r\n }\r\n if (settings.salespeople && settings.salespeople.length) {\r\n criteria['job.salesperson.id'] = settings.salespeople.map(s => s.id);\r\n }\r\n\r\n const calendarPromise = JobProApi.calendar.query(criteria, {\r\n fields: CALENDAR_FIELDS,\r\n limit: 999999\r\n });\r\n\r\n const purchaseOrderCriteria = {\r\n 'dateDelivered>': startDate.format('YYYY-MM-DD'),\r\n 'dateDelivered<': endDate.format('YYYY-MM-DD')\r\n };\r\n if (settings.offices && settings.offices.length) {\r\n purchaseOrderCriteria['office.id'] = settings.offices.map((o) => o.id);\r\n }\r\n const purchaseOrderPromise = JobProApi.purchaseOrders.search(purchaseOrderCriteria, {\r\n fields: PURCHASE_ORDER_FIELDS,\r\n limit: 999999\r\n });\r\n\r\n const tentativeJobsCriteria = {\r\n 'estimatedStartDate>': startDate.format('YYYY-MM-DD'),\r\n 'estimatedStartDate<': endDate.format('YYYY-MM-DD'),\r\n scheduled: false\r\n };\r\n if (settings.bidTypes && settings.bidTypes.length) {\r\n tentativeJobsCriteria['bid.category'] = settings.bidTypes.map((c) => c.value);\r\n }\r\n if (settings.jobStatuses && settings.jobStatuses.length) {\r\n tentativeJobsCriteria.status = settings.jobStatuses.map((s) => s.value);\r\n }\r\n if (settings.jobTypes && settings.jobTypes.length) {\r\n tentativeJobsCriteria.type = settings.jobTypes.map((t) => t.name);\r\n }\r\n if (settings.offices && settings.offices.length) {\r\n tentativeJobsCriteria.office = settings.offices.map((o) => o.name);\r\n }\r\n if (settings.salespeople && settings.salespeople.length) {\r\n tentativeJobsCriteria['salesperson.id'] = settings.salespeople.map(s => s.id);\r\n }\r\n const tentativeJobsPromise = JobProApi.jobs.search(tentativeJobsCriteria, {\r\n fields: JOB_FIELDS,\r\n limit: 999999\r\n });\r\n\r\n return Promise.all([\r\n calendarPromise,\r\n purchaseOrderPromise,\r\n tentativeJobsPromise\r\n ]).then(([calendar, purchaseOrders, tentativeJobsPromise]) => [\r\n ...calendar.map(mapCalendarEventToEvent),\r\n ...purchaseOrders.map(mapPurchaseOrderToEvent),\r\n ...tentativeJobsPromise.map(mapTentativeJobToEvent)\r\n ]);\r\n }),\r\n map(fetchEventsComplete),\r\n);\r\n\r\n/**\r\n * Subscribes to actions of type CALENDAR_FETCH.\r\n * Fetches calendar events dispatches the result.\r\n * @param {*} action$\r\n * @param {*} state$\r\n */\r\nconst fetchEventsEpicGraphQL = (action$, state$) => action$.pipe(\r\n ofType(CALENDAR_FETCH),\r\n map(({ payload }) => payload),\r\n switchMap(({ date, mode }) => {\r\n const { settings } = state$.value;\r\n\r\n const rangeUnit = mode === 'dispatch' ? 'day' : mode;\r\n const startDate = moment(date).startOf(rangeUnit);\r\n const endDate = moment(date).endOf(rangeUnit); \r\n // Build API filter criteria\r\n const criteria = {\r\n endDate_gte: startDate.format('YYYY-MM-DD'),\r\n startDate_lte: endDate.format('YYYY-MM-DD'),\r\n job: {},\r\n datasheet: {}, \r\n customer:{}, \r\n };\r\n if (settings.bidTypes && settings.bidTypes.length) {\r\n criteria.job.bid = {\r\n bidType_in: settings.bidTypes.map(c => c.value)\r\n };\r\n }\r\n if (settings.jobStatuses && settings.jobStatuses.length) {\r\n criteria.job.status_in = settings.jobStatuses.map(s => s.value);\r\n }\r\n if (settings.jobTypes && settings.jobTypes.length) {\r\n criteria.job.jobType_in = settings.jobTypes.map(t => t.name);\r\n }\r\n if (settings.offices && settings.offices.length) {\r\n if(settings.entity !== 'appointments')\r\n {\r\n criteria.job.office = {\r\n id_in: settings.offices.map(o => o.id)\r\n }\r\n }\r\n else if(settings.entity === 'appointments')\r\n {\r\n criteria.datasheet.office = {\r\n id_in: settings.offices.map(o => o.id)\r\n }\r\n }\r\n \r\n }\r\n if (settings.salespeople && settings.salespeople.length) {\r\n if(settings.entity !='appointments')\r\n {\r\n criteria.job.salesperson = {\r\n id_in: settings.salespeople.map(s => s.id)\r\n };\r\n }\r\n else if(settings.entity ==='appointments')\r\n {\r\n criteria.datasheet.salesperson = {\r\n id_in: settings.salespeople.map(s => s.id)\r\n };\r\n }\r\n \r\n }\r\n\r\n const purchaseOrderCriteria = {\r\n dateDelivered_gte: startDate.format('YYYY-MM-DD'),\r\n dateDelivered_lte: endDate.format('YYYY-MM-DD')\r\n };\r\n if (settings.offices && settings.offices.length) {\r\n purchaseOrderCriteria.office = {\r\n id_in: settings.offices.map(o => o.id)\r\n };\r\n }\r\n\r\n const tentativeJobsCriteria = {\r\n calendarEvents_none: {},\r\n estimatedStartDate_gte: startDate.format('YYYY-MM-DD'),\r\n estimatedStartDate_lte: endDate.format('YYYY-MM-DD')\r\n };\r\n if (settings.bidTypes && settings.bidTypes.length) {\r\n tentativeJobsCriteria.bid = {\r\n bidType_in: settings.bidTypes.map(c => c.value)\r\n };\r\n }\r\n if (settings.jobStatuses && settings.jobStatuses.length) {\r\n tentativeJobsCriteria.status_in = settings.jobStatuses.map(s => s.value);\r\n }\r\n if (settings.jobTypes && settings.jobTypes.length) {\r\n tentativeJobsCriteria.jobType_in = settings.jobTypes.map(t => t.name);\r\n }\r\n if (settings.offices && settings.offices.length) {\r\n tentativeJobsCriteria.office = {\r\n id_in: settings.offices.map(o => o.id)\r\n };\r\n }\r\n if (settings.salespeople && settings.salespeople.length) {\r\n tentativeJobsCriteria.salesperson = {\r\n id_in: settings.salespeople.map(s => s.id)\r\n };\r\n }\r\n\r\n const bidCriteria = {\r\n jobs_none: {},\r\n estimatedStartDate_gte: startDate.format('YYYY-MM-DD'),\r\n estimatedStartDate_lte: endDate.format('YYYY-MM-DD'),\r\n };\r\n if (settings.bidTypes && settings.bidTypes.length) {\r\n bidCriteria.bidType_in = settings.bidTypes.map(c => c.value);\r\n }\r\n if (settings.offices && settings.offices.length) {\r\n bidCriteria.office = {\r\n id_in: settings.offices.map(o => o.id)\r\n };\r\n }\r\n if (settings.salespeople && settings.salespeople.length) {\r\n bidCriteria.salesperson = {\r\n id_in: settings.salespeople.map(s => s.id)\r\n };\r\n }\r\n\r\n const graphQLPromise = JobProApi.post('/graphql', null, {\r\n query: CALENDAR_EVENTS_QUERY,\r\n variables: {\r\n bidCriteria,\r\n calendarCriteria: criteria,\r\n jobCriteria: tentativeJobsCriteria,\r\n poCriteria: purchaseOrderCriteria\r\n }\r\n });\r\n \r\n const bidPromise = graphQLPromise\r\n .then(response => response.data.bids);\r\n\r\n const calendarPromise = graphQLPromise\r\n .then(response => response.data.calendarEvents\r\n .filter(e => (e.jobId != null && e.job == null) ? false : true)\r\n .filter(e => (e.crewId != null && e.crew == null) ? false : true)\r\n .filter(e => (e.datasheetId != null && e.datasheet == null) ? false : true));\r\n\r\n const purchaseOrderPromise = graphQLPromise\r\n .then(response => response.data.purchaseOrders);\r\n\r\n const tentativeJobsPromise = graphQLPromise\r\n .then(response => response.data.jobs);\r\n\r\n return Promise.all([\r\n bidPromise,\r\n calendarPromise,\r\n purchaseOrderPromise,\r\n tentativeJobsPromise\r\n ]).then(([bids, calendar, purchaseOrders, tentativeJobsPromise]) => [\r\n ...bids.map(mapBidToEvent),\r\n ...calendar.map(mapCalendarEventToEvent),\r\n ...purchaseOrders.map(mapPurchaseOrderToEvent),\r\n ...tentativeJobsPromise.map(mapTentativeJobToEvent)\r\n ]);\r\n }),\r\n map(fetchEventsComplete),\r\n);\r\n\r\nexport const epic = combineEpics(\r\n location.search.match(/graphql=false/) ? fetchEventsEpic : fetchEventsEpicGraphQL\r\n);\r\n\r\n// Selectors\r\nexport * from './selectors';\r\n","import { createSelector } from 'reselect';\r\n\r\nimport { assignedEventsSelector, visibleEventsSelector } from '../redux/events';\r\nimport { standardCrewsSelector } from '../redux/standardCrews';\r\nimport { matchCrews } from '../utils';\r\n\r\nconst unassignedCrewArray = (includeUnassigned, active) => includeUnassigned\r\n ? [{ active, crew: null, events: [] }]\r\n : [];\r\n\r\nfunction sortCrews(a, b) {\r\n if (a === b) {\r\n return 0;\r\n } else if (!a) {\r\n return -1;\r\n } else if (!b) {\r\n return 1;\r\n } else {\r\n return sortCrewsByStandardCrew(a, b) || sortCrewsByEquipment(a, b);\r\n }\r\n}\r\n\r\nfunction sortCrewsByEquipment(a, b) {\r\n if (!a.equipment && !b.equipment) {\r\n return 0;\r\n } else if (!a.equipment) {\r\n return -1;\r\n } else if (!b.equipment) {\r\n return 1;\r\n } else {\r\n return sortEquipment(a.equipment, b.equipment);\r\n }\r\n}\r\n\r\nfunction sortCrewsByStandardCrew(a, b) {\r\n if (a.isStandardCrew === b.isStandardCrew) {\r\n return 0;\r\n } else if (a.isStandardCrew) {\r\n return -1;\r\n } else {\r\n // b.isStandardCrew = true\r\n return 1;\r\n }\r\n}\r\n\r\nfunction sortEquipment(a, b) {\r\n return sortEquipmentByDisplayOrder(a, b) || sortEquipmentByName(a, b);\r\n}\r\n\r\nfunction sortEquipmentByDisplayOrder(a, b) {\r\n if (!a.displayOrder && !b.displayOrder) {\r\n return 0;\r\n } else if (typeof(a.displayOrder) !== 'number') {\r\n return -1;\r\n } else if (typeof(b.displayOrder) !== 'number') {\r\n return 1;\r\n } else {\r\n return a.displayOrder - b.displayOrder;\r\n }\r\n}\r\n\r\nfunction sortEquipmentByName(a, b) {\r\n return a.name < b.name\r\n ? -1\r\n : a.name > b.name\r\n ? 1\r\n : 0;\r\n}\r\n\r\n/**\r\n * Determines the largest subset of offices common to all resources on a specified crew.\r\n *\r\n * @param {any} crew\r\n * @returns Array of common offices\r\n */\r\nfunction maximalOfficeSet(crew) {\r\n return crew.resources\r\n .filter(r => !!r.resource)\r\n .map(r => r.resource.offices)\r\n .reduce((prev, curr) => {\r\n if (!prev) {\r\n return curr;\r\n } else {\r\n return prev.filter(o => curr.some(o2 => o2.id === o.id));\r\n }\r\n }, null) || [];\r\n}\r\n\r\nexport default (includeUnassigned) => {\r\n const distinctStandardCrews = createSelector(\r\n standardCrewsSelector,\r\n (state) => state.settings.offices,\r\n (crews, offices) => {\r\n // Filter standard crews based on selected office filter\r\n const filteredCrews = offices!=null ? offices.length > 0\r\n ? crews.filter((c) => !c.office || offices.some((o) => o.id === c.office.id))\r\n : crews:crews;\r\n\r\n // Eliminate any duplicate standard crews based on equipment and resources\r\n // Map to include offices common to all resources to determine eligible events to be scheduled\r\n return filteredCrews\r\n .reduce((distinct, crew) => {\r\n if (distinct.some(c => matchCrews(c, crew))) {\r\n return distinct;\r\n } else {\r\n return [...distinct, crew];\r\n }\r\n }, [])\r\n .map(c => ({ ...c, isStandardCrew: true, offices: maximalOfficeSet(c) }));\r\n }\r\n );\r\n\r\n const visibleEvents = createSelector(\r\n includeUnassigned ? visibleEventsSelector : assignedEventsSelector,\r\n events => events.map(e => ({\r\n ...e,\r\n crew: e.crew ? {\r\n ...e.crew,\r\n offices: maximalOfficeSet(e.crew)\r\n } : null\r\n }))\r\n );\r\n\r\n return createSelector(\r\n visibleEvents,\r\n distinctStandardCrews,\r\n (state) => state.calendar.activeCrew,\r\n (events, standardCrews, activeCrew) => events\r\n .reduce((crews, event) => {\r\n let crew = crews.find((c) => matchCrews(c.crew, event.crew));\r\n if (!crew) {\r\n crew = {\r\n active: !!activeCrew && activeCrew.id === event.crew.id,\r\n crew: event.crew,\r\n events: []\r\n };\r\n crews.push(crew);\r\n }\r\n crew.events.push(event);\r\n return crews;\r\n }, [\r\n ...unassignedCrewArray(includeUnassigned, !activeCrew),\r\n ...standardCrews.map((c) => ({ active: !!activeCrew && activeCrew.id === c.id, crew: c, events: [] }))\r\n ])\r\n .sort((a, b) => sortCrews(a.crew, b.crew))\r\n );\r\n};\r\n","import React from 'react';\r\nimport classNames from 'classnames';\r\nimport { ProgressBar } from 'react-bootstrap';\r\nimport { applyContainerQuery } from 'react-container-query';\r\nimport styles from './CrewCapacities.css';\r\n\r\nfunction getProgressBarStyle(percent) {\r\n if (percent > 1) {\r\n return 'danger';\r\n } else if (percent >= 0.80) {\r\n return 'warning';\r\n } else {\r\n return 'success';\r\n }\r\n}\r\n\r\nconst mediaQuery = {\r\n [styles.spread]: {\r\n minWidth: 500\r\n },\r\n [styles.stacked]: {\r\n maxWidth: 499\r\n }\r\n};\r\n\r\nconst CrewCapacities = ({ containerQuery, crew, events }) => {\r\n const equipment = (crew && crew.equipment) || {\r\n workCapacities: []\r\n };\r\n\r\n const estimatedDuration = events\r\n .filter((e) => e.job && !e.tentative)\r\n .map((e) => e.job.capacities.estimatedDuration || 0)\r\n .reduce((estimatedDuration, v) => estimatedDuration + v, 0);\r\n const laborAmount = events\r\n .filter((e) => e.job && !e.tentative)\r\n .map((e) => e.job.capacities.laborAmount || 0)\r\n .reduce((laborAmount, v) => laborAmount + v, 0);\r\n const materialLoad = events\r\n .filter(e => !e.tentative)\r\n .map(e => {\r\n if (e.job) {\r\n return e.job.capacities.materialQuantity || 0;\r\n } else if (e.purchaseOrder) {\r\n return e.purchaseOrder.loadCapacity || 0;\r\n } else {\r\n return 0;\r\n }\r\n })\r\n .reduce((materialLoad, v) => materialLoad + v, 0);\r\n\r\n const durationCapacity = equipment.workCapacities\r\n .filter((c) => c.capacityType === 'estimatedDuration')\r\n .map((c) => c.value)[0];\r\n const laborCapacity = equipment.workCapacities\r\n .filter((c) => c.capacityType === 'laborAmount')\r\n .map((c) => c.value)[0];\r\n const materialCapacity = equipment.workCapacities\r\n .filter((c) => c.capacityType === 'materialQuantity')\r\n .map((c) => c.value)[0];\r\n\r\n const estimatedDurationPercent = durationCapacity\r\n ? Math.round((estimatedDuration / durationCapacity) * 100) / 100\r\n : null;\r\n const laborPercent = laborCapacity\r\n ? Math.round((laborAmount / laborCapacity) * 100) / 100\r\n : null;\r\n const materialPercent = materialCapacity\r\n ? Math.round((materialLoad / materialCapacity) * 100) / 100\r\n : null;\r\n\r\n return (\r\n
\r\n {!!laborCapacity && (\r\n
\r\n

Labor $

\r\n \r\n
\r\n )}\r\n {!!materialCapacity && (\r\n
\r\n

Material Load

\r\n \r\n
\r\n )}\r\n {!!durationCapacity && (\r\n
\r\n

Estimated Duration

\r\n \r\n
\r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default applyContainerQuery(CrewCapacities, mediaQuery);\r\n","import React from 'react';\r\nimport FontAwesome from 'react-fontawesome';\r\n\r\nimport { formatCrewName } from '../../utils';\r\n\r\nconst CrewName = ({ crew }) => (\r\n \r\n \r\n {` ${formatCrewName(crew)}`}\r\n \r\n);\r\n\r\nexport default CrewName;\r\n","import React from 'react';\r\n\r\nexport default React.createContext(null);\r\n","import React from 'react';\r\nimport FieldSettings from './Event/FieldSettings';\r\n\r\nfunction addressIsEmpty(address) {\r\n return !address.line1\r\n && !address.line2\r\n && !address.city\r\n && !address.state\r\n && !address.zip;\r\n}\r\n\r\nconst Address = ({ address, multiline, ...props }) => {\r\n if (!address || addressIsEmpty(address)) {\r\n return null;\r\n } else {\r\n const separator = multiline ?
: ' ';\r\n return (\r\n \r\n {fields => {\r\n if (fields) {\r\n const addressFields = fields.location.fields;\r\n const line1 = addressFields.line1.visible ? address.line1 : '';\r\n const line2 = addressFields.line2.visible ? address.line2 : '';\r\n const city = addressFields.city.visible ? address.city : '';\r\n const state = addressFields.state.visible ? address.state : '';\r\n const zip = addressFields.zip.visible ? address.zip : '';\r\n return (\r\n
\r\n {line1}\r\n {!!line1 && separator}\r\n {line2}\r\n {!!line2 && separator}\r\n {`${city || ''}${city && state ? ',' : ''} ${state || ''} ${zip || ''}`}\r\n
\r\n );\r\n } else {\r\n return (\r\n
\r\n {address.line1}\r\n {!!address.line1 && separator}\r\n {address.line2}\r\n {!!address.line2 && separator}\r\n {`${address.city || ''}${address.city && address.state ? ',' : ''} ${address.state || ''} ${address.zip || ''}`}\r\n
\r\n );\r\n }\r\n }}\r\n
\r\n );\r\n }\r\n};\r\n\r\nexport default Address;\r\n","import React from 'react';\r\nimport { Button, ButtonToolbar } from 'react-bootstrap';\r\nimport FontAwesome from 'react-fontawesome';\r\n\r\nconst ActionButtons = ({\r\n buttonComponent: ButtonComponent,\r\n containerComponent: ContainerComponent,\r\n containerId,\r\n onOpenClick,\r\n showLabels,\r\n ...props\r\n}) => (\r\n \r\n {typeof onOpenClick === 'function' && (\r\n \r\n \r\n {showLabels && \" Open\"}\r\n \r\n )}\r\n \r\n);\r\n\r\nActionButtons.defaultProps = {\r\n buttonComponent: Button,\r\n containerComponent: ButtonToolbar,\r\n showLabels: false\r\n};\r\n\r\nexport default ActionButtons;\r\n","import React from 'react';\r\nimport FieldSettings from './FieldSettings';\r\n\r\nexport default ({ children, field, group }) => (\r\n \r\n {fields => {\r\n if (!fields[group] || !fields[group].fields || !fields[group].fields[field]) {\r\n return

Invalid field group or key

;\r\n } else if (fields[group].fields[field].visible) {\r\n return children;\r\n }\r\n }}\r\n
\r\n);\r\n","import React from 'react';\r\n\r\nconst Contact = ({ contact }) => (\r\n \r\n {contact.firstName} {contact.lastName}
\r\n {contact.cellPhone ? Cell: {contact.cellPhone}
: null}\r\n {contact.workPhone ? Work: {contact.workPhone}
: null}\r\n {contact.email ? Email: {contact.email} : null}\r\n
\r\n);\r\n\r\nexport default Contact;\r\n","import React from 'react';\r\nimport DisplayField from '../DisplayField';\r\nimport Contact from './Contact';\r\n\r\nconst Details = ({ event }) => (\r\n
\r\n \r\n

Bid Status: {event.bid.status ? event.bid.status.name : \"N/A\"}

\r\n
\r\n \r\n

Customer: {event.bid.customer ? event.bid.customer.name : 'N/A'}

\r\n
\r\n {event.bid.contacts.length > 0 && (\r\n \r\n

\r\n
\r\n )}\r\n {event.bid.salesperson && (\r\n \r\n

Salesperson:{event.bid.salesperson.firstName} {event.bid.salesperson.lastName}

\r\n
\r\n )}\r\n {event.bid.priorityNotes && (\r\n \r\n

Priority Notes: {event.bid.priorityNotes}

\r\n
\r\n )}\r\n
\r\n);\r\n\r\nexport default Details;\r\n","import React from 'react';\r\nimport classNames from 'classnames';\r\n\r\nimport Address from '../../Address';\r\nimport styles from './BidEvent.css';\r\nimport ActionButtons from './ActionButtons';\r\nimport Details from './Details';\r\n\r\nconst makeStyle = ({ color }) => !color ? null : {\r\n borderColor: color\r\n};\r\n\r\nconst BidEvent = ({\r\n className,\r\n detailEnabled,\r\n entity,\r\n event,\r\n locationEnabled,\r\n onClick,\r\n onOpenClick,\r\n showActions,\r\n styleSelector\r\n}) => (\r\n \r\n
\r\n
\r\n {event.bid.name}\r\n
\r\n {detailEnabled &&
}\r\n {locationEnabled &&
}\r\n
\r\n {showActions && }\r\n \r\n);\r\n\r\nBidEvent.defaultProps = {\r\n showActions: true\r\n};\r\n\r\nexport default BidEvent;\r\n","import { connect } from 'react-redux';\r\nimport { createSelector } from 'reselect';\r\n\r\nimport { openEvent, rescheduleEvent } from '../../../../redux/calendar';\r\nimport { toggleDeleteModal, toggleEditModal } from '../../../../redux/modals';\r\nimport { open as togglePrintWorkOrderModal } from '../../../../redux/modals/printWorkOrderModal';\r\nimport BidEvent from './BidEvent';\r\n\r\nconst colorMode = (state) => state.settings.color;\r\n\r\nconst colors = createSelector(\r\n colorMode,\r\n (state) => state.dropdowns,\r\n (colorMode, { jobStatuses, jobTypes, offices }) => {\r\n switch (colorMode) {\r\n case 'jobStatus':\r\n return jobStatuses;\r\n case 'office':\r\n return offices;\r\n default:\r\n return jobTypes;\r\n }\r\n }\r\n);\r\n\r\nconst getEvent = (state, { eventId }) => state.events.events.find((e) => e.id === eventId);\r\n\r\nconst makeGetEvent = () => createSelector(\r\n getEvent,\r\n colorMode,\r\n colors,\r\n (event, colorMode, colors) => {\r\n if (!event.bid) {\r\n return event;\r\n }\r\n\r\n let color = null;\r\n switch (colorMode) {\r\n case 'office':\r\n const office = colors.find((office) => event.bid.office && office.id === event.bid.office.id);\r\n color = office ? office.color : null;\r\n break;\r\n case 'salesperson':\r\n const salesperson = event.bid.salesperson;\r\n color = salesperson ? salesperson.calendarColor : null;\r\n break;\r\n default:\r\n return event;\r\n }\r\n return { ...event, color };\r\n }\r\n);\r\n\r\nconst makeMapStateToProps = () => {\r\n const getEvent = makeGetEvent();\r\n return (state, props) => ({\r\n detailEnabled: state.settings.detailEnabled,\r\n entity: state.settings.entity,\r\n event: getEvent(state, props),\r\n financialEnabled: state.settings.financialEnabled,\r\n hasCalendarEventDelete: state.tokenInfo.scope.indexOf('calendarEvents:delete') > -1,\r\n hasCalendarEventUpdate: state.tokenInfo.scope.indexOf('calendarEvents:update') > -1,\r\n locationEnabled: state.settings.locationEnabled,\r\n materialEnabled: state.settings.materialEnabled\r\n });\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch, { eventId }) => ({\r\n onClick: () => dispatch(rescheduleEvent(eventId)),\r\n onOpenClick: () => dispatch(openEvent(eventId)),\r\n});\r\n\r\nconst mergeProps = ({ event, hasCalendarEventDelete, hasCalendarEventUpdate, ...stateProps }, { onClick, onDeleteEventClick, onEditEventClick, onPrintWorkOrder, ...dispatchProps }, ownProps) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps,\r\n event,\r\n onClick: hasCalendarEventUpdate ? onClick : null,\r\n onDeleteEventClick: hasCalendarEventDelete ? onDeleteEventClick : null,\r\n onEditEventClick: hasCalendarEventUpdate ? onEditEventClick : null,\r\n});\r\n\r\nexport default connect(makeMapStateToProps, mapDispatchToProps, mergeProps)(BidEvent);\r\n","import React from 'react';\r\n\r\nconst MultilineText = ({ text, ...props }) => (\r\n

\r\n {text && text.split('\\n').map((l, i) => {l}
)}\r\n

\r\n);\r\n\r\nexport default MultilineText;","import React from 'react';\r\nimport { Button, ButtonToolbar } from 'react-bootstrap';\r\nimport { ContextMenu } from 'react-contextmenu';\r\nimport FontAwesome from 'react-fontawesome';\r\n\r\nconst ActionButtons = ({\r\n buttonComponent: ButtonComponent,\r\n containerComponent: ContainerComponent,\r\n containerId,\r\n onDeleteEventClick,\r\n onEditEventClick,\r\n onOpenClick,\r\n onPrintWorkOrder,\r\n showLabels,\r\n onContextMenuClick,\r\n showMenuItem,\r\n ...props\r\n}) => (\r\n containerId === 'JOB_MENU' ?\r\n \r\n {typeof onOpenClick === 'function' && (\r\n \r\n \r\n {showLabels && \" Open\"}\r\n \r\n )}\r\n {typeof onPrintWorkOrder === 'function' && showMenuItem && (\r\n \r\n \r\n {showLabels && \" Print Work Order\"}\r\n \r\n )}\r\n {typeof onEditEventClick === 'function' && showMenuItem &&(\r\n \r\n \r\n {showLabels && \" Edit\"}\r\n \r\n )}\r\n {typeof onDeleteEventClick === 'function' && showMenuItem &&(\r\n \r\n \r\n {showLabels && \" Delete\"}\r\n \r\n )}\r\n :\r\n \r\n {typeof onOpenClick === 'function' && (\r\n \r\n \r\n {showLabels && \" Open\"}\r\n \r\n )}\r\n {typeof onPrintWorkOrder === 'function' && showMenuItem && (\r\n \r\n \r\n {showLabels && \" Print Work Order\"}\r\n \r\n )}\r\n {typeof onEditEventClick === 'function' && showMenuItem &&(\r\n \r\n \r\n {showLabels && \" Edit\"}\r\n \r\n )}\r\n {typeof onDeleteEventClick === 'function' && showMenuItem && (\r\n \r\n \r\n {showLabels && \" Delete\"}\r\n \r\n )}\r\n \r\n)\r\n\r\n\r\n\r\n;\r\n\r\nActionButtons.defaultProps = {\r\n buttonComponent: Button,\r\n containerComponent: ButtonToolbar,\r\n showLabels: false,\r\n showMenuItem:true\r\n \r\n};\r\n\r\nexport default ActionButtons;\r\n","import React from 'react';\r\n\r\nconst Contact = ({ contact }) => (\r\n \r\n {contact.firstName} {contact.lastName}
\r\n {contact.cellPhone ? Cell: {contact.cellPhone}
: null}\r\n {contact.workPhone ? Work: {contact.workPhone}
: null}\r\n {contact.email ? Email: {contact.email} : null}\r\n
\r\n);\r\n\r\nexport default Contact;\r\n","import React from 'react';\r\nimport DisplayField from '../DisplayField';\r\nimport Contact from './Contact';\r\n\r\nconst Details = ({ event }) => (\r\n
\r\n \r\n

Job Status: {event.job.status}

\r\n
\r\n \r\n

Customer: {event.job.customer ? event.job.customer.name : 'N/A'}

\r\n
\r\n {event.job.contacts.length > 0 && (\r\n \r\n

\r\n
\r\n )}\r\n {event.job.salesperson && (\r\n \r\n

Salesperson:{event.job.salesperson.firstName} {event.job.salesperson.lastName}

\r\n
\r\n )}\r\n {event.job.priorityNotes && (\r\n \r\n

Priority Notes: {event.job.priorityNotes}

\r\n
\r\n )}\r\n
\r\n);\r\n\r\nexport default Details;\r\n","import React from 'react';\r\n\r\nfunction formatCurrency(value) {\r\n if (typeof (value) !== 'number') {\r\n return '';\r\n }\r\n\r\n if (typeof Intl === 'object' && Intl && typeof Intl.NumberFormat === 'function') {\r\n // For right now we only support en-US\r\n const formatter = new Intl.NumberFormat('en-US', {\r\n style: 'currency',\r\n currency: 'USD',\r\n minimumFractionDigits: 2\r\n });\r\n return formatter.format(value);\r\n }\r\n\r\n return `$${value.toFixed(2)}`\r\n}\r\n\r\nexport default ({ value, ...props }) => (\r\n {formatCurrency(value)}\r\n);\r\n","import React from 'react';\r\nimport Currency from '../../../shared/Currency';\r\nimport DisplayField from '../DisplayField';\r\n\r\nconst Financials = ({ event }) => (\r\n
\r\n {!!event.job.jobTotal && (\r\n \r\n

Revenue:

\r\n
\r\n )}\r\n {event.job.profit && !!event.job.profit.proposedProfit && (\r\n \r\n

Prop Pft:

\r\n
\r\n )}\r\n {event.job.profit && !!event.job.profit.actualProfit && (\r\n \r\n

Actual Pft:

\r\n
\r\n )}\r\n {event.job.capacities && !!event.job.capacities.laborAmount && (\r\n \r\n

Est Labor:

\r\n
\r\n )}\r\n
\r\n);\r\n\r\nexport default Financials;\r\n","import React from 'react';\r\n\r\nconst aggregateMaterial = (job) => {\r\n const totals = job.items\r\n .filter((jobItem) => jobItem.proposedQuantity && jobItem.item && jobItem.item.itemType)\r\n .reduce((totals, jobItem) => {\r\n let group = totals[jobItem.item.itemType.id] || {\r\n name: jobItem.item.itemType.name,\r\n quantity: 0\r\n };\r\n group.quantity += jobItem.proposedQuantity;\r\n totals[jobItem.item.itemType.id] = group;\r\n return totals;\r\n }, {});\r\n return Object.keys(totals).map((k) => totals[k]);\r\n};\r\n\r\nconst Materials = ({ event }) => (\r\n
\r\n {aggregateMaterial(event.job).map(({ name, quantity }, i) => (\r\n

{name}: {Math.round(quantity * 1000) / 1000}

\r\n ))}\r\n
\r\n);\r\n\r\nexport default Materials;\r\n","import moment from 'moment';\r\nimport React from 'react';\r\nimport FontAwesome from 'react-fontawesome';\r\n\r\n// TODO: Use internationalization here to format time instead of moment\r\nconst Time = ({ event }) => (\r\n

\r\n {event.startTime ? {moment(event.startTime, 'hh:mm:ss').format('h:mma')} : null}\r\n {event.startTime && event.endTime ? ' - ' : null}\r\n {event.endTime ? {moment(event.endTime, 'hh:mm:ss').format('h:mma')} : null}\r\n

\r\n);\r\n\r\nexport default Time;\r\n","import React from 'react';\r\nimport { useDrag } from 'react-dnd';\r\nimport styles from './AvailableEmployees.css';\r\n\r\nexport const DraggableType = 'employee';\r\n\r\nconst makeStyle = ({ color }) => !color ? null : {\r\n border: '1px solid #ccc', \r\n padding: '2px 8px', \r\n borderRadius: '5px', \r\n fontWeight:'bold',\r\n};\r\nconst employeeList = ({color}) => !color ? {\r\n border: '1px solid #ccc', \r\n padding: '2px 8px', \r\n borderRadius: '5px', \r\n fontWeight:'bold',\r\n\r\n} :{\r\n border: '1px solid #ccc', \r\n padding: '2px 8px', \r\n borderRadius: '5px', \r\n fontWeight:'bold',\r\n backgroundColor: color,\r\n};\r\n\r\nconst employeeCheck = ({employeeCheck}) => !employeeCheck ? null : {\r\n display: 'block',\r\n}\r\n\r\nconst Employee = ({ employee, color, updateSelectedEmployeeList,employeeCheck }) => {\r\n\r\n \r\n \r\n \r\n const [, drag] = useDrag({\r\n item: { employeeId: employee.id, employee, type: DraggableType },\r\n });\r\n return (\r\n \r\n \r\n

{ employee.firstName } { employee.lastName } \r\n updateSelectedEmployeeList({ selected: e.target.checked,\r\n empid: e.target.value })}> \r\n

\r\n \r\n );\r\n};\r\n\r\nexport default Employee;\r\n","import React from 'react';\r\nimport classNames from 'classnames';\r\n\r\nimport MultilineText from '../../MultilineText';\r\nimport Address from '../../Address';\r\nimport DisplayField from '../DisplayField';\r\nimport styles from './JobEvent.css';\r\nimport ActionButtons from './ActionButtons';\r\nimport Details from './Details';\r\nimport Financials from './Financials';\r\nimport Materials from './Materials';\r\nimport Time from './Time';\r\nimport PropTypes from 'prop-types';\r\n\r\n\r\nimport { useDrop } from 'react-dnd';\r\nimport Employee from '../../../AvailableEvents/AvailableEmployees/Employee'\r\nimport moment from 'moment';\r\nimport calendar from '../../../../redux/calendar';\r\nimport { isNumber } from 'lodash';\r\n\r\nconst makeStyle = ({ color }) => !color ? null : {\r\n borderColor: color\r\n};\r\n\r\nconst getEntityActive = (event, entity) => {\r\n if (event.job) { return entity === 'jobs'; }\r\n if (event.purchaseOrder) { return entity === 'purchaseOrders'; }\r\n return false;\r\n};\r\n\r\n\r\n\r\nconst JobEvent = ({\r\n className,\r\n detailEnabled,\r\n entity,\r\n event,\r\n date,\r\n currentDate,\r\n financialEnabled,\r\n locationEnabled,\r\n materialEnabled, \r\n onClick,\r\n onDeleteEventClick,\r\n onEditEventClick,\r\n onOpenClick,\r\n onPrintWorkOrder,\r\n showActions,\r\n styleSelector,\r\n onRescheduleRes,\r\n activeEquipment,\r\n schedulerView \r\n}) => { \r\n const ondbClick = ()=> { \r\n \r\n if(schedulerView === 'equipment')\r\n {\r\n let evtcrew = event.crew;\r\n if(evtcrew)\r\n {\r\n evtcrew.equipment = activeEquipment; \r\n onRescheduleRes(event.id, currentDate?currentDate:moment().format(), evtcrew,false); \r\n }\r\n }\r\n else\r\n {\r\n onClick();\r\n }\r\n }\r\n\r\n const [{ canDrop, isDragging, isOver }, drop] = useDrop({\r\n accept: ['employee','crew'],\r\n \r\n canDrop: (item) => {\r\n switch(item.type) {\r\n case 'employee': \r\n return true; \r\n case 'crew': \r\n return true; \r\n default:\r\n return false; \r\n }\r\n \r\n },\r\n collect: (monitor) => ({\r\n canDrop: !!monitor.canDrop(),\r\n isDragging: !!monitor.getItem(),\r\n isOver: !!monitor.isOver(),\r\n }), \r\n drop: (item) => {\r\n switch(item.type) {\r\n case 'employee': \r\n const rs ={\"resource\": item.employee}; \r\n let resources = []; \r\n if(event.crew != null)\r\n { \r\n const existing_resource = event.crew.resources.find( r => r.resource.id === rs.resource.id) ; \r\n resources = existing_resource ? [...event.crew.resources]:[...event.crew.resources, rs];\r\n }\r\n else\r\n { \r\n resources.push(rs); \r\n } \r\n const res = {\"resources\" : resources};\r\n let crew = { res }\r\n if(event.crew != null)\r\n {\r\n crew = {...event.crew, resources} \r\n } \r\n onRescheduleRes(event.id, event.endDate, crew,false); \r\n break;\r\n case 'crew': \r\n onRescheduleRes(event.id, event.endDate, item.standardcrew,false); \r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n \r\n });\r\n let showEmployees = false;\r\n let color = '#304e1e';\r\n let employeeCheck = '#FFF';\r\n\r\n let curdate = currentDate?currentDate:moment();\r\n color = event.crew?moment(curdate).isSame(date,'day')? '#304e1e':'#afd3aa':'#afd3aa';\r\n\r\n if(event.crew && event.crew.resources && schedulerView === 'equipment')\r\n {\r\n showEmployees = true;\r\n }\r\n return(\r\n \r\n \r\n \r\n
ondbClick():onClick}> \r\n {/*
*/}\r\n
\r\n {`${event.job.jobNumber || ''} - ${event.job.name || ''}`}\r\n
\r\n
\r\n {showActions && (\r\n \r\n )}\r\n
\r\n)};\r\n\r\nJobEvent.defaultProps = {\r\n showActions: true\r\n};\r\n\r\nJobEvent.prototypes =\r\n{\r\n onRescheduleRes: PropTypes.func,\r\n};\r\n\r\nexport default JobEvent;\r\n","import moment from 'moment';\r\nimport { connect } from 'react-redux';\r\nimport { createSelector } from 'reselect';\r\n\r\nimport { openEvent, rescheduleEvent, rescheduleEventExplicit } from '../../../../redux/calendar';\r\nimport { toggleDeleteModal, toggleEditModal } from '../../../../redux/modals';\r\nimport { open as togglePrintWorkOrderModal } from '../../../../redux/modals/printWorkOrderModal';\r\nimport JobEvent from './JobEvent';\r\n\r\n\r\nconst colorMode = (state) => state.settings.color;\r\n\r\nconst colors = createSelector(\r\n colorMode,\r\n (state) => state.dropdowns,\r\n (colorMode, { jobStatuses, jobTypes, offices }) => {\r\n switch (colorMode) {\r\n case 'jobStatus':\r\n return jobStatuses;\r\n case 'office':\r\n return offices;\r\n default:\r\n return jobTypes;\r\n }\r\n }\r\n);\r\n\r\nconst getEvent = (state, { eventId }) => state.events.events.find((e) => e.id === eventId);\r\n\r\nconst makeGetEvent = () => createSelector(\r\n getEvent,\r\n colorMode,\r\n colors,\r\n (event, colorMode, colors) => {\r\n if (!event.job) {\r\n return event;\r\n }\r\n\r\n let color = null;\r\n switch (colorMode) {\r\n case 'jobType':\r\n const jobType = colors.find((jobType) => jobType.name === event.job.jobType);\r\n color = jobType ? jobType.color : null;\r\n break;\r\n case 'office':\r\n const office = colors.find((office) => event.job.office && office.id === event.job.office.id);\r\n color = office ? office.color : null;\r\n break;\r\n case 'salesperson':\r\n const salesperson = event.job.salesperson;\r\n color = salesperson ? salesperson.calendarColor : null;\r\n break;\r\n default:\r\n const jobStatus = colors.find((jobStatus) => jobStatus.value === event.job.status);\r\n color = jobStatus ? jobStatus.color : null;\r\n break;\r\n }\r\n return { ...event, color };\r\n }\r\n);\r\n\r\nconst makeMapStateToProps = () => {\r\n const getEvent = makeGetEvent();\r\n return (state, props) => ({\r\n detailEnabled: state.settings.detailEnabled,\r\n entity: state.settings.entity,\r\n schedulerView:state.settings.schedulerView,\r\n event: getEvent(state, props),\r\n financialEnabled: state.settings.financialEnabled,\r\n hasCalendarEventDelete: state.tokenInfo.scope.indexOf('calendarEvents:delete') > -1,\r\n hasCalendarEventUpdate: state.tokenInfo.scope.indexOf('calendarEvents:update') > -1,\r\n locationEnabled: state.settings.locationEnabled,\r\n materialEnabled: state.settings.materialEnabled,\r\n crew: getEvent(state, props).crew,\r\n date:getEvent(state, props).endDate,\r\n currentDate: (state.calendar.date || moment()),\r\n activeEquipment: state.calendar ? state.calendar.activeEquipment:null, \r\n \r\n });\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch, { eventId }) => ({ \r\n onClick: () => dispatch(rescheduleEvent(eventId)), \r\n onDeleteEventClick: () => dispatch(toggleDeleteModal(eventId)),\r\n onEditEventClick: () => dispatch(toggleEditModal(eventId)),\r\n onOpenClick: () => dispatch(openEvent(eventId)),\r\n onPrintWorkOrder: (event) => dispatch(togglePrintWorkOrderModal({eventId: event.eventId, date: event.date})),\r\n onRescheduleRes: (eventId, date,crew)=> dispatch(rescheduleEventExplicit(eventId, date,crew))\r\n \r\n});\r\n\r\nconst mergeProps = ({ event, currentDate, hasCalendarEventDelete, hasCalendarEventUpdate, ...stateProps }, { onClick, onDeleteEventClick, onEditEventClick, onPrintWorkOrder, ...dispatchProps }, ownProps) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps,\r\n event,\r\n onClick: hasCalendarEventUpdate ? onClick : null,\r\n onDeleteEventClick: hasCalendarEventDelete ? onDeleteEventClick : null,\r\n onEditEventClick: hasCalendarEventUpdate ? onEditEventClick : null,\r\n onPrintWorkOrder: () => onPrintWorkOrder({eventId: event.id, date: (currentDate || moment()).format('YYYY-MM-DD')})\r\n});\r\n\r\nexport default connect(makeMapStateToProps, mapDispatchToProps, mergeProps)(JobEvent);\r\n","import React from 'react';\r\nimport { Button, ButtonToolbar } from 'react-bootstrap';\r\nimport FontAwesome from 'react-fontawesome';\r\n\r\nconst ActionButtons = ({\r\n buttonComponent: ButtonComponent,\r\n containerComponent: ContainerComponent,\r\n containerId,\r\n onDeleteEventClick,\r\n onEditEventClick,\r\n onOpenClick,\r\n showLabels,\r\n ...props\r\n}) => (\r\n \r\n {typeof onOpenClick === 'function' && (\r\n \r\n \r\n {showLabels && \" Open\"}\r\n \r\n )}\r\n {typeof onEditEventClick === 'function' && (\r\n \r\n \r\n {showLabels && \" Edit\"}\r\n \r\n )}\r\n {typeof onDeleteEventClick === 'function' && (\r\n \r\n \r\n {showLabels && \" Delete\"}\r\n \r\n )}\r\n \r\n);\r\n\r\nActionButtons.defaultProps = {\r\n buttonComponent: Button,\r\n containerComponent: ButtonToolbar,\r\n showLabels: false\r\n};\r\n\r\nexport default ActionButtons;\r\n","import React from 'react';\r\nimport { objectValues } from '../../../../utils';\r\nimport DisplayField from '../DisplayField';\r\n\r\nfunction getPurchaseOrderJobs(purchaseOrder) {\r\n const jobsById = purchaseOrder.items\r\n .filter(p => !!p.job)\r\n .reduce((jobs, p) => ({\r\n ...jobs,\r\n [p.job.id]: p.job\r\n }), {});\r\n return objectValues(jobsById);\r\n}\r\n\r\nconst Details = ({ event }) => (\r\n
\r\n \r\n

Status: {event.purchaseOrder.status && event.purchaseOrder.status.name}

\r\n
\r\n \r\n

Supplier: {event.purchaseOrder.supplier ? event.purchaseOrder.supplier.name : 'N/A'}

\r\n
\r\n {event.purchaseOrder.items.some(p => !!p.job) && (\r\n \r\n

\r\n Jobs:
\r\n {getPurchaseOrderJobs(event.purchaseOrder).map(j => (\r\n - {j.jobNumber} - {j.name}
\r\n ))}\r\n

\r\n
\r\n )}\r\n
\r\n);\r\n\r\nexport default Details;\r\n","export default (o) => Object.keys(o).map((k) => o[k]);","import React from 'react';\r\n\r\nconst aggregateMaterial = (purchaseOrder) => {\r\n const totals = purchaseOrder.items\r\n .filter((purchaseOrderItem) => purchaseOrderItem.quantity && purchaseOrderItem.item && purchaseOrderItem.item.itemType)\r\n .reduce((totals, purchaseOrderItem) => {\r\n let group = totals[purchaseOrderItem.item.itemType.id] || {\r\n name: purchaseOrderItem.item.itemType.name,\r\n quantity: 0\r\n };\r\n group.quantity += purchaseOrderItem.quantity;\r\n totals[purchaseOrderItem.item.itemType.id] = group;\r\n return totals;\r\n }, {});\r\n return Object.keys(totals).map((k) => totals[k]);\r\n};\r\n\r\nconst Materials = ({ event }) => (\r\n
\r\n {aggregateMaterial(event.purchaseOrder).map(({ name, quantity }, i) => (\r\n

{name}: {Math.round(quantity * 1000) / 1000}

\r\n ))}\r\n
\r\n);\r\n\r\nexport default Materials;\r\n","import React from 'react';\r\nimport classNames from 'classnames';\r\n\r\nimport MultilineText from '../../MultilineText';\r\nimport DisplayField from '../DisplayField';\r\nimport styles from './DeliveryEvent.css';\r\nimport ActionButtons from './ActionButtons';\r\nimport Details from './Details';\r\nimport Materials from './Materials';\r\n\r\nconst makeStyle = ({ color }) => !color ? null : {\r\n borderColor: color\r\n};\r\n\r\nconst getEntityActive = (event, entity) => {\r\n if (event.job) { return entity === 'jobs'; }\r\n if (event.purchaseOrder) { return entity === 'purchaseOrders'; }\r\n return false;\r\n};\r\n\r\nconst DeliveryEvent = ({\r\n className,\r\n detailEnabled,\r\n entity,\r\n event,\r\n financialEnabled,\r\n locationEnabled,\r\n materialEnabled,\r\n onClick,\r\n onDeleteEventClick,\r\n onEditEventClick,\r\n onOpenClick,\r\n showActions,\r\n styleSelector\r\n}) => (\r\n \r\n
\r\n
\r\n {`${event.purchaseOrder.poNumber} - ${event.purchaseOrder.name || ''}`}\r\n
\r\n {detailEnabled &&
}\r\n {materialEnabled && }\r\n {locationEnabled && event.purchaseOrder.shipTo && (\r\n \r\n \r\n \r\n )}\r\n
\r\n {showActions && (\r\n \r\n )}\r\n \r\n);\r\n\r\nDeliveryEvent.defaultProps = {\r\n showActions: true\r\n};\r\n\r\nexport default DeliveryEvent;\r\n","import { connect } from 'react-redux';\r\n\r\nimport { openEvent, rescheduleEvent } from '../../../../redux/calendar';\r\nimport { toggleDeleteModal, toggleDeliveryModal } from '../../../../redux/modals';\r\nimport DeliveryEvent from './DeliveryEvent';\r\n\r\nconst makeGetEvent = () => (state, { eventId }) => state.events.events.find((e) => e.id === eventId);\r\n\r\nconst makeMapStateToProps = () => {\r\n const getEvent = makeGetEvent();\r\n return (state, props) => ({\r\n detailEnabled: state.settings.detailEnabled,\r\n entity: state.settings.entity,\r\n event: getEvent(state, props),\r\n financialEnabled: state.settings.financialEnabled,\r\n hasCalendarEventDelete: state.tokenInfo.scope.indexOf('calendarEvents:delete') > -1,\r\n hasCalendarEventUpdate: state.tokenInfo.scope.indexOf('calendarEvents:update') > -1,\r\n locationEnabled: state.settings.locationEnabled,\r\n materialEnabled: state.settings.materialEnabled\r\n });\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch, { eventId }) => ({\r\n onClick: () => dispatch(rescheduleEvent(eventId)),\r\n onDeleteEventClick: () => dispatch(toggleDeleteModal(eventId)),\r\n onEditEventClick: () => dispatch(toggleDeliveryModal(eventId)),\r\n onOpenClick: () => dispatch(openEvent(eventId))\r\n});\r\n\r\nconst mergeProps = ({ hasCalendarEventDelete, hasCalendarEventUpdate, ...stateProps }, { onClick, onDeleteEventClick, onEditEventClick, ...dispatchProps }, ownProps) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps,\r\n onClick: hasCalendarEventUpdate ? onClick : null,\r\n onDeleteEventClick: hasCalendarEventDelete ? onDeleteEventClick : null,\r\n onEditEventClick: hasCalendarEventUpdate ? onEditEventClick : null\r\n});\r\n\r\nexport default connect(makeMapStateToProps, mapDispatchToProps, mergeProps)(DeliveryEvent);\r\n","import React from 'react';\r\nimport { Button, ButtonToolbar } from 'react-bootstrap';\r\nimport FontAwesome from 'react-fontawesome';\r\n\r\nconst ActionButtons = ({\r\n buttonComponent: ButtonComponent,\r\n containerComponent: ContainerComponent,\r\n containerId,\r\n onDeleteEventClick,\r\n onEditEventClick,\r\n onOpenClick, \r\n showLabels,\r\n showApptMenuItem,\r\n ...props\r\n}) => {\r\n \r\n \r\n \r\n return (\r\n \r\n {typeof onOpenClick === 'function' && showApptMenuItem && (\r\n \r\n \r\n {showLabels && \" Open\"}\r\n \r\n )}\r\n \r\n {typeof onEditEventClick === 'function' && (\r\n \r\n \r\n {showLabels && \" Edit\"}\r\n \r\n )}\r\n {typeof onDeleteEventClick === 'function' && (\r\n \r\n \r\n {showLabels && \" Delete\"}\r\n \r\n )}\r\n \r\n);}\r\n\r\nActionButtons.defaultProps = {\r\n buttonComponent: Button,\r\n containerComponent: ButtonToolbar,\r\n showLabels: false\r\n};\r\n\r\nexport default ActionButtons;\r\n","import React from 'react';\r\nimport DisplayField from '../DisplayField';\r\nimport Contact from './Contact';\r\n\r\nconst Details = ({ event }) => (\r\n
\r\n\r\n {event.customer && (\r\n \r\n

Customer: {event.customer.name}

\r\n
\r\n )}\r\n {event.datasheet && (\r\n \r\n

Datasheet: {event.datasheet.name}

\r\n
\r\n )}\r\n\r\n {event.startTime &&(\r\n \r\n

Event Time: {event.startTime} - {event.endTime}

\r\n
\r\n )\r\n \r\n }\r\n\r\n\r\n {event.datasheet && event.datasheet.customer &&(\r\n \r\n

Customer: {event.datasheet.customer.name}

\r\n
\r\n )}\r\n\r\n{event.datasheet && event.datasheet.status && (\r\n \r\n

Status:{event.datasheet.status}

\r\n
\r\n )}\r\n\r\n{event.customer && event.customer.status && (\r\n \r\n

Status:{event.customer.status}

\r\n
\r\n )}\r\n\r\n{event.datasheet && event.datasheet.assignedToResource && (\r\n \r\n

Salesperson:{event.datasheet.assignedToResource.firstName} {event.datasheet.assignedToResource.lastName}

\r\n
\r\n )}\r\n\r\n{event.customer && event.customer.assignedTo && (\r\n \r\n

Salesperson:{event.customer.assignedTo.firstName} {event.customer.assignedTo.lastName}

\r\n
\r\n )}\r\n{event.description &&(\r\n \r\n

{event.description}

\r\n
\r\n )}\r\n {event.datasheet && event.datasheet.customer &&(\r\n \r\n

Phone: {event.datasheet.customer.phonenumber}

\r\n
\r\n )}\r\n\r\n{event.customer &&(\r\n \r\n

Phone: {event.customer.phonenumber}

\r\n
\r\n )}\r\n\r\n \r\n{event.appttype &&(\r\n \r\n

Appointment Type: {event.appttype}

\r\n
\r\n )}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n \r\n\r\n \r\n
\r\n);\r\n\r\nexport default Details;\r\n","import React from 'react';\r\nimport classNames from 'classnames';\r\n\r\nimport Address from '../../Address';\r\n\r\nimport Employee from '../../../AvailableEvents/AvailableEmployees/Employee'\r\n\r\nimport styles from './AppointmentEvent.css';\r\nimport ActionButtons from './ActionButtons';\r\nimport Details from './Details';\r\n\r\n\r\nimport { useDrop } from 'react-dnd';\r\n\r\nimport moment from 'moment';\r\n\r\nconst makeStyle = ({ color }) => !color ? null : {\r\n borderColor: color\r\n};\r\n\r\nconst AppointmentEvent = ({\r\n className,\r\n detailEnabled,\r\n entity,\r\n event,\r\n date,\r\n currentDate,\r\n locationEnabled,\r\n onClick,\r\n onOpenClick,\r\n onDeleteEventClick,\r\n onEditEventClick,\r\n onRescheduleRes,\r\n activeEquipment,\r\n showActions,\r\n styleSelector,\r\n }) => \r\n{\r\n const ondbClick = ()=> { \r\n let evtcrew = event.crew;\r\n if(evtcrew)\r\n {\r\n evtcrew.equipment = activeEquipment; \r\n onRescheduleRes(event.id, currentDate?currentDate:moment().format(), evtcrew,false); \r\n } \r\n \r\n }\r\n const [{ canDrop, isDragging, isOver }, drop] = useDrop({\r\n accept: ['employee','crew'],\r\n \r\n\r\n canDrop: (item) => {\r\n switch(item.type) {\r\n case 'employee': \r\n return true; \r\n case 'crew': \r\n return true; \r\n default:\r\n return false; \r\n }\r\n \r\n },\r\n collect: (monitor) => ({\r\n canDrop: !!monitor.canDrop(),\r\n isDragging: !!monitor.getItem(),\r\n isOver: !!monitor.isOver(),\r\n }), \r\n drop: (item) => {\r\n switch(item.type) {\r\n case 'employee': \r\n const rs ={\"resource\": item.employee}; \r\n let resources = []; \r\n if(event.crew != null)\r\n { \r\n const existing_resource = event.crew.resources.find( r => r.resource.id === rs.resource.id) ; \r\n resources = existing_resource ? [...event.crew.resources]:[...event.crew.resources, rs];\r\n }\r\n else\r\n { \r\n resources.push(rs); \r\n } \r\n const res = {\"resources\" : resources};\r\n let crew = {}\r\n if(event.crew != null)\r\n {\r\n crew = {...event.crew, resources} \r\n } \r\n else\r\n {\r\n crew.id = 0;\r\n crew.equipment = null;\r\n crew.resources = resources;\r\n }\r\n\r\n onRescheduleRes(event.id, event.endDate, crew,false); \r\n break;\r\n case 'crew': \r\n onRescheduleRes(event.id, event.endDate, item.standardcrew,false); \r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n \r\n });\r\n\r\n let color = '#304e1e';\r\n let employeeCheck = '#FFF';\r\n\r\n let curdate = currentDate?currentDate:moment();\r\n color = event.crew?moment(curdate).isSame(date,'day')? '#304e1e':'#afd3aa':'#afd3aa';\r\n let showEmployees = false;\r\n if(event.crew && event.crew.resources)\r\n {\r\n showEmployees = true;\r\n }\r\n \r\n return(\r\n \r\n
ondbClick()}> \r\n
\r\n {event.name} \r\n
\r\n\r\n\r\n {detailEnabled &&
} \r\n \r\n {locationEnabled && event.datasheet && event.datasheet.address &&
}\r\n {locationEnabled && event.customer && event.customer.address &&
}\r\n {showEmployees && event.crew.resources.map( e =>\r\n \r\n { \r\n if(e.resource !== null)\r\n {\r\n //console.log(e);\r\n return(\r\n )\r\n \r\n }\r\n \r\n } ) } \r\n \r\n
\r\n {showActions&&(\r\n \r\n )}\r\n \r\n)};\r\n\r\nAppointmentEvent.defaultProps = {\r\n showActions: true,\r\n locationEnabled:true\r\n};\r\n\r\nexport default AppointmentEvent;\r\n","import { connect } from 'react-redux';\r\nimport { createSelector } from 'reselect';\r\n\r\nimport { openEvent, rescheduleEvent,rescheduleEventExplicit } from '../../../../redux/calendar';\r\nimport { toggleDeleteModal, toggleApptEditModal } from '../../../../redux/modals';\r\nimport { open as togglePrintWorkOrderModal } from '../../../../redux/modals/printWorkOrderModal';\r\nimport AppointmentEvent from './AppointmentEvent';\r\n\r\nconst colorMode = (state) => state.settings.color;\r\n\r\nconst colors = createSelector(\r\n colorMode,\r\n (state) => state.dropdowns,\r\n (colorMode, { jobStatuses, jobTypes, offices }) => {\r\n switch (colorMode) {\r\n case 'jobStatus':\r\n return jobStatuses;\r\n case 'office':\r\n return offices;\r\n default:\r\n return jobTypes;\r\n }\r\n }\r\n);\r\n\r\nconst getEvent = (state, { eventId }) => state.events.events.find((e) => e.id === eventId);\r\n\r\nconst makeGetEvent = () => createSelector(\r\n getEvent,\r\n colorMode,\r\n colors,\r\n (event, colorMode, colors) => {\r\n \r\n if (!event.datasheet) {\r\n return event;\r\n }\r\n\r\n let color = null;\r\n switch (colorMode) {\r\n case 'office':\r\n const office = colors.find((office) => event.datasheet.office && office.id === event.datasheet.office.id);\r\n color = office ? office.color : null;\r\n break;\r\n case 'salesperson':\r\n const salesperson = event.datasheet.salesperson;\r\n color = salesperson ? salesperson.calendarColor : null;\r\n break;\r\n default:\r\n return event;\r\n }\r\n return { ...event, color };\r\n }\r\n);\r\n\r\nconst makeMapStateToProps = () => {\r\n const getEvent = makeGetEvent();\r\n return (state, props) => ({\r\n detailEnabled: state.settings.detailEnabled,\r\n entity: state.settings.entity,\r\n event: getEvent(state, props),\r\n financialEnabled: state.settings.financialEnabled,\r\n hasCalendarEventDelete: state.tokenInfo.scope.indexOf('calendarEvents:delete') > -1,\r\n hasCalendarEventUpdate: state.tokenInfo.scope.indexOf('calendarEvents:update') > -1,\r\n locationEnabled: state.settings.locationEnabled,\r\n materialEnabled: state.settings.materialEnabled\r\n });\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch, { eventId }) => ({\r\n onClick: () => dispatch(rescheduleEvent(eventId)),\r\n onOpenClick: () => dispatch(openEvent(eventId)),\r\n onRescheduleRes: (eventId, date,crew)=> dispatch(rescheduleEventExplicit(eventId, date,crew)),\r\n onDeleteEventClick: () => dispatch(toggleDeleteModal(eventId)),\r\n onEditEventClick: () => dispatch(toggleApptEditModal(eventId)),\r\n});\r\n\r\nconst mergeProps = ({ event, hasCalendarEventDelete, hasCalendarEventUpdate, ...stateProps }, { onClick, onDeleteEventClick, onEditEventClick, onPrintWorkOrder, ...dispatchProps }, ownProps) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps,\r\n event,\r\n onClick: hasCalendarEventUpdate ? onClick : null,\r\n onDeleteEventClick: hasCalendarEventDelete ? onDeleteEventClick : null,\r\n onEditEventClick: hasCalendarEventUpdate ? onEditEventClick : null,\r\n});\r\n\r\nexport default connect(makeMapStateToProps, mapDispatchToProps, mergeProps)(AppointmentEvent);\r\n","import React from 'react';\r\nimport { useDrag } from 'react-dnd';\r\n\r\nimport BidEvent from './BidEvent';\r\nimport FieldSettings from './FieldSettings';\r\nimport JobEvent from './JobEvent';\r\nimport DeliveryEvent from './DeliveryEvent';\r\nimport AppointmentEvent from './AppointmentEvent';\r\n\r\n\r\nexport const DraggableType = 'event';\r\n\r\nconst findComponent = (eventType) => {\r\n \r\n switch (eventType) {\r\n case 'bid':\r\n return BidEvent;\r\n case 'job':\r\n return JobEvent;\r\n case 'purchaseOrder':\r\n return DeliveryEvent;\r\n case 'appointment':\r\n return AppointmentEvent;\r\n \r\n default:\r\n return null;\r\n }\r\n};\r\n\r\nconst Event = ({ eventType, fields, ...props }) => {\r\n const [, drag] = useDrag({\r\n item: { eventId: props.eventId, event: props.event, type: DraggableType },\r\n });\r\n\r\n const EventComponent = findComponent(eventType);\r\n if (!EventComponent) {\r\n return null;\r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport default Event;\r\n","import { connect } from 'react-redux';\r\nimport { createSelector } from 'reselect';\r\n\r\nimport Event from './Event';\r\nimport { fieldsSelector } from '../../../redux/settings';\r\nexport * from './Event';\r\n\r\nconst getEventOffice = event => {\r\n if (event.purchaseOrder) {\r\n return event.purchaseOrder.office;\r\n } else if (event.job) {\r\n return event.job.office;\r\n } else if (event.bid) {\r\n return event.bid.office;\r\n } else {\r\n return null;\r\n }\r\n};\r\n\r\nconst makeGetEventType = () => (state, { eventId }) => {\r\n const event = state.events.events.find((e) => e.id === eventId);\r\n \r\n if (event.purchaseOrder) {\r\n return 'purchaseOrder';\r\n } else if (event.job) {\r\n return 'job';\r\n } else if (event.bid) {\r\n return 'bid';\r\n } \r\n if(event.customer || event.datasheet || event.appttype || event.evttype =='appointments')\r\n {\r\n return 'appointment';\r\n }\r\n else {\r\n return 'none';\r\n }\r\n};\r\n\r\nconst makeGetEvent = () => createSelector(\r\n (state, { eventId }) => state.events.events.find(e => e.id === eventId),\r\n event => ({\r\n ...event,\r\n office: getEventOffice(event)\r\n })\r\n);\r\n\r\nconst makeMapStateToProps = () => {\r\n const getEvent = makeGetEvent();\r\n const getEventType = makeGetEventType();\r\n return (state, props) => ({\r\n event: getEvent(state, props),\r\n eventType: getEventType(state, props),\r\n fields: fieldsSelector(state)\r\n });\r\n};\r\n\r\nconst mapDispatchToProps = {};\r\n\r\nexport default connect(makeMapStateToProps, mapDispatchToProps)(Event);\r\n","import React from 'react';\r\nimport classNames from 'classnames';\r\nimport PropTypes from 'prop-types';\r\nimport { Button, ButtonToolbar } from 'react-bootstrap';\r\nimport { useDrop } from 'react-dnd';\r\nimport FontAwesome from 'react-fontawesome';\r\n\r\nimport CrewCapacities from '../shared/CrewCapacities';\r\nimport CrewName from '../shared/CrewName';\r\nimport Event from '../shared/Event';\r\nimport styles from './DayView.less';\r\nimport { isNumber } from 'lodash';\r\n\r\nconst Crew = ({\r\n active,\r\n crew,\r\n date,\r\n events,\r\n onCrewSelect,\r\n onEditCrewClick,\r\n onPrintWorkOrder,\r\n onReschedule,\r\n onScheduleBid,\r\n onScheduleDelivery,\r\n onScheduleJob,\r\n}) => {\r\n const [{ canDrop, isDragging, isOver }, drop] = useDrop({\r\n accept: ['bid', 'event', 'job', 'purchaseOrder'],\r\n canDrop: (item) => {\r\n switch(item.type) {\r\n case 'bid':\r\n // Bids cannot be scheduled to a crew\r\n return !crew;\r\n case 'event':\r\n const { event } = item;\r\n if (event.bid) {\r\n // Bids cannot be scheduled to a crew\r\n return !crew;\r\n } else {\r\n return !crew || !event.office || crew.offices.some(o => o.id === event.office.id);\r\n }\r\n case 'job':\r\n // Job office must match crew's office\r\n const { job } = item;\r\n return !crew || !job.office || crew.offices.some(o => o.id === job.office.id);\r\n case 'purchaseOrder':\r\n // Purchase order office must match crew's office\r\n const { purchaseOrder } = item;\r\n return !crew || !purchaseOrder.office || crew.offices.some(o => o.id === purchaseOrder.office.id);\r\n default:\r\n break;\r\n }\r\n return true;\r\n },\r\n collect: monitor => ({\r\n canDrop: !!monitor.canDrop(),\r\n isDragging: !!monitor.getItem(),\r\n isOver: !!monitor.isOver(),\r\n }),\r\n drop(item) {\r\n switch(item.type) {\r\n case 'bid':\r\n const { bidId } = item;\r\n onScheduleBid && onScheduleBid(bidId, date.format('YYYY-MM-DD'));\r\n break;\r\n case 'event':\r\n const { eventId } = item;\r\n onReschedule && onReschedule(eventId, date.format('YYYY-MM-DD'), crew);\r\n break;\r\n case 'job':\r\n const { jobId } = item;\r\n onScheduleJob && onScheduleJob(jobId, crew, date.format('YYYY-MM-DD'));\r\n break;\r\n case 'purchaseOrder':\r\n const { purchaseOrderId } = item;\r\n onScheduleDelivery && onScheduleDelivery(purchaseOrderId, date.format('YYYY-MM-DD'), crew);\r\n break;\r\n default:\r\n break;\r\n }\r\n },\r\n });\r\n\r\n return (\r\n \r\n
onCrewSelect(crew)}>\r\n \r\n
\r\n
\r\n \r\n \r\n {onEditCrewClick && (\r\n \r\n )}\r\n {onPrintWorkOrder && (\r\n e.job) || events.some(e=> e.job && !isNumber(e.id)) }\r\n onClick={() => onPrintWorkOrder({eventId: events.filter(e => e.job).map(e => e.id), date: date.format('YYYY-MM-DD')})}\r\n >\r\n Print Work Orders\r\n \r\n )}\r\n \r\n
\r\n {events.length\r\n ? events.map((e) => )\r\n : (\r\n
\r\n No jobs are scheduled for this crew\r\n
\r\n )\r\n }\r\n
\r\n \r\n );\r\n};\r\n\r\nCrew.propTypes = {\r\n active: PropTypes.bool.isRequired,\r\n crew: PropTypes.object,\r\n events: PropTypes.arrayOf(PropTypes.object).isRequired,\r\n onCrewSelect: PropTypes.func.isRequired,\r\n onEditCrewClick: PropTypes.func,\r\n onReschedule: PropTypes.func,\r\n onPrintWorkOrder: PropTypes.func,\r\n onScheduleDelivery: PropTypes.func,\r\n onScheduleJob: PropTypes.func\r\n};\r\n\r\nexport default Crew;\r\n","import React from 'react';\r\nimport { Badge, ProgressBar } from 'react-bootstrap';\r\n\r\nfunction getProgressBarStyle(percent) {\r\n if (percent > 1) {\r\n return 'danger';\r\n } else if (percent >= 0.80) {\r\n return 'warning';\r\n } else {\r\n return 'success';\r\n }\r\n}\r\n\r\nconst JobTypeCapacity = ({ jobType, events }) => {\r\n const estimatedDuration = events\r\n .filter((e) => e.job)\r\n .map((e) => e.job.capacities.estimatedDuration || 0)\r\n .reduce((estimatedDuration, v) => estimatedDuration + v, 0);\r\n const laborAmount = events\r\n .filter((e) => e.job)\r\n .map((e) => e.job.capacities.laborAmount || 0)\r\n .reduce((laborAmount, v) => laborAmount + v, 0);\r\n const materialLoad = events\r\n .filter((e) => e.job)\r\n .map((e) => e.job.capacities.materialQuantity || 0)\r\n .reduce((materialLoad, v) => materialLoad + v, 0);\r\n\r\n const durationCapacity = jobType.workCapacities\r\n .filter((c) => c.capacityType === 'estimatedDuration')\r\n .map((c) => c.value)[0];\r\n const laborCapacity = jobType.workCapacities\r\n .filter((c) => c.capacityType === 'laborAmount')\r\n .map((c) => c.value)[0];\r\n const materialCapacity = jobType.workCapacities\r\n .filter((c) => c.capacityType === 'materialQuantity')\r\n .map((c) => c.value)[0];\r\n\r\n const estimatedDurationPercent = durationCapacity\r\n ? Math.round((estimatedDuration / durationCapacity) * 100) / 100\r\n : null;\r\n const laborPercent = laborCapacity\r\n ? Math.round((laborAmount / laborCapacity) * 100) / 100\r\n : null;\r\n const materialPercent = materialCapacity\r\n ? Math.round((materialLoad / materialCapacity) * 100) / 100\r\n : null;\r\n\r\n return (\r\n
\r\n

\r\n {`${jobType.name} `}\r\n {events.filter((e) => e.job).length}\r\n

\r\n {!!laborCapacity && (\r\n
\r\n

Labor $

\r\n \r\n
\r\n )}\r\n {!!materialCapacity && (\r\n
\r\n

Material Load

\r\n \r\n
\r\n )}\r\n {!!durationCapacity && (\r\n
\r\n

Estimated Duration

\r\n \r\n
\r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default JobTypeCapacity;\r\n","import React from 'react';\r\nimport { Col, Panel, Row } from 'react-bootstrap';\r\n\r\nimport JobTypeCapacity from './JobTypeCapacity';\r\n\r\nconst JobTypeCapacities = ({ jobTypes, events }) => {\r\n // Group the job types by name for quick lookup\r\n const jobTypesByName = jobTypes\r\n .reduce((types, t) => ({ ...types, [t.name]: t }), {});\r\n\r\n // Group events by job type\r\n const eventsByJobType = events\r\n .filter(e => e.job && !e.tentative && e.job.jobType && jobTypesByName[e.job.jobType])\r\n .reduce((types, e) => ({\r\n ...types,\r\n [e.job.jobType]: [\r\n ...(types[e.job.jobType] || []),\r\n e\r\n ]\r\n }), {});\r\n\r\n return (\r\n \r\n \r\n Job Types\r\n \r\n \r\n \r\n {Object.keys(eventsByJobType).length\r\n ? (\r\n \r\n {Object.keys(eventsByJobType)\r\n .map((jobType) => (\r\n \r\n \r\n \r\n ))\r\n }\r\n \r\n )\r\n : (\r\n
No jobs are scheduled today
\r\n )}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default JobTypeCapacities;\r\n","import PropTypes from 'prop-types';\r\nimport React from 'react';\r\nimport { Button, ButtonToolbar } from 'react-bootstrap';\r\nimport FontAwesome from 'react-fontawesome';\r\nimport Crew from './Crew';\r\nimport JobTypeCapacities from './JobTypeCapacities';\r\n\r\nconst DayView = ({\r\n className,\r\n date,\r\n entity,\r\n events,\r\n settings,\r\n eventsByCrew,\r\n jobTypes,\r\n onEditCrewClick,\r\n onLoadReportClick,\r\n onPrintWorkOrder,\r\n ...props\r\n}) =>\r\n{\r\n \r\n events = events.filter(function(e){\r\n return e.evttype === settings.entity\r\n });\r\nswitch(settings.sortoption)\r\n{\r\n case \"Date\": \r\n events.sort(function(a, b){ \r\n \r\n if (a.startTime === null) {\r\n return 1;\r\n }\r\n if (b.startTime === null) {\r\n return -1;\r\n }\r\n if (a.startTime < b.startTime)\r\n return -1\r\nif (a.startTime > b.startTime)\r\n return 1\r\nelse\r\n return 0\r\n });\r\n break;\r\n case \"Customer\":\r\n \r\n \r\n events.sort(function(a, b){ \r\n \r\n if(a.customer && b.customer)\r\n {\r\n return a.customer.name.localeCompare(b.customer.name);\r\n }\r\n else if (a.datasheet && b.datasheet)\r\n {\r\n if(a.datasheet.customer && b.datasheet.customer)\r\n {\r\n return a.datasheet.customer.name.localeCompare(b.datasheet.customer.name);\r\n }\r\n else\r\n {\r\n return b.id- a.id;\r\n }\r\n }\r\n else if (a.job && b.job)\r\n {\r\n if(a.job.customer && b.job.customer)\r\n {\r\n return a.job.customer.name.localeCompare(b.job.customer.name);\r\n }\r\n else\r\n {\r\n return b.id- a.id;\r\n }\r\n }\r\n else if (a.bid && b.bid)\r\n {\r\n if(a.bid.customer && b.bid.customer)\r\n {\r\n return a.bid.customer.name.localeCompare(b.bid.customer.name);\r\n }\r\n else\r\n {\r\n return b.id- a.id;\r\n }\r\n }\r\n\r\n else\r\n {\r\n return b.id- a.id;\r\n }\r\n });\r\n \r\n break;\r\n case \"Address\":\r\n events.sort(\r\n function(a,b){\r\n\r\n if(a.datasheet && b.datasheet)\r\n {\r\n if(a.datasheet.customer && b.datasheet.customer && a.datasheet.customer.address && b.datasheet.customer.address)\r\n { \r\n const compareState = a.datasheet.customer.address.state.localeCompare(b.datasheet.customer.address.state);\r\n const compareCity = a.datasheet.customer.address.city.localeCompare(b.datasheet.customer.address.city);\r\n const compareLine1 = a.datasheet.customer.address.line1.localeCompare(b.datasheet.customer.address.line1);\r\n const compareLine2 = a.datasheet.customer.address.line2.localeCompare(b.datasheet.customer.address.line2);\r\n return compareState || compareCity || compareLine1 || compareLine2;\r\n }\r\n }\r\n else if(a.customer && b.customer)\r\n {\r\n if(a.customer && b.customer && a.customer.address && b.customer.address)\r\n {\r\n const compareState = a.customer.address.state.localeCompare(b.customer.address.state);\r\n const compareCity = a.customer.address.city.localeCompare(b.customer.address.city);\r\n const compareLine1 = a.customer.address.line1.localeCompare(b.customer.address.line1);\r\n const compareLine2 = a.customer.address.line2.localeCompare(b.customer.address.line2);\r\n return compareState || compareCity || compareLine1 || compareLine2;\r\n }\r\n }\r\n else if (a.job && b.job)\r\n {\r\n const compareState = a.job.address.state.localeCompare(b.job.address.state);\r\n const compareCity = a.job.address.city.localeCompare(b.job.address.city);\r\n const compareLine1 = a.job.address.line1.localeCompare(b.job.address.line1);\r\n const compareLine2 = a.job.address.line2.localeCompare(b.job.address.line2);\r\n return compareState || compareCity || compareLine1 || compareLine2;\r\n }\r\n\r\n else if (a.bid && b.bid)\r\n {\r\n const compareState = a.bid.address.state.localeCompare(b.bid.address.state);\r\n const compareCity = a.bid.address.city.localeCompare(b.bid.address.city);\r\n const compareLine1 = a.bid.address.line1.localeCompare(b.bid.address.line1);\r\n const compareLine2 = a.bid.address.line2.localeCompare(b.bid.address.line2);\r\n return compareState || compareCity || compareLine1 || compareLine2;\r\n }\r\n\r\n else\r\n {\r\n return b.id - a.id\r\n }\r\n \r\n }\r\n\r\n )\r\n break;\r\n}\r\n\r\nreturn (\r\n
\r\n \r\n {entity === 'purchaseOrders' && (\r\n \r\n )}\r\n {entity === 'jobs' && (\r\n e.job)}\r\n onClick={() =>\r\n onPrintWorkOrder({eventId: events.filter(e => e.job).map(e => e.id), date: date.format('YYYY-MM-DD')})\r\n }\r\n >\r\n Print Work Orders\r\n \r\n )}\r\n \r\n
\r\n \r\n {eventsByCrew.map(({ active, crew, events }, i) => (\r\n onEditCrewClick(crew, events) : null\r\n }\r\n onPrintWorkOrder={onPrintWorkOrder}\r\n />\r\n ))}\r\n
\r\n)};\r\n\r\nDayView.propTypes = {\r\n entity: PropTypes.oneOf(['bids', 'jobs', 'purchaseOrders','appointments']),\r\n eventsByCrew: PropTypes.arrayOf(\r\n PropTypes.shape({\r\n active: PropTypes.bool.isRequired,\r\n crew: PropTypes.object,\r\n events: PropTypes.arrayOf(PropTypes.object).isRequired\r\n })\r\n ).isRequired,\r\n onEditCrewClick: PropTypes.func,\r\n onLoadReportClick: PropTypes.func,\r\n onPrintWorkOrder: PropTypes.func\r\n};\r\n\r\nexport default DayView;\r\n","import moment from 'moment';\r\nimport { connect } from 'react-redux';\r\n\r\nimport { rescheduleEventExplicit, setActiveCrew, scheduleBid, scheduleJobExplicit, schedulePurchaseOrderExplicit } from '../../redux/calendar';\r\nimport { toggleCrewModal, toggleLoadReportModal } from '../../redux/modals';\r\nimport { open as togglePrintWorkOrderModal } from '../../redux/modals/printWorkOrderModal';\r\nimport makeEventsByCrew from '../../selectors/eventsByCrew';\r\nimport DayView from './DayView';\r\n\r\nconst eventsByCrew = makeEventsByCrew(true);\r\n\r\nconst mapStateToProps = (state) => ({\r\n date: moment(state.calendar.date),\r\n hasCalendarEventUpdate: state.tokenInfo.scope.indexOf('calendarEvents:update') > -1,\r\n entity: state.settings.entity,\r\n events: state.events.events,\r\n eventsByCrew: eventsByCrew(state),\r\n jobTypes: state.dropdowns.jobTypes,\r\n settings:state.settings\r\n});\r\n\r\nconst mapDispatchToProps = {\r\n onCrewSelect: setActiveCrew,\r\n onEditCrewClick: toggleCrewModal,\r\n onLoadReportClick: toggleLoadReportModal,\r\n onReschedule: rescheduleEventExplicit,\r\n onPrintWorkOrder: togglePrintWorkOrderModal,\r\n onScheduleBid: scheduleBid,\r\n onScheduleDelivery: schedulePurchaseOrderExplicit,\r\n onScheduleJob: scheduleJobExplicit\r\n};\r\n\r\nconst mergeProps = ({ hasCalendarEventUpdate, ...stateProps }, { onEditCrewClick, ...dispatchProps }, ownProps) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps,\r\n onEditCrewClick: hasCalendarEventUpdate ? onEditCrewClick : null\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps, mergeProps)(DayView);\r\n","import JobProApi from '../../dependencies/JobProApi';\r\nimport { ofType } from 'redux-observable';\r\nimport { map, switchMap } from 'rxjs/operators';\r\nimport { getNextCalendarDisplayOrder, getNextPurchaseOrderDeliveryOrder, reloadCalendar } from '../calendar';\r\n\r\nconst DISPATCH_EVENT = 'DISPATCH_EVENT';\r\nconst PREVIEW_EVENT = 'PREVIEW_EVENT';\r\n\r\nconst DEFAULT_STATE = {\r\n previewEvent: null\r\n};\r\n\r\n// Reducer\r\nexport default function (state = DEFAULT_STATE, { payload, type }) {\r\n switch (type) {\r\n case PREVIEW_EVENT:\r\n return {\r\n ...state,\r\n previewEvent: payload\r\n };\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\n// Action creators\r\nexport const dispatchEvent = (eventId) => ({\r\n type: DISPATCH_EVENT,\r\n payload: { eventId }\r\n});\r\n\r\nexport const previewEvent = (event) => ({\r\n type: PREVIEW_EVENT,\r\n payload: event\r\n});\r\n\r\n// Epics\r\nexport const dispatchEventEpic = (action$, state$) => action$.pipe(\r\n ofType(DISPATCH_EVENT),\r\n switchMap(({ payload }) => {\r\n const { calendar, events } = state$;\r\n const { activeCrew } = calendar;\r\n const { eventId } = payload;\r\n\r\n const event = events.events.find(e => e.id === eventId);\r\n if (event.purchaseOrder) {\r\n const deliveryOrder = getNextPurchaseOrderDeliveryOrder(events.events, activeCrew);\r\n return JobProApi.purchaseOrders.update(event.purchaseOrder.id, {\r\n crew: activeCrew ? {\r\n equipment: activeCrew.equipment ? { id: activeCrew.equipment.id } : null,\r\n resources: activeCrew.resources.filter(r => !!r.resource).map(r => ({\r\n resource: { id: r.resource.id }\r\n }))\r\n } : null,\r\n deliveryOrder\r\n }, {\r\n fields: 'id'\r\n });\r\n } else {\r\n const displayOrder = getNextCalendarDisplayOrder(events.events, activeCrew);\r\n return JobProApi.calendar.update(eventId, {\r\n crew: activeCrew ? {\r\n equipment: activeCrew.equipment ? { id: activeCrew.equipment.id } : null,\r\n resources: activeCrew.resources.filter(r => !!r.resource).map(r => ({\r\n resource: { id: r.resource.id },\r\n resourcePercentage: r.resourcePercentage\r\n }))\r\n } : null,\r\n displayOrder\r\n }, {\r\n fields: 'id'\r\n });\r\n }\r\n }),\r\n map(() => reloadCalendar()),\r\n);\r\n","import React from 'react';\r\n\r\nimport CrewCapacities from '../shared/CrewCapacities';\r\nimport CrewName from '../shared/CrewName';\r\nimport Event from '../shared/Event';\r\n\r\nconst Crew = ({ active, crew, events, onCrewSelect }) => (\r\n
\r\n
onCrewSelect(crew)}>\r\n \r\n
\r\n
\r\n \r\n {events.length\r\n ? events.map((e) => )\r\n : (\r\n
\r\n No jobs are scheduled for this crew\r\n
\r\n )\r\n }\r\n
\r\n
\r\n);\r\n\r\nexport default Crew;\r\n","import React from 'react';\r\nimport { InfoWindow } from 'react-google-maps';\r\nimport styles from './Dispatcher.css';\r\n\r\nconst EventListInfoWindow = ({\r\n events,\r\n onEventClick,\r\n onPreviewEvent,\r\n ...props\r\n}) => (\r\n \r\n
\r\n {events.map(e => (\r\n onEventClick(e)}\r\n onMouseOver={() => onPreviewEvent(e)}\r\n onMouseOut={() => onPreviewEvent(null)}\r\n >\r\n {e.purchaseOrder && `${e.purchaseOrder.poNumber} - ${e.purchaseOrder.name}`}\r\n {e.job && `${e.job.jobNumber} - ${e.job.name}`}\r\n \r\n ))}\r\n
\r\n
\r\n);\r\n\r\nexport default EventListInfoWindow;\r\n","export default {\r\n path: 'M0-48c-9.8 0-17.7 7.8-17.7 17.4 0 15.5 17.7 30.6 17.7 30.6s17.7-15.4 17.7-30.6c0-9.6-7.9-17.4-17.7-17.4z',\r\n fillOpacity: 1,\r\n // labelOrigin: new google.maps.Point(0, -30),\r\n scale: 0.5,\r\n strokeWeight: 1\r\n};","/* global google */\r\nimport React from 'react';\r\nimport { Marker } from 'react-google-maps';\r\n\r\nimport markerSvg from './markerSvg';\r\n\r\nconst EventMarker = ({ event, ...props }) => (\r\n \r\n);\r\n\r\nexport default EventMarker;\r\n","import React from 'react';\r\nimport { withScriptjs, withGoogleMap, GoogleMap } from 'react-google-maps';\r\nimport MarkerClusterer from 'react-google-maps/lib/components/addons/MarkerClusterer';\r\nimport EventListInfoWindow from './EventListInfoWindow';\r\nimport EventMarker from './EventMarker';\r\n\r\nclass DispatchMap extends React.Component {\r\n\r\n constructor(props, context) {\r\n super(props, context);\r\n\r\n this.state ={\r\n infoWindowPosition: null,\r\n showInfoWindow: false\r\n };\r\n\r\n this.handleClusterClick = this.handleClusterClick.bind(this);\r\n this.handleInfoWindowClose = this.handleInfoWindowClose.bind(this);\r\n }\r\n\r\n handleClusterClick(cluster) {\r\n const markers = cluster.getMarkers();\r\n const { position } = markers[0];\r\n if (markers.every(m => m.position.equals(position))) {\r\n this.setState({\r\n infoWindowPosition: {\r\n lat: Math.round(position.lat() * 10000000) / 10000000,\r\n lng: Math.round(position.lng() * 10000000) / 10000000\r\n },\r\n showInfoWindow: true\r\n });\r\n }\r\n }\r\n\r\n handleInfoWindowClose() {\r\n this.setState({\r\n infoWindowPosition: null,\r\n showInfoWindow: false\r\n });\r\n }\r\n\r\n render() {\r\n const { defaultCenter, events, onEventClick, onPreviewEvent } = this.props;\r\n const { infoWindowPosition, showInfoWindow } = this.state;\r\n return (\r\n \r\n \r\n {events.map((e) => (\r\n onEventClick(e)}\r\n onMouseOver={() => onPreviewEvent(e)}\r\n onMouseOut={() => onPreviewEvent(null)}\r\n />\r\n ))}\r\n \r\n {showInfoWindow && (\r\n e.geoPoint.latitude === infoWindowPosition.lat && e.geoPoint.longitude === infoWindowPosition.lng)}\r\n position={infoWindowPosition}\r\n onCloseClick={this.handleInfoWindowClose}\r\n onEventClick={onEventClick}\r\n onPreviewEvent={onPreviewEvent}\r\n />\r\n )}\r\n \r\n );\r\n }\r\n\r\n}\r\n\r\nexport default withScriptjs(withGoogleMap(DispatchMap));\r\n","import React from 'react';\r\nimport { Panel } from 'react-bootstrap';\r\n\r\nimport Event from '../shared/Event';\r\n\r\nconst EventPreview = ({ event }) => (\r\n \r\n \r\n {event && }\r\n {!event && (\r\n
\r\n Mouse over a job to see details here\r\n
\r\n )}\r\n
\r\n
\r\n);\r\n\r\nexport default EventPreview;\r\n","import config from 'config.json';\r\nimport React from 'react';\r\nimport FontAwesome from 'react-fontawesome';\r\n\r\nimport Crew from './Crew';\r\nimport DispatchMap from './DispatchMap';\r\nimport EventsPreview from './EventPreview';\r\n\r\nimport styles from './Dispatcher.css';\r\n\r\nconst Dispatcher = ({\r\n activeCrew,\r\n defaultCenter,\r\n eventsByCrew,\r\n mapEvents,\r\n onCrewSelect,\r\n onDispatch,\r\n onPreviewEvent,\r\n previewEvent,\r\n unassignedEvents\r\n}) => (\r\n
\r\n
\r\n }\r\n mapElement={
}\r\n onPreviewEvent={onPreviewEvent}\r\n onEventClick={(event) => onDispatch(event.id)}\r\n loadingElement={\r\n
\r\n \r\n
\r\n }\r\n />\r\n
\r\n
\r\n \r\n
\r\n {eventsByCrew.map(({ active, crew, events }) => (\r\n \r\n ))}\r\n
\r\n
\r\n
\r\n \r\n {!!activeCrew && (\r\n c.active).crew : null}\r\n events={activeCrew ? eventsByCrew.find(c => c.active).events : []}\r\n onCrewSelect={onCrewSelect}\r\n />\r\n )}\r\n
\r\n
\r\n);\r\n\r\nexport default Dispatcher;\r\n","import { connect } from 'react-redux';\r\nimport { createSelector } from 'reselect';\r\n\r\nimport { setActiveCrew } from '../../redux/calendar';\r\nimport { dispatchEvent, previewEvent } from '../../redux/dispatcher';\r\nimport { unassignedEventsSelector, visibleEventsSelector } from '../../redux/events';\r\nimport makeEventsByCrew from '../../selectors/eventsByCrew';\r\nimport Dispatcher from './Dispatcher';\r\n\r\nconst eventsByCrew = makeEventsByCrew(false);\r\n\r\nconst mapEvents = createSelector(\r\n visibleEventsSelector,\r\n (events) => events.map((e) => ({\r\n ...e,\r\n geoPoint: (e.job && e.job.geoPoint) || (e.purchaseOrder && e.purchaseOrder.items.filter(e => e.job && e.job.geoPoint).map(e => e.job.geoPoint)[0])\r\n })).filter((e) => e.geoPoint && e.geoPoint.latitude && e.geoPoint.longitude)\r\n);\r\n\r\nconst mapStateToProps = (state) => ({\r\n ...state.dispatcher,\r\n activeCrew: state.calendar.activeCrew,\r\n date: state.calendar.date,\r\n defaultCenter: {\r\n lat: state.organization.latitude,\r\n lng: state.organization.longitude\r\n },\r\n detailEnabled: state.settings.detailEnabled,\r\n financialEnabled: state.settings.financialEnabled,\r\n materialEnabled: state.settings.materialEnabled,\r\n unassignedEvents: unassignedEventsSelector(state),\r\n eventsByCrew: eventsByCrew(state),\r\n mapEvents: mapEvents(state)\r\n});\r\n\r\nconst mapDispatchToProps = ({\r\n onDispatch: dispatchEvent,\r\n onPreviewEvent: previewEvent,\r\n onCrewSelect: setActiveCrew\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Dispatcher);\r\n","import React from 'react';\r\nimport { Media } from 'react-bootstrap';\r\nimport FontAwesome from 'react-fontawesome';\r\nimport Select from 'react-select';\r\n\r\nconst renderEquipmentOption = (e) => (\r\n \r\n {e.name}\r\n \r\n);\r\n\r\nconst filterOption = (option, filterString) =>\r\n option.name.toLocaleLowerCase().indexOf(filterString.toLocaleLowerCase()) >= 0;\r\n\r\nconst EquipmentEdit = ({ crew, equipment, onChange }) => (\r\n \r\n \r\n \r\n \r\n \r\n Equipment\r\n \r\n \r\n \r\n);\r\n\r\nexport default EquipmentEdit;\r\n","import React from 'react';\r\nimport { Col, FormControl, InputGroup, Media, Row } from 'react-bootstrap';\r\nimport FontAwesome from 'react-fontawesome';\r\nimport Select from 'react-select';\r\n\r\nconst getResourceFullName = (r) => `${r.firstName || ''} ${r.lastName || ''}`;\r\n\r\nconst filterOption = (option, filterString) =>\r\n getResourceFullName(option).toLocaleLowerCase().indexOf(filterString.toLocaleLowerCase()) >= 0;\r\n\r\nconst ResourceEdit = ({ crewResource, onChange, onDelete, resources,showpercentage }) => (\r\n \r\n \r\n
\r\n {onDelete ? : null}\r\n
\r\n \r\n Resource\r\n \r\n \r\n onChange({ resource: e, resourcePercentage: crewResource ? crewResource.resourcePercentage : null })}\r\n optionRenderer={getResourceFullName}\r\n options={resources}\r\n value={crewResource ? crewResource.resource.id : ''}\r\n valueKey=\"id\"\r\n valueRenderer={getResourceFullName}\r\n />\r\n \r\n { showpercentage && \r\n \r\n onChange({ resource: crewResource ? crewResource.resource : null, resourcePercentage: Number(e.target.value) })}\r\n value={crewResource ? crewResource.resourcePercentage || '' : ''}\r\n />\r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n
\r\n);\r\n\r\nexport default ResourceEdit;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport styles from './EditCrew.css';\r\nimport EquipmentEdit from './EquipmentEdit';\r\nimport ResourceEdit from './ResourceEdit';\r\n\r\nconst defaultCrew = {\r\n equipment: null,\r\n resources: []\r\n};\r\n\r\n/**\r\n * Component for modifying a crew's composition.\r\n */\r\nconst EditCrew = ({ crew, equipment, onChange, resources, showpercentage }) => (\r\n
\r\n onChange({ ...defaultCrew, ...crew, equipment })} />\r\n {crew && crew.resources && crew.resources.filter(r => !!r.resource).map((r, i) => (\r\n onChange({ ...defaultCrew, ...crew, resources: crew.resources.filter(r => !!r.resource).map((cr) => cr === r ? crewResource : cr ) })}\r\n onDelete={() => onChange({ ...defaultCrew, ...crew, resources: crew.resources.filter((cr) => cr !== r) })}\r\n resources={resources.filter((r2) => r2.id === r.resource.id || !crew.resources.filter(r => !!r.resource).some((cr) => r2.id === cr.resource.id))}\r\n />\r\n ))}\r\n onChange({ ...defaultCrew, ...crew, resources: [...(crew ? crew.resources : []), crewResource] })}\r\n onDelete={null}\r\n showpercentage={showpercentage}\r\n resources={resources.filter((r2) => !crew.resources.filter(r => !!r.resource).some((cr) => r2.id === cr.resource.id))}\r\n />\r\n
\r\n);\r\n\r\nEditCrew.propTypes = {\r\n crew: PropTypes.object,\r\n equipment: PropTypes.arrayOf(PropTypes.object).isRequired,\r\n onChange: PropTypes.func.isRequired,\r\n resources: PropTypes.arrayOf(PropTypes.object).isRequired\r\n}\r\n\r\nexport default EditCrew;\r\n","import React from 'react';\r\nimport { Button, Modal } from 'react-bootstrap';\r\nimport FontAwesome from 'react-fontawesome';\r\n\r\nimport EditCrew from '../../shared/EditCrew';\r\n\r\nconst CrewModal = ({ crew, equipment, onChange, onConfirm, onHide, resources, show }) => (\r\n \r\n \r\n \r\n Edit Crew\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n);\r\n\r\nexport default CrewModal;\r\n","import { connect } from 'react-redux';\r\n\r\nimport { editCrewModalConfirm, editCrewModalUpdate, toggleCrewModal } from '../../../redux/modals';\r\nimport CrewModal from './CrewModal';\r\n\r\nconst mapStateToProps = (state) => state.modals.crewModal;\r\n\r\nconst mapDispatchToProps = {\r\n onChange: editCrewModalUpdate,\r\n onConfirm: editCrewModalConfirm,\r\n onHide: () => toggleCrewModal()\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(CrewModal);\r\n","import React from 'react';\r\nimport { Button, Modal } from 'react-bootstrap';\r\nimport FontAwesome from 'react-fontawesome';\r\n\r\nconst DeleteEventModal = ({ onConfirm, onHide, show }) => (\r\n \r\n \r\n \r\n Delete Calendar Event\r\n \r\n \r\n \r\n Are you sure you want to delete this calendar event?\r\n This action cannot be undone.\r\n \r\n \r\n \r\n \r\n \r\n \r\n);\r\n\r\nexport default DeleteEventModal;\r\n","import { connect } from 'react-redux';\r\n\r\nimport { deleteEvent } from '../../../redux/calendar';\r\nimport { toggleDeleteModal } from '../../../redux/modals';\r\nimport DeleteEventModal from './DeleteEventModal';\r\n\r\nconst mapStateToProps = (state) => state.modals.deleteModal;\r\n\r\nconst mapDispatchToProps = {\r\n onConfirm: () => deleteEvent(),\r\n onHide: () => toggleDeleteModal()\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(DeleteEventModal);\r\n","import moment from 'moment';\r\nimport React from 'react';\r\nimport { Button, ControlLabel, FormGroup, InputGroup } from 'react-bootstrap';\r\nimport Datetime from 'react-datetime';\r\nimport FontAwesome from 'react-fontawesome';\r\nimport Select from 'react-select-plus';\r\n\r\nimport { formatCrewName } from '../../../utils';\r\nimport CrewName from '../CrewName';\r\nimport EditCrew from '../EditCrew';\r\n\r\nconst transformCrewToOption = (crew) => ({\r\n crew,\r\n disabled: crew.disabled,\r\n label: formatCrewName(crew),\r\n value: crew.id\r\n});\r\n\r\nconst unassignedCrewOption = {\r\n crew: null,\r\n label: 'Unassigned',\r\n value: ''\r\n};\r\n\r\nconst getCrewOptions = (purchaseOrderCrew, standardCrews) => [\r\n unassignedCrewOption,\r\n purchaseOrderCrew ? transformCrewToOption(purchaseOrderCrew) : null,\r\n { label: 'Standard Crews', options: standardCrews.map(transformCrewToOption) }\r\n].filter((e) => !!e);\r\n\r\nclass EditDelivery extends React.Component {\r\n\r\n static get propTypes() {\r\n return {\r\n\r\n };\r\n }\r\n\r\n constructor(props, context) {\r\n super(props, context);\r\n\r\n this.state = {\r\n editCrew: false\r\n };\r\n\r\n this.handleEditCrewClick = this.handleEditCrewClick.bind(this);\r\n }\r\n\r\n handleEditCrewClick() {\r\n this.setState({\r\n editCrew: true\r\n });\r\n }\r\n\r\n render() {\r\n const { equipment, onChange, purchaseOrder, resources, standardCrews } = this.props;\r\n const { editCrew } = this.state;\r\n\r\n return (\r\n
\r\n \r\n Delivery Date\r\n onChange({ ...purchaseOrder, dateDelivered: e.format('YYYY-MM-DD') })}\r\n value={purchaseOrder.dateDelivered ? moment(purchaseOrder.dateDelivered) : ''}\r\n />\r\n \r\n
\r\n {editCrew ? (\r\n onChange({ ...purchaseOrder, crew })}\r\n equipment={equipment}\r\n resources={resources}\r\n />\r\n ) : (\r\n \r\n Crew\r\n \r\n \r\n \r\n \r\n onChange({ ...purchaseOrder, crew: crew || null })}\r\n optionRenderer={(o) => o.crew ? : o.label}\r\n options={getCrewOptions(purchaseOrder.crew, standardCrews)}\r\n placeholder=\"Unassigned\"\r\n value={purchaseOrder.crew ? purchaseOrder.crew.id : ''}\r\n valueRenderer={(o) => }\r\n />\r\n \r\n \r\n )}\r\n
\r\n );\r\n }\r\n\r\n};\r\n\r\nexport default EditDelivery;\r\n","import React from 'react';\r\nimport { Button, Modal } from 'react-bootstrap';\r\nimport FontAwesome from 'react-fontawesome';\r\n\r\nimport EditDelivery from '../../shared/EditDelivery';\r\n\r\nconst DeliveryModal = ({ form, onConfirm, onHide, show, ...props }) => (\r\n \r\n \r\n \r\n Edit Delivery\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n);\r\n\r\nexport default DeliveryModal;\r\n","import { connect } from 'react-redux';\r\nimport { createSelector } from 'reselect';\r\n\r\n// import { deleteEvent, fetchCalendar, updateEvent } from '../redux/calendar';\r\nimport { deliveryModalConfirm, deliveryModalUpdate, toggleDeliveryModal } from '../../../redux/modals';\r\nimport DeliveryModal from './DeliveryModal';\r\n\r\nconst standardCrewsSelector = createSelector(\r\n state => state.standardCrews.crews,\r\n state => state.modals.deliveryModal.purchaseOrder,\r\n (standardCrews, purchaseOrder) => {\r\n const office = purchaseOrder ? purchaseOrder.office : null;\r\n return standardCrews\r\n .filter(c => c.deliveryCrew)\r\n .map(c => ({\r\n ...c,\r\n disabled: !!office && !!c.office && c.office.id !== office.id\r\n }));\r\n }\r\n);\r\n\r\nconst mapStateToProps = state => ({\r\n ...state.modals.deliveryModal,\r\n standardCrews: standardCrewsSelector(state)\r\n});\r\n\r\nconst mapDispatchToProps = {\r\n onChange: deliveryModalUpdate,\r\n onConfirm: deliveryModalConfirm,\r\n onHide: () => toggleDeliveryModal()\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(DeliveryModal);\r\n","import React from 'react';\r\nimport FontAwesome from 'react-fontawesome';\r\nimport Select from 'react-select-plus';\r\n\r\nconst jobStatusOption = (jobStatus) => (\r\n \r\n \r\n {` ${jobStatus.status}`}\r\n \r\n);\r\n\r\nconst JobStatusDropdown = ({ jobStatuses, ...props }) => (\r\n \r\n);\r\n\r\nexport default JobStatusDropdown;\r\n","import moment from 'moment';\r\nimport React from 'react';\r\nimport {\r\n Button,\r\n Col,\r\n ControlLabel,\r\n FormControl,\r\n FormGroup,\r\n InputGroup,\r\n Row\r\n} from 'react-bootstrap';\r\nimport Datetime from 'react-datetime';\r\nimport FontAwesome from 'react-fontawesome';\r\nimport Select from 'react-select-plus';\r\nimport { formatCrewName } from '../../../utils';\r\nimport CrewName from '../CrewName';\r\nimport EditCrew from '../EditCrew';\r\nimport JobStatusDropdown from '../JobStatusDropdown';\r\nimport styled from 'styled-components';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport Timekeeper from 'react-timekeeper';\r\n\r\nconst TimeContainer = styled.div`\r\n position: absolute;\r\n display: block;\r\n z-index: 2;\r\n`;\r\n\r\nconst TimeDisplayContainer = styled.div`\r\n text-align: center;\r\n font-weight: bold;\r\n cursor: pointer;\r\n border-radius: 2px;\r\n -webkit-box-shadow: 2px 2px 15px 0 rgba(0, 0, 0, .15);\r\n height: 50px;\r\n line-height: 50px;\r\n width: 260px;\r\n`;\r\n\r\nconst TimeResetContainer = styled.div`\r\n text-align: center;\r\n font-weight: bold;\r\n color: #EE0303;\r\n font-size: 9px;\r\n height: 20px;\r\n line-height: 20px;\r\n width: 260px;\r\n cursor: pointer;\r\n`;\r\n\r\nconst defaultCrew = {\r\n equipment: null,\r\n resources: []\r\n};\r\n\r\nconst transformCrewToOption = (crew) => ({\r\n crew,\r\n disabled: crew.disabled,\r\n label: formatCrewName(crew),\r\n value: crew.id\r\n});\r\n\r\nconst unassignedCrewOption = {\r\n crew: null,\r\n label: 'Unassigned',\r\n value: ''\r\n};\r\n\r\nconst getCrewOptions = (jobCrews, standardCrews) => [\r\n unassignedCrewOption,\r\n { label: 'Job Crews', options: jobCrews.map(transformCrewToOption) },\r\n { label: 'Standard Crews', options: standardCrews.map(transformCrewToOption) }\r\n];\r\n\r\nclass EditEvent extends React.Component {\r\n\r\n constructor(props){\r\n super(props);\r\n this.state = {\r\n displayTimepicker: false,\r\n startTime: props.event.startTime ? moment(props.event.startTime, 'HH:mm:ss').format('hh:mma') : '',\r\n endTime: props.event.endTime ? moment(props.event.endTime, 'HH:mm:ss').format('hh:mma') : ''\r\n };\r\n\r\n this._startTimeChecker = this.startTimeChecker.bind(this);\r\n this._endTimeChecker = this.endTimeChecker.bind(this);\r\n this._resetTime = this.resetTime.bind(this);\r\n } \r\n\r\n static get propTypes() {\r\n return {\r\n event: PropTypes.object.isRequired\r\n };\r\n }\r\n\r\n componentWillReceiveProps(nextProps) {\r\n if (nextProps.event !== this.props.event) {\r\n this.setState({\r\n startTime: nextProps.event.startTime ? moment(nextProps.event.startTime, 'HH:mm:ss').format('hh:mma') : '',\r\n endTime : nextProps.event.endTime ? moment(nextProps.event.endTime, 'HH:mm:ss').format('hh:mma') : ''\r\n });\r\n }\r\n }\r\n\r\n toggleTimekeeper(val){\r\n this.setState({displayTimepicker: val})\r\n }\r\n\r\n resetTime(w){\r\n const {onChange, event } = this.props;\r\n if(w === 'start'){\r\n onChange({ event, startTime: null });\r\n this.setState({startTime: '' });\r\n }\r\n else{\r\n onChange({ event, endTime: null });\r\n this.setState({endTime: '' }); \r\n }\r\n }\r\n\r\n startTimeChecker(e){\r\n const { onChange, event } = this.props;\r\n\r\n var newStartTime = moment(e.hour + ':' + e.minute + e.meridiem, 'h:mma');\r\n\r\n if(newStartTime.isAfter(moment(this.state.endTime, 'hh:mma'))){\r\n onChange({ event, endTime: moment(e.hour + ':' + e.minute + e.meridiem, 'h:mma').format('HH:mm:ss') });\r\n this.setState({endTime: newStartTime.format('hh:mma')});\r\n }\r\n onChange({ event, startTime: moment(e.hour + ':' + e.minute + e.meridiem, 'h:mma').format('HH:mm:ss') });\r\n this.setState({startTime: newStartTime.format('hh:mma')});\r\n }\r\n\r\n endTimeChecker(e){\r\n const { onChange, event } = this.props;\r\n\r\n var newEndTime = moment(e.hour + ':' + e.minute + e.meridiem, 'h:mma');\r\n\r\n if(newEndTime.isBefore(moment(this.state.startTime, 'hh:mma'))){\r\n onChange({ event, startTime: moment(e.hour + ':' + e.minute + e.meridiem, 'h:mma').format('HH:mm:ss') });\r\n this.setState({endTime: newEndTime.format('hh:mma')});\r\n }\r\n onChange({ event, endTime: moment(e.hour + ':' + e.minute + e.meridiem, 'h:mma').format('HH:mm:ss') });\r\n this.setState({endTime: newEndTime.format('hh:mma')});\r\n }\r\n\r\n render() {\r\n\r\n const {\r\n equipment,\r\n event,\r\n isEditCrewEnabled,\r\n jobCrews,\r\n jobStatuses,\r\n onChange,\r\n onToggleEditCrew,\r\n resources,\r\n standardCrews\r\n } = this.props \r\n \r\n return (\r\n
\r\n \r\n \r\n \r\n Start Date/Time\r\n \r\n event.endDate ? !value.isAfter(event.endDate) : true\r\n }\r\n timeFormat={false}\r\n onChange={(e) => onChange({ startDate: e.format('YYYY-MM-DD') })}\r\n value={event.startDate ? moment(event.startDate) : ''}\r\n />\r\n {this.state.displayTimepicker ?\r\n \r\n {\r\n this.toggleTimekeeper(false)\r\n }}\r\n config={{\r\n TIMEPICKER_BACKGROUND: 'white',\r\n DONE_BUTTON_COLOR: '#64c9f1',\r\n DONE_BUTTON_BORDER_COLOR: '#ededed'\r\n }} \r\n onChange={(e) => this._startTimeChecker(e)}\r\n />\r\n \r\n : false}\r\n this.toggleTimekeeper(true)}>\r\n {event.startTime ? moment(event.startTime, 'HH:mm:ss').format('hh:mma') : ''}\r\n \r\n this._resetTime('start')}>\r\n reset\r\n \r\n \r\n \r\n \r\n \r\n End Date/Time\r\n \r\n event.startDate ? !value.isBefore(event.startDate) : true\r\n }\r\n onChange={(e) => onChange({ endDate: e.format('YYYY-MM-DD') })}\r\n timeFormat={false}\r\n value={event.endDate ? moment(event.endDate) : moment(Date())}\r\n />\r\n {this.state.displayTimepicker ?\r\n \r\n {\r\n this.toggleTimekeeper(false)\r\n }}\r\n config={{\r\n TIMEPICKER_BACKGROUND: 'white',\r\n DONE_BUTTON_COLOR: '#64c9f1',\r\n DONE_BUTTON_BORDER_COLOR: '#ededed'\r\n }} \r\n onChange={(e) => this._endTimeChecker(e)}\r\n />\r\n \r\n : false}\r\n this.toggleTimekeeper(true)}>\r\n {event.endTime ? moment(event.endTime, 'HH:mm:ss').format('hh:mma') : ''}\r\n \r\n this._resetTime('end')}>\r\n reset\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Description\r\n onChange({ description: e.target.value })}\r\n rows={3}\r\n value={event.description || ''}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n Job Status\r\n onChange({ jobStatus: js || null })}\r\n value={event.jobStatus}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n Job Priority Notes\r\n onChange({ jobPriorityNotes: e.target.value })}\r\n rows={3}\r\n value={event.jobPriorityNotes || ''}\r\n />\r\n \r\n \r\n \r\n
\r\n {isEditCrewEnabled ? (\r\n onChange({ crew })}\r\n equipment={equipment}\r\n resources={resources}\r\n showpercentage={true}\r\n />\r\n ) : (\r\n \r\n Crew\r\n \r\n \r\n \r\n \r\n onChange({ crew: crew || null })}\r\n optionRenderer={(o) =>\r\n o.crew ? : o.label\r\n }\r\n options={getCrewOptions(jobCrews, standardCrews)}\r\n placeholder=\"Unassigned\"\r\n value={event.crew ? event.crew.id : ''}\r\n valueRenderer={(o) => }\r\n />\r\n \r\n \r\n )}\r\n
\r\n );\r\n }\r\n\r\n};\r\nexport default EditEvent;\r\n","import React from \"react\";\r\n\r\nimport styles from './LoadingSpinner.css';\r\n\r\nconst LoadingSpinner = () => (\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n);\r\n\r\nexport default LoadingSpinner;\r\n","import React from 'react';\r\nimport { Button, Modal } from 'react-bootstrap';\r\nimport FontAwesome from 'react-fontawesome';\r\n\r\nimport EditEvent from '../../shared/EditEvent';\r\nimport LoadingSpinner from '../../shared/LoadingSpinner';\r\n\r\nconst EditEventModal = ({ form, loading, onConfirm, onHide, show, ...props }) => (\r\n \r\n \r\n \r\n Edit Calendar Event\r\n \r\n \r\n \r\n {loading && }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n);\r\n\r\nexport default EditEventModal;\r\n","import { connect } from 'react-redux';\r\nimport {\r\n editEventModalUpdate,\r\n editModalConfirm,\r\n editModalSelector,\r\n toggleEditCrew,\r\n toggleEditModal\r\n} from '../../../redux/modals';\r\nimport EditEventModal from './EditEventModal';\r\n\r\nconst mapStateToProps = editModalSelector;\r\n\r\nconst mapDispatchToProps = {\r\n onChange: editEventModalUpdate,\r\n onConfirm: editModalConfirm,\r\n onHide: () => toggleEditModal(),\r\n onToggleEditCrew: toggleEditCrew\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(EditEventModal);\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nfunction ordinal(i) {\r\n const j = i % 10, k = i % 100;\r\n if (j === 1 && k !== 11) {\r\n return `${i}st`;\r\n }\r\n if (j === 2 && k !== 12) {\r\n return `${i}nd`;\r\n }\r\n if (j === 3 && k !== 13) {\r\n return `${i}rd`;\r\n }\r\n return `${i}th`;\r\n}\r\n\r\nconst Ordinal = ({ value }) => {ordinal(value)};\r\n\r\nOrdinal.propTypes = {\r\n value: PropTypes.number.isRequired\r\n};\r\n\r\nexport default Ordinal;\r\n","import React from 'react';\r\nimport pluralize from 'pluralize';\r\nimport { Badge, Button, Col, Media, Panel, PanelGroup, Row } from 'react-bootstrap';\r\nimport FontAwesome from 'react-fontawesome';\r\nimport Ordinal from '../../shared/Ordinal';\r\n\r\nconst LoadReport = ({ loadReport, onSkipItem, showConsolidatedLoad }) => {\r\n if (!loadReport.length) {\r\n return
No deliveries are scheduled today
;\r\n }\r\n\r\n return (\r\n
\r\n
\r\n The load report lists deliveries grouped by equipment.\r\n Material is grouped by delivery in reverse order.\r\n Clicking the equipment name will collapse the equipment for easier viewing.\r\n
\r\n \r\n {loadReport.map(e => (\r\n \r\n \r\n {e.equipment.name}\r\n \r\n \r\n \r\n \r\n \r\n

Original Load

\r\n {e.purchaseOrders.map((p, i, a) => (\r\n \r\n \r\n \r\n Stop {p.poNumber}\r\n \r\n
    \r\n {p.items.map(i => (\r\n
  • \r\n {i.item.name}: {i.quantity} {pluralize(i.item.itemType.inventoryQuantityLabel || '')}\r\n
  • \r\n ))}\r\n
\r\n
\r\n
\r\n ))}\r\n \r\n {showConsolidatedLoad && (\r\n \r\n

Conslidated Load

\r\n {e.consolidatedLoad.map((p, i, a) => (\r\n \r\n \r\n \r\n Stop {p.poNumber}\r\n \r\n
    \r\n {p.items.map(i => (\r\n
  • \r\n {i.consolidated && (\r\n \r\n )}\r\n {i.item.name}: {i.quantity} {pluralize(i.item.itemType.inventoryQuantityLabel || '')}\r\n
  • \r\n ))}\r\n
\r\n
\r\n
\r\n ))}\r\n \r\n )}\r\n
\r\n
\r\n
\r\n \r\n ))}\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default LoadReport;\r\n","import React from 'react';\r\nimport { Button, Modal } from 'react-bootstrap';\r\nimport FontAwesome from 'react-fontawesome';\r\n\r\nimport LoadReport from './LoadReport';\r\n\r\nconst LoadReportModal = ({ loadReport, onHide, onSkipItem, show, showConsolidatedLoad }) => (\r\n \r\n \r\n \r\n Load Report\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n);\r\n\r\nexport default LoadReportModal;\r\n","import { connect } from 'react-redux';\r\n\r\nimport { loadReportModalSelector, skipItem, toggleLoadReportModal } from '../../../redux/modals';\r\nimport LoadReportModal from './LoadReportModal';\r\n\r\nconst mapStateToProps = loadReportModalSelector;\r\n\r\nconst mapDispatchToProps = {\r\n onHide: toggleLoadReportModal,\r\n onSkipItem: skipItem\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(LoadReportModal);\r\n","import { connect } from 'react-redux';\r\nimport PrintWorkOrderModal from './PrintWorkOrderModal';\r\nimport { changeWorkOrderTemplate, close, confirm } from '../../../redux/modals/printWorkOrderModal'\r\n\r\nconst mapStateToProps = state => ({\r\n ...state.modals.printWorkOrderModal,\r\n templates: state.workOrders.workOrderTemplates\r\n});\r\n\r\nconst mapDispatchToProps = {\r\n onConfirm: confirm,\r\n onHide: close,\r\n onWorkOrderTemplateChange: changeWorkOrderTemplate\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(PrintWorkOrderModal);\r\n","import React from 'react';\r\nimport { Button, ControlLabel, FormControl, FormGroup, Modal } from 'react-bootstrap';\r\n\r\nexport default ({\r\n jobs,\r\n onConfirm,\r\n onHide,\r\n onWorkOrderTemplateChange,\r\n show,\r\n templates,\r\n workOrderTemplateId\r\n}) => (\r\n \r\n \r\n Print Work Order\r\n \r\n \r\n {templates.length > 1 && (\r\n \r\n Work Order Template\r\n onWorkOrderTemplateChange((e.target.value))}\r\n value={workOrderTemplateId || ''}\r\n >\r\n {templates.map(t => )}\r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n);\r\n","import classNames from 'classnames';\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst colorOptions = [\r\n 'primary',\r\n 'info',\r\n 'success',\r\n 'warning',\r\n 'danger',\r\n 'default'\r\n];\r\n\r\nclass Switch extends React.Component {\r\n\r\n static get defaultProps() {\r\n return {\r\n animate: true,\r\n disabled: false,\r\n indeterminate: false,\r\n labelText: ' ',\r\n offColor: 'default',\r\n offText: 'OFF',\r\n onColor: 'primary',\r\n onText: 'ON',\r\n readonly: false,\r\n size: 'normal'\r\n };\r\n }\r\n\r\n static get propTypes() {\r\n return {\r\n animate: PropTypes.bool,\r\n disabled: PropTypes.bool,\r\n indeterminate: PropTypes.bool,\r\n labelText: PropTypes.string,\r\n offColor: PropTypes.oneOf(colorOptions),\r\n offText: PropTypes.string,\r\n onChange: PropTypes.func,\r\n onColor: PropTypes.oneOf(colorOptions),\r\n onText: PropTypes.string,\r\n readonly: PropTypes.bool,\r\n size: PropTypes.oneOf(['mini', 'small', 'normal', 'large']),\r\n value: PropTypes.bool.isRequired\r\n };\r\n }\r\n\r\n constructor(props, context) {\r\n super(props, context);\r\n\r\n this._handleToggle = this.handleToggle.bind(this);\r\n }\r\n\r\n handleToggle() {\r\n !this.props.disabled && !this.props.readonly && this.props.onChange && this.props.onChange(!this.props.value);\r\n }\r\n\r\n render() {\r\n const {\r\n animate,\r\n disabled,\r\n indeterminate,\r\n labelText,\r\n offColor,\r\n offText,\r\n onColor,\r\n onText,\r\n readonly,\r\n size,\r\n value\r\n } = this.props;\r\n\r\n const className = classNames('bootstrap-switch', 'bootstrap-switch-wrapper', {\r\n 'bootstrap-switch-animate': animate\r\n }, {\r\n 'bootstrap-switch-disabled': disabled\r\n }, {\r\n 'bootstrap-switch-indeterminate': indeterminate\r\n }, {\r\n 'bootstrap-switch-off': !value\r\n }, {\r\n 'bootstrap-switch-on': value\r\n }, {\r\n 'bootstrap-switch-readonly': readonly\r\n }, {\r\n [`bootstrap-switch-${size}`]: size\r\n });\r\n\r\n const containerMarginLeft = value\r\n ? '0px'\r\n : '-53px';\r\n\r\n return (\r\n
\r\n
\r\n \r\n {onText}\r\n \r\n {labelText || ' '}\r\n \r\n {offText}\r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default Switch;\r\n","import React from 'react';\r\nimport { Button, ControlLabel, FormControl, FormGroup, Panel, PanelGroup, Modal } from 'react-bootstrap';\r\nimport Switch from '../../shared/Switch';\r\n\r\nconst Toggle = ({ on, onChange }) => (\r\n \r\n);\r\n\r\nconst displayToggleWrapperStyle = {\r\n margin: '5px'\r\n};\r\nconst displayToggleLabelStyle = {\r\n marginLeft: '5px'\r\n};\r\nconst displayToggleSwitchStyle = {\r\n};\r\nconst DisplayToggle = ({ label, on, onChange, onText,offText }) => (\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n);\r\n\r\nexport default ({\r\n fields,\r\n onHide,\r\n onUpdateField,\r\n show\r\n}) => (\r\n \r\n \r\n Settings\r\n \r\n \r\n {Object.keys(fields).map(k => (\r\n \r\n {fields[k].label}\r\n \r\n {Object.keys(fields[k].fields).map(k2 => (\r\n onUpdateField(`${k}.fields.${k2}`, { visible })}\r\n />\r\n ))}\r\n \r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n \r\n);\r\n","import { connect } from 'react-redux';\r\nimport { fieldsSelector, updateField } from '../../../redux/settings';\r\nimport { close } from '../../../redux/modals/settingsModal';\r\nimport SettingsModal from './SettingsModal';\r\n\r\nconst mapStateToProps = state => ({\r\n fields: fieldsSelector(state) || {},\r\n show: state.modals.settingsModal.show\r\n});\r\n\r\nconst mapDispatchToProps = {\r\n onHide: close,\r\n onUpdateField: updateField\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(SettingsModal);\r\n","import React from 'react';\r\nimport FontAwesome from 'react-fontawesome';\r\nimport Select from 'react-select-plus';\r\n\r\nconst appointmentTypesOption = (appointmentType) => (\r\n \r\n \r\n {` ${appointmentType.name}`}\r\n \r\n);\r\n\r\nconst AppointmentTypesDropdown = ({ appointmentTypes, ...props }) => (\r\n \r\n);\r\n\r\nexport default AppointmentTypesDropdown;\r\n","import React from 'react';\r\nimport FontAwesome from 'react-fontawesome';\r\nimport Select from 'react-select-plus';\r\n\r\nconst employeeOption = (employee) => (\r\n \r\n \r\n {` ${employee.firstName +' '+ employee.lastName }` }\r\n \r\n);\r\n\r\nconst EmployeesDropdown = ({employees, ...props }) => (\r\n onFormUpdate({ employees: e })}\r\n />\r\n);\r\n\r\nexport default EmployeesDropdown;\r\n","import moment from 'moment';\r\nimport React from 'react';\r\nimport {\r\n Button,\r\n Col,\r\n ControlLabel,\r\n FormControl,\r\n FormGroup,\r\n InputGroup,\r\n Row\r\n} from 'react-bootstrap';\r\nimport Datetime from 'react-datetime';\r\nimport FontAwesome from 'react-fontawesome';\r\nimport Select from 'react-select-plus';\r\nimport { Async } from 'react-select-plus';\r\nimport { formatCrewName } from '../../../utils';\r\nimport CrewName from '../CrewName';\r\nimport EditCrew from '../EditCrew';\r\nimport AppointmentTypesDropDown from '../AppointmentTypesDropDown';\r\nimport CustomersDropdown from '../DropDowns/CustomersDropDown';\r\nimport DatasheetsDropdown from '../DropDowns/DatasheetsDropDown';\r\nimport styled from 'styled-components';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport Timekeeper from 'react-timekeeper';\r\nimport EmployeesDropdown from '../DropDowns/EmployeeDropDown';\r\nimport { searchDatasheets } from '../../../redux/searchAppointments';\r\nimport { searchCustomers } from '../../../redux/searchAppointments';\r\nimport Crew from '../../DayView/Crew';\r\n\r\nconst TimeContainer = styled.div`\r\n position: absolute;\r\n display: block;\r\n z-index: 2;\r\n`;\r\n\r\nconst TimeDisplayContainer = styled.div`\r\n text-align: center;\r\n font-weight: bold;\r\n cursor: pointer;\r\n border-radius: 2px;\r\n -webkit-box-shadow: 2px 2px 15px 0 rgba(0, 0, 0, .15);\r\n height: 50px;\r\n line-height: 50px;\r\n width: 260px;\r\n`;\r\n\r\nconst TimeResetContainer = styled.div`\r\n text-align: center;\r\n font-weight: bold;\r\n color: #EE0303;\r\n font-size: 9px;\r\n height: 20px;\r\n line-height: 20px;\r\n width: 260px;\r\n cursor: pointer;\r\n`;\r\n\r\nconst Span = styled.span`\r\npadding: 6px;\r\nmargin-top: 5px;\r\nborder: 1px solid;\r\nborder-color: #c7bebe;\r\nposition: absolute;\r\ntop: -5px;\r\nwidth: 530px;\r\nborder-radius: 0px 5px 5px 0px;\r\n`\r\n\r\nconst defaultCrew = {\r\n equipment: null,\r\n resources: []\r\n};\r\n\r\nconst transformCrewToOption = (crew) => ({\r\n crew,\r\n disabled: crew.disabled,\r\n label: formatCrewName(crew),\r\n value: crew.id\r\n});\r\n\r\nconst unassignedCrewOption = {\r\n crew: null,\r\n label: 'Unassigned',\r\n value: ''\r\n};\r\n\r\nconst getCrewOptions = (eventCrews, standardCrews) => [\r\n unassignedCrewOption,\r\n { label: 'Event Crews', options: eventCrews !=null ? eventCrews.map(transformCrewToOption):\"\" },\r\n { label: 'Standard Crews', options: standardCrews.size >0 ? standardCrews.map(transformCrewToOption):\"\" }\r\n];\r\n\r\nclass AppointmentCalendar extends React.Component {\r\n\r\n constructor(props){\r\n super(props);\r\n this.state = {\r\n displayTimepicker: false,\r\n startTime: props.event.startTime ? moment(props.event.startTime, 'HH:mm:ss').format('hh:mma') : '',\r\n endTime: props.event.endTime ? moment(props.event.endTime, 'HH:mm:ss').format('hh:mma') : ''\r\n };\r\n\r\n this._startTimeChecker = this.startTimeChecker.bind(this);\r\n this._endTimeChecker = this.endTimeChecker.bind(this);\r\n this._resetTime = this.resetTime.bind(this);\r\n } \r\n\r\n /*static get propTypes() {\r\n return {\r\n event: PropTypes.object.isRequired\r\n };\r\n }*/\r\n\r\n componentWillReceiveProps(nextProps) {\r\n if (nextProps.event !== this.props.event) {\r\n this.setState({\r\n startTime: nextProps.event.startTime ? moment(nextProps.event.startTime, 'HH:mm:ss').format('hh:mma') : '',\r\n endTime : nextProps.event.endTime ? moment(nextProps.event.endTime, 'HH:mm:ss').format('hh:mma') : ''\r\n });\r\n }\r\n }\r\n\r\n toggleTimekeeper(val){\r\n this.setState({displayTimepicker: val})\r\n }\r\n\r\n resetTime(w){\r\n const {onChange, event } = this.props;\r\n if(w === 'start'){\r\n onChange({ event, startTime: null });\r\n this.setState({startTime: '' });\r\n }\r\n else{\r\n onChange({ event, endTime: null });\r\n this.setState({endTime: '' }); \r\n }\r\n }\r\n\r\n startTimeChecker(e){\r\n const { onChange, event } = this.props;\r\n\r\n var newStartTime = moment(e.hour + ':' + e.minute + e.meridiem, 'h:mma');\r\n\r\n if(newStartTime.isAfter(moment(this.state.endTime, 'hh:mma'))){\r\n onChange({ event, endTime: moment(e.hour + ':' + e.minute + e.meridiem, 'h:mma').format('HH:mm:ss') });\r\n this.setState({endTime: newStartTime.format('hh:mma')});\r\n }\r\n onChange({ event, startTime: moment(e.hour + ':' + e.minute + e.meridiem, 'h:mma').format('HH:mm:ss') });\r\n this.setState({startTime: newStartTime.format('hh:mma')});\r\n }\r\n\r\n endTimeChecker(e){\r\n const { onChange, event } = this.props;\r\n\r\n var newEndTime = moment(e.hour + ':' + e.minute + e.meridiem, 'h:mma');\r\n\r\n if(newEndTime.isBefore(moment(this.state.startTime, 'hh:mma'))){\r\n onChange({ event, startTime: moment(e.hour + ':' + e.minute + e.meridiem, 'h:mma').format('HH:mm:ss') });\r\n this.setState({endTime: newEndTime.format('hh:mma')});\r\n }\r\n onChange({ event, endTime: moment(e.hour + ':' + e.minute + e.meridiem, 'h:mma').format('HH:mm:ss') });\r\n this.setState({endTime: newEndTime.format('hh:mma')});\r\n }\r\n\r\n render() {\r\n\r\n const { \r\n equipment, \r\n event,\r\n isApptEditCrewEnabled,\r\n customers, \r\n datasheets, \r\n onChange,\r\n onToggleEditCrew,\r\n appointmentTypes,\r\n resources,\r\n eventCrews,\r\n standardCrews, \r\n onSearchCustomers,\r\n onSearchDatasheets,\r\n\r\n \r\n } = this.props \r\n \r\n \r\n var selected_option = appointmentTypes.filter(option => \r\n option.name === event.apptType); \r\n\r\n if(!event.appointmentType)\r\n {\r\n event.appointmentType = selected_option[0];\r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n Start Date/Time\r\n \r\n event.endDate ? !value.isAfter(event.endDate) : true\r\n }\r\n timeFormat={false}\r\n onChange={(e) => onChange({ startDate: e.format('YYYY-MM-DD') })}\r\n value={event.startDate ? moment(event.startDate) : moment(Date())}\r\n />\r\n {this.state.displayTimepicker ?\r\n \r\n {\r\n this.toggleTimekeeper(false)\r\n }}\r\n config={{\r\n TIMEPICKER_BACKGROUND: 'white',\r\n DONE_BUTTON_COLOR: '#64c9f1',\r\n DONE_BUTTON_BORDER_COLOR: '#ededed'\r\n }} \r\n onChange={(e) => this._startTimeChecker(e)}\r\n />\r\n \r\n : false}\r\n \r\n this.toggleTimekeeper(true)}>\r\n {event.startTime ? moment(event.startTime, 'HH:mm:ss').format('hh:mma') : ''}\r\n \r\n this._resetTime('start')}>\r\n reset\r\n \r\n \r\n \r\n \r\n \r\n End Date/Time\r\n \r\n event.startDate ? !value.isBefore(event.startDate) : true\r\n }\r\n onChange={(e) => onChange({ endDate: e.format('YYYY-MM-DD') })}\r\n timeFormat={false}\r\n value={event.endDate ? moment(event.endDate) : moment(Date())}\r\n />\r\n {this.state.displayTimepicker ?\r\n \r\n {\r\n this.toggleTimekeeper(false)\r\n }}\r\n config={{\r\n TIMEPICKER_BACKGROUND: 'white',\r\n DONE_BUTTON_COLOR: '#64c9f1',\r\n DONE_BUTTON_BORDER_COLOR: '#ededed'\r\n }} \r\n onChange={(e) => this._endTimeChecker(e)}\r\n />\r\n \r\n : false}\r\n this.toggleTimekeeper(true)}>\r\n {event.endTime ? moment(event.endTime, 'HH:mm:ss').format('hh:mma') : ''}\r\n \r\n this._resetTime('end')}>\r\n reset\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Description\r\n onChange({ description: e.target.value })}\r\n rows={3}\r\n value={event.description || ''}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n Appointment Types\r\n onChange({ appointmentType: ap || null })}\r\n value={event.appointmentType?event.appointmentType.id:''}\r\n valueKey=\"id\"\r\n /> \r\n \r\n \r\n Customer\r\n onChange({ customer: c || null })} \r\n \r\n onInputChange={onSearchCustomers}\r\n onOpen={onSearchCustomers}\r\n loadOptions={()=>searchCustomers(event.customer?event.customer.name:\"\")}\r\n defaultOptions\r\n value={event.customer?event.customer:''}\r\n valueKey=\"id\"\r\n /> \r\n \r\n\r\n \r\n Datasheet\r\n onChange({ datasheet: c || null })} \r\n onInputChange={onSearchDatasheets}\r\n loadOptions={()=>searchDatasheets(event.datasheet?event.datasheet.name:\"\")}\r\n defaultOptions\r\n onOpen={onSearchDatasheets} \r\n \r\n value = {event.datasheet?event.datasheet:'' } \r\n valueKey=\"id\"\r\n /> \r\n \r\n \r\n \r\n \r\n
\r\n {isApptEditCrewEnabled ? (\r\n onChange({ crew })}\r\n showpercentage = {false}\r\n equipment={equipment !=null ?equipment:[]}\r\n resources={resources!=null ? resources:[]}\r\n />\r\n ) : (\r\n \r\n Crew\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n )}\r\n \r\n
\r\n );\r\n }\r\n\r\n};\r\nexport default AppointmentCalendar;\r\n","import React from 'react';\r\nimport { Button, Modal } from 'react-bootstrap';\r\nimport FontAwesome from 'react-fontawesome';\r\n\r\nimport AppointmentCalendar from '../../shared/AppointmentCalendar';\r\nimport LoadingSpinner from '../../shared/LoadingSpinner';\r\nimport { editAppointmentModal,editAppointmentModalConfirm,editAppointmentModalUpdateConfirm } from '../../../redux/modals';\r\n\r\n\r\n\r\n\r\nconst AppointmentCalendarModal = ({ form, loading, onConfirm, onEditConfirm, onHide, show, ...props }) => { \r\n \r\n \r\n return (\r\n \r\n \r\n \r\n {form.id ?\"Edit Calendar Event\":\"Add Calendar Event\"} \r\n \r\n \r\n \r\n {loading && }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n)};\r\n\r\nexport default AppointmentCalendarModal;\r\n","import { connect } from 'react-redux';\r\nimport {\r\n editAppointmentModalUpdate,\r\n editAppointmentModalConfirm, \r\n toggleApptEditCrew,\r\n editAppointmentModalUpdateConfirm,\r\n toggleAppointmentModal, \r\n \r\n} from '../../../redux/modals';\r\nimport AppointmentCalendarModal from './AppointmentCalendarModal';\r\nimport { searchCustomers,searchDatasheets } from '../../../redux/searchAppointments';\r\n\r\nimport { toggleAppointmentCrew } from '../../../redux/modals/appintmentCalendarModal';\r\n\r\n\r\nconst mapStateToProps = (state) => ({\r\n ...state,\r\n show: state.modals.appintmentCalendarModal.show, \r\n loading:state.modals.appintmentCalendarModal.loading, \r\n appointmentTypes:state.dropdowns.appointmentTypes,\r\n customers:state.searchAppointments.customers, \r\n equipment:state.modals.appintmentCalendarModal.equipment,\r\n resources:state.modals.appintmentCalendarModal.resources,\r\n datasheets:state.searchAppointments.datasheets,\r\n employees:state.searchEmployees.employees,\r\n isApptEditCrewEnabled:state.modals.appintmentCalendarModal.isApptEditCrewEnabled,\r\n form:state.modals.appintmentCalendarModal.form,\r\n \r\n});\r\n\r\nconst mapDispatchToProps = {\r\n onChange: editAppointmentModalUpdate,\r\n //onConfirm: (evt)=> Object.keys(evt).length===0? editAppointmentModalConfirm:editAppointmentModalUpdateConfirm,\r\n onConfirm:editAppointmentModalConfirm,\r\n onEditConfirm:editAppointmentModalUpdateConfirm,\r\n onHide: () => toggleAppointmentModal({show:false}),\r\n onToggleEditCrew: toggleAppointmentCrew,\r\n onSearchCustomers: searchCustomers,\r\n onSearchDatasheets:searchDatasheets,\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(AppointmentCalendarModal);\r\n","import moment from 'moment';\r\nimport React from 'react';\r\n\r\nimport styles from './MonthView.css';\r\n\r\nconst Cell = ({ date, events, inactive, ...props }) => (\r\n
\r\n
{moment(date).format('D')}
\r\n {events.filter((e) => e.job).length} Jobs
\r\n {events.filter((e) => e.purchaseOrder).length} Deliveries
\r\n {events.filter((e) => e.bid).length} Bids\r\n
\r\n);\r\n\r\nexport default Cell;\r\n","import moment from 'moment';\r\nimport React from 'react';\r\nimport Cell from './Cell';\r\nimport styles from './MonthView.css';\r\n\r\nconst MonthView = ({ className = '', date, events, onNavigate }) => {\r\n const startMonth = moment(date).startOf('month');\r\n const endMonth = moment(date).endOf('month');\r\n const currentWeek = startMonth.clone().startOf('week');\r\n\r\n const weeks = [];\r\n while (currentWeek.isBefore(endMonth)) {\r\n const days = [];\r\n const startWeek = currentWeek.clone().startOf('week');\r\n const endWeek = currentWeek.clone().endOf('week');\r\n const currentDay = startWeek.clone();\r\n while (currentDay.isBefore(endWeek)) {\r\n days.push({\r\n date: currentDay.format(),\r\n events: events.filter(\r\n (e) =>\r\n !currentDay.isBefore(e.startDate) && !currentDay.isAfter(e.endDate)\r\n ),\r\n inactive:\r\n currentDay.isBefore(startMonth) || currentDay.isAfter(endMonth)\r\n });\r\n currentDay.add(1, 'day');\r\n }\r\n weeks.push(days);\r\n currentWeek.add(1, 'week');\r\n }\r\n\r\n return (\r\n
\r\n
\r\n
Sunday
\r\n
Monday
\r\n
Tuesday
\r\n
Wednesday
\r\n
Thursday
\r\n
Friday
\r\n
Saturday
\r\n
\r\n {weeks.map((days, i) => (\r\n
\r\n {days.map(({ date, events, inactive }) => (\r\n onNavigate(date, 'day')}\r\n />\r\n ))}\r\n
\r\n ))}\r\n
\r\n );\r\n};\r\n\r\nexport default MonthView;\r\n","import { connect } from 'react-redux';\r\n\r\nimport { fetchCalendar } from '../../redux/calendar';\r\nimport MonthView from './MonthView';\r\n\r\nconst mapStateToProps = (state) => ({\r\n date: state.calendar.date,\r\n events: state.events.events\r\n});\r\n\r\nconst mapDispatchToProps = {\r\n onNavigate: fetchCalendar\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(MonthView);\r\n","import React from 'react';\r\nimport { Col, ControlLabel, Form, FormControl, FormGroup, HelpBlock } from 'react-bootstrap';\r\nimport Currency from '../shared/Currency';\r\n\r\nconst FinancialTotals = ({ actualProfit, entity, estimatedLabor, proposedProfit, revenue }) => {\r\n switch (entity) {\r\n case 'purchaseOrders':\r\n return Financial detail is not available for deliveries.;\r\n default:\r\n return (\r\n
\r\n \r\n \r\n Revenue\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Proposed Profit\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Actual Profit\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Estimated Labor\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Only scheduled jobs are included in financial totals.\r\n \r\n
\r\n );\r\n }\r\n};\r\n\r\nexport default FinancialTotals;","import React from \"react\";\r\nimport { Button, OverlayTrigger, Popover } from 'react-bootstrap';\r\nimport FinancialTotalsContent from \"./FinancialTotalsContent\";\r\n\r\nconst FinancialTotals = ({ financialEnabled, onToggleFinancial, ...props }) => {\r\n return (\r\n \r\n \r\n \r\n )}\r\n >\r\n \r\n \r\n )\r\n};\r\n\r\nexport default FinancialTotals;","import { connect } from 'react-redux';\r\nimport { createSelector } from 'reselect';\r\n\r\nimport { toggleFinancial } from '../../redux/settings';\r\nimport FinancialTotals from './FinancialTotals';\r\n\r\nconst totals = createSelector(\r\n state => state.events.events,\r\n events => {\r\n const uniqueJobs = events\r\n .filter(e => e.job && !e.tentative)\r\n .map(e => e.job)\r\n .reduce((unique, job) => ({ ...unique, [job.id]: job }), {});\r\n\r\n return Object.values(uniqueJobs)\r\n .reduce(({ actualProfit, estimatedLabor, proposedProfit, revenue }, job) => ({\r\n actualProfit: actualProfit + (job.profit && job.profit.actualProfit || 0),\r\n estimatedLabor: estimatedLabor + (job.capacities && job.capacities.laborAmount || 0),\r\n proposedProfit: proposedProfit + (job.profit && job.profit.proposedProfit || 0),\r\n revenue: revenue + job.jobTotal\r\n }), {\r\n actualProfit: 0,\r\n estimatedLabor: 0,\r\n proposedProfit: 0,\r\n revenue: 0\r\n });\r\n }\r\n);\r\n\r\nconst mapStateToProps = state => ({\r\n ...totals(state),\r\n entity: state.settings.entity,\r\n financialEnabled: state.settings.financialEnabled,\r\n});\r\n\r\nconst mapDispatchToProps = {\r\n onToggleFinancial: toggleFinancial,\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(FinancialTotals);\r\n","import React from 'react';\r\nimport { Col, ControlLabel, FormControl, FormGroup, HelpBlock } from 'react-bootstrap';\r\n\r\nexport default ({ entity, material }) => (\r\n
\r\n {material.map(m => (\r\n \r\n \r\n {m.name}\r\n \r\n \r\n \r\n {Math.round(m.quantity * 1000) / 1000}\r\n \r\n \r\n \r\n ))}\r\n \r\n {`Only scheduled ${entity === 'purchaseOrders' ? 'deliveries' : 'jobs'} are included in material totals.`}\r\n \r\n
\r\n);\r\n","import React from \"react\";\r\nimport { Button, OverlayTrigger, Popover } from 'react-bootstrap';\r\nimport MaterialTotalsContent from \"./MaterialTotalsContent\";\r\n\r\nconst MaterialTotals = ({ materialEnabled, onToggleMaterial, ...props }) => {\r\n return (\r\n \r\n \r\n \r\n )}\r\n >\r\n \r\n \r\n );\r\n};\r\n\r\nexport default MaterialTotals;","import { connect } from 'react-redux';\r\nimport { createSelector } from 'reselect';\r\n\r\nimport { toggleMaterial } from '../../redux/settings';\r\nimport MaterialTotals from './MaterialTotals';\r\n\r\nconst material = createSelector(\r\n state => state.events.events,\r\n state => state.settings.entity,\r\n (events, entity) => {\r\n switch (entity) {\r\n case 'purchaseOrders': {\r\n // Purchase orders are already unique because they can only be scheduled once\r\n const totals = events\r\n .filter(e => e.purchaseOrder)\r\n .map(e => e.purchaseOrder)\r\n .reduce((items, p) => [...items, ...p.items], [])\r\n .filter(i => i.quantity && i.item && i.item.itemType)\r\n .reduce((totals, i) => {\r\n let group = totals[i.item.itemType.id] || {\r\n id: i.item.itemType.id,\r\n name: i.item.itemType.name,\r\n quantity: 0\r\n };\r\n group.quantity += i.quantity;\r\n totals[i.item.itemType.id] = group;\r\n return totals;\r\n }, {});\r\n\r\n return Object.values(totals);\r\n }\r\n default: {\r\n const uniqueJobs = events\r\n .filter(e => e.job && !e.tentative)\r\n .map(e => e.job)\r\n .reduce((unique, job) => ({ ...unique, [job.id]: job }), {});\r\n\r\n const totals = Object.values(uniqueJobs)\r\n .reduce((items, j) => [...items, ...j.items], [])\r\n .filter(i => i.proposedQuantity && i.item && i.item.itemType)\r\n .reduce((totals, i) => {\r\n let group = totals[i.item.itemType.id] || {\r\n id: i.item.itemType.id,\r\n name: i.item.itemType.name,\r\n quantity: 0\r\n };\r\n group.quantity += i.proposedQuantity;\r\n totals[i.item.itemType.id] = group;\r\n return totals;\r\n }, {});\r\n\r\n return Object.values(totals);\r\n }\r\n }\r\n }\r\n);\r\n\r\nconst mapStateToProps = state => ({\r\n entity: state.settings.entity,\r\n material: material(state),\r\n materialEnabled: state.settings.materialEnabled,\r\n});\r\n\r\nconst mapDispatchToProps = {\r\n onToggleMaterial: toggleMaterial,\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(MaterialTotals);\r\n","import moment from 'moment';\r\nimport React from 'react';\r\nimport { Button, OverlayTrigger, Popover } from 'react-bootstrap';\r\nimport Datetime from 'react-datetime';\r\nimport FontAwesome from 'react-fontawesome';\r\n\r\nimport styles from './SchedulerNavbar.css';\r\n\r\nconst getDateDisplay = (date, mode) => {\r\n switch (mode) {\r\n case 'week':\r\n return `${moment(date).startOf('week').format('MMM DD')} to ${moment(date).endOf('week').format('MMM DD')}`;\r\n case 'month':\r\n return moment(date).format('MMM YYYY');\r\n default:\r\n return moment(date).format('dddd MMM DD, YYYY');\r\n }\r\n};\r\n\r\nconst getMomentUnitFromMode = (mode) => {\r\n switch (mode) {\r\n case 'dispatch':\r\n return 'day';\r\n default:\r\n return mode;\r\n }\r\n};\r\n\r\nconst DateNavigator = ({ date, mode, onNavigate }) => (\r\n \r\n onNavigate(moment(date).subtract(1, getMomentUnitFromMode(mode)), mode)} />\r\n {' '}\r\n \r\n onNavigate(d, mode)}\r\n timeFormat={false}\r\n value={moment(date)}\r\n />\r\n
\r\n \r\n
\r\n \r\n )}\r\n placement=\"bottom\"\r\n rootClose\r\n trigger=\"click\"\r\n >\r\n {getDateDisplay(date, mode)}\r\n \r\n {' '}\r\n onNavigate(moment(date).add(1, getMomentUnitFromMode(mode)), mode)} />\r\n
\r\n);\r\n\r\nexport default DateNavigator;\r\n","import React from 'react';\r\nimport { ControlLabel, FormGroup } from 'react-bootstrap';\r\nimport FontAwesome from 'react-fontawesome';\r\nimport Select from 'react-select-plus';\r\n\r\nconst colorOptions = [{\r\n label: 'Job Status',\r\n value: 'jobStatus'\r\n}, {\r\n label: 'Job Type',\r\n value: 'jobType'\r\n}, {\r\n label: 'Office',\r\n value: 'office'\r\n}, {\r\n label: 'Salesperson',\r\n value: 'salesperson'\r\n}];\r\n\r\nconst apptcolorOptions = [{\r\n label: 'Office',\r\n value: 'office'\r\n}, {\r\n label: 'Salesperson',\r\n value: 'salesperson'\r\n}];\r\n\r\n\r\nconst style = {\r\n minWidth: '200px'\r\n};\r\n\r\nconst bidTypeOption = (bidType) => (\r\n \r\n {bidType.value}\r\n \r\n);\r\n\r\nconst jobStatusOption = (jobStatus) => (\r\n \r\n {jobStatus.status}\r\n \r\n);\r\n\r\nconst jobTypeOption = (jobType) => (\r\n \r\n {jobType.name}\r\n \r\n);\r\n\r\nconst salespersonOption = ({ calendarColor, firstName, lastName }) => (\r\n \r\n {`${firstName || ''} ${lastName || ''}`}\r\n \r\n);\r\n\r\nconst Filters = ({ bidTypes, filters, jobStatuses, jobTypes, offices, onFilterUpdate, salespeople,settings }) => {\r\n \r\n \r\n //console.log(salespeople);\r\n \r\n\r\n if(settings.entity===\"appointments\")\r\n {\r\n return (\r\n
\r\n \r\n Office\r\n onFilterUpdate({ offices: e })}\r\n />\r\n \r\n \r\n Salesperson\r\n onFilterUpdate({ salespeople: e })}\r\n />\r\n \r\n\r\n \r\n \r\n Color\r\n onFilterUpdate({ color: e.value })}\r\n />\r\n \r\n \r\n Sort\r\n onFilterUpdate({ sortoption: e.value })}\r\n />\r\n \r\n
)\r\n\r\n }\r\n else\r\n {\r\n return (\r\n
\r\n \r\n Job Status\r\n onFilterUpdate({ jobStatuses: e })}\r\n />\r\n \r\n \r\n Job Type\r\n onFilterUpdate({ jobTypes: e })}\r\n />\r\n \r\n \r\n Bid Type\r\n onFilterUpdate({ bidTypes: e })}\r\n />\r\n \r\n \r\n Office\r\n onFilterUpdate({ offices: e })}\r\n />\r\n \r\n \r\n Salesperson\r\n onFilterUpdate({ salespeople: e })}\r\n />\r\n \r\n \r\n Color\r\n onFilterUpdate({ color: e.value })}\r\n />\r\n \r\n \r\n Sort\r\n onFilterUpdate({ sortoption: e.value })}\r\n />\r\n \r\n
\r\n)}\r\n\r\n\r\n};\r\n\r\nexport default Filters;\r\n","import React from 'react';\r\nimport { Button, ButtonGroup, ButtonToolbar, Navbar, OverlayTrigger, Popover } from 'react-bootstrap';\r\nimport FontAwesome from 'react-fontawesome';\r\nimport FinancialTotals from '../FinancialTotals';\r\nimport MaterialTotals from '../MaterialTotals';\r\nimport DateNavigator from './DateNavigator';\r\nimport Filters from './Filters';\r\n\r\nconst SchedulerNavbar = ({\r\n bidTypes,\r\n date,\r\n detailEnabled,\r\n jobStatuses,\r\n appointmentTypes,\r\n jobTypes,\r\n loading,\r\n locationEnabled,\r\n mode,\r\n offices,\r\n onNavigate,\r\n onOpenSettingsModal,\r\n onSettingsChange,\r\n onToggleDetail,\r\n onToggleLocation,\r\n salespeople,\r\n settings,\r\n showFinancials,\r\n schedulerView,\r\n onSchedularViewButtonClick,\r\n selectJobsTab,\r\n onAppointmentCalenderClick\r\n}) => \r\n{\r\n const onButtonClick = ()=> { \r\n \r\n if(schedulerView === 'equipment')\r\n {\r\n onSchedularViewButtonClick('crew');\r\n }\r\n else\r\n {\r\n onSchedularViewButtonClick('equipment');\r\n selectJobsTab();\r\n }\r\n }\r\nreturn (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {showFinancials && }\r\n \r\n \r\n \r\n )}>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n)};\r\n\r\nexport default SchedulerNavbar;\r\n","import { connect } from 'react-redux';\r\n\r\nimport { fetchCalendar } from '../../redux/calendar';\r\nimport { toggleDetail, toggleLocation, updateSettings } from '../../redux/settings';\r\nimport { open as onOpenSettingsModal } from '../../redux/modals/settingsModal';\r\nimport {toggleAppointmentModal as onOpenAppointmentCalendarModal} from '../../redux/modals/appintmentCalendarModal';\r\nimport SchedulerNavbar from './SchedulerNavbar';\r\n\r\nconst mapStateToProps = (state) => ({\r\n ...state.settings,\r\n ...state.dropdowns,\r\n date: state.calendar.date,\r\n loading: state.events.loading,\r\n mode: state.calendar.mode,\r\n settings: state.settings,\r\n showFinancials: state.tokenInfo.scope.indexOf('scheduler:hideFinancials') < 0,\r\n schedulerView:state.settings.schedulerView,\r\n});\r\n\r\nconst mapDispatchToProps = {\r\n onOpenSettingsModal,\r\n onAppointmentCalenderClick:(show)=> onOpenAppointmentCalendarModal({show:show}),\r\n onNavigate: fetchCalendar,\r\n onSettingsChange: updateSettings,\r\n onToggleDetail: toggleDetail,\r\n onToggleLocation: toggleLocation,\r\n onSchedularViewButtonClick:(view)=> updateSettings({ schedulerView: view,entity: 'jobs' }),\r\n selectJobsTab: () => updateSettings({ entity: 'jobs' }),\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(SchedulerNavbar);\r\n","import React from 'react';\r\nimport FontAwesome from 'react-fontawesome';\r\n\r\nimport styles from './WeekView.less';\r\n\r\nconst CrewTag = ({ active, crew, onCrewSelect }) => crew\r\n ? (\r\n
\r\n {crew.equipment ? crew.equipment.name : 'No Equipment'}
\r\n {crew.resources.filter(r => !!r.resource).map(r => (\r\n {r.resource.firstName} {r.resource.lastName}
\r\n ))}\r\n
\r\n )\r\n : (\r\n
Unassigned
\r\n );\r\n\r\nexport default CrewTag;\r\n","import React from 'react';\r\nimport classNames from 'classnames';\r\nimport { ContextMenuTrigger } from 'react-contextmenu';\r\nimport { useDrop } from 'react-dnd';\r\nimport tinycolor from 'tinycolor2';\r\n\r\nimport Event, { DraggableType } from '../shared/Event';\r\n\r\nimport styles from './WeekView.less';\r\n\r\nconst contextMenuCollect = (props) => ({\r\n eventId: props.eventId,\r\n jobId: props.jobId ? props.jobId : 0,\r\n date: props.date\r\n});\r\n\r\nconst getContextMenuIdForEvent = (e) => {\r\n if (e.bid) {\r\n return 'BID_MENU';\r\n } else if (e.purchaseOrder) {\r\n return 'DELIVERY_MENU';\r\n } else if (e.job) {\r\n return 'JOB_MENU';\r\n } else {\r\n return 'NONE';\r\n }\r\n};\r\n\r\nconst makeEventStyle = ({ color }) => {\r\n return !color ? null : {\r\n backgroundColor: color,\r\n borderColor: tinycolor(color).darken(40),\r\n color: tinycolor(color).getBrightness() < 150 ? '#fff' : '#000'\r\n };\r\n};\r\n\r\nconst Day = ({ active, crew, date, settings, events, onReschedule, onScheduleBid, onScheduleDelivery, onScheduleJob }) => {\r\n const [{ canDrop, isDragging, isOver }, drop] = useDrop({\r\n accept: [DraggableType, 'bid', 'job', 'purchaseOrder'],\r\n canDrop: (item) => {\r\n switch(item.type) {\r\n case 'bid':\r\n // Bids cannot be scheduled to a crew\r\n return !crew;\r\n case 'event':\r\n const { event } = item;\r\n if (event.bid) {\r\n // Bids cannot be scheduled to a crew\r\n return !crew;\r\n } else {\r\n return !crew || !event.office || crew.offices.some(o => o.id === event.office.id);\r\n }\r\n case 'job':\r\n // Job office must match crew's office\r\n const { job } = item;\r\n return !crew || !job.office || crew.offices.some(o => o.id === job.office.id);\r\n case 'purchaseOrder':\r\n // Purchase order office must match crew's office\r\n const { purchaseOrder } = item;\r\n return !crew || !purchaseOrder.office || crew.offices.some(o => o.id === purchaseOrder.office.id);\r\n default:\r\n break;\r\n }\r\n return true;\r\n },\r\n collect: (monitor) => ({\r\n canDrop: !!monitor.canDrop(),\r\n isDragging: !!monitor.getItem(),\r\n isOver: !!monitor.isOver(),\r\n }),\r\n drop: (item) => {\r\n switch(item.type) {\r\n case 'bid':\r\n const { bidId } = item;\r\n onScheduleBid && onScheduleBid(bidId, date.format('YYYY-MM-DD'));\r\n break;\r\n case 'event':\r\n const { eventId } = item;\r\n onReschedule && onReschedule(eventId, date.format('YYYY-MM-DD'), crew);\r\n break;\r\n case 'job':\r\n const { jobId } = item;\r\n onScheduleJob && onScheduleJob(jobId, crew, date.format('YYYY-MM-DD'));\r\n break;\r\n case 'purchaseOrder':\r\n const { purchaseOrderId } = item;\r\n onScheduleDelivery && onScheduleDelivery(purchaseOrderId, date.format('YYYY-MM-DD'), crew);\r\n break;\r\n case 'appointment':\r\n \r\n break; \r\n default:\r\n break;\r\n }\r\n }\r\n });\r\n\r\n // console.log(events);\r\n events = events.filter(function(e){\r\n return e.evttype === settings.entity\r\n });\r\n switch(settings.sortoption)\r\n{\r\n case \"Date\": \r\n events.sort(function(a, b){ \r\n \r\n // nulls sort after anything else\r\n if (a.startTime === null) {\r\n return 1;\r\n }\r\n if (b.startTime === null) {\r\n return -1;\r\n }\r\n\r\n if (a.startTime < b.startTime)\r\n return -1\r\nif (a.startTime > b.startTime)\r\n return 1\r\nelse\r\n return 0\r\n });\r\n break;\r\n case \"Customer\":\r\n \r\n \r\n events.sort(function(a, b){ \r\n \r\n if(a.customer && b.customer)\r\n {\r\n return a.customer.name.localeCompare(b.customer.name);\r\n }\r\n else if (a.datasheet && b.datasheet)\r\n {\r\n if(a.datasheet.customer && b.datasheet.customer)\r\n {\r\n return a.datasheet.customer.name.localeCompare(b.datasheet.customer.name);\r\n }\r\n else\r\n {\r\n return b.id- a.id;\r\n }\r\n }\r\n else if (a.job && b.job)\r\n {\r\n if(a.job.customer && b.job.customer)\r\n {\r\n return a.job.customer.name.localeCompare(b.job.customer.name);\r\n }\r\n else\r\n {\r\n return b.id- a.id;\r\n }\r\n }\r\n else if (a.bid && b.bid)\r\n {\r\n if(a.bid.customer && b.bid.customer)\r\n {\r\n return a.bid.customer.name.localeCompare(b.bid.customer.name);\r\n }\r\n else\r\n {\r\n return b.id- a.id;\r\n }\r\n }\r\n\r\n\r\n else\r\n {\r\n return b.id- a.id;\r\n }\r\n });\r\n \r\n break;\r\n case \"Address\":\r\n events.sort(\r\n function(a,b){\r\n\r\n if(a.datasheet && b.datasheet)\r\n {\r\n if(a.datasheet.customer && b.datasheet.customer && a.datasheet.customer.address && b.datasheet.customer.address)\r\n { \r\n const compareState = a.datasheet.customer.address.state.localeCompare(b.datasheet.customer.address.state);\r\n const compareCity = a.datasheet.customer.address.city.localeCompare(b.datasheet.customer.address.city);\r\n const compareLine1 = a.datasheet.customer.address.line1.localeCompare(b.datasheet.customer.address.line1);\r\n const compareLine2 = a.datasheet.customer.address.line2.localeCompare(b.datasheet.customer.address.line2);\r\n return compareState || compareCity || compareLine1 || compareLine2;\r\n }\r\n }\r\n else if(a.customer && b.customer)\r\n {\r\n if(a.customer && b.customer && a.customer.address && b.customer.address)\r\n {\r\n const compareState = a.customer.address.state.localeCompare(b.customer.address.state);\r\n const compareCity = a.customer.address.city.localeCompare(b.customer.address.city);\r\n const compareLine1 = a.customer.address.line1.localeCompare(b.customer.address.line1);\r\n const compareLine2 = a.customer.address.line2.localeCompare(b.customer.address.line2);\r\n return compareState || compareCity || compareLine1 || compareLine2;\r\n }\r\n }\r\n else if (a.job && b.job)\r\n {\r\n const compareState = a.job.address.state.localeCompare(b.job.address.state);\r\n const compareCity = a.job.address.city.localeCompare(b.job.address.city);\r\n const compareLine1 = a.job.address.line1.localeCompare(b.job.address.line1);\r\n const compareLine2 = a.job.address.line2.localeCompare(b.job.address.line2);\r\n return compareState || compareCity || compareLine1 || compareLine2;\r\n }\r\n\r\n else if (a.bid && b.bid)\r\n {\r\n const compareState = a.bid.address.state.localeCompare(b.bid.address.state);\r\n const compareCity = a.bid.address.city.localeCompare(b.bid.address.city);\r\n const compareLine1 = a.bid.address.line1.localeCompare(b.bid.address.line1);\r\n const compareLine2 = a.bid.address.line2.localeCompare(b.bid.address.line2);\r\n return compareState || compareCity || compareLine1 || compareLine2;\r\n }\r\n\r\n else\r\n {\r\n return b.id - a.id\r\n }\r\n \r\n }\r\n\r\n )\r\n break;\r\n}\r\n\r\n\r\n return (\r\n \r\n {events.map((e) => (\r\n \r\n \r\n \r\n ))}\r\n
\r\n );\r\n};\r\n\r\nexport default Day;\r\n","import moment from 'moment';\r\nimport React from 'react';\r\nimport { ContextMenu, MenuItem } from 'react-contextmenu';\r\nimport BidActionButtons from '../shared/Event/BidEvent/ActionButtons';\r\nimport DeliveryActionButtons from '../shared/Event/DeliveryEvent/ActionButtons';\r\nimport JobActionButtons from '../shared/Event/JobEvent/ActionButtons';\r\nimport CrewTag from './CrewTag';\r\nimport Day from './Day';\r\nimport styles from './WeekView.less';\r\nimport { isNumber } from 'lodash';\r\n\r\nconst WeekView = ({\r\n className = '',\r\n date,\r\n eventsByCrew,\r\n onCrewSelect,\r\n onDeleteEventClick,\r\n onEditDeliveryClick,\r\n onEditEventClick,\r\n onPrintWorkOrder,\r\n onNavigate,\r\n onOpenClick,\r\n onReschedule,\r\n onScheduleBid,\r\n onScheduleDelivery,\r\n onScheduleJob,\r\n onContextMenuClick, \r\n showMenuItem,\r\n settings\r\n \r\n}) => {\r\n const startOfWeek = moment(date).startOf('week');\r\n const endOfWeek = moment(date).endOf('week');\r\n\r\n const dates = [];\r\n while (startOfWeek.isBefore(endOfWeek)) {\r\n dates.push(startOfWeek.clone());\r\n startOfWeek.add(1, 'day');\r\n }\r\n\r\n const weekDayColumns = dates.map((d) => (\r\n \r\n onNavigate(\r\n d.format(),\r\n moment(date).startOf('day').isSame(d) ? 'day' : 'week'\r\n )\r\n }\r\n >\r\n {d.format('dddd')}\r\n
\r\n {d.format('MMM Do')}\r\n
\r\n \r\n ));\r\n\r\n const rows = eventsByCrew.map(({ active, crew, events }, i) => (\r\n
\r\n
\r\n onCrewSelect(crew)}\r\n />\r\n
\r\n {dates.map((d) => (\r\n !d.isBefore(e.startDate) && !d.isAfter(e.endDate)\r\n )}\r\n key={d.format()}\r\n onReschedule={onReschedule}\r\n onScheduleBid={onScheduleBid}\r\n onScheduleDelivery={onScheduleDelivery}\r\n onScheduleJob={onScheduleJob}\r\n \r\n />\r\n ))}\r\n
\r\n ));\r\n\r\n return (\r\n
\r\n
\r\n
\r\n {weekDayColumns}\r\n
\r\n
{rows}
\r\n onDeleteEventClick(data.eventId)\r\n : null\r\n }\r\n onEditEventClick={\r\n onEditDeliveryClick\r\n ? (e, data) => onEditDeliveryClick(data.eventId)\r\n : null\r\n }\r\n onOpenClick={\r\n onOpenClick ? (e, data) => onOpenClick(data.eventId) : null\r\n }\r\n showLabels\r\n \r\n \r\n />\r\n {isNumber(data.eventId)? onDeleteEventClick(data.eventId):null }\r\n : null\r\n }\r\n onEditEventClick={\r\n onEditEventClick ? (e, data) => { isNumber(data.eventId)? onEditEventClick(data.eventId):null } :null\r\n }\r\n onPrintWorkOrder={\r\n onPrintWorkOrder ? (e, data) => { isNumber(data.eventId)? onPrintWorkOrder({eventId: data.eventId, date: data.date.format('YYYY-MM-DD')}): null} : null\r\n }\r\n onOpenClick={\r\n onOpenClick ? (e, data) => onOpenClick(data.eventId) : null\r\n }\r\n showLabels\r\n showMenuItem={showMenuItem}\r\n onContextMenuClick = { (e) => { \r\n onContextMenuClick(e.detail.data.eventId) \r\n } }\r\n \r\n />\r\n onOpenClick(data.eventId) : null\r\n }\r\n showLabels\r\n />\r\n
\r\n );\r\n};\r\n\r\nexport default WeekView;\r\n","import { connect } from 'react-redux';\r\n\r\nimport { toggleDeleteModal, toggleDeliveryModal, toggleEditModal } from '../../redux/modals';\r\nimport { fetchCalendar, openEvent, rescheduleEventExplicit, scheduleBid, scheduleJobExplicit, schedulePurchaseOrderExplicit, setActiveCrew,hideMenuItem } from '../../redux/calendar';\r\nimport makeEventsByCrew from '../../selectors/eventsByCrew';\r\nimport { open as togglePrintWorkOrderModal } from '../../redux/modals/printWorkOrderModal';\r\nimport WeekView from './WeekView';\r\n\r\nconst eventsByCrew = makeEventsByCrew(true);\r\n\r\nconst mapStateToProps = (state) => ({\r\n date: state.calendar.date,\r\n eventsByCrew: eventsByCrew(state),\r\n hasCalendarEventCreate: state.tokenInfo.scope.indexOf('calendarEvents:create') > -1,\r\n hasCalendarEventDelete: state.tokenInfo.scope.indexOf('calendarEvents:delete') > -1,\r\n hasCalendarEventUpdate: state.tokenInfo.scope.indexOf('calendarEvents:update') > -1,\r\n showMenuItem:state.calendar.showMenuItem,\r\n settings:state.settings\r\n});\r\n\r\nconst mapDispatchToProps = ({\r\n onCrewSelect: setActiveCrew,\r\n onNavigate: fetchCalendar,\r\n onDeleteEventClick: toggleDeleteModal,\r\n onEditDeliveryClick: toggleDeliveryModal,\r\n onEditEventClick: toggleEditModal,\r\n onOpenClick: openEvent,\r\n onReschedule: rescheduleEventExplicit,\r\n onScheduleBid: scheduleBid,\r\n onScheduleDelivery: schedulePurchaseOrderExplicit,\r\n onScheduleJob: scheduleJobExplicit,\r\n onPrintWorkOrder: togglePrintWorkOrderModal,\r\n onContextMenuClick:hideMenuItem\r\n});\r\n\r\nconst mergeProps = ({ hasCalendarEventCreate, hasCalendarEventDelete, hasCalendarEventUpdate, ...stateProps }, { onDeleteEventClick, onEditDeliveryClick, onEditEventClick, onReschedule, onScheduleBid, onScheduleDelivery, onScheduleJob,onPrintWorkOrder, ...dispatchProps }, ownProps) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps,\r\n onDeleteEventClick: hasCalendarEventDelete ? onDeleteEventClick : null,\r\n onEditDeliveryClick: hasCalendarEventUpdate ? onEditDeliveryClick : null,\r\n onEditEventClick: hasCalendarEventUpdate ? onEditEventClick : null,\r\n onScheduleBid: hasCalendarEventCreate ? onScheduleBid : null,\r\n onReschedule: hasCalendarEventUpdate ? onReschedule : null,\r\n onScheduleDelivery: hasCalendarEventCreate ? onScheduleDelivery : null,\r\n onScheduleJob: hasCalendarEventCreate ? onScheduleJob : null,\r\n onPrintWorkOrder: hasCalendarEventUpdate ? onPrintWorkOrder : null,\r\n \r\n \r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps, mergeProps)(WeekView);\r\n","import { createSelector } from 'reselect';\r\n\r\nimport { assignedEventsSelector, visibleEventsSelector } from '../redux/events';\r\nimport { standardCrewsSelector } from '../redux/standardCrews';\r\nimport { matchCrews } from '../utils';\r\n\r\n\r\n\r\n\r\nfunction sortEquipment(a, b) {\r\n return sortEquipmentByDisplayOrder(a, b) || sortEquipmentByName(a, b);\r\n}\r\n\r\nfunction sortEquipmentByDisplayOrder(a, b) {\r\n if (a == null || b == null || !a.displayOrder || !b.displayOrder) {\r\n return 0;\r\n } else if (typeof(a.displayOrder) !== 'number') {\r\n return -1;\r\n } else if (typeof(b.displayOrder) !== 'number') {\r\n return 1;\r\n } else {\r\n return a.displayOrder - b.displayOrder;\r\n }\r\n}\r\n\r\nfunction sortEquipmentByName(a, b) {\r\n if(a && b)\r\n {\r\n return a.name < b.name\r\n ? 1\r\n : a.name > b.name\r\n ? -1\r\n : 0;\r\n }\r\n return -1;\r\n}\r\n\r\nfunction matchEquipment(a,b)\r\n{\r\n if (!a && !b) {\r\n return true;\r\n }\r\n else if (a && b && a.id === b.id){\r\n return true;}\r\n else if (!a || !b) {\r\n return false;}\r\n}\r\n\r\n\r\n\r\n/**\r\n * Determines the largest subset of offices common to all resources on a specified crew.\r\n *\r\n * @param {any} crew\r\n * @returns Array of common offices\r\n */\r\nfunction maximalOfficeSet(crew) {\r\n return crew.resources\r\n .filter(r => !!r.resource)\r\n .map(r => r.resource.offices)\r\n .reduce((prev, curr) => {\r\n if (!prev) {\r\n return curr;\r\n } else {\r\n return prev.filter(o => curr.some(o2 => o2.id === o.id));\r\n }\r\n }, null) || [];\r\n}\r\n\r\nfunction getFilteredCrew(crew, offices)\r\n{\r\n const filteredCrews = offices.length > 0\r\n ?offices.some((o) => o.id === crew.office.id)\r\n : null;\r\n return filteredCrews;\r\n}\r\n\r\nexport default (includeUnassigned) => { \r\n\r\n const visibleEvents = createSelector(\r\n includeUnassigned ? visibleEventsSelector : assignedEventsSelector,\r\n events => events.map(e => ({\r\n ...e,\r\n crew: e.crew ? {\r\n ...e.crew,\r\n offices: maximalOfficeSet(e.crew)\r\n } : null\r\n }))\r\n );\r\n \r\n \r\n return createSelector(\r\n visibleEvents,\r\n state => state.equipments.equipment,\r\n state => state.calendar.activeEquipment,\r\n state => state.calendar.selected_employees, \r\n (events, equipment, activeEquipment,selected_employees) => \r\n events.reduce(\r\n (eqs,evt) =>\r\n { \r\n let crew = evt.crew;//?getFilteredCrew(evt.crew,offices):null;\r\n let eq = eqs?eqs.find((e) => matchEquipment(e.equipment, crew?crew.equipment:null)):null; \r\n if(!eq)\r\n {\r\n eq = {\r\n active: !!activeEquipment && evt.equipment?(activeEquipment.id === evt.equipment.id):false,\r\n equipment: crew? crew.equipment:null,\r\n \r\n events:[]\r\n }\r\n \r\n eqs.push(eq);\r\n }\r\n if(selected_employees.length > 0 ) // If Employee selected then show his events only\r\n {\r\n let res = crew?crew.resources.find( (rs) => selected_employees.indexOf(rs.resource != null ? rs.resource.id : 0) >= 0) : null;\r\n if(res)\r\n eq.events.push(evt);\r\n \r\n }\r\n else\r\n {\r\n //console.log(evt);\r\n eq.events.push(evt);\r\n \r\n }\r\n \r\n return eqs;\r\n }\r\n ,\r\n [{ active: !activeEquipment, equipment: null, events: [] },\r\n ...equipment.map( e =>\r\n ({\r\n active: !!activeEquipment && activeEquipment.id === e.id,\r\n equipment: e, \r\n events:[]\r\n })\r\n )]\r\n ).sort((a, b) =>{ sortEquipment(a.equipment, b.equipment)}) \r\n )\r\n};\r\n","import React from 'react';\r\nimport classNames from 'classnames';\r\nimport { ContextMenuTrigger } from 'react-contextmenu';\r\nimport { useDrop } from 'react-dnd';\r\nimport tinycolor from 'tinycolor2';\r\n\r\nimport Event, { DraggableType } from '../shared/Event';\r\n\r\nimport styles from './WeekView.less';\r\nimport { dispatch } from 'rxjs/internal/observable/pairs';\r\n\r\nconst contextMenuCollect = (props) => ({\r\n eventId: props.eventId,\r\n jobId: props.jobId ? props.jobId : 0,\r\n date: props.date,\r\n evt:props.evt\r\n});\r\n\r\nconst getContextMenuIdForEvent = (e) => {\r\n\r\n\r\n if (e.bid) {\r\n return 'BID_MENU';\r\n } else if (e.purchaseOrder) {\r\n return 'DELIVERY_MENU';\r\n } else if (e.job) {\r\n return 'JOB_MENU';\r\n } else if (e.datasheet || e.customer || e.description || e.appttype || e.evttype ==='appointments') {\r\n return 'APPOINTMENT_MENU';\r\n } \r\n \r\n else {\r\n return 'NONE';\r\n }\r\n};\r\n\r\nconst makeEventStyle = ({ color,datasheet,customer,crew }) => {\r\n\r\n var color=color;\r\n \r\n if(color==null)\r\n {\r\n if(datasheet && datasheet !== null && datasheet.salesperson !==null && datasheet.salesperson.calendarColor !=null)\r\n { \r\n color = datasheet.salesperson.calendarColor; \r\n }\r\n else if(customer && customer !== null && customer.salesperson !==null && customer.salesperson.calendarColor !=null)\r\n {\r\n color = customer.salesperson.calendarColor; \r\n }\r\n\r\n else if(crew && crew !== null && crew.resources !==null && crew.resources.length > 0)\r\n {\r\n color = crew.resources[0].calendarColor; \r\n }\r\n }\r\n\r\n return !color ?null\r\n : {\r\n backgroundColor: color, \r\n borderColor: tinycolor(color).darken(40),\r\n color: tinycolor(color).getBrightness() < 150 ? '#fff' : '#000'\r\n };\r\n};\r\n\r\n\r\n\r\nconst Day = ({ active, crew, date, settings,events, onReschedule, onScheduleBid, onScheduleDelivery, onScheduleJob, onSheeduleAppointment,updateSettings }) => {\r\n const [{ canDrop, isDragging, isOver }, drop] = useDrop({\r\n accept: [DraggableType, 'bid', 'job', 'purchaseOrder','appointment'],\r\n canDrop: (item) => {\r\n \r\n switch(item.type) {\r\n case 'bid':\r\n // Bids cannot be scheduled to a crew\r\n return !crew;\r\n case 'event':\r\n const { event } = item;\r\n if (event.bid) {\r\n // Bids cannot be scheduled to a crew\r\n return !crew;\r\n } else {\r\n return !!crew;//!crew || !event.office || crew.offices.some(o => o.id === event.office.id);\r\n }\r\n case 'job':\r\n // Job office must match crew's office\r\n const { job } = item;\r\n //console.log(crew);\r\n return true;// || !job.office || crew.offices.some(o => o.id === job.office.id);\r\n case 'purchaseOrder':\r\n // Purchase order office must match crew's office\r\n const { purchaseOrder } = item;\r\n return !crew || !purchaseOrder.office || crew.offices.some(o => o.id === purchaseOrder.office.id);\r\n \r\n case 'appointment':\r\n //console.log(item);\r\n return true;\r\n\r\n default:\r\n break;\r\n }\r\n return true;\r\n },\r\n collect: (monitor) => ({\r\n canDrop: !!monitor.canDrop(),\r\n isDragging: !!monitor.getItem(),\r\n isOver: !!monitor.isOver(),\r\n }),\r\n drop: (item) => {\r\n \r\n switch(item.type) {\r\n case 'bid':\r\n const { bidId } = item;\r\n onScheduleBid && onScheduleBid(bidId, date.format('YYYY-MM-DD'));\r\n break;\r\n case 'event':\r\n const { eventId } = item;\r\n let evtcrew = item.event.crew; \r\n if(item.event.crew && crew.equipment)\r\n {\r\n if(item.event.crew.equipment)\r\n {\r\n //evtcrew.crew = {...crew.equipment, \"resrouces\":item.event.crew.resources};\r\n evtcrew.equipment = crew.equipment;\r\n }\r\n else\r\n {\r\n evtcrew = {\"resources\":item.event.crew.resources, \"equipment\":crew.equipment };\r\n }\r\n\r\n }\r\n else if(item.event.crew) // crew but no equipment\r\n {\r\n evtcrew = {\"resources\":item.event.crew.resources, \"equipment\":crew.equipment };\r\n }\r\n else if(crew)\r\n {\r\n evtcrew = crew;\r\n }\r\n \r\n onReschedule && onReschedule(eventId, date.format('YYYY-MM-DD'), evtcrew);\r\n break;\r\n case 'job':\r\n const { jobId } = item;\r\n onScheduleJob && onScheduleJob(jobId, crew, date.format('YYYY-MM-DD'));\r\n \r\n break;\r\n case 'purchaseOrder':\r\n const { purchaseOrderId } = item;\r\n onScheduleDelivery && onScheduleDelivery(purchaseOrderId, date.format('YYYY-MM-DD'), crew);\r\n break;\r\n case 'appointment':\r\n var datasheetid = null;\r\n var customerid = null;\r\n var appointmenttype = null;\r\n if(item.appointment.eventtype===\"datasheet\")\r\n datasheetid = item.appointment.id;\r\n if(item.appointment.eventtype===\"customer\")\r\n customerid=item.appointment.id; \r\n onSheeduleAppointment(datasheetid,customerid,appointmenttype, crew, date.format('YYYY-MM-DD'),null,date.format('YYYY-MM-DD'),null,\"\");\r\n updateSettings({ entity: 'appointments',schedulerView:'equipment' });\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n });\r\n \r\n \r\n events = events.filter(function(e){\r\n return e.evttype === settings.entity\r\n });\r\n \r\n\r\nswitch(settings.sortoption)\r\n{\r\n case \"Date\": \r\n events.sort(function(a, b){ \r\n // nulls sort after anything else\r\n if (a.startTime === null) {\r\n return 1;\r\n}\r\nif (b.startTime === null) {\r\n return -1;\r\n}\r\n \r\n if (a.startTime < b.startTime)\r\n return -1\r\n if (a.startTime > b.startTime)\r\n return 1\r\n else\r\n return 0\r\n });\r\n break;\r\n case \"Customer\": \r\n events.sort(function(a, b){ \r\n \r\n if(a.customer && b.customer)\r\n {\r\n return a.customer.name.localeCompare(b.customer.name);\r\n }\r\n else if (a.datasheet && b.datasheet)\r\n {\r\n if(a.datasheet.customer && b.datasheet.customer)\r\n {\r\n return a.datasheet.customer.name.localeCompare(b.datasheet.customer.name);\r\n }\r\n else\r\n {\r\n return b.id- a.id;\r\n }\r\n }\r\n else if (a.job && b.job)\r\n {\r\n if(a.job.customer && b.job.customer)\r\n {\r\n return a.job.customer.name.localeCompare(b.job.customer.name);\r\n }\r\n else\r\n {\r\n return b.id- a.id;\r\n }\r\n }\r\n else if (a.bid && b.bid)\r\n {\r\n if(a.bid.customer && b.bid.customer)\r\n {\r\n return a.bid.customer.name.localeCompare(b.bid.customer.name);\r\n }\r\n else\r\n {\r\n return b.id- a.id;\r\n }\r\n }\r\n\r\n\r\n else\r\n {\r\n return b.id- a.id;\r\n }\r\n });\r\n \r\n break;\r\n case \"Address\":\r\n events.sort(\r\n function(a,b){\r\n\r\n if(a.datasheet && b.datasheet)\r\n {\r\n if(a.datasheet.customer && b.datasheet.customer && a.datasheet.customer.address && b.datasheet.customer.address)\r\n { \r\n const compareState = a.datasheet.customer.address.state.localeCompare(b.datasheet.customer.address.state);\r\n const compareCity = a.datasheet.customer.address.city.localeCompare(b.datasheet.customer.address.city);\r\n const compareLine1 = a.datasheet.customer.address.line1.localeCompare(b.datasheet.customer.address.line1);\r\n const compareLine2 = a.datasheet.customer.address.line2.localeCompare(b.datasheet.customer.address.line2);\r\n return compareState || compareCity || compareLine1 || compareLine2;\r\n }\r\n }\r\n else if(a.customer && b.customer)\r\n {\r\n if(a.customer && b.customer && a.customer.address && b.customer.address)\r\n {\r\n const compareState = a.customer.address.state.localeCompare(b.customer.address.state);\r\n const compareCity = a.customer.address.city.localeCompare(b.customer.address.city);\r\n const compareLine1 = a.customer.address.line1.localeCompare(b.customer.address.line1);\r\n const compareLine2 = a.customer.address.line2.localeCompare(b.customer.address.line2);\r\n return compareState || compareCity || compareLine1 || compareLine2;\r\n }\r\n }\r\n else if (a.job && b.job)\r\n {\r\n const compareState = a.job.address.state.localeCompare(b.job.address.state);\r\n const compareCity = a.job.address.city.localeCompare(b.job.address.city);\r\n const compareLine1 = a.job.address.line1.localeCompare(b.job.address.line1);\r\n const compareLine2 = a.job.address.line2.localeCompare(b.job.address.line2);\r\n return compareState || compareCity || compareLine1 || compareLine2;\r\n }\r\n\r\n else if (a.bid && b.bid)\r\n {\r\n const compareState = a.bid.address.state.localeCompare(b.bid.address.state);\r\n const compareCity = a.bid.address.city.localeCompare(b.bid.address.city);\r\n const compareLine1 = a.bid.address.line1.localeCompare(b.bid.address.line1);\r\n const compareLine2 = a.bid.address.line2.localeCompare(b.bid.address.line2);\r\n return compareState || compareCity || compareLine1 || compareLine2;\r\n }\r\n\r\n else\r\n {\r\n return b.id - a.id\r\n }\r\n \r\n }\r\n\r\n )\r\n break;\r\n}\r\n\r\n return (\r\n
\r\n {events.map((e) => (\r\n \r\n \r\n \r\n \r\n ))}\r\n
\r\n );\r\n};\r\n\r\nexport default Day;\r\n","import React from \"react\";\r\nimport FontAwesome from 'react-fontawesome';\r\nimport styles from './WeekView.less';\r\n\r\nconst Equipment = ({ equipment, active, onEquipmentSelect}) => equipment? (\r\n\r\n
\r\n \r\n \r\n {equipment.name}
\r\n
\r\n \r\n
):(\r\n
Unassigned
\r\n );\r\n\r\n\r\nexport default Equipment;","import moment from 'moment';\r\nimport React from 'react';\r\nimport { ContextMenu, MenuItem } from 'react-contextmenu';\r\nimport BidActionButtons from '../shared/Event/BidEvent/ActionButtons';\r\nimport DeliveryActionButtons from '../shared/Event/DeliveryEvent/ActionButtons';\r\nimport JobActionButtons from '../shared/Event/JobEvent/ActionButtons';\r\nimport AppointmentActionButton from '../shared/Event/AppointmentEvent/ActionButtons';\r\nimport Day from './Day';\r\nimport styles from './WeekView.less';\r\nimport Equipment from './Equipment';\r\nimport { bool } from 'prop-types';\r\nimport { dispatch } from 'rxjs/internal/observable/pairs';\r\n\r\n\r\n\r\nconst EquipmentWeekView = ({\r\n className = '',\r\n date, \r\n eventsByEquipment,\r\n onEquipmentSelect,\r\n onDeleteEventClick,\r\n onEditDeliveryClick,\r\n onEditEventClick,\r\n onPrintWorkOrder,\r\n onNavigate,\r\n onOpenClick,\r\n onReschedule,\r\n onScheduleBid,\r\n onScheduleDelivery,\r\n onScheduleJob,\r\n offices,\r\n onSheeduleAppointment,\r\n updateSettings,\r\n showApptMenuItem,\r\n onContextMenuClick,\r\n onApptEditEventClick,\r\n onOpenApptEventClick,\r\n showMenuItem,\r\n onJobContextMenuClick,\r\n settings\r\n \r\n}) => {\r\n const startOfWeek = moment(date).startOf('week');\r\n const endOfWeek = moment(date).endOf('week');\r\n\r\n const dates = [];\r\n while (startOfWeek.isBefore(endOfWeek)) {\r\n dates.push(startOfWeek.clone());\r\n startOfWeek.add(1, 'day');\r\n }\r\n\r\n const weekDayColumns = dates.map((d) => (\r\n \r\n onNavigate(\r\n d.format(),\r\n moment(date).startOf('day').isSame(d) ? 'day' : 'week'\r\n )\r\n }\r\n >\r\n {d.format('dddd')}\r\n
\r\n {d.format('MMM Do')}\r\n
\r\n
\r\n ));\r\n\r\n\r\n const rows = eventsByEquipment.map(({ active, equipment, events }, i) =>\r\n {\r\n \r\n let includeEquipment = true;\r\n let crew = {\"crew\": {\"equipment\":equipment}}; \r\n if(offices !=null && offices.length > 0)\r\n {\r\n \r\n if(equipment!== null)\r\n {\r\n if( equipment.officeRef !=null)\r\n {\r\n if(offices.find(o=>o.id === equipment.officeRef.id) !=null)\r\n {\r\n \r\n }\r\n else\r\n includeEquipment = false;\r\n }\r\n }\r\n }\r\n \r\n if(includeEquipment)\r\n {\r\n return ( \r\n
\r\n
\r\n onEquipmentSelect(equipment)} />\r\n
\r\n {dates.map((d) => (\r\n !d.isBefore(e.startDate) && !d.isAfter(e.endDate)\r\n )}\r\n key={d.format()}\r\n onReschedule={onReschedule}\r\n onScheduleBid={onScheduleBid}\r\n onScheduleDelivery={onScheduleDelivery}\r\n onScheduleJob={onScheduleJob}\r\n onSheeduleAppointment={onSheeduleAppointment}\r\n updateSettings={updateSettings}\r\n />\r\n ))}\r\n
\r\n ) }\r\n } \r\n )\r\n return (\r\n
\r\n
\r\n
\r\n {weekDayColumns}\r\n
\r\n
\r\n {rows} \r\n
\r\n onDeleteEventClick(data.eventId)\r\n : null\r\n }\r\n onEditEventClick={\r\n onEditDeliveryClick\r\n ? (e, data) => onEditDeliveryClick(data.eventId)\r\n : null\r\n }\r\n onOpenClick={\r\n onOpenClick ? (e, data) => onOpenClick(data.eventId) : null\r\n }\r\n showLabels\r\n />\r\n onDeleteEventClick(data.eventId)\r\n : null\r\n }\r\n onEditEventClick={\r\n onEditEventClick ? (e, data) => onEditEventClick(data.eventId) : null\r\n }\r\n onPrintWorkOrder={\r\n onPrintWorkOrder ? (e, data) => onPrintWorkOrder({eventId: data.eventId, date: data.date.format('YYYY-MM-DD')}) : null\r\n }\r\n onOpenClick={\r\n onOpenClick ? (e, data) => onOpenClick(data.eventId) : null\r\n }\r\n showLabels\r\n showMenuItem={showMenuItem}\r\n onContextMenuClick = { (e) => { \r\n onJobContextMenuClick(e.detail.data.eventId) \r\n } }\r\n />\r\n onOpenClick(data.eventId) : null\r\n }\r\n showLabels\r\n />\r\n onDeleteEventClick(data.eventId)\r\n : null\r\n }\r\n onEditEventClick={\r\n (e, data) => {onApptEditEventClick(data.eventId,true)}\r\n }\r\n \r\n onOpenClick={\r\n onOpenClick ? (e, data) =>{ onOpenApptEventClick(data.evt) }: null\r\n }\r\n showLabels\r\n showApptMenuItem={showApptMenuItem}\r\n onShow = { (e,data) => {\r\n onContextMenuClick(e.detail.data) \r\n } }\r\n \r\n />\r\n\r\n\r\n
\r\n );\r\n};\r\n\r\nexport default EquipmentWeekView;\r\n","import { connect } from 'react-redux';\r\n\r\nimport { toggleDeleteModal, toggleDeliveryModal, toggleEditModal} from '../../redux/modals';\r\nimport { fetchCalendar, openEvent, openApptEvent, rescheduleEventExplicit, scheduleAppointmentExplicit, scheduleBid, scheduleJobExplicit, schedulePurchaseOrderExplicit, setActiveCrew, setActiveEquipment,showApptContextMenuItem,hideMenuItem } from '../../redux/calendar';\r\nimport makeEventsByCrew from '../../selectors/eventsByCrew';\r\nimport makeEventsByEquipment from '../../selectors/eventsByEquipment';\r\nimport { open as togglePrintWorkOrderModal } from '../../redux/modals/printWorkOrderModal';\r\nimport EquipmentWeekView from './EquipmentWeekView';\r\nimport { updateSettings } from '../../redux/settings';\r\n\r\nimport {toggleAppointmentModal as onOpenAppointmentCalendarModal, toggleApptEditModal as onOpenEditEventModel} from '../../redux/modals/appintmentCalendarModal';\r\n\r\n\r\n\r\nconst eventsByCrew = makeEventsByCrew(true);\r\nconst eventsByEquipment = makeEventsByEquipment(true);\r\n\r\nconst mapStateToProps = (state) => ({\r\n date: state.calendar.date,\r\n equipments: state.equipments,\r\n events:state.events,\r\n offices:state.settings.offices,\r\n eventsByCrew: eventsByCrew(state),\r\n eventsByEquipment: eventsByEquipment(state), \r\n hasCalendarEventCreate: state.tokenInfo.scope.indexOf('calendarEvents:create') > -1,\r\n hasCalendarEventDelete: state.tokenInfo.scope.indexOf('calendarEvents:delete') > -1,\r\n hasCalendarEventUpdate: state.tokenInfo.scope.indexOf('calendarEvents:update') > -1,\r\n showApptMenuItem: state.calendar.showApptMenuItem,\r\n showMenuItem:state.calendar.showMenuItem,\r\n settings:state.settings\r\n \r\n});\r\n\r\nconst mapDispatchToProps = ({\r\n onCrewSelect: setActiveCrew,\r\n onNavigate: fetchCalendar,\r\n onDeleteEventClick: toggleDeleteModal,\r\n onEditDeliveryClick: toggleDeliveryModal,\r\n onEditEventClick: toggleEditModal,\r\n onOpenClick: openEvent,\r\n onOpenApptEventClick:openApptEvent,\r\n onReschedule: rescheduleEventExplicit,\r\n onScheduleBid: scheduleBid,\r\n onScheduleDelivery: schedulePurchaseOrderExplicit,\r\n onScheduleJob: scheduleJobExplicit,\r\n onPrintWorkOrder: togglePrintWorkOrderModal,\r\n onEquipmentSelect: setActiveEquipment,\r\n onSheeduleAppointment: scheduleAppointmentExplicit,\r\n updateSettings: updateSettings,\r\n onContextMenuClick:showApptContextMenuItem,\r\n onApptEditEventClick:(eventid,show)=> onOpenEditEventModel({eventid,show:show}),\r\n onJobContextMenuClick:hideMenuItem\r\n});\r\n\r\nconst mergeProps = ({ hasCalendarEventCreate, hasCalendarEventDelete, hasCalendarEventUpdate, ...stateProps }, { onDeleteEventClick, onEditDeliveryClick, onEditEventClick, onReschedule, onScheduleBid, onScheduleDelivery, onScheduleJob,onSheeduleAppointment,updateSettings, onPrintWorkOrder,onContextMenuClick,onApptEditEventClick, ...dispatchProps }, ownProps) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps,\r\n onDeleteEventClick: hasCalendarEventDelete ? onDeleteEventClick : null,\r\n onEditDeliveryClick: hasCalendarEventUpdate ? onEditDeliveryClick : null,\r\n onEditEventClick: hasCalendarEventUpdate ? onEditEventClick : null,\r\n onScheduleBid: hasCalendarEventCreate ? onScheduleBid : null,\r\n onReschedule: hasCalendarEventUpdate ? onReschedule : null,\r\n onScheduleDelivery: hasCalendarEventCreate ? onScheduleDelivery : null,\r\n onScheduleJob: hasCalendarEventCreate ? onScheduleJob : null,\r\n onPrintWorkOrder: hasCalendarEventUpdate ? onPrintWorkOrder : null,\r\n onSheeduleAppointment: hasCalendarEventCreate ? onSheeduleAppointment : null,\r\n updateSettings:updateSettings,\r\n onContextMenuClick:onContextMenuClick,\r\n onApptEditEventClick:onApptEditEventClick\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps, mergeProps)(EquipmentWeekView);\r\n","import React from 'react';\r\nimport classNames from 'classnames';\r\nimport { useDrag } from 'react-dnd';\r\nimport tinycolor from 'tinycolor2';\r\n\r\n// import Address from '../../shared/Address';\r\n// import Currency from '../../shared/Currency';\r\nimport styles from './AvailableEmployees.css';\r\nimport { bool } from 'prop-types';\r\n\r\nexport const DraggableType = 'crew';\r\n\r\n\r\nconst makeStyle = ({ color }) => !color ? null : {\r\n border: '1px solid #ccc', \r\n padding: '2px 8px', \r\n borderRadius: '5px', \r\n fontWeight:'bold',\r\n};\r\nconst employeeList = ({color}) => !color ? {\r\n border: '1px solid #ccc', \r\n padding: '2px 8px', \r\n borderRadius: '5px', \r\n fontWeight:'bold',\r\n\r\n} :{\r\n border: '1px solid #ccc', \r\n padding: '2px 8px', \r\n borderRadius: '5px', \r\n fontWeight:'bold',\r\n backgroundColor: color,\r\n};\r\n\r\nconst StandardCrew = ({ standardcrew,color }) => {\r\n\r\n const [, drag] = useDrag({\r\n item: { id: standardcrew.id, standardcrew, type: DraggableType },\r\n });\r\n return (\r\n \r\n \r\n
{standardcrew.equipment? standardcrew.equipment.name:'' } \r\n \r\n
\r\n {\r\n standardcrew.resources.map((r) =>\r\n {\r\n return (\r\n
{r.resource.firstName} {r.resource.lastName}
\r\n ) \r\n }\r\n )\r\n }\r\n
\r\n
\r\n \r\n \r\n
\r\n );\r\n};\r\nexport default StandardCrew;\r\n","import React from 'react';\r\nimport classNames from 'classnames';\r\n// import { Panel } from 'react-bootstrap';\r\n\r\nimport LoadingSpinner from '../../shared/LoadingSpinner';\r\nimport Employee from './Employee';\r\nimport StandardCrew from './StandardCrew';\r\nimport styles from './AvailableEmployees.css';\r\nimport moment from 'moment';\r\n\r\nconst Results = ({ employees, loading, events, standardcrews, date, updateSelectedEmployeeList, entity, ...props }) => \r\n{\r\n\r\nlet selectedDayEmployees = [];\r\nlet sortedDayEmployees = [];\r\nlet seleccolor = '#304e1e' \r\n employees.map(emp => { \r\n events.map( evt =>{\r\n \r\n evt.crew? evt.crew.resources.forEach(res => {\r\n //if(res.resource.id === emp.id && moment(evt.endDate).isSame(date,'day') )\r\n if(res.resource && res.resource.id === emp.id && entity === evt.evttype )\r\n { \r\n selectedDayEmployees.push(parseInt(emp.id)); \r\n } \r\n }):''; \r\n })\r\n })\r\n \r\n employees.map(emp => { \r\n if(selectedDayEmployees.indexOf(emp.id) >= 0)\r\n {\r\n sortedDayEmployees.push({id:emp.id,firstName:emp.firstName,lastName:emp.lastName,color:seleccolor});\r\n }\r\n else\r\n {\r\n sortedDayEmployees.push({id:emp.id,firstName:emp.firstName,lastName:emp.lastName,color:''});\r\n }\r\n })\r\n sortedDayEmployees = sortedDayEmployees.sort((a,b)=>{return a.color.localeCompare(b.color)})\r\n \r\nreturn ( \r\n
\r\n
\r\n {loading && }\r\n

Standard Crew

;\r\n {standardcrews.map((sc)=>{ \r\n if(standardcrews.length > 0)\r\n {\r\n \r\n return(\r\n \r\n )\r\n }\r\n else\r\n return ('');\r\n }) }\r\n\r\n \r\n

Employees

\r\n \r\n { \r\n \r\n sortedDayEmployees.map((e) => \r\n {\r\n return ( \r\n \r\n ) }\r\n\r\n \r\n )}\r\n
\r\n
\r\n)\r\n \r\n \r\n};\r\n\r\n\r\n\r\nexport default Results;\r\n\r\n","import React from 'react';\r\nimport { ControlLabel, FormControl, FormGroup, Panel } from 'react-bootstrap';\r\nimport FontAwesome from 'react-fontawesome';\r\nimport Select from 'react-select-plus';\r\n\r\n\r\n\r\nconst SearchForm = ({ form, onFormUpdate }) => (\r\n \r\n \r\n \r\n Search Employees\r\n \r\n \r\n \r\n \r\n \r\n Name / Number\r\n onFormUpdate({ query: e.target.value })} value={form.query || ''} />\r\n \r\n \r\n \r\n \r\n \r\n);\r\n\r\nexport default SearchForm;\r\n","import React from 'react';\r\nimport moment from 'moment';\r\n\r\nimport styles from './AvailableEmployees.css';\r\nimport Results from './Results';\r\nimport SearchForm from './SearchForm';\r\n\r\n\r\n\r\nconst AvailableEmployees = ({\r\n employees, \r\n form, \r\n loading,\r\n events,\r\n onFormUpdate,\r\n standardcrews,\r\n date,\r\n updateSelectedEmployeeList,\r\n entity\r\n \r\n }) => \r\n { \r\n \r\n return ( \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n)};\r\n\r\nexport default AvailableEmployees;\r\n","import { connect } from 'react-redux';\r\nimport { searchEmployees, updateSearchCriteria } from '../../../redux/searchEmployees';\r\nimport {updateSelectedEmployeeList} from '../../../redux/calendar';\r\nimport AvailableEmployees from './AvailableEmplyees';\r\nimport { distinctStandardCrews } from '../../../redux/standardCrews';\r\n\r\n\r\nconst mapStateToProps = (state) => ({ \r\n ...state.searchEmployees,\r\n ...state.events,\r\n standardcrews: distinctStandardCrews(state),\r\n date:state.calendar.date,\r\n form: state.searchEmployees.form,\r\n entity:state.settings.entity \r\n});\r\n\r\nconst mapDispatchToProps = {\r\n \r\n onEmployeeSearch: searchEmployees, \r\n onFormUpdate: updateSearchCriteria,\r\n updateSelectedEmployeeList: updateSelectedEmployeeList,\r\n \r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(AvailableEmployees);\r\n","import React, { useState } from 'react';\r\nimport AvailableEmployees from '.';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst Sidebar = ({\r\n employeeToggle,\r\n entity,\r\n setEmployeeToggle}) => { \r\n const handleClick = ()=>{ \r\n setEmployeeToggle({toggleState:!employeeToggle.toggleState,toggleClass:employeeToggle.toggleState ? 'fa fa-chevron-right' : 'fa fa-chevron-left'}); \r\n }\r\n return ( \r\n <>\r\n handleClick()}>\r\n \r\n {employeeToggle.toggleState ?\r\n \r\n : <> \r\n } \r\n \r\n )\r\n};\r\n\r\nSidebar.prototypes =\r\n{\r\n setEmployeeToggle: PropTypes.func,\r\n};\r\n\r\nexport default Sidebar","import React from 'react';\r\nimport classNames from 'classnames';\r\nimport { useDrag } from 'react-dnd';\r\nimport tinycolor from 'tinycolor2';\r\n\r\nimport Address from '../../shared/Address';\r\nimport styles from './AvailableBids.css';\r\n\r\nexport const DraggableType = 'bid';\r\n\r\nconst shouldDisable = (_, activeCrew) => !!activeCrew;\r\n\r\nconst makeStyle = ({ color }) => !color ? null : {\r\n backgroundColor: color,\r\n borderColor: tinycolor(color).darken(40),\r\n color: tinycolor(color).getBrightness() < 150 ? '#fff' : '#000'\r\n};\r\n\r\nconst Bid = ({ activeCrew, detailEnabled, bid, locationEnabled, onClick }) => {\r\n const disable = shouldDisable(bid, activeCrew);\r\n const [, drag] = useDrag({\r\n item: { bidId: bid.id, bid, type: DraggableType },\r\n });\r\n return (\r\n \r\n

{bid.name}

\r\n {bid.location &&

{bid.location}

}\r\n {bid.office &&

{bid.office.name}

}\r\n {locationEnabled &&
}\r\n {detailEnabled && bid.salesperson &&

Salesperson: {bid.salesperson.firstName} {bid.salesperson.lastName}

}\r\n {detailEnabled && bid.priorityNotes &&

Priority Notes: {bid.priorityNotes}

}\r\n \r\n );\r\n};\r\n\r\nexport default Bid;\r\n","import React from 'react';\r\nimport classNames from 'classnames';\r\n\r\nimport LoadingSpinner from '../../shared/LoadingSpinner';\r\nimport Bid from './Bid';\r\nimport styles from './AvailableBids.css';\r\n\r\nconst Results = ({ activeCrew, detailEnabled, bids, loading, locationEnabled, onBidClick, ...props }) => (\r\n
\r\n
\r\n {loading && }\r\n {bids.map((b) => (\r\n onBidClick(b.id)}\r\n />\r\n ))}\r\n
\r\n
\r\n);\r\n\r\nexport default Results;\r\n","import React from 'react';\r\nimport { ControlLabel, FormControl, FormGroup, Panel } from 'react-bootstrap';\r\nimport FontAwesome from 'react-fontawesome';\r\nimport Select from 'react-select-plus';\r\n\r\nconst bidTypeOption = (bidType) => (\r\n \r\n {bidType.value}\r\n \r\n);\r\n\r\nconst salespersonOption = ({ calendarColor, firstName, lastName }) => (\r\n \r\n {`${firstName || ''} ${lastName || ''}`}\r\n \r\n);\r\n\r\nconst SearchForm = ({ customers, dropdowns, form, onCustomerSearch, onFormUpdate }) => (\r\n \r\n \r\n \r\n Search Bids\r\n \r\n \r\n \r\n \r\n \r\n Name\r\n onFormUpdate({ query: e.target.value })} value={form.query || ''} />\r\n \r\n \r\n Customer\r\n onFormUpdate({ customerId: c ? c.id : null })}\r\n onInputChange={onCustomerSearch}\r\n value={form.customerId || ''}\r\n valueKey=\"id\"\r\n />\r\n \r\n \r\n Bid Type\r\n onFormUpdate({ bidTypes: e })}\r\n />\r\n \r\n \r\n Office\r\n onFormUpdate({ offices: e })}\r\n />\r\n \r\n \r\n Salesperson\r\n onFormUpdate({ salespeople: e })}\r\n />\r\n \r\n \r\n \r\n \r\n);\r\n\r\nexport default SearchForm;\r\n","import React from 'react';\r\n\r\nimport styles from './AvailableBids.css';\r\nimport Results from './Results';\r\nimport SearchForm from './SearchForm';\r\n\r\nconst AvailableBids = ({\r\n activeCrew,\r\n customers,\r\n detailEnabled,\r\n dropdowns,\r\n form,\r\n bids,\r\n loading,\r\n locationEnabled,\r\n onCustomerSearch,\r\n onBidClick,\r\n onFormUpdate,\r\n}) => (\r\n
\r\n \r\n \r\n
\r\n);\r\n\r\nexport default AvailableBids;\r\n","import { connect } from 'react-redux';\r\nimport { createSelector } from 'reselect';\r\n\r\nimport { scheduleBid } from '../../../redux/calendar';\r\nimport { updateSearchCriteria, searchCustomers } from '../../../redux/searchBids';\r\nimport AvailableBids from './AvailableBids';\r\n\r\nconst colors = createSelector(\r\n (state) => state.settings.color,\r\n (state) => state.dropdowns,\r\n (colorMode, { jobStatuses, jobTypes, offices }) => {\r\n switch (colorMode) {\r\n case 'jobStatus':\r\n return jobStatuses;\r\n case 'office':\r\n return offices;\r\n default:\r\n return jobTypes;\r\n }\r\n }\r\n);\r\n\r\nconst bids = createSelector(\r\n (state) => state.searchBids.bids,\r\n (state) => state.settings.color,\r\n colors,\r\n (bids, colorMode, colors) => {\r\n return bids.map((b) => {\r\n let color = null;\r\n switch (colorMode) {\r\n case 'office':\r\n const office = colors.find((office) => b.office && office.id === b.office.id);\r\n color = office ? office.color : null;\r\n break;\r\n case 'salesperson':\r\n const salesperson = b.salesperson;\r\n color = salesperson ? salesperson.calendarColor : null;\r\n break;\r\n }\r\n return { ...b, color };\r\n });\r\n }\r\n)\r\n\r\nconst mapStateToProps = (state) => ({\r\n ...state.searchBids,\r\n activeCrew: state.calendar.activeCrew,\r\n bids: bids(state),\r\n detailEnabled: state.settings.detailEnabled,\r\n dropdowns: state.dropdowns,\r\n locationEnabled: state.settings.locationEnabled\r\n});\r\n\r\nconst mapDispatchToProps = {\r\n onBidClick: scheduleBid,\r\n onCustomerSearch: searchCustomers,\r\n onFormUpdate: updateSearchCriteria\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(AvailableBids);\r\n","import React from 'react';\r\nimport classNames from 'classnames';\r\nimport { useDrag } from 'react-dnd';\r\nimport tinycolor from 'tinycolor2';\r\n\r\nimport Address from '../../shared/Address';\r\nimport Currency from '../../shared/Currency';\r\nimport styles from './AvailableJobs.css';\r\n\r\nexport const DraggableType = 'job';\r\n\r\nconst shouldDisable = (job, activeCrew) => activeCrew\r\n && job.office\r\n && !activeCrew.offices.some(o => o.id === job.office.id);\r\n\r\nconst makeStyle = ({ color }) => !color ? null : {\r\n backgroundColor: color,\r\n borderColor: tinycolor(color).darken(40),\r\n color: tinycolor(color).getBrightness() < 150 ? '#fff' : '#000'\r\n};\r\n\r\nconst Job = ({ activeCrew, detailEnabled, financialEnabled, job, locationEnabled, onClick }) => {\r\n const disable = shouldDisable(job, activeCrew);\r\n const [, drag] = useDrag({\r\n item: { jobId: job.id, job, type: DraggableType },\r\n });\r\n return (\r\n \r\n

{job.jobNumber} - {job.name}

\r\n {job.location &&

{job.location}

}\r\n {job.office &&

{job.office.name}

}\r\n {locationEnabled &&
}\r\n {detailEnabled && job.salesperson &&

Salesperson: {job.salesperson.firstName} {job.salesperson.lastName}

}\r\n {detailEnabled && job.priorityNotes &&

Priority Notes: {job.priorityNotes}

}\r\n {financialEnabled && job.capacities && job.capacities.laborAmount &&

Est Labor:

}\r\n \r\n );\r\n};\r\n\r\nexport default Job;\r\n","import React from 'react';\r\nimport classNames from 'classnames';\r\n// import { Panel } from 'react-bootstrap';\r\n\r\nimport LoadingSpinner from '../../shared/LoadingSpinner';\r\nimport Job from './Job';\r\nimport styles from './AvailableJobs.css';\r\n\r\nconst Results = ({ activeCrew, detailEnabled, financialEnabled, jobs, loading, locationEnabled, onJobClick, ...props }) => (\r\n
\r\n
\r\n {loading && }\r\n {jobs.map((j) => (\r\n onJobClick(j.id)}\r\n />\r\n ))}\r\n
\r\n
\r\n);\r\n\r\nexport default Results;\r\n","import React from 'react';\r\nimport { ControlLabel, FormControl, FormGroup, Panel } from 'react-bootstrap';\r\nimport FontAwesome from 'react-fontawesome';\r\nimport Select from 'react-select-plus';\r\n\r\nconst bidTypeOption = (bidType) => (\r\n \r\n {bidType.value}\r\n \r\n);\r\n\r\nconst jobStatusOption = (jobStatus) => (\r\n \r\n {jobStatus.status}\r\n \r\n);\r\n\r\nconst jobTypeOption = (jobType) => (\r\n \r\n {jobType.name}\r\n \r\n);\r\n\r\nconst salespersonOption = ({ calendarColor, firstName, lastName }) => (\r\n \r\n {`${firstName || ''} ${lastName || ''}`}\r\n \r\n);\r\n\r\nconst SearchForm = ({ customers, dropdowns, form, onCustomerSearch, onFormUpdate }) => (\r\n \r\n \r\n \r\n Search Jobs\r\n \r\n \r\n \r\n \r\n \r\n Name/Number\r\n onFormUpdate({ query: e.target.value })} value={form.query || ''} />\r\n \r\n \r\n Customer\r\n onFormUpdate({ customerId: c ? c.id : null })}\r\n onInputChange={onCustomerSearch}\r\n value={form.customerId || ''}\r\n valueKey=\"id\"\r\n />\r\n \r\n \r\n Job Status\r\n onFormUpdate({ jobStatuses: e })}\r\n />\r\n \r\n \r\n Job Type\r\n onFormUpdate({ jobTypes: e })}\r\n />\r\n \r\n \r\n Bid Type\r\n onFormUpdate({ bidTypes: e })}\r\n />\r\n \r\n \r\n Office\r\n onFormUpdate({ offices: e })}\r\n />\r\n \r\n \r\n Salesperson\r\n onFormUpdate({ salespeople: e })}\r\n />\r\n \r\n \r\n \r\n \r\n);\r\n\r\nexport default SearchForm;\r\n","import React from 'react';\r\n\r\nimport styles from './AvailableJobs.css';\r\nimport Results from './Results';\r\nimport SearchForm from './SearchForm';\r\n\r\nconst AvailableJobs = ({\r\n activeCrew,\r\n customers,\r\n detailEnabled,\r\n dropdowns,\r\n financialEnabled,\r\n form,\r\n jobs,\r\n loading,\r\n locationEnabled,\r\n onCustomerSearch,\r\n onFormUpdate,\r\n onJobClick\r\n}) => (\r\n
\r\n \r\n \r\n
\r\n);\r\n\r\nexport default AvailableJobs;\r\n","import { connect } from 'react-redux';\r\nimport { createSelector } from 'reselect';\r\n\r\nimport { scheduleJobToActiveCrew } from '../../../redux/calendar';\r\nimport { updateSearchCriteria, searchCustomers } from '../../../redux/searchJobs';\r\nimport AvailableJobs from './AvailableJobs';\r\n\r\nconst colors = createSelector(\r\n (state) => state.settings.color,\r\n (state) => state.dropdowns,\r\n (colorMode, { jobStatuses, jobTypes, offices }) => {\r\n switch (colorMode) {\r\n case 'jobStatus':\r\n return jobStatuses;\r\n case 'office':\r\n return offices;\r\n default:\r\n return jobTypes;\r\n }\r\n }\r\n);\r\n\r\nconst jobs = createSelector(\r\n (state) => state.searchJobs.jobs,\r\n (state) => state.settings.color,\r\n colors,\r\n (jobs, colorMode, colors) => jobs.map((j) => {\r\n let color = null;\r\n switch (colorMode) {\r\n case 'jobType':\r\n const jobType = colors.find((jobType) => jobType.name === j.jobType);\r\n color = jobType ? jobType.color : null;\r\n break;\r\n case 'office':\r\n const office = colors.find((office) => j.office && office.id === j.office.id);\r\n color = office ? office.color : null;\r\n break;\r\n case 'salesperson':\r\n const salesperson = j.salesperson;\r\n color = salesperson ? salesperson.calendarColor : null;\r\n break;\r\n default:\r\n const jobStatus = colors.find((jobStatus) => jobStatus.value === j.status);\r\n color = jobStatus ? jobStatus.color : null;\r\n break;\r\n }\r\n return { ...j, color };\r\n })\r\n)\r\n\r\nconst mapStateToProps = (state) => ({\r\n ...state.searchJobs,\r\n activeCrew: state.calendar.activeCrew,\r\n jobs: jobs(state),\r\n detailEnabled: state.settings.detailEnabled,\r\n dropdowns: state.dropdowns,\r\n financialEnabled: state.settings.financialEnabled,\r\n locationEnabled: state.settings.locationEnabled\r\n});\r\n\r\nconst mapDispatchToProps = {\r\n onCustomerSearch: searchCustomers,\r\n onJobClick: scheduleJobToActiveCrew,\r\n onFormUpdate: updateSearchCriteria\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(AvailableJobs);\r\n","import React from 'react';\r\nimport classNames from 'classnames';\r\nimport { useDrag } from 'react-dnd';\r\n\r\nimport styles from './AvailablePurchaseOrders.css';\r\n\r\nexport const DraggableType = 'purchaseOrder';\r\n\r\nconst shouldDisable = (purchaseOrder, activeCrew) => activeCrew\r\n && purchaseOrder.office\r\n && !activeCrew.offices.some(o => o.id === purchaseOrder.office.id);\r\n\r\nconst PurchaseOrder = ({ activeCrew, locationEnabled, purchaseOrder, onClick }) => {\r\n const disable = shouldDisable(purchaseOrder, activeCrew);\r\n const [, drag] = useDrag({\r\n item: { purchaseOrderId: purchaseOrder.id, purchaseOrder, type: DraggableType },\r\n });\r\n return (\r\n \r\n

{purchaseOrder.poNumber} - {purchaseOrder.name}

\r\n {purchaseOrder.office ?

{purchaseOrder.office.name}

: null}\r\n {purchaseOrder.status ?

{purchaseOrder.status.name}

: null}\r\n {purchaseOrder.supplier ?

{purchaseOrder.supplier.name}

: null}\r\n {locationEnabled && purchaseOrder.shipTo ?

{purchaseOrder.shipTo}

: null}\r\n \r\n );\r\n};\r\n\r\nexport default PurchaseOrder;\r\n","import React from 'react';\r\n// import { Panel } from 'react-bootstrap';\r\n\r\nimport PurchaseOrder from './PurchaseOrder';\r\n\r\nconst Results = ({ activeCrew, locationEnabled, purchaseOrders, onPurchaseOrderClick, ...props }) => (\r\n
\r\n
\r\n {purchaseOrders.map((p) => (\r\n onPurchaseOrderClick(p.id)}\r\n />\r\n ))}\r\n
\r\n
\r\n);\r\n\r\nexport default Results;\r\n","import React from 'react';\r\nimport { ControlLabel, FormControl, FormGroup, Panel } from 'react-bootstrap';\r\nimport FontAwesome from 'react-fontawesome';\r\nimport Select from 'react-select-plus';\r\n\r\nconst SearchForm = ({ dropdowns, form, onFormUpdate }) => (\r\n \r\n \r\n \r\n Search Purchase Orders\r\n \r\n \r\n \r\n \r\n \r\n Name/PO Number\r\n onFormUpdate({ query: e.target.value })} value={form.query || ''} />\r\n \r\n \r\n Status\r\n onFormUpdate({ statuses: e })}\r\n />\r\n \r\n \r\n Office\r\n onFormUpdate({ offices: e })}\r\n />\r\n \r\n \r\n Supplier\r\n onFormUpdate({ suppliers: e })}\r\n />\r\n \r\n \r\n \r\n \r\n);\r\n\r\nexport default SearchForm;\r\n","import React from 'react';\r\n\r\nimport styles from './AvailablePurchaseOrders.css';\r\nimport Results from './Results';\r\nimport SearchForm from './SearchForm';\r\n\r\nconst AvailablePurchaseOrders = ({ activeCrew, dropdowns, form, loading, locationEnabled, onFormUpdate, purchaseOrders, onPurchaseOrderClick }) => (\r\n
\r\n \r\n \r\n
\r\n);\r\n\r\nexport default AvailablePurchaseOrders;\r\n","import { connect } from 'react-redux';\r\n\r\nimport { schedulePurchaseOrderToActiveCrew } from '../../../redux/calendar';\r\nimport { updateSearchCriteria } from '../../../redux/searchPurchaseOrders';\r\nimport AvailablePurchaseOrders from './AvailablePurchaseOrders';\r\n\r\nconst mapStateToProps = (state) => ({\r\n ...state.searchPurchaseOrders,\r\n activeCrew: state.calendar.activeCrew,\r\n dropdowns: state.dropdowns,\r\n locationEnabled: state.settings.locationEnabled,\r\n purchaseOrders: state.searchPurchaseOrders.purchaseOrders\r\n});\r\n\r\nconst mapDispatchToProps = {\r\n onPurchaseOrderClick: schedulePurchaseOrderToActiveCrew,\r\n onFormUpdate: updateSearchCriteria\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(AvailablePurchaseOrders);\r\n","import React from 'react';\r\nimport classNames from 'classnames';\r\nimport { useDrag } from 'react-dnd';\r\nimport tinycolor from 'tinycolor2';\r\n\r\nimport Address from '../../shared/Address';\r\nimport styles from './AvailableAppointments.css';\r\n\r\nexport const DraggableType = 'appointment';\r\n\r\nconst makeStylec = ({ color }) => !color ? null : {\r\n backgroundColor: color,\r\n borderColor: tinycolor(color).darken(40),\r\n color: tinycolor(color).getBrightness() < 150 ? '#fff' : '#000'\r\n};\r\n\r\nconst makeStyle = ({ assignedToResource}) =>{ return (assignedToResource && assignedToResource.calendarColor ? {\r\n backgroundColor: assignedToResource.calendarColor,\r\n borderColor: tinycolor(assignedToResource.calendarColor).darken(40),\r\n color: tinycolor(assignedToResource.calendarColor).getBrightness() < 150 ? '#fff' : '#000'\r\n}:null)};\r\n\r\nconst Appointment = ({ appointment, onClick,color }) => {\r\n\r\n \r\n const [, drag] = useDrag({\r\n item: { appointmentId: appointment.id, appointment, type: DraggableType },\r\n });\r\n return (\r\n \r\n {appointment.officeName && appointment.name !='' && (

Datasheet Name: {appointment.name}

)}\r\n {!appointment.officeName &&

Customer Name: {appointment.name}

}\r\n\r\n \r\n {appointment.officeName && (

{appointment.officeName}

)}\r\n {appointment.office && (

{appointment.office.name}

)}\r\n {appointment.assignedToResource && (

Sales Person: { appointment.assignedToResource.firstName + ' ' + appointment.assignedToResource.lastName }

)}\r\n \r\n {appointment.customer && appointment.customer.name !='' &&(

Customer: {appointment.customer.name}

)}\r\n {appointment.customer && appointment.customer.phoneNumber !='' && (

Phone: {appointment.customer.phoneNumber}

)}\r\n\r\n \r\n \r\n );\r\n};\r\n\r\nexport default Appointment;\r\n","import React from 'react';\r\nimport classNames from 'classnames';\r\n\r\nimport LoadingSpinner from '../../shared/LoadingSpinner';\r\nimport Appointment from './Appointment';\r\nimport styles from './AvailableAppointments.css';\r\n\r\nconst Results = ({ appointments, loading, onBidClick, ...props }) => \r\n{\r\n \r\n return( \r\n
\r\n
\r\n {loading && }\r\n {appointments.map((a) => (\r\n onBidClick(a.id)}\r\n color={'#0f0'}\r\n \r\n />\r\n ))}\r\n
\r\n
\r\n);}\r\n\r\nexport default Results;\r\n","import React from 'react';\r\nimport { ControlLabel, FormControl, FormGroup, Panel } from 'react-bootstrap';\r\nimport FontAwesome from 'react-fontawesome';\r\nimport Select from 'react-select-plus';\r\nimport Switch from '../../shared/Switch';\r\n\r\n\r\nconst bidTypeOption = (bidType) => (\r\n \r\n {bidType.value}\r\n \r\n);\r\n\r\nconst salespersonOption = ({ calendarColor, firstName, lastName }) => (\r\n \r\n {`${firstName || ''} ${lastName || ''}`}\r\n \r\n);\r\n\r\nconst SearchForm = ({ customers, dropdowns, form, onCustomerSearch, onFormUpdate,datasheetsearch,onDatasheetSearchChange }) => \r\n{\r\n\r\nif(datasheetsearch)\r\n{\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n Search Datasheet/Customers\r\n \r\n \r\n \r\n \r\n \r\n \r\n Datasheet Name\r\n onFormUpdate({ query: e.target.value })} value={form.query || ''} />\r\n \r\n \r\n Customer Name\r\n onFormUpdate({ customerquery: e.target.value })} value={form.customerquery || ''} />\r\n \r\n \r\n \r\n Office\r\n onFormUpdate({ offices: e })}\r\n />\r\n \r\n \r\n Salesperson\r\n onFormUpdate({ salespeople: e })}\r\n />\r\n \r\n \r\n \r\n \r\n)}\r\nelse\r\n{return (\r\n \r\n \r\n \r\n Search Datasheet/Customers\r\n \r\n \r\n \r\n \r\n \r\n \r\n Customer Name\r\n onFormUpdate({ query: e.target.value })} value={form.query || ''} />\r\n \r\n \r\n \r\n Office\r\n onFormUpdate({ offices: e })}\r\n />\r\n \r\n \r\n Salesperson\r\n onFormUpdate({ salespeople: e })}\r\n />\r\n \r\n \r\n \r\n \r\n)\r\n}\r\n};\r\n\r\nexport default SearchForm;\r\n","import React from 'react';\r\n\r\nimport styles from './AvailableAppointments.css';\r\nimport Results from './Results';\r\nimport SearchForm from './SearchForm';\r\n\r\nconst AvailableAppointments = ({ \r\n customers,\r\n detailEnabled,\r\n dropdowns,\r\n form,\r\n appointments,\r\n loading, \r\n onCustomerSearch,\r\n onBidClick,\r\n onFormUpdate,\r\n onDatasheetSearchChange,\r\n datasheetsearch\r\n}) => {\r\n \r\n var updatedappointments = appointments.map((b) => {\r\n if(b.officeName)\r\n { return {...b, eventtype:'datasheet' } }\r\n else\r\n { return {...b, eventtype:'customer' } }\r\n });\r\n\r\n updatedappointments.sort(function(a, b){return b.id - a.id});\r\n\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n)};\r\n\r\nexport default AvailableAppointments;\r\n","import { connect } from 'react-redux';\r\nimport { createSelector } from 'reselect';\r\n\r\nimport { scheduleBid } from '../../../redux/calendar';\r\n\r\nimport { updateSearchCriteria, searchCustomers } from '../../../redux/searchAppointments';\r\nimport AvailableAppointments from './AvailableAppointments';\r\nimport { toggleDatasheetsearch } from '../../../redux/searchAppointments';\r\n\r\nconst colors = createSelector(\r\n (state) => state.settings.color,\r\n (state) => state.dropdowns,\r\n (colorMode, { jobStatuses, jobTypes, offices }) => {\r\n switch (colorMode) {\r\n case 'jobStatus':\r\n return jobStatuses;\r\n case 'office':\r\n return offices;\r\n default:\r\n return jobTypes;\r\n }\r\n }\r\n);\r\n\r\nconst appointments = createSelector(\r\n (state) => state.searchAppointments.appointments,\r\n (state) => state.settings.color,\r\n colors,\r\n (appointments, colorMode, colors) => {\r\n \r\n return appointments.map((b) => {\r\n let color = null;\r\n switch (colorMode) {\r\n case 'office':\r\n //const office = b.office;\r\n const office = colors.find((office) => b.office && office.id === b.office.id);\r\n color = office ? office.color : null;\r\n break;\r\n case 'salesperson':\r\n const salesperson = b.assignedToResource;\r\n color = salesperson ? salesperson.calendarColor : null;\r\n break;\r\n }\r\n return { ...b, color };\r\n });\r\n }\r\n)\r\n\r\nconst mapStateToProps = (state) => ({\r\n ...state.searchAppointments, \r\n activeCrew: state.calendar.activeCrew,\r\n appointments: appointments(state),\r\n detailEnabled: state.settings.detailEnabled,\r\n dropdowns: state.dropdowns,\r\n locationEnabled: state.settings.locationEnabled,\r\n datasheetsearch:state.searchAppointments.datasheetsearch\r\n});\r\n\r\nconst mapDispatchToProps = {\r\n onBidClick: scheduleBid,\r\n onCustomerSearch: searchCustomers,\r\n onFormUpdate: updateSearchCriteria,\r\n onDatasheetSearchChange:toggleDatasheetsearch\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(AvailableAppointments);\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\n\r\nimport AvailableBids from './AvailableBids';\r\nimport AvailableJobs from './AvailableJobs';\r\nimport AvailablePurchaseOrders from './AvailablePurchaseOrders';\r\nimport AvailableAppointments from './AvailableAppointments';\r\n\r\nconst AvailableEvents = ({ entity }) => {\r\n switch (entity) {\r\n case 'bids':\r\n return ;\r\n case 'jobs':\r\n return ;\r\n case 'purchaseOrders':\r\n return ;\r\n case 'appointments':\r\n return ;\r\n\r\n default:\r\n return null;\r\n }\r\n};\r\n\r\nconst mapStateToProps = (state) => ({\r\n entity: state.settings.entity\r\n});\r\n\r\nconst mapDispatchToProps = {};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(AvailableEvents);\r\n","import React, { useState } from 'react'\r\nimport AvailableEvents from '../../AvailableEvents'\r\nimport FontAwesome from 'react-fontawesome';\r\n\r\nconst SidebarJobs = ({\r\n jobToggle,\r\n setJobToggle}) => {\r\n const handleClick = () =>{\r\n setJobToggle({toggleState:!jobToggle.toggleState,toggleClass:jobToggle.toggleState ? 'fa fa-chevron-left' : 'fa fa-chevron-right'}); \r\n }\r\n return (\r\n <>\r\n \r\n \r\n {jobToggle.toggleState ?\r\n \r\n : <> \r\n } \r\n \r\n )\r\n}\r\n\r\nexport default SidebarJobs","import React from 'react';\r\nimport { Nav, NavItem } from 'react-bootstrap';\r\nimport { DndProvider } from 'react-dnd';\r\nimport HTML5Backend from 'react-dnd-html5-backend';\r\nimport MultiBackend, { TouchTransition } from 'react-dnd-multi-backend';\r\nimport TouchBackend from 'react-dnd-touch-backend';\r\nimport FontAwesome from 'react-fontawesome';\r\nimport DayView from './DayView';\r\nimport Dispatcher from './Dispatcher';\r\nimport {\r\n CrewModal,\r\n DeleteEventModal,\r\n DeliveryModal, \r\n EditEventModal,\r\n LoadReportModal,\r\n PrintWorkOrderModal,\r\n SettingsModal\r\n} from './modals';\r\nimport MonthView from './MonthView';\r\nimport styles from './Scheduler.css';\r\nimport SchedulerNavbar from './SchedulerNavbar';\r\nimport WeekView from './WeekView';\r\nimport EquipmentWeekView from './EquipmentWeekView'\r\nimport Sidebar from './AvailableEvents/AvailableEmployees/Sidebar';\r\nimport SidebarJobs from './AvailableEvents/AvailableJobs/SidebarJobs';\r\nimport AppointmentCalendarModal from './modals/AppointmentCalendarModal';\r\n\r\n\r\n\r\nconst CustomHTML5toTouch = {\r\n backends: [\r\n {\r\n backend: HTML5Backend\r\n },\r\n {\r\n backend: TouchBackend,\r\n options: { enableMouseEvents: true }, // Note that you can call your backends with options\r\n preview: false,\r\n transition: TouchTransition\r\n }\r\n ]\r\n};\r\n\r\nconst componentSelector = (mode,selectedWeekView) => {\r\n switch (mode) {\r\n case 'day':\r\n return DayView;\r\n case 'week':\r\n if(selectedWeekView ==='equipment')\r\n return EquipmentWeekView;\r\n else \r\n return WeekView;\r\n case 'month':\r\n return MonthView;\r\n case 'dispatch':\r\n return Dispatcher;\r\n default:\r\n return DayView;\r\n }\r\n};\r\n\r\nconst Scheduler = ({\r\n entity,\r\n schedulerView,\r\n mode,\r\n onBidsTabClick,\r\n onDeliveriesTabClick,\r\n onJobsTabClick, \r\n onAppointmentsTabClick,\r\n onToggleBids, \r\n onToggleDeliveries,\r\n onToggleJobs,\r\n showBids,\r\n onToggleAppointments,\r\n showAppointments,\r\n showDeliveries,\r\n showJobs,\r\n showSearch,\r\n showEmployees, \r\n setEmployeeToggle, \r\n setJobToggle,\r\n jobSearchToggle,\r\n employeeSearchToggle,\r\n \r\n}) => {\r\n const Component = componentSelector(mode,schedulerView);\r\n \r\n if(mode === 'week' && schedulerView ==='equipment' )\r\n { \r\n if(entity ==='appointments')\r\n {\r\n return (\r\n \r\n
\r\n \r\n
\r\n {showEmployees && (\r\n
\r\n \r\n
)}\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n {showSearch && (\r\n
\r\n \r\n
\r\n )}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n ); \r\n } \r\n else\r\n {\r\n return (\r\n\r\n \r\n
\r\n \r\n
\r\n {showEmployees && (\r\n
\r\n \r\n
)}\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n {showSearch && (\r\n
\r\n \r\n
\r\n )}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n );\r\n }} \r\n else\r\n {\r\n return (\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n {showSearch && (\r\n
\r\n \r\n
\r\n )}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n );}\r\n};\r\n\r\nexport default Scheduler;\r\n","import { createSelector } from 'reselect';\r\n\r\n/**\r\n * Selector for standard crews based on current filtering criteria.\r\n * Limits displayed standard crews to delivery or installation crews\r\n * depending on what is currently visible.\r\n *\r\n * Note that other standard crews may be displayed if jobs/deliveries they\r\n * are assigned to are visible (this happens later in eventsByCrew.js).\r\n */\r\nexport const equipmentSelector = createSelector(\r\n (state) => state.equipment,\r\n \r\n (equipment) => {\r\n return equipment; // Ne selector now but need to confirm if any selction criteria is required\r\n }\r\n);\r\n","import { ofType } from 'redux-observable';\r\nimport { map, switchMap } from 'rxjs/operators';\r\nimport JobProApi from '../../dependencies/JobProApi';\r\n\r\nconst EQUPIMENT_FIELDS = 'id,color,displayOrder,name, officeRef(id,name)';\r\n\r\n// Action types\r\nconst FETCH_EQUPIPMENTS = 'FETCH_EQUPIPMENTS';\r\nconst FETCH_EQUPIPMENTS_COMPLETE = 'FETCH_EQUPIPMENTS_COMPLETE';\r\n\r\nconst DEFAULT_STATE = {\r\n equipment: [],\r\n loading: false\r\n};\r\n\r\n// Reducer\r\nexport default function equipments (state = DEFAULT_STATE, { payload, type }) {\r\n switch (type) {\r\n case FETCH_EQUPIPMENTS:\r\n return DEFAULT_STATE;\r\n case FETCH_EQUPIPMENTS_COMPLETE:\r\n return { \r\n ...state, \r\n ...payload,\r\n loading: false\r\n }\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\n// Action creators\r\nexport const fetchEquipments = () => ({\r\n type: FETCH_EQUPIPMENTS\r\n});\r\n\r\nconst fetchEquipmentsComplete = (equipment) => (\r\n {\r\n type: FETCH_EQUPIPMENTS_COMPLETE,\r\n payload: { equipment }\r\n}\r\n\r\n);\r\n\r\n// Epics\r\nexport const fetchEquipmentsEpic = (action$) => action$.pipe(\r\n ofType(FETCH_EQUPIPMENTS),\r\n switchMap(() => \r\n {\r\n \r\n const criteria = {\r\n schedulable: true\r\n };\r\n return JobProApi.equipment.query(\r\n criteria,{ \r\n fields: EQUPIMENT_FIELDS\r\n })}),\r\n map(fetchEquipmentsComplete)\r\n);\r\n\r\n\r\n// Selectors\r\nexport * from './selector';","import React from 'react';\r\nimport { connect } from 'react-redux';\r\n\r\nimport { fetchCalendar, toggleBids, toggleDeliveries, toggleJobs,changeWeekView,toggleAppoinments } from '../redux/calendar';\r\nimport { fetchStandardCrews } from '../redux/standardCrews';\r\nimport { fetchDropdowns } from '../redux/dropdowns';\r\nimport { fetchOrganization } from '../redux/organization';\r\nimport { fetchAvailableBids } from '../redux/searchBids';\r\nimport { fetchAvailableJobs,setJobToggle } from '../redux/searchJobs';\r\nimport { fetchAvailablePurchaseOrders } from '../redux/searchPurchaseOrders';\r\nimport { fieldsSelector, loadSavedSettings, updateSettings } from '../redux/settings';\r\nimport { fetchTokenInfo } from '../redux/tokenInfo';\r\nimport { fetchWorkOrderTemplates } from '../redux/workOrders';\r\nimport Scheduler from '../components/Scheduler';\r\nimport { fetchAvailableEmployees,setEmployeeToggle } from '../redux/searchEmployees'\r\nimport { fetchEquipments } from '../redux/equipments'\r\nimport { fetchAvailableAppointments } from '../redux/searchAppointments';\r\nimport { searchCustomers } from '../redux/searchAppointments';\r\nimport { searchDatasheets } from '../redux/searchAppointments';\r\n\r\n\r\n\r\nclass SchedulerContainer extends React.Component {\r\n\r\n componentDidMount() {\r\n const {\r\n date,\r\n mode,\r\n onNeedAvailableBids,\r\n onNeedAvailableJobs,\r\n onNeedAvailablePurchaseOrders,\r\n onNeedCalendar,\r\n onNeedDropdowns,\r\n onNeedOrganization,\r\n onNeedSavedSettings,\r\n onNeedStandardCrews,\r\n onNeedTokenInfo,\r\n onNeedWorkOrderTemplate,\r\n onNeedAvailableEmployees,\r\n onNeedEquipments,\r\n onNeedAvailableAppointments,\r\n onNeedAppointmentCustomer,\r\n onNeedDataSheets\r\n } = this.props;\r\n onNeedSavedSettings();\r\n onNeedTokenInfo();\r\n onNeedOrganization();\r\n onNeedCalendar(date, mode);\r\n onNeedStandardCrews();\r\n onNeedDropdowns();\r\n onNeedAvailableJobs();\r\n onNeedAvailablePurchaseOrders();\r\n onNeedAvailableBids();\r\n onNeedWorkOrderTemplate();\r\n onNeedAvailableEmployees();\r\n onNeedEquipments();\r\n onNeedAvailableAppointments();\r\n onNeedAppointmentCustomer();\r\n onNeedDataSheets();\r\n }\r\n\r\n render() {\r\n return ;\r\n }\r\n\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n loading: state.events.loading,\r\n mode: state.calendar.mode,\r\n showBids: state.calendar.showBids,\r\n showAppointments:state.calendar.showAppointments,\r\n showDeleteModal: state.modals.deleteModal.show,\r\n showDeliveries: state.calendar.showDeliveries,\r\n showJobs: state.calendar.showJobs, \r\n showSearch: (state.calendar.mode === 'week'|| state.calendar.mode === 'day') && state.tokenInfo.scope.indexOf('calendarEvents:create') > -1,\r\n entity: state.settings.entity,\r\n schedulerView:state.settings.schedulerView,\r\n employeeSearchToggle:state.settings.employeeSearchToggle,\r\n jobSearchToggle:state.settings.jobSearchToggle,\r\n showEmployees: state.calendar.mode === 'week' && state.tokenInfo.scope.indexOf('calendarEvents:create') > -1 ,\r\n activeEquipment:state.calendar.activeEquipment,\r\n employeeToggle:state.searchEmployees.employeeToggle,\r\n jobToggle:state.searchJobs.jobToggle,\r\n selectedWeekView:state.calendar.selected_week_view,\r\n \r\n \r\n //employees: state.employees\r\n \r\n});\r\n\r\nconst mapDispatchToProps = {\r\n onBidsTabClick: () => updateSettings({ entity: 'bids' }),\r\n onDeliveriesTabClick: () => updateSettings({ entity: 'purchaseOrders' }),\r\n onJobsTabClick: () => updateSettings({ entity: 'jobs' }), \r\n onAppointmentsTabClick: () => updateSettings({ entity: 'appointments',schedulerView:'equipment' }), \r\n onNeedAvailableBids: fetchAvailableBids,\r\n onNeedAvailableJobs: fetchAvailableJobs,\r\n onNeedAvailablePurchaseOrders: fetchAvailablePurchaseOrders,\r\n onNeedCalendar: fetchCalendar,\r\n onNeedDropdowns: fetchDropdowns,\r\n onNeedOrganization: fetchOrganization,\r\n onNeedSavedSettings: loadSavedSettings,\r\n onNeedStandardCrews: fetchStandardCrews,\r\n onToggleBids: toggleBids,\r\n onToggleDeliveries: toggleDeliveries,\r\n onToggleJobs: toggleJobs,\r\n onToggleAppointments:toggleAppoinments,\r\n onNeedTokenInfo: fetchTokenInfo,\r\n onNeedWorkOrderTemplate: fetchWorkOrderTemplates,\r\n onNeedAvailableEmployees: fetchAvailableEmployees,\r\n onNeedEquipments: fetchEquipments,\r\n setEmployeeToggle:(toggle)=>updateSettings({ employeeSearchToggle: toggle }),\r\n setJobToggle:(toggle)=>updateSettings({ jobSearchToggle: toggle }),\r\n //setJobToggle:setJobToggle,\r\n changeWeekView:changeWeekView,\r\n onNeedAvailableAppointments:fetchAvailableAppointments,\r\n onNeedAppointmentCustomer:searchCustomers,\r\n onNeedDataSheets:searchDatasheets\r\n \r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(SchedulerContainer);\r\n","import './dependencies/Raven';\r\nimport SchedulerContainer from './containers/SchedulerContainer';\r\n\r\nexport default SchedulerContainer;\r\n","import { combineReducers } from 'redux';\r\n\r\nimport calendar from './calendar';\r\nimport dispatcher from './dispatcher';\r\nimport dropdowns from './dropdowns';\r\nimport events from './events';\r\nimport modals from './modals';\r\nimport organization from './organization';\r\nimport searchBids from './searchBids';\r\nimport searchJobs from './searchJobs';\r\nimport searchPurchaseOrders from './searchPurchaseOrders';\r\nimport settings from './settings';\r\nimport standardCrews from './standardCrews';\r\nimport tokenInfo from './tokenInfo';\r\nimport workOrders from './workOrders';\r\nimport searchEmployees from './searchEmployees';\r\nimport equipments from './equipments';\r\nimport searchAppointments from './searchAppointments';\r\n\r\nexport default combineReducers({\r\n calendar,\r\n dispatcher,\r\n dropdowns,\r\n events,\r\n modals,\r\n organization,\r\n searchBids,\r\n searchJobs,\r\n searchPurchaseOrders,\r\n settings,\r\n standardCrews,\r\n tokenInfo,\r\n workOrders,\r\n searchEmployees,\r\n equipments,\r\n searchAppointments\r\n \r\n});\r\n","import { combineEpics } from 'redux-observable';\r\n\r\nimport { epic as calendarEpic } from './calendar';\r\nimport { dispatchEventEpic } from './dispatcher';\r\nimport { fetchDropdownsEpic } from './dropdowns';\r\nimport { epic as eventsEpic } from './events';\r\nimport { updateJobEpic } from './jobs';\r\nimport { epics as modalEpics } from './modals';\r\nimport { epic as organizationEpic } from './organization';\r\nimport { fetchAvailableBidsEpic, searchCustomersEpic as searchCustomersBidsEpic } from './searchBids';\r\nimport { fetchAvailableJobsEpic, searchCustomersEpic } from './searchJobs';\r\nimport { fetchAvailablePurchaseOrdersEpic } from './searchPurchaseOrders';\r\nimport { epic as settingsEpic } from './settings';\r\nimport { fetchStandardCrewsEpic } from './standardCrews';\r\nimport { fetchTokenInfoEpic } from './tokenInfo';\r\nimport { epics as workOrdersEpics } from './workOrders';\r\nimport { fetchAvailableEmployeesEpic, searchEmployeessEpic } from './searchEmployees';\r\nimport { fetchEquipmentsEpic } from './equipments';\r\nimport { fetchAvailableAppointmentsEpic, searchCustomersEpic as searchAppointmentsCustomerEpic, searchDatasheetsEpic } from './searchAppointments';\r\n\r\n\r\nexport default combineEpics(\r\n calendarEpic,\r\n dispatchEventEpic,\r\n eventsEpic,\r\n fetchAvailableBidsEpic,\r\n fetchAvailableJobsEpic,\r\n fetchAvailablePurchaseOrdersEpic,\r\n fetchDropdownsEpic,\r\n fetchStandardCrewsEpic,\r\n fetchTokenInfoEpic,\r\n modalEpics,\r\n organizationEpic,\r\n searchCustomersBidsEpic, \r\n searchCustomersEpic,\r\n settingsEpic,\r\n updateJobEpic,\r\n workOrdersEpics,\r\n fetchAvailableEmployeesEpic,\r\n searchEmployeessEpic,\r\n fetchEquipmentsEpic,\r\n fetchAvailableAppointmentsEpic,\r\n searchAppointmentsCustomerEpic,\r\n searchDatasheetsEpic \r\n);\r\n","import { applyMiddleware, compose, createStore } from 'redux';\r\nimport { createEpicMiddleware } from 'redux-observable';\r\nimport thunk from 'redux-thunk';\r\n\r\nimport rootReducer from './reducers';\r\nimport rootEpic from './epics';\r\n\r\nconst composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;\r\n\r\nconst epicMiddleware = createEpicMiddleware();\r\nconst createStoreWithMiddleware = composeEnhancers(applyMiddleware(thunk, epicMiddleware))(createStore);\r\n\r\nconst configureStore = (initialState) => {\r\n const store = createStoreWithMiddleware(rootReducer, initialState);\r\n epicMiddleware.run(rootEpic)\r\n return store;\r\n};\r\n\r\nexport default configureStore;\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { Provider } from 'react-redux';\r\n\r\nimport 'babel-polyfill';\r\n\r\nimport App from './App';\r\nimport configureStore from './redux/configureStore';\r\n\r\nconst store = configureStore();\r\n\r\nReactDOM.render(\r\n \r\n \r\n ,\r\n document.getElementById('root')\r\n);\r\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"_1djzD5ljK2tWx1hdazDhC\",\"results\":\"_1wVcbxqB60RBWwhSZLjQ06\",\"appointment\":\"_29XMm03Umr3IB8GrOE3R3S\",\"searchResultsContainer\":\"lNknZwCPytxG8iPYskcQa\",\"disabled\":\"_2i66-xhgJmXsAgMN8psFsh\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"_15wW1tCVyVq1bqiNTmwn0W\",\"results\":\"oHPkJE75CClvFruN84Ttk\",\"purchaseOrder\":\"_18kYH5_uMgTq3bIUUGIMZB\",\"disabled\":\"_1oag78l-ORfQrBZhNvGmxB\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"capacity\":\"_1p4PYblWJiGdR1CqeDS1Gd\",\"spread\":\"_22DZzyeUSuwOTpTz-0F5TC\",\"stacked\":\"lin3lZ_T5OttWqVbyMMB1\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"_3Y9VNwiRwf2tw1Qq5phrRB\",\"address\":\"_2jgJ_QXt5AdWsMppHcCYhS\",\"inactive\":\"_1Bcbe3t7BlIV4sMJLYxZq1\",\"tentative\":\"_1dwxdFDQamPQ-gLp_YgJbH\",\"example-multiple-targets\":\"_8D7Qtj4e3lDmiTV_TrwYD\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"loadingSpinner\":\"_2EFdrIMR9p5jS-_NApwCcS\",\"loadingSpinnerFullScreen\":\"_2432sF8qpMmy1BLefoKat6\",\"spinwrap\":\"_12VhBbMfF5l3uZsep7OdDd\",\"spinner\":\"_3RNqsas9SQN6Tm-RgdBlxT\",\"cube1\":\"_3qmPX9BkuJiSysrNiz1NnJ\",\"cube2\":\"_1oBRkoJaGnveT2laocTuJZ\",\"cubemove\":\"_3lggxelWVazfOwNXBMR4fL\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"uWnnedSJpGsR47568h18V\",\"address\":\"_1DLN4K-nQabwA5qCIJA19-\",\"inactive\":\"_3ibetO6nUZDpwqYzmwjxM8\",\"tentative\":\"Lr3vNDounA7cztwKE9t22\",\"example-multiple-targets\":\"_2T8EddcDVY38e2mbOaqOS7\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"_1WGbHHpmxKjSFfb2evbOY-\",\"address\":\"_3Ck82Hts3_qP8tF5zPGnji\",\"inactive\":\"_31rv8qzSkv1M3TOhfb9c5X\",\"tentative\":\"_3y4dHTG4I6FkOBTO0J2KYw\",\"example-multiple-targets\":\"_28-zh01bRSw1zUrODtSr_5\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"_303IWFXs3yHHtJaeoBZuG3\",\"column\":\"_8UYtJze171zVDBeD2PMth\",\"header\":\"X6KdfnI1Kd0Uh7oDyC_Fy\",\"active\":\"opuxCHtmHS3cYu639C7_M\",\"disabled\":\"_1uhis9Kn87JDYYC_vi2AT_\",\"crewTag\":\"_2IW9KlHTh_7C-9BJ3H88sm\",\"day\":\"_1PTux2KqNABybR0PXQECNp\",\"event\":\"AtqeWhgiWPLDwmLw-ixgt\",\"root\":\"I5WQsHP2kU8O4flz0di_0\",\"rows\":\"_3mtjlfIJ3rm9-Ix7mW5ClP\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"_1qOpKXkLXiONtZk2gAVxDj\",\"inactive\":\"_18tX1gpq_FsR78cQgN8oLU\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"_2Z1IphzeYW62JWiDG72qWC\",\"column\":\"_2lYqhsNkeo9Xb45AgHnuib\",\"header\":\"_3lrJXzLadUdeo_C-XURZ-W\",\"active\":\"_2Fvrrc4jBvW8UXr5G0K9RX\",\"disabled\":\"_38F9OJtXZnnFVgG0Cs4ZU\",\"crewTag\":\"_1uOF_FjeTNk7Eo5WpsHvBn\",\"day\":\"f5mvxZz7EJpCl2bjv0ZG-\",\"event\":\"bosRkLZqFjx6zFW4zGtRz\",\"root\":\"_18EpjVF0W4fMZw2utwFRja\",\"rows\":\"_3DNX7l_Gu5acmaEweZIkzj\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"calendar\":\"_2VJBRJlxoSbgv6_-X_LHTh\",\"component\":\"_24D20g4H3-Pa2yG20Xd-p_\",\"container\":\"_2JtTF8Llo8RpMI08yeNB_Y\",\"content\":\"_33BMBSouQUA-RMLDxRV1ML\",\"search\":\"_3g15ENY7B4vgZ15O_aMtfx\",\"tabs\":\"_1M-5sjL4g4RtmDVUfwgeuQ\"};","class APIRequestError extends Error {\r\n constructor(responseText, responseType, status, statusText) {\r\n super();\r\n\r\n // Since response and responseType=json isn't supported yet, default to parse\r\n // json return result.\r\n this.responseText = responseText;\r\n if (responseText) {\r\n switch (responseType) {\r\n default:\r\n this.response = JSON.parse(responseText);\r\n }\r\n }\r\n\r\n this.responseType = responseType;\r\n this.status = status;\r\n this.statusText = statusText;\r\n }\r\n\r\n get name() {\r\n return this.constructor.name;\r\n }\r\n}\r\n\r\nclass JobProAPI {\r\n constructor(apiLocation, oauthToken, options) {\r\n if (arguments.length === 2) {\r\n options = oauthToken;\r\n oauthToken = '';\r\n }\r\n\r\n if (!options) {\r\n options = {};\r\n }\r\n\r\n this._apiLocation = apiLocation;\r\n this._useCors = options.useCors;\r\n this._oauthToken = typeof oauthToken === 'string'\r\n ? Promise.resolve(oauthToken)\r\n : oauthToken;\r\n\r\n this.attachments = new AttachmentRepository(this);\r\n this.bidCategories = new BidCategoryRepository(this);\r\n this.bids = new BidRepository(this);\r\n this.rValue = new RValueRepository(this);\r\n this.bidItemMultipliers = new BidItemMultipliersRepository(this);\r\n this.bidTypes = new BidTypeRepository(this);\r\n this.calendar = new CalendarRepository(this);\r\n this.checklistDefintiions = new ChecklistDefinitionRepository(this);\r\n this.commissionPlans = new CommissionPlanRepository(this);\r\n this.commissionRates = new CommissionRateRepository(this);\r\n this.companyNetTerms = new CompanyNetTermRepository(this);\r\n this.companyTaxStatuses = new CompanyTaxStatusRepository(this);\r\n this.contacts = new ContactRepository(this);\r\n this.countries = new CountryRepository(this);\r\n this.currentUser = new CurrentUserRepository(this);\r\n this.customers = new CustomerRepository(this);\r\n this.customerCategories = new CustomerCategoryRepository(this);\r\n this.customerDocumentTemplates = new CustomerDocumentTemplateRepository(this);\r\n this.datasheets = new DataSheetRepository(this);\r\n this.employees = new EmployeeRepository(this);\r\n this.equipment = new EquipmentRepository(this);\r\n this.equipmentStatuses = new EquipmentStatusRepository(this);\r\n this.equipmentTypes = new EquipmentTypesRepository(this);\r\n this.financePrograms = new FinanceProgramRepository(this);\r\n this.globalLaborCodes = new GlobalLaborCodeRepository(this);\r\n this.inventory = new InventoryRepository(this);\r\n this.inventoryTransactions = new InventoryTransactionRepository(this);\r\n this.invoices = new InvoiceRepository(this);\r\n this.invoiceTemplates = new InvoiceTemplateRepository(this);\r\n this.items = new ItemRepository(this);\r\n this.jobs = new JobRepository(this);\r\n this.jobDocumentTemplates = new JobDocumentTemplateRepository(this);\r\n this.jobStatuses = new JobStatusRepository(this);\r\n this.jobTypes = new JobTypeRepository(this);\r\n this.appointmentTypes = new AppointmentTypeRepository(this);\r\n this.laborMultipliers = new LaborMultiplierRepository(this);\r\n this.manufacturers = new ManufacturerRepository(this);\r\n this.materialMultipliers = new MaterialMultiplierRepository(this);\r\n this.merchantServices = new MerchantServicesRepository(this);\r\n this.noteTemplates = new NoteTemplateRepository(this);\r\n this.offices = new OfficeRepository(this);\r\n this.payments = new PaymentRepository(this);\r\n this.payrollDocumentTemplates = new PayrollDocumentTemplateRepository(this);\r\n this.proposalAgreements = new ProposalAgreements(this);\r\n this.proposalAgreementTemplates = new ProposalAgreementTemplateRepository(this);\r\n this.proposalPriceRestrictions = new ProposalPriceRestrictionsRepository(this);\r\n this.proposalTemplates = new ProposalTemplateRepository(this);\r\n this.proposalTemplateDesigns = new ProposalTemplateDesignRepository(this);\r\n this.purchaseOrders = new PurchaseOrderRepository(this);\r\n this.physicalCounts = new PhysicalCountRepository(this);\r\n this.inventoryPurchaseOrders = new InventoryPurchaseOrderRepository(this);\r\n this.inventoryPurchaseOrderItems = new InventoryPurchaseOrderItemsRepository(this);\r\n this.preferredPaymentMethods = new PreferredPaymentMethodRepository(this)\r\n this.referralSources = new ReferralSourceRepository(this);\r\n this.requestTypes = new RequestTypeRepository(this);\r\n this.resources = new ResourceRepository(this);\r\n this.resourcePayTypes = new ResourcePayTypeRepository(this);\r\n this.settings = new SettingsRepository(this);\r\n this.stageTypes = new StageTypeRepository(this);\r\n this.standardCrews = new StandardCrewRepository(this);\r\n this.stockImages = new StockImageRepository(this);\r\n this.stockorders = new StockOrderRepository(this);\r\n this.suppliers = new SupplierRepository(this);\r\n this.taxSchedules = new TaxScheduleRepository(this);\r\n this.templateCategories = new TemplateCategoryRepository(this);\r\n this.templates = new TemplateRepository(this);\r\n this.timerates = new TimeRateRepository(this)\r\n this.timesheets = new TimesheetRepository(this);\r\n this.users = new UserRepository(this);\r\n this.warehouses = new WarehouseRepository(this);\r\n this.zipCodeTaxSchedules = new ZipCodeTaxSchedulesRepository(this);\r\n this.linkedJobs = new JobLinkedJobsRepository(this);\r\n this.depositpercentageoption = new DepositPercentageOptionsRepository(this);\r\n }\r\n\r\n delete (url, params, requestHeaders) {\r\n return this._createXhrRequest('DELETE', url, params, null, requestHeaders);\r\n }\r\n\r\n get(url, params, requestHeaders) {\r\n return this._createXhrRequest('GET', url, params, null, requestHeaders);\r\n }\r\n\r\n graphql(query, variables) {\r\n return this.post('/graphql', null, {\r\n query,\r\n variables\r\n });\r\n }\r\n\r\n patch(url, params, body, requestHeaders) {\r\n return this._createXhrRequest('PATCH', url, params, body, requestHeaders);\r\n }\r\n\r\n ping() {\r\n return this.get('ping');\r\n }\r\n\r\n post(url, params, body, requestHeaders) {\r\n return this._createXhrRequest('POST', url, params, body, requestHeaders);\r\n }\r\n\r\n put(url, params, body, requestHeaders) {\r\n return this._createXhrRequest('PUT', url, params, body, requestHeaders);\r\n }\r\n\r\n systemStatus() {\r\n return this.get('system-status');\r\n }\r\n\r\n testDateTime(datetime) {\r\n return this.get('test-datetime', {\r\n datetime: datetime\r\n });\r\n }\r\n\r\n tokenInfo() {\r\n return this.get('token-info');\r\n }\r\n\r\n _createXhrRequest(method, url, params, body, requestHeaders) {\r\n url = this._apiLocation + url + '?' + JobProAPI.encodeQueryString(params);\r\n return new Promise((resolve, reject) => {\r\n // Generate the XHR request\r\n var req = new XMLHttpRequest();\r\n\r\n if (this._useCors) {\r\n // Check what method of CORS is supported (if any)\r\n if ('withCredentials' in req) {\r\n req.withCredentials = true;\r\n req.open(method, url, true);\r\n } else if (typeof XDomainRequest !== 'undefined') {\r\n req = new XDomainRequest();\r\n req.open(method, url);\r\n } else {\r\n throw new Error('CORS is not supported by this browser');\r\n }\r\n } else {\r\n req.open(method, url);\r\n }\r\n\r\n var tokenPromise = (this._oauthToken || Promise.resolve());\r\n tokenPromise.then((oauthToken) => {\r\n // Set OAuth2 token\r\n if (oauthToken) {\r\n req.setRequestHeader('Authorization', `Bearer ${oauthToken}`);\r\n }\r\n\r\n req.onload = () => {\r\n // Check if call was successful\r\n if (req.status >= 200 && req.status < 300) {\r\n // Resolve the promise with the results\r\n if (req.responseText !== '') {\r\n resolve(JSON.parse(req.responseText));\r\n } else {\r\n resolve();\r\n }\r\n } else {\r\n // Otherwise reject with the status text\r\n reject(new APIRequestError(req.responseText, req.responseType, req.status, req.statusText));\r\n }\r\n };\r\n\r\n // Handle network errors\r\n req.onerror = () => {\r\n reject(Error('Network Error'));\r\n };\r\n\r\n // Set and headers that need to be set\r\n if (typeof requestHeader === 'string') {\r\n req.setRequestHeader(requestHeaders, 0);\r\n } else if (Array.isArray(requestHeaders)) {\r\n requestHeaders.forEach(h => req.setRequestHeader(h, 0));\r\n } else if (typeof requestHeaders === 'object') {\r\n Object.keys(requestHeaders).forEach((k) => req.setRequestHeader(k, requestHeaders[k]));\r\n }\r\n\r\n // Set the request body (for POST, PATCH, etc.)\r\n if (body) {\r\n req.setRequestHeader('Content-Type', 'application/json;charset=UTF-8');\r\n req.send(JSON.stringify(body));\r\n } else {\r\n // Make the request\r\n req.send();\r\n }\r\n });\r\n });\r\n }\r\n\r\n static _buildParams(prefix, obj, add) {\r\n const rbracket = /\\[\\]$/;\r\n if (Array.isArray(obj)) {\r\n // Serialize array\r\n obj.forEach(function (item, i) {\r\n if (rbracket.test(prefix)) {\r\n add(prefix, item);\r\n } else {\r\n JobProAPI._buildParams(`${prefix}`, item, add);\r\n }\r\n });\r\n } else if (typeof obj === \"object\") {\r\n // Serialize object\r\n for (let name in obj) {\r\n if (obj.hasOwnProperty(name)) {\r\n JobProAPI._buildParams(`${prefix}[${name}]`, obj[name], add);\r\n }\r\n }\r\n } else {\r\n // Serialize scalar\r\n add(prefix, obj);\r\n }\r\n }\r\n\r\n static encodeQueryString(obj) {\r\n var parts = [];\r\n const add = function (key, value) {\r\n value = (typeof value === \"function\") ? value() : (value == null ? \"\" : value);\r\n parts.push(`${encodeURIComponent(key)}=${encodeURIComponent(value)}`);\r\n };\r\n\r\n if (Array.isArray(obj)) {\r\n obj.forEach(function () {\r\n add(this.name, value);\r\n });\r\n } else {\r\n for (let i in obj) {\r\n if (obj.hasOwnProperty(i)) {\r\n JobProAPI._buildParams(i, obj[i], add);\r\n }\r\n }\r\n }\r\n // Join parts with '&' to build the full query string\r\n return parts.join(\"&\");\r\n }\r\n\r\n static merge(obj1, obj2) {\r\n var obj3 = {};\r\n for (var attrname in obj1) {\r\n obj3[attrname] = obj1[attrname];\r\n }\r\n for (var attrname in obj2) {\r\n obj3[attrname] = obj2[attrname];\r\n }\r\n return obj3;\r\n }\r\n}\r\n\r\n\r\nclass AttachmentRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n query(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/attachments', params);\r\n }\r\n\r\n create(config, options) {\r\n return this._api.post('/v1/attachments', options, config);\r\n }\r\n\r\n delete(id, options) {\r\n return this._api.delete(`/v1/attachments/${id}`, options);\r\n }\r\n\r\n get(id, options) {\r\n return this._api.get(`/v1/attachments/${id}`, options);\r\n }\r\n\r\n update(id, changes, options) {\r\n return this._api.patch(`/v1/attachments/${id}`, options, changes);\r\n }\r\n\r\n}\r\n\r\nclass BidCategoryRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n query(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/bidCategories', params);\r\n }\r\n}\r\n\r\nclass BidContactRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n create(bidId, bidContact, options) {\r\n return this._api.post(`/v1/bids/${bidId}/contacts`, options, bidContact);\r\n }\r\n\r\n delete(bidId, bidContactId, options) {\r\n return this._api.delete(`/v1/bids/${bidId}/contacts/${bidContactId}`, options);\r\n }\r\n\r\n get(bidId, bidContactId, options) {\r\n return this._api.get(`/v1/bids/${bidId}/contacts/${bidContactId}`, options);\r\n }\r\n\r\n query(bidId, criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get(`/v1/bids/${bidId}/contacts`, params);\r\n }\r\n\r\n update(bidId, bidContactId, changes, options) {\r\n return this._api.patch(`/v1/bids/${bidId}/contacts/${bidContactId}`, options, changes);\r\n }\r\n}\r\n\r\nclass BidDocumentRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n create(bidId, document, options) {\r\n return this._api.post(`/v1/bids/${bidId}/documents`, options, document);\r\n }\r\n\r\n get(bidId, documentId, options) {\r\n return this._api.get(`/v1/bids/${bidId}/documents/${documentId}`, options);\r\n }\r\n\r\n query(bidId, criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get(`/v1/bids/${bidId}/documents`, params);\r\n }\r\n\r\n}\r\n\r\nclass BidGroupRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n create(bidId, bidGroup, options) {\r\n return this._api.post(`/v1/bids/${bidId}/groups`, options, bidGroup);\r\n }\r\n\r\n delete (bidId, bidGroupId, options) {\r\n return this._api.delete(`/v1/bids/${bidId}/groups/${bidGroupId}`, options);\r\n }\r\n\r\n get(bidId, bidGroupId, options) {\r\n return this._api.get(`/v1/bids/${bidId}/groups/${bidGroupId}`, options);\r\n }\r\n\r\n query(bidId, criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get(`/v1/bids/${bidId}/groups`, params);\r\n }\r\n\r\n update(bidId, bidGroupId, changes, options) {\r\n return this._api.patch(`/v1/bids/${bidId}/groups/${bidGroupId}`, options, changes);\r\n }\r\n}\r\n\r\nclass BidItemImageRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n create(bidId, bidItemId, bidItemImage, options) {\r\n return this._api.post(`/v1/bids/${bidId}/items/${bidItemId}/images`, options, bidItemImage);\r\n }\r\n\r\n delete (bidId, bidItemId, bidItemImageId, options) {\r\n return this._api.delete(`/v1/bids/${bidId}/items/${bidItemId}/images/${bidItemImageId}`, options);\r\n }\r\n\r\n get(bidId, bidItemId, bidItemImageId, options) {\r\n return this._api.get(`/v1/bids/${bidId}/items/${bidItemId}/images/${bidItemImageId}`, options);\r\n }\r\n\r\n query(bidId, bidItemId, criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get(`/v1/bids/${bidId}/items/${bidItemId}/images`, params);\r\n }\r\n}\r\n\r\nclass BidItemRepository {\r\n constructor(api) {\r\n this._api = api;\r\n this.images = new BidItemImageRepository(api);\r\n }\r\n\r\n create(bidId, bidItem, options) {\r\n return this._api.post(`/v1/bids/${bidId}/items`, options, bidItem);\r\n }\r\n\r\n delete (bidId, bidItemId, options) {\r\n return this._api.delete(`/v1/bids/${bidId}/items/${bidItemId}`, options);\r\n }\r\n\r\n get(bidId, bidItemId, options) {\r\n return this._api.get(`/v1/bids/${bidId}/items/${bidItemId}`, options);\r\n }\r\n\r\n query(bidId, criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get(`/v1/bids/${bidId}/items`, params);\r\n }\r\n\r\n update(bidId, bidItemId, bidItemChanges, options) {\r\n return this._api.patch(`/v1/bids/${bidId}/items/${bidItemId}`, options, bidItemChanges);\r\n }\r\n}\r\n\r\nclass BidOptionRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n create(bidId, bidOption, options) {\r\n return this._api.post(`/v1/bids/${bidId}/options`, options, bidOption);\r\n }\r\n\r\n delete (bidId, bidOptionId, options) {\r\n return this._api.delete(`/v1/bids/${bidId}/options/${bidOptionId}`, options);\r\n }\r\n\r\n get(bidId, bidOptionId, options) {\r\n return this._api.get(`/v1/bids/${bidId}/options/${bidOptionId}`, options);\r\n }\r\n\r\n query(bidId, criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get(`/v1/bids/${bidId}/options`, params);\r\n }\r\n\r\n update(bidId, bidOptionId, changes, options) {\r\n return this._api.patch(`/v1/bids/${bidId}/options/${bidOptionId}`, options, changes);\r\n }\r\n}\r\nclass RValueRepository {\r\nconstructor(api) {\r\n this._api = api;\r\n }\r\n\r\n query(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/rvalues', params);\r\n }\r\n get(id, options) {\r\n return this._api.get(`/v1/rvalues/rvaluethickness/${id}`, options);\r\n }\r\n}\r\nclass BidItemMultipliersRepository {\r\nconstructor(api) {\r\n this._api = api;\r\n }\r\n\r\n query(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/biditemmultipliers', params);\r\n }\r\n get(id, options) {\r\n return this._api.get(`/v1/biditemmultipliers/${id}`, options);\r\n }\r\n getEntries(id, options) {\r\n return this._api.get(`/v1/biditemmultipliers/${id}/entries`, options);\r\n }\r\n create(bidItemMultipliersReference,options) {\r\n return this._api.post('/v1/biditemmultipliers', bidItemMultipliersReference,options);\r\n }\r\n\r\n update(id, bidItemMultipliersReference,options) {\r\n return this._api.patch(`/v1/biditemmultipliers/${id}`, bidItemMultipliersReference,options);\r\n }\r\n\r\n delete(id) {\r\n return this._api.delete(`/v1/biditemmultipliers/${id}`);\r\n }\r\n\r\n updateEntry(id, changes, options) {\r\n return this._api.patch(`/v1/biditemmultipliers/entry/${id}`, changes, options);\r\n }\r\n createEntry(bidItemMultipliersReferenceId, entry, options) {\r\n return this._api.post(`/v1/biditemmultipliers/${bidItemMultipliersReferenceId}/entry`, entry, options);\r\n }\r\n deleteEntry(bidItemMultipliersReferenceId, entryId) {\r\n return this._api.delete(`/v1/biditemmultipliers/${bidItemMultipliersReferenceId}/entry/${entryId}`);\r\n }\r\n}\r\n\r\nclass BidRepository {\r\n constructor(api) {\r\n this._api = api;\r\n this.adjustmentHistory = new BidAdjustmentHistoryRepository(api);\r\n this.checklistItems = new BidChecklistItemsRepository(api);\r\n this.contacts = new BidContactRepository(api);\r\n this.documents = new BidDocumentRepository(api);\r\n this.groups = new BidGroupRepository(api);\r\n this.items = new BidItemRepository(api);\r\n this.notes = new BidNoteRepository(api);\r\n this.options = new BidOptionRepository(api);\r\n this.statuses = new BidStatusRepository(api);\r\n }\r\n\r\n create(bid, options) {\r\n return this._api.post('/v1/bids', options, bid);\r\n }\r\n\r\n get(id, options) {\r\n return this._api.get(`/v1/bids/${id}`, options);\r\n }\r\n\r\n query(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/bids', params);\r\n }\r\n\r\n update(bidId, bid, options) {\r\n return this._api.patch(`/v1/bids/${bidId}`, options, bid);\r\n }\r\n}\r\n\r\nclass BidAdjustmentHistoryRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n get(bidId, bidAdjustmentHistoryId, options) {\r\n return this._api.get(`/v1/bids/${bidId}/adjustment-history/${bidAdjustmentHistoryId}`, options);\r\n }\r\n\r\n query(bidId, options) {\r\n return this._api.get(`/v1/bids/${bidId}/adjustment-history`, options);\r\n }\r\n\r\n create(bidId, bidAdjustmentHistory, options) {\r\n return this._api.post(`/v1/bids/${bidId}/adjustment-history`, options, bidAdjustmentHistory);\r\n }\r\n}\r\n\r\nclass BidChecklistItemsRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n create(bidId, bidChecklistItem, options) {\r\n return this._api.post(`/v1/bids/${bidId}/checklistItems`, options, bidChecklistItem);\r\n }\r\n\r\n delete(bidId, bidChecklistItemId, options) {\r\n return this._api.delete(`/v1/bids/${bidId}/checklistItems/${bidChecklistItemId}`, options);\r\n }\r\n\r\n get(bidId, bidChecklistItemId, options) {\r\n return this._api.get(`/v1/bids/${bidId}/checklistItems/${bidChecklistItemId}`, options);\r\n }\r\n\r\n query(bidId, criteria, bidChecklistItems) {\r\n var params = JobProAPI.merge(criteria, bidChecklistItems);\r\n return this._api.get(`/v1/bids/${bidId}/checklistItems`, params);\r\n }\r\n\r\n update(bidId, bidChecklistItemId, changes, options) {\r\n return this._api.patch(`/v1/bids/${bidId}/checklistItems/${bidChecklistItemId}`, options, changes);\r\n }\r\n}\r\n\r\nclass BidNoteRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n create(bidId, note, options) {\r\n return this._api.post(`/v1/bids/${bidId}/notes`, options, note);\r\n }\r\n}\r\n\r\nclass BidStatusRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n query(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/bids/statuses', params);\r\n }\r\n}\r\n\r\nclass BidTypeRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n create(jobType, options) {\r\n return this._api.post('/v1/bidTypes', options, jobType);\r\n }\r\n\r\n delete(id, options) {\r\n return this._api.delete(`/v1/bidTypes/${id}`, options);\r\n }\r\n\r\n get(id, options) {\r\n return this._api.get(`/v1/bidTypes/${id}`, options);\r\n }\r\n\r\n query(criteria, options) {\r\n const params = { ...criteria, ...options };\r\n return this._api.get('/v1/bidTypes', params);\r\n }\r\n\r\n update(id, changes, options) {\r\n return this._api.patch(`/v1/bidTypes/${id}`, options, changes);\r\n }\r\n}\r\n\r\nclass CalendarRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n create(calendarEvent, options) {\r\n return this._api.post('/v1/calendar', options, calendarEvent);\r\n }\r\n\r\n currentUser(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get(`/v1/calendar/current-user`, params);\r\n }\r\n\r\n delete (calendarEventId, options) {\r\n return this._api.delete(`/v1/calendar/${calendarEventId}`, options);\r\n }\r\n\r\n get(calendarEventId, options) {\r\n return this._api.get(`/v1/calendar/${calendarEventId}`, options);\r\n }\r\n\r\n put(calendarEventId, calendarEvent, options) {\r\n return this._api.put(`/v1/calendar/${calendarEventId}`, options, calendarEvent);\r\n }\r\n\r\n query(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/calendar', params);\r\n }\r\n\r\n search(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/calendar/search', params);\r\n }\r\n\r\n update(calendarEventId, calendarEvent, options) {\r\n return this._api.patch(`/v1/calendar/${calendarEventId}`, options, calendarEvent);\r\n }\r\n}\r\n\r\nclass ChecklistDefinitionRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n get(checklistDefinitionId, criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get(`/v1/checklist-definitions/${checklistDefinitionId}`, params);\r\n }\r\n\r\n query(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/checklist-definitions', params);\r\n }\r\n}\r\n\r\nclass CommissionPlanRepository {\r\n constructor(api) {\r\n this._api = api;\r\n this.rules = new CommissionPlanRuleRepository(api);\r\n }\r\n\r\n create(commissionPlan, options) {\r\n return this._api.post('/v1/commissionPlans', options, commissionPlan);\r\n }\r\n\r\n delete(id, options) {\r\n return this._api.delete(`/v1/commissionPlans/${id}`, options);\r\n }\r\n\r\n get(id, options) {\r\n return this._api.get(`/v1/commissionPlans/${id}`, options);\r\n }\r\n\r\n query(criteria, options) {\r\n const params = { ...criteria, ...options };\r\n return this._api.get('/v1/commissionPlans', params);\r\n }\r\n\r\n update(id, changes, options) {\r\n return this._api.patch(`/v1/commissionPlans/${id}`, options, changes);\r\n }\r\n}\r\n\r\nclass CommissionPlanRuleRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n create(commissionPlanId, commissionPlan, options) {\r\n return this._api.post(`/v1/commissionPlans/${commissionPlanId}/rules`, options, commissionPlan);\r\n }\r\n\r\n delete(commissionPlanId, commissionPlanRuleId, options) {\r\n return this._api.delete(`/v1/commissionPlans/${commissionPlanId}/rules/${commissionPlanRuleId}`, options);\r\n }\r\n\r\n get(commissionPlanId, commissionPlanRuleId, options) {\r\n return this._api.get(`/v1/commissionPlans/${commissionPlanId}/rules/${commissionPlanRuleId}`, options);\r\n }\r\n\r\n query(commissionPlanId, criteria, options) {\r\n const params = { ...criteria, ...options };\r\n return this._api.get(`/v1/commissionPlans/${commissionPlanId}/rules`, params);\r\n }\r\n\r\n update(commissionPlanId, commissionPlanRuleId, changes, options) {\r\n return this._api.patch(`/v1/commissionPlans/${commissionPlanId}/rules/${commissionPlanRuleId}`, options, changes);\r\n }\r\n}\r\n\r\nclass CommissionRateRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n query(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/commission-rates', params);\r\n }\r\n}\r\n\r\nclass CompanyNetTermRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n query(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/companyNetTerms', params);\r\n }\r\n}\r\n\r\nclass CompanyTaxStatusRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n query(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/companyTaxStatuses', params);\r\n }\r\n}\r\n\r\nclass ContactRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n create(contact, options) {\r\n return this._api.post('/v1/contacts', options, contact);\r\n }\r\n\r\n get(id, criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get(`/v1/contacts/${id}`, params);\r\n }\r\n\r\n query(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/contacts', params);\r\n }\r\n\r\n search(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/contacts/search', params);\r\n }\r\n\r\n update(contactId, changes, criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.patch(`/v1/contacts/${contactId}`, params, changes);\r\n }\r\n}\r\n\r\nclass CountryRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n query(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/countries', params);\r\n }\r\n}\r\n\r\nclass CurrentUserOrganizationRepository {\r\n constructor(api) {\r\n this._api = api;\r\n this.settings = new CurrentUserOrganizationSettingsRepository(api);\r\n }\r\n\r\n get(options) {\r\n return this._api.get('/v1/user/organization', options);\r\n }\r\n\r\n update(changes, options) {\r\n return this._api.patch('/v1/user/organization', options, changes);\r\n }\r\n}\r\n\r\nclass CurrentUserOrganizationSettingsRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n get(options) {\r\n return this._api.get('/v1/user/organization/settings', options);\r\n }\r\n\r\n update(changes, options) {\r\n return this._api.patch('/v1/user/organization/settings', options, changes);\r\n }\r\n}\r\n\r\nclass CurrentUserRepository {\r\n constructor(api) {\r\n this._api = api;\r\n this.organization = new CurrentUserOrganizationRepository(api);\r\n this.settings = new CurrentUserSettingsRepository(api);\r\n }\r\n}\r\n\r\nclass CurrentUserSettingsRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n get(options) {\r\n return this._api.get('/v1/user/settings', options);\r\n }\r\n}\r\n\r\nclass CustomerRepository {\r\n constructor(api) {\r\n this._api = api;\r\n this.contacts = new CustomerContactRepository(api);\r\n }\r\n\r\n create(customer, options) {\r\n return this._api.post('/v1/customers', options, customer);\r\n }\r\n\r\n count(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/customers/count', params);\r\n }\r\n\r\n get(id, options) {\r\n return this._api.get(`/v1/customers/${id}`, options);\r\n }\r\n\r\n query(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/customers', params);\r\n }\r\n\r\n search(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/customers/search', params);\r\n }\r\n\r\n update(id, changes, options) {\r\n return this._api.patch(`/v1/customers/${id}`, options, changes);\r\n }\r\n}\r\n\r\nclass CustomerCategoryRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n query(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/customerCategories', params);\r\n }\r\n}\r\n\r\nclass CustomerContactRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n create(customerId, contact, options) {\r\n return this._api.post(`/v1/customers/${customerId}/contacts`, options, contact);\r\n }\r\n\r\n get(customerId, contactId, options) {\r\n return this._api.get(`/v1/customers/${customerId}/contacts/${contactId}`, options);\r\n }\r\n\r\n query(customerId, criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get(`/v1/customers/${customerId}/contacts`, params);\r\n }\r\n}\r\n\r\nclass CustomerDocumentTemplateRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n delete(id, options) {\r\n return this._api.delete(`/v1/customerDocumentTemplates/${id}`, options);\r\n }\r\n\r\n get(id, options) {\r\n return this._api.get(`/v1/customerDocumentTemplates/${id}`, options);\r\n }\r\n\r\n query(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/customerDocumentTemplates', params);\r\n }\r\n\r\n update(id, changes, options) {\r\n return this._api.patch(`/v1/customerDocumentTemplates/${id}`, options, changes);\r\n }\r\n}\r\n\r\nclass DataSheetRepository {\r\n constructor(api) {\r\n this._api = api;\r\n this.notes = new DataSheetNoteRepository(api);\r\n this.documents = new DataSheetDocumentRepository(api);\r\n this.requestQuestionResponses = new DataSheetRequestQuestionResponseRepository(api);\r\n this.statuses = new DataSheetStatusRepository(api);\r\n }\r\n\r\n create(datasheet, options) {\r\n return this._api.post('/v1/datasheets', options, datasheet);\r\n }\r\n\r\n get(id, options) {\r\n return this._api.get(`/v1/datasheets/${id}`, options);\r\n }\r\n\r\n query(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/datasheets', params);\r\n }\r\n\r\n search(criteria, options) {\r\n const params = { ...criteria, ...options };\r\n return this._api.get('/v1/datasheets/search', params);\r\n }\r\n\r\n update(datasheetId, datasheet, options) {\r\n return this._api.patch(`/v1/datasheets/${datasheetId}`, options, datasheet);\r\n }\r\n}\r\n\r\nclass DataSheetDocumentRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n \r\n get(datasheetId, documentId, options) {\r\n return this._api.get(`/v1/datasheet/${datasheetId}/documents/${documentId}`, options);\r\n }\r\n \r\n}\r\n\r\nclass DataSheetNoteRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n create(datasheetId, note, options) {\r\n return this._api.post(`/v1/datasheets/${datasheetId}/notes`, options, note);\r\n }\r\n}\r\n\r\nclass DataSheetRequestQuestionResponseRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n get(dataSheetId, requestQuestionResponseId, options) {\r\n return this._api.get(`/v1/datasheets/${dataSheetId}/requestQuestionResponses/${requestQuestionResponseId}`, options);\r\n }\r\n\r\n query(dataSheetId, criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get(`/v1/datasheets/${dataSheetId}/requestQuestionResponses`, params);\r\n }\r\n\r\n update(dataSheetId, requestQuestionResponseId, response, options) {\r\n return this._api.patch(`/v1/datasheets/${dataSheetId}/requestQuestionResponses/${requestQuestionResponseId}`, options, response);\r\n }\r\n}\r\n\r\nclass DataSheetStatusRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n query(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/datasheets/statuses', params);\r\n }\r\n}\r\n\r\nclass EmployeeRepository {\r\n constructor(api) {\r\n this._api = api;\r\n this.calendar = new EmployeeCalendarRepository(api);\r\n this.commissionPlans = new EmployeeCommissionPlanRepository(api);\r\n this.documents = new EmployeeDocumentRepository(api);\r\n this.offices = new EmployeeOfficeRepository(api);\r\n this.payments = new EmployeePaymentRepository(api);\r\n this.recurringPayments = new EmployeeRecurringPaymentRepository(api);\r\n this.timeRates = new EmployeeTimeRateRepository(api);\r\n }\r\n\r\n create(employee, options) {\r\n return this._api.post('/v1/employees', options, employee);\r\n }\r\n\r\n get(id, options) {\r\n return this._api.get(`/v1/employees/${id}`, options);\r\n }\r\n\r\n query(criteria, options) {\r\n const params = { ...criteria, ...options };\r\n return this._api.get('/v1/employees', params);\r\n }\r\n\r\n update(id, changes, options) {\r\n return this._api.patch(`/v1/employees/${id}`, options, changes);\r\n }\r\n}\r\n\r\nclass EmployeeCalendarRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n query(employeeId, criteria, options) {\r\n const params = { ...criteria, ...options };\r\n return this._api.get(`/v1/employees/${employeeId}/calendar`, params);\r\n }\r\n}\r\n\r\nclass EmployeeCommissionPlanRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n create(employeeId, employeeCommissionPlan, options) {\r\n return this._api.post(`/v1/employees/${employeeId}/commissionPlans`, options, employeeCommissionPlan);\r\n }\r\n\r\n delete(employeeId, employeeCommissionPlanId, options) {\r\n return this._api.delete(`/v1/employees/${employeeId}/commissionPlans/${employeeCommissionPlanId}`, options);\r\n }\r\n\r\n get(employeeId, employeeCommissionPlanId, options) {\r\n return this._api.get(`/v1/employees/${employeeId}/commissionPlans/${employeeCommissionPlanId}`, options);\r\n }\r\n\r\n query(employeeId, criteria, options) {\r\n const params = { ...criteria, ...options };\r\n return this._api.get(`/v1/employees/${employeeId}/commissionPlans`, params);\r\n }\r\n\r\n update(employeeId, employeeCommissionPlanId, changes, options) {\r\n return this._api.patch(`/v1/employees/${employeeId}/commissionPlans/${employeeCommissionPlanId}`, options, changes);\r\n }\r\n}\r\n\r\nclass EmployeeDocumentRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n create(employeeId, document, options) {\r\n return this._api.post(`/v1/employees/${employeeId}/documents`, options, document);\r\n }\r\n\r\n delete(employeeId, documentId, options) {\r\n return this._api.delete(`/v1/employees/${employeeId}/documents/${documentId}`, options);\r\n }\r\n\r\n get(employeeId, documentId, options) {\r\n return this._api.get(`/v1/employees/${employeeId}/documents/${documentId}`, options);\r\n }\r\n\r\n query(employeeId, criteria, options) {\r\n const params = { ...criteria, ...options };\r\n return this._api.get(`/v1/employees/${employeeId}/documents`, params);\r\n }\r\n}\r\n\r\nclass EmployeeOfficeRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n create(employeeId, office, options) {\r\n return this._api.post(`/v1/employees/${employeeId}/offices`, options, office);\r\n }\r\n\r\n delete(employeeId, officeId, options) {\r\n return this._api.delete(`/v1/employees/${employeeId}/offices/${officeId}`, options);\r\n }\r\n\r\n query(criteria, options) {\r\n const params = { ...criteria, ...options };\r\n return this._api.get('/v1/employees', params);\r\n }\r\n}\r\n\r\nclass EmployeePaymentRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n create(employeeId, payment, options) {\r\n return this._api.post(`/v1/employees/${employeeId}/payments`, options, payment);\r\n }\r\n\r\n delete(employeeId, paymentId, options) {\r\n return this._api.delete(`/v1/employees/${employeeId}/payments/${paymentId}`, options);\r\n }\r\n\r\n get(employeeId, paymentId, options) {\r\n return this._api.get(`/v1/employees/${employeeId}/payments/${paymentId}`, options);\r\n }\r\n\r\n query(employeeId, criteria, options) {\r\n const params = { ...criteria, ...options };\r\n return this._api.get(`/v1/employees/${employeeId}/payments`, params);\r\n }\r\n\r\n update(employeeId, paymentId, changes, options) {\r\n return this._api.patch(`/v1/employees/${employeeId}/payments/${paymentId}`, options, changes);\r\n }\r\n}\r\n\r\nclass EmployeeRecurringPaymentRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n create(employeeId, recurringPayment, options) {\r\n return this._api.post(`/v1/employees/${employeeId}/recurringPayments`, options, recurringPayment);\r\n }\r\n\r\n delete(employeeId, recurringPaymentId, options) {\r\n return this._api.delete(`/v1/employees/${employeeId}/recurringPayments/${recurringPaymentId}`, options);\r\n }\r\n\r\n get(employeeId, recurringPaymentId, options) {\r\n return this._api.get(`/v1/employees/${employeeId}/recurringPayments/${recurringPaymentId}`, options);\r\n }\r\n\r\n query(employeeId, criteria, options) {\r\n const params = { ...criteria, ...options };\r\n return this._api.get(`/v1/employees/${employeeId}/recurringPayments`, params);\r\n }\r\n\r\n update(employeeId, recurringPaymentId, changes, options) {\r\n return this._api.patch(`/v1/employees/${employeeId}/recurringPayments/${recurringPaymentId}`, options, changes);\r\n }\r\n}\r\n\r\nclass EmployeeTimeRateRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n query(employeeId, criteria, options) {\r\n const params = { ...criteria, ...options };\r\n return this._api.get(`/v1/employees/${employeeId}/timeRates`, params);\r\n }\r\n\r\n put(employeeId, timeRate, options) {\r\n return this._api.put(`/v1/employees/${employeeId}/timeRates`, options, timeRate);\r\n }\r\n}\r\n\r\nclass EquipmentRepository {\r\n constructor(api) {\r\n this._api = api;\r\n this.documents = new EquipmentDocumentRepository(api);\r\n this.notes = new EquipmentNoteRepository(api);\r\n }\r\n create(equipment, options) {\r\n return this._api.post('/v1/equipment', options, equipment);\r\n }\r\n\r\n get(id, options) {\r\n return this._api.get(`/v1/equipment/${id}`, options);\r\n }\r\n\r\n query(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/equipment', params);\r\n }\r\n\r\n update(id, changes, options) {\r\n return this._api.patch(`/v1/equipment/${id}`, options, changes);\r\n }\r\n}\r\n\r\nclass DepositPercentageOptionsRepository {\r\n constructor(api) {\r\n this._api = api; \r\n }\r\n create(depositpercentageoption, options) {\r\n return this._api.post('/v1/depositpercentageoptions', options, depositpercentageoption);\r\n }\r\n\r\n get(id, options) {\r\n return this._api.get(`/v1/depositpercentageoptions/${id}`, options);\r\n }\r\n\r\n query(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/depositpercentageoptions', params);\r\n }\r\n\r\n update(id, changes, options) {\r\n return this._api.patch(`/v1/depositpercentageoptions/${id}`, options, changes);\r\n }\r\n}\r\n\r\nclass BidDepositOptionRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n create(depositpercentageoption, options) {\r\n return this._api.post('/v1/depositpercentageoptions', options, depositpercentageoption);\r\n }\r\n\r\n get(id, options) {\r\n return this._api.get(`/v1/depositpercentageoptions/${id}`, options);\r\n }\r\n\r\n query(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/depositpercentageoptions', params);\r\n }\r\n\r\n update(id, changes, options) {\r\n return this._api.patch(`/v1/depositpercentageoptions/${id}`, options, changes);\r\n }\r\n}\r\n\r\nclass EquipmentDocumentRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n create(equipmentId, document, options) {\r\n return this._api.post(`/v1/equipment/${equipmentId}/documents`, options, document);\r\n }\r\n\r\n delete (equipmentId, documentId, options) {\r\n return this._api.delete(`/v1/equipment/${equipmentId}/documents/${documentId}`, options);\r\n }\r\n\r\n get(equipmentId, documentId, options) {\r\n return this._api.get(`/v1/equipment/${equipmentId}/documents/${documentId}`, options);\r\n }\r\n\r\n query(equipmentId, criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get(`/v1/equipment/${equipmentId}/documents`, params);\r\n }\r\n}\r\n\r\nclass EquipmentNoteRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n create(equipmentId, note, options) {\r\n return this._api.post(`/v1/equipment/${equipmentId}/notes`, options, note);\r\n }\r\n\r\n delete (equipmentId, noteId, options) {\r\n return this._api.delete(`/v1/equipment/${equipmentId}/notes/${noteId}`, options);\r\n }\r\n\r\n get(equipmentId, noteId, options) {\r\n return this._api.get(`/v1/equipment/${equipmentId}/notes/${noteId}`, options);\r\n }\r\n\r\n query(equipmentId, criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get(`/v1/equipment/${equipmentId}/notes`, params);\r\n }\r\n\r\n update(equipmentId, noteId, changes, options) {\r\n return this._api.patch(`/v1/equipment/${equipmentId}/notes/${noteId}`, options, changes);\r\n }\r\n}\r\n\r\nclass EquipmentStatusRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n query(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/equipmentStatuses', params);\r\n }\r\n}\r\n\r\nclass EquipmentTypesRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n query(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/equipmentTypes', params);\r\n }\r\n}\r\n\r\nclass FinanceProgramRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n query(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/finance-programs', params);\r\n }\r\n}\r\n\r\nclass GlobalLaborCodeRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n create(invoice, options) {\r\n return this._api.post('/v1/globalLaborCodes', options, invoice);\r\n }\r\n\r\n get(id, options) {\r\n return this._api.get(`/v1/globalLaborCodes/${id}`, options);\r\n }\r\n\r\n query(criteria, options) {\r\n const params = { ...criteria, ...options };\r\n return this._api.get('/v1/globalLaborCodes', params);\r\n }\r\n}\r\n\r\nclass InventoryRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n search(criteria, options) {\r\n const params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/inventory/search', params);\r\n }\r\n\r\n items(itemid, criteria, options) {\r\n const params = JobProAPI.merge(criteria, options);\r\n return this._api.get(`/v1/inventory/items/${itemid}`, params);\r\n }\r\n\r\n valueForQuickBooks(criteria, options) {\r\n return this._api.get('/v1/inventory/valueForQuickBooks');\r\n }\r\n\r\n getAlternatesByItem(itemId, criteria, options) {\r\n const params = JobProAPI.merge(criteria, options);\r\n return this._api.get(`/v1/inventory/alternates/${itemId}`, params);\r\n }\r\n\r\n searchAlternatesByItem(itemId, criteria, options) {\r\n const params = JobProAPI.merge(criteria, options);\r\n return this._api.get(`/v1/inventory/alternates/search/${itemId}`, params);\r\n }\r\n\r\n getRigs(criteria, options) {\r\n const params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/inventory/rigs', params);\r\n }\r\n\r\n getRigsList(criteria, options) {\r\n const params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/inventory/getRigs', params);\r\n }\r\n\r\n getRigsById(rigId, criteria, options) {\r\n const params = JobProAPI.merge(criteria, options);\r\n return this._api.get(`/v1/inventory/rigs/${rigId}`, params);\r\n }\r\n\r\n getRigsByIdNoAlt(rigId, criteria, options) {\r\n const params = JobProAPI.merge(criteria, options);\r\n return this._api.get(`/v1/inventory/rigs/noAlt/${rigId}`, params);\r\n }\r\n\r\n getSerializedInventory(criteria, options) {\r\n const params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/inventory/serializedInventory', params);\r\n }\r\n\r\n getRecentJobsByItem(criteria, options) {\r\n const params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/inventory/recentJobsByItem', params);\r\n }\r\n\r\n transferItems(options) {\r\n return this._api.post('/v1/inventory/transferitems', options);\r\n }\r\n\r\n transferFoam(options) {\r\n return this._api.post('/v1/inventory/transferfoam', options);\r\n }\r\n\r\n adjustItemQty(options) {\r\n return this._api.post('/v1/inventory/adjustitemqty', options);\r\n }\r\n\r\n transferInventoryAmtFromTruckToJobWIP(options) {\r\n return this._api.post('/v1/inventory/transferinventoryamtfromtruckTojobwip', options);\r\n }\r\n\r\n wipInventoryByJob(jobId, options) {\r\n return this._api.get(`/v1/inventory/wip/${jobId}`, options);\r\n }\r\n}\r\n\r\n\r\nclass InventoryTransactionRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n create(purchaseOrder, options) {\r\n return this._api.post('/v1/inv_transactions', options, purchaseOrder);\r\n }\r\n\r\n delete(id, options) {\r\n return this._api.delete(`/v1/inv_transactions/${id}`, options);\r\n }\r\n\r\n get(id, options) {\r\n return this._api.get(`/v1/inv_transactions/${id}`, options);\r\n }\r\n\r\n query(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/inv_transactions', params);\r\n }\r\n\r\n search(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/inv_transactions/search', params);\r\n }\r\n\r\n update(id, changes, options) {\r\n return this._api.patch(`/v1/inv_transactions/${id}`, options, changes);\r\n }\r\n}\r\n\r\n\r\nclass InvoiceRepository {\r\n constructor(api) {\r\n this._api = api;\r\n this.creditMemos = new InvoiceCreditMemoRepository(api);\r\n this.items = new InvoiceItemRepository(api);\r\n this.paidInvoices = new InvoicePaidInvoiceRepository(api);\r\n this.payments = new InvoicePaymentRepository(api);\r\n this.statuses = new InvoiceStatusRepository(api);\r\n }\r\n\r\n count(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/invoices/count', params);\r\n }\r\n\r\n create(invoice, options) {\r\n return this._api.post('/v1/invoices', options, invoice);\r\n }\r\n\r\n get(id, options) {\r\n return this._api.get(`/v1/invoices/${id}`, options);\r\n }\r\n\r\n query(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/invoices', params);\r\n }\r\n\r\n update(id, invoice, options) {\r\n return this._api.patch(`/v1/invoices/${id}`, options, invoice);\r\n }\r\n\r\n search(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/invoices/search', params);\r\n }\r\n}\r\n\r\nclass InvoiceCreditMemoRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n put(invoiceId, creditMemos, options) {\r\n return this._api.put(`/v1/invoices/${invoiceId}/creditMemos`, options, creditMemos);\r\n }\r\n}\r\n\r\nclass InvoiceItemRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n create(invoiceId, invoiceItem, options) {\r\n return this._api.post(`/v1/invoices/${invoiceId}/items`, options, invoiceItem);\r\n }\r\n\r\n get(invoiceId, invoiceItemId, options) {\r\n return this._api.get(`/v1/invoices/${invoiceId}/items/${invoiceItemId}`, options);\r\n }\r\n\r\n query(invoiceId, criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get(`/v1/invoices/${invoiceId}/items`, params);\r\n }\r\n\r\n update(invoiceId, invoiceItemId, invoiceItem, options) {\r\n return this._api.patch(`/v1/invoices/${invoiceId}/items/${invoiceItemId}`, options, invoiceItem);\r\n }\r\n}\r\n\r\nclass InvoicePaidInvoiceRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n put(invoiceId, paidInvoices, options) {\r\n return this._api.put(`/v1/invoices/${invoiceId}/paidInvoices`, options, paidInvoices);\r\n }\r\n}\r\n\r\nclass InvoicePaymentRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n query(invoiceId, criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get(`/v1/invoices/${invoiceId}/payments`, params);\r\n }\r\n}\r\n\r\nclass InvoiceStatusRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n query(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/invoices/statuses', params);\r\n }\r\n}\r\n\r\nclass InvoiceTemplateRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n delete(id, options) {\r\n return this._api.delete(`/v1/invoiceTemplates/${id}`, options);\r\n }\r\n\r\n get(id, options) {\r\n return this._api.get(`/v1/invoiceTemplates/${id}`, options);\r\n }\r\n\r\n query(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/invoiceTemplates', params);\r\n }\r\n\r\n update(id, changes, options) {\r\n return this._api.patch(`/v1/invoiceTemplates/${id}`, options, changes);\r\n }\r\n}\r\n\r\nclass ItemRepository {\r\n constructor(api) {\r\n this._api = api;\r\n this.categories = new ItemCategoryRepository(api);\r\n this.offices = new ItemOfficeRepository(api);\r\n this.pricing = new ItemPricingRepository(api);\r\n this.types = new ItemTypeRepository(api);\r\n this.manufacturers = new ItemManufacturerRepository(api);\r\n }\r\n\r\n count(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/items/count', params);\r\n }\r\n\r\n create(item, options) {\r\n return this._api.post('/v1/items', options, item);\r\n }\r\n\r\n defaultBin(id, criteria, options) {\r\n const params = JobProAPI.merge(criteria, options);\r\n return this._api.get(`/v1/items/${id}/defaultBin`, params);\r\n }\r\n\r\n get(id, options) {\r\n return this._api.get(`/v1/items/${id}`, options);\r\n }\r\n\r\n query(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/items', params);\r\n }\r\n\r\n search(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/items/search', params);\r\n }\r\n\r\n searchCount(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/items/search/count', params);\r\n }\r\n\r\n update(id, changes, options) {\r\n return this._api.patch(`/v1/items/${id}`, options, changes);\r\n }\r\n\r\n allocations(itemid, criteria, options) {\r\n const params = JobProAPI.merge(criteria, options);\r\n return this._api.get(`/v1/items/${itemid}/allocations`, params);\r\n }\r\n\r\n alternates(itemid, criteria, options) {\r\n const params = JobProAPI.merge(criteria, options);\r\n return this._api.get(`/v1/items/${itemid}/alternates`, params);\r\n }\r\n\r\n stockorders(itemid, criteria, options) {\r\n const params = JobProAPI.merge(criteria, options);\r\n return this._api.get(`/v1/items/${itemid}/stockorders`, params);\r\n }\r\n}\r\n\r\nclass ItemManufacturerRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n create(manufacturer, options) {\r\n return this._api.post('/v1/items/manufacturers', options, manufacturer);\r\n }\r\n\r\n get(id, options) {\r\n return this._api.get(`/v1/items/manufacturers/${id}`, options);\r\n }\r\n\r\n query(criteria, options) {\r\n const params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/items/manufacturers', params);\r\n }\r\n\r\n update(id, manufacturer, options) {\r\n return this._api.patch(`/v1/items/manufacturers/${id}`, options, manufacturer);\r\n }\r\n\r\n}\r\n\r\nclass ItemCategoryRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n query(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/items/categories', params);\r\n }\r\n}\r\n\r\nclass ItemOfficeRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n create(itemId, itemOffice, options) {\r\n return this._api.post(`/v1/items/${itemId}/offices`, options, itemOffice);\r\n }\r\n\r\n delete(itemId, officeId, options) {\r\n return this._api.delete(`/v1/items/${itemId}/offices/${officeId}`, options);\r\n }\r\n\r\n query(itemId, criteria, options) {\r\n const params = { ...criteria, ...options };\r\n return this._api.get(`/v1/items/${itemId}/offices`, params);\r\n }\r\n\r\n update(itemId, officeId, changes, options) {\r\n return this._api.patch(`/v1/items/${itemId}/offices/${officeId}`, options, changes);\r\n }\r\n}\r\n\r\nclass ItemPricingRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n create(itemId, itemPricing, options) {\r\n return this._api.post(`/v1/items/${itemId}/pricing`, options, itemPricing);\r\n }\r\n\r\n delete(itemId, pricingId, options) {\r\n return this._api.delete(`/v1/items/${itemId}/pricing/${pricingId}`, options);\r\n }\r\n\r\n query(itemId, criteria, options) {\r\n const params = { ...criteria, ...options };\r\n return this._api.get(`/v1/items/${itemId}/pricing`, params);\r\n }\r\n\r\n update(itemId, pricingId, changes, options) {\r\n return this._api.patch(`/v1/items/${itemId}/pricing/${pricingId}`, options, changes);\r\n }\r\n}\r\n\r\nclass ItemTypeRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n query(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/items/types', params);\r\n }\r\n}\r\n\r\nclass JobCalendarRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n create(jobId, calendarEvent, options) {\r\n return this._api.post(`/v1/jobs/${jobId}/calendar`, options, calendarEvent);\r\n }\r\n\r\n query(jobId, criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get(`/v1/jobs/${jobId}/calendar`, params);\r\n }\r\n}\r\n\r\nclass JobChecklistRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n create(jobId, jobChecklist, options) {\r\n const { requestId, ...params } = (options || {});\r\n return this._api.post(`/v1/jobs/${jobId}/checklists`, options, jobChecklist, {\r\n \"Request-ID\": requestId\r\n });\r\n }\r\n\r\n delete (jobId, jobChecklistId, options) {\r\n return this._api.delete(`/v1/jobs/${jobId}/checklists/${jobChecklistId}`, options);\r\n }\r\n\r\n get(jobId, jobChecklistId, options) {\r\n return this._api.get(`/v1/jobs/${jobId}/checklists/${jobChecklistId}`, options);\r\n }\r\n\r\n update(jobId, jobChecklistId, checklist, options) {\r\n return this._api.patch(`/v1/jobs/${jobId}/checklists/${jobChecklistId}`, options, checklist);\r\n }\r\n}\r\n\r\nclass JobCrewsRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n create(jobId, crew, options) {\r\n return this._api.post(`/v1/jobs/${jobId}/crews`, options, crew);\r\n }\r\n\r\n delete (jobId, crewId, options) {\r\n return this._api.delete(`/v1/jobs/${jobId}/crews/${crewId}`, options);\r\n }\r\n\r\n get(jobId, crewId, options) {\r\n return this._api.get(`/v1/jobs/${jobId}/crews/${crewId}`, options);\r\n }\r\n\r\n put(jobId, crewId, crew, options) {\r\n return this._api.put(`/v1/jobs/${jobId}/crews/${crewId}`, options, crew);\r\n }\r\n\r\n query(jobId, criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get(`/v1/jobs/${jobId}/crews`, params);\r\n }\r\n}\r\n\r\nclass JobDocumentRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n create(jobId, document, options) {\r\n const { requestId, ...params } = (options || {});\r\n return this._api.post(`/v1/jobs/${jobId}/documents`, options, document, {\r\n \"Request-ID\": requestId\r\n });\r\n }\r\n\r\n get(jobId, documentId, options) {\r\n return this._api.get(`/v1/jobs/${jobId}/documents/${documentId}`, options);\r\n }\r\n\r\n query(jobId, criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get(`/v1/jobs/${jobId}/documents`, params);\r\n }\r\n}\r\n\r\nclass JobDocumentTemplateRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n delete(id, options) {\r\n return this._api.delete(`/v1/jobDocumentTemplates/${id}`, options);\r\n }\r\n\r\n get(id, options) {\r\n return this._api.get(`/v1/jobDocumentTemplates/${id}`, options);\r\n }\r\n\r\n query(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/jobDocumentTemplates', params);\r\n }\r\n\r\n update(id, changes, options) {\r\n return this._api.patch(`/v1/jobDocumentTemplates/${id}`, options, changes);\r\n }\r\n}\r\n\r\nclass JobExpenseRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n create(jobId, expense, options) {\r\n const { requestId, ...params } = (options || {});\r\n return this._api.post(`/v1/jobs/${jobId}/expenses`, options, expense, {\r\n \"Request-ID\": requestId\r\n });\r\n }\r\n\r\n delete (jobId, expenseId, options) {\r\n return this._api.delete(`/v1/jobs/${jobId}/expenses/${expenseId}`, options);\r\n }\r\n\r\n get(jobId, expenseId, options) {\r\n return this._api.get(`/v1/jobs/${jobId}/expenses/${expenseId}`, options);\r\n }\r\n\r\n query(jobId, criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get(`/v1/jobs/${jobId}/expenses`, params);\r\n }\r\n}\r\n\r\nclass JobInvoicesRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n query(jobId, criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get(`/v1/jobs/${jobId}/invoices`, params);\r\n }\r\n}\r\n\r\nclass JobItemRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n create(jobId, jobItem, options) {\r\n const { requestId, ...params } = (options || {});\r\n return this._api.post(`/v1/jobs/${jobId}/items`, options, jobItem, {\r\n \"Request-ID\": requestId\r\n });\r\n }\r\n\r\n delete (jobId, jobItemId, options) {\r\n return this._api.delete(`/v1/jobs/${jobId}/items/${jobItemId}`, options);\r\n }\r\n\r\n get(jobId, jobItemId, options) {\r\n return this._api.get(`/v1/jobs/${jobId}/items/${jobItemId}`, options);\r\n }\r\n\r\n query(jobId, criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get(`/v1/jobs/${jobId}/items`, params);\r\n }\r\n\r\n split(jobId, jobItemId, jobItem, options) {\r\n return this._api.post(`/v1/jobs/${jobId}/items/${jobItemId}/split`, options, jobItem);\r\n }\r\n\r\n update(jobId, jobItemId, jobItem, options) {\r\n return this._api.patch(`/v1/jobs/${jobId}/items/${jobItemId}`, options, jobItem);\r\n }\r\n}\r\n\r\nclass JobRepository {\r\n constructor(api) {\r\n this._api = api;\r\n this.calendar = new JobCalendarRepository(api);\r\n this.changeOrders = new JobChangeOrdersRepository(api);\r\n this.checklists = new JobChecklistRepository(api);\r\n this.crews = new JobCrewsRepository(api);\r\n this.documents = new JobDocumentRepository(api);\r\n this.expenses = new JobExpenseRepository(api);\r\n this.invoices = new JobInvoicesRepository(api);\r\n this.items = new JobItemRepository(api);\r\n this.material = new JobMaterialRepository(api);\r\n this.notes = new JobNoteRepository(api);\r\n this.parentJob = new JobParentJobRepository(api);\r\n this.purchaseOrders = new JobPurchaseOrderRepository(api);\r\n this.inventorypurchaseOrders = new JobInventoryPurchaseOrderRepository(api);\r\n this.recommendations = new JobRecommendationRepository(api);\r\n this.signoffs = new JobSignoffRepository(api);\r\n this.statuses = new JobJobStatusRepository(api);\r\n this.timeRates = new JobTimeRateRepository(api);\r\n this.timeSheets = new JobTimeSheetsRepository(api);\r\n this.types = new JobJobTypeRepository(api);\r\n this.linkedJobs = new JobLinkedJobsRepository(api);\r\n }\r\n\r\n create(job, options) {\r\n return this._api.post('/v1/jobs', options, job);\r\n }\r\n\r\n get(id, options) {\r\n return this._api.get(`/v1/jobs/${id}`, options);\r\n }\r\n\r\n query(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/jobs', params);\r\n }\r\n\r\n search(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/jobs/search', params);\r\n }\r\n\r\n update(jobId, job, options) {\r\n return this._api.patch(`/v1/jobs/${jobId}`, options, job);\r\n }\r\n}\r\n\r\nclass JobChangeOrdersRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n create(jobId, changeOrder, options) {\r\n return this._api.post(`/v1/jobs/${jobId}/changeOrders`, options, changeOrder);\r\n }\r\n\r\n get(jobId, changeOrderId, options) {\r\n return this._api.get(`/v1/jobs/${jobId}/changeOrders/${changeOrderId}`, options);\r\n }\r\n}\r\n\r\nclass JobMaterialRepository {\r\n constructor(api) {\r\n this._api = api;\r\n this.entries = new JobMaterialEntryRepository(api);\r\n this.sourcing = new JobMaterialSourcingRepository(api);\r\n this.images = new JobMaterialImageRepository(api);\r\n }\r\n\r\n create(jobId, material, options) {\r\n return this._api.post(`/v1/jobs/${jobId}/material`, options, material);\r\n }\r\n\r\n get(jobId, materialId, options) {\r\n return this._api.get(`/v1/jobs/${jobId}/material/${materialId}`, options);\r\n }\r\n\r\n query(jobId, criteria, options) {\r\n const params = { ...criteria, ...options };\r\n return this._api.get(`/v1/jobs/${jobId}/material`, params);\r\n }\r\n\r\n update(jobId, materialId, changes, options) {\r\n return this._api.patch(`/v1/jobs/${jobId}/material/${materialId}`, options, changes);\r\n }\r\n\r\n autosource(jobId, requiredDate, options) {\r\n return this._api.post(`/v1/jobs/${jobId}/material/autosource`, options, requiredDate);\r\n }\r\n}\r\n\r\nclass JobMaterialEntryRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n create(jobId, materialId, entry, options) {\r\n return this._api.post(`/v1/jobs/${jobId}/material/${materialId}/entries`, options, entry);\r\n }\r\n\r\n createWaste(jobId, materialId, warehouseId, entry, options) {\r\n return this._api.post(`/v1/jobs/${jobId}/material/${materialId}/wasteentry/${warehouseId}`, options, entry);\r\n }\r\n\r\n delete(jobId, materialId, entryId, options) {\r\n return this._api.delete(`/v1/jobs/${jobId}/material/${materialId}/entries/${entryId}`, options);\r\n }\r\n\r\n get(jobId, materialId, entryId, options) {\r\n return this._api.get(`/v1/jobs/${jobId}/material/${materialId}/entries/${entryId}`, options);\r\n }\r\n\r\n query(jobId, materialId, criteria, options) {\r\n const params = { ...criteria, ...options };\r\n return this._api.get(`/v1/jobs/${jobId}/material/${materialId}/entries`, params);\r\n }\r\n\r\n update(jobId, materialId, entryId, changes, options) {\r\n return this._api.patch(`/v1/jobs/${jobId}/material/${materialId}/entries/${entryId}`, options, changes);\r\n }\r\n}\r\n\r\nclass JobMaterialImageRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n get(jobId, materialId, imageId, options) {\r\n return this._api.get(`/v1/jobs/${jobId}/material/${materialId}/images/${imageId}`, options);\r\n }\r\n}\r\n\r\nclass JobMaterialSourcingRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n create(jobId, materialId, sourcing, options) {\r\n return this._api.post(`/v1/jobs/${jobId}/material/${materialId}/sourcing`, options, sourcing);\r\n }\r\n\r\n delete(jobId, materialId, sourcingId, options) {\r\n return this._api.delete(`/v1/jobs/${jobId}/material/${materialId}/sourcing/${sourcingId}`, options);\r\n }\r\n\r\n get(jobId, materialId, sourcingId, options) {\r\n return this._api.get(`/v1/jobs/${jobId}/material/${materialId}/sourcing/${sourcingId}`, options);\r\n }\r\n\r\n query(jobId, materialId, criteria, options) {\r\n const params = { ...criteria, ...options };\r\n return this._api.get(`/v1/jobs/${jobId}/material/${materialId}/sourcing`, params);\r\n }\r\n\r\n update(jobId, materialId, sourcingId, changes, options) {\r\n return this._api.patch(`/v1/jobs/${jobId}/material/${materialId}/sourcing/${sourcingId}`, options, changes);\r\n }\r\n\r\n patch(jobId, materialId, sourcingId, changes, options) {\r\n return this._api.patch(`/v1/jobs/${jobId}/material/${materialId}/sourcing/${sourcingId}`, options, changes);\r\n }\r\n}\r\n\r\nclass JobNoteRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n create(jobId, note, options) {\r\n return this._api.post(`/v1/jobs/${jobId}/notes`, options, note);\r\n }\r\n}\r\n\r\nclass JobParentJobRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n get(jobId, options) {\r\n return this._api.get(`/v1/jobs/${jobId}/parentJob`, options);\r\n }\r\n}\r\n\r\nclass JobPurchaseOrderRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n query(jobId, criteria, options) {\r\n const params = { ...criteria, ...options };\r\n return this._api.get(`/v1/jobs/${jobId}/purchaseOrders`, params);\r\n }\r\n}\r\n\r\nclass JobInventoryPurchaseOrderRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n query(jobId, criteria, options) {\r\n const params = { ...criteria, ...options };\r\n return this._api.get(`/v1/jobs/${jobId}/inventoryPurchaseOrders`, params);\r\n }\r\n}\r\n\r\nclass JobRecommendationRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n create(jobId, recommendation, options) {\r\n const { requestId, ...params } = (options || {});\r\n return this._api.post(`/v1/jobs/${jobId}/recommendations`, options, recommendation, {\r\n \"Request-ID\": requestId\r\n });\r\n }\r\n\r\n delete (jobId, recommendationId, options) {\r\n return this._api.delete(`/v1/jobs/${jobId}/recommendations/${recommendationId}`, options);\r\n }\r\n\r\n get(jobId, recommendationId, options) {\r\n return this._api.get(`/v1/jobs/${jobId}/recommendations/${recommendationId}`, options);\r\n }\r\n\r\n patch(jobId, recommendationId, changes, options) {\r\n return this.update(jobId, recommendationId, changes, options);\r\n }\r\n\r\n update(jobId, recommendationId, changes, options) {\r\n return this._api.patch(`/v1/jobs/${jobId}/recommendations/${recommendationId}`, options, changes);\r\n }\r\n\r\n query(jobId, criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get(`/v1/jobs/${jobId}/recommendations`, params);\r\n }\r\n}\r\n\r\nclass JobSignoffRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n create(jobId, signoff, options) {\r\n const { requestId, ...params } = (options || {});\r\n return this._api.post(`/v1/jobs/${jobId}/signoffs`, options, signoff, {\r\n \"Request-ID\": requestId\r\n });\r\n }\r\n\r\n get(jobId, signoffId, options) {\r\n return this._api.get(`/v1/jobs/${jobId}/signoffs/${signoffId}`, options);\r\n }\r\n\r\n query(jobId, criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get(`/v1/jobs/${jobId}/signoffs`, params);\r\n }\r\n}\r\n\r\nclass JobTimeRateRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n query(jobId, criteria, options) {\r\n const params = { ...criteria, ...options };\r\n return this._api.get(`/v1/jobs/${jobId}/timeRates`, params);\r\n }\r\n\r\n put(jobId, timeRate, options) {\r\n return this._api.put(`/v1/jobs/${jobId}/timeRates`, options, timeRate);\r\n\r\n }\r\n}\r\n\r\nclass JobTimeSheetsRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n create(jobId, timeSheet, options) {\r\n const { requestId, ...params } = (options || {});\r\n return this._api.post(`/v1/jobs/${jobId}/timesheets`, options, timeSheet, {\r\n \"Request-ID\": requestId\r\n });\r\n }\r\n\r\n delete (jobId, timeSheetId, options) {\r\n return this._api.delete(`/v1/jobs/${jobId}/timesheets/${timeSheetId}`, options);\r\n }\r\n\r\n get(jobId, timeSheetId, options) {\r\n return this._api.get(`/v1/jobs/${jobId}/timesheets/${timeSheetId}`, options);\r\n }\r\n\r\n query(jobId, criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get(`/v1/jobs/${jobId}/timesheets`, params);\r\n }\r\n\r\n update(jobId, timeSheetId, changes, options) {\r\n return this._api.patch(`/v1/jobs/${jobId}/timesheets/${timeSheetId}`, options, changes);\r\n }\r\n}\r\n\r\nclass JobLinkedJobsRepository\r\n{\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n query(jobId, criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get(`/v1/jobs/${jobId}/linkedjobs`, params);\r\n }\r\n\r\n}\r\n\r\n/**\r\n * Deprecated. Use JobProApi.jobStatuses.\r\n */\r\nclass JobJobStatusRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n query(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/jobs/statuses', params);\r\n }\r\n}\r\n\r\nclass JobStatusRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n create(jobStatus, options) {\r\n return this._api.post('/v1/jobStatuses', options, jobStatus);\r\n }\r\n\r\n delete(id, options) {\r\n return this._api.delete(`/v1/jobStatuses/${id}`, options);\r\n }\r\n\r\n get(id, options) {\r\n return this._api.get(`/v1/jobStatuses/${id}`, options);\r\n }\r\n\r\n query(criteria, options) {\r\n var params = { ...criteria, ...options };\r\n return this._api.get('/v1/jobStatuses', params);\r\n }\r\n\r\n update(id, changes, options) {\r\n return this._api.patch(`/v1/jobStatuses/${id}`, options, changes);\r\n }\r\n}\r\n\r\n/**\r\n * Deprecated. Use JobProApi.jobTypes.\r\n */\r\nclass JobJobTypeRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n /**\r\n * Deprecated. Use JobProApi.jobTypes.query.\r\n */\r\n query(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/jobs/types', params);\r\n }\r\n}\r\n\r\nclass JobTypeRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n create(jobType, options) {\r\n return this._api.post('/v1/jobTypes', options, jobType);\r\n }\r\n\r\n delete (id, options) {\r\n return this._api.delete(`/v1/jobTypes/${id}`, options);\r\n }\r\n\r\n get(id, options) {\r\n return this._api.get(`/v1/jobTypes/${id}`, options);\r\n }\r\n\r\n query(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/jobTypes', params);\r\n }\r\n\r\n update(id, changes, options) {\r\n return this._api.patch(`/v1/jobTypes/${id}`, options, changes);\r\n }\r\n}\r\n\r\nclass LaborMultiplierRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n query(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/labor-multipliers', params);\r\n }\r\n}\r\n\r\nclass ManufacturerRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n get(id, options) {\r\n return this._api.get(`/v1/manufacturer/${id}`, options);\r\n }\r\n\r\n search(criteria, options) {\r\n const params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/manufacturers/search', params);\r\n }\r\n\r\n query(criteria, options) {\r\n const params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/manufacturers', params);\r\n }\r\n}\r\n\r\nclass MaterialMultiplierRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n query(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/material-multipliers', params);\r\n }\r\n}\r\n\r\nclass MerchantServicesRepository {\r\n constructor(api) {\r\n this._api = api;\r\n this.configs = new MerchantServicesConfigsRepository(api);\r\n this.tokens = new MerchantServicesTokenRepository(api);\r\n this.preauth = new MerchantServicesPreAuthRepository(api);\r\n this.payments = new MerchantServicesPaymentRepository(api);\r\n }\r\n\r\n}\r\n\r\nclass MerchantServicesConfigsRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n create(config, options) {\r\n return this._api.post('/v1/merchantservices/configs', options, config);\r\n }\r\n\r\n delete(id, options) {\r\n return this._api.delete(`/v1/merchantservices/configs/${id}`, options);\r\n }\r\n\r\n get(id, options) {\r\n return this._api.get(`/v1/merchantservices/configs/${id}`, options);\r\n }\r\n\r\n query(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/merchantservices/configs', params);\r\n }\r\n\r\n update(id, changes, options) {\r\n return this._api.patch(`/v1/merchantservices/configs/${id}`, options, changes);\r\n }\r\n\r\n}\r\n\r\nclass MerchantServicesPaymentRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n get(paymentId) {\r\n return this._api.get(`/v1/merchantservices/payments/${paymentId}`);\r\n }\r\n\r\n}\r\n\r\nclass MerchantServicesTokenRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n get(customerId, options) {\r\n return this._api.get(`/v1/merchantservices/payment-tokens/${customerId}`, options);\r\n }\r\n\r\n create(customerId, paymentToken, options) {\r\n return this._api.post(`/v1/merchantservices/payment-tokens/${customerId}`, options, paymentToken);\r\n }\r\n\r\n}\r\n\r\nclass MerchantServicesPreAuthRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n getBid(bidId, options) {\r\n return this._api.get(`/v1/merchantservices/pending-job/${bidId}/pre-auth`, options);\r\n }\r\n\r\n createBid(bidId, processCreditCard, options) {\r\n return this._api.post(`/v1/merchantservices/pending-job/${bidId}/pre-auth`, options, processCreditCard);\r\n }\r\n\r\n getJob(jobId, options) {\r\n return this._api.get(`/v1/merchantservices/job/${jobId}/pre-auth`, options);\r\n }\r\n\r\n getInvoice(invoiceId, options) {\r\n return this._api.get(`/v1/merchantservices/invoice/${invoiceId}/pre-auth`, options);\r\n }\r\n\r\n delete(transactionId, options) {\r\n return this._api.delete(`/v1/merchantservices/pre-auth/${transactionId}`, options);\r\n }\r\n}\r\n\r\nclass NoteTemplateRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n query(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/note-templates', params);\r\n }\r\n}\r\n\r\nclass OfficeRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n get(id, options) {\r\n return this._api.get(`/v1/offices/${id}`, options);\r\n }\r\n\r\n query(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/offices', params);\r\n }\r\n}\r\n\r\nclass PaymentRepository {\r\n constructor(api) {\r\n this._api = api;\r\n this.invoicePayments = new PaymentInvoicePaymentRepository(api);\r\n }\r\n\r\n create(payment, options) {\r\n return this._api.post('/v1/payments', options, payment);\r\n }\r\n\r\n get(id, options) {\r\n return this._api.get(`/v1/payments/${id}`, options);\r\n }\r\n\r\n query(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/payments', params);\r\n }\r\n\r\n update(id, changes, options) {\r\n return this._api.patch(`/v1/payments/${id}`, options, changes);\r\n }\r\n\r\n voidpayment(paymentId, options, criteria) {\r\n return this._api.post(`/v1/payments/voidpayment/${paymentId}`, options, criteria);\r\n }\r\n\r\n}\r\n\r\nclass PaymentInvoicePaymentRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n create(paymentId, invoicePayment, options) {\r\n return this._api.post(`/v1/payments/${paymentId}/invoicePayments`, options, invoicePayment);\r\n }\r\n\r\n put(paymentId, invoicePayments, options) {\r\n return this._api.put(`/v1/payments/${paymentId}/invoicePayments`, options, invoicePayments);\r\n }\r\n}\r\n\r\nclass PayrollDocumentTemplateRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n delete(id, options) {\r\n return this._api.delete(`/v1/payrollDocumentTemplates/${id}`, options);\r\n }\r\n\r\n get(id, options) {\r\n return this._api.get(`/v1/payrollDocumentTemplates/${id}`, options);\r\n }\r\n\r\n query(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/payrollDocumentTemplates', params);\r\n }\r\n\r\n update(id, changes, options) {\r\n return this._api.patch(`/v1/payrollDocumentTemplates/${id}`, options, changes);\r\n }\r\n}\r\n\r\nclass ProposalAgreements {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n query(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/proposal-agreements', params);\r\n }\r\n}\r\n\r\nclass ProposalAgreementTemplateRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n delete(id, options) {\r\n return this._api.delete(`/v1/proposalAgreementTemplates/${id}`, options);\r\n }\r\n\r\n get(id, options) {\r\n return this._api.get(`/v1/proposalAgreementTemplates/${id}`, options);\r\n }\r\n\r\n query(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/proposalAgreementTemplates', params);\r\n }\r\n\r\n update(id, changes, options) {\r\n return this._api.patch(`/v1/proposalAgreementTemplates/${id}`, options, changes);\r\n }\r\n}\r\n\r\nclass ProposalPriceRestrictionsRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n create(priceRestriction, options) {\r\n return this._api.post('/v1/proposalPriceRestrictions', options, priceRestriction);\r\n }\r\n\r\n delete(id, options) {\r\n return this._api.delete(`/v1/proposalPriceRestrictions/${id}`, options);\r\n }\r\n\r\n get(id, options) {\r\n return this._api.get(`/v1/proposalPriceRestrictions/${id}`, options);\r\n }\r\n\r\n put(id, priceRestriction, options) {\r\n return this._api.put(`/v1/proposalPriceRestrictions/${id}`, options, priceRestriction);\r\n }\r\n\r\n query(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/proposalPriceRestrictions', params);\r\n }\r\n}\r\n\r\nclass ProposalTemplateRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n delete(id, options) {\r\n return this._api.delete(`/v1/proposalTemplates/${id}`, options);\r\n }\r\n\r\n get(id, options) {\r\n return this._api.get(`/v1/proposalTemplates/${id}`, options);\r\n }\r\n\r\n query(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/proposalTemplates', params);\r\n }\r\n\r\n update(id, changes, options) {\r\n return this._api.patch(`/v1/proposalTemplates/${id}`, options, changes);\r\n }\r\n}\r\n\r\nclass ProposalTemplateDesignRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n query(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/proposal-template-designs', params);\r\n }\r\n}\r\n\r\nclass PurchaseOrderRepository {\r\n constructor(api) {\r\n this._api = api;\r\n this.documents = new PurchaseOrderDocumentRepository(api);\r\n this.items = new PurchaseOrderItemRepository(api);\r\n this.notes = new PurchaseOrderNoteRepository(api);\r\n this.statuses = new PurchaseOrderStatusRepository(api);\r\n }\r\n\r\n create(purchaseOrder, options) {\r\n return this._api.post('/v1/purchaseOrders', options, purchaseOrder);\r\n }\r\n\r\n delete (id, options) {\r\n return this._api.delete(`/v1/purchaseOrders/${id}`, options);\r\n }\r\n\r\n get(id, options) {\r\n return this._api.get(`/v1/purchaseOrders/${id}`, options);\r\n }\r\n\r\n query(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/purchaseOrders', params);\r\n }\r\n\r\n search(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/purchaseOrders/search', params);\r\n }\r\n\r\n update(id, changes, options) {\r\n return this._api.patch(`/v1/purchaseOrders/${id}`, options, changes);\r\n }\r\n}\r\n\r\n\r\nclass PhysicalCountRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n create(physicalCount, options) {\r\n return this._api.post('/v1/physicalCounts', options, physicalCount);\r\n }\r\n\r\n delete(id, options) {\r\n return this._api.delete(`/v1/physicalCounts/${id}`, options);\r\n }\r\n\r\n get(id, options) {\r\n return this._api.get(`/v1/physicalCounts/${id}`, options);\r\n }\r\n\r\n query(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/physicalCounts', params);\r\n }\r\n\r\n search(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/physicalCounts/search', params);\r\n }\r\n\r\n update(id, changes, options) {\r\n return this._api.patch(`/v1/physicalCounts/${id}`, options, changes);\r\n }\r\n}\r\n\r\nclass InventoryPurchaseOrderRepository {\r\n constructor(api) {\r\n this._api = api;\r\n this.documents = new InventoryPurchaseOrderDocumentRepository(api);\r\n this.items = new InventoryPurchaseOrderItemRepository(api);\r\n this.notes = new InventoryPurchaseOrderNoteRepository(api);\r\n }\r\n\r\n create(purchaseOrder, options) {\r\n return this._api.post('/v1/inv_purchaseorders', options, purchaseOrder);\r\n }\r\n\r\n get(id, options, requestHeaders) {\r\n return this._api.get(`/v1/inv_purchaseorders/${id}`, options, requestHeaders);\r\n }\r\n\r\n query(criteria, options, requestHeaders) {\r\n const params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/inv_purchaseorders', params, requestHeaders);\r\n }\r\n\r\n receive(id, receive, options) {\r\n return this._api.post(`/v1/inv_purchaseorders/${id}/receive`, options, receive);\r\n }\r\n}\r\n\r\nclass PurchaseOrderDocumentRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n create(purchaseOrderId, document, options) {\r\n return this._api.post(`/v1/purchaseOrders/${purchaseOrderId}/documents`, options, document);\r\n }\r\n\r\n delete (purchaseOrderId, documentId, options) {\r\n return this._api.delete(`/v1/purchaseOrders/${purchaseOrderId}/documents/${documentId}`, options);\r\n }\r\n\r\n get(purchaseOrderId, documentId, options) {\r\n return this._api.get(`/v1/purchaseOrders/${purchaseOrderId}/documents/${documentId}`, options);\r\n }\r\n\r\n query(purchaseOrderId, criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get(`/v1/purchaseOrders/${purchaseOrderId}/documents`, params);\r\n }\r\n}\r\n\r\nclass PurchaseOrderItemRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n create(purchaseOrderId, purchaseOrderItem, options) {\r\n return this._api.post(`/v1/purchaseOrders/${purchaseOrderId}/items`, options, purchaseOrderItem);\r\n }\r\n\r\n delete (purchaseOrderId, purchaseOrderItemId, options) {\r\n return this._api.delete(`/v1/purchaseOrders/${purchaseOrderId}/items/${purchaseOrderItemId}`, options);\r\n }\r\n\r\n get(purchaseOrderId, purchaseOrderItemId, options) {\r\n return this._api.get(`/v1/purchaseOrders/${purchaseOrderId}/items/${purchaseOrderItemId}`, options);\r\n }\r\n\r\n query(purchaseOrderId, criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get(`/v1/purchaseOrders/${purchaseOrderId}/items`, params);\r\n }\r\n\r\n update(purchaseOrderId, purchaseOrderItemId, changes, options) {\r\n return this._api.patch(`/v1/purchaseOrders/${purchaseOrderId}/items/${purchaseOrderItemId}`, options, changes);\r\n }\r\n}\r\n\r\nclass PurchaseOrderNoteRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n create(purchaseOrderId, note, options) {\r\n return this._api.post(`/v1/purchaseOrders/${purchaseOrderId}/notes`, options, note);\r\n }\r\n\r\n delete (purchaseOrderId, noteId, options) {\r\n return this._api.delete(`/v1/purchaseOrders/${purchaseOrderId}/notes/${noteId}`, options);\r\n }\r\n\r\n get(purchaseOrderId, noteId, options) {\r\n return this._api.get(`/v1/purchaseOrders/${purchaseOrderId}/notes/${noteId}`, options);\r\n }\r\n\r\n query(purchaseOrderId, criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get(`/v1/purchaseOrders/${purchaseOrderId}/notes`, params);\r\n }\r\n\r\n update(purchaseOrderId, noteId, changes, options) {\r\n return this._api.patch(`/v1/purchaseOrders/${purchaseOrderId}/notes/${noteId}`, options, changes);\r\n }\r\n}\r\n\r\nclass PurchaseOrderStatusRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n query(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/purchaseOrders/statuses', params);\r\n }\r\n}\r\n\r\nclass InventoryPurchaseOrderDocumentRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n create(purchaseOrderId, document, options) {\r\n return this._api.post(`/v1/inv_purchaseorders/${purchaseOrderId}/documents`, options, document);\r\n }\r\n\r\n delete(purchaseOrderId, documentId, options) {\r\n return this._api.delete(`/v1/inv_purchaseorders/${purchaseOrderId}/documents/${documentId}`, options);\r\n }\r\n\r\n get(purchaseOrderId, documentId, options) {\r\n return this._api.get(`/v1/inv_purchaseorders/${purchaseOrderId}/documents/${documentId}`, options);\r\n }\r\n\r\n query(purchaseOrderId, criteria, options) {\r\n const params = JobProAPI.merge(criteria, options);\r\n return this._api.get(`/v1/inv_purchaseorders/${purchaseOrderId}/documents`, params);\r\n }\r\n}\r\n\r\nclass InventoryPurchaseOrderItemRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n get(purchaseOrderId, purchaseOrderItemId, options, requestHeaders) {\r\n return this._api.get(`/v1/inv_purchaseorders/${purchaseOrderId}/items/${purchaseOrderItemId}`, options, requestHeaders);\r\n }\r\n\r\n add(purchaseOrderId, item, options) {\r\n return this._api.post(`/v1/inv_purchaseorders/${purchaseOrderId}/items`, options, item);\r\n }\r\n\r\n query(purchaseOrderId, criteria, options, requestHeaders) {\r\n const params = JobProAPI.merge(criteria, options);\r\n return this._api.get(`/v1/inv_purchaseorders/${purchaseOrderId}/items`, params, requestHeaders);\r\n }\r\n\r\n update(purchaseOrderId, purchaseOrderItemId, purchaseOrderItem, options) {\r\n return this._api.patch(`/v1/inv_purchaseorders/${purchaseOrderId}/items/${purchaseOrderItemId}`, options, purchaseOrderItem);\r\n }\r\n}\r\n\r\nclass InventoryPurchaseOrderItemsRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n get(purchaseOrderItemId, options, requestHeaders) {\r\n return this._api.get(`/v1/inv_purchaseorders/items/${purchaseOrderItemId}`, options, requestHeaders);\r\n }\r\n\r\n query(criteria, options, requestHeaders) {\r\n const params = JobProAPI.merge(criteria, options);\r\n return this._api.get(`/v1/inv_purchaseorders/items`, params, requestHeaders);\r\n }\r\n\r\n update(purchaseOrderItemId, purchaseOrderItem, options) {\r\n return this._api.patch(`/v1/inv_purchaseorders/items/${purchaseOrderItemId}`, options, purchaseOrderItem);\r\n }\r\n\r\n getByMaterialId(materialId, options, requestHeaders) {\r\n return this._api.get(`/v1/inv_purchaseorders/items/orderedbyjobitem/${materialId}`, options, requestHeaders);\r\n }\r\n\r\n getByJobId(jobId, options, requestHeaders) {\r\n return this._api.get(`/v1/inv_purchaseorders/items/orderedbyjob/${jobId}`, options, requestHeaders);\r\n }\r\n}\r\n\r\nclass InventoryPurchaseOrderNoteRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n create(purchaseOrderId, note, options) {\r\n return this._api.post(`/v1/inv_purchaseorders/${purchaseOrderId}/notes`, options, note);\r\n }\r\n\r\n delete(purchaseOrderId, noteId, options) {\r\n return this._api.delete(`/v1/inv_purchaseorders/${purchaseOrderId}/notes/${noteId}`, options);\r\n }\r\n\r\n get(purchaseOrderId, noteId, options) {\r\n return this._api.get(`/v1/inv_purchaseorders/${purchaseOrderId}/notes/${noteId}`, options);\r\n }\r\n\r\n query(purchaseOrderId, criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get(`/v1/inv_purchaseorders/${purchaseOrderId}/notes`, params);\r\n }\r\n\r\n update(purchaseOrderId, noteId, changes, options) {\r\n return this._api.patch(`/v1/inv_purchaseorders/${purchaseOrderId}/notes/${noteId}`, options, changes);\r\n }\r\n}\r\n\r\n\r\nclass PreferredPaymentMethodRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n query(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/preferredPaymentMethods', params);\r\n }\r\n}\r\n\r\nclass ReferralSourceRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n query(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/referralSources', params);\r\n }\r\n}\r\n\r\nclass RequestTypeQuestionRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n create(requestTypeId, question, options) {\r\n return this._api.post(`/v1/requestTypes/${requestTypeId}/questions`, options, question);\r\n }\r\n\r\n get(requestTypeId, options) {\r\n return this._api.get(`/v1/requestTypes/${requestTypeId}/questions`, options);\r\n }\r\n\r\n query(requestTypeId, criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get(`/v1/requestTypes/${requestTypeId}/questions`, params);\r\n }\r\n\r\n update(requestTypeId, questionId, changes, options) {\r\n return this._api.patch(`/v1/requestTypes/${requestTypeId}/questions/${questionId}`, options, changes);\r\n }\r\n}\r\n\r\nclass RequestTypeRepository {\r\n constructor(api) {\r\n this._api = api;\r\n this.questions = new RequestTypeQuestionRepository(api);\r\n }\r\n\r\n create(requestType, options) {\r\n return this._api.post('/v1/requestTypes', options, requestType);\r\n }\r\n\r\n get(requestTypeId, options) {\r\n return this._api.get(`/v1/requestTypes/${requestTypeId}`, options);\r\n }\r\n\r\n query(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/requestTypes', params);\r\n }\r\n\r\n update(requestTypeId, changes, options) {\r\n return this._api.patch(`/v1/requestTypes/${requestTypeId}`, options, changes);\r\n }\r\n}\r\n\r\nclass ResourceRepository {\r\n constructor(api) {\r\n this._api = api;\r\n this.deliveries = new ResourceDeliveryRepository(api);\r\n this.documents = new ResourceDocumentRepository(api);\r\n this.inspectionChecklists = new ResourceInspectionChecklistRepository(api);\r\n this.loadTicket = new ResourceLoadTicketRepository(api);\r\n this.timeRates = new ResourceTimeRateRepository(api);\r\n }\r\n\r\n get(resourceId, options) {\r\n return this._api.get(`/v1/resources/${resourceId}`, options);\r\n }\r\n\r\n query(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/resources', params);\r\n }\r\n\r\n update(resourceId, changes, options) {\r\n return this._api.patch(`/v1/resources/${resourceId}`, options, changes);\r\n }\r\n}\r\n\r\nclass ResourceDeliveryRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n query(resourceId, criteria, options) {\r\n const params = { ...criteria, ...options };\r\n return this._api.get(`/v1/resources/${resourceId}/deliveries`, params);\r\n }\r\n}\r\n\r\nclass ResourceDocumentRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n create(resourceId, document, options) {\r\n return this._api.post(`/v1/resources/${resourceId}/documents`, options, document);\r\n }\r\n\r\n delete(resourceId, documentId, options) {\r\n return this._api.delete(`/v1/resources/${resourceId}/documents/${documentId}`, options);\r\n }\r\n\r\n get(resourceId, documentId, options) {\r\n return this._api.get(`/v1/resources/${resourceId}/documents/${documentId}`, options);\r\n }\r\n\r\n query(resourceId, criteria, options) {\r\n const params = { ...criteria, ...options };\r\n return this._api.get(`/v1/resources/${resourceId}/documents`, params);\r\n }\r\n}\r\n\r\nclass ResourceInspectionChecklistRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n create(resourceId, inspectionChecklist, options) {\r\n return this._api.post(`/v1/resources/${resourceId}/inspection-checklists`, options, inspectionChecklist);\r\n }\r\n\r\n get(resourceId, inspectionChecklistId, options) {\r\n return this._api.get(`/v1/resources/${resourceId}/inspection-checklists/${inspectionChecklistId}`, options);\r\n }\r\n\r\n query(resourceId, criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get(`/v1/resources/${resourceId}/inspection-checklists`, params);\r\n }\r\n\r\n update(resourceId, inspectionChecklistId, inspectionChecklist, options) {\r\n return this._api.patch(`/v1/resources/${resourceId}/inspection-checklists/${inspectionChecklistId}`, options, inspectionChecklist);\r\n }\r\n}\r\n\r\nclass ResourceLoadTicketRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n get(resourceId, options) {\r\n return this._api.get(`/v1/resources/${resourceId}/load-ticket`, options);\r\n }\r\n}\r\n\r\nclass ResourcePayTypeRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n query(criteria, options) {\r\n const params = { ...criteria, ...options };\r\n return this._api.get('/v1/resourcePayTypes', params);\r\n }\r\n}\r\n\r\nclass ResourceTimeRateRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n query(resourceId, criteria, options) {\r\n var params = { ...criteria, ...options };\r\n return this._api.get(`/v1/resources/${resourceId}/timeRates`, params);\r\n }\r\n\r\n put(resourceId, timeRate, options) {\r\n return this._api.put(`/v1/resources/${resourceId}/timeRates`, options, timeRate);\r\n }\r\n}\r\n\r\nclass SettingsRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n get(options) {\r\n return this._api.get(`/v1/settings`, options);\r\n }\r\n\r\n update(settings, options) {\r\n return this._api.patch(`/v1/settings`, options, settings);\r\n }\r\n}\r\n\r\nclass StandardCrewRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n create(crew, options) {\r\n return this._api.post('/v1/standard-crews', options, crew);\r\n }\r\n\r\n delete(id, options) {\r\n return this._api.delete(`/v1/standard-crews/${id}`, options);\r\n }\r\n\r\n get(id, options) {\r\n return this._api.get(`/v1/standard-crews/${id}`, options);\r\n }\r\n\r\n put(id, crew, options) {\r\n return this._api.put(`/v1/standard-crews/${id}`, options, crew);\r\n }\r\n\r\n query(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/standard-crews', params);\r\n }\r\n}\r\n\r\nclass StageTypeRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n query(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/stage-types', params);\r\n }\r\n}\r\n\r\nclass StockImageRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n query(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/stock-images', params);\r\n }\r\n}\r\n\r\nclass StockOrderRepository {\r\n constructor(api) {\r\n this._api = api;\r\n this.items = new StockOrderItemSearchRepository(api);\r\n }\r\n}\r\n\r\nclass StockOrderItemSearchRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n searchpendingjoborders(query, options) {\r\n const params = JobProAPI.merge(query, options);\r\n return this._api.get(`/v1/stockorders/pendingjoborders/`, params);\r\n }\r\n\r\n searchbelowthreshold(query, options) {\r\n const params = JobProAPI.merge(query, options);\r\n return this._api.get('/v1/stockorders/belowthreshold', params);\r\n }\r\n\r\n searchotheritems(query, options) {\r\n const params = JobProAPI.merge(query, options);\r\n return this._api.get('/v1/stockorders/otheritems', params);\r\n }\r\n}\r\n\r\nclass SupplierRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n create(supplier, options) {\r\n return this._api.post('/v1/suppliers', options, supplier);\r\n }\r\n get(id, options) {\r\n return this._api.get(`/v1/suppliers/${id}`, options);\r\n }\r\n\r\n query(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/suppliers', params);\r\n }\r\n}\r\n\r\nclass TaxScheduleRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n query(criteria, options) {\r\n const params = { ...criteria, ...options };\r\n return this._api.get('/v1/taxSchedules', params);\r\n }\r\n}\r\n\r\nclass TemplateCategoryRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n \r\n query(criteria, options) {\r\n const params = { ...criteria, ...options };\r\n return this._api.get('/v1/templateCategories', params);\r\n }\r\n}\r\n\r\nclass TemplateRepository {\r\n constructor(api) {\r\n this._api = api;\r\n this.offices = new TemplateOfficeRepository(api);\r\n }\r\n create(template, options) {\r\n return this._api.post('/v1/templates', options, template);\r\n }\r\n get(id, options) {\r\n return this._api.get(`/v1/templates/${id}`, options);\r\n }\r\n\r\n query(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/templates', params);\r\n }\r\n\r\n update(id, changes, options) {\r\n return this._api.patch(`/v1/templates/${id}`, options, changes);\r\n }\r\n}\r\n\r\nclass TemplateOfficeRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n create(templatesId, office, options) {\r\n return this._api.post(`/v1/templates/${templatesId}/offices`, options, office);\r\n }\r\n\r\n delete(templatesId, officeId, options) {\r\n return this._api.delete(`/v1/templates/${templatesId}/offices/${officeId}`, options);\r\n }\r\n\r\n query(criteria, options) {\r\n const params = { ...criteria, ...options };\r\n return this._api.get('/v1/templates', params);\r\n }\r\n}\r\n\r\nclass TimeRateRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n query(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/timerates', params);\r\n }\r\n}\r\n\r\nclass TimesheetRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n create(timesheet, options) {\r\n return this._api.post('/v1/timesheets', options, timesheet);\r\n }\r\n\r\n delete(id, options) {\r\n return this._api.delete(`/v1/timesheets/${id}`, options);\r\n }\r\n\r\n query(criteria, options) {\r\n const params = { ...criteria, ...options };\r\n return this._api.get('/v1/timesheets', params);\r\n }\r\n\r\n update(id, changes, options) {\r\n return this._api.patch(`/v1/timesheets/${id}`, options, changes);\r\n }\r\n}\r\n\r\n\r\nclass UserRepository {\r\n constructor(api) {\r\n this._api = api;\r\n this.offices = new UserOfficesRepository(api);\r\n this.organization = new UserOrganizationRepository(api);\r\n this.permissions = new UserPermissionsRepository(api);\r\n //this.roles = new UserRolesRepository(api);\r\n }\r\n\r\n currentUser(options, requestHeaders) {\r\n return this._api.get(`/v1/users/current`, options, requestHeaders);\r\n }\r\n\r\n currentUserOffices(options) {\r\n return this._api.get(`/v1/users/currentOffices`, options);\r\n }\r\n\r\n get(id, options) {\r\n return this._api.get(`/v1/users/${id}`, options);\r\n }\r\n\r\n query(criteria, options) {\r\n const params = { ...criteria, ...options };\r\n return this._api.get('/v1/users', params);\r\n }\r\n\r\n usersList(criteria, options) {\r\n const params = { ...criteria, ...options };\r\n return this._api.get('/v1/users/usersList', params);\r\n }\r\n\r\n update(id, changes, options) {\r\n return this._api.patch(`/v1/users/${id}`, options, changes);\r\n }\r\n}\r\n\r\nclass UserOrganizationRepository {\r\n constructor(api) {\r\n this._api = api;\r\n this.settings = new UserOrganizationSettingsRepository(api);\r\n }\r\n}\r\n\r\nclass UserOrganizationSettingsRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n // Unused (I think) I can't find any reference of this being a valid path. Returns 404. use settingsRepository above for the current user organization settings.\r\n get(userId, options) {\r\n return this._api.get(`/v1/users/${userId}/organization/settings`, options);\r\n }\r\n}\r\n\r\nclass UserPermissionsRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n query(userId, criteria, options, requestHeaders) {\r\n const params = JobProAPI.merge(criteria, options);\r\n return this._api.get(`/v1/users/${userId}/permissions`, params, requestHeaders);\r\n }\r\n\r\n get(userId, permissionId, options, requestHeaders) {\r\n return this._api.get(`/v1/users/${userId}/permissions/${permissionId}`, options, requestHeaders);\r\n }\r\n\r\n add(userId, permissionItem, options, requestHeaders) {\r\n return this._api.post(`/v1/users/${userId}/permissions`, options, permissionItem, requestHeaders);\r\n }\r\n\r\n update(userId, permissionId, permissionItem, options, requestHeaders) {\r\n return this._api.patch(`/v1/users/${userId}/permissions/${permissionId}`, options, permissionItem, requestHeaders);\r\n }\r\n\r\n unset(userId, permissionId, options, requestHeaders) {\r\n return this._api.delete(`/v1/users/${userId}/permissions/${permissionId}`, options, requestHeaders);\r\n }\r\n\r\n delete(userId, permissionId, options, requestHeaders) {\r\n return this._api.delete(`/v1/users/${userId}/permissions/${permissionId}`, options, requestHeaders);\r\n }\r\n}\r\n\r\nclass UserOfficesRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n query(userId, criteria, options, requestHeaders) {\r\n const params = JobProAPI.merge(criteria, options);\r\n return this._api.get(`/v1/users/${userId}/offices`, params, requestHeaders);\r\n }\r\n\r\n create(userId, officeItem, options, requestHeaders) {\r\n return this._api.post(`/v1/users/${userId}/offices`, options, officeItem, requestHeaders);\r\n }\r\n\r\n delete(userId, officeId, options, requestHeaders) {\r\n return this._api.delete(`/v1/users/${userId}/offices/${officeId}`, options, requestHeaders);\r\n }\r\n}\r\n\r\nclass WarehouseRepository {\r\n constructor(api) {\r\n this._api = api;\r\n this.items = new WarehouseItemRepository(api);\r\n this.offices = new WarehouseOfficesRepository(api);\r\n }\r\n create(warehouse, options) {\r\n return this._api.post('/v1/warehouses', options, warehouse);\r\n }\r\n\r\n get(id, options, requestHeaders) {\r\n return this._api.get(`/v1/warehouses/${id}`, options, requestHeaders);\r\n }\r\n\r\n query(criteria, options, requestHeaders) {\r\n const params = JobProAPI.merge(criteria, options);\r\n return this._api.get(`/v1/warehouses`, params, requestHeaders);\r\n }\r\n}\r\n\r\nclass WarehouseItemRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n //inventory(itemid, criteria, options) {\r\n // const params = JobProAPI.merge(criteria, options);\r\n // return this._api.get(`/v1/warehouses/items/${itemid}/inventory`, params);\r\n //}\r\n\r\n //allocations(itemid, criteria, options) {\r\n // const params = JobProAPI.merge(criteria, options);\r\n // return this._api.get(`/v1/warehouses/items/${itemid}/allocations`, params);\r\n //}\r\n\r\n //availability(itemid, criteria, options) {\r\n // const params = JobProAPI.merge(criteria, options);\r\n // return this._api.get(`/v1/warehouses/items/${itemid}/availability`, params);\r\n //}\r\n\r\n //stockorders(itemid, criteria, options) {\r\n // const params = JobProAPI.merge(criteria, options);\r\n // return this._api.get(`/v1/warehouses/items/${itemid}/stockorders`, params);\r\n //}\r\n}\r\n\r\nclass WarehouseOfficesRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n create(warehouseId, officeId, warehouseOffice, options) {\r\n return this._api.post(`/v1/warehouses/${warehouseId}/offices/${officeId}`, options, warehouseOffice);\r\n }\r\n\r\n update(warehouseId, officeId, warehouseOffice, options) {\r\n return this._api.patch(`/v1/warehouses/${warehouseId}/offices/${officeId}`, options, warehouseOffice);\r\n }\r\n\r\n delete(warehouseId, officeId, options) {\r\n return this._api.delete(`/v1/warehouses/${warehouseId}/offices/${officeId}`, options);\r\n }\r\n}\r\n\r\nclass ZipCodeTaxSchedulesRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n create(zipCodeTaxSchedule, options) {\r\n return this._api.post('/v1/zipcodetaxschedule', options, zipCodeTaxSchedule);\r\n }\r\n\r\n count(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/zipcodetaxschedule/count', params);\r\n }\r\n\r\n get(id, options) {\r\n return this._api.get(`/v1/zipcodetaxschedule/${id}`, options);\r\n }\r\n\r\n query(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/zipcodetaxschedule', params);\r\n }\r\n\r\n search(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/zipcodetaxschedule/search', params);\r\n }\r\n}\r\n\r\nclass AppointmentTypeRepository {\r\n constructor(api) {\r\n this._api = api;\r\n }\r\n\r\n create(jobType, options) {\r\n return this._api.post('/v1/appointmentTypes', options, jobType);\r\n }\r\n\r\n delete(id, options) {\r\n return this._api.delete(`/v1/appointmentTypes/${id}`, options);\r\n }\r\n\r\n get(id, options) {\r\n return this._api.get(`/v1/appointmentTypes/${id}`, options);\r\n }\r\n\r\n \r\n query(criteria, options) {\r\n var params = JobProAPI.merge(criteria, options);\r\n return this._api.get('/v1/appointmentTypes', params);\r\n }\r\n\r\n update(id, changes, options) {\r\n return this._api.patch(`/v1/appointmentTypes/${id}`, options, changes);\r\n }\r\n}\r\n\r\n\r\n\r\n// Export JobProAPI for whichever environment is requesting it (falling back to putting it on the window)\r\n(function (root, factory) {\r\n if (typeof define === 'function' && define.amd) {\r\n define([], factory);\r\n } else if (typeof exports === 'object') {\r\n module.exports = factory();\r\n } else {\r\n root.JobProAPI = factory();\r\n }\r\n}(window, () => JobProAPI));","// extracted by mini-css-extract-plugin\nmodule.exports = {\"disabled\":\"_3Av0ZtAVNi9Et6vO6Rsm-v\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"Kj-g4jIdjBjgLknWu1jOt\",\"week\":\"_1TqsZ1ihNzOIU34GLMxU1-\",\"day\":\"szVU3MPfdbMxR6qhPGaNe\",\"inactive\":\"_2-ocA7bSi_QDbVl70rLLwN\",\"headerRow\":\"cJLIVTxR3p3acTyni5qiP\",\"headerLabel\":\"HVJODFaKZHIrDJlmgi3_y\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"editCrew\":\"_2B3PJZqTqwCd3p_v4SjotS\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"dateNavigator\":\"_19DOalGiU1AfwyxQLSTLmK\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"dispatcher\":\"C1TjzQWeArfcELjiEFiYF\",\"mapContainer\":\"_1s1iyTzv44oH4oDRxPL_xT\",\"spinnerStyle\":\"_1Vi-uuM5PHd6u0fux5-43T\",\"listContainer\":\"_3DPpBZt41IX4Yaigz17POs\",\"flexListContainer\":\"_13REDgxEfbHbjTwV4KV_0W\",\"flexGrow\":\"_2v77RRKX8UR7eeoJC3pZzz\",\"eventsListWindowEvent\":\"Qt8ZcT7QxXt9qyHFbCZU2\"};","var map = {\n\t\"./af\": 350,\n\t\"./af.js\": 350,\n\t\"./ar\": 351,\n\t\"./ar-dz\": 352,\n\t\"./ar-dz.js\": 352,\n\t\"./ar-kw\": 353,\n\t\"./ar-kw.js\": 353,\n\t\"./ar-ly\": 354,\n\t\"./ar-ly.js\": 354,\n\t\"./ar-ma\": 355,\n\t\"./ar-ma.js\": 355,\n\t\"./ar-sa\": 356,\n\t\"./ar-sa.js\": 356,\n\t\"./ar-tn\": 357,\n\t\"./ar-tn.js\": 357,\n\t\"./ar.js\": 351,\n\t\"./az\": 358,\n\t\"./az.js\": 358,\n\t\"./be\": 359,\n\t\"./be.js\": 359,\n\t\"./bg\": 360,\n\t\"./bg.js\": 360,\n\t\"./bm\": 361,\n\t\"./bm.js\": 361,\n\t\"./bn\": 362,\n\t\"./bn-bd\": 363,\n\t\"./bn-bd.js\": 363,\n\t\"./bn.js\": 362,\n\t\"./bo\": 364,\n\t\"./bo.js\": 364,\n\t\"./br\": 365,\n\t\"./br.js\": 365,\n\t\"./bs\": 366,\n\t\"./bs.js\": 366,\n\t\"./ca\": 367,\n\t\"./ca.js\": 367,\n\t\"./cs\": 368,\n\t\"./cs.js\": 368,\n\t\"./cv\": 369,\n\t\"./cv.js\": 369,\n\t\"./cy\": 370,\n\t\"./cy.js\": 370,\n\t\"./da\": 371,\n\t\"./da.js\": 371,\n\t\"./de\": 372,\n\t\"./de-at\": 373,\n\t\"./de-at.js\": 373,\n\t\"./de-ch\": 374,\n\t\"./de-ch.js\": 374,\n\t\"./de.js\": 372,\n\t\"./dv\": 375,\n\t\"./dv.js\": 375,\n\t\"./el\": 376,\n\t\"./el.js\": 376,\n\t\"./en-au\": 377,\n\t\"./en-au.js\": 377,\n\t\"./en-ca\": 378,\n\t\"./en-ca.js\": 378,\n\t\"./en-gb\": 379,\n\t\"./en-gb.js\": 379,\n\t\"./en-ie\": 380,\n\t\"./en-ie.js\": 380,\n\t\"./en-il\": 381,\n\t\"./en-il.js\": 381,\n\t\"./en-in\": 382,\n\t\"./en-in.js\": 382,\n\t\"./en-nz\": 383,\n\t\"./en-nz.js\": 383,\n\t\"./en-sg\": 384,\n\t\"./en-sg.js\": 384,\n\t\"./eo\": 385,\n\t\"./eo.js\": 385,\n\t\"./es\": 386,\n\t\"./es-do\": 387,\n\t\"./es-do.js\": 387,\n\t\"./es-mx\": 388,\n\t\"./es-mx.js\": 388,\n\t\"./es-us\": 389,\n\t\"./es-us.js\": 389,\n\t\"./es.js\": 386,\n\t\"./et\": 390,\n\t\"./et.js\": 390,\n\t\"./eu\": 391,\n\t\"./eu.js\": 391,\n\t\"./fa\": 392,\n\t\"./fa.js\": 392,\n\t\"./fi\": 393,\n\t\"./fi.js\": 393,\n\t\"./fil\": 394,\n\t\"./fil.js\": 394,\n\t\"./fo\": 395,\n\t\"./fo.js\": 395,\n\t\"./fr\": 396,\n\t\"./fr-ca\": 397,\n\t\"./fr-ca.js\": 397,\n\t\"./fr-ch\": 398,\n\t\"./fr-ch.js\": 398,\n\t\"./fr.js\": 396,\n\t\"./fy\": 399,\n\t\"./fy.js\": 399,\n\t\"./ga\": 400,\n\t\"./ga.js\": 400,\n\t\"./gd\": 401,\n\t\"./gd.js\": 401,\n\t\"./gl\": 402,\n\t\"./gl.js\": 402,\n\t\"./gom-deva\": 403,\n\t\"./gom-deva.js\": 403,\n\t\"./gom-latn\": 404,\n\t\"./gom-latn.js\": 404,\n\t\"./gu\": 405,\n\t\"./gu.js\": 405,\n\t\"./he\": 406,\n\t\"./he.js\": 406,\n\t\"./hi\": 407,\n\t\"./hi.js\": 407,\n\t\"./hr\": 408,\n\t\"./hr.js\": 408,\n\t\"./hu\": 409,\n\t\"./hu.js\": 409,\n\t\"./hy-am\": 410,\n\t\"./hy-am.js\": 410,\n\t\"./id\": 411,\n\t\"./id.js\": 411,\n\t\"./is\": 412,\n\t\"./is.js\": 412,\n\t\"./it\": 413,\n\t\"./it-ch\": 414,\n\t\"./it-ch.js\": 414,\n\t\"./it.js\": 413,\n\t\"./ja\": 415,\n\t\"./ja.js\": 415,\n\t\"./jv\": 416,\n\t\"./jv.js\": 416,\n\t\"./ka\": 417,\n\t\"./ka.js\": 417,\n\t\"./kk\": 418,\n\t\"./kk.js\": 418,\n\t\"./km\": 419,\n\t\"./km.js\": 419,\n\t\"./kn\": 420,\n\t\"./kn.js\": 420,\n\t\"./ko\": 421,\n\t\"./ko.js\": 421,\n\t\"./ku\": 422,\n\t\"./ku.js\": 422,\n\t\"./ky\": 423,\n\t\"./ky.js\": 423,\n\t\"./lb\": 424,\n\t\"./lb.js\": 424,\n\t\"./lo\": 425,\n\t\"./lo.js\": 425,\n\t\"./lt\": 426,\n\t\"./lt.js\": 426,\n\t\"./lv\": 427,\n\t\"./lv.js\": 427,\n\t\"./me\": 428,\n\t\"./me.js\": 428,\n\t\"./mi\": 429,\n\t\"./mi.js\": 429,\n\t\"./mk\": 430,\n\t\"./mk.js\": 430,\n\t\"./ml\": 431,\n\t\"./ml.js\": 431,\n\t\"./mn\": 432,\n\t\"./mn.js\": 432,\n\t\"./mr\": 433,\n\t\"./mr.js\": 433,\n\t\"./ms\": 434,\n\t\"./ms-my\": 435,\n\t\"./ms-my.js\": 435,\n\t\"./ms.js\": 434,\n\t\"./mt\": 436,\n\t\"./mt.js\": 436,\n\t\"./my\": 437,\n\t\"./my.js\": 437,\n\t\"./nb\": 438,\n\t\"./nb.js\": 438,\n\t\"./ne\": 439,\n\t\"./ne.js\": 439,\n\t\"./nl\": 440,\n\t\"./nl-be\": 441,\n\t\"./nl-be.js\": 441,\n\t\"./nl.js\": 440,\n\t\"./nn\": 442,\n\t\"./nn.js\": 442,\n\t\"./oc-lnc\": 443,\n\t\"./oc-lnc.js\": 443,\n\t\"./pa-in\": 444,\n\t\"./pa-in.js\": 444,\n\t\"./pl\": 445,\n\t\"./pl.js\": 445,\n\t\"./pt\": 446,\n\t\"./pt-br\": 447,\n\t\"./pt-br.js\": 447,\n\t\"./pt.js\": 446,\n\t\"./ro\": 448,\n\t\"./ro.js\": 448,\n\t\"./ru\": 449,\n\t\"./ru.js\": 449,\n\t\"./sd\": 450,\n\t\"./sd.js\": 450,\n\t\"./se\": 451,\n\t\"./se.js\": 451,\n\t\"./si\": 452,\n\t\"./si.js\": 452,\n\t\"./sk\": 453,\n\t\"./sk.js\": 453,\n\t\"./sl\": 454,\n\t\"./sl.js\": 454,\n\t\"./sq\": 455,\n\t\"./sq.js\": 455,\n\t\"./sr\": 456,\n\t\"./sr-cyrl\": 457,\n\t\"./sr-cyrl.js\": 457,\n\t\"./sr.js\": 456,\n\t\"./ss\": 458,\n\t\"./ss.js\": 458,\n\t\"./sv\": 459,\n\t\"./sv.js\": 459,\n\t\"./sw\": 460,\n\t\"./sw.js\": 460,\n\t\"./ta\": 461,\n\t\"./ta.js\": 461,\n\t\"./te\": 462,\n\t\"./te.js\": 462,\n\t\"./tet\": 463,\n\t\"./tet.js\": 463,\n\t\"./tg\": 464,\n\t\"./tg.js\": 464,\n\t\"./th\": 465,\n\t\"./th.js\": 465,\n\t\"./tk\": 466,\n\t\"./tk.js\": 466,\n\t\"./tl-ph\": 467,\n\t\"./tl-ph.js\": 467,\n\t\"./tlh\": 468,\n\t\"./tlh.js\": 468,\n\t\"./tr\": 469,\n\t\"./tr.js\": 469,\n\t\"./tzl\": 470,\n\t\"./tzl.js\": 470,\n\t\"./tzm\": 471,\n\t\"./tzm-latn\": 472,\n\t\"./tzm-latn.js\": 472,\n\t\"./tzm.js\": 471,\n\t\"./ug-cn\": 473,\n\t\"./ug-cn.js\": 473,\n\t\"./uk\": 474,\n\t\"./uk.js\": 474,\n\t\"./ur\": 475,\n\t\"./ur.js\": 475,\n\t\"./uz\": 476,\n\t\"./uz-latn\": 477,\n\t\"./uz-latn.js\": 477,\n\t\"./uz.js\": 476,\n\t\"./vi\": 478,\n\t\"./vi.js\": 478,\n\t\"./x-pseudo\": 479,\n\t\"./x-pseudo.js\": 479,\n\t\"./yo\": 480,\n\t\"./yo.js\": 480,\n\t\"./zh-cn\": 481,\n\t\"./zh-cn.js\": 481,\n\t\"./zh-hk\": 482,\n\t\"./zh-hk.js\": 482,\n\t\"./zh-mo\": 483,\n\t\"./zh-mo.js\": 483,\n\t\"./zh-tw\": 484,\n\t\"./zh-tw.js\": 484\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 808;","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"_1YnOm73VTKIvKSCYDGTXMm\",\"results\":\"_2Y9y6JlyXuxMKEmhmFqAA7\",\"employee\":\"_3XPnHoHf2o2TKghqfaPanN\",\"searchResultsContainer\":\"_3a7_4vFExAEWIobVhANAfC\",\"disabled\":\"_3jX6AxbQBjHemFYoxKLOm2\",\"employeeList\":\"_39o0ucUpwEXLSJy3QKBt22\",\"employeeCheck\":\"_3cUvjfxoim1EwN_W9ngtpf\"};"],"sourceRoot":""}