{"version":3,"sources":["images/nifc-logo-small.png","redux/auth/types.js","redux/auth/reducers.js","redux/auth/actions.js","redux/auth/operations.js","redux/auth/index.js","redux/config/types.js","redux/config/reducers.js","redux/config/actions.js","redux/config/operations.js","redux/config/index.js","redux/map/types.js","redux/map/reducers.js","redux/map/actions.js","redux/map/operations.js","redux/map/index.js","redux/filter/types.js","redux/filter/reducers.js","redux/filter/actions.js","redux/filter/operations.js","redux/filter/index.js","redux/customFilter/types.js","redux/customFilter/reducers.js","redux/customFilter/actions.js","redux/customFilter/operations.js","redux/customFilter/index.js","redux/incidentList/types.js","redux/incidentList/reducers.js","redux/incidentList/operations.js","redux/incidentList/actions.js","redux/incidentList/index.js","redux/incident/types.js","redux/incident/reducers.js","redux/incident/operations.js","redux/incident/actions.js","redux/incident/index.js","redux/conflict/types.js","redux/conflict/reducers.js","redux/conflict/index.js","redux/report/types.js","redux/report/reducers.js","redux/report/operations.js","redux/report/actions.js","redux/report/index.js","redux/user/types.js","redux/user/reducers.js","redux/user/operations.js","redux/user/actions.js","redux/user/index.js","redux/configureStore.js","muiTheme.js","services/request.js","utils/incidentHelper.js","services/api.js","components/Splash.js","images/inform_logo.png","components/Login.js","components/esri/mapHub.js","components/newIncident/NewIncidentMap.js","components/newIncident/NewIncidentDialog.js","components/reporting/reports/NonFederalFires.js","components/reporting/reports/NonFederalRXFires.js","components/reporting/reports/MissingAcreageMap.js","components/reporting/reports/MissingAcreages.js","components/reporting/reports/PerimeterAttributes.js","components/reporting/GeneralReportingDialog.js","components/dictionary/DataDictionaryPanel.js","components/admin/IncidentEditDetails.js","components/admin/AdminPanel.js","components/Header.js","components/report/ReportHeader.js","components/incidentDetails/EditableAcreageTable.js","components/report/ReportInfoSection.js","components/report/ReportMapSection.js","components/incidentDetails/components/IrwinIdTextField.js","components/incidentDetails/relatedRecords/RelatedIrwinRecord.js","components/incidentDetails/relatedRecords/RelatedBulkUploadRecord.js","components/incidentDetails/relatedRecords/RelatedWFMIRecord.js","components/incidentDetails/relatedRecords/RelatedFireStatRecord.js","components/incidentDetails/relatedRecords/RelatedFODRecord.js","components/incidentDetails/relatedRecords/RelatedCertificationRecord.js","components/incidentDetails/relatedRecords/RelatedRecordsDialog.js","components/report/Report.js","utils/esriLoader.js","components/esri/LayerManager.js","components/esri/DrawToolbar.js","components/esri/Map.js","components/arcgisFilter/defaults/operators.js","components/arcgisFilter/utils/genericUtils.js","components/arcgisFilter/components/FieldChooser.js","components/arcgisFilter/components/OperatorChooser.js","components/arcgisFilter/components/ValueInput.js","components/arcgisFilter/components/UniqueValueChooser.js","components/arcgisFilter/components/ValueTypeChooser.js","components/arcgisFilter/components/DomainValueChooser.js","components/arcgisFilter/components/RelativeDateChooser.js","components/arcgisFilter/containers/Expression.js","components/arcgisFilter/containers/Set-styled.js","components/arcgisFilter/containers/Set.js","components/arcgisFilter/utils/dateUtils.js","components/arcgisFilter/utils/sqlUtils.js","components/arcgisFilter/defaults/expression.js","components/arcgisFilter/NarrativeFilterBuilder.js","components/incidentDiscovery/filter/NarrativeQueryDialog.js","components/incidentDiscovery/filter/FilterItemContainer.js","components/incidentDiscovery/filter/MultiSelect.js","components/incidentDiscovery/filter/NumericRange.js","components/incidentDiscovery/filter/DateRange.js","components/incidentDiscovery/filter/DropDownSelect.js","components/incidentDiscovery/filter/TextFilter.js","components/incidentDiscovery/filter/JurisdictionalTextFilter.js","icons/Polygon.js","components/incidentDiscovery/filter/LocationFilter.js","components/incidentDiscovery/filter/FiltersContainer.js","components/incidentDetails/CertifyDialog.js","components/uploads/UploadResults.js","components/uploads/uploadHelper.js","components/uploads/StateUploadDialog.js","components/incidentDiscovery/list/IncidentListItem.js","components/incidentDiscovery/list/ShareDialog.js","components/incidentDiscovery/list/IncidentList.js","components/arcgisFilter/components/FilterPreviewer.js","components/arcgisFilter/ArcgisFilter.js","components/arcgisFilter/CustomFiltersDialog.js","components/arcgisFilter/CustomFilterList.js","components/incidentDiscovery/index.js","components/incidentDetails/InvalidateIncidentDialog.js","components/incidentDetails/RequiredFieldStatus.js","components/incidentDetails/IncidentResourcesPanel.js","components/splicing/SpliceDialog.js","components/UniquenessPopover.js","components/incidentDetails/DespliceDialog.js","components/incidentDetails/PrescibedEscapeDialog.js","components/incidentDetails/IncidentDetailsHeader.js","components/incidentDetails/RelationshipDialog.js","components/incidentDetails/InfoBadge.js","components/incidentDetails/DetailsDashboardPanel.js","components/incidentDetails/NarrativeDialog.js","components/incidentDetails/UnitValidator.js","components/incidentDetails/DetailRow.js","components/incidentDetails/DetailsIncidentPanel.js","components/incidentDetails/customPanels/FireCausePanel.js","components/incidentDetails/customPanels/MultiAgencyResponsePanel.js","components/incidentDetails/editGeometry/EditOriginToolbar.js","icons/CursorPointer.js","components/incidentDetails/editGeometry/EditPerimeterToolbar.js","components/incidentDetails/editGeometry/EditGeometryToolbar.js","components/AlertPanel.js","components/incidentDetails/IncidentDetailsContainer.js","components/incidentDetails/index.js","components/newIncident/index.js","components/reporting/AttributeSummary.js","components/reporting/SummariesList.js","components/reporting/ReportingDialog.js","components/reporting/index.js","components/reporting/print/index.js","components/dictionary/index.js","components/Main.js","components/esri/auth/AuthManager.js","components/App.js","index.js","components/arcgisFilter/icons/PlusIcon.js","components/arcgisFilter/icons/DeleteIcon.js"],"names":["initialState","user","loaded","tokenPointOfOrigin","tokenPerimeter","isCertifier","isReadOnly","rolesLoaded","hasNoRoles","isAdmin","authReducer","state","action","type","types","authObject","payload","portal","credential","_oAuthCred","noRoles","token","data","setIsCertifier","actions","setIsReadOnly","setIsAdmin","setNoRoles","loadPerimeterToken","loadPointOfOriginToken","logout","dispatch","window","authManager","login","then","response","error","checkAuth","checkLogin","reducer","fieldInfos","perimeterFieldInfos","sortField","originFields","discoveryDate","sortDesc","configReducer","config","setOriginFieldInfos","setPerimeterFieldInfos","fetchConfig","api","getAppConfig","setSortField","setSortDesc","currentExtent","perimeterIncident","showAddIrwinIdToPerimeter","mapReducer","REHYDRATE","extent","map","mapExtent","manualRehydrateMap","setExtent","mapLoaded","setAddIrwinIdToPerimeter","MANUAL_REHYDRATE_FILTER","SET_ACTIVE_DRAW_TOOL","SET_FILTER_GEOMETRY","SET_USE_EXTENT_FILTER","SET_FILTER_LOADING","SET_FILTER_VISIBLE","ADD_FIRE_CAUSE","REMOVE_FIRE_CAUSE","CLEAR_FIRE_CAUSE","ADD_INITIAL_STRATEGY","REMOVE_INITIAL_STRATEGY","CLEAR_INITIAL_STRATEGY","ADD_LANDOWNER_CATEGORY","REMOVE_LANDOWNER_CATEGORY","CLEAR_LANDOWNER_CATEGORY","REMOVE_IRWIN_RELATIONSHIP","CLEAR_IRWIN_RELATIONSHIPS","ADD_IRWIN_RELATIONSHIP","ADD_INITIAL_TYPE","REMOVE_INITIAL_TYPE","CLEAR_INITIAL_TYPE","SET_FIRE_ACRE_FILTER","CLEAR_FIRE_ACRE_FILTER","SET_FIRE_DISCOVERY_DATES","CLEAR_FIRE_DISCOVERY_DATES","SET_FIRE_OUT_DATES","CLEAR_FIRE_OUT_DATES","SET_MODIFIED_DATES","CLEAR_MODIFIED_DATES","SET_STRUCTURES_FILTER","SET_INJURIES_FILTER","SET_UNIQUENESS_FILTER","SET_FATALITIES_FILTER","SET_BASIC_FILTER_ACTIVE","SET_PERIMETER_MAP_METHOD_FILTER","SET_PERIMETER_FEATURE_STATUS_FILTER","SET_PERIMETER_FEATURE_ACCESS_FILTER","SET_OTHER_STRUCTURES_DESTROYED_FILTER","SET_RESIDENCES_THREATENED_FILTER","SET_OTHER_STRUCTURES_THREATENED_FILTER","SET_CERTIFIED_FILTER","SET_GACC_FILTER","SET_STATE_FILTER","SET_COUNTY_FILTER","SET_POO_PROTECTING_UNIT","SET_POO_PROTECTING_AGENCY","SET_REPORT_SEARCH_TERMS","SET_INCIDENT_JURISDICTIONAL_AGENCY","SET_DISPATCH_CENTER_ID","SET_JURISDICTIONAL_UNIT","RESET_FILTERS","SET_NARRATIVE_FILTER","ADD_UNIQUE_FIRE_ID","SET_CAPABILITY_REQUESTS_FILTER","REMOVE_UNIQUE_FIRE_ID","CLEAR_UNIQUE_FIRE_ID","SET_MODIFIED_BY_SYSTEM_FILTER","SET_CREATED_BY_SYSTEM_FILTER","ADD_DATA_SOURCE","REMOVE_DATA_SOURCE","CLEAR_DATA_SOURCE","SET_MULTI_ROOT","SET_UTC_OFFSET_FILTER","CLEAR_UTC_OFFSET_FILTER","SET_PERIMETER_ACREAGE_LANDOWNER","SET_PERIMETER_ACREAGE_OPERATOR","SET_PERIMETER_ACREAGE_NUMBER","CLEAR_PERIMETER_ACREAGE","SET_PERIMETER_ACREAGE_IDS","SET_HAS_SPATIAL_FILTER","SET_SPATIAL_FILTER_ID","visible","isBasicFilterActive","loading","useExtent","geometry","hasSpatialFilter","spatialFilterID","gacc","fireCauses","discoveryDateMax","discoveryDateMin","Date","getFullYear","outDateMax","outDateMin","modifiedDateMax","modifiedDateMin","fireAcresMax","fireAcresMin","originWhereClause","structuresDestroyed","uniqueness","fatalities","otherStructuresDestroyed","residencesThreatened","otherStructuresThreatened","certified","perimeterMapMethod","perimeterFeatureStatus","perimeterFeatureAccess","strategies","irwinRelationships","dataSources","multiRootOnly","categories","reportSearchTerms","landownerCategories","incidentJurisdictionalAgency","county","capabilityRequests","pooProtectingUnit","pooProtectingAgency","jurisdictionalUnit","dispatchCenterID","uniqueFireIds","activeDrawTool","modifiedBySystem","createdBySystem","narrativeFilter","narrativeFilterState","utcOffset","perimeterAcreageLandowner","perimeterAcreageOperator","perimeterAcreageNumber","filterReducer","filter","injuries","setPerimeterAcreageOperator","strategy","irwinRelationship","source","category","fireCause","cause","acres","max","min","discoveryDates","outDates","modifiedDates","SET_TYPE_CATEGORY_FILTER","uniqueFireIdentifier","id","resetFilters","manualRehydrateFilter","setActiveDrawTool","setFilterGeometry","setUseExtentFilter","setFilterLoading","setFilterVisible","setBasicFilterActive","addFireCause","removeFireCause","clearFireCause","addInitialStrategy","setNarrativeFilter","removeInitialStrategy","clearInitialStrategy","clearIrwinRelationships","removeIrwinRelationship","addIrwinRelationship","addDataSource","removeDataSource","clearDataSources","addInitialType","removeInitialType","clearInitialType","addLandownerCategory","removeLandownerCategory","clearLandownerCategory","setFireAcreage","clearFireAcreage","setFireDiscoveryDates","clearFireDiscoveryDates","setFireOutDates","clearFireOutDates","setModifiedDates","clearModifiedDates","setStructuresFilter","setInjuriesFilter","setUniquenessFilter","setFatalitiesFilter","setOtherStructuresDestroyedFilter","setResidencesThreatenedFilter","setOtherStructuresThreatenedFilter","setCertifiedFilter","setGaccFilter","setStateFilter","setCountyFilter","setModifiedBySystemFilter","setCapabilityRequestsFilter","setCreatedBySystemFilter","setReportSearchTerms","setPOOIncidentJurisdictionalAgency","setDispatchCenterID","setPOOProtectingUnit","setPOOProtectingAgency","setPOOJurisdictionalUnit","addUniqueFireIdentifier","removeUniqueFireIdentifier","clearUniqueFireIdentifiers","setPerimeterMapMethod","setPerimeterFeatureStatus","setPerimeterFeatureAccess","setMultiRoot","setUtcOffsetFilter","clearUtcOffsetFilter","clearPerimeterAcreage","setPerimeterAcreageLandowner","setPerimeterAcreageNumber","setHasSpatialFilter","setSpatialFilterID","activeFilter","activeFilterState","customFilters","incidentReducer","newFilter","customFilter","filterGuid","filterToRemove","setActiveFilter","addNewFilter","saveFilterEdit","nukeFilters","removeFilter","incidents","visibleIncidents","selectedIncidents","queriedIncidentsTotal","displayedIncidentsCount","setIncidents","setIncidentsLoaded","setIncidentListVisible","setVisibleIncidents","addSelectedIncident","incident","removeSelectedIncident","clearSelectedIncidents","setQueriedIncidentsTotal","setDisplayedIncidentsCount","attributes","UniqueFireIdentifier","relationships","perimeter","perimeterFields","adsStatus","preIncidentExtent","newIncidentProtectingUnit","setIncident","clearIncident","setPerimeter","setPerimeterFields","setRelationships","clearRelationships","clearPerimeter","clearPerimeterFields","setNewIncidentProtectingUnit","protectingUnit","setADSStatus","clearADSStatus","setPreIncidentExtent","ADSStatus","validIncident","conflictingIncidents","conflictingRelationships","screenshot","setScreenshot","activeCustomFilter","activeCustomFilterState","setActiveCustomFilter","setCustomFilters","persistConfig","key","storage","blacklist","persistCombineReducers","rootReducer","theme","getMuiTheme","fontFamily","borderRadius","palette","primary1Color","primary2Color","primary3Color","accent1Color","accent2Color","nonUniqueColor","accent3Color","textColor","secondaryTextColor","borderColor","infoBadgeColor","tableHeaderColumn","height","spacing","tableRow","selectedColor","tableRowColumn","Request","this","status","Promise","resolve","reject","Error","statusText","handleAs","text","json","propName","propArray","formData","forEach","value","append","obj","body","FormData","prop","hasOwnProperty","Array","isArray","addArrayToFormData","URLSearchParams","has","toString","isFormData","headers","Headers","requestUrl","options","method","fetch","responseJson","indices","uploadUsername","isRx","JSON","stringify","objectToFormData","objectToUrlSearchParams","params","url","getHeaders","hideCredentials","credentials","getRequestBody","resp","catch","handleResponse","bind","getFileHeaders","getValidationInfo","validationType","enums","origin","getOriginValidationInfo","errors","invalidFields","undefined","console","log","attributeName","mapMethod","attributeValue","mapMethodAutoGenerated","isValid","push","getPerimeterValidationInfo","bypassValidation","formatIdentifierForApi","incidentId","formattedId","replace","toUpperCase","getCountiesForState","stateCode","length","getDefaultDateForField","previousChronologyItems","attibuteName","validPreviousDatesForChronology","item","getDependentAttributeMapping","dependentAttibuteName","dependentAttributeValue","incidentTypeKind","landownerKind","predominantFuelGroup","getFieldAliasOverrides","field","name","uniqueFireId","informUserName","fsJobCode","fireCode","finalFireReportApprovedDate","finalFireReportApprovedBy","landownerCategory","incidentTypeCategory","dispatchCenterId","pooDispatchCenterID","fireDepartmentId","jurisdictionalUnitParentUnit","predominantFuelModel","fireIgnitionDate","fireGrowthCessationDate","initialResponseDate","containmentDate","controlDate","finalStrategyAttainedDate","outDate","initialFireStrategy","isInitialFireStrategyMet","incidentSize","calculatedAcres","residencesDestroyed","isFireCauseInvestigated","fireCauseGeneral","fireCauseSpecific","inFuelTreatment","inNFPORS","isTrespass","report","polygonDateTime","createDate","pooFireIntensityLevel","primaryWeatherStationIdentifier","detectionMethod","alias","fireDiscoveryDate","hundredYearsAgo","setFullYear","previousDate","chronologyError","blockScopeDate","controlDateValue","isFalseAlarm","isNaN","discoveryAcres","localIncidentIdentifier","nonFederalFinancialCode","abcdMisc","startsWith","endsWith","includes","pooJurisdictionalUnit","integerFieldInfos","info","fieldInfo","getAcresFromIncident","Math","getNameForCategory","categoryCode","isPerimeterMultipart","rings","isPerimeterTriangleOrMissing","lat","long","i","containsSameLat","containsSameLong","isIncidentComplete","getMissingFieldsCount","isQuarantined","count","getRequiredFields","getSQLDateEndOfDay","date","setHours","toISOString","getSQLDate","getIncidentStatus","incidentStatus","conflict","prescribed","nonWildfire","isIncidentCertified","complete","incomplete","isIncidentFederal","federal_POOJurisdictionalAgency","indexOf","certifiedField","certifiedCodedValue","updatedCauseValidationsRequired","isAlaska","isIncidentAlaska","isFederal","requiredFields","requiredAlaska","requiredFederal","requiredAllAgencies","hasFireCause","fireCauseId","hasFireCauseGeneral","fireCauseGeneralId","hasFireCauseSpecific","fireCauseSpecificId","hasFireSpecificCauseDetail","fireCauseSpecificDetailID","hasActivityGroup","fireCauseActivityGroupID","ageCategoryRequired","prohibitedRequired","remarksRequired","fireCauseAgeCategoryID","isCauseProhibited","fireCauseComments","defaults","apiUrl","portalUrl","folder","Landowners","LandownerCategoryID","Name","Code","LandownerKind","Api","props","Object","assign","request","basename","process","originLayerUrl","relationshipLayerUrl","jurisdictionalFeatureLayerUrl","perimetersLayerUrl","finalPerimetersLayerUrl","resourceLayerUrl","capabilityRequestLayerUrl","perimeterDeleteLayerUrl","acresByJurisdictionUrl","setOriginLayerToken","originApiUrl","setJurisdictionalFeatureLayerToken","setPerimetersLayerToken","setRelationshipLayerToken","setAcresByJurisdictionToken","setFinalPerimetersLayerToken","setPerimeterDeleteLayerToken","setOriginApiToken","username","location","protocol","host","makeRequest","setPortalUrl","userName","useWVLogin","portalToUse","getPortalUrl","f","getToken","file","indicesOutsideBuffer","getUsername","uploadFile","getOriginApiUrl","loadModules","GeometryEngine","perimeterPolygon","Polygon","getJurisdictionalFeatureLayerUrl","outFields","returnGeometry","spatialRel","geometryType","outSR","inSR","results","features","distinctLandCats","Set","x","LandownerCategory","landCatResults","result","landCatIntersections","totalForLandCat","p","intersects","intersection","intersect","geodesicArea","unionedForLandCat","union","Acres","toFixed","Category","find","landowner","upload","featureCollection","layers","featureSet","geom","feature","resultOffset","getPerimetersLayerUrl","where","returnDistinctValues","getPerimetersLayerToken","exceededTransferLimit","newResults","concat","getIrwinIdsForPerimeterForGeometry","finalResults","whereClause","queryUrl","stringGeom","returnCountOnly","filterGeometry","GetForIDsForQuery","forIds","FireOccurenceRecordID","maxRecords","sortClause","requiredOutFields","orderByFields","getIncidentsForQuery","slice","getFinalPerimetersLayerUrl","getFinalPerimetersLayerToken","getIrwinIdsForCertifiedPerimetersForGeometry","featureStatus","featureAccess","clauses","join","getIdsForPerimeterFilters","fulfillmentStatus","getCapabilityRequestLayerUrl","getOriginApiToken","perimeterSource","consts","nifs","fireHistoryFeatureService","getFireHistoryFeatureLayerUrl","finalFireFeatureService","getFireHistoryFeatureLayerToken","perimeterFeature","incidentAttributes","WebMercatorUtils","deriveCalculatedAcres","perimeterGeomWGS84","webMercatorToGeographic","polygonCreateDate","dateArray","getTime","getPolygonCreateDate","jsonFeature","userToken","getOriginLayerToken","forID","forId","calcedAcres","irwinID","objectID","Perimeter","geometryEngine","Point","SpatialReference","xy","lngLatToXY","incidentGeometry","y","spatialReference","bufferedInput","geodesicBuffer","toJSON","StateAbbreviation","unitIdString","originVal","getJurisdictionalFeatureLayerToken","layerId","geographicExtent","tolerance","xmin","ymin","xmax","ymax","imageDisplay","occurenceRecordID","FireOccurenceRecord","perimeterAcreage","AcreagePackage","knownUnitIds","KnownUnitIDs","irwinRelationshipRecords","IrwinRelationshipRecords","irwinId","stateAbbr","identifer","searchValue","identifierName","startYear","endYear","makeCsvRequest","clientId","client_id","response_type","expiration","redirect_uri","href","definitionExpression","fodrIds","responseType","geometryChanged","geometryJsonUtils","geomWGS84","fromJSON","FORID","featureArray","isFireCodeRequested","IsFireCodeRequested","FireCode","INFORMUserName","acresByOwnership","unchangedAttributes","AcresByOwnership","protectingUnitID","forIdsToSplice","selectedForID","spliceModel","attributesFromLosingFODR","webMercatorUtils","geographicPoint","latitude","longitude","mercatorPoint","geographicToWebMercator","splicedMercatorGeometry","ufi","fireOccurenceRecordId","rxFireOccurenceId","relationshipId","comparisonForID","mercatorX","mercatorY","filtername","filterDescription","spatialFilter","NifcUsername","Filtername","FilterDescription","addSpatialFilter","filterId","nifcUsername","expires","itemId","filterName","args","PrintTask","PrintParameters","PrintTemplate","printTask","printTemplate","printConfig","template","printParameters","view","execute","Splash","className","size","thickness","color","canvasColor","connect","appConfig","style","backgroundSize","width","display","flexDirection","modal","open","contentStyle","textAlign","src","logo","alt","label","primary","fullWidth","onClick","fontSize","fontWeight","appVersion","minorReleaseVersion","getMapExtent","publish","setMapViewTarget","setViewPopupEnabled","setOriginLayerVisible","refreshOriginLayer","getOriginLayerDefinitionExpression","setCustomFilterDefinitionExpression","expression","setOriginLayerDefinitionExpression","isOriginWithinPerimeter","setSpatialFilterPolygon","polygon","setOriginSelectionGraphics","clearOriginSelectionGraphics","setVisiblePerimeters","setPerimeterGraphic","clearVisiblePerimeters","setPerimeterSymbology","setModifiedPerimeter","clearModifiedPerimeter","enableDrawMode","disableDrawMode","completeDrawUpdate","NewIncidentMap","updatePoint","manualLat","manualLong","userLatitude","userLongitude","coordinateFormatter","Graphic","SimpleMarkerSymbol","load","newPoint","fromLatitudeLongitude","setState","onCoordinateUpdate","originGraphicsLayer","removeAll","graphics","add","symbol","symbols","newIncidentSymbol","center","startup","css","ArcGISMap","MapView","BasemapToggle","GraphicsLayer","Search","basemap","container","mapRef","current","zoom","basemapToggle","ui","on","event","mapPoint","search","position","mapIsLoaded","React","createRef","nextProps","nextState","ref","Component","styles","errorDialogContent","errorDialogTitle","NewIncidentDialog","lookupLocalId","getLastLII","unitIdResponse","localIncidentIdentifierValue","verifyUnitId","isQueryingUnitId","showUnitIdWarning","getUnitId","unitIdIsValid","units","NAME","updateLatLong","latValue","longValue","setLatLongFromUserInput","userLat","userLong","latLongIsValid","canAddIncident","errorText","checkAttributes","handleLLFormatChange","newFormat","newLocationString","toLatitudeLongitude","substring","ddFormat","Number","handleSnackRequestClose","showAddFailure","onAddNewIncident","newIncidentFeature","wkid","latestWkid","year","month","getMonth","getDate","hour","getHours","minute","getMinutes","second","getSeconds","valueOf","addIncident","onNewIncidentClose","history","addFailureMessage","description","updateCoords","getStateFromOrigin","validateLatLong","newValue","canAdd","handleBlur","incidentNameValue","getUnitIdAlert","Alert","severity","onUpdateProp","changedLatLong","updatedLatValue","updatedLongValue","fireSize","locaIndentifierRef","incidentNameRef","isFSAssisted","invalidDiscoveryDate","copy","validationInfo","unitIdAlert","title","titleStyle","fullScreen","autoScrollBodyContent","autoComplete","noValidate","Typography","variant","gutterBottom","Table","TableBody","TableRow","TableCell","TextField","onChange","target","margin","required","Select","native","onBlur","helperText","Button","disabled","onFocus","FormControl","FormLabel","RadioGroup","row","aria-labelledby","FormControlLabel","control","Radio","utils","DateFnsUtils","initialFocusedDate","defaultDate","locale","format","TimePicker","ampm","defaultValue","inputProps","textTransform","DialogActions","Tooltip","Snackbar","message","autoHideDuration","onClose","bindActionCreators","incidentOperations","NonFederalFires","formatCsvData","years","reportYears","unshift","dataRows","dataResults","dataRow","newRow","Key","displayValue","Value","summaryRow","yearTotal","dataObj","RecordCount","downloadCsv","workbook","XLSX","book_new","csvData","reportSheet","aoa_to_sheet","book_append_sheet","writeFile","buildTable","toUTCString","TableHead","getTableRows","getSummaryRow","yearArray","index","background","getDates","arr","dt","queryData","datesValid","isQuerying","queryNonFederalFireForYear","parse","queryingComplete","dataLoaded","currentYear","optionYears","from","val","tableHeader","Paper","NonFederalRXFires","queryNonFederalRXFiresForYear","MissingAcreageMap","goTo","FeatureLayer","perimeterConfig","renderer","selectedPerimeterSymbol","fireHistoryConfig","portalItem","fireHistoryLayer","jsInit","env","opacity","finalFireConfig","finalFireFeatureLayer","perimeterFeatureLayer","perimeterLayer","listMode","popupTemplate","content","fieldName","finalFireLayer","configOperations","MissingAcreages","IncidentName","IncidentSize","CalculatedAcres","CreatedBySystem","handleOnRowClick","columns","headerName","renderCell","Link","to","rows","loadingIcon","minHeight","minWidth","isRowSelectable","pageSize","disableRowSelectionOnClick","autoPageSize","onRowClick","rowData","PerimeterAttributes","queryForPerimeters","filteredIrwinIds","IRWINID","filteredResult","matchingPerimeterCriteria","incidentList","incidentsMatchingPerimeterCriteria","moment","incidentName","Grid","xs","justify","checkboxSelection","GeneralReportingDialog","setMissingPerimetersActive","activeReport","missingPerimeterQuerying","getMissingPerimeterIncidents","missingPerimetersDataLoaded","missingPerimetersData","close","nonFederalFiresChild","nonFederalRXFiresChild","missingPerimetersChild","perimeterAttributesChild","maxWidth","AppBar","Toolbar","IconButton","float","marginLeft","aria-label","ButtonGroup","orientation","filterOperations","incidentsOperations","DataDictionaryPanel","overflowy","IncidentEditDetails","updateSearchValue","userFilterField","getTitleForAttributeName","fieldObject","fieldsDefinition","getDisplayValue","parseInt","domain","codedValue","codedValues","code","err","getFilteredEditLog","editLogEntries","editLog","Attribute","OldValue","NewValue","getUserEditContent","editInfoPackage","EditEvents","editEvent","editID","EditID","filteredEditLog","EditEntries","entry","Accordion","AccordionSummary","expandIcon","aria-controls","UserName","EditDate","AccordionDetails","searchIdentifer","filterFields","showEditInfo","onUserAction","clearSearch","prevProps","newFilterFields","marginTop","onRequestClear","items","inputValue","AdminPanel","isSearching","canSearch","searchEnabled","searchIncident","searchAdminIncident","updateIdentifier","Stack","direction","Header","userMenuClick","preventDefault","userMenuOpen","anchorEl","currentTarget","openAdminPanel","adminPanelOpen","openDataDictionary","dataDictionaryOpen","closeChangeLog","changeLogOpen","closeKnownIssues","knownIssuesOpen","openChangeLog","openKnownIssues","loadReporting","showingReportingDialog","reportNewIncident","showingNewIncidentDialog","generalReportingClose","adminPanelClose","dataDictionaryClose","onCloseAddIrwinIdToPerimeter","newIncidentClose","handleAddNewIncident","userMenuClose","userAvatar","environmentLabel","trainingLink","auth","thumbnailUrl","marginRight","border","backgroundColor","fullName","labelPosition","labelStyle","paddingLeft","hoverColor","icon","anchorOrigin","horizontal","vertical","targetOrigin","onRequestClose","leftIcon","primaryText","Divider","component","mapOperations","authOperations","ReportHeader","selectedIncident","document","print","defaultProps","EditableAcreageTable","componentDidUpdate","prevState","perimeterWasRecalculated","perimeterWasRecalced","editWasCancelled","forceUpdate","resetAcreageRecalc","clonedCopy","fireOccurenceRecordID","e","warn","acreageRemoved","idx","updatedProp","AcreageRecords","onAcreageRemoved","addNewRow","UserProvidedAcreage","CanEditLandowner","AcreageRecordID","onAddNewRow","acreageLandownerCategoryUpdated","onUpdateAcreageProp","num","IsUserOverriden","recalculate","onRecalculate","align","reduce","pv","cv","parseFloat","CalculatedAcreage","toLocaleString","s","mode","shouldDisable","landownerValue","Feature","ReportInfoSection","getTable","fieldNames","skipField","tableRows","fieldAlias","fieldValue","dateFieldsWithTypeDouble","dateFormat","kindCode","getNameForKind","matchingCodedValue","getDomainForCauses","trueFalseZeroOnes","selectable","displayRowCheckbox","reportInfoFields","pointOfOrigin","sizeAndPerimeter","chronology","complexityManagement","siteDescriptors","outcomes","miscellaneous","generalFireInfo","getGeneralFireInfoTables","acreageTable","isRecalculatingAcres","getPerimeterTable","checkbox","marginBottom","textField","ReportMapSection","getCertTable","certFields","statusVal","certifierBlock","certifierInfo","email","showRecords","showRelatedRecords","getRelatedRecordsTable","relatedRecords","hasFireStatIncidents","FireStatIncidents","hasIrwinIncidents","IrwinIncidents","hasBulkUploadIncidents","BulkUploadIncidents","hasWFMIIncidents","WFMIIncidents","hasFODIncidents","FODIncidents","hasCertificationRecords","CertificationRecords","irwinRow","IrwinID","j","fireStatRow","FireID","k","bulkUploadRow","BulkUploadID","l","wfmiRow","FireId","m","fodRow","FOD_ID","n","certRow","CertificationRecordID","mapImage","floatingLabelText","floatingLabelFixed","IrwinIdTextField","closeSnackbar","showSnackbar","navigator","clipboard","writeText","RelatedIrwinRecord","getDateString","getYesNo","getStyle","record","IncidentID","matchingItems","AttributeDeltas","AttributeName","outlineColor","outlineStyle","getElement","attributeTitle","FodrValue","arrow","placement","verticalAlign","elevation","ABCDMisc","ADSPermissionState","ContainmentDateTime","ControlDateTime","CreatedOnDateTime","DispatchCenterID","EstimatedContainmentDate","Fatalities","FinalFireReportApprovedBy","FinalFireReportApprovedByTitle","FinalFireReportApprovedByUnit","FinalFireReportApprovedDate","FinalFireReportNarrative","FinalStrategyAttainedDateTime","FireCause","FireCauseGeneral","FireCauseSpecific","FireDepartmentID","FireDiscoveryDateTime","FireIgnitionDateTime","FireMgmtComplexity","FireOutDateTime","FSJobCode","FSOverrideCode","GACC","HasFatalities","HasInjuries","IncidentManagementOrganization","IncidentTypeCategory","IncidentTypeKind","IncidentStatus","InitialFireStrategy","InitialLatitude","InitialLongitude","InitialResponseDateTime","Injuries","InNFPORS","InFuelTreatment","IsFireCauseInvestigated","IsFSAssisted","IsQuarantined","IsTrespass","IsValid","LocalIncidentIdentifier","ModifiedBySystem","ModifiedOnDateTime","OtherStructuresDestroyed","OtherStructuresThreatened","POOCity","POOCounty","POODispatchCenterID","POOFips","POOJurisdictionalAgency","POOJurisdictionalUnit","POOLandownerCategory","POOLandownerKind","POOProtectingAgency","POOProtectingUnit","POOState","PredominantFuelGroup","PredominantFuelModel","ResidencesDestroyed","ResidencesThreatened","RelatedBulkUploadRecord","LocalIncidentID","FireDiscoveryDate","FireDiscoveryTime","FireReportingAgencyUnitIdentifier","State","Latitude","Longitude","StatisticalCauseCode","FinalFireAcreQuantity","FireContainmentDate","FireContainmentTime","StateFIPS","County","CountyFIPS","District","OwnershipCode","NumberInjuries","NumberFatalities","RelatedWFMIRecord","WFMIID","Organization","RegionState","ReportingUnit","CalendarYear","FiscalYear","FireNumber","FireName","FireTypeDisplay","ProtectionTypeDisplay","CompletionCode","IndexTime","IndexTimeSource","SizeClass","LastModified","Cause","Reimbursable","BurningIndex","AreaName","OwnerDisplay","MergedFire","ParentFire","OriginAccuracy","LocationMethod","CoordinateType","DatumType","LatitudeDD","LongitudeDD","LatitudeDMS","LongitudeDMS","LatitudeEntered","LongitudeEntered","LatitudeNAD83","LongitudeNAD83","UtmZone","UtmEasting","UtmNorthing","StartTime","DetectionDisplay","StartAcres","InitialAttackTime","InitialAttackAcres","ContainedTime","ContainedAcres","ControlTime","ControlAcres","OutDate","TopographyDisplay","AspectDisplay","SlopeDisplay","ElevationDisplay","Station","FbpsFuelModel","MsgcModelDisplay","MsgcSlope","MsgcGrassDisplay","MsgcClimateDisplay","SpecialArea","WildlandUrban","IntersectFuels","AddToNFPORS","TotalStructures","ResidenceStructures","OtherStructures","AuthorizedByName","AuthorizedByTitle","AuthorizedDate","EnteredByName","EnteredByTitle","EnteredDate","ProvidedByName","ProvidedByTitle","ProvidedDate","TrespassGeneralCauseDisplay","TrespassSpecificCauseDisplay","TrespassInvestigated","Statistics1OwnerDisplay","Statistics1Acres","Statistics2OwnerDisplay","Statistics2Acres","Statistics3OwnerDisplay","Statistics3Acres","Statistics4OwnerDisplay","Statistics4Acres","Statistics5OwnerDisplay","Statistics5Acres","Statistics6OwnerDisplay","Statistics6Acres","Statistics7OwnerDisplay","Statistics7Acres","colSpan","Remarks","RelatedFireStatRecord","FireStatID","DiscoveryCalendarYear","LocalFireNumber","ComplexName","UniqueFireID","Location","RegionForest","UnitID","ProtectionAgency","OwnershipOrigin","FireClassSize","LatitudeDecimalDegrees","LongitudeDecimalDegrees","IgnitionDate","DiscoveryDate","DetectionMethod","DiscoveredBy","StatisticalFireCauseDescription","GeneralFireCauseDescription","SpecificFireCauseDescription","ClassPeopleCauseDescription","IncidentJobCode","InitialStrategy","InLargeComplex","AcresBurnedinWUI","EscapedFire","IncidentJobCodeAfterEscape","EscapeDateTime","InitialActionDate","SuppressionStrategyAttainedDate","FireOutDate","FSAcresAutoTotal","NonFSAcresProtectedbyFSAutoTotal","NonFSAcresNotProtectedbyFSAutoTotal","TotalAcresBurnedAutoTotal","AcresBurnedinWUITotal","FireIntensityLevelDescription","ReportWeatherStation","CoverClassDescription","SlopePercentage","Aspect","OwnershipUnitID","ProtectionUnitID","Specific","Class","ElevationFeet","ResidencesDestroyedAutoTotal","OtherStructuresDestroyedAutoTotal","SubmittedBy","SubmittedDate","ApprovedBy","ApprovedDate","FuelType","RelatedFODRecord","FPA_ID","SOURCE_SYSTEM_TYPE","SOURCE_SYSTEM","NWCG_REPORTING_AGENCY","NWCG_REPORTING_UNIT_ID","NWCG_REPORTING_UNIT_NAME","SOURCE_REPORTING_UNIT","SOURCE_REPORTING_UNIT_NAME","LOCAL_FIRE_REPORT_ID","LOCAL_INCIDENT_ID","FIRE_CODE","FIRE_NAME","ICS_209_PLUS_INCIDENT_JOIN_ID","ICS_209_PLUS_COMPLEX_JOIN_ID","MTBS_ID","MTBS_FIRE_NAME","COMPLEX_NAME","FIRE_YEAR","DISCOVERY_DATE","DISCOVERY_DOY","DISCOVERY_TIME","NWCG_CAUSE_CLASSIFICATION","NWCG_GENERAL_CAUSE","NWCG_CAUSE_AGE_CATEGORY","CONT_DATE","CONT_DOY","CONT_TIME","FIRE_SIZE","FIRE_SIZE_CLASS","LATITUDE","LONGITUDE","OWNER_DESCR","STATE","COUNTY","FIPS_CODE","RelatedCertificationRecord","RelatedRecordsDialog","handleBack","previousVal","currentIndex","handleNext","nextVal","getDisplayContent","currentRecord","getIrwinPanel","irwinDeltas","getCertificationPanel","getWFMIPanel","getBulkUploadPanel","getFireStatPanel","getFODPanel","dataRecord","attributeDeltas","hasData","incidentCount","numFireStatIncidents","totalIncidentCount","recordsArray","IrwinDeltas","panelContent","stepperContent","MobileStepper","steps","activeStep","nextButton","backButton","Report","getRelatedRecordIdentifiersFromIncident","getRelatedRecords","getCertifierFromIncident","lastUpdateUser","getUserGroups","showRelatedRecordsDialog","showingRelatedRecordsDialog","hideRelatedRecords","routeIncidentId","match","timeDateFormat","bootstrapJSAPI","jsapiUrl","use3D","esriLoader","dojoConfig","supportsWebGL","async","packages","success","createView","node","basemapId","viewOptions","Basemap","Map","SceneView","domConstruct","viewConfig","when","empty","initView","BasemapGallery","Expand","LocalBasemapsSource","remove","basemapGallery","getElementById","basemaps","fromId","bgExpand","createSearch","searchOptions","createElement","includeDefaultSources","createLayerList","portalItemIds","LayerList","layerList","layerListExpand","expandIconClass","expandTooltip","domNode","canvas","gl","getContext","WebGLRenderingContext","LayerManager","getSymbolForFeature","renderValue","certifiedSymbol","completeSymbol","defaultIncidentSymbol","conflictIncidentSymbol","nonUniqueSymbol","prescribedFireNonUniqueSymbol","prescribedFireSymbol","otherFireNonUniqueSymbol","otherFireSymbol","otherFireCompleteSymbol","getSizeForSymbol","getRenderValueForFeature","isComplete","StatusID","isCertified","nonWildFireIncomplete","notUnique","MinUniqueness","handleGetOriginDefinitionExpression","done","failed","originFeatureLayer","handleSetCustomFilterDefinitionExpression","setSearchWidgetDefinition","getIncidentCountForQuery","featureCount","maxCountForIncidents","fodrGraphicsLayer","currentFeature","g","originPopupTemplate","total","handleGetFORIDsForQuery","spatialFilterId","geometryToUse","spatialFilterPolygon","handleSetOriginDefinitionExpression","shouldFilterOnPerimeters","terms","fireCauseWhere","utcOffsetWhere","dataSourcesWhere","multiRootWhere","isMultiRoot","relationshipTerms","relationshipWhere","strategyWhere","categoryWhere","incidentTypeKindWhere","landownerCategoryWhere","acresMin","dailyMax","calculatedMax","acresMax","maxDiscoveryDateString","maxDiscoveryDate","minDiscoveryDateString","minDiscoveryDate","maxOutDateString","maxOutDate","minOutDateString","minOutDate","maxModifiedString","maxModifiedDate","modifiedDate","minModifiedDateString","minModifiedDate","gaccWhere","stateWhere","structuresWhere","injuriesWhere","uniquenessIndexWhere","acreageField","getAcresFieldName","perimeterAcreageWhere","fatalitiesWhere","otherStructuresDestroyedWhere","residencesThreatenedWhere","otherStructuresThreatenedWhere","modifiedBySystemWhere","createdBySystemWhere","isNonFederal","federalHasRequired","nonFederalHasRequired","federalComplete","federalIncomplete","nonFederalComplete","nonFederalIncomplete","certifiedWhere","completeWhere","incompleteWhere","isQuarantinedOnlyWhere","isNotQuarantinedOnlyWhere","foundCert","certifiedSubterms","allStatusTypes","certifiedSubClause","reportWhere","incidentJurisdictionalAgencyWhere","dispatchCenterIDWhere","jurisdictionalUnitWhere","pooProtectingUnitWhere","pooProtectingAgencyWhere","overrideUniqueIdWhere","spatialGeometry","validTerms","originLayer","defaultWhere","poly","handleSetSpatialFilterPolygon","queryForFeatures","getSpatialFilterById","spatialFilterGraphicsLayer","extents","normalize","queryForMultiExtentFeatures","searchWidget","sources","extent1","extent2","totalFeatureCount","totalFeatures","featureCount1","features1","featureCount2","features2","handleGetOriginFields","Field","fields","handleOriginWithinPerimeter","wasContained","contains","handleOriginUpdateEnd","cb","originLayerView","handle","watch","isUpdating","updating","query","createQuery","queryFeatures","filterResultsForPerimeter","perimeterFilterIrwinIds","inViewGraphics","graphic","visibleGraphics","handleGetOriginFeature","Query","QueryTask","outSpatialReference","originApiItem","handleGetOriginFeatures","spatialRelationship","featureToMapFrom","handleGetFullOriginFeaturesFromApi","ids","a","handleSetOriginSelectionGraphic","point","originSelectionGraphicsLayer","originSelectionSymbol","handleSetOriginSelectionGraphics","clearExisting","useDisabledSymbol","originDisabledSymbol","handleClearOriginSelectionGraphics","selectedUniqueIds","removeMany","handleSetOriginVisible","handleClearPerimeterGraphics","perimeterGraphicsLayer","handleSetPerimeterGraphic","handleSetVisiblePerimeters","getCurrentPerimeterFeatures","useFinalService","targetPerimeterLayer","finalPerimeterFeatureLayer","oidField","objectIdField","oids","oidWhere","returnFeatures","handleClearVisiblePerimeters","handleSetPerimetersSymbol","SimpleRenderer","refresh","idStore","maxDate","idWhere","uncertifiedPerimeterFields","perimeterTypes","perimeterTypeFeatureCategories","featureCategoryWhereWhere","featureCategory","perimetersToken","queryTask","dateField","mostCurrentDateField","irwinKey","charAt","finalPerimeterSource","nifsPerimeterSource","getPerimeterFeaturesForIrwinIds","irwinIds","idClauses","handleSetModifiedPerimeter","perimeterModifiedGraphicsLayer","handleAddDebugGraphic","isConflict","debugGraphicsLayer","debugIncidentGraphic","debugBlueIncidentGraphic","handleSetModifiedPerimeterNoClear","handleClearModifiedPerimeter","setSpatialFilterGraphic","geometryJSON","isGeographic","maskGeometry","difference","universeWebMercator","maskSymbol","handleOriginRefresh","getOriginPopupContent","attrs","getPerimeterPopup","capabilityRequestOption","initLayers","viirsLayer","Legend","ScaleBar","incidentsLegend","layerInfos","layer","scaleBar","unit","legendExpand","layout","createLegend","viirsFeatureLayer","setOriginApiUrl","initEventHandlers","initSearch","jurisdictionalFeatureLayer","setJurisdictionalFeatureLayerUrl","Locator","searchFields","exactMatch","maxSuggestions","suggestionsEnabled","suggestionTemplate","minSuggestCharacters","withinViewEnabled","resultGraphicEnabled","locator","countryCode","singleLineFieldName","localSearchOptions","minScale","distance","maxResults","activeSourceIndex","topic","subscribe","debounce","Layer","TileLayer","watchUtils","heatmapRenderer","colorStops","ratio","maxPixelIntensity","minPixelIntensity","alignment","overwriteActions","expressionInfos","pointRenderer","valueExpression","uniqueValueInfos","otherFireSymbolComplete","visualVariables","stops","originConfig","portalItemId","recordCount","jurisdictionalRenderer","jurisdictionalLayer","TribalSymbol","BLMSymbol","BORSymbol","MRCESymbol","NPSSymbol","OtherFedSymbol","StateSymbol","CityCountySymbol","PrivateSymbol","ForestServiceSymbol","USFWSSymbol","jurisdictionalFeatureConfig","labelsVisible","legendEnabled","layerTitles","jurisdictionalUnitsFeatureLayer","gaccFeatureLayer","popupEnabled","gaccSymbol","classBreakInfos","minValue","maxValue","stateFeatureLayer","labelingInfo","font","family","weight","labelPlacement","labelExpressionInfo","countyFeatureLayer","fsTopoLayer","dispatchCenterFeatureLayer","dispatchCenterSymbol","jurisdictionalTileLayer","selectionSymbol","disabledSymbol","parent","allLayers","latLonUniverse","whenLayerView","layerview","setOriginLayerUrl","supportLayers","portalJson","fromPortalItem","layerView","DrawToolbar","onGraphicUpdate","shouldUpdateGraphic","uploadingPerimeter","uploadLoadedPerimeterGeometry","drawingNew","SketchViewModel","graphicsLayer","polyGraphicLayer","sketchViewModel","updateOnGraphicClick","defaultCreateOptions","defaultUpdateOptions","toggleToolOnClick","pauseDrawMode","resumeDrawMode","setGeometryUpdateCallback","getPolygonGeometry","setPolygonUploadGeometry","completeUpdate","drawAction","drawTool","enableSketchOnDrawComplete","enabled","create","drawCompleteHandler","mercatorGeometry","polyGraphic","newDevelopment","outline","updateHandler","update","tool","cancel","setTimeout","isUploading","uploadedPerim","callback","simpleDrawEngine","activeDrawType","inputHandler","finish","mapState","init","searchWidgetOptions","layerManager","setupEventHandlers","finishedLoading","onMapLoadError","onMapLoaded","drawToolbar","activeWidget","FeatureForm","DistanceMeasurement2D","AreaMeasurement2D","perimetersLayer","fireHistoryFeatureLayer","closeNifsPerimeterButton","closeFireHistoryPerimeterButton","nifsFeatureForm","fieldConfig","editable","fireHistoryFeatureForm","setActiveWidget","viewModel","start","setActiveButton","destroy","selectedButton","focus","elements","getElementsByClassName","classList","addEventListener","onclick","submit","updated","getValues","updateIrwinIDForNifs","updateIrwinIDForFireHistory","popup","selectedFeature","move","spinnerEnabled","evt","editNifs","editFireHistory","popupIncident","onIncidentSelection","whenTrue","updateExtent","newExtent","expand","tilt","takeScreenshot","printUrl","printTaskUrl","scalePreserved","exportOptions","dpi","layoutOptions","titleText","userOperations","operators","string","operator","suffix","prefix","omitValue","limitedString","number","fullDay","relativeDate","epoch","getDefaultFilterValue","getValidOperators","fieldType","operatorDefs","getGenericFieldType","generateId","uuidv4","FieldChooser","handleOnChange","getFieldType","esriFieldType","shortFieldType","substr","toLowerCase","getOptions","keys","subtitle","whiteSpace","menuStyle","maxHeight","filterable","selectedValue","selectedField","placeholder","select","flex","OperatorChooser","selectedOperator","ValueInput","onFocusChange","focused","datePickerFocused","handleOnDateChange","getMomentDate","isOutsideRange","numberOfMonths","anchorDirection","onDateChange","UniqueValueChooser","ValueTypeChooser","selectedValueType","DomainValueChooser","RelativeDateChooser","handleNumberValueChange","timeSizeValue","handleSelectOptionChange","timeSpanValue","valueInput","selectInput","formControlStyles","justifyContent","Expression","updateExpression","updates","removeExpression","handleFieldChanged","setOptionsFromField","handleOperatorChanged","handleValueChanged","handleValueTypeChanged","valueType","getValueTypeChooser","disableUnique","getValueElement","expressionDef","overrideStringOperators","Form","iconButton","StyledSetHeaderRow","styled","div","StyledAddSetButton","unitCalc","baseline","lightestGray","lighterGray","expressions","removeSet","updateSetOperator","mustMatchAll","handleRemoveExpression","expressionId","handleUpdateExpression","enterDelay","extraSmall","clear","canRemoveSet","addExpression","fill","CalciteTheme","gray","getDayStart","startDate","returnString","getDayEnd","endDate","getEpochDayStart","formatDate","startOf","toDate","getEpochDayEnd","endOf","formatter","dateTimeFormat","buildExpression","d","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","duration","asDays","convertTimeSpanToSQLDays","epochD","epochDate","buildFilter","sets","filterOperator","set","setOperator","buildSet","NarrativeFilterBuilder","filterState","updateSets","handleAddSet","expressionTemplate","handleRemoveSet","setId","handleUpdateSetOperator","handleAddExpression","currentExpression","handleUpdateFilterOperator","getSets","onFieldChange","onOperatorChange","onValueChange","isEqual","white","NarrativeQueryDialog","handleFilterChanged","filterForEdit","stopPropagation","onSaveNarrativeFilter","FilterItemContainer","handleChange","expanded","trashIcon","children","filterItemStyle","onClear","icons","List","rightIcon","transitionName","transitionEnterTimeout","transitionLeaveTimeout","MultiSelect","checked","checkboxes","itemStyle","selectedCodes","onCheck","iconStyle","uncheckedIcon","NumericRange","maxChanged","changeMax","isEmpty","maxValid","evaluationMin","internalMin","minValid","Boolean","newState","internalMax","onRangeChange","minChanged","changeMin","evaluationMax","textFileStyle","inputStyle","floatingLabelStyle","floatingLabelFocusStyle","minTB","minLabel","maxTB","maxLabel","DateRange","ignore","timestamp","handleCommonDateChange","today","todayEnd","todayStart","commonDate","yesterday","yesterdayEnd","yesterdayStart","setDate","sevenDaysAgo","todaEnd","firstOfYear","firstOfPriorYear","endOfPriorYear","tomorrow","minDate","firstDayOfWeek","textFieldStyle","DropDownSelect","menuItems","useArray","multiple","multiSelect","TextFilter","JurisdictionalTextFilter","iconToShow","pure","displayName","muiName","iconButtonStyles","buttonStyle","padding","activeStyle","activeIconStyle","LocationFilter","inputFileChanged","FileReader","files","generateFeatureCollection","refs","input_reader","targetSR","maxRecordCount","enforceInputFileSizeLimit","enforceOutputJsonSizeLimit","addFilterFromShapefile","setGeometryFromShapefile","OBJECTID","showShapeParseError","polygonToolSelected","cancelSelectedTool","onToolSelected","uploadShapefile","click","removeGeometryToolSelected","activeTool","onGeometryCleared","onToolCancel","polygonSelectedStyle","polygonIconSelectedStyle","removeGeometry","shapefileFilter","tooltip","tooltipPosition","accept","class","FiltersContainer","onNarrativeQueryDialogClose","narrativeQueryDialogOpen","onProtectingUnitChange","protectingUnitValid","protectingUnitIdIsValid","onJurisdictionalUnitChange","jurisdictionalUnitValid","handlePopoverClose","popoverOpen","openPopover","acreage","showNarrativePopup","updateDataSourcesFilter","handleMultiRootCheckboxChange","updateInitialFireStrategyFilter","updateIrwinRelationshipsFilter","updateLandownerCategoryFilter","updateIncidentTypeCategoryFilter","updateFireCauseFilter","updateAcresRangeFilter","updateDiscoveryDateFilter","discoveryDateCommon","updateOutDateFilter","outDateCommon","updateModifiedDateFilter","modifiedDateCommon","clearFireDamageFilters","clearModifiedBySystemFilter","clearCapabilityRequestsFilter","clearCreatedBySystemFilter","clearCertificationFilter","clearGaccFilter","clearStateFilter","handleUseExtentChange","drawToolSelected","toolName","drawToolCancelDraw","clearLocationFilter","useExtentToggle","fireCauseInfo","fireCauseCodedValues","fireCauseMultiSelect","acreageNumericRange","fireDiscoveryDateRange","fireOutDateRange","lastModifiedDateRange","modifiedSystem","utcFilter","perimeterAcreageFilter","fireDamages","gaccFilter","stateFilter","certificationLevels","sourceFilter","initialFireStrategyFilter","relationshipsFilter","incidentTypeCategoryFilter","finalReportFilter","jurisdictionalFilter","uniquenessIndexFilter","dispatchCenterFilter","protectingIconToShow","protectingUnitFilter","landownerCategoryFields","filterHeaderContent","landownerCategoryFilter","currentDisplayed","queryTotal","labelText","filterVisible","sx","badgeIncidentCount","cursor","badgeStyle","top","right","badgeContent","toggleFilterCollapse","CertifyDialog","canCertifyIncident","DialogContent","onCertifyIncidentCancel","onCertifyIncident","UploadResults","formatIncidentData","HeaderRow","firstRow","rowHeading","SkippedIncidents","SkippedIncidentDetails","writeCsv","incidentData","incidentSheet","isVisible","NumberOfParsedRecords","NumberOfUploadedIncidents","NumberOfDeletedRecords","SkippedRecordCount","Rejected","ErrorText","filterIncidentsByState","selectedState","csvRecords","getStateForUpload","stateGeometry","incidentsOutsideStateBuffer","expandedStateGeometry","rowCount","latPosition","longPosition","recordPoint","within","formControl","StateUploadDialog","handleUploadCSV","clearStatus","showCurrentStatus","currentStatusMessage","resultObject","showResults","setCurrentStatus","canUploadIncidents","Papa","delimiter","newline","quoteChar","escapeChar","header","transformHeader","dynamicTyping","preview","encoding","worker","comments","step","download","skipEmptyLines","chunk","fastMode","beforeFirstChunk","withCredentials","transform","indexesOutsideStateBuffer","postStateUpload","getMissingHeadersMessage","validationStatus","MissingHeaders","getHeaderRowForIncidents","headerRow","property","handleIsRxChange","handleStateChange","selectedStateName","selectedOptions","progressNode","labelNode","FormGroup","onCancelStateUpload","checkboxStyle","IncidentListItem","statusColor","incidentIsCertified","statusId","incidentIsComplete","isBelowUniquenessThreshold","minUniqueness","belowUniquenessThreshold","onMouseEnter","onMouseLeave","onMouseExit","onClicked","isChecked","onChecked","checkedIcon","ShareDialog","copyToClipboard","urlTextField","execCommand","shareActions","collapseBtnIconStyle","snackBtnIconStyle","IncidentList","handleWarningClose","showDownloadWarning","bulkCertifyIncidents","showCertifyAgreement","showBulkUploadDialog","updateListHeight","computedListHeight","clientHeight","incidentClicked","openInQuarantine","onIncidentSelected","incidentChecked","isSelected","handleOnMouseOverIncident","handleOnMouseOutIncident","sortChange","onSortChange","sortDescChange","onToggleSortDesc","handleDownloadCSV","isDownloading","forids","downloadIncidentData","now","blob","Blob","queryBlob","FileSaver","saveAs","handleSummariesReporting","pathname","onBulkCertifyAgreed","featuresToCertify","saveOccurenceRecords","every","getIsCertifyDisabled","showShareDialog","hideShareDialog","sortIncidents","incidentsChanged","descChanged","fieldChanged","sortIncidentWereNull","sort","b","aField","bField","aUnqField","bUnqField","aDefField","trim","bDefField","sortedIncidents","incidentListResizer","clearSelectionPanel","certifyDisabled","selectedCount","secondary","downloadButton","certifyButton","toggleIncidentListCollapse","incidentListVisible","autoWidth","shareURL","alignContent","listItems","maxItemsToRender","heightOfItem","onBulkUploadIncidents","Fragment","FilterPreviewer","ArcgisFilter","CustomFiltersDialog","saveFilter","filterForEditId","filterTitle","updateCustomFilter","activeDefinitionExpression","addCustomFilter","isEditingFilter","handleOnNameChange","alignItems","FilterContent","CustomFiltersList","launchCustomFilters","showingCustomFilterDialog","customFiltersClose","editFilter","CustomFilterID","deleteFilter","deleteCustomFilter","duplicateFilter","clonedItem","Title","filterListItemClicked","filterContent","filterIsLoading","sortedCustomFilters","showHighlighted","paddingTop","paddingRight","a11yProps","TabPanel","other","role","hidden","Box","Main","handleTabChange","tabValue","incidentSelected","getShareUrl","baseURL","searchParams","requeryFeatureLayerOnSort","toggleSortDesc","square","Tabs","Tab","CustomFilterList","InvalidateIncidentDialog","onRequestInvalidate","RequiredFieldStatus","chipClicked","lineHeight","missingFields","styles2","appBarSpacer","mixins","toolbar","IncidentResourcesPanel","foundResources","incidentResources","edge","scope","parentIncident","childIncidents","SpliceDialog","setSpliceRecord","spliceRecord","savedSpliceRecord","canSaveSplice","canSave","DifferentFields","getDataStyle","primarySet","getHeaderStyle","isSet","isSetAndIsPrimary","primaryFORID","showChip","makePrimary","selectedSpliceRecord","PrimaryFOR","SecondaryFOR","getLabelStyle","onSpliceChange","isFromLosingFodr","getFireCauseDisplayValue","fireCauseConfig","FireCauses","FireCauseID","FireCauseName","GeneralFireCauses","CauseGeneralID","CauseGeneral","SpecificFireCauses","CauseSpecificID","CauseSpecific","CauseActivityGroups","ActivityGroupID","ActivityGroup","AgeCategories","AgeCategoryID","AgeCategory","SpecificDetailFireCauses","SpecificDetailID","SpecificDetail","generateTableRows","fireCauseIdFields","isDoubleDate","currFieldInfo","isNonDoubleDate","primaryFieldVal","secondaryFieldVal","primaryRadioChecked","secondaryRadioChecked","primaryValue","secondaryValue","primaryDisplayValue","secondaryDisplayValue","spliceFields","onCloseSpliceDialog","onSpliceRecords","UniquenessPopover","viewIncident","spliceIncident","itemIdToMerge","getSpliceModel","spliceMenuOpen","SavedSplicedRecord","closeSpliceDialog","handleOnSpliceRecords","saveSpliceModel","spliceComplete","sortedRecords","UniquenessRecords","UniquenessScore","showRow","ComparisonFORID","labelToShow","ComparisonIncidentName","userIsReadOnly","handleClose","DespliceDialog","despliceRecordConfirmed","PrescibedEscapeDialog","wfUFI","onAssociateWF","createPrescibedEscape","onCloseEscapeDialog","IncidentDetailsHeader","handleUniquenessClose","setAnchorEl","generatingUniquenessScore","uniquenessResults","uniquenessComplete","handleSpliceComplete","onSpliceComplete","anchor","uniquenessAnchorEl","closeResourcesPanel","resourceReporting","recenterOnIncident","nad83Geometry","projection","setActionsDropdownOpen","showUniquenessScorePanel","closeUniquenessScorePanel","intersectingIncidents","handleResourceReport","actionButtonOpen","handleToggle","shareIncident","modDate","informLastModifiedDate","lastUser","subject","mailto","showInvalidateDialog","showingInvalidateDialog","showDespliceDialog","showingDespliceDialog","showPrescribedEscapeDialog","showingPrescribedEscapeDialog","despliceRecord","hideDespliceDialog","hidePrescribedEscapeDialog","hideInvalidateDialog","handleInvalidateIncident","invalidateIncident","generateReport","reportLoading","uniquenessMilesBuffer","uniquenessDayRange","queryIntersectingIncidents","dropdownElement","setDropdownInputRef","element","missingFieldsButton","missingFieldsCount","setPanelCollapseFlag","splitButton","aria-owns","aria-haspopup","Popper","transition","disablePortal","TransitionProps","Grow","transformOrigin","ClickAwayListener","onClickAway","MenuList","canInvalidate","hasResourceSummary","editWarning","isSaveActive","originValidation","disabledReason","isReadOnlyUser","editIsDisabled","onEdit","onSaveChanges","onCancelEdit","uniquenessPopover","milesBuffer","dayRange","resourcesPanel","onWasDespliced","reportOperations","RelationshipDialog","displayPackage","RelationshipType","IsActive","CreatedOn","ModifiedOn","ExpiredOn","IsParent","IsChild","onCloseRelationshipDialog","InfoBadge","labelColor","decertifyBtn","certifiedLabel","DetailsDashboardPanel","displayRelationship","occurenceId","getIrwinRelationshipPackage","showingRelationshipsDialog","relationshipDisplayPackage","certLabel","certAction","hasAcreageRows","infoBadges","relationship","isChild","ChildFireOccurenceRecordID","hasLinks","ParentFireOccurenceRecordID","IrwinRelationshipTypeID","relLabel","IrwinRelationshipID","onDecertifyIncident","disableCertify","isPerimeterTriangle","incidentAcres","isFireCodeRequested_RequestedCode","modifiedLabel","fireNameVal","fireIdVal","incidentSizeVal","discoveryDateVal","locations","city","stateValue","matchingInfos","hasIrwinModifiedDate","hasInformModifiedDate","irwinModifiedOnly","displayDate","rowSpan","NarrativeDialog","multiline","UnitValidator","onValidated","AGENCY","alertIsOpen","Collapse","in","alert","DetailRow","getFieldValues","fieldOptions","isDependent","dependentAttribute","filterValues","option","onUnitValidated","agency","onAgencyValidated","dropdownFieldIsNullable","nullableDropdownFields","setNullValue","isInvalidLocally","narrativeDialogOpen","onNarrativeDialogClose","narrativeValue","calculatedAcresValue","hasTooltip","tooltipContent","unitIdFields","matchValue","matchedEntry","UnprefixedUnitID","isInError","isRelatedIrwinID","isLatLong","fieldVal","latLongNum","domainVal","relatedIrwinIds","fieldNode","matchingCodedValues","isStatic","shouldOverrideIncidentSizeToZero","canPerformADSWrite","isAcreage","acreNode","dateClearNode","canWrite","clearableDateFields","estimatedContainmentDate","isClearableDateField","RadioButton","defaultSelected","closeIcon","narrativeIcon","multiLine","rowsMax","unitValidatorBlock","showUnitValidator","wordBreak","isRequired","derivableLink","isDerivable","isDeriving","onDeriveValue","highlightFieldClass","highlightRequiredFields","DetailsIncidentPanel","onResetAcreageRecalc","updateRequiredFields","updatedRequiredFields","updateRequiredNullFields","primaryRequiredNullFields","primaryFields","secondaryRequiredNullFields","secondaryFields","requiredNullFields","totalRequiredNullFields","getDependentAttribute","setDerivingFor","currentDerivingFields","derivingFields","stopDerivingFor","deriveValue","deriveFuelModel","fuelModel","fuelGroup","onDeriveSetUpdated","deriveLandownerCategory","onDerivedPropUpdated","perimeterToDerive","editablePerimeter","getDomainForOverrideField","generateJurisdictionalAcresTable","jurisdictionalAcres","JurisdictionalAgency","JurisdictionalUnit","JurisdictionalUnitID","JurisdictionAcres","GlobalID","generateDetailRows","isPrimary","isFA","dependentFields","staticFields","unitValidatorFields","isPerimeter","overrideDomainFields","agencyVal","newVal","onPropUpdated","PerimeterSource","accordionChange","resetPanelCollapseFlag","panelCollapseState","expandAllPanels","detailRows","expanderContent","shouldDisableForFA","clientDerivedPolygonAcres","onAcreagePropUpdated","onAcreagePropRemoved","onAcreageRecalculate","onAddNewAcreageRow","onAcreageLandownerCategoryUpdated","requiredFieldStatusNode","FireCausePanel","configureFireCauseStates","causeGeneral","ageCategoryDisabled","AgeCategoryDisabled","specificCauseDetailsDisabled","SpecificCauseDetailsDisabled","prohibitedCheckboxDisabled","ProhibitedCheckboxDisabled","activityGroupsDisabled","ActivityGroupsDisabled","getFireCauseGeneralOptions","getSpecificCauseDetails","FireCauseGeneralID","causeSpecificDetail","getFireCauseSpecificOptions","causeSpecific","getCauseActivityGroups","causeActivity","getAgeCategories","ageCategory","updateGeneralProp","fireCauseDisabled","causeRequired","causeGeneralRequired","causeRequiredAndMissing","causeGeneralRequiredAndMissing","causeHighlight","causeGeneralHighlight","specificRequired","specificDetailRequired","specificRequiredAndMissing","FireCauseSpecificID","specificDetailRequiredAndMissing","FireCauseSpecificDetailID","specificHighlight","specificDetailHighlight","activityGroupRequired","activityGroupRequiredAndMissing","FireCauseActivityGroupID","ageCategoryRequiredAndMissing","FireCauseAgeCategoryID","activityGroupHighlight","ageCategoryHighlight","causeCommentsRequired","isCauseProhibitedRequired","causeCommentsRequiredAndMissing","FireCauseComments","isCauseProhibitedRequiredAndMissing","IsCauseProhibited","causeCommentsHighlight","isCauseProhibitedHighlight","fireCauseLabel","fireCauseGeneralLabel","specificLabel","specificDetailLabel","activityGroupLabel","ageCategoryLabel","causeCommentsLabel","isCauseProhibitedLabel","maxRows","MultiAgencyResponsePanel","updateAgencies","addInitialResponseAgency","removeInitialResponseAgency","InitialResponseAgencies","paperStyle","EditOriginToolbar","userLatValue","userLongValue","onUpdatePoint","handleFormatChange","updateLongValue","newLong","updateLatValue","newLat","updateUserLatLong","newString","longitudeDisplay","latitudeDisplay","originPerimeterWarning","originWithinPerimeter","zDepth","tableLayout","fixedHeader","onCancelOriginEdit","onConfirmOriginEdit","confirmDisabled","ListItem","ListItemText","CursorPointer","EditPerimeterToolbar","generateFeatureFromShapefile","onUploadPerimeter","setTool","uploadAlert","onDeactivate","onActivate","onClearPerimeter","onCancelPerimeterEdit","onConfirmPerimeterEdit","EditGeometryToolbar","cancelPerimeterEdit","cancelOriginEdit","setGeometryFieldState","geometryField","enableOriginDraw","modifiedPerimeterGeometry","enablePerimeterDraw","onToolbarEditInactive","onToolbarEditActive","originalPerimeterGeometry","confirmOriginEdit","originGeometry","shapefilePerimeter","onPerimeterUploaded","confirmPerimeterEdit","manualPointUpdated","mercatorJson","onPerimeterUpdated","handlePointOfOriginUpdates","stopWatchingPerimeterUpdates","startWatchingPerimeterUpdates","handlePerimeterUpdates","selectorEl","editOriginEl","editPerimeterEl","CanAddNewPerimeter","activatePerimeterDraw","deactivatePerimeterDraw","ReactDOM","createPortal","panelStyle","alternateTextColor","AlertPanel","severityColor","actionBtn","alertHasAction","actionLabel","onActionClicked","IncidentDetailsContainer","closeDetailsClicked","editableIncident","updateStatus","errorMessage","editableAcres","perimeterValidation","onCloseDetailsClicked","editClicked","cancelEditClicked","editableAcresDirty","geometryToolbarChild","handleErrorDialogClose","handleRelationshipsDialogClose","warnForMissingRelationships","handleFSFireCodeYes","showUSFSFireCodeDialog","requestFireCode","collapseCompletePanels","handleFSFireCodeNo","requestFireCodeWarnIssued","fireReportingStatusUpdated","updatedIncident","refetchIncident","saveChangesClicked","perimeterIsNew","addNewPerimeter","attributesChanged","updatePerimeter","showError","incidentAttributesChanged","acreageChanged","updatedAcreage","unchangedFields","baseIncident","unchangedValues","findDuplicateAttributes","saveOccurenceRecord","isOriginValid","setUpdated","values","updatedAttributes","deriveAcresByJurisdiction","derivedJurisAcresResult","reconcileEditableAcreages","agencyPropUpdated","valueChanged","removeAgency","addAgency","attemptSetAgency","unitId","fieldToSet","propUpdated","round","agencyToSet","perimeterPropUpdated","updatedPerimeter","isPerimeterValid","perimeterValidationType","getDetailsIncidentPanels","configFields","panelIncident","panelPerimeter","originPanels","configField","identifier","perimeterPanel","Fields","withPerimeterPanels","splice","certifyIncident","onCertifyIncidentAgreed","certifiedIncident","preCertificationPerimeter","handlePerimeterCertification","perimeterToCertify","shouldRemovePerimeter","perimeterToUpdate","deleteThis","certifyPerimeter","refetchIncidentByForID","fireCodeRequested","decertifyIncident","decertifyPerimeter","decertifiedIncident","decertifiedCodedValue","handleSuccessSnackRequestClose","derivedResult","catIds","catID","derivedAcres","existingRecord","PerimeterID","calcedTotal","CalculatedAcreageTotal","handleConfirmOriginEdit","updatedGeomIncident","handleCancelOriginEdit","handleOnSpliceComplete","handleOnPerimeterUploaded","projectedGeometry","perimeterWasAdded","handleConfirmPerimeterEdit","MapMethod","Comments","handleCancelPerimeterEdit","disabledPerimeterSymbol","activateSave","deactivateSave","isIncident209","ics209CodedValue","perimeterTriangle","isMultipartPerimeter","incidentAcreage","isRetrieving","is209","missingConflictRelationships","perimeterWasEdited","entries","nextPerimeterValidation","quarantineAlert","incidentStatusAlert","editPerimeterToolbar","incidentDetails","perimeterConfigFields","perimeterDetails","certifyText","originWarning","disallowfederalTriangle","onFireReportingADSChange","fireCodeAlert","canRequestFireCode","onRequestFireCode","keyboardFocused","_isMounted","closeDetails","openMergeDialog","isLoaded","conflictRelationshipsMissing","activeIncidentId","hasIncidentId","fetchIncident","newIncidentId","wasMissingConflictRelationships","loadFullIncidentFromApi","selectionGeometry","onOpenMergeDialog","AttributeSummary","addSum","numberWithCommas","chartData","totalCount","datasets","totalAcresCount","labels","SummariesList","summary","summaries","summaryData","generateSummaryData","summarySheet","getColorsForCounts","counts","randomColor","getFireCauseGeneralData","fireCauseGeneralIds","fireCauseGenerals","pushValue","getFireCauseData","fireCauseIds","getDataForPieChart","acresData","modifiedLabels","combinedList","summaryType","distinctCounties","countyCounts","countyAcresData","distinctJurisdictionalUnits","getDataForUnits","distinctProtectingUnits","distinctProtectingAgencies","distinctLandownerCategories","landownerCategoriesAcresData","distinctFireCauseIds","distinctFireCauses","fireCausesAcresData","distinctFireCauseGeneralIds","distinctFireCauseGenerals","fireCauseGeneralsAcresData","sizeClassData","getSizeClassesForSummaries","sizeClassAcresData","getSizeClassAcreage","distinctCategories","distinctCategoriesByName","categoryCounts","categoryCountsAcresData","distinctStates","stateCounts","stateCountsAcresData","distinctJurisdictionalAgencies","jurisdictionalAgencies","jurisdictionalAgenciesAcresData","distinctValues","valuesArray","nonEmptyValues","emptyValues","localeCompare","incidentsWithMissingStuff","generateSelectedSummaries","classAAcres","acresClassA","classBAcres","acresClassB","classCAcres","acresClassC","classDAcres","acresClassD","classEAcres","acresClassE","classFAcres","acresClassF","classGAcres","dataUrl","makeStyles","root","flexGrow","menuButton","heading","typography","pxToRem","fontWeightRegular","ReportingDialog","handleCheckboxChange","selectedSummaries","newSummaries","generateFilterList","filterNodes","child","handleGenerateSummaries","isLoading","currentIncidents","scopedIncidents","menuIconRefElement","setMenuIconInputRef","getIncidentDataForSummaries","loadingSpinner","labelId","dense","button","ListItemIcon","tabIndex","disableRipple","queryingForIncidents","goBack","startWatchingPointOfOriginUpdates","startWatchingExtent","filterMap","onPointOfOriginUpdated","stopWatchingExtent","onExtentChanged","handleMapIncidentSelection","handlePerimeterAddIrwinId","setAuth","filterDiffs","JsDiff","extentHandle","errorBlock","Switch","path","render","exact","Redirect","IncidentDiscovery","Reporting","Print","Dictionary","NewIncident","IncidentDetails","onPerimeterAddIrwinId","aria-hidden","customFilterOperations","AuthManager","appId","loginWithPopup","esriId","OAuthInfo","idManager","useSignInPage","oAuthInfo","registerOAuthInfos","getUser","doLogin","sharingUrl","checkSignInStatus","setToken","setCredential","getCredential","oAuthPopupConfirmation","Portal","authMode","cookie","expire","destroyCredentials","reload","findCredential","App","authStarted","get","authTried","tryGroups","loadPropsFromURL","inReadOnlyGroup","groups","group","readOnlyGroupId","inReadWriteGroup","inspectorGroupId","inCertifierGroup","certifierGroupId","inAdminGroup","adminGroupId","inNoGroups","hasProductionRole","getUserSession","importCustomFiltersFromReduxStore","CustomFilters","inProductionReadOnlyGroup","inProductionReadWriteGroup","inProductionCertifierGroup","urlSearchParams","filterProps","mapProps","configLoaded","isAuthenticated","Login","require","prototype","defineProperty","searchElement","fromIndex","TypeError","o","len","abs","createBrowserHistory","store","createStore","composeWithDevTools","applyMiddleware","thunk","persistor","persistStore","configureStore","browserHandler","Bowser","getParser","userAgent","satisfies","chrome","firefox","Route","Router","muiTheme","exports","_extends","arguments","call","_react","_react2","__esModule","default","_ref","_ref$width","_ref$height","_ref$viewBox","viewBox","_objectWithoutProperties","classes"],"mappings":"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M,QAER,CACExuB,KAAM,OACNwuB,KAAM,QAER,CACExuB,KAAM,OACNwuB,KAAM,QAER,CACExuB,KAAM,OACNwuB,KAAM,QAER,CACExuB,KAAM,OACNwuB,KAAM,QAER,CACExuB,KAAM,OACNwuB,KAAM,QAER,CACExuB,KAAM,MACNwuB,KAAM,QAGVtzB,MAAOd,KAAK4N,MAAM3Y,OAAOhD,SAM7B62E,EACF,cAAC,GAAD,CACE1qD,MAAM,QACNugD,UAAU,EACV1pE,OAAoC,OAA5B+K,KAAK4N,MAAM3Y,OAAOvL,OACK,OAA7BsW,KAAK4N,MAAM3Y,OAAOjB,OACpB+qE,QAAS/+D,KAAK2nE,iBACd9I,SACE,gCACE,cAAC,GAAD,CACEzgD,MAAM,QACN0K,SAAU9oB,KAAK4N,MAAM7U,eACrB+pE,aAAa,EACb3uC,YAAa,CACX,CACEvuB,KAAM,UACNwuB,KAAM,SAER,CACExuB,KAAM,SACNwuB,KAAM,SAER,CACExuB,KAAM,UACNwuB,KAAM,SAER,CACExuB,KAAM,WACNwuB,KAAM,SAER,CACExuB,KAAM,aACNwuB,KAAM,SAER,CACExuB,KAAM,WACNwuB,KAAM,SAER,CACExuB,KAAM,cACNwuB,KAAM,SAER,CACExuB,KAAM,WACNwuB,KAAM,SAER,CACExuB,KAAM,UACNwuB,KAAM,SAER,CACExuB,KAAM,UACNwuB,KAAM,SAER,CACExuB,KAAM,SACNwuB,KAAM,SAER,CACExuB,KAAM,QACNwuB,KAAM,SAER,CACExuB,KAAM,WACNwuB,KAAM,SAER,CACExuB,KAAM,UACNwuB,KAAM,SAER,CACExuB,KAAM,OACNwuB,KAAM,SAER,CACExuB,KAAM,SACNwuB,KAAM,SAER,CACExuB,KAAM,WACNwuB,KAAM,SAER,CACExuB,KAAM,YACNwuB,KAAM,SAER,CACExuB,KAAM,QACNwuB,KAAM,SAER,CACExuB,KAAM,WACNwuB,KAAM,SAER,CACExuB,KAAM,gBACNwuB,KAAM,SAER,CACExuB,KAAM,WACNwuB,KAAM,SAER,CACExuB,KAAM,YACNwuB,KAAM,SAER,CACExuB,KAAM,cACNwuB,KAAM,SAER,CACExuB,KAAM,WACNwuB,KAAM,SAER,CACExuB,KAAM,UACNwuB,KAAM,SAER,CACExuB,KAAM,WACNwuB,KAAM,SAER,CACExuB,KAAM,SACNwuB,KAAM,SAER,CACExuB,KAAM,gBACNwuB,KAAM,SAER,CACExuB,KAAM,aACNwuB,KAAM,SAER,CACExuB,KAAM,aACNwuB,KAAM,SAER,CACExuB,KAAM,WACNwuB,KAAM,SAER,CACExuB,KAAM,iBACNwuB,KAAM,SAER,CACExuB,KAAM,eACNwuB,KAAM,SAER,CACExuB,KAAM,OACNwuB,KAAM,SAER,CACExuB,KAAM,WACNwuB,KAAM,SAER,CACExuB,KAAM,SACNwuB,KAAM,SAER,CACExuB,KAAM,eACNwuB,KAAM,SAER,CACExuB,KAAM,eACNwuB,KAAM,SAER,CACExuB,KAAM,iBACNwuB,KAAM,SAER,CACExuB,KAAM,eACNwuB,KAAM,SAER,CACExuB,KAAM,YACNwuB,KAAM,SAER,CACExuB,KAAM,QACNwuB,KAAM,SAER,CACExuB,KAAM,OACNwuB,KAAM,SAER,CACExuB,KAAM,UACNwuB,KAAM,SAER,CACExuB,KAAM,WACNwuB,KAAM,SAER,CACExuB,KAAM,aACNwuB,KAAM,SAER,CACExuB,KAAM,gBACNwuB,KAAM,SAER,CACExuB,KAAM,YACNwuB,KAAM,SAER,CACExuB,KAAM,UACNwuB,KAAM,SAER,CACExuB,KAAM,uBACNwuB,KAAM,SAER,CACExuB,KAAM,iBACNwuB,KAAM,SAER,CACExuB,KAAM,OACNwuB,KAAM,SAER,CACExuB,KAAM,2BACNwuB,KAAM,SAER,CACExuB,KAAM,cACNwuB,KAAM,SAER,CACExuB,KAAM,uCACNwuB,KAAM,SAER,CACExuB,KAAM,uBACNwuB,KAAM,UAGVtzB,MAAOd,KAAK4N,MAAM3Y,OAAOvL,QAE3B,cAAC,GAAD,CACEo5E,YAAa9iE,KAAK4N,MAAM3Y,OAAOvL,OAA4C,IAAnCsW,KAAK4N,MAAM3Y,OAAOvL,MAAMob,OAChEsZ,MAAM,SACNwkD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","file":"static/js/main.8266177f.chunk.js","sourcesContent":["export default __webpack_public_path__ + \"static/media/nifc-logo-small.f5ef1650.png\";","const AUTH_SUCCESS = 'AUTH_SUCCESS';\r\nconst AUTH_FAIL = 'AUTH_FAIL';\r\nconst SET_IS_CERTIFIER = 'SET_IS_CERTIFIER';\r\nconst SET_IS_READONLY = 'SET_IS_READONLY';\r\nconst SET_NO_ROLES = 'SET_NO_ROLES';\r\nconst LOGOUT = 'LOGOUT';\r\nconst TOKEN_PERIMETER = 'TOKEN_PERIMETER';\r\nconst TOKEN_POO = 'TOKEN_POO';\r\nconst SET_IS_ADMIN = 'SET_IS_ADMIN';\r\n\r\n/* eslint import/no-anonymous-default-export: [2, {\"allowObject\": true}] */\r\nexport default {\r\n AUTH_SUCCESS,\r\n AUTH_FAIL,\r\n SET_IS_CERTIFIER,\r\n SET_IS_READONLY,\r\n SET_NO_ROLES,\r\n LOGOUT,\r\n TOKEN_PERIMETER,\r\n TOKEN_POO,\r\n SET_IS_ADMIN\r\n};\r\n","import types from \"./types\";\r\n\r\nconst initialState = {\r\n user: null,\r\n loaded: false,\r\n tokenPointOfOrigin: null,\r\n tokenPerimeter: null,\r\n isCertifier: null,\r\n isReadOnly: null,\r\n rolesLoaded: false,\r\n hasNoRoles: false,\r\n isAdmin: false\r\n};\r\n\r\nconst authReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case types.AUTH_SUCCESS:\r\n const authObject = { ...action.payload };\r\n delete authObject.user.portal;\r\n\r\n if (authObject.user.credential && authObject.user.credential._oAuthCred) {\r\n delete authObject.user.credential._oAuthCred;\r\n }\r\n\r\n return {\r\n ...state,\r\n ...authObject,\r\n loaded: true\r\n }\r\n case types.AUTH_FAIL:\r\n return {\r\n ...state,\r\n user: null,\r\n loaded: true\r\n }\r\n case types.SET_IS_CERTIFIER:\r\n return {\r\n ...state,\r\n isCertifier: action.payload.isCertifier,\r\n rolesLoaded: true\r\n }\r\n case types.SET_IS_READONLY:\r\n return {\r\n ...state,\r\n isReadOnly: action.payload.isReadOnly,\r\n rolesLoaded: true\r\n }\r\n\r\n case types.SET_IS_ADMIN:\r\n return {\r\n ...state,\r\n isAdmin: action.payload.isAdmin\r\n }\r\n\r\n case types.SET_NO_ROLES:\r\n return {\r\n ...state,\r\n hasNoRoles: action.payload.noRoles\r\n }\r\n\r\n case types.LOGOUT:\r\n return {\r\n ...state,\r\n user: null\r\n }\r\n\r\n case types.TOKEN_PERIMETER:\r\n return {\r\n ...state,\r\n tokenPerimeter: action.payload.token\r\n }\r\n case types.TOKEN_POO:\r\n return {\r\n ...state,\r\n tokenPointOfOrigin: action.payload.token\r\n }\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default authReducer;\r\n","import types from './types';\r\n\r\nconst loadAuthSuccess = (user) => ({\r\n type: types.AUTH_SUCCESS,\r\n payload: {\r\n user\r\n }\r\n});\r\n\r\nconst loadAuthFail = (data) => ({\r\n type: types.AUTH_FAIL,\r\n payload: {\r\n data\r\n }\r\n});\r\n\r\nconst setIsCertifier = (isCertifier) => ({\r\n type: types.SET_IS_CERTIFIER,\r\n payload: {\r\n isCertifier\r\n }\r\n});\r\n\r\nconst setNoRoles = (noRoles) => ({\r\n type: types.SET_NO_ROLES,\r\n payload: {\r\n noRoles\r\n }\r\n});\r\n\r\nconst setIsReadOnly = (isReadOnly) => ({\r\n type: types.SET_IS_READONLY,\r\n payload: {\r\n isReadOnly\r\n }\r\n});\r\n\r\nconst setIsAdmin = (isAdmin) => ({\r\n type: types.SET_IS_ADMIN,\r\n payload: {\r\n isAdmin\r\n }\r\n});\r\n\r\nconst logout = (data) => ({\r\n type: types.LOGOUT\r\n});\r\n\r\nconst loadPerimeterToken = (token) => ({\r\n type: types.TOKEN_PERIMETER,\r\n payload: {\r\n token\r\n }\r\n});\r\n\r\nconst loadPointOfOriginToken = (token) => ({\r\n type: types.TOKEN_POO,\r\n payload: {\r\n token\r\n }\r\n});\r\n\r\n/* eslint import/no-anonymous-default-export: [2, {\"allowObject\": true}] */\r\nexport default {\r\n loadAuthSuccess: loadAuthSuccess,\r\n loadAuthFail: loadAuthFail,\r\n setIsCertifier: setIsCertifier,\r\n setIsReadOnly: setIsReadOnly,\r\n setNoRoles: setNoRoles,\r\n setIsAdmin: setIsAdmin,\r\n logout: logout,\r\n loadPerimeterToken: loadPerimeterToken,\r\n loadPointOfOriginToken: loadPointOfOriginToken\r\n};\r\n","import actions from \"./actions\";\r\n\r\nconst logout = () => ( dispatch ) => {\r\n window.authManager.logout();\r\n dispatch(actions.logout);\r\n};\r\n\r\nconst login = () => ( dispatch ) => {\r\n window.authManager.login().then(\r\n response => dispatch(actions.loadAuthSuccess(response)),\r\n error => dispatch(actions.loadAuthFail(error))\r\n )\r\n}\r\n\r\nconst checkAuth = () => ( dispatch ) => {\r\n window.authManager.checkLogin().then(\r\n response => dispatch(actions.loadAuthSuccess(response)),\r\n error => dispatch(actions.loadAuthFail(error))\r\n )\r\n}\r\n\r\nconst setIsCertifier = actions.setIsCertifier;\r\nconst setIsReadOnly = actions.setIsReadOnly;\r\nconst setIsAdmin = actions.setIsAdmin;\r\nconst setNoRoles = actions.setNoRoles;\r\nconst loadPerimeterToken = actions.loadPerimeterToken;\r\nconst loadPointOfOriginToken = actions.loadPointOfOriginToken;\r\n\r\n/* eslint import/no-anonymous-default-export: [2, {\"allowObject\": true}] */\r\nexport default {\r\n logout,\r\n login,\r\n checkAuth,\r\n setIsCertifier,\r\n setIsReadOnly,\r\n setIsAdmin,\r\n setNoRoles,\r\n loadPerimeterToken,\r\n loadPointOfOriginToken\r\n};\r\n","import reducer from './reducers';\r\n\r\nexport { default as authOperations } from './operations';\r\nexport { default as authTypes } from './types';\r\n\r\nexport default reducer;\r\n","const SET_CONFIG = 'SET_CONFIG';\r\nconst SET_ORIGIN_FIELD_INFOS = 'SET_ORIGIN_FIELD_INFOS';\r\nconst SET_PERIMETER_FIELD_INFOS = 'SET_PERIMETER_FIELD_INFOS';\r\nconst SET_SORT_FIELD = 'SET_SORT_FIELD';\r\nconst SET_SORT_DESC = 'SET_SORT_DESC';\r\n\r\n/* eslint import/no-anonymous-default-export: [2, {\"allowObject\": true}] */\r\nexport default {\r\n SET_CONFIG,\r\n SET_ORIGIN_FIELD_INFOS,\r\n SET_PERIMETER_FIELD_INFOS,\r\n SET_SORT_FIELD,\r\n SET_SORT_DESC\r\n};\r\n","import types from \"./types\";\r\nimport originFields from '../../defaults/PointOfOriginFields.json'\r\n\r\nconst initialState = {\r\n loaded: false,\r\n fieldInfos: [],\r\n perimeterFieldInfos: [],\r\n sortField: originFields.discoveryDate,\r\n sortDesc: true\r\n}\r\n\r\nconst configReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case types.SET_CONFIG:\r\n return {\r\n ...state,\r\n ...action.payload.config,\r\n loaded: true\r\n }\r\n case types.SET_ORIGIN_FIELD_INFOS:\r\n return {\r\n ...state,\r\n fieldInfos: action.payload.fieldInfos\r\n }\r\n case types.SET_SORT_FIELD:\r\n return {\r\n ...state,\r\n sortField: action.payload.sortField\r\n }\r\n case types.SET_SORT_DESC:\r\n return {\r\n ...state,\r\n sortDesc: action.payload.sortDesc\r\n }\r\n\r\n case types.SET_PERIMETER_FIELD_INFOS:\r\n return {\r\n ...state,\r\n perimeterFieldInfos: action.payload.fieldInfos\r\n }\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default configReducer;\r\n","import types from './types';\r\n\r\nconst setConfig = (config) => ({\r\n type: types.SET_CONFIG,\r\n payload: {\r\n config\r\n }\r\n});\r\n\r\nconst setOriginFieldInfos = (fieldInfos) => ({\r\n type: types.SET_ORIGIN_FIELD_INFOS,\r\n payload: {\r\n fieldInfos\r\n }\r\n});\r\n\r\nconst setPerimeterFieldInfos = (fieldInfos) => ({\r\n type: types.SET_PERIMETER_FIELD_INFOS,\r\n payload: {\r\n fieldInfos\r\n }\r\n});\r\n\r\nconst setSortField = (sortField) => ({\r\n type: types.SET_SORT_FIELD,\r\n payload: {\r\n sortField\r\n }\r\n});\r\n\r\nconst setSortDesc = (sortDesc) => ({\r\n type: types.SET_SORT_DESC,\r\n payload: {\r\n sortDesc\r\n }\r\n});\r\n\r\n/* eslint import/no-anonymous-default-export: [2, {\"allowObject\": true}] */\r\nexport default {\r\n setConfig,\r\n setOriginFieldInfos,\r\n setPerimeterFieldInfos,\r\n setSortField,\r\n setSortDesc\r\n};\r\n","import actions from \"./actions\";\r\n\r\nconst fetchConfig = () => ( dispatch ) => {\r\n window.api.getAppConfig().then(\r\n response => dispatch(actions.setConfig(response)),\r\n error => dispatch(actions.setConfig(error))\r\n )\r\n}\r\nconst setOriginFieldInfos = actions.setOriginFieldInfos;\r\nconst setPerimeterFieldInfos = actions.setPerimeterFieldInfos;\r\n\r\nconst setSortField = (sortField) => ( dispatch ) => {\r\n window.api.setSortField(sortField);\r\n dispatch(actions.setSortField(sortField));\r\n};\r\n\r\nconst setSortDesc = (sortDesc) => ( dispatch ) => {\r\n window.api.setSortDesc(sortDesc);\r\n dispatch(actions.setSortDesc(sortDesc));\r\n};\r\n\r\n/* eslint import/no-anonymous-default-export: [2, {\"allowObject\": true}] */\r\nexport default {\r\n fetchConfig,\r\n setOriginFieldInfos,\r\n setPerimeterFieldInfos,\r\n setSortField,\r\n setSortDesc\r\n};\r\n","import reducer from './reducers';\r\n\r\nexport { default as configOperations } from './operations';\r\nexport { default as configTypes } from './types';\r\n\r\nexport default reducer;\r\n","/* eslint import/no-anonymous-default-export: [2, {\"allowObject\": true}] */\r\nexport default {\r\n SET_EXTENT: 'SET_EXTENT',\r\n MAP_LOADED: 'MAP_LOADED',\r\n IRWIN_ID_PERIMETER: 'IRWIN_ID_PERIMETER',\r\n REHYDRATE: 'REHYDRATE'\r\n};\r\n","import {REHYDRATE} from 'redux-persist'\r\nimport types from \"./types\";\r\n\r\nconst initialState = {\r\n loaded: false,\r\n currentExtent: null,\r\n perimeterIncident: null,\r\n showAddIrwinIdToPerimeter: false\r\n};\r\n\r\nconst mapReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case REHYDRATE:\r\n const extent = action.payload && action.payload.map && action.payload.map.currentExtent ?\r\n action.payload.map.currentExtent\r\n : null;\r\n if(extent){\r\n return {\r\n loaded: false,\r\n currentExtent: extent\r\n };\r\n }\r\n return state;\r\n\r\n case types.REHYDRATE:\r\n const mapExtent = action.payload && action.payload.map && action.payload.map.currentExtent ?\r\n action.payload.map.currentExtent\r\n : null;\r\n if(mapExtent){\r\n return {\r\n loaded: false,\r\n currentExtent: mapExtent\r\n };\r\n }\r\n return state;\r\n case types.SET_EXTENT:\r\n return {\r\n ...state,\r\n currentExtent: action.payload.extent\r\n }\r\n case types.IRWIN_ID_PERIMETER:\r\n return {\r\n ...state,\r\n perimeterIncident: action.payload.perimeterIncident,\r\n showAddIrwinIdToPerimeter: (action.payload.perimeterIncident !== null)\r\n }\r\n case types.MAP_LOADED:\r\n return {\r\n ...state,\r\n loaded: true\r\n }\r\n\r\n\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default mapReducer;\r\n","import types from './types';\r\n\r\nconst manualRehydrateMap = (map) => ({\r\n type: types.REHYDRATE,\r\n payload: {\r\n map\r\n }\r\n});\r\n\r\nconst setExtent = (extent) => ({\r\n type: types.SET_EXTENT,\r\n payload: {\r\n extent\r\n }\r\n});\r\n\r\nconst mapLoaded = () => ({\r\n type: types.MAP_LOADED,\r\n payload: {}\r\n});\r\n\r\nconst setAddIrwinIdToPerimeter = (perimeterIncident) => ({\r\n type: types.IRWIN_ID_PERIMETER,\r\n payload: {\r\n perimeterIncident\r\n }\r\n});\r\n\r\n/* eslint import/no-anonymous-default-export: [2, {\"allowObject\": true}] */\r\nexport default {\r\n manualRehydrateMap,\r\n setExtent,\r\n mapLoaded,\r\n setAddIrwinIdToPerimeter\r\n};\r\n","import actions from \"./actions\";\r\n\r\n/* eslint import/no-anonymous-default-export: [2, {\"allowObject\": true}] */\r\nexport default {\r\n manualRehydrateMap: actions.manualRehydrateMap,\r\n setExtent: actions.setExtent,\r\n mapLoaded: actions.mapLoaded,\r\n setAddIrwinIdToPerimeter: actions.setAddIrwinIdToPerimeter\r\n};\r\n","import reducer from './reducers';\r\n\r\nexport { default as mapOperations } from './operations';\r\nexport { default as mapTypes } from './types';\r\n\r\nexport default reducer;\r\n","const SET_ACTIVE_DRAW_TOOL = 'SET_ACTIVE_DRAW_TOOL';\r\nconst SET_FILTER_GEOMETRY = 'SET_FILTER_GEOMETRY';\r\nconst SET_USE_EXTENT_FILTER = 'SET_USE_EXTENT_FILTER';\r\nconst SET_FILTER_LOADING = 'SET_FILTER_LOADING';\r\nconst SET_FILTER_VISIBLE = 'SET_FILTER_VISIBLE';\r\nconst ADD_FIRE_CAUSE = 'ADD_FIRE_CAUSE';\r\nconst REMOVE_FIRE_CAUSE = 'REMOVE_FIRE_CAUSE';\r\nconst CLEAR_FIRE_CAUSE = 'CLEAR_FIRE_CAUSE';\r\nconst ADD_INITIAL_STRATEGY = 'ADD_INITIAL_STRATEGY';\r\nconst REMOVE_INITIAL_STRATEGY = 'REMOVE_INITIAL_STRATEGY';\r\nconst CLEAR_DATA_SOURCE = 'CLEAR_DATA_SOURCE';\r\nconst REMOVE_DATA_SOURCE = 'REMOVE_DATA_SOURCE';\r\nconst SET_MULTI_ROOT = 'SET_MULTI_ROOT';\r\nconst ADD_DATA_SOURCE = 'ADD_DATA_SOURCE';\r\nconst SET_NARRATIVE_FILTER = 'SET_NARRATIVE_FILTER';\r\nconst CLEAR_INITIAL_STRATEGY = 'CLEAR_INITIAL_STRATEGY';\r\nconst ADD_LANDOWNER_CATEGORY = 'ADD_LANDOWNER_CATEGORY';\r\nconst RESET_FILTERS = 'RESET_FILTERS';\r\nconst REMOVE_LANDOWNER_CATEGORY = 'REMOVE_LANDOWNER_CATEGORY';\r\nconst CLEAR_LANDOWNER_CATEGORY = 'CLEAR_LANDOWNER_CATEGORY';\r\nconst ADD_INITIAL_TYPE = 'ADD_INITIAL_TYPE';\r\nconst REMOVE_INITIAL_TYPE = 'REMOVE_INITIAL_TYPE';\r\nconst CLEAR_INITIAL_TYPE = 'CLEAR_INITIAL_TYPE';\r\nconst SET_FIRE_ACRE_FILTER = 'SET_FIRE_ACRE_FILTER';\r\nconst CLEAR_FIRE_ACRE_FILTER = 'CLEAR_FIRE_ACRE_FILTER';\r\nconst SET_FIRE_DISCOVERY_DATES = 'SET_FIRE_DISCOVERY_DATES';\r\nconst CLEAR_FIRE_DISCOVERY_DATES = 'CLEAR_FIRE_DISCOVERY_DATES';\r\nconst SET_FIRE_OUT_DATES = 'SET_FIRE_OUT_DATES';\r\nconst CLEAR_FIRE_OUT_DATES = 'CLEAR_FIRE_OUT_DATES';\r\nconst SET_MODIFIED_DATES = 'SET_MODIFIED_DATES';\r\nconst SET_BASIC_FILTER_ACTIVE = 'SET_BASIC_FILTER_ACTIVE';\r\nconst REMOVE_IRWIN_RELATIONSHIP = 'REMOVE_IRWIN_RELATIONSHIP';\r\nconst CLEAR_IRWIN_RELATIONSHIPS = 'CLEAR_IRWIN_RELATIONSHIPS';\r\nconst ADD_IRWIN_RELATIONSHIP = 'ADD_IRWIN_RELATIONSHIP';\r\nconst CLEAR_MODIFIED_DATES = 'CLEAR_MODIFIED_DATES';\r\nconst SET_STRUCTURES_FILTER = 'SET_STRUCTURES_FILTER';\r\nconst SET_INJURIES_FILTER = 'SET_INJURIES_FILTER';\r\nconst SET_UNIQUENESS_FILTER = 'SET_UNIQUENESS_FILTER';\r\nconst SET_FATALITIES_FILTER = 'SET_FATALITIES_FILTER';\r\nconst SET_PERIMETER_MAP_METHOD_FILTER = 'SET_PERIMETER_MAP_METHOD_FILTER';\r\nconst\tSET_PERIMETER_FEATURE_STATUS_FILTER = 'SET_PERIMETER_FEATURE_STATUS_FILTER';\r\nconst\tSET_PERIMETER_FEATURE_ACCESS_FILTER = 'SET_PERIMETER_FEATURE_ACCESS_FILTER';\r\nconst SET_OTHER_STRUCTURES_DESTROYED_FILTER = 'SET_OTHER_STRUCTURES_DESTROYED_FILTER';\r\nconst SET_RESIDENCES_THREATENED_FILTER = 'SET_RESIDENCES_THREATENED_FILTER';\r\nconst SET_OTHER_STRUCTURES_THREATENED_FILTER = 'SET_OTHER_STRUCTURES_THREATENED_FILTER';\r\nconst SET_CERTIFIED_FILTER = 'SET_CERTIFIED_FILTER';\r\nconst SET_CAPABILITY_REQUESTS_FILTER = 'SET_CAPABILITY_REQUESTS_FILTER';\r\nconst SET_GACC_FILTER = 'SET_GACC_FILTER';\r\nconst SET_STATE_FILTER = 'SET_STATE_FILTER';\r\nconst SET_COUNTY_FILTER = 'SET_COUNTY_FILTER';\r\nconst SET_REPORT_SEARCH_TERMS = 'SET_REPORT_SEARCH_TERMS';\r\nconst SET_INCIDENT_JURISDICTIONAL_AGENCY = 'SET_INCIDENT_JURISDICTIONAL_AGENCY';\r\nconst SET_DISPATCH_CENTER_ID = 'SET_DISPATCH_CENTER_ID';\r\nconst SET_POO_PROTECTING_UNIT = 'SET_POO_PROTECTING_UNIT';\r\nconst SET_POO_PROTECTING_AGENCY = 'SET_POO_PROTECTING_AGENCY';\r\nconst SET_JURISDICTIONAL_UNIT = 'SET_JURISDICTIONAL_UNIT';\r\nconst ADD_UNIQUE_FIRE_ID = 'ADD_UNIQUE_FIRE_ID';\r\nconst REMOVE_UNIQUE_FIRE_ID = 'REMOVE_UNIQUE_FIRE_ID';\r\nconst CLEAR_UNIQUE_FIRE_ID = 'CLEAR_UNIQUE_FIRE_ID';\r\nconst SET_MODIFIED_BY_SYSTEM_FILTER = 'SET_MODIFIED_BY_SYSTEM_FILTER';\r\nconst SET_CREATED_BY_SYSTEM_FILTER = 'SET_CREATED_BY_SYSTEM_FILTER';\r\nconst SET_UTC_OFFSET_FILTER = 'SET_UTC_OFFSET_FILTER';\r\nconst CLEAR_UTC_OFFSET_FILTER = 'CLEAR_UTC_OFFSET_FILTER';\r\nconst MANUAL_REHYDRATE_FILTER = 'MANUAL_REHYDRATE_FILTER';\r\nconst CLEAR_PERIMETER_ACREAGE = 'CLEAR_PERIMETER_ACREAGE';\r\nconst SET_PERIMETER_ACREAGE_LANDOWNER = 'SET_PERIMETER_ACREAGE_LANDOWNER';\r\nconst SET_PERIMETER_ACREAGE_OPERATOR = 'SET_PERIMETER_ACREAGE_OPERATOR';\r\nconst SET_PERIMETER_ACREAGE_NUMBER = 'SET_PERIMETER_ACREAGE_NUMBER';\r\nconst SET_PERIMETER_ACREAGE_IDS = 'SET_PERIMETER_ACREAGE_IDS';\r\nconst SET_HAS_SPATIAL_FILTER = 'SET_HAS_SPATIAL_FILTER';\r\nconst SET_SPATIAL_FILTER_ID = 'SET_SPATIAL_FILTER_ID';\r\n\r\n/* eslint import/no-anonymous-default-export: [2, {\"allowObject\": true}] */\r\nexport default {\r\n MANUAL_REHYDRATE_FILTER,\r\n SET_ACTIVE_DRAW_TOOL,\r\n SET_FILTER_GEOMETRY,\r\n SET_USE_EXTENT_FILTER,\r\n SET_FILTER_LOADING,\r\n SET_FILTER_VISIBLE,\r\n ADD_FIRE_CAUSE,\r\n REMOVE_FIRE_CAUSE,\r\n CLEAR_FIRE_CAUSE,\r\n ADD_INITIAL_STRATEGY,\r\n REMOVE_INITIAL_STRATEGY,\r\n CLEAR_INITIAL_STRATEGY,\r\n ADD_LANDOWNER_CATEGORY,\r\n REMOVE_LANDOWNER_CATEGORY,\r\n CLEAR_LANDOWNER_CATEGORY,\r\n REMOVE_IRWIN_RELATIONSHIP,\r\n CLEAR_IRWIN_RELATIONSHIPS,\r\n ADD_IRWIN_RELATIONSHIP,\r\n ADD_INITIAL_TYPE,\r\n REMOVE_INITIAL_TYPE,\r\n CLEAR_INITIAL_TYPE,\r\n SET_FIRE_ACRE_FILTER,\r\n CLEAR_FIRE_ACRE_FILTER,\r\n SET_FIRE_DISCOVERY_DATES,\r\n CLEAR_FIRE_DISCOVERY_DATES,\r\n SET_FIRE_OUT_DATES,\r\n CLEAR_FIRE_OUT_DATES,\r\n SET_MODIFIED_DATES,\r\n CLEAR_MODIFIED_DATES,\r\n SET_STRUCTURES_FILTER,\r\n SET_INJURIES_FILTER,\r\n SET_UNIQUENESS_FILTER,\r\n SET_FATALITIES_FILTER,\r\n SET_BASIC_FILTER_ACTIVE,\r\n SET_PERIMETER_MAP_METHOD_FILTER,\r\n\tSET_PERIMETER_FEATURE_STATUS_FILTER,\r\n\tSET_PERIMETER_FEATURE_ACCESS_FILTER,\r\n SET_OTHER_STRUCTURES_DESTROYED_FILTER,\r\n SET_RESIDENCES_THREATENED_FILTER,\r\n SET_OTHER_STRUCTURES_THREATENED_FILTER,\r\n SET_CERTIFIED_FILTER,\r\n SET_GACC_FILTER,\r\n SET_STATE_FILTER,\r\n SET_COUNTY_FILTER,\r\n SET_POO_PROTECTING_UNIT,\r\n SET_POO_PROTECTING_AGENCY,\r\n SET_REPORT_SEARCH_TERMS,\r\n SET_INCIDENT_JURISDICTIONAL_AGENCY,\r\n SET_DISPATCH_CENTER_ID,\r\n SET_JURISDICTIONAL_UNIT,\r\n RESET_FILTERS,\r\n SET_NARRATIVE_FILTER,\r\n ADD_UNIQUE_FIRE_ID,\r\n SET_CAPABILITY_REQUESTS_FILTER,\r\n REMOVE_UNIQUE_FIRE_ID,\r\n CLEAR_UNIQUE_FIRE_ID,\r\n SET_MODIFIED_BY_SYSTEM_FILTER,\r\n SET_CREATED_BY_SYSTEM_FILTER,\r\n ADD_DATA_SOURCE,\r\n REMOVE_DATA_SOURCE,\r\n CLEAR_DATA_SOURCE,\r\n SET_MULTI_ROOT,\r\n SET_UTC_OFFSET_FILTER,\r\n CLEAR_UTC_OFFSET_FILTER,\r\n SET_PERIMETER_ACREAGE_LANDOWNER,\r\n SET_PERIMETER_ACREAGE_OPERATOR,\r\n SET_PERIMETER_ACREAGE_NUMBER,\r\n CLEAR_PERIMETER_ACREAGE,\r\n SET_PERIMETER_ACREAGE_IDS,\r\n SET_HAS_SPATIAL_FILTER,\r\n SET_SPATIAL_FILTER_ID\r\n};\r\n","import {REHYDRATE} from 'redux-persist'\r\nimport types from \"./types\";\r\n\r\nconst initialState = {\r\n visible: true,\r\n isBasicFilterActive: true,\r\n loading: true,\r\n useExtent: true,\r\n geometry: null,\r\n hasSpatialFilter: false,\r\n spatialFilterID: null,\r\n gacc: null,\r\n fireCauses: [],\r\n discoveryDateMax: null,\r\n discoveryDateMin: new Date(new Date().getFullYear(), 0, 1, 0, 0, 0, 0),\r\n outDateMax: null,\r\n outDateMin: null,\r\n modifiedDateMax: null,\r\n modifiedDateMin: null,\r\n fireAcresMax: null,\r\n fireAcresMin: null,\r\n originWhereClause: null,\r\n structuresDestroyed: null,\r\n uniqueness: null,\r\n fatalities: null,\r\n otherStructuresDestroyed: null,\r\n residencesThreatened: null,\r\n otherStructuresThreatened: null,\r\n certified: null,\r\n perimeterMapMethod: null,\r\n perimeterFeatureStatus: null,\r\n perimeterFeatureAccess: null,\r\n strategies: [],\r\n irwinRelationships: [],\r\n dataSources: ['1'],\r\n multiRootOnly: false,\r\n categories: ['WF'],\r\n reportSearchTerms: null,\r\n landownerCategories: [],\r\n incidentJurisdictionalAgency: null,\r\n state: null,\r\n county: null,\r\n capabilityRequests: null,\r\n pooProtectingUnit: null,\r\n pooProtectingAgency: null,\r\n jurisdictionalUnit: null,\r\n dispatchCenterID: null,\r\n uniqueFireIds: [],\r\n activeDrawTool: null,\r\n modifiedBySystem: null,\r\n createdBySystem: null,\r\n narrativeFilter: null,\r\n narrativeFilterState: null,\r\n utcOffset: null,\r\n perimeterAcreageLandowner: null,\r\n perimeterAcreageOperator: null,\r\n perimeterAcreageNumber: 0,\r\n //perimeterAcreageIds: [],\r\n //shouldFilterOnPerimeterAcreageIds: false\r\n};\r\n\r\nconst filterReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case REHYDRATE:\r\n if(action.payload && action.payload.filter){\r\n action.payload.filter.loading = true;\r\n action.payload.filter.uniqueFireIds = [];\r\n state = {\r\n ...state,\r\n ...action.payload.filter\r\n };\r\n }\r\n break;\r\n case types.MANUAL_REHYDRATE_FILTER:\r\n if(action.payload && action.payload.filter){\r\n action.payload.filter.loading = true;\r\n action.payload.filter.uniqueFireIds = [];\r\n state = {\r\n ...state,\r\n ...action.payload.filter\r\n };\r\n }\r\n break;\r\n case types.RESET_FILTERS:\r\n state = {\r\n ...state,\r\n visible: true,\r\n geometry: null,\r\n hasSpatialFilter: false,\r\n spatialFilterID: null,\r\n gacc: null,\r\n isBasicFilterActive: true,\r\n fireCauses: [],\r\n discoveryDateMax: null,\r\n discoveryDateMin: new Date(new Date().getFullYear(), 0, 1, 0, 0, 0, 0),\r\n outDateMax: null,\r\n outDateMin: null,\r\n modifiedDateMax: null,\r\n modifiedDateMin: null,\r\n fireAcresMax: null,\r\n fireAcresMin: null,\r\n originWhereClause: null,\r\n structuresDestroyed: null,\r\n injuries: null,\r\n fatalities: null,\r\n otherStructuresDestroyed: null,\r\n residencesThreatened: null,\r\n otherStructuresThreatened: null,\r\n certified: null,\r\n perimeterMapMethod: null,\r\n perimeterFeatureStatus: null,\r\n perimeterFeatureAccess: null,\r\n strategies: [],\r\n irwinRelationships:[],\r\n dataSources:[],\r\n multiRootOnly: false,\r\n categories: ['WF'],\r\n reportSearchTerms: null,\r\n landownerCategories: [],\r\n incidentJurisdictionalAgency: null,\r\n state: null,\r\n county: null,\r\n capabilityRequests: null,\r\n pooProtectingUnit: null,\r\n pooProtectingAgency: null,\r\n jurisdictionalUnit: null,\r\n dispatchCenterID: null,\r\n uniqueFireIds: [],\r\n activeDrawTool: null,\r\n modifiedBySystem: null,\r\n createdBySystem: null,\r\n narrativeFilter: null,\r\n narrativeFilterState: null,\r\n utcOffset: null,\r\n perimeterAcreageLandowner: null,\r\n perimeterAcreageOperator: null,\r\n perimeterAcreageNumber: null\r\n //perimeterAcreageIds: [],\r\n //shouldFilterOnPerimeterAcreageIds: false\r\n };\r\n break;\r\n\r\n case types.SET_FILTER_LOADING:\r\n state = {\r\n ...state,\r\n loading: action.payload.loading\r\n };\r\n break;\r\n case types.SET_FILTER_VISIBLE:\r\n state = {\r\n ...state,\r\n visible: action.payload.visible\r\n };\r\n break;\r\n case types.SET_BASIC_FILTER_ACTIVE:\r\n state = {\r\n ...state,\r\n isBasicFilterActive: action.payload.isBasicFilterActive\r\n };\r\n break;\r\n case types.SET_NARRATIVE_FILTER:\r\n state = {\r\n ...state,\r\n narrativeFilter: action.payload.narrativeFilter,\r\n narrativeFilterState: action.payload.narrativeFilterState\r\n };\r\n break;\r\n\r\n case types.SET_FILTER_GEOMETRY:\r\n state = {\r\n ...state,\r\n geometry: action.payload.geometry\r\n };\r\n break;\r\n\r\n case types.SET_HAS_SPATIAL_FILTER:\r\n state = {\r\n ...state,\r\n hasSpatialFilter: action.payload.hasSpatialFilter\r\n };\r\n break;\r\n\r\n case types.SET_SPATIAL_FILTER_ID:\r\n state = {\r\n ...state,\r\n spatialFilterID: action.payload.spatialFilterID\r\n };\r\n break;\r\n\r\n case types.CLEAR_PERIMETER_ACREAGE:\r\n state = {\r\n ...state,\r\n perimeterAcreageLandowner: null,\r\n setPerimeterAcreageOperator: null,\r\n perimeterAcreageNumber: null\r\n };\r\n break;\r\n \r\n case types.SET_PERIMETER_ACREAGE_LANDOWNER:\r\n state = {\r\n ...state,\r\n perimeterAcreageLandowner: action.payload.perimeterAcreageLandowner\r\n };\r\n break;\r\n\r\n case types.SET_PERIMETER_ACREAGE_OPERATOR:\r\n state = {\r\n ...state,\r\n perimeterAcreageOperator: action.payload.perimeterAcreageOperator\r\n };\r\n break;\r\n\r\n case types.SET_PERIMETER_ACREAGE_NUMBER:\r\n state = {\r\n ...state,\r\n perimeterAcreageNumber: action.payload.perimeterAcreageNumber\r\n };\r\n break;\r\n\r\n case types.ADD_INITIAL_STRATEGY:\r\n state = {\r\n ...state,\r\n strategies: [...state.strategies, action.payload.strategy]\r\n };\r\n break;\r\n\r\n case types.REMOVE_INITIAL_STRATEGY:\r\n state = {\r\n ...state,\r\n strategies: [...state.strategies.filter(strategy => strategy !== action.payload.strategy)]\r\n };\r\n break;\r\n\r\n case types.CLEAR_INITIAL_STRATEGY:\r\n state = {\r\n ...state,\r\n strategies: []\r\n };\r\n break;\r\n\r\n case types.ADD_IRWIN_RELATIONSHIP:\r\n state = {\r\n ...state,\r\n irwinRelationships: [...state.irwinRelationships, action.payload.irwinRelationship]\r\n };\r\n break;\r\n\r\n case types.REMOVE_IRWIN_RELATIONSHIP:\r\n state = {\r\n ...state,\r\n irwinRelationships: [...state.irwinRelationships.filter(irwinRelationship => irwinRelationship !== action.payload.irwinRelationship)]\r\n };\r\n break;\r\n\r\n case types.CLEAR_IRWIN_RELATIONSHIPS:\r\n debugger;\r\n state = {\r\n ...state,\r\n irwinRelationships: []\r\n };\r\n break;\r\n\r\n case types.ADD_DATA_SOURCE:\r\n state = {\r\n ...state,\r\n dataSources: [...state.dataSources, action.payload.source]\r\n };\r\n break;\r\n\r\n case types.SET_MULTI_ROOT:\r\n state = {\r\n ...state,\r\n multiRootOnly: action.payload.multiRootOnly\r\n };\r\n break;\r\n\r\n case types.REMOVE_DATA_SOURCE:\r\n state = {\r\n ...state,\r\n dataSources: [...state.dataSources.filter(source => source !== action.payload.source)]\r\n };\r\n break;\r\n\r\n case types.CLEAR_DATA_SOURCE:\r\n state = {\r\n ...state,\r\n dataSources: [],\r\n multiRootOnly: false\r\n };\r\n break;\r\n\r\n case types.ADD_LANDOWNER_CATEGORY:\r\n state = {\r\n ...state,\r\n landownerCategories: [...state.landownerCategories, action.payload.category]\r\n };\r\n break;\r\n\r\n case types.REMOVE_LANDOWNER_CATEGORY:\r\n state = {\r\n ...state,\r\n landownerCategories: [...state.landownerCategories.filter(category => category !== action.payload.category)]\r\n };\r\n break;\r\n\r\n case types.CLEAR_LANDOWNER_CATEGORY:\r\n state = {\r\n ...state,\r\n landownerCategories: []\r\n };\r\n break;\r\n\r\n case types.ADD_INITIAL_TYPE:\r\n state = {\r\n ...state,\r\n categories: [...state.categories, action.payload.category]\r\n };\r\n break;\r\n\r\n case types.REMOVE_INITIAL_TYPE:\r\n state = {\r\n ...state,\r\n categories: [...state.categories.filter(category => category !== action.payload.category)]\r\n };\r\n break;\r\n\r\n case types.CLEAR_INITIAL_TYPE:\r\n state = {\r\n ...state,\r\n categories: []\r\n };\r\n break;\r\n\r\n\r\n case types.ADD_FIRE_CAUSE:\r\n state = {\r\n ...state,\r\n fireCauses: [...state.fireCauses, action.payload.fireCause]\r\n };\r\n break;\r\n\r\n case types.REMOVE_FIRE_CAUSE:\r\n state = {\r\n ...state,\r\n fireCauses: [...state.fireCauses.filter(cause => cause !== action.payload.fireCause)]\r\n };\r\n break;\r\n\r\n case types.CLEAR_FIRE_CAUSE:\r\n state = {\r\n ...state,\r\n fireCauses: []\r\n };\r\n break;\r\n // SET_UTC_OFFSET_FILTER,\r\n //CLEAR_UTC_OFFSET_FILTER \r\n\r\n case types.SET_UTC_OFFSET_FILTER:\r\n state = {\r\n ...state,\r\n utcOffset: action.payload.utcOffset\r\n };\r\n break;\r\n\r\n case types.CLEAR_UTC_OFFSET_FILTER:\r\n state = {\r\n ...state,\r\n utcOffset: null\r\n };\r\n break;\r\n\r\n case types.SET_FIRE_ACRE_FILTER:\r\n state = {\r\n ...state,\r\n fireAcresMax: action.payload.acres.max,\r\n fireAcresMin: action.payload.acres.min\r\n };\r\n break;\r\n\r\n case types.CLEAR_FIRE_ACRE_FILTER:\r\n state = {\r\n ...state,\r\n fireAcresMax: null,\r\n fireAcresMin: null\r\n };\r\n break;\r\n\r\n case types.SET_FIRE_DISCOVERY_DATES:\r\n state = {\r\n ...state,\r\n discoveryDateMax: action.payload.discoveryDates.max,\r\n discoveryDateMin: action.payload.discoveryDates.min\r\n };\r\n break;\r\n\r\n case types.CLEAR_FIRE_DISCOVERY_DATES:\r\n state = {\r\n ...state,\r\n discoveryDateMax: null,\r\n discoveryDateMin: null\r\n };\r\n break;\r\n\r\n case types.SET_FIRE_OUT_DATES:\r\n state = {\r\n ...state,\r\n outDateMax: action.payload.outDates.max,\r\n outDateMin: action.payload.outDates.min\r\n };\r\n break;\r\n\r\n case types.CLEAR_FIRE_OUT_DATES:\r\n state = {\r\n ...state,\r\n outDateMax: null,\r\n outDateMin: null\r\n };\r\n break;\r\n\r\n case types.SET_MODIFIED_DATES:\r\n state = {\r\n ...state,\r\n modifiedDateMax: action.payload.modifiedDates.max,\r\n modifiedDateMin: action.payload.modifiedDates.min\r\n };\r\n break;\r\n\r\n case types.CLEAR_MODIFIED_DATES:\r\n state = {\r\n ...state,\r\n modifiedDateMax: null,\r\n modifiedDateMin: null\r\n };\r\n break;\r\n\r\n /*case types.SET_PERIMETER_ACREAGE_IDS:\r\n state = {\r\n ...state,\r\n perimeterAcreageIds: action.payload.perimeterAcreageIds,\r\n shouldFilterOnPerimeterAcreageIds: true\r\n };\r\n break; */\r\n\r\n case types.SET_STRUCTURES_FILTER:\r\n state = {\r\n ...state,\r\n structuresDestroyed: action.payload.structuresDestroyed\r\n };\r\n break;\r\n case types.SET_INJURIES_FILTER:\r\n state = {\r\n ...state,\r\n injuries: action.payload.injuries\r\n };\r\n break;\r\n\r\n case types.SET_UNIQUENESS_FILTER:\r\n state = {\r\n ...state,\r\n uniqueness: action.payload.uniqueness\r\n };\r\n break;\r\n\r\n case types.SET_FATALITIES_FILTER:\r\n state = {\r\n ...state,\r\n fatalities: action.payload.fatalities\r\n };\r\n break;\r\n\r\n case types.SET_PERIMETER_MAP_METHOD_FILTER:\r\n state = {\r\n ...state,\r\n perimeterMapMethod: action.payload.perimeterMapMethod\r\n };\r\n break;\r\n\r\n case types.SET_PERIMETER_FEATURE_STATUS_FILTER:\r\n state = {\r\n ...state,\r\n perimeterFeatureStatus: action.payload.perimeterFeatureStatus\r\n };\r\n break;\r\n\r\n case types.SET_PERIMETER_FEATURE_ACCESS_FILTER:\r\n state = {\r\n ...state,\r\n perimeterFeatureAccess: action.payload.perimeterFeatureAccess\r\n };\r\n break;\r\n\r\n case types.SET_OTHER_STRUCTURES_DESTROYED_FILTER:\r\n state = {\r\n ...state,\r\n otherStructuresDestroyed: action.payload.otherStructuresDestroyed\r\n };\r\n break;\r\n\r\n case types.SET_RESIDENCES_THREATENED_FILTER:\r\n state = {\r\n ...state,\r\n residencesThreatened: action.payload.residencesThreatened\r\n };\r\n break;\r\n\r\n case types.SET_OTHER_STRUCTURES_THREATENED_FILTER:\r\n state = {\r\n ...state,\r\n otherStructuresThreatened: action.payload.otherStructuresThreatened\r\n };\r\n break;\r\n\r\n case types.SET_CERTIFIED_FILTER:\r\n state = {\r\n ...state,\r\n certified: action.payload.certified\r\n };\r\n break;\r\n case types.SET_GACC_FILTER:\r\n state = {\r\n ...state,\r\n gacc: action.payload.gacc\r\n };\r\n break;\r\n\r\n case types.SET_CAPABILITY_REQUESTS_FILTER:\r\n state = {\r\n ...state,\r\n capabilityRequests: action.payload.capabilityRequests\r\n };\r\n break;\r\n\r\n\r\n case types.SET_STATE_FILTER:\r\n state = {\r\n ...state,\r\n state: action.payload.state,\r\n county: null\r\n };\r\n break;\r\n\r\n case types.SET_COUNTY_FILTER:\r\n state = {\r\n ...state,\r\n county: action.payload.county\r\n };\r\n break;\r\n\r\n case types.SET_MODIFIED_BY_SYSTEM_FILTER:\r\n state = {\r\n ...state,\r\n modifiedBySystem: action.payload.modifiedBySystem\r\n };\r\n break;\r\n\r\n case types.SET_CREATED_BY_SYSTEM_FILTER:\r\n state = {\r\n ...state,\r\n createdBySystem: action.payload.createdBySystem\r\n };\r\n break;\r\n\r\n case types.SET_TYPE_CATEGORY_FILTER:\r\n state = {\r\n ...state,\r\n category: action.payload.category\r\n };\r\n break;\r\n\r\n case types.SET_REPORT_SEARCH_TERMS:\r\n state = {\r\n ...state,\r\n reportSearchTerms: action.payload.reportSearchTerms\r\n };\r\n break;\r\n\r\n case types.SET_INCIDENT_JURISDICTIONAL_AGENCY:\r\n state = {\r\n ...state,\r\n incidentJurisdictionalAgency: action.payload.incidentJurisdictionalAgency\r\n };\r\n break;\r\n\r\n case types.SET_DISPATCH_CENTER_ID:\r\n state = {\r\n ...state,\r\n dispatchCenterID: action.payload.dispatchCenterID\r\n };\r\n break;\r\n\r\n case types.SET_POO_PROTECTING_UNIT:\r\n state = {\r\n ...state,\r\n pooProtectingUnit: action.payload.pooProtectingUnit\r\n };\r\n break;\r\n\r\n case types.SET_POO_PROTECTING_AGENCY:\r\n state = {\r\n ...state,\r\n pooProtectingAgency: action.payload.pooProtectingAgency\r\n };\r\n break;\r\n\r\n case types.ADD_UNIQUE_FIRE_ID:\r\n state = {\r\n ...state,\r\n uniqueFireIds: [...state.uniqueFireIds, action.payload.uniqueFireIdentifier]\r\n };\r\n break;\r\n\r\n case types.REMOVE_UNIQUE_FIRE_ID:\r\n state = {\r\n ...state,\r\n uniqueFireIds: [...state.uniqueFireIds.filter(id => id !== action.payload.uniqueFireIdentifier)]\r\n };\r\n break;\r\n\r\n case types.CLEAR_UNIQUE_FIRE_ID:\r\n state = {\r\n ...state,\r\n uniqueFireIds: []\r\n };\r\n break;\r\n\r\n case types.SET_JURISDICTIONAL_UNIT:\r\n state = {\r\n ...state,\r\n jurisdictionalUnit: action.payload.jurisdictionalUnit\r\n };\r\n break;\r\n\r\n /* case types.SET_JURISDICTIONAL_UNIT_PARENT_UNIT:\r\n state = {\r\n ...state,\r\n jurisdictionalUnitParentUnit: action.payload.jurisdictionalUnitParentUnit\r\n };\r\n break; */\r\n case types.SET_ACTIVE_DRAW_TOOL:\r\n state = {\r\n ...state,\r\n activeDrawTool: action.payload.activeDrawTool\r\n };\r\n break;\r\n\r\n default:\r\n break;\r\n\r\n }\r\n\r\n return state;\r\n\r\n}\r\n\r\nexport default filterReducer;\r\n","import types from './types';\r\n\r\nconst manualRehydrateFilter = (filter) => ({\r\n type: types.MANUAL_REHYDRATE_FILTER,\r\n payload: {\r\n filter\r\n }\r\n});\r\n\r\nconst setActiveDrawTool = (activeDrawTool) => ({\r\n type: types.SET_ACTIVE_DRAW_TOOL,\r\n payload: {\r\n activeDrawTool\r\n }\r\n});\r\n\r\n\r\nconst setBasicFilterActive = (isBasicFilterActive) => ({\r\n type: types.SET_BASIC_FILTER_ACTIVE,\r\n payload: {\r\n isBasicFilterActive\r\n }\r\n});\r\nconst setFilterGeometry = (geometry) => ({\r\n type: types.SET_FILTER_GEOMETRY,\r\n payload: {\r\n geometry\r\n }\r\n});\r\n\r\nconst setSpatialFilterID = (spatialFilterID) => ({\r\n type: types.SET_SPATIAL_FILTER_ID,\r\n payload: {\r\n spatialFilterID\r\n }\r\n});\r\nconst setHasSpatialFilter = (hasSpatialFilter) => ({\r\n type: types.SET_HAS_SPATIAL_FILTER,\r\n payload: {\r\n hasSpatialFilter\r\n }\r\n});\r\nconst setUseExtentFilter = (useExtent) => ({\r\n type: types.SET_USE_EXTENT_FILTER,\r\n payload: {\r\n useExtent\r\n }\r\n});\r\n\r\nconst setFilterLoading = (loading) => ({\r\n type: types.SET_FILTER_LOADING,\r\n payload: {\r\n loading\r\n }\r\n});\r\n\r\nconst setFilterVisible = (visible) => ({\r\n type: types.SET_FILTER_VISIBLE,\r\n payload: {\r\n visible\r\n }\r\n});\r\n\r\nconst resetFilters = () => ({\r\n type: types.RESET_FILTERS,\r\n payload: {}\r\n});\r\n\r\n\r\nconst addFireCause = (fireCause) => ({\r\n type: types.ADD_FIRE_CAUSE,\r\n payload: {\r\n fireCause\r\n }\r\n});\r\n\r\nconst removeFireCause = (fireCause) => ({\r\n type: types.REMOVE_FIRE_CAUSE,\r\n payload: {\r\n fireCause\r\n }\r\n});\r\n\r\nconst clearFireCause = () => ({\r\n type: types.CLEAR_FIRE_CAUSE,\r\n payload: {}\r\n});\r\n\r\nconst addInitialStrategy = (strategy) => ({\r\n type: types.ADD_INITIAL_STRATEGY,\r\n payload: {\r\n strategy\r\n }\r\n});\r\n\r\n//SET_PERIMETER_ACREAGE_IDS\r\n/*const setPerimeterAcreageIds = (perimeterAcreageIds) => ({ \r\n type: types.SET_PERIMETER_ACREAGE_IDS,\r\n payload: {\r\n perimeterAcreageIds\r\n }\r\n}); */\r\n\r\nconst clearPerimeterAcreage = () => ({\r\n type: types.CLEAR_PERIMETER_ACREAGE,\r\n payload: {}\r\n});\r\n\r\nconst setPerimeterAcreageLandowner = (perimeterAcreageLandowner) => ({\r\n type: types.SET_PERIMETER_ACREAGE_LANDOWNER,\r\n payload: {\r\n perimeterAcreageLandowner\r\n }\r\n});\r\n\r\nconst setPerimeterAcreageOperator = (perimeterAcreageOperator) => ({\r\n type: types.SET_PERIMETER_ACREAGE_OPERATOR,\r\n payload: {\r\n perimeterAcreageOperator\r\n }\r\n});\r\n\r\nconst setPerimeterAcreageNumber = (perimeterAcreageNumber) => ({\r\n type: types.SET_PERIMETER_ACREAGE_NUMBER,\r\n payload: {\r\n perimeterAcreageNumber\r\n }\r\n});\r\n\r\nconst setNarrativeFilter = (narrativeFilter, narrativeFilterState) => ({\r\n type: types.SET_NARRATIVE_FILTER,\r\n payload: {\r\n narrativeFilter,\r\n narrativeFilterState\r\n }\r\n});\r\n\r\nconst addDataSource = (source) => ({\r\n type: types.ADD_DATA_SOURCE,\r\n payload: {\r\n source\r\n }\r\n});\r\n//\r\n\r\nconst setMultiRoot = (multiRootOnly) => ({\r\n type: types.SET_MULTI_ROOT,\r\n payload: {\r\n multiRootOnly\r\n }\r\n});\r\n\r\nconst removeDataSource = (source) => ({\r\n type: types.REMOVE_DATA_SOURCE,\r\n payload: {\r\n source\r\n }\r\n});\r\n\r\nconst clearDataSources = () => ({\r\n type: types.CLEAR_DATA_SOURCE,\r\n payload: {}\r\n});\r\n\r\nconst removeInitialStrategy = (strategy) => ({\r\n type: types.REMOVE_INITIAL_STRATEGY,\r\n payload: {\r\n strategy\r\n }\r\n});\r\n\r\nconst clearInitialStrategy = () => ({\r\n type: types.CLEAR_INITIAL_STRATEGY,\r\n payload: {}\r\n});\r\n\r\nconst removeIrwinRelationship = (irwinRelationship) => ({\r\n type: types.REMOVE_IRWIN_RELATIONSHIP,\r\n payload: {\r\n irwinRelationship\r\n }\r\n});\r\n\r\nconst clearIrwinRelationships = () => ({\r\n type: types.CLEAR_IRWIN_RELATIONSHIPS,\r\n payload: {}\r\n});\r\n\r\nconst addIrwinRelationship = (irwinRelationship) => ({\r\n type: types.ADD_IRWIN_RELATIONSHIP,\r\n payload: {\r\n irwinRelationship\r\n }\r\n});\r\n\r\nconst addLandownerCategory = (category) => ({\r\n type: types.ADD_LANDOWNER_CATEGORY,\r\n payload: {\r\n category\r\n }\r\n});\r\n\r\nconst removeLandownerCategory = (category) => ({\r\n type: types.REMOVE_LANDOWNER_CATEGORY,\r\n payload: {\r\n category\r\n }\r\n});\r\n\r\nconst clearLandownerCategory = () => ({\r\n type: types.CLEAR_LANDOWNER_CATEGORY,\r\n payload: {}\r\n});\r\n\r\n\r\nconst addInitialType = (category) => ({\r\n type: types.ADD_INITIAL_TYPE,\r\n payload: {\r\n category\r\n }\r\n});\r\n\r\nconst removeInitialType = (category) => ({\r\n type: types.REMOVE_INITIAL_TYPE,\r\n payload: {\r\n category\r\n }\r\n});\r\n\r\nconst clearInitialType = () => ({\r\n type: types.CLEAR_INITIAL_TYPE,\r\n payload: {}\r\n});\r\n\r\nconst setFireAcreage = (acres) => ({\r\n type: types.SET_FIRE_ACRE_FILTER,\r\n payload: {\r\n acres\r\n }\r\n});\r\n\r\nconst clearFireAcreage = () => ({\r\n type: types.CLEAR_FIRE_ACRE_FILTER,\r\n payload: {}\r\n});\r\n\r\nconst setUtcOffsetFilter = (utcOffset) => ({\r\n type: types.SET_UTC_OFFSET_FILTER,\r\n payload: {\r\n utcOffset\r\n }\r\n});\r\n\r\nconst clearUtcOffsetFilter = () => ({\r\n type: types.CLEAR_UTC_OFFSET_FILTER,\r\n payload: {}\r\n});\r\n\r\nconst setFireDiscoveryDates = (discoveryDates) => ({\r\n type: types.SET_FIRE_DISCOVERY_DATES,\r\n payload: {\r\n discoveryDates\r\n }\r\n});\r\n\r\nconst clearFireDiscoveryDates = () => ({\r\n type: types.CLEAR_FIRE_DISCOVERY_DATES,\r\n payload: {}\r\n});\r\n\r\nconst setFireOutDates = (outDates) => ({\r\n type: types.SET_FIRE_OUT_DATES,\r\n payload: {\r\n outDates\r\n }\r\n});\r\n\r\nconst clearFireOutDates = () => ({\r\n type: types.CLEAR_FIRE_OUT_DATES,\r\n payload: {}\r\n});\r\n\r\nconst setModifiedDates = (modifiedDates) => ({\r\n type: types.SET_MODIFIED_DATES,\r\n payload: {\r\n modifiedDates\r\n }\r\n});\r\n\r\nconst clearModifiedDates = () => ({\r\n type: types.CLEAR_MODIFIED_DATES,\r\n payload: {}\r\n});\r\n\r\nconst setStructuresFilter = (structuresDestroyed) => ({\r\n type: types.SET_STRUCTURES_FILTER,\r\n payload: {\r\n structuresDestroyed\r\n }\r\n});\r\n\r\n\r\nconst setPerimeterMapMethod = (perimeterMapMethod) => ({\r\n type: types.SET_PERIMETER_MAP_METHOD_FILTER,\r\n payload: {\r\n perimeterMapMethod\r\n }\r\n});\r\n\r\nconst setPerimeterFeatureStatus = (perimeterFeatureStatus) => ({\r\n type: types.SET_PERIMETER_FEATURE_STATUS_FILTER,\r\n payload: {\r\n perimeterFeatureStatus\r\n }\r\n});\r\n\r\nconst setPerimeterFeatureAccess = (perimeterFeatureAccess) => ({\r\n type: types.SET_PERIMETER_FEATURE_ACCESS_FILTER,\r\n payload: {\r\n perimeterFeatureAccess\r\n }\r\n});\r\n\r\nconst setInjuriesFilter = (injuries) => ({\r\n type: types.SET_INJURIES_FILTER,\r\n payload: {\r\n injuries\r\n }\r\n});\r\n\r\nconst setUniquenessFilter = (uniqueness) => ({\r\n type: types.SET_UNIQUENESS_FILTER,\r\n payload: {\r\n uniqueness\r\n }\r\n});\r\n\r\nconst setFatalitiesFilter = (fatalities) => ({\r\n type: types.SET_FATALITIES_FILTER,\r\n payload: {\r\n fatalities\r\n }\r\n});\r\n\r\nconst setOtherStructuresDestroyedFilter = (otherStructuresDestroyed) => ({\r\n type: types.SET_OTHER_STRUCTURES_DESTROYED_FILTER,\r\n payload: {\r\n otherStructuresDestroyed\r\n }\r\n});\r\n\r\nconst setResidencesThreatenedFilter = (residencesThreatened) => ({\r\n type: types.SET_RESIDENCES_THREATENED_FILTER,\r\n payload: {\r\n residencesThreatened\r\n }\r\n});\r\n\r\nconst setOtherStructuresThreatenedFilter = (otherStructuresThreatened) => ({\r\n type: types.SET_OTHER_STRUCTURES_THREATENED_FILTER,\r\n payload: {\r\n otherStructuresThreatened\r\n }\r\n});\r\n\r\n\r\nconst setModifiedBySystemFilter = (modifiedBySystem) => ({\r\n type: types.SET_MODIFIED_BY_SYSTEM_FILTER,\r\n payload: {\r\n modifiedBySystem\r\n }\r\n});\r\n\r\nconst setCapabilityRequestsFilter = (capabilityRequests) => ({\r\n type: types.SET_CAPABILITY_REQUESTS_FILTER,\r\n payload: {\r\n capabilityRequests\r\n }\r\n});\r\n\r\nconst setCreatedBySystemFilter = (createdBySystem) => ({\r\n type: types.SET_CREATED_BY_SYSTEM_FILTER,\r\n payload: {\r\n createdBySystem\r\n }\r\n});\r\n\r\nconst setCertifiedFilter = (certified) => ({\r\n type: types.SET_CERTIFIED_FILTER,\r\n payload: {\r\n certified\r\n }\r\n});\r\n\r\nconst setGaccFilter = (gacc) => ({\r\n type: types.SET_GACC_FILTER,\r\n payload: {\r\n gacc\r\n }\r\n});\r\n\r\nconst setStateFilter = (state) => ({\r\n type: types.SET_STATE_FILTER,\r\n payload: {\r\n state\r\n }\r\n});\r\n\r\nconst setCountyFilter = (county) => ({\r\n type: types.SET_COUNTY_FILTER,\r\n payload: {\r\n county\r\n }\r\n});\r\n\r\nconst setReportSearchTerms = (reportSearchTerms) => ({\r\n type: types.SET_REPORT_SEARCH_TERMS,\r\n payload: {\r\n reportSearchTerms\r\n }\r\n});\r\n\r\nconst setPOOIncidentJurisdictionalAgency = (incidentJurisdictionalAgency) => ({\r\n type: types.SET_INCIDENT_JURISDICTIONAL_AGENCY,\r\n payload: {\r\n incidentJurisdictionalAgency\r\n }\r\n});\r\n\r\nconst setDispatchCenterID = (dispatchCenterID) => ({\r\n type: types.SET_DISPATCH_CENTER_ID,\r\n payload: {\r\n dispatchCenterID\r\n }\r\n});\r\n\r\nconst setPOOProtectingUnit = (pooProtectingUnit) => ({\r\n type: types.SET_POO_PROTECTING_UNIT,\r\n payload: {\r\n pooProtectingUnit\r\n }\r\n});\r\n\r\nconst setPOOProtectingAgency = (pooProtectingAgency ) => ({\r\n type: types.SET_POO_PROTECTING_AGENCY,\r\n payload: {\r\n pooProtectingAgency\r\n }\r\n});\r\n\r\nconst setPOOJurisdictionalUnit = (jurisdictionalUnit) => ({\r\n type: types.SET_JURISDICTIONAL_UNIT,\r\n payload: {\r\n jurisdictionalUnit\r\n }\r\n});\r\n\r\n/*const setPOOJurisdictionalUnitParentUnit = (jurisdictionalUnitParentUnit) => ({\r\n type: types.SET_JURISDICTIONAL_UNIT_PARENT_UNIT,\r\n payload: {\r\n jurisdictionalUnitParentUnit\r\n }\r\n});*/\r\n\r\nconst addUniqueFireIdentifier = (uniqueFireIdentifier) => ({\r\n type: types.ADD_UNIQUE_FIRE_ID,\r\n payload: {\r\n uniqueFireIdentifier\r\n }\r\n});\r\n\r\nconst removeUniqueFireIdentifier = (uniqueFireIdentifier) => ({\r\n type: types.REMOVE_UNIQUE_FIRE_ID,\r\n payload: {\r\n uniqueFireIdentifier\r\n }\r\n});\r\n\r\nconst clearUniqueFireIdentifiers = () => ({\r\n type: types.CLEAR_UNIQUE_FIRE_ID,\r\n payload: {}\r\n});\r\n\r\n/* eslint import/no-anonymous-default-export: [2, {\"allowObject\": true}] */\r\nexport default {\r\n manualRehydrateFilter,\r\n setActiveDrawTool,\r\n setFilterGeometry,\r\n setUseExtentFilter,\r\n setFilterLoading,\r\n setFilterVisible,\r\n addFireCause,\r\n removeFireCause,\r\n clearFireCause,\r\n addInitialStrategy,\r\n removeInitialStrategy,\r\n clearInitialStrategy,\r\n addInitialType,\r\n removeInitialType,\r\n clearInitialType,\r\n addLandownerCategory,\r\n removeLandownerCategory,\r\n clearLandownerCategory,\r\n setFireAcreage,\r\n clearFireAcreage,\r\n setFireDiscoveryDates,\r\n clearFireDiscoveryDates,\r\n setFireOutDates,\r\n clearFireOutDates,\r\n setModifiedDates,\r\n clearModifiedDates,\r\n setStructuresFilter,\r\n setInjuriesFilter,\r\n setUniquenessFilter,\r\n setFatalitiesFilter,\r\n setOtherStructuresDestroyedFilter,\r\n setResidencesThreatenedFilter,\r\n setOtherStructuresThreatenedFilter,\r\n setCertifiedFilter,\r\n setGaccFilter,\r\n setStateFilter,\r\n setCountyFilter,\r\n setModifiedBySystemFilter,\r\n setCapabilityRequestsFilter,\r\n setCreatedBySystemFilter,\r\n setReportSearchTerms,\r\n setPOOIncidentJurisdictionalAgency,\r\n setDispatchCenterID,\r\n setPOOProtectingUnit,\r\n setPOOProtectingAgency,\r\n setPOOJurisdictionalUnit,\r\n addUniqueFireIdentifier,\r\n removeUniqueFireIdentifier,\r\n setBasicFilterActive,\r\n clearUniqueFireIdentifiers,\r\n resetFilters,\r\n setPerimeterMapMethod,\r\n setPerimeterFeatureAccess,\r\n setPerimeterFeatureStatus,\r\n setNarrativeFilter,\r\n addDataSource,\r\n removeDataSource,\r\n clearDataSources,\r\n setMultiRoot,\r\n setUtcOffsetFilter,\r\n clearUtcOffsetFilter,\r\n clearPerimeterAcreage,\r\n setPerimeterAcreageLandowner,\r\n setPerimeterAcreageOperator,\r\n setPerimeterAcreageNumber,\r\n setHasSpatialFilter,\r\n setSpatialFilterID,\r\n clearIrwinRelationships,\r\n addIrwinRelationship,\r\n removeIrwinRelationship\r\n};\r\n","import actions from \"./actions\";\r\n\r\nconst resetFilters = actions.resetFilters;\r\nconst manualRehydrateFilter = actions.manualRehydrateFilter;\r\nconst setActiveDrawTool = actions.setActiveDrawTool;\r\nconst setFilterGeometry = actions.setFilterGeometry;\r\nconst setUseExtentFilter = actions.setUseExtentFilter;\r\nconst setFilterLoading = actions.setFilterLoading;\r\nconst setFilterVisible = actions.setFilterVisible;\r\nconst setBasicFilterActive = actions.setBasicFilterActive;\r\nconst addFireCause = actions.addFireCause;\r\nconst removeFireCause = actions.removeFireCause;\r\nconst clearFireCause = actions.clearFireCause;\r\nconst addInitialStrategy = actions.addInitialStrategy;\r\nconst setNarrativeFilter = actions.setNarrativeFilter;\r\nconst removeInitialStrategy = actions.removeInitialStrategy;\r\nconst clearInitialStrategy = actions.clearInitialStrategy;\r\nconst clearIrwinRelationships = actions.clearIrwinRelationships;\r\nconst removeIrwinRelationship = actions.removeIrwinRelationship;\r\nconst addIrwinRelationship = actions.addIrwinRelationship;\r\nconst addDataSource = actions.addDataSource;\r\nconst removeDataSource = actions.removeDataSource;\r\nconst clearDataSources = actions.clearDataSources;\r\nconst addInitialType = actions.addInitialType;\r\nconst removeInitialType = actions.removeInitialType;\r\nconst clearInitialType = actions.clearInitialType;\r\nconst addLandownerCategory = actions.addLandownerCategory;\r\nconst removeLandownerCategory = actions.removeLandownerCategory;\r\nconst clearLandownerCategory = actions.clearLandownerCategory;\r\nconst setFireAcreage = actions.setFireAcreage;\r\nconst clearFireAcreage = actions.clearFireAcreage;\r\nconst setFireDiscoveryDates = actions.setFireDiscoveryDates;\r\nconst clearFireDiscoveryDates = actions.clearFireDiscoveryDates;\r\nconst setFireOutDates = actions.setFireOutDates;\r\nconst clearFireOutDates = actions.clearFireOutDates;\r\nconst setModifiedDates = actions.setModifiedDates;\r\nconst clearModifiedDates = actions.clearModifiedDates;\r\nconst setStructuresFilter = actions.setStructuresFilter;\r\nconst setInjuriesFilter = actions.setInjuriesFilter;\r\nconst setUniquenessFilter = actions.setUniquenessFilter;\r\nconst setFatalitiesFilter = actions.setFatalitiesFilter;\r\nconst setOtherStructuresDestroyedFilter = actions.setOtherStructuresDestroyedFilter;\r\nconst setResidencesThreatenedFilter = actions.setResidencesThreatenedFilter;\r\nconst setOtherStructuresThreatenedFilter = actions.setOtherStructuresThreatenedFilter;\r\nconst setCertifiedFilter = actions.setCertifiedFilter;\r\nconst setGaccFilter = actions.setGaccFilter;\r\nconst setStateFilter = actions.setStateFilter;\r\nconst setCountyFilter = actions.setCountyFilter;\r\nconst setModifiedBySystemFilter = actions.setModifiedBySystemFilter;\r\nconst setCapabilityRequestsFilter = actions.setCapabilityRequestsFilter;\r\nconst setCreatedBySystemFilter = actions.setCreatedBySystemFilter;\r\nconst setReportSearchTerms = actions.setReportSearchTerms;\r\nconst setPOOIncidentJurisdictionalAgency = actions.setPOOIncidentJurisdictionalAgency;\r\nconst setDispatchCenterID = actions.setDispatchCenterID;\r\nconst setPOOProtectingUnit = actions.setPOOProtectingUnit;\r\nconst setPOOProtectingAgency = actions.setPOOProtectingAgency;\r\nconst setPOOJurisdictionalUnit = actions.setPOOJurisdictionalUnit;\r\nconst addUniqueFireIdentifier = actions.addUniqueFireIdentifier;\r\nconst removeUniqueFireIdentifier = actions.removeUniqueFireIdentifier;\r\nconst clearUniqueFireIdentifiers = actions.clearUniqueFireIdentifiers;\r\nconst setPerimeterMapMethod = actions.setPerimeterMapMethod;\r\nconst setPerimeterFeatureStatus = actions.setPerimeterFeatureStatus;\r\nconst setPerimeterFeatureAccess = actions.setPerimeterFeatureAccess;\r\nconst setMultiRoot = actions.setMultiRoot;\r\nconst setUtcOffsetFilter = actions.setUtcOffsetFilter;\r\nconst clearUtcOffsetFilter = actions.clearUtcOffsetFilter;\r\nconst clearPerimeterAcreage = actions.clearPerimeterAcreage;\r\nconst setPerimeterAcreageOperator = actions.setPerimeterAcreageOperator;\r\nconst setPerimeterAcreageLandowner = actions.setPerimeterAcreageLandowner;\r\nconst setPerimeterAcreageNumber = actions.setPerimeterAcreageNumber;\r\nconst setHasSpatialFilter = actions.setHasSpatialFilter;\r\nconst setSpatialFilterID = actions.setSpatialFilterID;\r\n//const setPerimeterAcreageIds = actions.setPerimeterAcreageIds;\r\n\r\n/* eslint import/no-anonymous-default-export: [2, {\"allowObject\": true}] */\r\nexport default {\r\n manualRehydrateFilter,\r\n setActiveDrawTool,\r\n setFilterGeometry,\r\n setUseExtentFilter,\r\n setFilterLoading,\r\n setFilterVisible,\r\n addFireCause,\r\n removeFireCause,\r\n clearFireCause,\r\n addInitialStrategy,\r\n setNarrativeFilter,\r\n removeInitialStrategy,\r\n clearInitialStrategy,\r\n clearIrwinRelationships,\r\n addIrwinRelationship,\r\n removeIrwinRelationship,\r\n addDataSource,\r\n removeDataSource,\r\n clearDataSources,\r\n addInitialType,\r\n removeInitialType,\r\n setBasicFilterActive,\r\n clearInitialType,\r\n addLandownerCategory,\r\n removeLandownerCategory,\r\n clearLandownerCategory,\r\n setPerimeterMapMethod,\r\n setPerimeterFeatureStatus,\r\n setPerimeterFeatureAccess,\r\n setFireAcreage,\r\n clearFireAcreage,\r\n setFireDiscoveryDates,\r\n clearFireDiscoveryDates,\r\n setFireOutDates,\r\n clearFireOutDates,\r\n setModifiedDates,\r\n clearModifiedDates,\r\n setStructuresFilter,\r\n setInjuriesFilter,\r\n setUniquenessFilter,\r\n setFatalitiesFilter,\r\n setOtherStructuresDestroyedFilter,\r\n setResidencesThreatenedFilter,\r\n setOtherStructuresThreatenedFilter,\r\n setCertifiedFilter,\r\n setGaccFilter,\r\n setStateFilter,\r\n setCountyFilter,\r\n setModifiedBySystemFilter,\r\n setCapabilityRequestsFilter,\r\n setCreatedBySystemFilter,\r\n setReportSearchTerms,\r\n setPOOIncidentJurisdictionalAgency,\r\n setDispatchCenterID,\r\n setPOOProtectingUnit,\r\n setPOOProtectingAgency,\r\n setPOOJurisdictionalUnit,\r\n addUniqueFireIdentifier,\r\n removeUniqueFireIdentifier,\r\n clearUniqueFireIdentifiers,\r\n resetFilters,\r\n setMultiRoot,\r\n setUtcOffsetFilter,\r\n clearUtcOffsetFilter,\r\n setPerimeterAcreageNumber,\r\n setPerimeterAcreageOperator,\r\n setPerimeterAcreageLandowner,\r\n clearPerimeterAcreage,\r\n setHasSpatialFilter,\r\n setSpatialFilterID\r\n //setPerimeterAcreageIds\r\n};\r\n","import reducer from './reducers';\r\n\r\nexport { default as filterOperations } from './operations';\r\nexport { default as filterTypes } from './types';\r\n\r\nexport default reducer;\r\n","const SET_ACTIVE_FILTER = 'SET_FILTER_ACTIVE';\r\nconst ADD_NEW_FILTER = 'ADD_NEW_FILTER';\r\nconst SAVE_FILTER_EDIT = 'SAVE_FILTER_EDIT';\r\nconst REMOVE_FILTER = 'REMOVE_FILTER';\r\nconst NUKE_FILTERS = 'NUKE_FILTERS';\r\n\r\n/* eslint import/no-anonymous-default-export: [2, {\"allowObject\": true}] */\r\nexport default {\r\n SET_ACTIVE_FILTER,\r\n ADD_NEW_FILTER,\r\n SAVE_FILTER_EDIT,\r\n REMOVE_FILTER,\r\n NUKE_FILTERS\r\n};\r\n","import types from \"./types\";\r\n\r\nconst initialState = {\r\n activeFilter: null,\r\n activeFilterState: null,\r\n customFilters: []\r\n}\r\n\r\nconst incidentReducer = (state = initialState, action) => {\r\n switch (action.type)\r\n {\r\n case types.SET_ACTIVE_FILTER:\r\n return {\r\n ...state,\r\n activeFilter: action.payload.activeFilter,\r\n activeFilterState: action.payload.activeFilterState\r\n }\r\n case types.ADD_NEW_FILTER:\r\n return {\r\n ...state,\r\n customFilters: [...state.customFilters, action.payload.newFilter]\r\n }\r\n case types.SAVE_FILTER_EDIT:\r\n return {\r\n ...state,\r\n customFilters: [...state.customFilters.filter(customFilter => customFilter.filterGuid !== action.payload.filter.filterGuid), action.payload.filter]\r\n }\r\n\r\n case types.REMOVE_FILTER:\r\n return {\r\n ...state,\r\n customFilters: [...state.customFilters.filter(customFilter => customFilter !== action.payload.filterToRemove)]\r\n }\r\n case types.NUKE_FILTERS:\r\n return {\r\n ...state,\r\n customFilters: []\r\n }\r\n\r\n\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default incidentReducer;\r\n","import types from './types';\r\n\r\nconst addNewFilter = (newFilter) => ({\r\n type: types.ADD_NEW_FILTER,\r\n payload: {\r\n newFilter\r\n }\r\n});\r\n\r\nconst saveFilterEdit = (filter) => ({\r\n type: types.SAVE_FILTER_EDIT,\r\n payload: {\r\n filter\r\n }\r\n});\r\n\r\nconst setActiveFilter = (filter) => ({\r\n type: types.SET_ACTIVE_FILTER,\r\n payload: {\r\n filter\r\n }\r\n});\r\n\r\nconst removeFilter = (filterToRemove) => ({\r\n type: types.REMOVE_FILTER,\r\n payload: {\r\n filterToRemove\r\n }\r\n});\r\n\r\nconst nukeFilters = () => ({\r\n type: types.NUKE_FILTERS,\r\n payload: {\r\n }\r\n});\r\n\r\n/* eslint import/no-anonymous-default-export: [2, {\"allowObject\": true}] */\r\nexport default {\r\n addNewFilter,\r\n saveFilterEdit,\r\n removeFilter,\r\n nukeFilters,\r\n setActiveFilter\r\n};\r\n","import actions from \"./actions\";\r\n\r\nconst setActiveFilter = actions.setActiveFilter;\r\nconst addNewFilter = actions.addNewFilter;\r\nconst saveFilterEdit = actions.saveFilterEdit;\r\nconst nukeFilters = actions.nukeFilters;\r\nconst removeFilter = actions.removeFilter;\r\n\r\n/* eslint import/no-anonymous-default-export: [2, {\"allowObject\": true}] */\r\nexport default {\r\n setActiveFilter,\r\n addNewFilter,\r\n saveFilterEdit,\r\n removeFilter,\r\n nukeFilters\r\n};\r\n","import reducer from './reducers';\r\n\r\nexport { default as customFilterOperations } from './operations';\r\nexport { default as customFilterTypes } from './types';\r\n\r\nexport default reducer;\r\n","const SET_INCIDENTS = 'SET_INCIDENTS';\r\nconst SET_INCIDENTS_LOADED = 'SET_INCIDENTS_LOADED';\r\nconst SET_VISIBLE_INCIDENTS = 'SET_VISIBLE_INCIDENTS';\r\nconst ADD_SELECTED_INCIDENT = 'ADD_SELECTED_INCIDENT';\r\nconst REMOVE_SELECTED_INCIDENT = 'REMOVE_SELECTED_INCIDENT';\r\nconst CLEAR_SELECTED_INCIDENTS = 'CLEAR_SELECTED_INCIDENTS';\r\nconst SET_INCIDENT_LIST_VISIBLE = 'SET_INCIDENT_LIST_VISIBLE';\r\nconst SET_QUERIED_INCIDENTS_TOTAL = 'SET_QUERIED_INCIDENTS_TOTAL';\r\nconst SET_DISPLAYED_INCIDENTS_COUNT = 'SET_DISPLAYED_INCIDENTS_COUNT';\r\n\r\n/* eslint import/no-anonymous-default-export: [2, {\"allowObject\": true}] */\r\nexport default {\r\n SET_INCIDENTS,\r\n SET_INCIDENTS_LOADED,\r\n SET_VISIBLE_INCIDENTS,\r\n ADD_SELECTED_INCIDENT,\r\n REMOVE_SELECTED_INCIDENT,\r\n CLEAR_SELECTED_INCIDENTS,\r\n SET_INCIDENT_LIST_VISIBLE,\r\n SET_QUERIED_INCIDENTS_TOTAL,\r\n SET_DISPLAYED_INCIDENTS_COUNT\r\n};\r\n","import types from \"./types\";\r\n\r\nconst initialState = {\r\n incidents: [],\r\n visibleIncidents: [],\r\n selectedIncidents: [],\r\n loaded: false,\r\n visible: true,\r\n queriedIncidentsTotal: 0,\r\n displayedIncidentsCount: 0\r\n}\r\n\r\nconst incidentsReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case types.SET_INCIDENTS:\r\n return {\r\n ...state,\r\n incidents: (action.payload.incidents) ? action.payload.incidents : [],\r\n loaded: true\r\n }\r\n case types.SET_INCIDENTS_LOADED:\r\n return {\r\n ...state,\r\n loaded: action.payload.loaded\r\n }\r\n case types.SET_QUERIED_INCIDENTS_TOTAL:\r\n return {\r\n ...state,\r\n queriedIncidentsTotal: action.payload.queriedIncidentsTotal\r\n }\r\n case types.SET_DISPLAYED_INCIDENTS_COUNT:\r\n return {\r\n ...state,\r\n displayedIncidentsCount: action.payload.displayedIncidentsCount\r\n }\r\n\r\n case types.SET_INCIDENT_LIST_VISIBLE:\r\n return {\r\n ...state,\r\n visible: action.payload.visible\r\n };\r\n case types.SET_VISIBLE_INCIDENTS:\r\n return {\r\n ...state,\r\n visibleIncidents: (action.payload.incidents) ? action.payload.incidents : [],\r\n loaded: true\r\n }\r\n case types.ADD_SELECTED_INCIDENT:\r\n return {\r\n ...state,\r\n selectedIncidents: [...state.selectedIncidents, action.payload.incident]\r\n }\r\n case types.REMOVE_SELECTED_INCIDENT:\r\n return {\r\n ...state,\r\n selectedIncidents: [...state.selectedIncidents.filter(incident => incident.attributes.UniqueFireIdentifier !== action.payload.incident.attributes.UniqueFireIdentifier)]\r\n }\r\n case types.CLEAR_SELECTED_INCIDENTS:\r\n return {\r\n ...state,\r\n selectedIncidents: []\r\n }\r\n\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default incidentsReducer;\r\n","import actions from \"./actions\";\r\n\r\nconst setIncidents = actions.setIncidents;\r\nconst setIncidentListVisible = actions.setIncidentListVisible;\r\nconst setIncidentsLoaded = actions.setIncidentsLoaded;\r\nconst setVisibleIncidents = actions.setVisibleIncidents;\r\nconst addSelectedIncident = actions.addSelectedIncident;\r\nconst removeSelectedIncident = actions.removeSelectedIncident;\r\nconst clearSelectedIncidents = actions.clearSelectedIncidents;\r\nconst setQueriedIncidentsTotal = actions.setQueriedIncidentsTotal;\r\nconst setDisplayedIncidentsCount = actions.setDisplayedIncidentsCount;\r\n\r\n/* eslint import/no-anonymous-default-export: [2, {\"allowObject\": true}] */\r\nexport default {\r\n setIncidents,\r\n setIncidentsLoaded,\r\n setIncidentListVisible,\r\n setVisibleIncidents,\r\n addSelectedIncident,\r\n removeSelectedIncident,\r\n clearSelectedIncidents,\r\n setQueriedIncidentsTotal,\r\n setDisplayedIncidentsCount\r\n};\r\n","import types from './types';\r\n\r\nconst setIncidents = (incidents) => ({\r\n type: types.SET_INCIDENTS,\r\n payload: {\r\n incidents\r\n }\r\n});\r\n\r\nconst setIncidentsLoaded = (loaded) => ({\r\n type: types.SET_INCIDENTS_LOADED,\r\n payload: {\r\n loaded\r\n }\r\n});\r\n\r\nconst setVisibleIncidents = (incidents) => ({\r\n type: types.SET_VISIBLE_INCIDENTS,\r\n payload: {\r\n incidents\r\n }\r\n});\r\n\r\nconst addSelectedIncident = (incident) => ({\r\n type: types.ADD_SELECTED_INCIDENT,\r\n payload: {\r\n incident\r\n }\r\n});\r\n\r\nconst removeSelectedIncident = (incident) => ({\r\n type: types.REMOVE_SELECTED_INCIDENT,\r\n payload: {\r\n incident\r\n }\r\n});\r\n\r\nconst clearSelectedIncidents = () => ({\r\n type: types.CLEAR_SELECTED_INCIDENTS,\r\n payload: {}\r\n});\r\n\r\nconst setIncidentListVisible = (visible) => ({\r\ntype: types.SET_INCIDENT_LIST_VISIBLE,\r\npayload: {\r\n visible\r\n}\r\n});\r\n\r\nconst setQueriedIncidentsTotal = (queriedIncidentsTotal) => ({\r\n type: types.SET_QUERIED_INCIDENTS_TOTAL,\r\n payload: {\r\n queriedIncidentsTotal\r\n }\r\n });\r\n\r\n const setDisplayedIncidentsCount = (displayedIncidentsCount) => ({\r\n type: types.SET_DISPLAYED_INCIDENTS_COUNT,\r\n payload: {\r\n displayedIncidentsCount\r\n }\r\n });\r\n\r\n\r\n/* eslint import/no-anonymous-default-export: [2, {\"allowObject\": true}] */\r\nexport default {\r\n setIncidents,\r\n setIncidentsLoaded,\r\n addSelectedIncident,\r\n removeSelectedIncident,\r\n setVisibleIncidents,\r\n setIncidentListVisible,\r\n clearSelectedIncidents,\r\n setQueriedIncidentsTotal,\r\n setDisplayedIncidentsCount\r\n};\r\n","import reducer from './reducers';\r\n\r\nexport { default as incidentsOperations } from './operations';\r\nexport { default as incidentsTypes } from './types';\r\n\r\nexport default reducer;\r\n","const SET_INCIDENT = 'SET_INCIDENT';\r\nconst CLEAR_INCIDENT = 'CLEAR_INCIDENT';\r\nconst SET_RELATIONSHIPS = 'SET_RELATIONSHIPS';\r\nconst CLEAR_RELATIONSHIPS = 'CLEAR_RELATIONSHIPS';\r\nconst SET_PERIMETER = 'SET_PERIMETER';\r\nconst SET_PERIMETER_FIELDS = 'SET_PERIMETER_FIELDS';\r\nconst CLEAR_PERIMETER = 'CLEAR_PERIMETER';\r\nconst CLEAR_PERIMETER_FIELDS = 'CLEAR_PERIMETER_FIELDS';\r\nconst SET_ADS_STATUS = 'SET_ADS_STATUS';\r\nconst CLEAR_ADS_STATUS = 'CLEAR_ADS_STATUS';\r\nconst SET_PRE_INCIDENT_EXTENT = 'SET_PRE_INCIDENT_EXTENT';\r\nconst SET_NEWINCIDENT_PROTECTING_UNIT = 'SET_NEWINCIDENT_PROTECTING_UNIT';\r\n\r\n/* eslint import/no-anonymous-default-export: [2, {\"allowObject\": true}] */\r\nexport default {\r\n SET_INCIDENT,\r\n CLEAR_INCIDENT,\r\n SET_PERIMETER,\r\n SET_PERIMETER_FIELDS,\r\n CLEAR_PERIMETER,\r\n CLEAR_PERIMETER_FIELDS,\r\n SET_RELATIONSHIPS,\r\n CLEAR_RELATIONSHIPS,\r\n SET_ADS_STATUS,\r\n CLEAR_ADS_STATUS,\r\n SET_PRE_INCIDENT_EXTENT,\r\n SET_NEWINCIDENT_PROTECTING_UNIT\r\n};\r\n","import types from \"./types\";\r\n\r\nconst initialState = {\r\n incident: null,\r\n relationships: [],\r\n perimeter: null,\r\n perimeterFields: null,\r\n adsStatus: null,\r\n preIncidentExtent: null,\r\n newIncidentProtectingUnit: \"\"\r\n}\r\n\r\nconst incidentReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case types.SET_INCIDENT:\r\n return {\r\n ...state,\r\n incident: action.payload.incident\r\n }\r\n case types.SET_NEWINCIDENT_PROTECTING_UNIT:\r\n return {\r\n ...state,\r\n newIncidentProtectingUnit: action.payload.protectingUnit\r\n }\r\n case types.CLEAR_INCIDENT:\r\n return {\r\n ...state,\r\n incident: null\r\n }\r\n case types.SET_RELATIONSHIPS:\r\n return {\r\n ...state,\r\n relationships: action.payload.relationships\r\n }\r\n case types.CLEAR_RELATIONSHIPS:\r\n return {\r\n ...state,\r\n relationships: null\r\n }\r\n case types.SET_ADS_STATUS:\r\n return {\r\n ...state,\r\n adsStatus: action.payload.adsStatus\r\n }\r\n case types.CLEAR_ADS_STATUS:\r\n return {\r\n ...state,\r\n ADSStatus: null\r\n }\r\n case types.SET_PERIMETER:\r\n return {\r\n ...state,\r\n perimeter: action.payload.perimeter\r\n }\r\n case types.SET_PERIMETER_FIELDS:\r\n return {\r\n ...state,\r\n perimeterFields: action.payload.perimeterFields\r\n }\r\n case types.SET_PRE_INCIDENT_EXTENT:\r\n return {\r\n ...state,\r\n preIncidentExtent: action.payload.preIncidentExtent\r\n }\r\n case types.CLEAR_PERIMETER:\r\n return {\r\n ...state,\r\n perimeter: null\r\n }\r\n case types.CLEAR_PERIMETER_FIELDS:\r\n return {\r\n ...state,\r\n perimeterFields: null\r\n }\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default incidentReducer;\r\n","import actions from \"./actions\";\r\n\r\n\r\nconst setIncident = actions.setIncident;\r\nconst clearIncident = actions.clearIncident;\r\nconst setRelationships = actions.setRelationships;\r\nconst clearRelationships = actions.clearRelationships;\r\nconst setADSStatus = actions.setADSStatus;\r\nconst clearADSStatus = actions.clearADSStatus;\r\nconst setPerimeter = actions.setPerimeter;\r\nconst setPerimeterFields = actions.setPerimeterFields;\r\nconst setNewIncidentProtectingUnit = actions.setNewIncidentProtectingUnit;\r\nconst clearPerimeter = actions.clearPerimeter;\r\nconst clearPerimeterFields = actions.clearPerimeterFields;\r\nconst setPreIncidentExtent = actions.setPreIncidentExtent;\r\n\r\n/* eslint import/no-anonymous-default-export: [2, {\"allowObject\": true}] */\r\nexport default {\r\n setIncident,\r\n clearIncident,\r\n setPerimeter,\r\n setPerimeterFields,\r\n setRelationships,\r\n clearRelationships,\r\n clearPerimeter,\r\n clearPerimeterFields,\r\n setNewIncidentProtectingUnit,\r\n setADSStatus,\r\n clearADSStatus,\r\n setPreIncidentExtent\r\n};\r\n","import types from './types';\r\n\r\nconst setIncident = (incident) => ({\r\n type: types.SET_INCIDENT,\r\n payload: {\r\n incident\r\n }\r\n});\r\n\r\nconst setNewIncidentProtectingUnit = (protectingUnit) => ({\r\n type: types.SET_NEWINCIDENT_PROTECTING_UNIT,\r\n payload: {\r\n protectingUnit\r\n }\r\n});\r\nconst clearIncident = () => ({\r\n type: types.CLEAR_INCIDENT,\r\n payload: {}\r\n});\r\n\r\nconst setRelationships = (relationships) => ({\r\n type: types.SET_RELATIONSHIPS,\r\n payload: {\r\n relationships\r\n }\r\n});\r\n\r\nconst clearRelationships = () => ({\r\n type: types.CLEAR_RELATIONSHIPS,\r\n payload: {}\r\n});\r\n\r\nconst setADSStatus = (adsStatus) => ({\r\n type: types.SET_ADS_STATUS,\r\n payload: {\r\n adsStatus\r\n }\r\n});\r\n\r\nconst clearADSStatus = () => ({\r\n type: types.CLEAR_ADS_STATUS,\r\n payload: {}\r\n});\r\n\r\n\r\nconst setPerimeter = (perimeter) => ({\r\n type: types.SET_PERIMETER,\r\n payload: {\r\n perimeter\r\n }\r\n});\r\n\r\nconst setPerimeterFields = (perimeterFields) => ({\r\n type: types.SET_PERIMETER_FIELDS,\r\n payload: {\r\n perimeterFields\r\n }\r\n});\r\n\r\nconst setPreIncidentExtent = (preIncidentExtent) => ({\r\n type: types.SET_PRE_INCIDENT_EXTENT,\r\n payload: {\r\n preIncidentExtent\r\n }\r\n});\r\n\r\nconst clearPerimeter = () => ({\r\n type: types.CLEAR_PERIMETER,\r\n payload: {}\r\n});\r\n\r\nconst clearPerimeterFields = () => ({\r\n type: types.CLEAR_PERIMETER_FIELDS,\r\n payload: {}\r\n});\r\n\r\n\r\n\r\n/* eslint import/no-anonymous-default-export: [2, {\"allowObject\": true}] */\r\nexport default {\r\n setIncident,\r\n clearIncident,\r\n setPerimeter,\r\n setPerimeterFields,\r\n clearPerimeter,\r\n clearPerimeterFields,\r\n setRelationships,\r\n clearRelationships,\r\n setADSStatus,\r\n clearADSStatus,\r\n setNewIncidentProtectingUnit,\r\n setPreIncidentExtent\r\n};\r\n","import reducer from './reducers';\r\n\r\nexport { default as incidentOperations } from './operations';\r\nexport { default as incidentTypes } from './types';\r\n\r\nexport default reducer;\r\n","const SET_VALID_INCIDENT = 'SET_VALID_INCIDENT';\r\nconst CLEAR_VALID_INCIDENT = 'CLEAR_VALID_INCIDENT';\r\nconst SET_CONFLICTING_INCIDENTS = 'SET_CONFLICTING_INCIDENTS';\r\nconst CLEAR_CONFLICTING_INCIDENTS = 'CLEAR_CONFLICTING_INCIDENTS';\r\nconst SET_CONFLICTING_RELATIONSHIPS = 'SET_CONFLICTING_RELATIONSHIPS';\r\nconst CLEAR_CONFLICTING_RELATIONSHIPS = 'CLEAR_CONFLICTING_RELATIONSHIPS';\r\n\r\n/* eslint import/no-anonymous-default-export: [2, {\"allowObject\": true}] */\r\nexport default {\r\n SET_VALID_INCIDENT,\r\n CLEAR_VALID_INCIDENT,\r\n SET_CONFLICTING_INCIDENTS,\r\n CLEAR_CONFLICTING_INCIDENTS,\r\n SET_CONFLICTING_RELATIONSHIPS,\r\n CLEAR_CONFLICTING_RELATIONSHIPS\r\n};\r\n","import types from \"./types\";\r\n\r\nconst initialState = {\r\n validIncident: null,\r\n conflictingIncidents: [],\r\n conflictingRelationships: []\r\n}\r\n\r\nconst incidentReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case types.SET_VALID_INCIDENT:\r\n return {\r\n ...state,\r\n validIncident: action.payload.validIncident\r\n }\r\n case types.CLEAR_VALID_INCIDENT:\r\n return {\r\n ...state,\r\n validIncident: null\r\n }\r\n case types.SET_CONFLICTING_INCIDENTS:\r\n return {\r\n ...state,\r\n conflictingIncidents: action.payload.conflictingIncidents ? action.payload.conflictingIncidents : []\r\n }\r\n\r\n case types.CLEAR_CONFLICTING_INCIDENTS:\r\n return {\r\n ...state,\r\n conflictingIncidents: []\r\n }\r\n case types.SET_CONFLICTING_RELATIONSHIPS:\r\n return {\r\n ...state,\r\n conflictingRelationships: action.payload.conflictingRelationships ? action.payload.conflictingRelationships : []\r\n }\r\n\r\n case types.CLEAR_CONFLICTING_RELATIONSHIPS:\r\n return {\r\n ...state,\r\n conflictingRelationships: []\r\n }\r\n\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default incidentReducer;\r\n","import reducer from './reducers';\r\n\r\nexport { default as conflictOperations } from './operations';\r\nexport { default as conflictTypes } from './types';\r\n\r\nexport default reducer;\r\n","/* eslint import/no-anonymous-default-export: [2, {\"allowObject\": true}] */\r\nexport default {\r\n SET_SCREENSHOT: 'SET_SCREENSHOT'\r\n};\r\n","import types from \"./types\";\r\n\r\nconst initialState = {\r\n screenshot: null\r\n};\r\n\r\nconst reportReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case types.SET_SCREENSHOT:\r\n return {\r\n ...state,\r\n screenshot: action.payload.screenshot\r\n }\r\n\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default reportReducer;\r\n","import actions from \"./actions\";\r\n\r\n/* eslint import/no-anonymous-default-export: [2, {\"allowObject\": true}] */\r\nexport default {\r\n setScreenshot: actions.setScreenshot\r\n};\r\n","import types from './types';\r\n\r\nconst setScreenshot = (screenshot) => ({\r\n type: types.SET_SCREENSHOT,\r\n payload: {\r\n screenshot\r\n }\r\n});\r\n\r\n/* eslint import/no-anonymous-default-export: [2, {\"allowObject\": true}] */\r\nexport default {\r\n setScreenshot\r\n};\r\n","import reducer from './reducers';\r\n\r\nexport { default as reportOperations } from './operations';\r\nexport { default as reportTypes } from './types';\r\n\r\nexport default reducer;\r\n","const SET_ACTIVE_CUSTOM_FILTER = 'SET_ACTIVE_CUSTOM_FILTER';\r\nconst SET_CUSTOM_FILTERS = 'SET_CUSTOM_FILTERS';\r\n\r\n/* eslint import/no-anonymous-default-export: [2, {\"allowObject\": true}] */\r\nexport default {\r\n SET_ACTIVE_CUSTOM_FILTER,\r\n SET_CUSTOM_FILTERS,\r\n};\r\n","import types from \"./types\";\r\n\r\nconst initialState = {\r\n activeCustomFilter: null,\r\n activeCustomFilterState: null,\r\n customFilters: []\r\n}\r\n\r\nconst userReducer = (state = initialState, action) => {\r\n switch (action.type)\r\n {\r\n case types.SET_ACTIVE_CUSTOM_FILTER:\r\n return {\r\n ...state,\r\n activeCustomFilter: action.payload.activeCustomFilter,\r\n activeCustomFilterState: action.payload.activeCustomFilterState\r\n }\r\n case types.SET_CUSTOM_FILTERS:\r\n return {\r\n ...state,\r\n customFilters: action.payload.customFilters\r\n }\r\n\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default userReducer;\r\n","import actions from \"./actions\";\r\n\r\nconst setActiveCustomFilter = actions.setActiveCustomFilter;\r\nconst setCustomFilters = actions.setCustomFilters;\r\n\r\n/* eslint import/no-anonymous-default-export: [2, {\"allowObject\": true}] */\r\nexport default {\r\n setActiveCustomFilter,\r\n setCustomFilters\r\n};\r\n","import types from './types';\r\n\r\nconst setActiveCustomFilter = (activeCustomFilterState, activeCustomFilter) => ({\r\n type: types.SET_ACTIVE_CUSTOM_FILTER,\r\n payload: {\r\n activeCustomFilterState,\r\n activeCustomFilter\r\n }\r\n});\r\n\r\n\r\nconst setCustomFilters = (customFilters) => ({\r\n type: types.SET_CUSTOM_FILTERS,\r\n payload: {\r\n customFilters\r\n }\r\n});\r\n\r\n\r\n/* eslint import/no-anonymous-default-export: [2, {\"allowObject\": true}] */\r\nexport default {\r\n setActiveCustomFilter,\r\n setCustomFilters\r\n};\r\n","import reducer from './reducers';\r\n\r\nexport { default as userOperations } from './operations';\r\nexport { default as userTypes } from './types';\r\n\r\nexport default reducer;\r\n","import { applyMiddleware, createStore } from 'redux';\r\nimport { persistStore, persistCombineReducers } from 'redux-persist';\r\nimport storage from 'redux-persist/lib/storage';\r\nimport thunk from 'redux-thunk';\r\nimport { composeWithDevTools } from 'redux-devtools-extension';\r\n\r\nimport * as rootReducer from './reducers';\r\n\r\nconst persistConfig = {\r\n key: 'primary',\r\n storage,\r\n blacklist: ['auth', 'incidentList', 'history', 'report']\r\n};\r\nlet reducer = persistCombineReducers(persistConfig, rootReducer);\r\n\r\n/* eslint import/no-anonymous-default-export: [2, {\"allowArrowFunction\": true}] */\r\nexport default () => {\r\n let store = createStore(reducer, composeWithDevTools(applyMiddleware(thunk)));\r\n let persistor = persistStore(store);\r\n return { store, persistor };\r\n};\r\n","import getMuiTheme from 'material-ui/styles/getMuiTheme';\r\n\r\n//Default Palette: https://github.com/callemall/material-ui/blob/master/src/styles/baseThemes/lightBaseTheme.js\r\n//Default Theme: https://github.com/callemall/material-ui/blob/master/src/styles/getMuiTheme.js\r\n\r\nconst theme = getMuiTheme({\r\n fontFamily: 'Roboto, sans-serif',\r\n borderRadius: 2,\r\n palette: {\r\n primary1Color: \"#09f\",\r\n primary2Color: \"#3c9\",\r\n primary3Color: \"#66f\",\r\n accent1Color: \"#f63\",\r\n accent2Color: \"#f93\",\r\n nonUniqueColor: \"#c233ff\",\r\n accent3Color: \"#08C\",\r\n textColor: \"#494949\",\r\n secondaryTextColor: \"#7f8492\",\r\n // alternateTextColor: white,\r\n // canvasColor: white,\r\n borderColor: \"#c1c7d4\",\r\n infoBadgeColor: \"#F41E30\"\r\n // disabledColor: fade(darkBlack, 0.3),\r\n // pickerHeaderColor: cyan500,\r\n // clockCircleColor: fade(darkBlack, 0.07),\r\n // shadowColor: fullBlack\r\n },\r\n tableHeaderColumn: {\r\n height: 44,\r\n spacing: 8\r\n },\r\n tableRow: {\r\n height: 32,\r\n selectedColor: \"#efefef\"\r\n },\r\n tableRowColumn: {\r\n height: 32,\r\n spacing: 8\r\n }\r\n});\r\n\r\nexport default theme;\r\n","\r\nexport default class Request {\r\n constructor(token) {\r\n this.token = token;\r\n }\r\n\r\n status(response) {\r\n if (response.status >= 200 && response.status < 300) {\r\n return Promise.resolve(response)\r\n } else {\r\n return Promise.reject(new Error(response.statusText))\r\n }\r\n }\r\n\r\n handleResponse(handleAs, response) {\r\n switch (handleAs) {\r\n case 'text':\r\n return response.text();\r\n default:\r\n return response.json();\r\n }\r\n }\r\n\r\n addArrayToFormData(propName, propArray, formData) {\r\n propArray.forEach(value => {\r\n formData.append(propName, value);\r\n });\r\n }\r\n\r\n objectToFormData(obj) {\r\n const body = new FormData();\r\n for (var prop in obj) {\r\n if (obj.hasOwnProperty(prop)) {\r\n if (Array.isArray(obj[prop])) {\r\n this.addArrayToFormData(prop, obj[prop], body);\r\n } else {\r\n body.append(prop, obj[prop]);\r\n }\r\n }\r\n }\r\n\r\n // Add 'f=json' (we used to only add if it didn't already exist, but IE)\r\n body.append('f', 'json');\r\n\r\n return body;\r\n }\r\n\r\n objectToUrlSearchParams(obj) {\r\n const body = new URLSearchParams();\r\n for (var prop in obj) {\r\n if (obj.hasOwnProperty(prop)) {\r\n body.append(prop, obj[prop]);\r\n }\r\n }\r\n\r\n // add f=json if not included\r\n if (!body.has('f')) {\r\n body.append('f', 'json');\r\n }\r\n\r\n return body.toString();\r\n }\r\n\r\n getHeaders(isFormData) {\r\n const headers = {};\r\n\r\n if (!isFormData)\r\n {\r\n headers['content-type'] = 'application/x-www-form-urlencoded';\r\n }\r\n\r\n return new Headers(headers);\r\n }\r\n\r\n getFileHeaders()\r\n {\r\n const headers = {};\r\n headers['content-type'] = 'multipart/form-data';\r\n return new Headers(headers);\r\n }\r\n\r\n upload(requestUrl, data) {\r\n let options = {\r\n method: 'POST'\r\n };\r\n\r\n options.body = new FormData();\r\n options.body.append('file', data);\r\n\r\n return fetch(requestUrl, options)\r\n .then(response => {\r\n return response.json()\r\n .then(responseJson => {\r\n return responseJson;\r\n });\r\n });\r\n}\r\n\r\nuploadFile(requestUrl, data, indices, uploadUsername, isRx) {\r\n let options = {\r\n method: 'POST'\r\n };\r\n\r\n options.body = new FormData();\r\n options.body.append('file', data);\r\n options.body.append('indicesOutsideState', JSON.stringify(indices));\r\n options.body.append('uploadUsername', uploadUsername);\r\n options.body.append('isRx', isRx);\r\n\r\n return fetch(requestUrl, options)\r\n .then(response => {\r\n return response.json()\r\n .then(responseJson => {\r\n return responseJson;\r\n });\r\n });\r\n}\r\n\r\n getRequestBody(data, isFormData) {\r\n // if formdata, make formdata\r\n if (isFormData) {\r\n return this.objectToFormData(data);\r\n }\r\n\r\n // Not formdata, make url param\r\n return this.objectToUrlSearchParams(data);\r\n }\r\n\r\n makeCsvRequest(params) {\r\n return new Promise((resolve, reject) => {\r\n let url = params.url;\r\n const data = params.data || {};\r\n const headers = this.getHeaders(params.isFormData);\r\n const options =\r\n {\r\n method: params.method || 'get',\r\n headers\r\n };\r\n\r\n if (!params.hideCredentials)\r\n {\r\n options.credentials = 'include';\r\n }\r\n\r\n let body = this.getRequestBody(data, params.isFormData);\r\n\r\n if (options.method === 'get') {\r\n url = `${url}?${body}`;\r\n } else {\r\n options.body = body;\r\n }\r\n\r\n fetch(url, options)\r\n .then((resp) => {\r\n resolve(resp.text());\r\n //const reader = resp.body().getReader();\r\n //response.text()\r\n\r\n /* let json = resp.json(); // there's always a body\r\n if (resp.status >= 200 && resp.status < 300) {\r\n return json;\r\n } else {\r\n return json.then(Promise.reject.bind(Promise));\r\n } */\r\n }).catch(function(error)\r\n {\r\n reject(error);\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Make a request using fetch()\r\n * @param { Object } params Object containing key/value parameters to pass to fetch()\r\n * @return { Promise} Promise returned by fetch()\r\n */\r\n makeRequest(params) {\r\n return new Promise((resolve, reject) => {\r\n let url = params.url;\r\n const data = params.data || {};\r\n const headers = this.getHeaders(params.isFormData);\r\n const options = {\r\n method: params.method || 'get',\r\n headers\r\n };\r\n\r\n if (!params.hideCredentials) {\r\n options.credentials = 'include';\r\n }\r\n\r\n let body = this.getRequestBody(data, params.isFormData);\r\n\r\n if (options.method === 'get') {\r\n url = `${url}?${body}`;\r\n } else {\r\n options.body = body;\r\n }\r\n\r\n fetch(url, options)\r\n .then(this.status)\r\n .then(this.handleResponse.bind(null, params.handleAs))\r\n .then(function(data)\r\n {\r\n // Handle successful requests that are actually errors...\r\n if (data.error) {\r\n reject(data.error);\r\n return;\r\n }\r\n resolve(data);\r\n }).catch(function(error)\r\n {\r\n reject(error);\r\n });\r\n });\r\n }\r\n\r\n makeFileRequest(params) {\r\n return new Promise((resolve, reject) => {\r\n let url = params.url;\r\n const data = params.data || {};\r\n const headers = this.getFileHeaders();\r\n const options = {\r\n method: params.method || 'get',\r\n headers\r\n };\r\n\r\n if (!params.hideCredentials) {\r\n options.credentials = 'include';\r\n }\r\n\r\n let body = this.getRequestBody(data, params.isFormData);\r\n\r\n if (options.method === 'get') {\r\n url = `${url}?${body}`;\r\n } else {\r\n options.body = body;\r\n }\r\n\r\n fetch(url, options)\r\n .then(this.status)\r\n .then(this.handleResponse.bind(null, params.handleAs))\r\n .then(function(data) {\r\n // Handle successful requests that are actually errors...\r\n if (data.error) {\r\n reject(data.error);\r\n return;\r\n }\r\n resolve(data);\r\n }).catch(function(error) {\r\n reject(error);\r\n });\r\n });\r\n }\r\n}\r\n","import originFields from '../defaults/PointOfOriginFields.json';\r\nimport perimeterFields from '../defaults/UncertifiedPerimeterFields.json';\r\nimport enums from '../defaults/Enums.json';\r\nimport moment from 'moment';\r\n\r\nexport function getValidationInfo(validationType, attributes, fieldInfos) \r\n{\r\n if(validationType === enums.validationType.origin)\r\n {\r\n return getOriginValidationInfo(attributes,fieldInfos);\r\n }\r\n else if(validationType === enums.validationType.perimeter)\r\n {\r\n return getPerimeterValidationInfo(attributes, fieldInfos);\r\n }\r\n else if(validationType === enums.validationType.bypassValidation)\r\n {\r\n return {\r\n isValid: true,\r\n invalidFields: [],\r\n errors: {}\r\n };\r\n }\r\n else {\r\n return {\r\n isValid: false,\r\n invalidFields: [],\r\n errors: {}\r\n };\r\n }\r\n}\r\n\r\nexport function getPolygonCreateDate(attributes) {\r\n //originFields.containmentDate\r\n //originFields.fireGrowthCessationDate\r\n //originFields.ControlDateTime\r\n //originFields.outDate\r\n\r\n var dateArray = [];\r\n\r\n if (attributes[originFields.containmentDate]) {\r\n dateArray.push(new Date(attributes[originFields.containmentDate]));\r\n }\r\n\r\n if (attributes[originFields.fireGrowthCessationDate]) {\r\n dateArray.push(new Date(attributes[originFields.fireGrowthCessationDate]));\r\n }\r\n\r\n if (attributes[originFields.controlDate]) {\r\n dateArray.push(new Date(attributes[originFields.controlDate]));\r\n }\r\n\r\n if (attributes[originFields.outDate]) {\r\n dateArray.push(new Date(attributes[originFields.outDate]));\r\n }\r\n\r\n dateArray.push(new Date());\r\n var min = dateArray[0];\r\n for (var i = 1; i < dateArray.length; i++) \r\n {\r\n if (dateArray[i] < min)\r\n min = dateArray[i];\r\n }\r\n\r\n return min.getTime();\r\n}\r\n\r\nexport function formatIdentifierForApi(incidentId)\r\n{\r\n //console.log(incidentId);\r\n if (incidentId)\r\n {\r\n let formattedId = incidentId.replace(\"{\", \"\");\r\n formattedId = formattedId.replace(\"}\", \"\");\r\n return \"{\" + formattedId.toUpperCase() + \"}\";\r\n }\r\n else\r\n {\r\n return '';\r\n }\r\n}\r\n\r\nexport function isCurrentYearIncident(incident)\r\n{\r\n const incidentDiscoveryDate = new Date(incident.attributes[originFields.discoveryDate]);\r\n const currentDate = new Date();\r\n\r\n return currentDate.getFullYear() === incidentDiscoveryDate.getFullYear();\r\n}\r\n\r\nexport function getPerimeterSource(incident)\r\n{\r\n if (isIncidentCertified(incident))\r\n {\r\n return enums.perimeterSource.finalFireFeatureService;\r\n }\r\n else if(isCurrentYearIncident(incident))\r\n {\r\n return enums.perimeterSource.nifs;\r\n }\r\n else\r\n {\r\n return enums.perimeterSource.fireHistoryFeatureService;\r\n }\r\n}\r\n\r\nexport function getCountiesForState(stateCode)\r\n{\r\n if (Array.isArray(stateCode) && stateCode.length === 1)\r\n {\r\n switch (stateCode[0])\r\n {\r\n case \"US-AL\":\r\n \treturn ['Autauga','Baldwin','Barbour','Bibb','Blount','Bullock','Butler','Calhoun','Chambers','Cherokee','Chilton','Choctaw','Clarke','Clay','Cleburne','Coffee','Colbert','Conecuh','Coosa','Covington','Crenshaw','Cullman','Dale','Dallas','De Kalb','Elmore','Escambia','Etowah','Fayette','Franklin','Geneva','Greene','Hale','Henry','Houston','Jackson','Jefferson','Lamar','Lauderdale','Lawrence','Lee','Limestone','Lowndes','Macon','Madison','Marengo','Marion','Marshall','Mobile','Monroe','Montgomery','Morgan','Perry','Pickens','Pike','Randolph','Russell','St. Clair','Shelby','Sumter','Talladega','Tallapoosa','Tuscaloosa','Walker','Washington','Wilcox','Winston'];\r\n\r\n case \"US-AK\":\r\n \treturn ['Aleutians East','Aleutians West','Anchorage','Bethel','Bristol Bay','Denali','Dillingham','Fairbanks North Star','Haines','Juneau','Kenai Peninsula','Ketchikan Gateway','Kodiak Island','Lake And Peninsula','Matanuska-Susitna','Nome','North Slope','Northwest Arctic','Prince of Wales-Outer Ketchikan','Sitka','Skagway','Southeast Fairbanks','Valdez-Cordova','Wade Hampton','Wrangell','Yakutat'];\r\n\r\n case \"US-AZ\":\r\n \treturn ['Apache','Cochise','Coconino','Gila','Graham','Greenlee','La Paz','Maricopa','Mohave','Navajo','Pima','Pinal','Santa Cruz','Yavapai','Yuma'];\r\n\r\n case \"US-AR\":\r\n \treturn ['Arkansas','Ashley','Baxter','Benton','Boone','Bradley','Calhoun','Carroll','Chicot','Clark','Clay','Cleburne','Cleveland','Columbia','Conway','Craighead','Crawford','Crittenden','Cross','Dallas','Desha','Drew','Faulkner','Franklin','Fulton','Garland','Grant','Greene','Hempstead','Hot Spring','Howard','Independence','Izard','Jackson','Jefferson','Johnson','Lafayette','Lawrence','Lee','Lincoln','Little River','Logan','Lonoke','Madison','Marion','Miller','Mississippi','Monroe','Montgomery','Nevada','Newton','Ouachita','Perry','Phillips','Pike','Poinsett','Polk','Pope','Prairie','Pulaski','Randolph','St. Francis','Saline','Scott','Searcy','Sebastian','Sevier','Sharp','Stone','Union','Van Buren','Washington','White','Woodruff','Yell'];\r\n\r\n case \"US-CA\":\r\n \treturn ['Alameda','Alpine','Amador','Butte','Calaveras','Colusa','Contra Costa','Del Norte','El Dorado','Fresno','Glenn','Humboldt','Imperial','Inyo','Kern','Kings','Lake','Lassen','Los Angeles','Madera','Marin','Mariposa','Mendocino','Merced','Modoc','Mono','Monterey','Napa','Nevada','Orange','Placer','Plumas','Riverside','Sacramento','San Benito','San Bernardino','San Diego','San Francisco','San Joaquin','San Luis Obispo','San Mateo','Santa Barbara','Santa Clara','Santa Cruz','Shasta','Sierra','Siskiyou','Solano','Sonoma','Stanislaus','Sutter','Tehama','Trinity','Tulare','Tuolumne','Ventura','Yolo','Yuba'];\r\n\r\n case \"US-CO\":\r\n \treturn ['Adams','Alamosa','Arapahoe','Archuleta','Baca','Bent','Boulder','Broomfield','Chaffee','Cheyenne','Clear Creek','Conejos','Costilla','Crowley','Custer','Delta','Denver','Dolores','Douglas','Eagle','Elbert','El Paso','Fremont','Garfield','Gilpin','Grand','Gunnison','Hinsdale','Huerfano','Jackson','Jefferson','Kiowa','Kit Carson','Lake','La Plata','Larimer','Las Animas','Lincoln','Logan','Mesa','Mineral','Moffat','Montezuma','Montrose','Morgan','Otero','Ouray','Park','Phillips','Pitkin','Prowers','Pueblo','Rio Blanco','Rio Grande','Routt','Saguache','San Juan','San Miguel','Sedgwick','Summit','Teller','Washington','Weld','Yuma'];\r\n\r\n case \"US-CT\":\r\n \treturn ['Fairfield','Hartford','Litchfield','Middlesex','New Haven','New London','Tolland','Windham'];\r\n\r\n case \"US-DE\":\r\n \treturn ['Kent','New Castle','Sussex'];\r\n\r\n case \"US-FL\":\r\n \treturn ['Alachua','Baker','Bay','Bradford','Brevard','Broward','Calhoun','Charlotte','Citrus','Clay','Collier','Columbia','DeSoto','Dixie','Duval','Escambia','Flagler','Franklin','Gadsden','Gilchrist','Glades','Gulf','Hamilton','Hardee','Hendry','Hernando','Highlands','Hillsborough','Holmes','Indian River','Jackson','Jefferson','Lafayette','Lake','Lee','Leon','Levy','Liberty','Madison','Manatee','Marion','Martin','Miami-Dade','Monroe','Nassau','Okaloosa','Okeechobee','Orange','Osceola','Palm Beach','Pasco','Pinellas','Polk','Putnam','St. Johns','St. Lucie','Santa Rosa','Sarasota','Seminole','Sumter','Suwannee','Taylor','Union','Volusia','Wakulla','Walton','Washington'];\r\n\r\n case \"US-GA\":\r\n \treturn ['Appling','Atkinson','Bacon','Baker','Baldwin','Banks','Barrow','Bartow','Ben Hill','Berrien','Bibb','Bleckley','Brantley','Brooks','Bryan','Bulloch','Burke','Butts','Calhoun','Camden','Candler','Carroll','Catoosa','Charlton','Chatham','Chattahoochee','Chattooga','Cherokee','Clarke','Clay','Clayton','Clinch','Cobb','Coffee','Colquitt','Columbia','Cook','Coweta','Crawford','Crisp','Dade','Dawson','De Kalb','Decatur','Dodge','Dooly','Dougherty','Douglas','Early','Echols','Effingham','Elbert','Emanuel','Evans','Fannin','Fayette','Floyd','Forsyth','Franklin','Fulton','Gilmer','Glascock','Glynn','Gordon','Grady','Greene','Gwinnett','Habersham','Hall','Hancock','Haralson','Harris','Hart','Heard','Henry','Houston','Irwin','Jackson','Jasper','Jeff Davis','Jefferson','Jenkins','Johnson','Jones','Lamar','Lanier','Laurens','Lee','Liberty','Lincoln','Long','Lowndes','Lumpkin','Macon','Madison','Marion','McDuffie','McIntosh','Meriwether','Miller','Mitchell','Monroe','Montgomery','Morgan','Murray','Muscogee','Newton','Oconee','Oglethorpe','Paulding','Peach','Pickens','Pierce','Pike','Polk','Pulaski','Putnam','Quitman','Rabun','Randolph','Richmond','Rockdale','Schley','Screven','Seminole','Spalding','Stephens','Stewart','Sumter','Talbot','Taliaferro','Tattnall','Taylor','Telfair','Terrell','Thomas','Tift','Toombs','Towns','Treutlen','Troup','Turner','Twiggs','Union','Upson','Walker','Walton','Ware','Warren','Washington','Wayne','Webster','Wheeler','White','Whitfield','Wilcox','Wilkes','Wilkinson','Worth'];\r\n\r\n case \"US-HI\":\r\n \treturn ['Hawaii','Honolulu','Kalawao','Kauai','Maui'];\r\n\r\n case \"US-ID\":\r\n \treturn ['Ada','Adams','Bannock','Bear Lake','Benewah','Bingham','Blaine','Boise','Bonner','Bonneville','Boundary','Butte','Camas','Canyon','Caribou','Cassia','Clark','Clearwater','Custer','Elmore','Franklin','Fremont','Gem','Gooding','Idaho','Jefferson','Jerome','Kootenai','Latah','Lemhi','Lewis','Lincoln','Madison','Minidoka','Nez Perce','Oneida','Owyhee','Payette','Power','Shoshone','Teton','Twin Falls','Valley','Washington'];\r\n\r\n case \"US-IL\":\r\n \treturn ['Adams','Alexander','Bond','Boone','Brown','Bureau','Calhoun','Carroll','Cass','Champaign','Christian','Clark','Clay','Clinton','Coles','Cook','Crawford','Cumberland','DeKalb','De Witt','Douglas','DuPage','Edgar','Edwards','Effingham','Fayette','Ford','Franklin','Fulton','Gallatin','Greene','Grundy','Hamilton','Hancock','Hardin','Henderson','Henry','Iroquois','Jackson','Jasper','Jefferson','Jersey','Jo Daviess','Johnson','Kane','Kankakee','Kendall','Knox','La Salle','Lake','Lawrence','Lee','Livingston','Logan','McDonough','McHenry','McLean','Macon','Macoupin','Madison','Marion','Marshall','Mason','Massac','Menard','Mercer','Monroe','Montgomery','Morgan','Moultrie','Ogle','Peoria','Perry','Piatt','Pike','Pope','Pulaski','Putnam','Randolph','Richland','Rock Island','Saline','Sangamon','Schuyler','Scott','Shelby','St. Clair','Stark','Stephenson','Tazewell','Union','Vermilion','Wabash','Warren','Washington','Wayne','White','Whiteside','Will','Williamson','Winnebago','Woodford'];\r\n\r\n case \"US-IN\":\r\n \treturn ['Adams','Allen','Bartholomew','Benton','Blackford','Boone','Brown','Carroll','Cass','Clark','Clay','Clinton','Crawford','Daviess','Dearborn','Decatur','De Kalb','Delaware','Dubois','Elkhart','Fayette','Floyd','Fountain','Franklin','Fulton','Gibson','Grant','Greene','Hamilton','Hancock','Harrison','Hendricks','Henry','Howard','Huntington','Jackson','Jasper','Jay','Jefferson','Jennings','Johnson','Knox','Kosciusko','La Porte','Lagrange','Lake','Lawrence','Madison','Marion','Marshall','Martin','Miami','Monroe','Montgomery','Morgan','Newton','Noble','Ohio','Orange','Owen','Parke','Perry','Pike','Porter','Posey','Pulaski','Putnam','Randolph','Ripley','Rush','St. Joseph','Scott','Shelby','Spencer','Starke','Steuben','Sullivan','Switzerland','Tippecanoe','Tipton','Union','Vanderburgh','Vermillion','Vigo','Wabash','Warren','Warrick','Washington','Wayne','Wells','White','Whitley'];\r\n\r\n case \"US-IA\":\r\n \treturn ['Adair','Adams','Allamakee','Appanoose','Audubon','Benton','Black Hawk','Boone','Bremer','Buchanan','Buena Vista','Butler','Calhoun','Carroll','Cass','Cedar','Cerro Gordo','Cherokee','Chickasaw','Clarke','Clay','Clayton','Clinton','Crawford','Dallas','Davis','Decatur','Delaware','Des Moines','Dickinson','Dubuque','Emmet','Fayette','Floyd','Franklin','Fremont','Greene','Grundy','Guthrie','Hamilton','Hancock','Hardin','Harrison','Henry','Howard','Humboldt','Ida','Iowa','Jackson','Jasper','Jefferson','Johnson','Jones','Keokuk','Kossuth','Lee','Linn','Louisa','Lucas','Lyon','Madison','Mahaska','Marion','Marshall','Mills','Mitchell','Monona','Monroe','Montgomery','Muscatine','O\\'Brien','Osceola','Page','Palo Alto','Plymouth','Pocahontas','Polk','Pottawattamie','Poweshiek','Ringgold','Sac','Scott','Shelby','Sioux','Story','Tama','Taylor','Union','Van Buren','Wapello','Warren','Washington','Wayne','Webster','Winnebago','Winneshiek','Woodbury','Worth','Wright'];\r\n\r\n case \"US-KS\":\r\n \treturn ['Allen','Anderson','Atchison','Barber','Barton','Bourbon','Brown','Butler','Chase','Chautauqua','Cherokee','Cheyenne','Clark','Clay','Cloud','Coffey','Comanche','Cowley','Crawford','Decatur','Dickinson','Doniphan','Douglas','Edwards','Elk','Ellis','Ellsworth','Finney','Ford','Franklin','Geary','Gove','Graham','Grant','Gray','Greeley','Greenwood','Hamilton','Harper','Harvey','Haskell','Hodgeman','Jackson','Jefferson','Jewell','Johnson','Kearny','Kingman','Kiowa','Labette','Lane','Leavenworth','Lincoln','Linn','Logan','Lyon','Marion','Marshall','McPherson','Meade','Miami','Mitchell','Montgomery','Morris','Morton','Nemaha','Neosho','Ness','Norton','Osage','Osborne','Ottawa','Pawnee','Phillips','Pottawatomie','Pratt','Rawlins','Reno','Republic','Rice','Riley','Rooks','Rush','Russell','Saline','Scott','Sedgwick','Seward','Shawnee','Sheridan','Sherman','Smith','Stafford','Stanton','Stevens','Sumner','Thomas','Trego','Wabaunsee','Wallace','Washington','Wichita','Wilson','Woodson','Wyandotte'];\r\n\r\n case \"US-KY\":\r\n \treturn ['Adair','Allen','Anderson','Ballard','Barren','Bath','Bell','Boone','Bourbon','Boyd','Boyle','Bracken','Breathitt','Breckinridge','Bullitt','Butler','Caldwell','Calloway','Campbell','Carlisle','Carroll','Carter','Casey','Christian','Clark','Clay','Clinton','Crittenden','Cumberland','Daviess','Edmonson','Elliott','Estill','Fayette','Fleming','Floyd','Franklin','Fulton','Gallatin','Garrard','Grant','Graves','Grayson','Green','Greenup','Hancock','Hardin','Harlan','Harrison','Hart','Henderson','Henry','Hickman','Hopkins','Jackson','Jefferson','Jessamine','Johnson','Kenton','Knott','Knox','Larue','Laurel','Lawrence','Lee','Leslie','Letcher','Lewis','Lincoln','Livingston','Logan','Lyon','McCracken','McCreary','McLean','Madison','Magoffin','Marion','Marshall','Martin','Mason','Meade','Menifee','Mercer','Metcalfe','Monroe','Montgomery','Morgan','Muhlenberg','Nelson','Nicholas','Ohio','Oldham','Owen','Owsley','Pendleton','Perry','Pike','Powell','Pulaski','Robertson','Rockcastle','Rowan','Russell','Scott','Shelby','Simpson','Spencer','Taylor','Todd','Trigg','Trimble','Union','Warren','Washington','Wayne','Webster','Whitley','Wolfe','Woodford'];\r\n\r\n case \"US-LA\":\r\n \treturn ['Acadia','Allen','Ascension','Assumption','Avoyelles','Beauregard','Bienville','Bossier','Caddo','Calcasieu','Caldwell','Cameron','Catahoula','Claiborne','Concordia','De Soto','East Baton Rouge','East Carroll','East Feliciana','Evangeline','Franklin','Grant','Iberia','Iberville','Jackson','Jefferson','Jefferson Davis','La Salle','Lafayette','Lafourche','Lincoln','Livingston','Madison','Morehouse','Natchitoches','Orleans','Ouachita','Plaquemines','Pointe Coupee','Rapides','Red River','Richland','Sabine','St. Bernard','St. Charles','St. Helena','St. James','St. John The Baptist','St. Landry','St. Martin','St. Mary','St. Tammany','Tangipahoa','Tensas','Terrebonne','Union','Vermilion','Vernon','Washington','Webster','West Baton Rouge','West Carroll','West Feliciana','Winn'];\r\n\r\n case \"US-ME\":\r\n \treturn ['Androscoggin','Aroostook','Cumberland','Franklin','Hancock','Kennebec','Knox','Lincoln','Oxford','Penobscot','Piscataquis','Sagadahoc','Somerset','Waldo','Washington','York'];\r\n\r\n case \"US-MD\":\r\n \treturn ['Allegany','Anne Arundel','Baltimore','Baltimore City','Calvert','Caroline','Carroll','Cecil','Charles','Dorchester','Frederick','Garrett','Harford','Howard','Kent','Montgomery','Prince George\\'s','Queen Anne\\'s','St. Mary\\'s','Somerset','Talbot','Washington','Wicomico','Worcester'];\r\n\r\n case \"US-MA\":\r\n \treturn ['Barnstable','Berkshire','Bristol','Dukes','Essex','Franklin','Hampden','Hampshire','Middlesex','Nantucket','Norfolk','Plymouth','Suffolk','Worcester'];\r\n\r\n case \"US-MI\":\r\n \treturn ['Alcona','Alger','Allegan','Alpena','Antrim','Arenac','Baraga','Barry','Bay','Benzie','Berrien','Branch','Calhoun','Cass','Charlevoix','Cheboygan','Chippewa','Clare','Clinton','Crawford','Delta','Dickinson','Eaton','Emmet','Genesee','Gladwin','Gogebic','Grand Traverse','Gratiot','Hillsdale','Houghton','Huron','Ingham','Ionia','Iosco','Iron','Isabella','Jackson','Kalamazoo','Kalkaska','Kent','Keweenaw','Lake','Lapeer','Leelanau','Lenawee','Livingston','Luce','Mackinac','Macomb','Manistee','Marquette','Mason','Mecosta','Menominee','Midland','Missaukee','Monroe','Montcalm','Montmorency','Muskegon','Newaygo','Oakland','Oceana','Ogemaw','Ontonagon','Osceola','Oscoda','Otsego','Ottawa','Presque Isle','Roscommon','Saginaw','St. Clair','St. Joseph','Sanilac','Schoolcraft','Shiawassee','Tuscola','Van Buren','Washtenaw','Wayne','Wexford'];\r\n\r\n case \"US-MN\":\r\n \treturn ['Aitkin','Anoka','Becker','Beltrami','Benton','Big Stone','Blue Earth','Brown','Carlton','Carver','Cass','Chippewa','Chisago','Clay','Clearwater','Cook','Cottonwood','Crow Wing','Dakota','Dodge','Douglas','Faribault','Fillmore','Freeborn','Goodhue','Grant','Hennepin','Houston','Hubbard','Isanti','Itasca','Jackson','Kanabec','Kandiyohi','Kittson','Koochiching','Lac Qui Parle','Lake','Lake Of The Wood','Le Sueur','Lincoln','Lyon','Mahnomen','Marshall','Martin','McLeod','Meeker','Mille Lacs','Morrison','Mower','Murray','Nicollet','Nobles','Norman','Olmsted','Otter Tail','Pennington','Pine','Pipestone','Polk','Pope','Ramsey','Red Lake','Redwood','Renville','Rice','Rock','Roseau','St. Louis','Scott','Sherburne','Sibley','Stearns','Steele','Stevens','Swift','Todd','Traverse','Wabasha','Wadena','Waseca','Washington','Watonwan','Wilkin','Winona','Wright','Yellow Medicine'];\r\n\r\n case \"US-MS\":\r\n \treturn ['Adams','Alcorn','Amite','Attala','Benton','Bolivar','Calhoun','Carroll','Chickasaw','Choctaw','Claiborne','Clarke','Clay','Coahoma','Copiah','Covington','De Soto','Forrest','Franklin','George','Greene','Grenada','Hancock','Harrison','Hinds','Holmes','Humphreys','Issaquena','Itawamba','Jackson','Jasper','Jefferson','Jefferson Davis','Jones','Kemper','Lafayette','Lamar','Lauderdale','Lawrence','Leake','Lee','Leflore','Lincoln','Lowndes','Madison','Marion','Marshall','Monroe','Montgomery','Neshoba','Newton','Noxubee','Oktibbeha','Panola','Pearl River','Perry','Pike','Pontotoc','Prentiss','Quitman','Rankin','Scott','Sharkey','Simpson','Smith','Stone','Sunflower','Tallahatchie','Tate','Tippah','Tishomingo','Tunica','Union','Walthall','Warren','Washington','Wayne','Webster','Wilkinson','Winston','Yalobusha','Yazoo'];\r\n\r\n case \"US-MO\":\r\n \treturn ['Adair','Andrew','Atchison','Audrain','Barry','Barton','Bates','Benton','Bollinger','Boone','Buchanan','Butler','Caldwell','Callaway','Camden','Cape Girardeau','Carroll','Carter','Cass','Cedar','Chariton','Christian','Clark','Clay','Clinton','Cole','Cooper','Crawford','Dade','Dallas','Daviess','De Kalb','Dent','Douglas','Dunklin','Franklin','Gasconade','Gentry','Greene','Grundy','Harrison','Henry','Hickory','Holt','Howard','Howell','Iron','Jackson','Jasper','Jefferson','Johnson','Knox','Laclede','Lafayette','Lawrence','Lewis','Lincoln','Linn','Livingston','Macon','Madison','Maries','Marion','McDonal1d','Mercer','Miller','Mississippi','Moniteau','Monroe','Montgomery','Morgan','New Madrid','Newton','Nodaway','Oregon','Osage','Ozark','Pemiscot','Perry','Pettis','Phelps','Pike','Platte','Polk','Pulaski','Putnam','Ralls','Randolph','Ray','Reynolds','Ripley','St. Charles','St. Clair','Ste. Genevieve','St. Francois','St. Louis','St. Louis City','Saline','Schuyler','Scotland','Scott','Shannon','Shelby','Stoddard','Stone','Sullivan','Taney','Texas','Vernon','Warren','Washington','Wayne','Webster','Worth','Wright'];\r\n\r\n case \"US-MT\":\r\n \treturn ['Beaverhead','Big Horn','Blaine','Broadwater','Carbon','Carter','Cascade','Chouteau','Custer','Daniels','Dawson','Deer Lodge','Fallon','Fergus','Flathead','Gallatin','Garfield','Glacier','Golden Valley','Granite','Hill','Jefferson','Judith Basin','Lake','Lewis And Clark','Liberty','Lincoln','Madison','McCone','Meagher','Mineral','Missoula','Musselshell','Park','Petroleum','Phillips','Pondera','Powder River','Powell','Prairie','Ravalli','Richland','Roosevelt','Rosebud','Sanders','Sheridan','Silver Bow','Stillwater','Sweet Grass','Teton','Toole','Treasure','Valley','Wheatland','Wibaux','Yellowstone','Yellowstone National Park'];\r\n\r\n case \"US-NE\":\r\n \treturn ['Adams','Antelope','Arthur','Banner','Blaine','Boone','Box Butte','Boyd','Brown','Buffalo','Burt','Butler','Cass','Cedar','Chase','Cherry','Cheyenne','Clay','Colfax','Cuming','Custer','Dakota','Dawes','Dawson','Deuel','Dixon','Dodge','Douglas','Dundy','Fillmore','Franklin','Frontier','Furnas','Gage','Garden','Garfield','Gosper','Grant','Greeley','Hall','Hamilton','Harlan','Hayes','Hitchcock','Holt','Hooker','Howard','Jefferson','Johnson','Kearney','Keith','Keya Paha','Kimball','Knox','Lancaster','Lincoln','Logan','Loup','McPherson','Madison','Merrick','Morrill','Nance','Nemaha','Nuckolls','Otoe','Pawnee','Perkins','Phelps','Pierce','Platte','Polk','Red Willow','Richardson','Rock','Saline','Sarpy','Saunders','Scotts Bluff','Seward','Sheridan','Sherman','Sioux','Stanton','Thayer','Thomas','Thurston','Valley','Washington','Wayne','Webster','Wheeler','York'];\r\n\r\n case \"US-NV\":\r\n \treturn ['Carson City','Churchill','Clark','Douglas','Elko','Esmeralda','Eureka','Humboldt','Lander','Lincoln','Lyon','Mineral','Nye','Pershing','Storey','Washoe','White Pine'];\r\n\r\n case \"US-NH\":\r\n \treturn ['Belknap','Carroll','Cheshire','Coos','Grafton','Hillsborough','Merrimack','Rockingham','Strafford','Sullivan'];\r\n\r\n case \"US-NJ\":\r\n \treturn ['Atlantic','Bergen','Burlington','Camden','Cape May','Cumberland','Essex','Gloucester','Hudson','Hunterdon','Mercer','Middlesex','Monmouth','Morris','Ocean','Passaic','Salem','Somerset','Sussex','Union','Warren'];\r\n\r\n case \"US-NM\":\r\n \treturn ['Bernalillo','Catron','Chaves','Cibola','Colfax','Curry','De Baca','Dona Ana','Eddy','Grant','Guadalupe','Harding','Hidalgo','Lea','Lincoln','Los Alamos','Luna','McKinley','Mora','Otero','Quay','Rio Arriba','Roosevelt','Sandoval','San Juan','San Miguel','Santa Fe','Sierra','Socorro','Taos','Torrance','Union','Valencia'];\r\n\r\n case \"US-NY\":\r\n \treturn ['Albany','Allegany','Bronx','Broome','Cattaraugus','Cayuga','Chautauqua','Chemung','Chenango','Clinton','Columbia','Cortland','Delaware','Dutchess','Erie','Essex','Franklin','Fulton','Genesee','Greene','Hamilton','Herkimer','Jefferson','Kings','Lewis','Livingston','Madison','Monroe','Montgomery','Nassau','New York City','Niagara','Oneida','Onondaga','Ontario','Orange','Orleans','Oswego','Otsego','Putnam','Queens','Rensselaer','Richmond','Rockland','St. Lawrence','Saratoga','Schenectady','Schoharie','Schuyler','Seneca','Steuben','Suffolk','Sullivan','Tioga','Tompkins','Ulster','Warren','Washington','Wayne','Westchester','Wyoming','Yates'];\r\n\r\n case \"US-NC\":\r\n \treturn ['Alamance','Alexander','Alleghany','Anson','Ashe','Avery','Beaufort','Bertie','Bladen','Brunswick','Buncombe','Burke','Cabarrus','Caldwell','Camden','Carteret','Caswell','Catawba','Chatham','Cherokee','Chowan','Clay','Cleveland','Columbus','Craven','Cumberland','Currituck','Dare','Davidson','Davie','Duplin','Durham','Edgecombe','Forsyth','Franklin','Gaston','Gates','Graham','Granville','Greene','Guilford','Halifax','Harnett','Haywood','Henderson','Hertford','Hoke','Hyde','Iredell','Jackson','Johnston','Jones','Lee','Lenoir','Lincoln','McDowell','Macon','Madison','Martin','Mecklenburg','Mitchell','Montgomery','Moore','Nash','New Hanover','Northampton','Onslow','Orange','Pamlico','Pasquotank','Pender','Perquimans','Person','Pitt','Polk','Randolph','Richmond','Robeson','Rockingham','Rowan','Rutherford','Sampson','Scotland','Stanly','Stokes','Surry','Swain','Transylvania','Tyrrell','Union','Vance','Wake','Warren','Washington','Watauga','Wayne','Wilkes','Wilson','Yadkin','Yancey'];\r\n\r\n case \"US-ND\":\r\n \treturn ['Adams','Barnes','Benson','Billings','Bottineau','Bowman','Burke','Burleigh','Cass','Cavalier','Dickey','Divide','Dunn','Eddy','Emmons','Foster','Golden Valley','Grand Forks','Grant','Griggs','Hettinger','Kidder','LaMoure','Logan','McHenry','McIntosh','McKenzie','McLean','Mercer','Morton','Mountrail','Nelson','Oliver','Pembina','Pierce','Ramsey','Ransom','Renville','Richland','Rolette','Sargent','Sheridan','Sioux','Slope','Stark','Steele','Stutsman','Towner','Traill','Walsh','Ward','Wells','Williams'];\r\n\r\n case \"US-OH\":\r\n \treturn ['Adams','Allen','Ashland','Ashtabula','Athens','Auglaize','Belmont','Brown','Butler','Carroll','Champaign','Clark','Clermont','Clinton','Columbiana','Coshocton','Crawford','Cuyahoga','Darke','Defiance','Delaware','Erie','Fairfield','Fayette','Franklin','Fulton','Gallia','Geauga','Greene','Guernsey','Hamilton','Hancock','Hardin','Harrison','Henry','Highland','Hocking','Holmes','Huron','Jackson','Jefferson','Knox','Lake','Lawrence','Licking','Logan','Lorain','Lucas','Madison','Mahoning','Marion','Medina','Meigs','Mercer','Miami','Monroe','Montgomery','Morgan','Morrow','Muskingum','Noble','Ottawa','Paulding','Perry','Pickaway','Pike','Portage','Preble','Putnam','Richland','Ross','Sandusky','Scioto','Seneca','Shelby','Stark','Summit','Trumbull','Tuscarawas','Union','Van Wert','Vinton','Warren','Washington','Wayne','Williams','Wood','Wyandot'];\r\n\r\n case \"US-OK\":\r\n \treturn ['Adair','Alfalfa','Atoka','Beaver','Beckham','Blaine','Bryan','Caddo','Canadian','Carter','Cherokee','Choctaw','Cimarron','Cleveland','Coal','Comanche','Cotton','Craig','Creek','Custer','Delaware','Dewey','Ellis','Garfield','Garvin','Grady','Grant','Greer','Harmon','Harper','Haskell','Hughes','Jackson','Jefferson','Johnston','Kay','Kingfisher','Kiowa','Latimer','Le Flore','Lincoln','Logan','Love','McClain','McCurtain','McIntosh','Major','Marshall','Mayes','Murray','Muskogee','Noble','Nowata','Okfuskee','Oklahoma','Okmulgee','Osage','Ottawa','Pawnee','Payne','Pittsburg','Pontotoc','Pottawatomie','Pushmataha','Roger Mills','Rogers','Seminole','Sequoyah','Stephens','Texas','Tillman','Tulsa','Wagoner','Washington','Washita','Woods','Woodward'];\r\n\r\n case \"US-OR\":\r\n \treturn ['Baker','Benton','Clackamas','Clatsop','Columbia','Coos','Crook','Curry','Deschutes','Douglas','Gilliam','Grant','Harney','Hood River','Jackson','Jefferson','Josephine','Klamath','Lake','Lane','Lincoln','Linn','Malheur','Marion','Morrow','Multnomah','Polk','Sherman','Tillamook','Umatilla','Union','Wallowa','Wasco','Washington','Wheeler','Yamhill'];\r\n\r\n case \"US-PA\":\r\n \treturn ['Adams','Allegheny','Armstrong','Beaver','Bedford','Berks','Blair','Bradford','Bucks','Butler','Cambria','Cameron','Carbon','Centre','Chester','Clarion','Clearfield','Clinton','Columbia','Crawford','Cumberland','Dauphin','Delaware','Elk','Erie','Fayette','Forest','Franklin','Fulton','Greene','Huntingdon','Indiana','Jefferson','Juniata','Lackawanna','Lancaster','Lawrence','Lebanon','Lehigh','Luzerne','Lycoming','McKean','Mercer','Mifflin','Monroe','Montgomery','Montour','Northampton','Northumberland','Perry','Philadelphia','Pike','Potter','Schuylkill','Snyder','Somerset','Sullivan','Susquehanna','Tioga','Union','Venango','Warren','Washington','Wayne','Westmoreland','Wyoming','York'];\r\n\r\n case \"US-RI\":\r\n \treturn ['Bristol','Kent','Newport','Providence','Washington'];\r\n\r\n case \"US-SC\":\r\n \treturn ['Abbeville','Aiken','Allendale','Anderson','Bamberg','Barnwell','Beaufort','Berkeley','Calhoun','Charleston','Cherokee','Chester','Chesterfield','Clarendon','Colleton','Darlington','Dillon','Dorchester','Edgefield','Fairfield','Florence','Georgetown','Greenville','Greenwood','Hampton','Horry','Jasper','Kershaw','Lancaster','Laurens','Lee','Lexington','McCormick','Marion','Marlboro','Newberry','Oconee','Orangeburg','Pickens','Richland','Saluda','Spartanburg','Sumter','Union','Williamsburg','York'];\r\n\r\n case \"US-SD\":\r\n \treturn ['Aurora','Beadle','Bennett','Bon Homme','Brookings','Brown','Brule','Buffalo','Butte','Campbell','Charles Mix','Clark','Clay','Codington','Corson','Custer','Davison','Day','Deuel','Dewey','Douglas','Edmunds','Fall River','Faulk','Grant','Gregory','Haakon','Hamlin','Hand','Hanson','Harding','Hughes','Hutchinson','Hyde','Jackson','Jerauld','Jones','Kingsbury','Lake','Lawrence','Lincoln','Lyman','McCook','McPherson','Marshall','Meade','Mellette','Miner','Minnehaha','Moody','Pennington','Perkins','Potter','Roberts','Sanborn','Shannon','Spink','Stanley','Sully','Todd','Tripp','Turner','Union','Walworth','Yankton','Ziebach'];\r\n\r\n case \"US-TN\":\r\n \treturn ['Anderson','Bedford','Benton','Bledsoe','Blount','Bradley','Campbell','Cannon','Carroll','Carter','Cheatham','Chester','Claiborne','Clay','Cocke','Coffee','Crockett','Cumberland','Davidson','Decatur','DeKalb','Dickson','Dyer','Fayette','Fentress','Franklin','Gibson','Giles','Grainger','Greene','Grundy','Hamblen','Hamilton','Hancock','Hardeman','Hardin','Hawkins','Haywood','Henderson','Henry','Hickman','Houston','Humphreys','Jackson','Jefferson','Johnson','Knox','Lake','Lauderdale','Lawrence','Lewis','Lincoln','Loudon','McMinn','McNairy','Macon','Madison','Marion','Marshall','Maury','Meigs','Monroe','Montgomery','Moore','Morgan','Obion','Overton','Perry','Pickett','Polk','Putnam','Rhea','Roane','Robertson','Rutherford','Scott','Sequatchie','Sevier','Shelby','Smith','Stewart','Sullivan','Sumner','Tipton','Trousdale','Unicoi','Union','Van Buren','Warren','Washington','Wayne','Weakley','White','Williamson','Wilson'];\r\n\r\n case \"US-TX\":\r\n \treturn ['Anderson','Andrews','Angelina','Aransas','Archer','Armstrong','Atascosa','Austin','Bailey','Bandera','Bastrop','Baylor','Bee','Bell','Bexar','Blanco','Borden','Bosque','Bowie','Brazoria','Brazos','Brewster','Briscoe','Brooks','Brown','Burleson','Burnet','Caldwell','Calhoun','Callahan','Cameron','Camp','Carson','Cass','Castro','Chambers','Cherokee','Childress','Clay','Cochran','Coke','Coleman','Collin','Collingsworth','Colorado','Comal','Comanche','Concho','Cooke','Coryell','Cottle','Crane','Crockett','Crosby','Culberson','Dallam','Dallas','Dawson','Deaf Smith','Delta','Denton','DeWitt','Dickens','Dimmit','Donley','Duval','Eastland','Ector','Edwards','Ellis','El Paso','Erath','Falls','Fannin','Fayette','Fisher','Floyd','Foard','Fort Bend','Franklin','Freestone','Frio','Gaines','Galveston','Garza','Gillespie','Glasscock','Goliad','Gonzales','Gray','Grayson','Gregg','Grimes','Guadalupe','Hale','Hall','Hamilton','Hansford','Hardeman','Hardin','Harris','Harrison','Hartley','Haskell','Hays','Hemphill','Henderson','Hidalgo','Hill','Hockley','Hood','Hopkins','Houston','Howard','Hudspeth','Hunt','Hutchinson','Irion','Jack','Jackson','Jasper','Jeff Davis','Jefferson','Jim Hogg','Jim Wells','Johnson','Jones','Karnes','Kaufman','Kendall','Kenedy','Kent','Kerr','Kimble','King','Kinney','Kleberg','Knox','Lamar','Lamb','Lampasas','La Salle','Lavaca','Lee','Leon','Liberty','Limestone','Lipscomb','Live Oak','Llano','Loving','Lubbock','Lynn','McCulloch','McLennan','McMullen','Madison','Marion','Martin','Mason','Matagorda','Maverick','Medina','Menard','Midland','Milam','Mills','Mitchell','Montague','Montgomery','Moore','Morris','Motley','Nacogdoches','Navarro','Newton','Nolan','Nueces','Ochiltree','Oldham','Orange','Palo Pinto','Panola','Parker','Parmer','Pecos','Polk','Potter','Presidio','Rains','Randall','Reagan','Real','Red River','Reeves','Refugio','Roberts','Robertson','Rockwall','Runnels','Rusk','Sabine','San Augustine','San Jacinto','San Patricio','San Saba','Schleicher','Scurry','Shackelford','Shelby','Sherman','Smith','Somervell','Starr','Stephens','Sterling','Stonewall','Sutton','Swisher','Tarrant','Taylor','Terrell','Terry','Throckmorton','Titus','Tom Green','Travis','Trinity','Tyler','Upshur','Upton','Uvalde','Val Verde','Van Zandt','Victoria','Walker','Waller','Ward','Washington','Webb','Wharton','Wheeler','Wichita','Wilbarger','Willacy','Williamson','Wilson','Winkler','Wise','Wood','Yoakum','Young','Zapata','Zavala'];\r\n\r\n case \"US-UT\":\r\n \treturn ['Beaver','Box Elder','Cache','Carbon','Daggett','Davis','Duchesne','Emery','Garfield','Grand','Iron','Juab','Kane','Millard','Morgan','Piute','Rich','Salt Lake','San Juan','Sanpete','Sevier','Summit','Tooele','Uintah','Utah','Wasatch','Washington','Wayne','Weber'];\r\n\r\n case \"US-VT\":\r\n \treturn ['Addison','Bennington','Caledonia','Chittenden','Essex','Franklin','Grand Isle','Lamoille','Orange','Orleans','Rutland','Washington','Windham','Windsor'];\r\n\r\n case \"US-VA\":\r\n \treturn ['Accomack','Albemarle','Alleghany','Amelia','Amherst','Appomattox','Arlington','Augusta','Bath','Bedford','Bland','Botetourt','Brunswick','Buchanan','Buckingham','Campbell','Caroline','Carroll','Charles City','Charlotte','Chesterfield','Clarke','Craig','Culpeper','Cumberland','Dickenson','Dinwiddie','Essex','Fairfax','Fauquier','Floyd','Fluvanna','Franklin','Frederick','Giles','Gloucester','Goochland','Grayson','Greene','Greensville','Halifax','Hanover','Henrico','Henry','Highland','Isle Of Wight','James City','King And Queen','King George','King William','Lancaster','Lee','Loudoun','Louisa','Lunenburg','Madison','Mathews','Mecklenburg','Middlesex','Montgomery','Nelson','New Kent','Northampton','Northumberland','Nottoway','Orange','Page','Patrick','Pittsylvania','Powhatan','Prince Edward','Prince George','Prince William','Pulaski','Rappahannock','Richmond','Roanoke','Rockbridge','Rockingham','Russell','Scott','Shenandoah','Smyth','Southampton','Spotsylvania','Stafford','Surry','Sussex','Tazewell','Warren','Washington','Westmoreland','Wise','Wythe','York'];\r\n\r\n case \"US-WA\":\r\n \treturn ['Adams','Asotin','Benton','Chelan','Clallam','Clark','Columbia','Cowlitz','Douglas','Ferry','Franklin','Garfield','Grant','Grays Harbor','Island','Jefferson','King','Kitsap','Kittitas','Klickitat','Lewis','Lincoln','Mason','Okanogan','Pacific','Pend Oreille','Pierce','San Juan','Skagit','Skamania','Snohomish','Spokane','Stevens','Thurston','Wahkiakum','Walla Walla','Whatcom','Whitman','Yakima'];\r\n\r\n case \"US-WI\":\r\n \treturn ['Adams','Ashland','Barron','Bayfield','Brown','Buffalo','Burnett','Calumet','Chippewa','Clark','Columbia','Crawford','Dane','Dodge','Door','Douglas','Dunn','Eau Claire','Florence','Fond Du Lac','Forest','Grant','Green','Green Lake','Iowa','Iron','Jackson','Jefferson','Juneau','Kenosha','Kewaunee','La Crosse','Lafayette','Langlade','Lincoln','Manitowoc','Marathon','Marinette','Marquette','Menominee','Milwaukee','Monroe','Oconto','Oneida','Outagamie','Ozaukee','Pepin','Pierce','Polk','Portage','Price','Racine','Richland','Rock','Rusk','St. Croix','Sauk','Sawyer','Shawano','Sheboygan','Taylor','Trempealeau','Vernon','Vilas','Walworth','Washburn','Washington','Waukesha','Waupaca','Waushara','Winnebago','Wood'];\r\n\r\n case \"US-WV\":\r\n \treturn ['Barbour','Berkeley','Boone','Braxton','Brooke','Cabell','Calhoun','Clay','Doddridge','Fayette','Gilmer','Grant','Greenbrier','Hampshire','Hancock','Hardy','Harrison','Jackson','Jefferson','Kanawha','Lewis','Lincoln','Logan','McDowell','Marion','Marshall','Mason','Mercer','Mineral','Mingo','Monongalia','Monroe','Morgan','Nicholas','Ohio','Pendleton','Pleasants','Pocahontas','Preston','Putnam','Raleigh','Randolph','Ritchie','Roane','Summers','Taylor','Tucker','Tyler','Upshur','Wayne',\r\n 'Webster','Wetzel','Wirt','Wood','Wyoming'];\r\n\r\n case \"US-WY\":\r\n \treturn ['Albany','Big Horn','Campbell','Carbon','Converse','Crook','Fremont','Goshen','Hot Springs','Johnson','Laramie','Lincoln','Natrona','Niobrara','Park','Platte','Sheridan','Sublette','Sweetwater','Teton','Uinta','Washakie','Weston'];\r\n\r\n default:\r\n\r\n }\r\n}\r\nelse\r\n{\r\n return [];\r\n}\r\n\r\n}\r\n\r\nfunction validPreviousDatesForChronology(attibuteName)\r\n{\r\n switch (attibuteName)\r\n {\r\n case 'FireIgnitionDateTime':\r\n return [];\r\n\r\n case 'FireDiscoveryDateTime':\r\n return [\"FireIgnitionDateTime\"];\r\n\r\n case 'InitialResponseDateTime':\r\n return [\"FireDiscoveryDateTime\", \"FireIgnitionDateTime\"];\r\n\r\n case 'EstimatedContainmentDate':\r\n return [\"InitialResponseDateTime\", \"FireDiscoveryDateTime\", \"FireIgnitionDateTime\"];\r\n\r\n case 'ContainmentDateTime':\r\n return [\"InitialResponseDateTime\", \"FireDiscoveryDateTime\", \"FireIgnitionDateTime\"];\r\n\r\n case 'FireGrowthCessationDateTime':\r\n return [\"ContainmentDateTime\", \"InitialResponseDateTime\", \"FireDiscoveryDateTime\", \"FireIgnitionDateTime\"];\r\n\r\n case 'ControlDateTime':\r\n return [\"FireGrowthCessationDateTime\", \"ContainmentDateTime\", \"InitialResponseDateTime\", \"FireDiscoveryDateTime\", \"FireIgnitionDateTime\"];\r\n\r\n case 'FireOutDateTime':\r\n return [\"ControlDateTime\", \"FireGrowthCessationDateTime\", \"ContainmentDateTime\", \"InitialResponseDateTime\", \"FireDiscoveryDateTime\", \"FireIgnitionDateTime\"];\r\n\r\n case 'FinalStrategyAttainedDateTime':\r\n return [\"ControlDateTime\", \"FireGrowthCessationDateTime\", \"ContainmentDateTime\", \"InitialResponseDateTime\", \"FireDiscoveryDateTime\", \"FireIgnitionDateTime\"];\r\n\r\n default:\r\n return [];\r\n }\r\n}\r\nexport function getDefaultDateForField(attributeName, attributes)\r\n{\r\n let previousChronologyItems = validPreviousDatesForChronology(attributeName);\r\n if (previousChronologyItems.length === 0)\r\n {\r\n return new Date();\r\n }\r\n\r\n for (const item of previousChronologyItems)\r\n {\r\n if (attributes[item] !== null && attributes[item] !== '')\r\n {\r\n return new Date(attributes[item]);\r\n }\r\n }\r\n\r\n return new Date();\r\n}\r\n\r\nexport function getDependentAttributeMapping(dependentAttibuteName, dependentAttributeValue)\r\n{\r\n if (dependentAttibuteName === originFields.incidentTypeKind)\r\n {\r\n switch (dependentAttributeValue)\r\n {\r\n case 'FI':\r\n return [\"DF\", \"NS\", \"RX\", \"SF\", \"VF\", \"WF\"];\r\n case 'FM':\r\n return [\"BR\", \"FA\", \"FR\", \"CX\", \"SU\", \"OR\", \"PP\"];\r\n case 'HZ':\r\n return [\"BI\", \"FG\", \"EX\", \"RD\"];\r\n case 'AC':\r\n return [\"AI\", \"MV\", \"RA\", \"MR\", \"ST\"];\r\n case 'AP':\r\n return [\"RP\", \"LE\", \"MG\"];\r\n case 'PA':\r\n return [\"CM\", \"PS\", \"IN\"];\r\n case 'SR':\r\n return [\"UR\", \"WL\", \"MN\", \"MA\"];\r\n case 'ND':\r\n return [\"EQ\", \"FL\", \"HU\", \"LS\", \"TS\", \"TU\", \"VO\", \"WW\"];\r\n case 'TR':\r\n return [\"CT\", \"JT\", \"PC\", \"SI\"];\r\n default:\r\n return [];\r\n }\r\n }\r\n\r\n if (dependentAttibuteName === originFields.landownerKind)\r\n {\r\n switch (dependentAttributeValue)\r\n {\r\n case 'Federal':\r\n return [\"BIA\", \"BLM\", \"BOR\", \"DOD\", \"DOE\", \"NPS\", \"USFS\", \"USFWS\", \"RX\", \"SF\", \"VF\", \"WF\"];\r\n case 'Other':\r\n return [\"Foreign\", \"Tribal\", \"City\", \"County\", \"State\"];\r\n case 'Private':\r\n return [\"Private\", \"ANCSA\"];\r\n default:\r\n return [];\r\n }\r\n }\r\n\r\n if (dependentAttibuteName === originFields.fireCause)\r\n {\r\n switch (dependentAttributeValue)\r\n {\r\n case 'Human':\r\n return [\"Camping\", \"Smoking\", \"Incendiary\", \"Equipment\", \"Utilities\", \"Firearms/Weapons\", \"Debris/Open Burning\", \"Other Human Cause\", \"Railroad\"];\r\n case 'Natural':\r\n return [\"Other Natural Cause\", \"Coal Seam\", \"Lightning\", \"Volcanic\"];\r\n case 'Undetermined':\r\n return [\"Undetermined\"];\r\n default:\r\n return [];\r\n }\r\n }\r\n\r\n\r\n if (dependentAttibuteName === originFields.predominantFuelGroup)\r\n {\r\n switch (dependentAttributeValue)\r\n {\r\n case 'Grass':\r\n return [\"GR1\", \"GR2\", \"GR3\", \"GR4\", \"GR5\", \"GR6\", \"GR7\", \"GR8\", \"GR9\"];\r\n case 'Grass-Shrub':\r\n return [\"GS1\", \"GS2\", \"GS3\", \"GS4\"];\r\n case 'Shrub':\r\n case 'Brush': \r\n return [\"SH1\", \"SH2\", \"SH3\", \"SH4\", \"SH5\", \"SH6\", \"SH7\", \"SH8\", \"SH9\"];\r\n case 'Timber':\r\n return [\"TU1\", \"TU2\", \"TU3\", \"TU4\", \"TU5\", \"TL1\", \"TL2\", \"TL3\", \"TL4\", \"TL5\", \"TL6\", \"TL7\", \"TL8\", \"TL9\"];\r\n case 'Slash':\r\n return [\"SB1\", \"SB2\", \"SB3\", \"SB4\"];\r\n case 'Nonburnable':\r\n return [\"NB1\", \"NB2\", \"NB3\", \"NB8\", \"NB9\"];\r\n default:\r\n return [];\r\n }\r\n }\r\n}\r\n\r\nexport function getLandownerKindFromSMACategory(category)\r\n{\r\n const federals = [\r\n 'BIA',\r\n 'BLM',\r\n 'BOR',\r\n 'DOD',\r\n 'DOE',\r\n 'NPS',\r\n 'USFS',\r\n 'USFWS'\r\n];\r\n\r\nif (federals.includes(category))\r\n{\r\n return 'Federal';\r\n}\r\n\r\nreturn (category === 'Private') ? 'Private' : 'Other';\r\n}\r\n\r\nexport function getLandownerCategoryFromSMA(adminAgencyCode)\r\n{\r\n switch (adminAgencyCode)\r\n {\r\n case 'PVT':\r\n return 'Private';\r\n\r\n case 'USBR':\r\n return 'BOR';\r\n\r\n case 'FWS':\r\n return 'USFWS';\r\n\r\n case 'ST':\r\n return 'State';\r\n\r\n default:\r\n return adminAgencyCode;\r\n }\r\n}\r\nexport function getFuelGroupForModel(fuelModel)\r\n{\r\n if ([\"GR1\", \"GR2\", \"GR3\", \"GR4\", \"GR5\", \"GR6\", \"GR7\", \"GR8\", \"GR9\"].includes(fuelModel))\r\n {\r\n return 'Grass';\r\n }\r\n\r\n if ([\"GS1\", \"GS2\", \"GS3\", \"GS4\"].includes(fuelModel)) {\r\n return 'Grass-Shrub';\r\n }\r\n\r\n if ([\"SH1\", \"SH2\", \"SH3\", \"SH4\", \"SH5\", \"SH6\", \"SH7\", \"SH8\", \"SH9\"].includes(fuelModel)) {\r\n return 'Brush';\r\n }\r\n\r\n if ([\"TU1\", \"TU2\", \"TU3\", \"TU4\", \"TU5\", \"TL1\", \"TL2\", \"TL3\", \"TL4\", \"TL5\", \"TL6\", \"TL7\", \"TL8\", \"TL9\"].includes(fuelModel)) {\r\n return 'Timber';\r\n }\r\n\r\n if ([\"SB1\", \"SB2\", \"SB3\", \"SB4\"].includes(fuelModel)) {\r\n return 'Slash';\r\n }\r\n\r\n if ([\"NB1\", \"NB2\", \"NB3\", \"NB8\", \"NB9\"].includes(fuelModel)) {\r\n return 'Nonburnable';\r\n }\r\n\r\n return '';\r\n}\r\n//TODO: IMH: Throw this into JSON / Map or something.\r\nexport function getFieldAliasOverrides(field)\r\n{\r\n if (field === undefined || field === null) {\r\n return \"\";\r\n }\r\n \r\n if (field.name === originFields.landownerKind)\r\n {\r\n return \"Landowner Kind\";\r\n }\r\n\r\n if (field.name === originFields.gacc)\r\n {\r\n return \"Geographic Area Coordination Center Code\";\r\n }\r\n\r\n if (field.name === originFields.uniqueFireId)\r\n {\r\n return \"Unique Fire Identifier\";\r\n }\r\n\r\n if (field.name === originFields.informUserName)\r\n {\r\n return \"InFORM User Name\";\r\n }\r\n\r\n if (field.name === originFields.fsJobCode)\r\n {\r\n return \"USFS Job Code Prefix\";\r\n }\r\n\r\n if (field.name === originFields.fireCode)\r\n {\r\n return \"FireCode\";\r\n }\r\n\r\n if (field.name === originFields.finalFireReportApprovedDate)\r\n {\r\n return \"Certified Date Time\";\r\n }\r\n\r\n if (field.name === originFields.finalFireReportApprovedBy)\r\n {\r\n return \"Certified By\";\r\n }\r\n\r\n if (field.name === originFields.incidentTypeKind)\r\n {\r\n return \"Incident Type\";\r\n }\r\n\r\n if (field.name === originFields.landownerCategory)\r\n {\r\n return \"Landowner Category\";\r\n }\r\n\r\n if (field.name === originFields.incidentTypeCategory)\r\n {\r\n return \"Incident Category\";\r\n }\r\n\r\n if (field.name === originFields.state)\r\n {\r\n return \"State\";\r\n }\r\n\r\n if (field.name === originFields.county)\r\n {\r\n return \"County\";\r\n }\r\n\r\n if (field.name === originFields.dispatchCenterId)\r\n {\r\n return \"Dispatch Center ID\";\r\n }\r\n\r\n if (field.name === originFields.pooDispatchCenterID)\r\n {\r\n return \"Derived Dispatch Center ID\";\r\n }\r\n\r\n\r\n if (field.name === originFields.incidentJurisdictionalAgency)\r\n {\r\n return \"Jurisdictional Agency\";\r\n }\r\n\r\n if (field.name === originFields.jurisdictionalUnit)\r\n {\r\n return \"Jurisdictional Unit\";\r\n }\r\n\r\n if (field.name === originFields.pooProtectingAgency)\r\n {\r\n return \"Protecting Agency\";\r\n }\r\n\r\n if (field.name === originFields.pooProtectingUnit)\r\n {\r\n return \"Protecting Unit\";\r\n }\r\n\r\n if (field.name === originFields.fireDepartmentId)\r\n {\r\n return \"Protecting Fire Dept ID\";\r\n }\r\n\r\n if (field.name === originFields.jurisdictionalUnitParentUnit)\r\n {\r\n return \"Juris. Parent Unit\";\r\n }\r\n\r\n if (field.name === originFields.predominantFuelGroup)\r\n {\r\n return \"Fuel Group\";\r\n }\r\n\r\n if (field.name === originFields.predominantFuelModel)\r\n {\r\n return \"Fuel Model\";\r\n }\r\n\r\n if (field.name === originFields.fireIgnitionDate)\r\n {\r\n return \"Ignition\";\r\n }\r\n\r\n if (field.name === originFields.fireGrowthCessationDate)\r\n {\r\n return \"Growth Cessation\";\r\n }\r\n\r\n if (field.name === originFields.discoveryDate)\r\n {\r\n return \"Discovery\";\r\n }\r\n\r\n if (field.name === originFields.initialResponseDate)\r\n {\r\n return \"Initial Response\";\r\n }\r\n\r\n if (field.name === originFields.containmentDate)\r\n {\r\n return \"Containment\";\r\n }\r\n\r\n if (field.name === originFields.controlDate)\r\n {\r\n return \"Control\";\r\n }\r\n\r\n if (field.name === originFields.finalStrategyAttainedDate)\r\n {\r\n return \"Final Strategy Attained\";\r\n }\r\n\r\n if (field.name === originFields.outDate)\r\n {\r\n return \"Fire Declared Out\";\r\n }\r\n\r\n if (field.name === originFields.initialFireStrategy)\r\n {\r\n return \"Initial Strategy\";\r\n }\r\n\r\n if (field.name === originFields.isInitialFireStrategyMet)\r\n {\r\n return \"Initial Strategy Successful?\";\r\n }\r\n\r\n if (field.name === originFields.incidentSize)\r\n {\r\n return \"Incident Size (ac)\";\r\n }\r\n\r\n if (field.name === originFields.calculatedAcres)\r\n {\r\n return \"Calculated Size (ac)\";\r\n }\r\n\r\n if (field.name === originFields.injuries)\r\n {\r\n return \"Responder Injuries\";\r\n }\r\n\r\n if (field.name === originFields.fatalities)\r\n {\r\n return \"Responder Fatalities\";\r\n }\r\n\r\n if (field.name === originFields.residencesDestroyed)\r\n {\r\n return \"Residences Destroyed\";\r\n }\r\n\r\n if (field.name === originFields.structuresDestroyed)\r\n {\r\n return \"Other Structures Destroyed\";\r\n }\r\n\r\n if (field.name === originFields.isFireCauseInvestigated)\r\n {\r\n return \"Cause Investigated?\";\r\n }\r\n\r\n if (field.name === originFields.fireCause)\r\n {\r\n return \"Fire Cause\";\r\n }\r\n\r\n if (field.name === originFields.fireCauseGeneral)\r\n {\r\n return \"Fire Cause General\";\r\n }\r\n\r\n if (field.name === originFields.fireCauseSpecific)\r\n {\r\n return \"Fire Cause Specific\";\r\n }\r\n\r\n if (field.name === originFields.inFuelTreatment)\r\n {\r\n return \"In Fuels Treatment?\";\r\n }\r\n\r\n if (field.name === originFields.inNFPORS)\r\n {\r\n return \"In NFPORS?\";\r\n }\r\n\r\n if (field.name === originFields.isTrespass)\r\n {\r\n return \"Trespass?\";\r\n }\r\n\r\n if (field.name === originFields.report)\r\n {\r\n return \"Report Narrative\";\r\n }\r\n\r\n if (field.name === originFields.residencesThreatened)\r\n {\r\n return \"Residences Threatened\";\r\n }\r\n\r\n if (field.name === originFields.otherStructuresThreatened)\r\n {\r\n return \"Other Structures Threatened\";\r\n }\r\n\r\n if (field.name === perimeterFields.polygonDateTime)\r\n {\r\n return \"Perimeter Date/Time\";\r\n }\r\n\r\n if (field.name === perimeterFields.createDate)\r\n {\r\n return \"Create Date\";\r\n }\r\n\r\n if (field.name === perimeterFields.pooFireIntensityLevel)\r\n {\r\n return \"Point of Origin Fire Intensity Level\";\r\n }\r\n\r\n if (field.name === perimeterFields.primaryWeatherStationIdentifier)\r\n {\r\n return \"Primary Weather Station Identifier\";\r\n }\r\n\r\n if (field.name === perimeterFields.detectionMethod)\r\n {\r\n return \"Detection Method\";\r\n }\r\n\r\n if (field.name === \"FeatureStatus\")\r\n {\r\n return \"Feature Status\";\r\n }\r\n\r\n if (field.name === \"FeatureAccess\")\r\n {\r\n return \"Feature Access\";\r\n }\r\n\r\n if (field.name === \"DeleteThis\")\r\n {\r\n return \"Delete This\";\r\n }\r\n\r\n if (field.name === \"FeatureCategory\")\r\n {\r\n return \"Feature Category\";\r\n }\r\n\r\n if (field.name === \"MapMethod\")\r\n {\r\n return \"Map Method\";\r\n }\r\n\r\n if (field.name === \"POOFireIntensityLevel\")\r\n {\r\n return \"POO Fire Intensity Level\";\r\n }\r\n return field.alias;\r\n}\r\n\r\nexport function getOriginValidationInfo(attributes, fieldInfos) {\r\n\r\n let errors = {};\r\n let invalidFields = [];\r\n let fireDiscoveryDate = null;\r\n\r\n if( !attributes || !fieldInfos ){\r\n return {\r\n isValid: true,\r\n invalidFields: [],\r\n errors: {}\r\n }\r\n }\r\n\r\n const hundredYearsAgo = new Date(new Date().setFullYear(new Date().getFullYear() - 100));\r\n let previousDate = hundredYearsAgo;\r\n\r\n const chronologyError = \"Before above date(s)\";\r\n //Fire Ignition Date\r\n let attributeName = originFields.fireIgnitionDate\r\n let attributeValue = attributes[attributeName];\r\n if(attributeValue){\r\n const fireIgnitionDate = new Date(attributeValue);\r\n if(fireIgnitionDate <= hundredYearsAgo){\r\n errors[attributeValue] = \"Must be within 100 years.\"\r\n }\r\n previousDate = fireIgnitionDate;\r\n }\r\n\r\n //Fire Discovery Date\r\n attributeName = originFields.discoveryDate;\r\n attributeValue = attributes[attributeName];\r\n if(attributeValue){\r\n fireDiscoveryDate = new Date(attributeValue);\r\n if(fireDiscoveryDate <= hundredYearsAgo){\r\n errors[attributeName] = \"Must be within 100 years.\";\r\n }\r\n if(fireDiscoveryDate < previousDate){\r\n errors[attributeName] = chronologyError;\r\n }\r\n previousDate = fireDiscoveryDate;\r\n }\r\n\r\n // Initial Response Date\r\n attributeName = originFields.initialResponseDate\r\n attributeValue = attributes[attributeName];\r\n if(attributeValue){\r\n const blockScopeDate = new Date(attributeValue);\r\n if(blockScopeDate < previousDate){\r\n errors[attributeName] = chronologyError;\r\n }\r\n previousDate = blockScopeDate;\r\n }\r\n\r\n //Containment Date\r\n attributeName = originFields.containmentDate\r\n attributeValue = attributes[attributeName];\r\n if(attributeValue){\r\n const blockScopeDate = new Date(attributeValue);\r\n\r\n if(fireDiscoveryDate) {\r\n if(blockScopeDate <= new Date(new Date().setFullYear(fireDiscoveryDate.getFullYear + 1)) ) {\r\n errors[attributeName] = \"Must be within a year of Discovery\";\r\n }\r\n }\r\n if(blockScopeDate < previousDate){\r\n errors[attributeName] = chronologyError;\r\n }\r\n previousDate = blockScopeDate;\r\n }\r\n\r\n //attributeName = originFields.fireGrowthCessationDate\r\n //attributeValue = attributes[attributeName];\r\n //if(attributeValue){\r\n // const blockScopeDate = new Date(attributeValue);\r\n\r\n // if(fireDiscoveryDate) {\r\n // if(blockScopeDate <= new Date(new Date().setFullYear(fireDiscoveryDate.getFullYear + 1)) ) {\r\n // errors[attributeName] = \"Must be within a year of Discovery\";\r\n //}\r\n // }\r\n// if(blockScopeDate < previousDate){\r\n // errors[attributeName] = chronologyError;\r\n // }\r\n // previousDate = blockScopeDate;\r\n // }\r\n attributeName = originFields.fireGrowthCessationDate\r\n attributeValue = attributes[attributeName];\r\n if(attributeValue){\r\n \r\n const blockScopeDate = new Date(attributeValue);\r\n\r\n if(fireDiscoveryDate) {\r\n if(blockScopeDate <= fireDiscoveryDate){\r\n errors[attributeName] = \"Occurs before Discovery\";\r\n }\r\n }\r\n\r\n const controlDateValue = attributes[originFields.controlDate];\r\n if(controlDateValue)\r\n {\r\n const controlDate = new Date(controlDateValue);\r\n if(controlDate) {\r\n if(blockScopeDate > controlDate){\r\n errors[attributeName] = \"Occurs after Control\";\r\n }\r\n }\r\n }\r\n }\r\n\r\n //Control Date\r\n attributeName = originFields.controlDate\r\n attributeValue = attributes[attributeName];\r\n if(attributeValue){\r\n const blockScopeDate = new Date(attributeValue);\r\n\r\n if(fireDiscoveryDate) {\r\n if(blockScopeDate <= new Date(new Date().setFullYear(fireDiscoveryDate.getFullYear + 1)) ) {\r\n errors[attributeName] = \"Must be within a year of Discovery\";\r\n }\r\n }\r\n if(blockScopeDate < previousDate){\r\n errors[attributeName] = chronologyError;\r\n }\r\n previousDate = blockScopeDate;\r\n }\r\n\r\n //Incident Type Category\r\n attributeName = originFields.incidentTypeCategory;\r\n attributeValue = attributes[attributeName];\r\n if (!attributeValue) {\r\n errors[attributeName] = \"Incident Category cannot be null\";\r\n }\r\n\r\n //Fire Out Date\r\n attributeName = originFields.outDate\r\n attributeValue = attributes[attributeName];\r\n if(attributeValue){\r\n const blockScopeDate = new Date(attributeValue);\r\n if(fireDiscoveryDate) {\r\n if(blockScopeDate <= new Date(new Date().setFullYear(fireDiscoveryDate.getFullYear + 1)) ) {\r\n errors[attributeName] = \"Must be within a year of Discovery\";\r\n }\r\n }\r\n if(blockScopeDate < previousDate){\r\n errors[attributeName] = chronologyError;\r\n }\r\n previousDate = blockScopeDate;\r\n }\r\n\r\n //Final Strategy Attained Date\r\n attributeName = originFields.finalStrategyAttainedDate\r\n attributeValue = attributes[attributeName];\r\n if(attributeValue){\r\n const blockScopeDate = new Date(attributeValue);\r\n\r\n if(fireDiscoveryDate) {\r\n if(blockScopeDate <= fireDiscoveryDate){\r\n errors[attributeName] = \"Occurs before Discovery Date\";\r\n }\r\n }\r\n }\r\n\r\n //FS Job Code\r\n attributeName = originFields.fsJobCode\r\n attributeValue = attributes[attributeName];\r\n if(attributeValue){\r\n if( attributeValue.length !== 2) {\r\n errors[attributeName] = \"Must be 2 characters\";\r\n }\r\n }\r\n\r\n //Final Fire Report Narrative\r\n attributeName = originFields.report\r\n debugger;\r\n attributeValue = attributes[attributeName];\r\n if(attributeValue)\r\n {\r\n if( attributeValue.length > 3999) \r\n {\r\n errors[attributeName] = \"Cannot exceed 3,999 characters\";\r\n }\r\n }\r\n \r\n //Incident Size\r\n attributeName = originFields.incidentSize\r\n attributeValue = attributes[attributeName];\r\n const isFalseAlarm = (attributes[originFields.incidentTypeCategory] === \"FA\");\r\n\r\n if(attributeValue)\r\n {\r\n if((!isNaN(attributeValue) && (attributeValue < 0.01) ) && !isFalseAlarm)\r\n {\r\n errors[attributeName] = \"Must be greater than or equal to 0.01 acres\";\r\n }\r\n }\r\n\r\n //Calculated Acres\r\n attributeName = originFields.calculatedAcres\r\n attributeValue = attributes[attributeName];\r\n if(attributeValue)\r\n {\r\n if((!isNaN(attributeValue) && (attributeValue < 0.01) )&& !isFalseAlarm)\r\n {\r\n errors[attributeName] = \"Must be greater than or equal to 0.01 acres\";\r\n }\r\n }\r\n\r\n //Discovery Acres\r\n attributeName = originFields.discoveryAcres\r\n attributeValue = attributes[attributeName];\r\n if(attributeValue)\r\n {\r\n if(!isNaN(attributeValue) && (attributeValue < 0.01) )\r\n {\r\n errors[attributeName] = \"Must be greater than or equal to 0.01 acres\";\r\n }\r\n }\r\n\r\n attributeName = originFields.localIncidentIdentifier\r\n attributeValue = attributes[attributeName];\r\n if(attributeValue){\r\n if( attributeValue.length < 6) {\r\n errors[attributeName] = \"Must be at least 6 characters\";\r\n }\r\n\r\n if( attributeValue.length > 10) {\r\n errors[attributeName] = \"Must not exceed 10 characters\";\r\n }\r\n }\r\n\r\n attributeName = originFields.nonFederalFinancialCode\r\n attributeValue = attributes[attributeName];\r\n if(attributeValue){\r\n if(attributeValue.length > 20) {\r\n errors[attributeName] = \"Cannot exceed 20 characters\";\r\n }\r\n }\r\n\r\n attributeName = originFields.name\r\n attributeValue = attributes[attributeName];\r\n if(attributeValue){\r\n if( attributeValue.length < 2) {\r\n errors[attributeName] = \"Must be at least 2 characters\";\r\n }\r\n\r\n if( attributeValue.length > 50) {\r\n errors[attributeName] = \"Must not exceed 50 characters\";\r\n }\r\n }\r\n\r\n //ABCDMisc\r\n attributeName = originFields.abcdMisc\r\n attributeValue = attributes[attributeName];\r\n if(attributeValue){\r\n if( attributeValue.length !== 4) {\r\n errors[attributeName] = \"Must be 4 characters\";\r\n }\r\n }\r\n\r\n //Point of Origin Protecting Unit\r\n attributeName = originFields.pooProtectingUnit\r\n attributeValue = attributes[attributeName];\r\n if(attributeValue){\r\n if(attributeValue.length > 6) {\r\n errors[attributeName] = \"Character maximum of 6\";\r\n }\r\n\r\n if(attributeValue.length < 5) {\r\n errors[attributeName] = \"Must be at least 5 characters\";\r\n }\r\n\r\n if(attributeValue.startsWith(\" \") || attributeValue.endsWith(\" \"))\r\n {\r\n errors[attributeName] = \"Leading and trailing spaces not allowed\";\r\n }\r\n\r\n if(attributeValue.includes(\"-\"))\r\n {\r\n errors[attributeName] = \"Dashes not allowed\";\r\n }\r\n }\r\n\r\n //Point of Origin Jurisdictional Unitds\r\n attributeName = originFields.pooJurisdictionalUnit\r\n attributeValue = attributes[attributeName];\r\n if(attributeValue){\r\n if( attributeValue.length < 5 || attributeValue.length > 6) {\r\n errors[attributeName] = \"Character minimum of 5 maximum of 6\";\r\n }\r\n\r\n if(attributeValue.startsWith(\" \") || attributeValue.endsWith(\" \"))\r\n {\r\n errors[attributeName] = \"Leading and trailing spaces not allowed\";\r\n }\r\n\r\n if(attributeValue.includes(\"-\"))\r\n {\r\n errors[attributeName] = \"Dashes not allowed\";\r\n }\r\n }\r\n\r\n //Point of Origin Jurisdictional Parent Unit\r\n /*attributeName = originFields.pooJurisdictionalUnitParentUnit\r\n attributeValue = attributes[attributeName];\r\n if(attributeValue){\r\n if( attributeValue.length < 5 || attributeValue.length > 6) {\r\n errors[attributeName] = \"Character minimum of 5 maximum of 6\";\r\n }\r\n }*/\r\n\r\n //whole number check for integers\r\n if(fieldInfos) {\r\n const integerFieldInfos = fieldInfos.filter(info => {return [\"integer\",\"small-integer\"].includes(info.type)});\r\n for (let fieldInfo of integerFieldInfos) {\r\n const value = attributes[fieldInfo.name];\r\n if(value !== null && value !== undefined && (value % 1 !== 0) ){\r\n errors[fieldInfo.name] = \"Expecting whole number\";\r\n }\r\n }\r\n }\r\n\r\n //positive number check\r\n const mustBePositiveNumbers = [\r\n originFields.calculatedAcres,\r\n originFields.incidentSize,\r\n originFields.fatalities,\r\n originFields.injuries,\r\n originFields.residencesDestroyed,\r\n originFields.residencesThreatened,\r\n originFields.structuresDestroyed,\r\n originFields.otherStructuresThreatened\r\n ];\r\n for (attributeName of mustBePositiveNumbers) {\r\n const value = attributes[attributeName];\r\n if(value !== null && value !== undefined && (value < 0) ){\r\n errors[attributeName] = \"Expecting positive number\";\r\n }\r\n }\r\n\r\n\r\n\r\n let isValid = true;\r\n for(var key in errors) {\r\n if(errors.hasOwnProperty(key)){\r\n if(errors[key]){\r\n isValid = false;\r\n invalidFields.push(key);\r\n }\r\n }\r\n }\r\n\r\n const validationInfo = {\r\n isValid: isValid,\r\n invalidFields: invalidFields,\r\n errors: errors\r\n }\r\n\r\n return validationInfo;\r\n}\r\n\r\nexport function isClearableDateField(fieldName, canWrite)\r\n{\r\n const clearableDateFields = [originFields.fireIgnitionDate, originFields.initialResponseDate,\r\n originFields.fireGrowthCessationDate, originFields.estimatedContainmentDate, originFields.containmentDate,\r\n originFields.controlDate, originFields.outDate, originFields.finalStrategyAttainedDate];\r\n\r\n return (canWrite) ? clearableDateFields.includes(fieldName) : false;\r\n}\r\n\r\nexport function isAcreageField(fieldName)\r\n{\r\n const acreageFields = [originFields.calculatedAcres, originFields.incidentSize];\r\n return acreageFields.includes(fieldName);\r\n}\r\n\r\nexport function getAcresFromIncident(incident)\r\n{\r\n return Math.max(incident.attributes[originFields.calculatedAcres], incident.attributes[originFields.incidentSize]);\r\n}\r\n\r\nexport function getDomainForCauses (fieldValue, codedValues)\r\n{\r\n if (fieldValue && codedValues)\r\n {\r\n const matchingCodedValue = codedValues.find(cv => {return cv.code === fieldValue });\r\n if (matchingCodedValue)\r\n {\r\n return matchingCodedValue.name\r\n }\r\n else\r\n {\r\n return fieldValue;\r\n };\r\n }\r\n\r\n}\r\n\r\nexport function getNameForCategory(categoryCode)\r\n{\r\n switch (categoryCode)\r\n {\r\n case \"BR\":\r\n return \"Emergency Stabilization / BAER\";\r\n case \"NS\":\r\n return \"Non-Statistical/Other\";\r\n case \"DF\":\r\n return \"Debris/Product Fire\";\r\n case \"FR\":\r\n return \"Fire Rehabilitation\";\r\n case \"SU\":\r\n return \"Incident/Event Support\";\r\n case \"PP\":\r\n return \"Preparedness/Preposition\";\r\n case \"RX\":\r\n return \"Prescribed Fire\";\r\n case \"SF\":\r\n return \"Structure Fire\";\r\n case \"VF\":\r\n return \"Vehicle Fire\";\r\n case \"WF\":\r\n return \"Wildfire\";\r\n case \"CX\":\r\n return \"Incident Complex\";\r\n case \"FA\":\r\n return \"False Alarm\";\r\n case \"OR\":\r\n return \"Out of Area Response\";\r\n default:\r\n return categoryCode;\r\n }\r\n}\r\n\r\nexport function getNameForKind(kindCode)\r\n{\r\n switch (kindCode)\r\n {\r\n case \"FI\":\r\n return \"Fire\";\r\n case \"HZ\":\r\n return \"Hazardous Conditions\";\r\n case \"AC\":\r\n return \"Accident\";\r\n case \"AP\":\r\n return \"Agency Program Support\";\r\n case \"PA\":\r\n return \"Public Assistance\";\r\n case \"SR\":\r\n return \"Search / Rescue / Recovery\";\r\n case \"ND\":\r\n return \"Natural Disaster & Severe Weather\";\r\n case \"TR\":\r\n return \"Training and Proficency\";\r\n default:\r\n return kindCode;\r\n }\r\n}\r\n\r\nexport function isPerimeterMultipart(perimeter)\r\n{\r\n if (!perimeter || !perimeter.geometry || !perimeter.geometry.rings)\r\n {\r\n return false;\r\n }\r\n\r\n if (perimeter.geometry.rings.length > 1)\r\n {\r\n return true;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nexport function isPerimeterTriangleOrMissing(perimeter)\r\n{\r\n let lat = [];\r\n let long = [];\r\n\r\n if (!perimeter || !perimeter.geometry || !perimeter.geometry.rings)\r\n {\r\n return true;\r\n }\r\n\r\n if (perimeter.geometry.rings[0].length === 4 && perimeter.geometry.rings.length === 1)\r\n {\r\n for (var i = 0; i < perimeter.geometry.rings[0].length; i++)\r\n {\r\n let item = perimeter.geometry.rings[0][i];\r\n let containsSameLat = lat.includes(item[0]);\r\n let containsSameLong = long.includes(item[1]);\r\n\r\n if (containsSameLat && containsSameLong)\r\n {\r\n return true;\r\n }\r\n else\r\n {\r\n lat.push(item[0]);\r\n long.push(item[1]);\r\n }\r\n }\r\n return false;\r\n }\r\n return false;\r\n}\r\n\r\nexport function getPerimeterValidationInfo(attributes, fieldInfos) {\r\n let errors = {};\r\n let invalidFields = [];\r\n\r\n if (attributes === null || attributes === undefined) \r\n {\r\n console.log(\"Error: Called getPerimeterValidationInfo but with null or undefined attributes\");\r\n }\r\n let attributeName = perimeterFields.mapMethod\r\n let attributeValue = attributes[attributeName];\r\n if(attributeValue){\r\n if(attributeValue === perimeterFields.mapMethodAutoGenerated)\r\n {\r\n errors[attributeName] = \"Update auto generated perimeter and map method.\"\r\n }\r\n }\r\n\r\n let isValid = true;\r\n for(var key in errors) {\r\n if(errors.hasOwnProperty(key)){\r\n if(errors[key])\r\n {\r\n isValid = false;\r\n invalidFields.push(key);\r\n }\r\n }\r\n }\r\n\r\n const validationInfo = {\r\n isValid: isValid,\r\n invalidFields: invalidFields,\r\n errors: errors\r\n }\r\n\r\n return validationInfo;\r\n}\r\n\r\nexport function findDuplicateAttributes(baseIncident, incident)\r\n{\r\n var unchangedValues = [];\r\n for (var prop in baseIncident)\r\n {\r\n if(incident.attributes.hasOwnProperty(prop))\r\n {\r\n if (baseIncident[prop] === incident.attributes[prop])\r\n {\r\n unchangedValues.push(prop);\r\n }\r\n }\r\n }\r\n return unchangedValues;\r\n}\r\n\r\nexport function isIncidentComplete(incident)\r\n{\r\n return (getMissingFieldsCount(incident) === 0 && !incident.attributes[originFields.isQuarantined]);\r\n}\r\n\r\nexport function getMissingFieldsCount(incident) \r\n{\r\n if (incident.attributes[originFields.incidentTypeCategory] !== \"WF\")\r\n {\r\n return 0;\r\n }\r\n\r\n let count = 0;\r\n const requiredFields = getRequiredFields(incident);\r\n const missingFields = requiredFields.filter(field => { return incident.attributes[field] === undefined || incident.attributes[field] === null });\r\n\r\n count = missingFields.length;\r\n\r\n return (count <= 0) ? 0 : count;\r\n}\r\n\r\nexport function getAcresFieldName (code) \r\n{\r\n switch (code) \r\n {\r\n case 'BIA':\r\n return 'AcresBIA';\r\n\r\n case 'BLM':\r\n return 'AcresBLM';\r\n\r\n case 'BOR':\r\n return 'AcresBOR';\r\n \r\n case 'DOD':\r\n return 'AcresDOD';\r\n\r\n case 'DOE':\r\n return 'AcresDOE';\r\n\r\n case 'NPS':\r\n return 'AcresNPS';\r\n\r\n case 'USFS':\r\n return 'AcresUSFS';\r\n\r\n case 'USFWS':\r\n return 'AcresUSFWS';\r\n\r\n case 'Foreign':\r\n return 'AcresForeign';\r\n\r\n case 'Tribal':\r\n return 'AcresTribal';\r\n\r\n case 'City':\r\n return 'AcresCity';\r\n\r\n case 'County':\r\n return 'AcresCounty';\r\n\r\n case 'State':\r\n return 'AcresState';\r\n\r\n case 'Private':\r\n return 'AcresPrivate';\r\n\r\n case 'ANCSA':\r\n return 'AcresANCSA';\r\n\r\n case 'OthLoc':\r\n return 'AcresOtherLocal';\r\n\r\n case 'OthFed':\r\n return 'AcresOtherFederal';\r\n }\r\n}\r\nexport function getSQLDateEndOfDay(date)\r\n{\r\n date = new Date(date);\r\n date.setHours(23,59,59,999);\r\n return date.toISOString();\r\n}\r\n\r\nexport function getSQLDate(date)\r\n{\r\n return new Date(date).toISOString();\r\n}\r\n\r\n\r\nexport function getIncidentStatus(incident)\r\n{\r\n if(incident.attributes[originFields.isQuarantined])\r\n {\r\n return enums.incidentStatus.conflict;\r\n }\r\n\r\n if(incident.attributes[originFields.incidentTypeCategory] === 'RX')\r\n {\r\n return enums.incidentStatus.prescribed;\r\n }\r\n\r\n if(incident.attributes[originFields.incidentTypeCategory] !== 'RX' && incident.attributes[originFields.incidentTypeCategory] !== 'WF')\r\n {\r\n return enums.incidentStatus.nonWildfire;\r\n }\r\n\r\n if(isIncidentCertified(incident))\r\n {\r\n return enums.incidentStatus.certified;\r\n }\r\n else if(isIncidentComplete(incident) && !incident.attributes[originFields.isQuarantined])\r\n {\r\n return enums.incidentStatus.complete;\r\n }\r\n else\r\n {\r\n return enums.incidentStatus.incomplete;\r\n }\r\n}\r\n\r\nexport function getRenderSize(incident)\r\n{\r\n var calculatedAcres = incident.attributes[originFields.calculatedAcres] || 0;\r\n var incidentSize = incident.attributes[originFields.incidentSize] || 0;\r\n\r\n return Math.max(calculatedAcres, incidentSize);\r\n}\r\n\r\nexport function belowUniquenessThreshold(incident)\r\n{\r\n if(incident.attributes && incident.attributes[originFields.minUniqueness])\r\n {\r\n return incident.attributes[originFields.minUniqueness] <= .25;\r\n }\r\n}\r\n\r\nexport function isIncidentFederal(incident)\r\n{\r\n if(incident.attributes && incident.attributes[originFields.incidentJurisdictionalAgency])\r\n {\r\n return (enums.federal_POOJurisdictionalAgency.indexOf(incident.attributes[originFields.incidentJurisdictionalAgency]) !== -1);\r\n }\r\n else\r\n {\r\n return false;\r\n }\r\n}\r\n\r\nexport function isIncidentAlaska(incident)\r\n{\r\n if(incident.attributes && incident.attributes[originFields.state])\r\n {\r\n return incident.attributes[originFields.state].indexOf(\"AK\") !== -1;\r\n }\r\n else\r\n {\r\n return false;\r\n }\r\n}\r\n\r\nexport function isIncidentCertified(incident)\r\n{\r\n if (incident && incident.attributes && incident.attributes[originFields.certifiedField])\r\n {\r\n return incident.attributes[originFields.certifiedField] === originFields.certifiedCodedValue;\r\n }\r\n else {\r\n return null;\r\n }\r\n}\r\n\r\nexport function is209(incident) {\r\n if (incident && incident.attributes && incident.attributes[originFields.certifiedField]){\r\n return incident.attributes[originFields.certifiedField] === originFields.ics209CodedValue;\r\n }\r\n else {\r\n return null;\r\n }\r\n}\r\n\r\nexport function getRequiredFields(incident) {\r\n \r\n if (incident.attributes[originFields.incidentTypeCategory] !== \"WF\") \r\n {\r\n return [];\r\n }\r\n\r\n const incidentDiscoveryDate = new Date(incident.attributes[originFields.discoveryDate]);\r\n const requirementDate = new Date(2023, 8, 1, 1, 1, 1, 999);\r\n\r\n const updatedCauseValidationsRequired = incidentDiscoveryDate >= requirementDate;\r\n\r\n const isAlaska = isIncidentAlaska(incident);\r\n const isFederal = isIncidentFederal(incident);\r\n\r\n var requiredFields = (isAlaska) ? [...originFields.requiredAlaska] : ((isFederal) ? [...originFields.requiredFederal] : [...originFields.requiredAllAgencies]);\r\n\r\n //2024 Updated Cause Requirements\r\n if (updatedCauseValidationsRequired) \r\n {\r\n debugger;\r\n const hasFireCause = (incident.attributes !== null && incident.attributes[originFields.fireCauseId]);\r\n const hasFireCauseGeneral = (incident.attributes !== null && incident.attributes[originFields.fireCauseGeneralId]);\r\n const hasFireCauseSpecific = (incident.attributes !== null && incident.attributes[originFields.fireCauseSpecificId]);\r\n const hasFireSpecificCauseDetail = (incident.attributes !== null && incident.attributes[originFields.fireCauseSpecificDetailID]);\r\n const hasActivityGroup = (incident.attributes !== null && incident.attributes[originFields.fireCauseActivityGroupID]);\r\n \r\n var ageCategoryRequired = true;\r\n var prohibitedRequired = true;\r\n var remarksRequired = false;\r\n\r\n //Always add Fire Cause Specific\r\n if (!requiredFields.includes(originFields.fireCauseSpecificId)) \r\n {\r\n requiredFields.push(originFields.fireCauseSpecificId);\r\n }\r\n\r\n if (hasFireCause && hasFireCauseGeneral) \r\n {\r\n //Natural/Natural\r\n if (incident.attributes[originFields.fireCauseId] === 1 && incident.attributes[originFields.fireCauseGeneralId] === 1) \r\n { \r\n ageCategoryRequired = false;\r\n prohibitedRequired = false;\r\n }\r\n\r\n //Undetermined, Undetermined\r\n if (incident.attributes[originFields.fireCauseId] === 2 && incident.attributes[originFields.fireCauseGeneralId] === 2) \r\n { \r\n ageCategoryRequired = false;\r\n prohibitedRequired = false;\r\n remarksRequired = true;\r\n }\r\n\r\n //Human, Undetermined\r\n if (incident.attributes[originFields.fireCauseId] === 3 && incident.attributes[originFields.fireCauseGeneralId] === 2) \r\n { \r\n ageCategoryRequired = false;\r\n prohibitedRequired = false;\r\n remarksRequired = true;\r\n }\r\n\r\n //Human, Power Gen or Railroad, age category not required\r\n if (incident.attributes[originFields.fireCauseId] === 3 && (incident.attributes[originFields.fireCauseGeneralId] === 7|| incident.attributes[originFields.fireCauseGeneralId] === 8)) \r\n { \r\n ageCategoryRequired = false;\r\n }\r\n\r\n if (hasFireCauseSpecific && (incident.attributes[originFields.fireCauseSpecificId] === 3 || incident.attributes[originFields.fireCauseSpecificId] === 4)) {\r\n remarksRequired = true;\r\n }\r\n\r\n if (hasFireSpecificCauseDetail && (incident.attributes[originFields.fireCauseSpecificDetailID] === 60 || incident.attributes[originFields.fireCauseSpecificDetailID] === 61)) {\r\n remarksRequired = true;\r\n }\r\n\r\n if (hasActivityGroup && (incident.attributes[originFields.fireCauseActivityGroupID] === 17 || incident.attributes[originFields.fireCauseActivityGroupID] === 18)) {\r\n remarksRequired = true;\r\n }\r\n\r\n //Add the stuff:\r\n if (ageCategoryRequired && !requiredFields.includes(originFields.fireCauseAgeCategoryID)) \r\n {\r\n requiredFields.push(originFields.fireCauseAgeCategoryID);\r\n }\r\n\r\n if (prohibitedRequired && !requiredFields.includes(originFields.isCauseProhibited)) \r\n {\r\n requiredFields.push(originFields.isCauseProhibited);\r\n }\r\n\r\n if (remarksRequired && !requiredFields.includes(originFields.fireCauseComments)) \r\n {\r\n requiredFields.push(originFields.fireCauseComments);\r\n }\r\n }\r\n\r\n } //end of 2024 fire cause requirements\r\n\r\n\r\n\r\n //Remove FireCode from requiredFields if ABCDMisc is populated\r\n if (incident.attributes !== null && incident.attributes[originFields.abcdMisc] && incident.attributes[originFields.abcdMisc].length === 4) {\r\n requiredFields = requiredFields.filter(name => name !== originFields.fireCode);\r\n }\r\n\r\n //Remove InitialFireStrategy from requiredFields if POOJurisdictionalUnit != USFS\r\n if (incident.attributes !== null && incident.attributes[originFields.incidentJurisdictionalAgency] && (incident.attributes[originFields.incidentJurisdictionalAgency] !== \"USFS\" && incident.attributes[originFields.incidentJurisdictionalAgency] !== \"FS\")) {\r\n requiredFields = requiredFields.filter(name => name !== originFields.initialFireStrategy);\r\n }\r\n\r\n //Remove FireCode/ABCDMisc from requiredFields if pooProtectingAgency is not federal\r\n if (incident.attributes !== null && incident.attributes[originFields.pooProtectingAgency] && enums.federal_POOJurisdictionalAgency.indexOf(incident.attributes[originFields.pooProtectingAgency]) === -1) {\r\n requiredFields = requiredFields.filter(name => name !== originFields.fireCode);\r\n requiredFields = requiredFields.filter(name => name !== originFields.abcdMisc);\r\n }\r\n\r\n return requiredFields;\r\n\r\n}\r\n\r\nexport function getDisplayValue(fieldInfo, value){\r\n if (fieldInfo.domain) {\r\n const matchingCodedValue = fieldInfo.domain.codedValues.find(cv => {return cv.code === value });\r\n return (matchingCodedValue) ? matchingCodedValue.name : value;\r\n }\r\n const isDate = originFields.dateFieldsWithTypeDouble.includes(fieldInfo.name);\r\n if(fieldInfo.type === \"date\" || isDate){\r\n return moment(value).format(\"MM/DD/YYYY [at] h:mm A\");\r\n }\r\n\r\n return value;\r\n}\r\n\r\n","import Request from './request';\r\nimport * as geometryEngine from \"@arcgis/core/geometry/geometryEngine\";\r\nimport Polygon from \"@arcgis/core/geometry/Polygon\";\r\nimport { loadModules } from 'esri-loader';\r\nimport printConfig from '../defaults/Print.json';\r\nimport originFields from '../defaults/PointOfOriginFields.json'\r\nimport consts from '../defaults/Enums.json'\r\nimport { formatIdentifierForApi, getPolygonCreateDate } from '../utils/incidentHelper';\r\n\r\nconst defaults = {\r\n apiUrl: 'api',\r\n portalUrl: '',\r\n user: '',\r\n folder: ''\r\n};\r\n\r\nconst Landowners = [\r\n {\r\n LandownerCategoryID: 1,\r\n Name: \"Bureau of Indian Affairs\",\r\n Code: \"BIA\",\r\n LandownerKind: \"Federal\"\r\n },\r\n {\r\n LandownerCategoryID: 2,\r\n Name: \"Bureau of Land Management\",\r\n Code: \"BLM\",\r\n LandownerKind: \"Federal\"\r\n },\r\n {\r\n LandownerCategoryID: 3,\r\n Name: \"Bureau of Reclamation\",\r\n Code: \"BOR\",\r\n LandownerKind: \"Federal\"\r\n },\r\n {\r\n LandownerCategoryID: 4,\r\n Name: \"Department of Defense\",\r\n Code: \"DOD\",\r\n LandownerKind: \"Federal\"\r\n },\r\n {\r\n LandownerCategoryID: 5,\r\n Name: \"Department of Energy\",\r\n Code: \"DOE\",\r\n LandownerKind: \"Federal\"\r\n },\r\n {\r\n LandownerCategoryID: 6,\r\n Name: \"National Park Service\",\r\n Code: \"NPS\",\r\n LandownerKind: \"Federal\"\r\n },\r\n {\r\n LandownerCategoryID: 7,\r\n Name: \"US Forest Service\",\r\n Code: \"USFS\",\r\n LandownerKind: \"Federal\"\r\n },\r\n {\r\n LandownerCategoryID: 8,\r\n Name: \"US Fish and Wildlife Service\",\r\n Code: \"USFWS\",\r\n LandownerKind: \"Federal\"\r\n },\r\n {\r\n LandownerCategoryID: 9,\r\n Name: \"Foreign Government\",\r\n Code: \"Foreign\",\r\n LandownerKind: \"Private\"\r\n },\r\n {\r\n LandownerCategoryID: 10,\r\n Name: \"Tribal Government (non-trust lands) or Alaska Native Corporation\",\r\n Code: \"Tribal\",\r\n LandownerKind: \"Other\"\r\n },\r\n {\r\n LandownerCategoryID: 11,\r\n Name: \"City or Equivalent Government\",\r\n Code: \"City\",\r\n LandownerKind: \"Other\"\r\n },\r\n {\r\n LandownerCategoryID: 12,\r\n Name: \"County or Equivalent Government\",\r\n Code: \"County\",\r\n LandownerKind: \"Other\"\r\n },\r\n {\r\n LandownerCategoryID: 13,\r\n Name: \"State or Equivalent Government\",\r\n Code: \"State\",\r\n LandownerKind: \"Other\"\r\n },\r\n {\r\n LandownerCategoryID: 14,\r\n Name: \"Individual or Private Corporation\",\r\n Code: \"Private\",\r\n LandownerKind: \"Private\"\r\n },\r\n {\r\n LandownerCategoryID: 15,\r\n Name: \"Alaska Native Claims Settlement Act\",\r\n Code: \"ANCSA\",\r\n LandownerKind: \"Private\"\r\n },\r\n {\r\n LandownerCategoryID: 16,\r\n Name: \"Other Local\",\r\n Code: \"OthLoc\",\r\n LandownerKind: \"Other\"\r\n },\r\n {\r\n LandownerCategoryID: 18,\r\n Name: \"Other Federal\",\r\n Code: \"OthFed\",\r\n LandownerKind: \"Federal\"\r\n }\r\n];\r\n\r\nconst StateAbbreviation = 'STATE_ABBR';\r\n\r\nexport default class Api {\r\n\r\n constructor(params) \r\n {\r\n this.props = Object.assign({}, defaults, params);\r\n this.request = new Request(this.props.token);\r\n this.basename = process.env.PUBLIC_URL;\r\n }\r\n\r\n setSortField(sortField) {\r\n this.props.sortField = sortField;\r\n }\r\n\r\n setSortDesc(sortDesc) {\r\n this.props.sortDesc = sortDesc;\r\n }\r\n setPortalUrl(url) {\r\n this.props.portalUrl = url;\r\n }\r\n\r\n setOriginLayerUrl(url) {\r\n this.props.originLayerUrl = url;\r\n }\r\n\r\n setRelationshipLayerUrl(url) {\r\n this.props.relationshipLayerUrl = url;\r\n }\r\n\r\n setJurisdictionalFeatureLayerUrl(url) {\r\n this.props.jurisdictionalFeatureLayerUrl = url;\r\n }\r\n\r\n setPerimetersLayerUrl(url) {\r\n this.props.perimetersLayerUrl = url;\r\n }\r\n\r\n setFinalPerimetersLayerUrl(url) {\r\n this.props.finalPerimetersLayerUrl = url;\r\n }\r\n\r\n setResourceLayerUrl(url) {\r\n this.props.resourceLayerUrl = url;\r\n }\r\n\r\n setCapabilityRequestLayerUrl(url) {\r\n this.props.capabilityRequestLayerUrl = url;\r\n }\r\n\r\n setPerimeterDeleteLayerUrl(url) {\r\n this.props.perimeterDeleteLayerUrl = url;\r\n }\r\n\r\n setAcresByJurisdictionUrl(url) {\r\n this.props.acresByJurisdictionUrl = url;\r\n }\r\n\r\n setOriginLayerToken(token) {\r\n this.props.setOriginLayerToken = token;\r\n }\r\n\r\n setOriginApiUrl(url) {\r\n this.props.originApiUrl = url;\r\n }\r\n\r\n setJurisdictionalFeatureLayerToken(token) {\r\n this.props.setJurisdictionalFeatureLayerToken = token;\r\n }\r\n\r\n setPerimetersLayerToken(token) {\r\n this.props.setPerimetersLayerToken = token;\r\n }\r\n\r\n setRelationshipLayerToken(token) {\r\n this.props.setRelationshipLayerToken = token;\r\n }\r\n\r\n setAcresByJurisdictionToken(token) {\r\n this.props.setAcresByJurisdictionToken = token;\r\n }\r\n\r\n setFinalPerimetersLayerToken(token) {\r\n this.props.setFinalPerimetersLayerToken = token;\r\n }\r\n\r\n\r\n setPerimeterDeleteLayerToken(token) {\r\n this.props.setPerimeterDeleteLayerToken = token;\r\n }\r\n\r\n setOriginApiToken(token) {\r\n this.props.setOriginApiToken = token;\r\n }\r\n setAuth(user) {\r\n this.props.user = user;\r\n }\r\n\r\n setToken(token) {\r\n this.props.token = token;\r\n }\r\n\r\n getToken() {\r\n return this.props.token;\r\n }\r\n\r\n setCredential(credential) {\r\n this.props.credential = credential;\r\n }\r\n\r\n getCredential() {\r\n return this.props.credential;\r\n }\r\n\r\n getUsername() {\r\n return this.props.user.username;\r\n }\r\n\r\n getPortalUrl() {\r\n return this.props.portalUrl;\r\n }\r\n\r\n getPerimeterDeleteLayerUrl() {\r\n return this.props.perimeterDeleteLayerUrl;\r\n }\r\n\r\n getOriginLayerUrl() {\r\n return this.props.originLayerUrl;\r\n }\r\n\r\n getOriginApiUrl() {\r\n return this.props.originApiUrl;\r\n }\r\n\r\n getRelationshipLayerUrl() {\r\n return this.props.relationshipLayerUrl;\r\n }\r\n\r\n getJurisdictionalFeatureLayerUrl() {\r\n return this.props.jurisdictionalFeatureLayerUrl;\r\n }\r\n\r\n getPerimetersLayerUrl() {\r\n return this.props.perimetersLayerUrl;\r\n }\r\n\r\n getFinalPerimetersLayerUrl() {\r\n return this.props.finalPerimetersLayerUrl;\r\n }\r\n\r\n getResourceLayerUrl() {\r\n return this.props.resourceLayerUrl;\r\n }\r\n\r\n getCapabilityRequestLayerUrl() {\r\n return this.props.capabilityRequestLayerUrl;\r\n }\r\n\r\n getAcresByJurisdictionUrl() {\r\n return this.props.acresByJurisdictionUrl;\r\n }\r\n\r\n getOriginLayerToken() {\r\n return this.props.setOriginLayerToken;\r\n }\r\n\r\n getPerimetersLayerToken() {\r\n return this.props.setPerimetersLayerToken;\r\n }\r\n getFinalPerimetersLayerToken() {\r\n return this.props.setFinalPerimetersLayerToken;\r\n }\r\n\r\n getJurisdictionalFeatureLayerToken() {\r\n return this.props.setJurisdictionalFeatureLayerToken;\r\n }\r\n\r\n getRelationshipLayerToken() {\r\n return this.props.setRelationshipLayerToken;\r\n }\r\n\r\n getAcresByJurisdictionToken() {\r\n return this.props.setAcresByJurisdictionToken;\r\n }\r\n\r\n getOriginApiToken() {\r\n return this.props.setOriginApiToken;\r\n }\r\n\r\n getApiUrl() {\r\n return `${window.location.protocol}//${window.location.host}${this.basename}/${this.props.apiUrl}`;\r\n }\r\n\r\n getAppConfig() {\r\n return new Promise((resolve, reject) => {\r\n this.request.makeRequest({\r\n url: `${this.basename}/config.json`,\r\n method: 'get'\r\n }).then(resp => {\r\n this.setPortalUrl(resp.portalUrl)\r\n resolve(resp)\r\n });\r\n });\r\n }\r\n\r\n getUserGroups(userName, useWVLogin) {\r\n return new Promise((resolve, reject) => {\r\n\r\n const portalToUse = (useWVLogin) ? \"https://wvdof.maps.arcgis.com\" : this.getPortalUrl();\r\n this.request.makeRequest({\r\n url: `${portalToUse}/sharing/rest/community/users/${userName}`,\r\n method: 'post',\r\n data: { f: 'json', token: this.getToken() }\r\n }).then(\r\n resp => resolve(resp),\r\n error => reject(error)\r\n )\r\n });\r\n }\r\n\r\n postStateUpload(file, indicesOutsideBuffer, isRx) {\r\n debugger;\r\n return new Promise((resolve, reject) => {\r\n //TODO: Fix URL\r\n\r\n const uploadUsername = this.getUsername();\r\n\r\n this.request.uploadFile(`${this.getOriginApiUrl()}/FireOccurenceRecords/UploadStateFile`, file, indicesOutsideBuffer, uploadUsername, isRx)\r\n .then(response => {\r\n resolve(response);\r\n }\r\n )\r\n });\r\n }\r\n\r\n deriveAcresByJurisdiction(perimeter) {\r\n return new Promise((resolve, reject) => {\r\n loadModules(['esri/geometry/geometryEngine', 'esri/geometry/Polygon']).then(([GeometryEngine, Polygon]) => {\r\n let perimeterPolygon = new Polygon(perimeter);\r\n\r\n this.request.makeRequest({\r\n url: `${this.getJurisdictionalFeatureLayerUrl()}/query`,\r\n method: 'post',\r\n hideCredentials: true,\r\n data: {\r\n f: 'json',\r\n outFields: ['*'],\r\n returnGeometry: true,\r\n geometry: JSON.stringify(perimeterPolygon.extent),\r\n spatialRel: 'esriSpatialRelIntersects',\r\n geometryType: 'esriGeometryEnvelope',\r\n outSR: 4326,\r\n inSR: 4236,\r\n token: this.getToken()\r\n }\r\n }).then(results => {\r\n let response = [];\r\n debugger;\r\n if (results.features && results.features.length > 0) {\r\n\r\n const distinctLandCats = [...new Set(results.features.map(x => x.attributes.LandownerCategory))];\r\n\r\n for (let i = 0; i < distinctLandCats.length; i++) {\r\n let landCatResults = [...new Set(results.features.filter(result => result.attributes.LandownerCategory === distinctLandCats[i]))];\r\n\r\n const landownerCategory = landCatResults[0].attributes.LandownerCategory;\r\n const landownerKind = landCatResults[0].attributes.LandownerKind;\r\n\r\n //let unionedPrivate = GeometryEngine.union(privateRecords.map(a => a.intersection));\r\n let landCatIntersections = [];\r\n let totalForLandCat = 0;\r\n\r\n for (let p = 0; p < landCatResults.length; p++) {\r\n if (GeometryEngine.intersects(perimeterPolygon, landCatResults[p].geometry)) {\r\n let intersection = GeometryEngine.intersect(perimeterPolygon, landCatResults[p].geometry);\r\n let calculatedAcres = GeometryEngine.geodesicArea(intersection, 'acres');\r\n\r\n landCatIntersections.push(intersection);\r\n totalForLandCat += calculatedAcres;\r\n }\r\n }\r\n\r\n const unionedForLandCat = (landCatIntersections && landCatIntersections.length > 0) ? GeometryEngine.union(landCatIntersections) : null;\r\n\r\n if (totalForLandCat > 0) {\r\n response.push(\r\n {\r\n geometry: unionedForLandCat,\r\n Acres: totalForLandCat.toFixed(2),\r\n Category:\r\n {\r\n Code: landownerCategory,\r\n LandownerKind: landownerKind,\r\n LandownerCategoryID: Landowners.find(landowner => (landowner.Code === landownerCategory)).LandownerCategoryID\r\n }\r\n });\r\n }\r\n }\r\n }\r\n resolve(response);\r\n }\r\n );\r\n }\r\n );\r\n });\r\n }\r\n\r\n generateFeatureFromShapefile(params, file) {\r\n return new Promise((resolve, reject) => {\r\n //TODO: Fix URL\r\n this.request.upload(\"https://nifc.maps.arcgis.com/sharing/rest/content/features/generate?filetype=shapefile&publishParameters=%7B%22name%22%3A%22perimeters%22%2C%22targetSR%22%3A%7B%22latestWkid%22%3A3857%2C%22wkid%22%3A102100%7D%2C%22maxRecordCount%22%3A1000%2C%22enforceInputFileSizeLimit%22%3Atrue%2C%22enforceOutputJsonSizeLimit%22%3Atrue%2C%22generalize%22%3Afalse%2C%22maxAllowableOffset%22%3A10%2C%22reducePrecision%22%3Afalse%2C%22numberOfDigitsAfterDecimal%22%3A0%7D&f=json\", file)\r\n .then(response => {\r\n if (response.featureCollection && response.featureCollection.layers.length > 0 && response.featureCollection.layers[0].featureSet.features.length > 0) \r\n {\r\n const geom = response.featureCollection.layers[0].featureSet.features.find(feature => (feature.geometry !== null && feature.geometry !== undefined));\r\n if (geom) \r\n {\r\n resolve(geom.geometry);\r\n }\r\n else {\r\n reject();\r\n }\r\n }\r\n else {\r\n reject();\r\n }\r\n })\r\n });\r\n }\r\n\r\n \r\n getIrwinIdsForPerimeterForGeometry(extent, resultOffset, results) {\r\n return new Promise((resolve, reject) => {\r\n\r\n const whereClause = \"DeleteThis IS NULL OR DeleteThis = 'NO' AND IRWINID IS NOT NULL AND IRWINID <> ''\";\r\n\r\n this.request.makeRequest({\r\n url: `${this.getPerimetersLayerUrl()}/query`,\r\n method: 'get',\r\n hideCredentials: true,\r\n data: {\r\n f: 'json',\r\n outFields: 'IRWINID',\r\n where: whereClause,\r\n returnGeometry: false,\r\n resultOffset: resultOffset,\r\n geometry: JSON.stringify(extent),\r\n geometryType: 'esriGeometryEnvelope',\r\n returnDistinctValues: true,\r\n token: this.getPerimetersLayerToken()\r\n }\r\n }).then(\r\n resp => {\r\n if (resp.exceededTransferLimit) {\r\n let newResults = results.concat(resp.features);\r\n this.getIrwinIdsForPerimeterForGeometry(extent, (newResults.length), newResults).then(finalResults => { resolve(finalResults) });\r\n }\r\n else {\r\n let finalResults = results.concat(resp.features);\r\n resolve(finalResults);\r\n }\r\n },\r\n error => reject(error)\r\n )\r\n });\r\n }\r\n\r\n getIncidentCountForQuery(geom, whereClause, queryUrl) \r\n {\r\n return new Promise((resolve, reject) => {\r\n\r\n debugger;\r\n const stringGeom = JSON.stringify(geom);\r\n\r\n this.request.makeRequest({\r\n url: queryUrl,\r\n method: 'post',\r\n hideCredentials: true,\r\n data: {\r\n f: 'json',\r\n where: whereClause,\r\n returnGeometry: false,\r\n returnCountOnly: true,\r\n geometry: stringGeom,\r\n spatialRel: 'esriSpatialRelIntersects',\r\n geometryType: (stringGeom.includes(\"rings\")) ? 'esriGeometryPolygon' : 'esriGeometryEnvelope',\r\n token: this.getToken()\r\n }\r\n }).then(\r\n resp => \r\n {\r\n resolve(resp.count);\r\n },\r\n error => reject(error)\r\n )\r\n });\r\n }\r\n// window.api.GetForIDsForQuery(extent, resultOffset, results, whereClause, url).then(results => {\r\n GetForIDsForQuery(filterGeometry, resultOffset, results, whereClause, queryUrl) \r\n {\r\n return new Promise((resolve, reject) => {\r\n\r\n const stringGeom = JSON.stringify(filterGeometry);\r\n this.request.makeRequest({\r\n url: queryUrl,\r\n method: 'post',\r\n hideCredentials: true,\r\n data: {\r\n f: 'json',\r\n outFields: 'FireOccurenceRecordID',\r\n where: whereClause,\r\n returnGeometry: false,\r\n resultOffset: resultOffset,\r\n geometry: stringGeom,\r\n geometryType: (stringGeom.includes(\"rings\")) ? 'esriGeometryPolygon' : 'esriGeometryEnvelope',\r\n spatialRel: 'esriSpatialRelIntersects',\r\n token: this.getToken()\r\n }\r\n }).then(\r\n resp => {\r\n if (resp.exceededTransferLimit)\r\n {\r\n let newResults = results.concat(resp.features);\r\n this.GetForIDsForQuery(filterGeometry, (newResults.length), newResults, whereClause, queryUrl).then(finalResults => { resolve(finalResults) });\r\n }\r\n else \r\n {\r\n let finalResults = results.concat(resp.features);\r\n\r\n let forIds = [];\r\n for (let i = 0; i < finalResults.length; i++) \r\n {\r\n forIds.push(finalResults[i].attributes.FireOccurenceRecordID);\r\n }\r\n resolve(forIds);\r\n }\r\n },\r\n error => reject(error)\r\n )\r\n });\r\n }\r\n\r\n\r\n getIncidentsForQuery(geom, resultOffset, results, whereClause, queryUrl, maxRecords) \r\n {\r\n return new Promise((resolve, reject) => {\r\n const stringGeom = JSON.stringify(geom);\r\n debugger;\r\n const sortClause = ((this.props.sortField) ? this.props.sortField : \"IncidentSize\") + ((this.props.sortDesc) ? \" DESC\" : \" ASC\");\r\n this.request.makeRequest({\r\n url: queryUrl,\r\n method: 'post',\r\n hideCredentials: true,\r\n data: {\r\n f: 'json',\r\n outFields: originFields.requiredOutFields,\r\n where: whereClause,\r\n returnGeometry: true,\r\n resultOffset: resultOffset,\r\n outSR: 3857,\r\n orderByFields: sortClause,\r\n geometry: stringGeom,\r\n geometryType: (stringGeom.includes(\"rings\")) ? 'esriGeometryPolygon' : 'esriGeometryEnvelope',\r\n token: this.getToken()\r\n }\r\n }).then(\r\n resp => {\r\n if (resp.exceededTransferLimit && ((resp.features.length + results.length) < maxRecords))\r\n {\r\n let newResults = results.concat(resp.features);\r\n this.getIncidentsForQuery(stringGeom, (newResults.length), newResults, whereClause, queryUrl, maxRecords).then(finalResults => { resolve(finalResults) });\r\n }\r\n else \r\n {\r\n let finalResults = results.concat(resp.features);\r\n if (finalResults.length > maxRecords) \r\n {\r\n finalResults = finalResults.slice(0, maxRecords);\r\n }\r\n resolve(finalResults);\r\n }\r\n },\r\n error => reject(error)\r\n )\r\n });\r\n }\r\n\r\n getIrwinIdsForCertifiedPerimetersForGeometry(extent, resultOffset, results) {\r\n return new Promise((resolve, reject) => {\r\n\r\n const whereClause = \"IRWINID IS NOT NULL\";\r\n\r\n this.request.makeRequest({\r\n url: `${this.getFinalPerimetersLayerUrl()}/query`,\r\n method: 'get',\r\n hideCredentials: true,\r\n data: {\r\n f: 'json',\r\n outFields: '*',\r\n where: whereClause,\r\n returnGeometry: false,\r\n resultOffset: resultOffset,\r\n geometry: JSON.stringify(extent),\r\n geometryType: 'esriGeometryEnvelope',\r\n token: this.getFinalPerimetersLayerToken()\r\n }\r\n }).then(\r\n resp => {\r\n if (resp.exceededTransferLimit) {\r\n let newResults = results.concat(resp.features);\r\n this.getIrwinIdsForCertifiedPerimetersForGeometry(extent, (newResults.length), newResults).then(finalResults => { resolve(finalResults) });\r\n }\r\n else {\r\n let finalResults = results.concat(resp.features);\r\n resolve(finalResults);\r\n }\r\n },\r\n error => reject(error)\r\n )\r\n });\r\n }\r\n\r\n getIdsForPerimeterFilters(mapMethod, featureStatus, featureAccess, extent, resultOffset, results) {\r\n return new Promise((resolve, reject) => {\r\n\r\n let clauses = [];\r\n if (mapMethod) {\r\n clauses.push(\"MapMethod = '\" + mapMethod + \"'\");\r\n }\r\n\r\n if (featureStatus) {\r\n clauses.push(\"FeatureStatus = '\" + featureStatus + \"'\");\r\n }\r\n\r\n if (featureAccess) {\r\n clauses.push(\"FeatureAccess = '\" + featureAccess + \"'\");\r\n }\r\n\r\n let whereClause = clauses.join(' AND ');\r\n whereClause += \" AND (DeleteThis IS NULL OR DeleteThis = 'NO' AND IRWINID IS NOT NULL AND IRWINID <> '')\";\r\n this.request.makeRequest({\r\n url: `${this.getPerimetersLayerUrl()}/query`,\r\n method: 'get',\r\n hideCredentials: true,\r\n data: {\r\n f: 'json',\r\n outFields: 'IRWINID',\r\n where: whereClause,\r\n returnGeometry: false,\r\n resultOffset: resultOffset,\r\n geometry: JSON.stringify(extent),\r\n geometryType: 'esriGeometryEnvelope',\r\n returnDistinctValues: true,\r\n token: this.getPerimetersLayerToken()\r\n }\r\n }).then(\r\n resp => {\r\n if (resp.exceededTransferLimit) {\r\n let newResults = results.concat(resp.features);\r\n this.getIdsForPerimeterFilters(mapMethod, featureStatus, featureAccess, extent, (newResults.length), newResults).then(finalResults => { resolve(finalResults) });\r\n }\r\n else {\r\n let finalResults = results.concat(resp.features);\r\n resolve(finalResults);\r\n }\r\n },\r\n error => reject(error)\r\n )\r\n });\r\n }\r\n\r\n getIdsForCapabilityRequests(fulfillmentStatus) {\r\n return new Promise((resolve, reject) => {\r\n\r\n this.request.makeRequest({\r\n url: `${this.getCapabilityRequestLayerUrl()}/query`,\r\n method: 'get',\r\n data: {\r\n f: 'json',\r\n outFields: 'IRWINID',\r\n where: `(FulfillmentStatus = '${fulfillmentStatus}')`,\r\n returnGeometry: false,\r\n returnDistinctValues: true,\r\n token: this.getOriginApiToken()\r\n }\r\n }).then(\r\n resp => {\r\n resolve(resp.features)\r\n },\r\n error => reject(error)\r\n )\r\n });\r\n }\r\n\r\n getUrlForPerimeterSource(perimeterSource) {\r\n switch (perimeterSource) {\r\n case consts.perimeterSource.nifs:\r\n return this.getPerimetersLayerUrl();\r\n\r\n case consts.perimeterSource.fireHistoryFeatureService:\r\n return this.getFireHistoryFeatureLayerUrl();\r\n\r\n case consts.perimeterSource.finalFireFeatureService:\r\n return this.getFinalPerimetersLayerUrl();\r\n default:\r\n console.log(\"ERROR: Invalid Perimeter Source provided: \" + perimeterSource);\r\n return \"\";\r\n }\r\n }\r\n\r\n getTokenForPerimeterSource(perimeterSource) {\r\n switch (perimeterSource) {\r\n case consts.perimeterSource.nifs:\r\n return this.getPerimetersLayerToken();\r\n\r\n case consts.perimeterSource.fireHistoryFeatureService:\r\n return this.getFireHistoryFeatureLayerToken();\r\n\r\n case consts.perimeterSource.finalFireFeatureService:\r\n return this.getFinalPerimetersLayerToken();\r\n default:\r\n console.log(\"ERROR: Invalid Perimeter Source provided: \" + perimeterSource);\r\n return \"\";\r\n }\r\n }\r\n\r\n addNewPerimeter(perimeterFeature, incidentAttributes) {\r\n return new Promise((resolve, reject) => {\r\n\r\n loadModules([\r\n 'esri/geometry/support/webMercatorUtils'\r\n ])\r\n .then(([WebMercatorUtils]) => {\r\n\r\n this.deriveCalculatedAcres(perimeterFeature).then(resp => {\r\n\r\n const perimeterGeomWGS84 = WebMercatorUtils.webMercatorToGeographic(perimeterFeature.geometry);\r\n perimeterFeature.geometry = perimeterGeomWGS84;\r\n\r\n debugger;\r\n const calculatedAcres = resp;\r\n const username = this.getUsername();\r\n const polygonCreateDate = getPolygonCreateDate(incidentAttributes);\r\n\r\n let jsonFeature = JSON.stringify(perimeterFeature);\r\n\r\n this.request.makeRequest({\r\n url: `${this.getOriginApiUrl()}/Perimeters/AddNewPerimeter`,\r\n method: 'post',\r\n hideCredentials: true,\r\n data: {\r\n userToken: this.getOriginLayerToken(),\r\n perimeterFeature: jsonFeature,\r\n polygonCreateDate: polygonCreateDate,\r\n forID: incidentAttributes[originFields.forId],\r\n username: username,\r\n calcedAcres: calculatedAcres\r\n }\r\n }).then(\r\n resp => {\r\n resolve(resp)\r\n },\r\n error => reject(error)\r\n )\r\n });\r\n });\r\n });\r\n }\r\n\r\n updateIrwinIDForFireHistory (irwinID, objectID) \r\n {\r\n return new Promise((resolve, reject) => {\r\n\r\n this.request.makeRequest({\r\n url: `${this.getOriginApiUrl()}/Perimeters/UpdateIrwinIDForFireHistory`,\r\n method: 'post',\r\n hideCredentials: true,\r\n data:\r\n { \r\n irwinID: formatIdentifierForApi(irwinID),\r\n objectID: objectID,\r\n userToken: this.getOriginLayerToken()\r\n }\r\n }).then(\r\n resp => {\r\n resolve(resp)\r\n },\r\n error => reject(error)\r\n )\r\n });\r\n }\r\n\r\n updateIrwinIDForNifs(irwinID, objectID) {\r\n\r\n return new Promise((resolve, reject) => {\r\n\r\n this.request.makeRequest({\r\n url: `${this.getOriginApiUrl()}/Perimeters/UpdateIrwinIDForNIFS`,\r\n method: 'post',\r\n hideCredentials: true,\r\n data:\r\n { \r\n irwinID: formatIdentifierForApi(irwinID),\r\n objectID: objectID,\r\n userToken: this.getOriginLayerToken()\r\n }\r\n }).then(\r\n resp => {\r\n resolve(resp)\r\n },\r\n error => reject(error)\r\n )\r\n });\r\n }\r\n\r\n certifyPerimeter(perimeterFeature, forId) {\r\n return new Promise((resolve, reject) => {\r\n\r\n let jsonFeature = JSON.stringify(perimeterFeature);\r\n\r\n this.request.makeRequest({\r\n url: `${this.getOriginApiUrl()}/Perimeters/CertifyPerimeter`,\r\n method: 'post',\r\n hideCredentials: true,\r\n data:\r\n {\r\n feature: jsonFeature,\r\n forId: JSON.stringify(forId),\r\n }\r\n }).then(\r\n resp => {\r\n let feature =\r\n {\r\n perimeter: resp.Perimeter\r\n }\r\n resolve(feature)\r\n },\r\n error => reject(error)\r\n )\r\n });\r\n }\r\n\r\n decertifyPerimeter(perimeterFeature, forId) {\r\n return new Promise((resolve, reject) => {\r\n\r\n let jsonFeature = JSON.stringify(perimeterFeature);\r\n\r\n this.request.makeRequest({\r\n url: `${this.getOriginApiUrl()}/Perimeters/DecertifyPerimeter`,\r\n method: 'post',\r\n hideCredentials: true,\r\n data:\r\n {\r\n feature: jsonFeature,\r\n forID: JSON.stringify(forId),\r\n userToken: this.getOriginLayerToken()\r\n }\r\n }).then(\r\n resp => {\r\n resolve(resp.Perimeter)\r\n },\r\n error => reject(error)\r\n )\r\n });\r\n }\r\n\r\n deriveCalculatedAcres(perimeter) {\r\n return new Promise((resolve) => {\r\n //loadModules(['esri/geometry/geometryEngine', 'esri/geometry/Polygon']).then( ([geometryEngine, Polygon]) =>\r\n //{\r\n const perimeterPolygon = new Polygon(perimeter.geometry);\r\n let calculatedAcres = geometryEngine.geodesicArea(perimeterPolygon, 'acres');\r\n if (calculatedAcres < 0.01) {\r\n calculatedAcres = 0.01;\r\n }\r\n resolve(calculatedAcres.toFixed(2));\r\n //});\r\n });\r\n }\r\n\r\n validateLatLong (lat, long) {\r\n\r\n return new Promise((resolve, reject) => {\r\n loadModules([\r\n 'esri/geometry/support/webMercatorUtils',\r\n 'esri/geometry/geometryEngine',\r\n 'esri/geometry/Polygon',\r\n 'esri/geometry/Point', \r\n 'esri/geometry/SpatialReference'\r\n ])\r\n .then(([WebMercatorUtils, geometryEngine, Polygon, Point, SpatialReference]) => {\r\n var xy = WebMercatorUtils.lngLatToXY(long, lat);\r\n\r\n const incidentGeometry = new Point({\r\n x: xy[0],\r\n y: xy[1],\r\n spatialReference: new SpatialReference(102100)\r\n });\r\n\r\n const bufferedInput = geometryEngine.geodesicBuffer(incidentGeometry, 10, \"miles\");\r\n\r\n //TODO: Fix Url\r\n this.request.makeRequest({\r\n url: `https://services3.arcgis.com/T4QMspbfLg3qTGWY/ArcGIS/rest/services/US_States_and_Terrorities_TIGER_Line_2017/FeatureServer/0/query`,\r\n method: 'post',\r\n hideCredentials: true,\r\n data: {\r\n f: 'json',\r\n //geometry: xy[0] + ',' + xy[1],\r\n geometry: JSON.stringify(bufferedInput.toJSON()),\r\n geometryType: 'esriGeometryPolygon',\r\n spatialRel: 'esriSpatialRelIntersects',\r\n outFields: ['FID'],\r\n returnGeometry: false,\r\n token: this.getToken()\r\n }\r\n }).then(\r\n resp => {\r\n if (resp.features !== null && resp.features.length > 0) \r\n {\r\n resolve(true);\r\n } \r\n else \r\n {\r\n resolve(false);\r\n }\r\n },\r\n error => reject(error)\r\n )\r\n });\r\n });\r\n }\r\n\r\n getStateFromOrigin(lat, long) {\r\n\r\n const StateAbbreviation = 'STATE_ABBR';\r\n\r\n return new Promise((resolve, reject) => {\r\n loadModules([\r\n 'esri/geometry/support/webMercatorUtils'\r\n ])\r\n .then(([WebMercatorUtils]) => {\r\n var xy = WebMercatorUtils.lngLatToXY(long, lat);\r\n\r\n //TODO: Fix Url\r\n this.request.makeRequest({\r\n url: `https://services.arcgis.com/P3ePLMYs2RVChkJx/arcgis/rest/services/USA_States_Generalized/FeatureServer/0/query`,\r\n method: 'get',\r\n hideCredentials: true,\r\n data: {\r\n f: 'json',\r\n geometry: xy[0] + ',' + xy[1],\r\n geometryType: 'esriGeometryPoint',\r\n spatialRel: 'esriSpatialRelIntersects',\r\n outFields: [StateAbbreviation],\r\n returnGeometry: false\r\n }\r\n }).then(\r\n resp => \r\n {\r\n if (resp.features !== null && resp.features.length > 0) \r\n {\r\n resolve(resp.features[0].attributes[StateAbbreviation]);\r\n } else \r\n {\r\n resolve(null);\r\n }\r\n },\r\n error => reject(error)\r\n )\r\n });\r\n });\r\n\r\n }\r\n\r\n getUnitId(unitIdString) {\r\n //TODO: Fix URL\r\n\r\n return new Promise((resolve, reject) => {\r\n //https://unitid.nifc.gov/ords/uat/nifc/units/UnitIDActiveSingleUnit_json/USIDbod\r\n this.request.makeRequest({\r\n url: `https://unitid.nifc.gov/ords/prd/nifc/units/UnitIDActiveSingleUnit_json/US` + unitIdString,\r\n method: 'get',\r\n hideCredentials: true\r\n }).then(\r\n resp => {\r\n resolve(resp);\r\n },\r\n error => reject(error)\r\n )\r\n });\r\n }\r\n\r\n\r\n\r\n deriveLandownerCategory(lat, long) {\r\n return new Promise((resolve, reject) => {\r\n loadModules([\r\n 'esri/geometry/support/webMercatorUtils'\r\n ])\r\n .then(([WebMercatorUtils]) => {\r\n\r\n var originVal = WebMercatorUtils.lngLatToXY(long, lat);\r\n\r\n this.request.makeRequest({\r\n url: `${this.getJurisdictionalFeatureLayerUrl()}/query`,\r\n method: 'get',\r\n hideCredentials: true,\r\n data: {\r\n f: 'json',\r\n geometry: `${originVal[0]},${originVal[1]}`,\r\n geometryType: 'esriGeometryPoint',\r\n outFields: ['LandownerKind, LandownerCategory'],\r\n returnGeometry: false,\r\n token: this.getJurisdictionalFeatureLayerToken()\r\n }\r\n }).then(\r\n resp => {\r\n if (resp.features !== null && resp.features.length > 0) {\r\n resolve(resp.features[0].attributes);\r\n }\r\n },\r\n error => reject(error)\r\n )\r\n });\r\n });\r\n\r\n }\r\n\r\n deriveFuelModel(lat, long, state, extent) {\r\n\r\n //TODO: Fix URLs\r\n return new Promise((resolve, reject) => {\r\n loadModules([\r\n 'esri/geometry/support/webMercatorUtils'\r\n ])\r\n .then(([WebMercatorUtils]) => {\r\n\r\n let url = \"https://landfire.cr.usgs.gov/arcgis/rest/services/Landfire/US_140/MapServer/identify\";\r\n let layerId = 4;\r\n\r\n if (state === \"US-AK\") {\r\n url = \"https://landfire.cr.usgs.gov/arcgis/rest/services/Landfire/AK_140/MapServer/identify\";\r\n layerId = 10;\r\n }\r\n\r\n if (state === \"US-HI\") {\r\n url = \"https://landfire.cr.usgs.gov/arcgis/rest/services/Landfire/HI_140/MapServer/identify\";\r\n layerId = 10;\r\n }\r\n\r\n var geographicExtent = WebMercatorUtils.webMercatorToGeographic(extent);\r\n //, , , \r\n this.request.makeRequest({\r\n url: url,\r\n method: 'get',\r\n data: {\r\n f: 'json',\r\n geometry: `${long},${lat}`,\r\n geometryType: 'esriGeometryPoint',\r\n tolerance: 0,\r\n layers: 'all:' + layerId,\r\n mapExtent: `${geographicExtent.xmin},${geographicExtent.ymin},${geographicExtent.xmax},${geographicExtent.ymax}`,\r\n returnGeometry: false,\r\n imageDisplay: '600,550,96'\r\n }\r\n }).then(\r\n resp => {\r\n if (resp.results !== null && resp.results.length > 0) {\r\n resolve(resp.results[0].attributes[\"FBFM40\"]); //TODO: Fix Hardcode\r\n }\r\n },\r\n error => reject(error)\r\n )\r\n });\r\n });\r\n\r\n }\r\n\r\n //[Route(\"api/FireOccurenceRecords/UnspliceRecord\")]\r\n //public async Task UnspliceRecord(Token userToken, int occurenceRecordID, string username, int userId)\r\n \r\n despliceRecord(incidentId) {\r\n return new Promise((resolve, reject) => {\r\n \r\n this.request.makeRequest({\r\n url: `${this.getOriginApiUrl()}/FireOccurenceRecords/UnspliceRecord`,\r\n method: 'get',\r\n hideCredentials: true,\r\n data: {\r\n f: 'json',\r\n occurenceRecordID: incidentId,\r\n userToken: this.getOriginLayerToken(),\r\n username: this.getUsername()\r\n }\r\n }).then(\r\n resp => {\r\n resolve()\r\n },\r\n error => reject(error)\r\n )\r\n });\r\n }\r\n\r\n loadFullIncidentFromApi(incidentId) {\r\n return new Promise((resolve, reject) => {\r\n\r\n this.request.makeRequest({\r\n url: `${this.getOriginApiUrl()}/FireOccurenceRecords/GetFOR/` + formatIdentifierForApi(incidentId),\r\n method: 'get',\r\n hideCredentials: true\r\n }).then(\r\n resp => {\r\n debugger;\r\n let feature = {\r\n attributes: Object.assign({}, resp.FireOccurenceRecord,\r\n {\r\n \"_pointGeometryLatitude\": resp.FireOccurenceRecord.y,\r\n \"_pointGeometryLongitude\": resp.FireOccurenceRecord.x\r\n }\r\n ),\r\n perimeter: resp.Perimeter,\r\n perimeterAcreage: resp.AcreagePackage,\r\n knownUnitIds: resp.KnownUnitIDs,\r\n irwinRelationshipRecords: resp.IrwinRelationshipRecords\r\n }\r\n resolve(feature)\r\n },\r\n error => reject(error)\r\n )\r\n });\r\n }\r\n\r\n getIncident(incidentId) {\r\n return new Promise((resolve, reject) => {\r\n\r\n this.request.makeRequest({\r\n url: `${this.getOriginApiUrl()}/query`,\r\n method: 'get',\r\n data: {\r\n f: 'json',\r\n outFields: '*',\r\n where: `(${originFields.irwinId} = '${incidentId}' AND ${originFields.isQuarantined} IN (0,1) AND IsValid = 1)`,\r\n returnGeometry: true,\r\n token: this.getOriginApiToken()\r\n }\r\n }).then(\r\n resp => {\r\n resolve(resp.features[0])\r\n },\r\n error => reject(error)\r\n )\r\n });\r\n }\r\n\r\n getStateForUpload(stateAbbr)\r\n {\r\n //TODO: Fix URL\r\n return new Promise((resolve, reject) => {\r\n this.request.makeRequest({\r\n url: `https://services.arcgis.com/P3ePLMYs2RVChkJx/arcgis/rest/services/USA_States_Generalized/FeatureServer/0/query`,\r\n method: 'get',\r\n hideCredentials: true,\r\n data: {\r\n f: 'json',\r\n where: StateAbbreviation + ` = '${stateAbbr}'`,\r\n outFields: ['STATE_NAME'],\r\n outSR: 4326,\r\n returnGeometry: true\r\n }\r\n }).then(\r\n resp =>\r\n {\r\n if (resp.features !== null && resp.features.length > 0)\r\n {\r\n resolve(resp.features[0]);\r\n }\r\n },\r\n error => reject(error)\r\n )\r\n });\r\n }\r\n\r\n searchAdminIncident (identifer, searchValue) {\r\n return new Promise((resolve, reject) => {\r\n\r\n debugger;\r\n this.request.makeRequest({\r\n url: `${this.getOriginApiUrl()}/FireOccurenceRecords/GetEditPackageForIncident`,\r\n method: 'post',\r\n hideCredentials: true,\r\n data: {\r\n f: 'json',\r\n identifer: JSON.stringify(identifer),\r\n identifierName: JSON.stringify(searchValue),\r\n username: this.getUsername()\r\n }\r\n }).then(\r\n resp =>\r\n {\r\n resolve(resp);\r\n },\r\n error => reject(error)\r\n )\r\n });\r\n }\r\n\r\n getMissingPerimeterIncidents() {\r\n return new Promise((resolve, reject) => {\r\n debugger;\r\n this.request.makeRequest({\r\n url: `${this.getOriginApiUrl()}/Reports/GetMissingPerimeterIncidents`,\r\n method: 'get',\r\n hideCredentials: true\r\n }).then(\r\n resp => {\r\n resolve(resp);\r\n },\r\n error => reject(error)\r\n )\r\n });\r\n }\r\n \r\n queryNonFederalFireForYear(startYear, endYear) {\r\n return new Promise((resolve, reject) => {\r\n\r\n this.request.makeCsvRequest({\r\n url: `${this.getOriginApiUrl()}/Reports/GetNonFederalFires`,\r\n method: 'get',\r\n hideCredentials: true,\r\n data:\r\n {\r\n startYear: startYear,\r\n endYear: endYear\r\n }\r\n }).then(\r\n resp => {\r\n resolve(resp);\r\n },\r\n error => reject(error)\r\n )\r\n });\r\n }\r\n\r\n queryNonFederalRXFiresForYear(startYear, endYear) {\r\n return new Promise((resolve, reject) => {\r\n\r\n this.request.makeCsvRequest({\r\n url: `${this.getOriginApiUrl()}/Reports/GetNonFederalRXFires`,\r\n method: 'get',\r\n hideCredentials: true,\r\n data:\r\n {\r\n startYear: startYear,\r\n endYear: endYear\r\n }\r\n }).then(\r\n resp => {\r\n resolve(resp);\r\n },\r\n error => reject(error)\r\n )\r\n });\r\n }\r\n wvdofLogin (clientId) {\r\n\r\n return new Promise((resolve, reject) => {\r\n\r\n this.request.makeRequest({\r\n url: `https://wvdof.maps.arcgis.com/sharing/oauth2/authorize`,\r\n method: 'post',\r\n hideCredentials: true,\r\n data:\r\n {\r\n client_id: clientId,\r\n response_type: 'token',\r\n state: {\r\n portalUrl:\"https://wvdof.maps.arcgis.com\"\r\n },\r\n expiration: 20160,\r\n redirect_uri: window.location.href\r\n }\r\n }).then(\r\n resp => {\r\n resolve(resp);\r\n },\r\n error => reject(error)\r\n )\r\n });\r\n\r\n }\r\n downloadIncidentData(extent, definitionExpression, fodrIds) {\r\n return new Promise((resolve, reject) => {\r\n\r\n this.request.makeCsvRequest({\r\n url: `${this.getOriginApiUrl()}/FireOccurenceRecords/DownloadRecords`,\r\n method: 'post',\r\n hideCredentials: true,\r\n responseType: 'blob',\r\n data:\r\n {\r\n xmin: extent.xmin,\r\n ymin: extent.ymin,\r\n xmax: extent.xmax,\r\n ymax: extent.ymax,\r\n definitionExpression: definitionExpression,\r\n fodrIds: fodrIds\r\n }\r\n }).then(\r\n resp => {\r\n resolve(resp);\r\n },\r\n error => reject(error)\r\n )\r\n });\r\n }\r\n\r\n getIncidentDataForSummaries(extent, definitionExpression) {\r\n return new Promise((resolve, reject) => {\r\n\r\n this.request.makeRequest({\r\n url: `${this.getOriginApiUrl()}/FireOccurenceRecords/GetIncidentDataForSummaries`,\r\n method: 'post',\r\n hideCredentials: true,\r\n data:\r\n {\r\n xmin: extent.xmin,\r\n ymin: extent.ymin,\r\n xmax: extent.xmax,\r\n ymax: extent.ymax,\r\n definitionExpression: definitionExpression\r\n }\r\n }).then(\r\n resp => {\r\n resolve(resp);\r\n },\r\n error => reject(error)\r\n )\r\n });\r\n }\r\n\r\n updatePerimeter(perimeterFeature, incident, geometryChanged, perimeterSource) {\r\n\r\n return new Promise((resolve, reject) => {\r\n loadModules([\r\n 'esri/geometry/support/jsonUtils',\r\n 'esri/geometry/support/webMercatorUtils',\r\n 'esri/geometry/geometryEngine'\r\n ])\r\n .then(([geometryJsonUtils, WebMercatorUtils, GeometryEngine]) => {\r\n\r\n if (geometryChanged) {\r\n const geomWGS84 = WebMercatorUtils.webMercatorToGeographic(geometryJsonUtils.fromJSON(perimeterFeature.geometry));\r\n perimeterFeature.geometry = geomWGS84;\r\n }\r\n\r\n let jsonFeature = JSON.stringify(perimeterFeature);\r\n\r\n this.request.makeRequest({\r\n //url: `${this.getOriginApiUrl()}/updateFeatures`,\r\n url: `${this.getOriginApiUrl()}/Perimeters/UpdatePerimeter`,\r\n method: 'post',\r\n hideCredentials: true,\r\n data:\r\n {\r\n userToken: this.getOriginLayerToken(),\r\n feature: jsonFeature,\r\n perimeterSource: perimeterSource,\r\n forID: JSON.stringify(incident.attributes.FORID) \r\n }\r\n }).then(\r\n resp => {\r\n resolve(resp)\r\n },\r\n error => reject(error)\r\n )\r\n });\r\n });\r\n }\r\n\r\n \r\n invalidateIncident(forID) {\r\n return new Promise((resolve, reject) => \r\n {\r\n this.request.makeRequest({\r\n url: `${this.getOriginApiUrl()}/FireOccurenceRecords/InvalidateFOR`,\r\n method: 'post',\r\n hideCredentials: true,\r\n data:\r\n {\r\n forID: JSON.stringify(forID),\r\n username: this.getUsername()\r\n }\r\n }).then(\r\n resp => {\r\n resolve();\r\n },\r\n error => reject(error)\r\n )\r\n });\r\n }\r\n\r\n /*getPerimeterAcreageIds(landownerCode, acreageOperator, acreageAmount) \r\n {\r\n return new Promise((resolve, reject) => \r\n {\r\n this.request.makeRequest({\r\n url: `${this.getOriginApiUrl()}/FireOccurenceRecords/GetPerimeterAcreageIds`,\r\n method: 'post',\r\n hideCredentials: true,\r\n data:\r\n {\r\n landownerCode: landownerCode,\r\n acreageOperator: acreageOperator,\r\n acreageAmount: acreageAmount\r\n }\r\n }).then(\r\n resp => \r\n {\r\n resolve(resp);\r\n },\r\n error => reject(error)\r\n )\r\n });\r\n } */\r\n\r\n\r\n saveOccurenceRecords(features) {\r\n return new Promise((resolve, reject) => {\r\n loadModules([\r\n 'esri/geometry/support/jsonUtils',\r\n 'esri/geometry/support/webMercatorUtils',\r\n ])\r\n .then(([geometryJsonUtils, WebMercatorUtils]) => {\r\n\r\n let featureArray = features.map(feature => {\r\n let result = feature.attributes;\r\n\r\n //If FireCode has been requested and we don't have a firecode yet, delete the attributes. We might be attempting to overwrite newer Irwin data.\r\n if ((result[originFields.isFireCodeRequested] === 1) && (!result[originFields.fireCode])) {\r\n delete result.IsFireCodeRequested;\r\n delete result.FireCode;\r\n }\r\n //set update user\r\n result.INFORMUserName = this.getUsername();\r\n\r\n if (feature.geometry) {\r\n const geomWGS84 = WebMercatorUtils.webMercatorToGeographic(geometryJsonUtils.fromJSON(feature.geometry));\r\n result.geometry = { x: geomWGS84.x, y: geomWGS84.y }\r\n }\r\n\r\n return result;\r\n });\r\n\r\n let jsonFeature = JSON.stringify(featureArray[0]);\r\n\r\n this.request.makeRequest({\r\n url: `${this.getOriginApiUrl()}/FireOccurenceRecords`,\r\n method: 'post',\r\n hideCredentials: true,\r\n data: {\r\n feature: jsonFeature\r\n //mercatorX: feature.geometry.x,\r\n //ercatorY: feature.geometry.y //TODO: Need to fix this.\r\n }\r\n }).then(\r\n resp => {\r\n /*\r\n const results = resp.updateResults.map(result => {\r\n if(result.sucess && result.geometry) {\r\n result.geometry = WebMercatorUtils.geographicToWebMercator(geometryJsonUtils.fromJSON(result.geometry)).toJSON()\r\n }\r\n return result;\r\n });*/\r\n resolve(resp)\r\n },\r\n error => reject(error)\r\n )\r\n });\r\n });\r\n }\r\n\r\n saveOccurenceRecord(feature, acresByOwnership, unchangedAttributes) {\r\n return new Promise((resolve, reject) => {\r\n loadModules([\r\n 'esri/geometry/support/jsonUtils',\r\n 'esri/geometry/support/webMercatorUtils',\r\n ])\r\n .then(([geometryJsonUtils, WebMercatorUtils]) => {\r\n\r\n feature.attributes.INFORMUserName = this.getUsername();\r\n\r\n if (feature.geometry) {\r\n const geomWGS84 = WebMercatorUtils.webMercatorToGeographic(geometryJsonUtils.fromJSON(feature.geometry));\r\n feature.attributes.geometry = { x: geomWGS84.x, y: geomWGS84.y }\r\n }\r\n\r\n let jsonFeature = JSON.stringify(feature.attributes);\r\n\r\n this.request.makeRequest({\r\n //url: `${this.getOriginApiUrl()}/updateFeatures`,\r\n url: `${this.getOriginApiUrl()}/FireOccurenceRecords`,\r\n method: 'post',\r\n hideCredentials: true,\r\n data:\r\n {\r\n feature: jsonFeature,\r\n unchangedAttributes: (unchangedAttributes) ? JSON.stringify(unchangedAttributes) : null,\r\n //mercatorX: mercatorX,\r\n //mercatorY: mercatorY,\r\n acresByOwnership: (acresByOwnership) ? JSON.stringify(acresByOwnership) : null\r\n }\r\n }).then(\r\n resp => {\r\n\r\n let feature = {\r\n attributes: Object.assign({}, resp.FireOccurenceRecord,\r\n {\r\n \"_pointGeometryLatitude\": resp.FireOccurenceRecord.y,\r\n \"_pointGeometryLongitude\": resp.FireOccurenceRecord.x\r\n }\r\n ),\r\n perimeter: resp.Perimeter,\r\n acresByOwnership: resp.AcresByOwnership,\r\n perimeterAcreage: resp.AcreagePackage\r\n }\r\n\r\n /*\r\n const results = resp.updateResults.map(result => {\r\n if(result.sucess && result.geometry) {\r\n result.geometry = WebMercatorUtils.geographicToWebMercator(geometryJsonUtils.fromJSON(result.geometry)).toJSON()\r\n }\r\n return result;\r\n });*/\r\n resolve(feature)\r\n },\r\n error => reject(error)\r\n )\r\n });\r\n });\r\n }\r\n\r\n getLastLII (protectingUnitID) {\r\n\r\n return new Promise((resolve, reject) => {\r\n\r\n this.request.makeRequest({\r\n url: `${this.getOriginApiUrl()}/FireOccurenceRecords/GetLLII`,\r\n method: 'get',\r\n hideCredentials: true,\r\n data:\r\n {\r\n protectingUnitID: protectingUnitID\r\n }\r\n }).then(\r\n resp => {\r\n resolve(resp)\r\n },\r\n error => reject(error)\r\n )\r\n });\r\n }\r\n\r\n getRelatedRecords(forID) {\r\n return new Promise((resolve, reject) => {\r\n\r\n this.request.makeRequest({\r\n url: `${this.getOriginApiUrl()}/FireOccurenceRecords/GetRelatedRecords`,\r\n method: 'get',\r\n hideCredentials: true,\r\n data:\r\n {\r\n id: formatIdentifierForApi(forID)\r\n }\r\n }).then(\r\n resp => {\r\n resolve(resp)\r\n },\r\n error => reject(error)\r\n )\r\n });\r\n }\r\n\r\n saveSpliceModel(forIdsToSplice, selectedForID, spliceModel, attributesFromLosingFODR) {\r\n return new Promise((resolve, reject) => {\r\n\r\n loadModules(['esri/geometry/support/webMercatorUtils', 'esri/geometry/Point', 'esri/geometry/SpatialReference'])\r\n .then(([webMercatorUtils, Point, SpatialReference]) => {\r\n\r\n let geographicPoint = new Point\r\n ({\r\n latitude: spliceModel.y,\r\n longitude: spliceModel.x,\r\n spatialReference: new SpatialReference(4326)\r\n });\r\n\r\n let mercatorPoint = webMercatorUtils.geographicToWebMercator(geographicPoint);\r\n\r\n this.request.makeRequest({\r\n url: `${this.getOriginApiUrl()}/FireOccurenceRecords/SaveSplice`,\r\n method: 'post',\r\n hideCredentials: true,\r\n data: {\r\n forIdsToSplice: JSON.stringify(forIdsToSplice),\r\n selectedForID: JSON.stringify(selectedForID),\r\n spliceModel: JSON.stringify(spliceModel),\r\n splicedMercatorGeometry: JSON.stringify(mercatorPoint),\r\n attributesFromLosingFODR: JSON.stringify(attributesFromLosingFODR),\r\n username: this.getUsername()\r\n }\r\n }).then(\r\n resp => {\r\n resolve(resp)\r\n },\r\n error => reject(error)\r\n )\r\n });\r\n });\r\n }\r\n\r\n //createPrescibedEscape\r\n createPrescibedEscape(ufi, fireOccurenceRecordId) {\r\n\r\n return new Promise((resolve, reject) => {\r\n\r\n this.request.makeRequest({\r\n url: `${this.getOriginApiUrl()}/FireOccurenceRecords/CreatePrescribedEscape`,\r\n method: 'get',\r\n hideCredentials: true,\r\n data:\r\n { \r\n ufi: ufi,\r\n rxFireOccurenceId: fireOccurenceRecordId\r\n }\r\n }).then(\r\n resp => {\r\n resolve(resp)\r\n },\r\n error => reject(error)\r\n )\r\n });\r\n }\r\n \r\n getIrwinRelationshipPackage(relationshipId, fireOccurenceRecordId) {\r\n\r\n return new Promise((resolve, reject) => {\r\n\r\n this.request.makeRequest({\r\n url: `${this.getOriginApiUrl()}/FireOccurenceRecords/GetIrwinRelationshipPackage`,\r\n method: 'get',\r\n hideCredentials: true,\r\n data:\r\n { \r\n relationshipId: relationshipId,\r\n fireOccurenceRecordId: fireOccurenceRecordId\r\n }\r\n }).then(\r\n resp => {\r\n resolve(resp)\r\n },\r\n error => reject(error)\r\n )\r\n });\r\n }\r\n\r\n getSpliceModel(forId, comparisonForID) {\r\n\r\n return new Promise((resolve, reject) => {\r\n\r\n this.request.makeRequest({\r\n url: `${this.getOriginApiUrl()}/FireOccurenceRecords/GetOccurencesForSplice`,\r\n method: 'get',\r\n hideCredentials: true,\r\n data:\r\n { //forId, string comparisonForID)\r\n forId: formatIdentifierForApi(forId),\r\n comparisonForID: formatIdentifierForApi(comparisonForID)\r\n }\r\n }).then(\r\n resp => {\r\n resolve(resp)\r\n },\r\n error => reject(error)\r\n )\r\n });\r\n }\r\n\r\n addIncident(feature, mercatorPoint) {\r\n return new Promise((resolve, reject) => {\r\n\r\n feature.attributes.INFORMUserName = this.getUsername();\r\n\r\n this.request.makeRequest({\r\n url: `${this.getOriginApiUrl()}/FireOccurenceRecords/AddIncident`,\r\n hideCredentials: true,\r\n method: 'post',\r\n data:\r\n {\r\n feature: JSON.stringify(feature),\r\n mercatorX: mercatorPoint.x,\r\n mercatorY: mercatorPoint.y\r\n }\r\n }).then(\r\n resp => {\r\n resolve(resp);\r\n },\r\n error => reject(error)\r\n )\r\n });\r\n }\r\n\r\n addFilterFromShapefile(params, file, filtername, filterDescription) {\r\n return new Promise((resolve, reject) => {\r\n //TODO: Fix URL\r\n this.request.upload(\"https://nifc.maps.arcgis.com/sharing/rest/content/features/generate?filetype=shapefile&publishParameters=%7B%22name%22%3A%22perimeters%22%2C%22targetSR%22%3A%7B%22latestWkid%22%3A3857%2C%22wkid%22%3A102100%7D%2C%22maxRecordCount%22%3A1000%2C%22enforceInputFileSizeLimit%22%3Atrue%2C%22enforceOutputJsonSizeLimit%22%3Atrue%2C%22generalize%22%3Atrue%2C%22maxAllowableOffset%22%3A10%2C%22reducePrecision%22%3Afalse%2C%22numberOfDigitsAfterDecimal%22%3A0%7D&f=json\", file)\r\n .then(response => {\r\n if (response.featureCollection && response.featureCollection.layers.length > 0 && response.featureCollection.layers[0].featureSet.features.length > 0) {\r\n const geom = response.featureCollection.layers[0].featureSet.features.find(feature => (feature.geometry !== null && feature.geometry !== undefined));\r\n if (geom) {\r\n const spatialFilter = {\r\n attributes: {\r\n NifcUsername: this.getUsername(),\r\n Filtername: filtername,\r\n FilterDescription: filterDescription,\r\n },\r\n geometry: geom.geometry\r\n };\r\n\r\n this.addSpatialFilter(spatialFilter).then(\r\n response => \r\n {\r\n resolve(response);\r\n },\r\n error => {\r\n reject(error);\r\n }\r\n );\r\n }\r\n else {\r\n reject();\r\n }\r\n }\r\n else {\r\n console.log(response);\r\n reject();\r\n }\r\n })\r\n });\r\n }\r\n\r\n addSpatialFilter(spatialFilter) {\r\n return new Promise((resolve, reject) => {\r\n\r\n this.request.makeRequest({\r\n url: `${this.getOriginApiUrl()}/User/AddSpatialFilter`,\r\n hideCredentials: true,\r\n method: 'post',\r\n data:\r\n {\r\n userToken: this.props.credential.token,\r\n spatialFilter: JSON.stringify(spatialFilter)\r\n }\r\n }).then(\r\n resp => {\r\n resolve(resp); //this should be id\r\n },\r\n error => reject(error)\r\n )\r\n });\r\n }\r\n\r\n async getSpatialFilterById(filterId) {\r\n return new Promise((resolve, reject) => {\r\n\r\n this.request.makeRequest({\r\n url: `${this.getOriginApiUrl()}/User/GetSpatialFilterById`,\r\n hideCredentials: true,\r\n method: 'post',\r\n data:\r\n {\r\n userToken: this.props.credential.token,\r\n filterId: filterId\r\n }\r\n }).then(\r\n resp => {\r\n resolve(resp);\r\n },\r\n error => reject(error)\r\n )\r\n });\r\n }\r\n\r\n getSpatialFiltersForUser(apiUrl, nifcUsername) {\r\n return new Promise((resolve, reject) => {\r\n\r\n this.request.makeRequest({\r\n url: `${apiUrl}/User/GetSpatialFiltersForUser`,\r\n hideCredentials: true,\r\n method: 'post',\r\n data:\r\n {\r\n userToken: this.props.credential.token,\r\n nifcUsername: nifcUsername\r\n }\r\n }).then(\r\n resp => {\r\n resolve(resp);\r\n },\r\n error => reject(error)\r\n )\r\n });\r\n }\r\n\r\n importCustomFiltersFromReduxStore (apiUrl, customFilters) {\r\n return new Promise((resolve, reject) => {\r\n\r\n this.request.makeRequest({\r\n url: `${apiUrl}/User/ImportCustomFiltersFromReduxStore`,\r\n hideCredentials: true,\r\n method: 'post',\r\n data:\r\n {\r\n userToken: this.props.credential.token,\r\n customFilters: JSON.stringify(customFilters)\r\n }\r\n }).then(\r\n resp => {\r\n resolve(resp);\r\n },\r\n error => reject(error)\r\n )\r\n });\r\n }\r\n getUserSession(apiUrl) {\r\n return new Promise((resolve, reject) => {\r\n\r\n this.request.makeRequest({\r\n url: `${apiUrl}/User/Login`,\r\n hideCredentials: true,\r\n method: 'post',\r\n data:\r\n {\r\n userToken: this.props.credential.token,\r\n expires: this.props.credential.expires\r\n }\r\n }).then(\r\n resp => {\r\n resolve(resp);\r\n },\r\n error => reject(error)\r\n )\r\n });\r\n }\r\n\r\n deleteCustomFilter (itemId) {\r\n return new Promise((resolve, reject) => {\r\n\r\n this.request.makeRequest({\r\n url: `${this.getOriginApiUrl()}/User/RemoveCustomFilter`,\r\n hideCredentials: true,\r\n method: 'post',\r\n data:\r\n {\r\n userToken: this.getOriginLayerToken(),\r\n filterId: itemId\r\n }\r\n }).then(\r\n resp => {\r\n resolve(resp);\r\n },\r\n error => reject(error)\r\n )\r\n });\r\n }\r\n\r\n addCustomFilter(filterName, customFilter) {\r\n return new Promise((resolve, reject) => {\r\n\r\n this.request.makeRequest({\r\n url: `${this.getOriginApiUrl()}/User/AddCustomFilter`,\r\n hideCredentials: true,\r\n method: 'post',\r\n data:\r\n {\r\n userToken: this.getOriginLayerToken(),\r\n filterName: filterName,\r\n customFilter: JSON.stringify(customFilter)\r\n }\r\n }).then(\r\n resp => {\r\n resolve(resp);\r\n },\r\n error => reject(error)\r\n )\r\n });\r\n }\r\n\r\n updateCustomFilter(filterId, filterName, customFilter) {\r\n return new Promise((resolve, reject) => {\r\n\r\n this.request.makeRequest({\r\n url: `${this.getOriginApiUrl()}/User/UpdateCustomFilter`,\r\n hideCredentials: true,\r\n method: 'post',\r\n data:\r\n {\r\n userToken: this.getOriginLayerToken(),\r\n filterName: filterName,\r\n filterId: filterId,\r\n customFilter: JSON.stringify(customFilter)\r\n }\r\n }).then(\r\n resp => {\r\n resolve(resp);\r\n },\r\n error => reject(error)\r\n )\r\n });\r\n }\r\n\r\n async getMapViewImage(args) {\r\n return new Promise((resolve, reject) => {\r\n loadModules([\r\n 'esri/tasks/PrintTask',\r\n 'esri/tasks/support/PrintParameters',\r\n 'esri/tasks/support/PrintTemplate'\r\n ])\r\n .then(([PrintTask, PrintParameters, PrintTemplate]) => {\r\n\r\n const printUrl = 'https://utility.arcgisonline.com/arcgis/rest/services/Utilities/PrintingTools/GPServer/Export%20Web%20Map%20Task';\r\n let printTask = new PrintTask({\r\n url: printUrl\r\n });\r\n\r\n let printTemplate = new PrintTemplate(printConfig.template);\r\n let printParameters = new PrintParameters({\r\n view: args.view,\r\n template: printTemplate\r\n })\r\n\r\n printTask.execute(printParameters).then(\r\n result => {\r\n console.log(result);\r\n resolve(result);\r\n },\r\n error => {\r\n console.log(error);\r\n reject(error);\r\n }\r\n );\r\n\r\n\r\n });\r\n });\r\n }\r\n\r\n logout() {\r\n return new Promise((resolve, reject) => {\r\n this.request.makeRequest({\r\n url: `${this.getPortalUrl()}/sharing/rest/oauth2/signout`,\r\n handleAs: 'text'\r\n }).then(\r\n resp => resolve(resp),\r\n error => reject(error)\r\n );\r\n });\r\n }\r\n}\r\n","import React from 'react';\r\nimport CircularProgress from 'material-ui/CircularProgress';\r\n\r\nimport theme from '../muiTheme';\r\n\r\nconst Splash = (props) => {\r\n return (\r\n
\r\n \r\n

NIFC INSPECTOR

\r\n
\r\n );\r\n}\r\n\r\nexport default Splash;\r\n","export default __webpack_public_path__ + \"static/media/inform_logo.ee96db2e.png\";","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport RaisedButton from 'material-ui/RaisedButton';\r\nimport Dialog from 'material-ui/Dialog';\r\n//import Alert from '@mui/material/Alert';\r\n//import AlertTitle from '@mui/material/AlertTitle';\r\n\r\nimport logo from '../images/inform_logo.png';\r\n\r\nconst Login = (props) => {\r\n const attemptLogin = () => {\r\n window.authManager.login();\r\n }\r\n\r\n const splashStyle = {\r\n backgroundSize: 'cover, cover',\r\n height: '100%',\r\n width: '100%',\r\n display: 'flex',\r\n flexDirection: 'column'\r\n }\r\n\r\n return (\r\n
\r\n \r\n
\r\n
\r\n \r\n \"InFORM\r\n\r\n \r\n \r\n

THIS IS A NOTICE OF MONITORING OF THE DEPARTMENT OF THE INTERIOR (DOI) INFORMATION SYSTEMS.

\r\n

This computer system, including all related equipment, networks, and network devices (including Internet access), is provided by the Department of the Interior (DOI) in accordance with the agency policy for official use and \r\n limited personal use. All agency computer systems may be monitored for all lawful purposes, including but not limited to, ensuring that use is authorized, for management of the system, to facilitate protection against unauthorized access, \r\n and to verity security procedures, survivability and operational security. \r\n

\r\n

Any information on this computer systems may be examined, recorded, copied and used for authorized purposes at any time. All information, including personal information, \r\n placed or sent over this system may be monitored, and users of this system are reminded that such monitoring does occur. Therefore, there should be no expectation of privacy with respect to use of this system. By logging into this agency \r\n computer system, you acknowledge and consent to the monitoring of this system. Evidence of your use, authorized or unauthorized, collected during monitoring may be used for civil, criminal, administrative, or other adverse action. \r\n Unauthorized or illegal use may subject you to prosecution.

\r\n\r\n

These data are provided by the US Department of the Interior, Office of Wildland Fire “as is” and might contain errors or omissions. The User assumes the entire risk associated with its use of these data and bears all responsibility in determining whether these data are fit for the User’s intended use.

The information contained in these data is dynamic and can be expected to change over time.\r\n The data are not better than the source systems that provide data through the Integrated Reporting of Wildland Fire Information (IRWIN) service.

\r\n\r\n

By logging in, I agree to above terms of use.

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

{`Version: ${props.appConfig.appVersion + \".\" + props.appConfig.minorReleaseVersion}`}

\r\n
\r\n
\r\n \r\n
\r\n )\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n appConfig: state.config\r\n})\r\n\r\nexport default connect(mapStateToProps, null)(Login)\r\n","\r\n//\r\n// This module contains all methods that handle communication between\r\n// the React/Redux application and the JSAPI map\r\n//\r\n\r\nimport { loadModules } from 'esri-loader';\r\n\r\n//***************\r\n// Map\r\n//***************\r\n\r\nexport function setMapExtent(extent) {\r\n return new Promise((resolve, reject) => {\r\n loadModules(['dojo/topic']).then( ([topic]) => {\r\n topic.publish('Map/set-extent', extent, resolve, reject);\r\n });\r\n });\r\n}\r\n\r\nexport function getMapExtent() {\r\n return new Promise((resolve, reject) => {\r\n loadModules(['dojo/topic']).then( ([topic]) => {\r\n topic.publish('Map/get-extent', resolve, reject);\r\n });\r\n });\r\n}\r\n\r\nexport function getMapScreenshot() {\r\n return new Promise((resolve, reject) => {\r\n loadModules(['dojo/topic']).then( ([topic]) => {\r\n topic.publish('Map/get-map-screenshot', resolve, reject);\r\n });\r\n });\r\n}\r\n\r\nexport function getCurrentBasemap() {\r\n return new Promise((resolve, reject) => {\r\n loadModules(['dojo/topic']).then( ([topic]) => {\r\n topic.publish('Map/get-current-basemap', resolve, reject);\r\n });\r\n });\r\n}\r\n\r\n\r\nexport function onMapExtentChanged(cb) {\r\n return new Promise((resolve, reject) => {\r\n loadModules(['dojo/topic']).then( ([topic]) => {\r\n topic.publish('Map/extent-changed', cb, resolve, reject);\r\n });\r\n });\r\n}\r\n\r\nexport function setMapViewTarget(args) {\r\n return new Promise((resolve, reject) => {\r\n loadModules(['dojo/topic']).then( ([topic]) => {\r\n topic.publish('Map/set-map-view-target', args, resolve, reject);\r\n });\r\n });\r\n}\r\n\r\n//\r\nexport function zoomToPolygon(poly) {\r\n return new Promise((resolve, reject) => {\r\n loadModules(['dojo/topic']).then( ([topic]) => {\r\n topic.publish('Map/zoom-to-polygon', poly, resolve, reject);\r\n });\r\n });\r\n}\r\nexport function setViewPopupEnabled(args) {\r\n return new Promise((resolve, reject) => {\r\n loadModules(['dojo/topic']).then( ([topic]) => {\r\n topic.publish('Map/set-view-popup', args, resolve, reject);\r\n });\r\n });\r\n}\r\n\r\nexport function getScreenshot(name) {\r\n return new Promise((resolve, reject) => {\r\n loadModules(['dojo/topic']).then( ([topic]) => {\r\n topic.publish('Map/get-screenshot', name, resolve, reject);\r\n });\r\n });\r\n}\r\n\r\nexport function setExtent(args) {\r\n return new Promise((resolve, reject) => {\r\n loadModules(['dojo/topic']).then( ([topic]) => {\r\n topic.publish('Map/set-extent', args, resolve, reject);\r\n });\r\n });\r\n}\r\n\r\n\r\n//***************\r\n// LayerManager\r\n//***************\r\n\r\nexport function setOriginLayerVisible(visible) {\r\n return new Promise((resolve, reject) => {\r\n loadModules(['dojo/topic']).then( ([topic]) => {\r\n topic.publish('LayerManager/set-origin-visible', visible, resolve, reject);\r\n });\r\n });\r\n}\r\n\r\nexport function refreshOriginLayer() {\r\n return new Promise((resolve, reject) => {\r\n loadModules(['dojo/topic']).then( ([topic]) => {\r\n topic.publish('LayerManager/origin-refresh', resolve, reject);\r\n });\r\n });\r\n}\r\n\r\nexport function getOriginLayerFieldInfos() {\r\n return new Promise((resolve, reject) => {\r\n loadModules(['dojo/topic']).then( ([topic]) => {\r\n topic.publish('LayerManager/get-origin-fields', resolve, reject);\r\n });\r\n });\r\n}\r\n\r\nexport function getOriginLayerDefinitionExpression() {\r\n return new Promise((resolve, reject) => {\r\n loadModules(['dojo/topic']).then( ([topic]) => {\r\n topic.publish('LayerManager/get-origin-definition-expression', resolve, reject);\r\n });\r\n });\r\n}\r\n\r\nexport function setCustomFilterDefinitionExpression(expression) {\r\n return new Promise((resolve, reject) => {\r\n loadModules(['dojo/topic']).then( ([topic]) => {\r\n topic.publish('LayerManager/set-custom-filter-definition-expression', expression, resolve, reject);\r\n });\r\n });\r\n}\r\n\r\nexport function setOriginLayerDefinitionExpression(filter) {\r\n return new Promise((resolve, reject) => {\r\n loadModules(['dojo/topic']).then( ([topic]) => {\r\n topic.publish('LayerManager/set-origin-definition-expression', filter, resolve, reject);\r\n });\r\n });\r\n}\r\n\r\nexport function onOriginLayerUpdateEnd(cb) {\r\n return new Promise((resolve, reject) => {\r\n loadModules(['dojo/topic']).then( ([topic]) => {\r\n topic.publish('LayerManager/on-update-end-origin-layer', cb, resolve, reject);\r\n });\r\n });\r\n}\r\n\r\nexport function getOriginLayerFeature(id) {\r\n return new Promise((resolve, reject) => {\r\n loadModules(['dojo/topic']).then( ([topic]) => {\r\n topic.publish('LayerManager/get-origin-feature', id, resolve, reject);\r\n });\r\n });\r\n}\r\n\r\nexport function isOriginWithinPerimeter(perimeter, x, y) {\r\n return new Promise((resolve, reject) => {\r\n loadModules(['dojo/topic']).then( ([topic]) => {\r\n topic.publish('LayerManager/is-origin-within-perimeter', perimeter, x, y, resolve, reject);\r\n });\r\n });\r\n}\r\n\r\nexport function getOriginLayerFeatures(geometry) {\r\n return new Promise((resolve, reject) => {\r\n loadModules(['dojo/topic']).then( ([topic]) => {\r\n topic.publish('LayerManager/get-origin-features', geometry, resolve, reject);\r\n });\r\n });\r\n}\r\n\r\nexport function setSpatialFilterPolygon(polygon) {\r\n return new Promise((resolve, reject) => {\r\n loadModules(['dojo/topic']).then( ([topic]) => {\r\n topic.publish('LayerManager/set-spatial-filter-polygon', polygon, resolve, reject);\r\n });\r\n });\r\n}\r\n\r\nexport function getFullOriginLayerFeaturesFromApi(ids) {\r\n return new Promise((resolve, reject) => {\r\n loadModules(['dojo/topic']).then( ([topic]) => {\r\n topic.publish('LayerManager/get-full-origin-features-from-api', ids, resolve, reject);\r\n });\r\n });\r\n}\r\n\r\n\r\nexport function setOriginSelectionGraphic(point) {\r\n return new Promise((resolve, reject) => {\r\n loadModules(['dojo/topic']).then( ([topic]) => {\r\n topic.publish('LayerManager/set-origin-selection-graphic', point, resolve, reject);\r\n });\r\n });\r\n}\r\n\r\n\r\nexport function setOriginSelectionGraphics(args) {\r\n return new Promise((resolve, reject) => {\r\n loadModules(['dojo/topic']).then( ([topic]) => {\r\n topic.publish('LayerManager/set-origin-selection-graphics', args, resolve, reject);\r\n });\r\n });\r\n}\r\n\r\nexport function queryIntersectingIncidents(args) {\r\n return new Promise((resolve, reject) => {\r\n loadModules(['dojo/topic']).then( ([topic]) => {\r\n topic.publish('LayerManager/query-intersecting-incidents', args, resolve, reject);\r\n });\r\n });\r\n}\r\n\r\nexport function clearOriginSelectionGraphics(args) {\r\n return new Promise((resolve, reject) => {\r\n loadModules(['dojo/topic']).then( ([topic]) => {\r\n topic.publish('LayerManager/clear-origin-selection-graphics', args, resolve, reject);\r\n });\r\n });\r\n}\r\n\r\nexport function setVisiblePerimeters(args) {\r\n return new Promise((resolve, reject) => {\r\n loadModules(['dojo/topic']).then( ([topic]) => {\r\n topic.publish('LayerManager/set-visible-perimeters', args, resolve, reject);\r\n });\r\n });\r\n}\r\n\r\nexport function setPerimeterGraphic(perimeter) {\r\n return new Promise((resolve, reject) => {\r\n loadModules(['dojo/topic']).then( ([topic]) => {\r\n topic.publish('LayerManager/set-perimeter-graphic', perimeter, resolve, reject);\r\n });\r\n });\r\n}\r\n\r\nexport function getForIdsForQuery(spatialFilterId, geometry, resultOffset, results, whereClause) {\r\n return new Promise((resolve, reject) => {\r\n loadModules(['dojo/topic']).then( ([topic]) => {\r\n topic.publish('LayerManager/get-forids-for-query', spatialFilterId, geometry, resultOffset, results, whereClause, resolve, reject);\r\n });\r\n });\r\n}\r\n\r\nexport function clearPerimeterGraphics() {\r\n return new Promise((resolve, reject) => {\r\n loadModules(['dojo/topic']).then( ([topic]) => {\r\n topic.publish('LayerManager/clear-perimeter-graphics', resolve, reject);\r\n });\r\n });\r\n}\r\n\r\n\r\nexport function clearVisiblePerimeters(args) {\r\n return new Promise((resolve, reject) => {\r\n loadModules(['dojo/topic']).then( ([topic]) => {\r\n topic.publish('LayerManager/clear-visible-perimeters', args, resolve, reject);\r\n });\r\n });\r\n}\r\n\r\nexport function setPerimeterSymbology(args) {\r\n return new Promise((resolve, reject) => {\r\n loadModules(['dojo/topic']).then( ([topic]) => {\r\n topic.publish('LayerManager/set-perimeters-symbology', args, resolve, reject);\r\n });\r\n });\r\n}\r\n\r\nexport function setModifiedPerimeter(args) {\r\n return new Promise((resolve, reject) => {\r\n loadModules(['dojo/topic']).then( ([topic]) => {\r\n topic.publish('LayerManager/set-modified-perimeter', args, resolve, reject);\r\n });\r\n });\r\n}\r\n\r\nexport function setModifiedPerimeterNoClear(args) {\r\n return new Promise((resolve, reject) => {\r\n loadModules(['dojo/topic']).then( ([topic]) => {\r\n topic.publish('LayerManager/set-modified-perimeter-no-clear', args, resolve, reject);\r\n });\r\n });\r\n}\r\n\r\nexport function addDebugGraphic(graphic, attributes, isConflict) {\r\n return new Promise((resolve, reject) => {\r\n loadModules(['dojo/topic']).then( ([topic]) => {\r\n topic.publish('LayerManager/add-debug-graphic', graphic, attributes, isConflict, resolve, reject);\r\n });\r\n });\r\n}\r\n\r\nexport function clearModifiedPerimeter(args) {\r\n return new Promise((resolve, reject) => {\r\n loadModules(['dojo/topic']).then( ([topic]) => {\r\n topic.publish('LayerManager/clear-modified-perimeter', args, resolve, reject);\r\n });\r\n });\r\n}\r\n\r\n//***************\r\n// DrawToolbar\r\n//***************\r\n\r\nexport function enableDrawMode(args) {\r\n return new Promise((resolve, reject) => {\r\n loadModules(['dojo/topic']).then( ([topic]) => {\r\n topic.publish('Draw/enable-draw-mode', args, resolve);\r\n });\r\n });\r\n}\r\n\r\nexport function disableDrawMode() {\r\n return new Promise((resolve, reject) => {\r\n loadModules(['dojo/topic']).then( ([topic]) => {\r\n topic.publish('Draw/disable-draw-mode', resolve);\r\n });\r\n });\r\n}\r\n\r\nexport function pauseDrawMode() {\r\n return new Promise((resolve, reject) => {\r\n loadModules(['dojo/topic']).then( ([topic]) => {\r\n topic.publish('Draw/pause-draw-mode', resolve);\r\n });\r\n });\r\n}\r\n\r\nexport function resumeDrawMode() {\r\n return new Promise((resolve, reject) => {\r\n loadModules(['dojo/topic']).then( ([topic]) => {\r\n topic.publish('Draw/resume-draw-mode', resolve);\r\n });\r\n });\r\n}\r\n\r\nexport function onDrawGeometryUpdated(callback) {\r\n return new Promise((resolve, reject) => {\r\n loadModules(['dojo/topic']).then( ([topic]) => {\r\n topic.publish('Draw/set-on-geometry-update-callback', callback, resolve, reject);\r\n });\r\n });\r\n}\r\n\r\nexport function completeDrawUpdate() {\r\n return new Promise((resolve, reject) => {\r\n loadModules(['dojo/topic']).then( ([topic]) => {\r\n topic.publish('Draw/complete-update', resolve, reject);\r\n });\r\n });\r\n}\r\n\r\nexport function setUploadPolygonGeometry(geometry) {\r\n return new Promise((resolve, reject) => {\r\n loadModules(['dojo/topic']).then( ([topic]) => {\r\n topic.publish('Draw/set-upload-polygon-geometry', geometry, resolve, reject);\r\n });\r\n });\r\n}\r\n\r\nexport function getDrawPolygonGeometry() {\r\n return new Promise((resolve, reject) => {\r\n loadModules(['dojo/topic']).then( ([topic]) => {\r\n topic.publish('Draw/get-polygon-geometry', resolve, reject);\r\n });\r\n });\r\n}\r\n","import React, { Component } from 'react';\r\nimport { loadModules } from 'esri-loader';\r\nimport { getMapExtent, getCurrentBasemap} from '../esri/mapHub';\r\nimport symbols from '../../defaults/Symbols.json'\r\n\r\nexport class NewIncidentMap extends Component\r\n{\r\n constructor(props)\r\n {\r\n super(props);\r\n this.state =\r\n {\r\n mapIsLoaded: false,\r\n userLatitude: null,\r\n userLongitude: null,\r\n manualLat: props.manualLat,\r\n manualLong: props.manualLong\r\n };\r\n\r\n this.mapRef = React.createRef();\r\n this.startup();\r\n }\r\n\r\n componentWillReceiveProps(nextProps)\r\n {\r\n if(!this.state.mapIsLoaded && nextProps.open && !this.props.open)\r\n {\r\n this.startup();\r\n }\r\n\r\n if(nextProps.manualLat !== this.state.manualLat || nextProps.manualLong !== this.state.manualLong)\r\n {\r\n this.updatePoint(nextProps.manualLat, nextProps.manualLong);\r\n }\r\n }\r\n\r\n shouldComponentUpdate(nextProps, nextState)\r\n {\r\n return false;\r\n }\r\n\r\n componentWillUnmount()\r\n {\r\n // Clean up jsapi's dirty little mess\r\n }\r\n\r\n render()\r\n {\r\n return (\r\n
\r\n );\r\n }\r\n\r\n updatePoint = (manualLat, manualLong) =>\r\n {\r\n if (manualLat === this.state.userLatitude && manualLong === this.state.userLongitude)\r\n {\r\n return;\r\n }\r\n\r\n loadModules(['esri/geometry/coordinateFormatter', 'esri/Graphic', 'esri/symbols/SimpleMarkerSymbol'])\r\n .then( ([coordinateFormatter, Graphic, SimpleMarkerSymbol]) =>\r\n {\r\n // Load dependencies of \"coordinateFormatter\" module\r\n coordinateFormatter.load().then(() =>\r\n {\r\n var newPoint = coordinateFormatter.fromLatitudeLongitude(manualLat + \" \" + manualLong);\r\n\r\n this.setState({\r\n userLatitude: manualLat,\r\n userLongitude: manualLong\r\n });\r\n\r\n this.props.onCoordinateUpdate(manualLat, manualLong);\r\n\r\n this.originGraphicsLayer.removeAll();\r\n\r\n this.originGraphicsLayer.graphics.add(\r\n new Graphic(\r\n {\r\n geometry: newPoint,\r\n symbol: new SimpleMarkerSymbol(symbols.newIncidentSymbol)\r\n })\r\n );\r\n\r\n this.view.center = newPoint;\r\n console.log(newPoint);\r\n\r\n });\r\n });\r\n }\r\n\r\n startup = () =>\r\n {\r\n loadModules([\r\n 'esri/Map',\r\n 'esri/views/MapView',\r\n 'esri/widgets/BasemapToggle',\r\n 'esri/layers/GraphicsLayer',\r\n 'esri/Graphic',\r\n 'esri/symbols/SimpleMarkerSymbol',\r\n 'esri/widgets/Search'], { css: true })\r\n .then(([\r\n ArcGISMap,\r\n MapView,\r\n BasemapToggle,\r\n GraphicsLayer,\r\n Graphic,\r\n SimpleMarkerSymbol,\r\n Search]) =>\r\n {\r\n const map = new ArcGISMap({\r\n basemap: 'topo-vector'\r\n });\r\n\r\n this.view = new MapView({\r\n container: this.mapRef.current,\r\n map: map,\r\n center: [-118, 34],\r\n zoom: 8\r\n });\r\n\r\n this.basemapToggle = new BasemapToggle({\r\n view: this.view\r\n });\r\n\r\n this.map = this.view.map;\r\n this.view.ui.add(this.basemapToggle, 'bottom-right');\r\n\r\n let originGraphicsLayer = new GraphicsLayer();\r\n map.add(originGraphicsLayer);\r\n this.originGraphicsLayer = originGraphicsLayer;\r\n\r\n //Set map extent to main map extent\r\n getMapExtent().then(\r\n result =>\r\n {\r\n this.view.extent = result;\r\n }\r\n );\r\n\r\n //Set map extent to main map extent\r\n /*getCurrentBasemap().then(\r\n result =>\r\n {\r\n if (result.id !== this.view.map.basemap.id)\r\n {\r\n this.view.map.basemap = result.id;\r\n this.basemapToggle.nextBasemap = (result.id === \"satellite\") ? 'topo-vector' : 'satellite';\r\n //this.basemapToggle.activeBasemap = (result.id === \"satellite\") ? 'satellite' : 'topo-vector';\r\n }\r\n }\r\n ); */\r\n\r\n //handler to move new incident graphic to user click point\r\n this.view.on(\"click\", (event) =>\r\n {\r\n this.setState({\r\n userLatitude: event.mapPoint.latitude,\r\n userLongitude: event.mapPoint.longitude\r\n });\r\n\r\n this.props.onCoordinateUpdate(event.mapPoint.latitude, event.mapPoint.longitude);\r\n\r\n this.originGraphicsLayer.removeAll();\r\n\r\n this.originGraphicsLayer.graphics.add(\r\n new Graphic(\r\n {\r\n geometry: event.mapPoint,\r\n symbol: new SimpleMarkerSymbol(symbols.newIncidentSymbol)\r\n })\r\n );\r\n });\r\n\r\n let search = new Search();\r\n this.view.ui.add(search, {\r\n position: \"top-right\"\r\n });\r\n\r\n this.search = search;\r\n\r\n this.search.on('select-result', (event) => {\r\n this.view.extent = event.result.extent.extent;\r\n });\r\n\r\n this.setState({\r\n mapIsLoaded: true\r\n });\r\n }\r\n\r\n );\r\n }\r\n}\r\n\r\nexport default NewIncidentMap;\r\n","import React, { Component } from 'react';\r\nimport { bindActionCreators } from 'redux';\r\nimport { connect } from 'react-redux';\r\nimport Dialog from 'material-ui/Dialog';\r\nimport Button from '@material-ui/core/Button';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport Table from '@material-ui/core/Table';\r\nimport TableBody from '@material-ui/core/TableBody';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport TableRow from '@material-ui/core/TableRow';\r\nimport DateFnsUtils from '@date-io/date-fns';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport Alert from '@material-ui/lab/Alert';\r\nimport { KeyboardDatePicker, MuiPickersUtilsProvider } from '@material-ui/pickers'\r\nimport CircularProgress from 'material-ui/CircularProgress';\r\nimport { TimePicker } from \"@material-ui/pickers\";\r\nimport Typography from '@material-ui/core/Typography';\r\nimport NewIncidentMap from './NewIncidentMap.js';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport Select from '@material-ui/core/Select';\r\nimport originFields from '../../defaults/PointOfOriginFields.json';\r\nimport theme from '../../muiTheme';\r\nimport { incidentOperations } from '../../redux/incident';\r\nimport { getOriginValidationInfo } from '../../utils/incidentHelper';\r\nimport Radio from '@mui/material/Radio';\r\nimport RadioGroup from '@mui/material/RadioGroup';\r\nimport FormControl from '@mui/material/FormControl';\r\nimport FormLabel from '@mui/material/FormLabel';\r\nimport FormControlLabel from '@mui/material/FormControlLabel';\r\nimport { getMapExtent } from '../esri/mapHub';\r\nimport { loadModules } from 'esri-loader';\r\nimport './NewIncidentDialog.css';\r\nimport { history } from '../../index';\r\n\r\nconst styles = {\r\n errorDialogContent: {\r\n width: \"500px\"\r\n },\r\n errorDialogTitle: {\r\n color: theme.palette.accent1Color\r\n }\r\n};\r\n\r\nexport class NewIncidentDialog extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.locaIndentifierRef = React.createRef();\r\n this.incidentNameRef = React.createRef();\r\n let attributes = {};\r\n\r\n attributes[originFields.name] = null;\r\n attributes[\"fireDiscoveryDate\"] = new Date();\r\n attributes[\"fireDiscoveryTime\"] = new Date();\r\n attributes[originFields.incidentTypeCategory] = \"WF\";\r\n attributes[originFields.incidentTypeKind] = \"FI\";\r\n attributes[originFields.localIncidentIdentifier] = null;\r\n attributes[originFields.discoveryAcres] = null;\r\n attributes[originFields.pooProtectingUnit] = this.props.incident.newIncidentProtectingUnit;\r\n attributes[originFields.isFSAssisted] = 0;\r\n attributes[originFields.isFireCodeRequested] = 1;\r\n\r\n this.state =\r\n {\r\n showUnitIdWarning: false,\r\n isQueryingUnitId: false,\r\n unitIdIsValid: false,\r\n unitIdString: '',\r\n mapIsLoaded: false,\r\n latLongIsValid: false,\r\n attributes: attributes,\r\n lat: null,\r\n long: null,\r\n latValue: \"\",\r\n longValue: \"\",\r\n canAddIncident: false,\r\n errorText: \"Please define a point of origin.\",\r\n invalidDiscoveryDate: false,\r\n showAddFailure: false,\r\n addFailureMessage: \"\",\r\n ddFormat: 'dd',\r\n pooProtectingUnit: this.props.incident.newIncidentProtectingUnit,\r\n incidentNameValue: '',\r\n localIncidentIdentifierValue: '',\r\n stateCode: '',\r\n fireSize: 0\r\n };\r\n }\r\n\r\n componentWillReceiveProps(nextProps) {\r\n\r\n if (nextProps.open && !this.props.open) {\r\n const copy = Object.assign({}, this.state.attributes);\r\n copy[\"fireDiscoveryDate\"] = new Date();\r\n copy[\"fireDiscoveryTime\"] = new Date();\r\n copy[originFields.localIncidentIdentifier] = null;\r\n copy[originFields.name] = null;\r\n\r\n this.setState(\r\n {\r\n attributes: copy,\r\n incidentNameValue: '',\r\n localIncidentIdentifierValue: '',\r\n lat: null,\r\n long: null,\r\n latValue: \"\",\r\n longValue: \"\",\r\n latLongIsValid: false,\r\n canAddIncident: false,\r\n showUnitIdWarning: false,\r\n isQueryingUnitId: false,\r\n fireSize: 0\r\n });\r\n }\r\n\r\n }\r\n\r\n lookupLocalId = () => \r\n {\r\n window.api.getLastLII(this.state.attributes[originFields.pooProtectingUnit]).then(unitIdResponse => \r\n {\r\n let attributes = this.state.attributes;\r\n \r\n attributes[originFields.localIncidentIdentifier] = unitIdResponse;\r\n\r\n this.setState({\r\n attributes: attributes,\r\n localIncidentIdentifierValue: unitIdResponse\r\n });\r\n \r\n });\r\n }\r\n verifyUnitId = () => {\r\n this.setState({\r\n isQueryingUnitId: true,\r\n showUnitIdWarning: false\r\n });\r\n\r\n window.api.getUnitId(this.state.attributes[originFields.pooProtectingUnit]).then(unitIdResponse => {\r\n const unitIdIsValid = (unitIdResponse && unitIdResponse.units && unitIdResponse.units.length > 0);\r\n const unitIdString = (unitIdIsValid) ? unitIdResponse.units[0].NAME : this.state.attributes[originFields.pooProtectingUnit] + \" is not a valid unit\";\r\n\r\n this.setState({\r\n isQueryingUnitId: false,\r\n showUnitIdWarning: true,\r\n unitIdIsValid: unitIdIsValid,\r\n unitIdString: unitIdString\r\n });\r\n });\r\n }\r\n updateLatLong = (lat, long) => {\r\n this.setState({\r\n latValue: lat,\r\n longValue: long\r\n });\r\n }\r\n\r\n setLatLongFromUserInput = (userLat, userLong) => {\r\n loadModules(['esri/geometry/coordinateFormatter'])\r\n .then(([coordinateFormatter]) => {\r\n\r\n coordinateFormatter.load().then(() => {\r\n var newPoint = coordinateFormatter.fromLatitudeLongitude(userLat + \" \" + userLong);\r\n\r\n if (newPoint) {\r\n this.setState({\r\n lat: newPoint.latitude,\r\n long: newPoint.longitude,\r\n latLongIsValid: true\r\n });\r\n } else {\r\n this.setState({\r\n lat: null,\r\n long: null,\r\n latValue: userLat,\r\n longValue: userLong,\r\n latLongIsValid: false,\r\n canAddIncident: false,\r\n errorText: \"Latitude and/or Longitude is invalid.\"\r\n });\r\n }\r\n\r\n this.checkAttributes(this.state.latLongIsValid);\r\n });\r\n });\r\n }\r\n\r\n handleLLFormatChange = (newFormat) => {\r\n loadModules(['esri/geometry/Point', 'esri/geometry/SpatialReference', 'esri/geometry/coordinateFormatter'])\r\n .then(([Point, SpatialReference, coordinateFormatter]) => {\r\n let newPoint = new Point\r\n ({\r\n latitude: this.state.lat,\r\n longitude: this.state.long,\r\n spatialReference: new SpatialReference(4326)\r\n });\r\n\r\n // Load dependencies of \"coordinateFormatter\" module\r\n coordinateFormatter.load().then(() => {\r\n\r\n var newLocationString = coordinateFormatter.toLatitudeLongitude(newPoint, newFormat, 6);\r\n let lat = newLocationString.substring(0, newLocationString.indexOf(\"N\") + 1);\r\n let long = newLocationString.substring(lat.length + 1);\r\n\r\n this.setState({\r\n ddFormat: newFormat\r\n });\r\n\r\n this.updateLatLong(lat, long);\r\n });\r\n });\r\n }\r\n\r\n latLongIsValid = (lat, long) => {\r\n if (Number.isNaN(lat) || Number.isNaN(long) || lat === null || long === null) {\r\n return false;\r\n }\r\n\r\n if (!((-90 <= lat) && (lat <= 90))) {\r\n return false;\r\n }\r\n\r\n if (!((-180 <= long) && (long <= 180))) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n handleSnackRequestClose = () => {\r\n this.setState({\r\n canAddIncident: true,\r\n showAddFailure: false\r\n });\r\n }\r\n\r\n onAddNewIncident = () => {\r\n loadModules(['esri/geometry/support/webMercatorUtils', 'esri/geometry/Point', 'esri/geometry/SpatialReference'])\r\n .then(([webMercatorUtils, Point, SpatialReference]) => {\r\n let geographicPoint = new Point\r\n ({\r\n latitude: this.state.lat,\r\n longitude: this.state.long,\r\n spatialReference: new SpatialReference(4326)\r\n });\r\n\r\n let mercatorPoint = webMercatorUtils.geographicToWebMercator(geographicPoint);\r\n\r\n let newIncidentFeature =\r\n {\r\n attributes: this.state.attributes,\r\n geometry: {\r\n x: this.state.long,\r\n y: this.state.lat,\r\n spatialReference: {\r\n wkid: 4269,\r\n latestWkid: 4269\r\n }\r\n }\r\n }\r\n\r\n const year = this.state.attributes[\"fireDiscoveryDate\"].getFullYear();\r\n const month = this.state.attributes[\"fireDiscoveryDate\"].getMonth();\r\n const date = this.state.attributes[\"fireDiscoveryDate\"].getDate();\r\n\r\n const hour = this.state.attributes[\"fireDiscoveryTime\"].getHours();\r\n const minute = this.state.attributes[\"fireDiscoveryTime\"].getMinutes();\r\n const second = this.state.attributes[\"fireDiscoveryTime\"].getSeconds();\r\n\r\n newIncidentFeature.attributes[originFields.discoveryDate] = new Date(year, month, date, hour, minute, second).valueOf();\r\n\r\n //Set Daily Acres to Discovery Acres\r\n newIncidentFeature.attributes[originFields.incidentSize] = newIncidentFeature.attributes[originFields.discoveryAcres];\r\n newIncidentFeature.attributes[originFields.pooProtectingUnit] = newIncidentFeature.attributes[originFields.pooProtectingUnit].toUpperCase();\r\n\r\n\r\n //Get rid of attributes IRWIN doesn't care about\r\n if (newIncidentFeature.attributes[originFields.incidentTypeCategory] === \"FA\") \r\n {\r\n delete newIncidentFeature.attributes[originFields.incidentSize];\r\n delete newIncidentFeature.attributes[originFields.discoveryAcres];\r\n }\r\n \r\n\r\n getMapExtent().then(\r\n result => {\r\n\r\n window.api.addIncident(newIncidentFeature, mercatorPoint).then(\r\n result => {\r\n if (result !== null && result.FORID) {\r\n this.setState({\r\n lat: null,\r\n long: null,\r\n latValue: \"\",\r\n longValue: \"\",\r\n errorText: \"\",\r\n latLongIsValid: false\r\n });\r\n\r\n this.props.onNewIncidentClose();\r\n history.push(\"/incidents/\" + result.FORID);\r\n }\r\n else {\r\n this.setState({\r\n addFailureMessage: \"Error: Incident was not added: \" + result.description[0].description,\r\n showAddFailure: true\r\n });\r\n }\r\n });\r\n }\r\n );\r\n }\r\n );\r\n }\r\n\r\n updateCoords = (lat, long) => {\r\n\r\n if (lat === this.state.lat && long === this.state.long) {\r\n return;\r\n }\r\n\r\n //var latNum = parseFloat(lat);\r\n //var longNum = parseFloat(long);\r\n\r\n this.setState({\r\n lat: lat,\r\n long: long,\r\n latLongIsValid: true,\r\n latValue: lat,\r\n longValue: long,\r\n errorText: \"\"\r\n });\r\n\r\n window.api.getStateFromOrigin(lat, long).then(\r\n result => {\r\n\r\n window.api.validateLatLong(lat, long).then(latLongIsValid => {\r\n\r\n if (latLongIsValid) {\r\n this.setState({\r\n stateCode: result\r\n });\r\n\r\n let attributes = this.state.attributes;\r\n let newValue = (result) ? (result + \"UNK\") : \"\";\r\n\r\n //We already have a code for this state, don't set it to UNK\r\n if (this.state.pooProtectingUnit.startsWith(result)) {\r\n return;\r\n }\r\n attributes[originFields.pooProtectingUnit] = result + \"UNK\";\r\n\r\n this.setState({\r\n attributes: attributes,\r\n pooProtectingUnit: newValue,\r\n latLongIsValid: latLongIsValid\r\n });\r\n\r\n this.props.setNewIncidentProtectingUnit(newValue);\r\n this.checkAttributes(latLongIsValid);\r\n }\r\n else {\r\n this.setState({\r\n canAddIncident: false,\r\n latLongIsValid: false\r\n });\r\n }\r\n });\r\n }\r\n );\r\n }\r\n\r\n checkAttributes = (latLongIsValid) => {\r\n\r\n if (!latLongIsValid) {\r\n this.setState({\r\n canAddIncident: false,\r\n errorText: \"Lat/Long did not intersect US State and Territory boundaries\"\r\n });\r\n\r\n return;\r\n }\r\n\r\n let canAdd = true;\r\n let errorText = \"\";\r\n if (this.state.lat === null || this.state.long === null) {\r\n canAdd = false;\r\n errorText = \"Please provide a valid point of origin.\";\r\n }\r\n\r\n /*if (!isNaN(this.state.long)) \r\n {\r\n if (this.state.long >= 40) \r\n {\r\n canAdd = false;\r\n errorText = \"Longitude is invalid\";\r\n }\r\n } */\r\n\r\n if (this.state.attributes[originFields.incidentTypeCategory] === 'RX') {\r\n\r\n if (this.state.attributes[originFields.name] && ((!this.state.attributes[originFields.name].includes(\"RX \") && !this.state.attributes[originFields.name].includes(\" RX\")))) \r\n {\r\n canAdd = false;\r\n errorText = \"Prescribed Fire Incident Name must include RX\";\r\n }\r\n }\r\n\r\n if (this.state.attributes[originFields.name] && (this.state.attributes[originFields.name].startsWith(\" \") || this.state.attributes[originFields.name].endsWith(\" \"))) \r\n {\r\n canAdd = false;\r\n errorText = \"Incident name cannot have leading or trailing spaces\";\r\n }\r\n\r\n if (this.state.attributes[originFields.name] === null || this.state.attributes[originFields.name] === \"\" || this.state.attributes[originFields.localIncidentIdentifier] === null || this.state.attributes[originFields.localIncidentIdentifier] === \"\") {\r\n canAdd = false;\r\n errorText = \"Please ensure Incident Name and Local Incident Identifier are both set.\";\r\n }\r\n\r\n if ((this.state.attributes[originFields.discoveryAcres] === null || this.state.attributes[originFields.discoveryAcres] === \"\") & this.state.attributes[originFields.incidentTypeCategory] !== \"FA\") \r\n {\r\n canAdd = false;\r\n errorText = \"Please provide a value for Discovery Acres.\";\r\n }\r\n\r\n if (this.state.attributes[originFields.pooProtectingUnit] === null || this.state.attributes[originFields.pooProtectingUnit] === \"\") {\r\n canAdd = false;\r\n errorText = \"Please provide a value for Protecting Unit.\";\r\n }\r\n \r\n if (this.state.attributes[originFields.incidentTypeCategory] === null || this.state.attributes[originFields.incidentTypeKind] === null || this.state.attributes[originFields.incidentTypeCategory] === \"\" || this.state.attributes[originFields.incidentTypeKind] === \"\") {\r\n canAdd = false;\r\n errorText = \"Please provide a value for Category.\";\r\n }\r\n\r\n let validationInfo = getOriginValidationInfo(this.state.attributes, []);\r\n if (!validationInfo.isValid) {\r\n canAdd = false;\r\n }\r\n this.setState({\r\n canAddIncident: canAdd,\r\n errorText: errorText\r\n });\r\n }\r\n\r\n handleBlur = () => {\r\n\r\n if (this.state.attributes[originFields.name] !== null || this.state.attributes[originFields.localIncidentIdentifier] === null) {\r\n return;\r\n }\r\n else {\r\n let attributes = this.state.attributes;\r\n attributes[originFields.name] = attributes[originFields.localIncidentIdentifier];\r\n\r\n this.setState({\r\n attributes: attributes,\r\n incidentNameValue: attributes[originFields.localIncidentIdentifier]\r\n });\r\n }\r\n }\r\n\r\n getUnitIdAlert = () => {\r\n if (this.state.showUnitIdWarning) {\r\n return ({this.state.unitIdString});\r\n }\r\n\r\n return (this.state.isQueryingUnitId) ? () : \"\";\r\n }\r\n\r\n onUpdateProp = (name, value) => {\r\n let changedLatLong = false;\r\n let updatedLatValue = this.state.latValue;\r\n let updatedLongValue = this.state.longValue;\r\n\r\n if (name === originFields.name) {\r\n this.setState({\r\n incidentNameValue: value\r\n });\r\n }\r\n\r\n if (name === originFields.localIncidentIdentifier) {\r\n this.setState({\r\n localIncidentIdentifierValue: value\r\n });\r\n }\r\n\r\n if (name === \"lat\") {\r\n changedLatLong = true;\r\n updatedLatValue = value;\r\n this.setLatLongFromUserInput(updatedLatValue, updatedLongValue);\r\n this.setState({\r\n latValue: value\r\n });\r\n }\r\n\r\n if (name === \"long\") {\r\n if (!value.startsWith(\"-\")) {\r\n value = \"-\" + value;\r\n }\r\n\r\n if (value.endsWith(\"E\") && !value.startsWith(\"-\")) {\r\n value = \"-\" + value;\r\n }\r\n\r\n changedLatLong = true;\r\n updatedLongValue = value;\r\n\r\n //var longNum = parseFloat(value);\r\n\r\n this.setLatLongFromUserInput(updatedLatValue, updatedLongValue);\r\n this.setState({\r\n longValue: value\r\n });\r\n }\r\n\r\n if (name === originFields.pooProtectingUnit) {\r\n this.setState({\r\n pooProtectingUnit: value\r\n });\r\n\r\n this.props.setNewIncidentProtectingUnit(value);\r\n }\r\n\r\n if (name === originFields.discoveryAcres) \r\n {\r\n this.setState({\r\n fireSize: value\r\n });\r\n }\r\n\r\n if (!changedLatLong) \r\n {\r\n let attributes = this.state.attributes;\r\n\r\n if (name === originFields.incidentTypeCategory) \r\n {\r\n attributes[originFields.incidentTypeKind] = (value === \"FA\") ? \"FM\" : \"FI\";\r\n\r\n if (value === \"FA\") \r\n {\r\n attributes[originFields.discoveryAcres] = 0;\r\n this.setState({\r\n fireSize: value\r\n });\r\n }\r\n }\r\n\r\n attributes[name] = value;\r\n\r\n this.setState({\r\n attributes: attributes\r\n });\r\n\r\n this.checkAttributes(this.state.latLongIsValid);\r\n }\r\n else {\r\n this.checkAttributes(this.state.latLongIsValid);\r\n }\r\n }\r\n\r\n render() {\r\n const validationInfo = getOriginValidationInfo(this.state.attributes, []);\r\n const unitIdAlert = this.getUnitIdAlert();\r\n return (\r\n\r\n \r\n
\r\n
\r\n Fire Point of Origin\r\n Avoid duplicate entries: If your unit has an IRWIN-connected CAD, please check with your dispatcher before creating a fire in Inspector.\r\n \r\n
\r\n\r\n \r\n \r\n \r\n \r\n Latitude\r\n \r\n \r\n {\r\n this.onUpdateProp(\"lat\", event.target.value);\r\n }}\r\n margin=\"dense\"\r\n required\r\n variant=\"outlined\"\r\n />\r\n \r\n \r\n {\r\n this.handleLLFormatChange(event.target.value);\r\n }}\r\n value={this.state.ddFormat} className=\"newincident-textField-zindex\">\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Longitude\r\n \r\n \r\n {\r\n this.onUpdateProp(\"long\", event.target.value);\r\n }}\r\n margin=\"dense\"\r\n required\r\n variant=\"outlined\"\r\n />\r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n Local Incident Identifier\r\n {\r\n this.onUpdateProp(originFields.localIncidentIdentifier, event.target.value);\r\n }}\r\n margin=\"dense\"\r\n required\r\n variant=\"outlined\"\r\n error={validationInfo.errors.hasOwnProperty(originFields.localIncidentIdentifier)}\r\n helperText={validationInfo.errors[originFields.localIncidentIdentifier]}\r\n />\r\n \r\n
\r\n
\r\n Incident Name\r\n {\r\n this.onUpdateProp(originFields.name, event.target.value);\r\n }}\r\n margin=\"dense\"\r\n required\r\n variant=\"outlined\"\r\n error={validationInfo.errors.hasOwnProperty(originFields.name)}\r\n helperText={validationInfo.errors[originFields.name]}\r\n />\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n Request FireCode?\r\n {\r\n this.onUpdateProp(originFields.isFireCodeRequested, event.target.value);\r\n }}\r\n value={this.state.attributes[originFields.isFireCodeRequested]}>\r\n } label=\"Yes\" />\r\n } label=\"No\" />\r\n \r\n \r\n\r\n\r\n
\r\n
\r\n \r\n Is FS Assisted?\r\n {\r\n this.onUpdateProp(originFields.isFSAssisted, event.target.value);\r\n }}\r\n value={this.state.attributes[originFields.isFSAssisted]}>\r\n } label=\"Yes\" />\r\n } label=\"No\" />\r\n \r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n
\r\n Fire Discovery Date\r\n\r\n {\r\n this.onUpdateProp(\"fireDiscoveryDate\", event);\r\n }} />\r\n\r\n
\r\n
\r\n Fire Discovery Time\r\n {\r\n this.onUpdateProp(\"fireDiscoveryTime\", event);\r\n }}\r\n />\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n Category\r\n {\r\n this.onUpdateProp(originFields.incidentTypeCategory, event.target.value);\r\n }}\r\n id={originFields.incidentTypeCategory}>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n Fire Size\r\n {\r\n this.onUpdateProp(originFields.discoveryAcres, event.target.value);\r\n }}\r\n margin=\"dense\"\r\n required\r\n variant=\"outlined\"\r\n error={validationInfo.errors[originFields.discoveryAcres]}\r\n helperText={(this.state.attributes[originFields.incidentTypeCategory] === \"FA\") ? \"Disabled for False Alarm\" : validationInfo.errors[originFields.discoveryAcres]}\r\n />\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n Protecting Unit\r\n {\r\n this.onUpdateProp(originFields.pooProtectingUnit, event.target.value);\r\n }}\r\n margin=\"dense\"\r\n required\r\n variant=\"outlined\"\r\n error={validationInfo.errors.hasOwnProperty(originFields.pooProtectingUnit)}\r\n helperText={validationInfo.errors[originFields.pooProtectingUnit]}\r\n />\r\n \r\n
\r\n
\r\n {unitIdAlert}\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\nconst mapStateToProps = state => ({\r\n incident: state.incident\r\n})\r\n\r\nconst mapDispatchToProps = function (dispatch) {\r\n return bindActionCreators({\r\n ...incidentOperations\r\n }, dispatch);\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(NewIncidentDialog);\r\n","import React, { Component, Fragment } from 'react';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Table from '@material-ui/core/Table';\r\nimport TableBody from '@material-ui/core/TableBody';\r\nimport TableHead from '@material-ui/core/TableHead';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport TableRow from '@material-ui/core/TableRow';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport Select from '@material-ui/core/Select';\r\nimport XLSX from 'xlsx';\r\n\r\nimport './NonFederalFires.css';\r\n\r\n\r\nclass NonFederalFires extends Component {\r\n constructor(props) {\r\n\r\n super(props);\r\n\r\n const currentYear = new Date().getFullYear();\r\n const optionYears = Array.from(new Array(40), (val, index) => currentYear - index);\r\n\r\n this.state =\r\n {\r\n isQuerying: false,\r\n dataLoaded: false,\r\n dataResults: {},\r\n startYear: (currentYear - 5),\r\n endYear: currentYear,\r\n reportYears: this.getDates((currentYear - 5), currentYear),\r\n optionYears: optionYears,\r\n datesValid: true\r\n };\r\n }\r\n\r\n formatCsvData = () => {\r\n\r\n var years = [...this.state.reportYears];\r\n years.unshift('', '');\r\n\r\n let firstRow = years;\r\n let dataRows = [firstRow];\r\n\r\n this.state.dataResults.forEach(dataRow => {\r\n const stateAbbr = dataRow.Key;\r\n let newRow = [stateAbbr]\r\n\r\n this.state.reportYears.forEach(year => {\r\n\r\n const dataObj = dataRow.Value[year];\r\n const displayValue = dataObj[\"RecordCount\"];\r\n newRow.push(displayValue);\r\n });\r\n\r\n dataRows.push(newRow);\r\n });\r\n\r\n let summaryRow = ['Totals', ''];\r\n\r\n\r\n this.state.reportYears.forEach(year => {\r\n\r\n let yearTotal = 0;\r\n this.state.dataResults.forEach(dataRow => {\r\n\r\n const dataObj = dataRow.Value[year].RecordCount;\r\n yearTotal += dataObj;\r\n });\r\n\r\n summaryRow.push(yearTotal);\r\n });\r\n\r\n dataRows.push(summaryRow);\r\n return dataRows;\r\n }\r\n downloadCsv = () => {\r\n const workbook = XLSX.utils.book_new();\r\n let csvData = this.formatCsvData();\r\n let reportSheet = XLSX.utils.aoa_to_sheet(csvData);\r\n XLSX.utils.book_append_sheet(workbook, reportSheet, \"NonFederalFires\");\r\n\r\n XLSX.writeFile(workbook, \"NonFederalFires.xlsx\");\r\n }\r\n\r\n buildTable = () => {\r\n return (\r\n \r\n \r\n Number of Fires by State by Year\r\n \r\n \r\n as of {new Date().toUTCString()}\r\n \r\n \r\n \r\n \r\n \r\n {\r\n this.state.reportYears.map(year => { return ({year}) })\r\n }\r\n \r\n \r\n \r\n {this.getTableRows()}\r\n {this.getSummaryRow()}\r\n \r\n\r\n
\r\n
)\r\n }\r\n\r\n getSummaryRow = () => {\r\n\r\n let yearArray = [];\r\n this.state.reportYears.forEach(year => {\r\n let yearTotal = 0;\r\n\r\n this.state.dataResults.forEach(dataRow => {\r\n\r\n const dataObj = dataRow.Value[year].RecordCount;\r\n yearTotal += dataObj;\r\n });\r\n\r\n yearArray.push(yearTotal);\r\n });\r\n\r\n return (\r\n \r\n Totals:\r\n {\r\n yearArray.map(year => {\r\n return ({year})\r\n })\r\n }\r\n \r\n )\r\n }\r\n\r\n getTableRows = () => {\r\n\r\n let index = 0;\r\n return this.state.dataResults.map(dataRow => {\r\n const stateAbbr = dataRow.Key\r\n index++;\r\n return (\r\n \r\n {stateAbbr}\r\n {\r\n this.state.reportYears.map(year => {\r\n const dataObj = dataRow.Value[year];\r\n const displayValue = dataObj[\"RecordCount\"];\r\n\r\n return ({displayValue})\r\n })\r\n }\r\n \r\n )\r\n });\r\n\r\n }\r\n\r\n\r\n getDates = (startYear, endYear) => {\r\n\r\n var arr = [];\r\n var dt = startYear;\r\n\r\n while (dt <= endYear) {\r\n arr.push(dt);\r\n dt += 1;\r\n }\r\n\r\n return arr;\r\n };\r\n\r\n queryData = () => {\r\n if (!this.state.datesValid) {\r\n return;\r\n }\r\n this.setState({ isQuerying: true });\r\n\r\n window.api.queryNonFederalFireForYear(this.state.startYear, this.state.endYear).then(\r\n result => {\r\n this.setState(\r\n {\r\n dataResults: JSON.parse(result),\r\n queryingComplete: true,\r\n dataLoaded: true\r\n });\r\n }\r\n )\r\n }\r\n\r\n render() {\r\n if (!this.props.visible) {\r\n return null;\r\n }\r\n\r\n if (!this.state.isQuerying && !this.state.dataLoaded) {\r\n this.queryData();\r\n }\r\n\r\n let tableHeader = (this.state.dataLoaded) ? this.buildTable() : (
);\r\n //\r\n return (this.props.visible) ? (\r\n \r\n
\r\n
\r\n
\r\n Start Year: {\r\n const datesValid = (event.target.value <= this.state.endYear);\r\n\r\n this.setState({\r\n startYear: Number(event.target.value),\r\n datesValid: datesValid,\r\n reportYears: (datesValid) ? this.getDates(Number(event.target.value), this.state.endYear) : [],\r\n dataLoaded: false,\r\n isQuerying: false\r\n });\r\n }}\r\n >\r\n {\r\n this.state.optionYears.map(year => {\r\n return ()\r\n }\r\n )\r\n }\r\n \r\n\r\n End Year: {\r\n const datesValid = (event.target.value >= this.state.startYear);\r\n\r\n this.setState({\r\n endYear: Number(event.target.value),\r\n datesValid: datesValid,\r\n reportYears: (datesValid) ? this.getDates(this.state.startYear, Number(event.target.value)) : [],\r\n dataLoaded: false,\r\n isQuerying: false\r\n });\r\n }}\r\n >\r\n {\r\n this.state.optionYears.map(year => {\r\n return ()\r\n }\r\n )\r\n }\r\n \r\n
\r\n {tableHeader}\r\n
\r\n
\r\n
\r\n ) : ('');\r\n }\r\n}\r\n\r\nexport default NonFederalFires\r\n","import React, { Component, Fragment } from 'react';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Table from '@material-ui/core/Table';\r\nimport TableBody from '@material-ui/core/TableBody';\r\nimport TableHead from '@material-ui/core/TableHead';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport TableRow from '@material-ui/core/TableRow';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport Select from '@material-ui/core/Select';\r\nimport XLSX from 'xlsx';\r\n\r\nimport './NonFederalFires.css';\r\n\r\n\r\nclass NonFederalRXFires extends Component {\r\n constructor(props) {\r\n\r\n super(props);\r\n\r\n const currentYear = new Date().getFullYear();\r\n const optionYears = Array.from(new Array(40), (val, index) => currentYear - index);\r\n\r\n this.state =\r\n {\r\n isQuerying: false,\r\n dataLoaded: false,\r\n dataResults: {},\r\n startYear: (currentYear - 5),\r\n endYear: currentYear,\r\n reportYears: this.getDates((currentYear - 5), currentYear),\r\n optionYears: optionYears,\r\n datesValid: true\r\n };\r\n }\r\n\r\n formatCsvData = () => {\r\n\r\n var years = [...this.state.reportYears];\r\n years.unshift('', '');\r\n\r\n let firstRow = years;\r\n let dataRows = [firstRow];\r\n\r\n this.state.dataResults.forEach(dataRow => {\r\n const stateAbbr = dataRow.Key;\r\n let newRow = [stateAbbr]\r\n\r\n this.state.reportYears.forEach(year => {\r\n\r\n const dataObj = dataRow.Value[year];\r\n const displayValue = dataObj[\"RecordCount\"];\r\n newRow.push(displayValue);\r\n });\r\n\r\n dataRows.push(newRow);\r\n });\r\n\r\n let summaryRow = ['Totals', ''];\r\n\r\n\r\n this.state.reportYears.forEach(year => {\r\n\r\n let yearTotal = 0;\r\n this.state.dataResults.forEach(dataRow => {\r\n\r\n const dataObj = dataRow.Value[year].RecordCount;\r\n yearTotal += dataObj;\r\n });\r\n\r\n summaryRow.push(yearTotal);\r\n });\r\n\r\n dataRows.push(summaryRow);\r\n return dataRows;\r\n }\r\n downloadCsv = () => {\r\n const workbook = XLSX.utils.book_new();\r\n let csvData = this.formatCsvData();\r\n let reportSheet = XLSX.utils.aoa_to_sheet(csvData);\r\n XLSX.utils.book_append_sheet(workbook, reportSheet, \"NonFederalFires\");\r\n\r\n XLSX.writeFile(workbook, \"NonFederalFires.xlsx\");\r\n }\r\n\r\n buildTable = () => {\r\n return (\r\n \r\n \r\n Number of Fires by State by Year\r\n \r\n \r\n as of {new Date().toUTCString()}\r\n \r\n \r\n \r\n \r\n \r\n {\r\n this.state.reportYears.map(year => { return ({year}) })\r\n }\r\n \r\n \r\n \r\n {this.getTableRows()}\r\n {this.getSummaryRow()}\r\n \r\n\r\n
\r\n
)\r\n }\r\n\r\n getSummaryRow = () => {\r\n\r\n let yearArray = [];\r\n this.state.reportYears.forEach(year => {\r\n let yearTotal = 0;\r\n\r\n this.state.dataResults.forEach(dataRow => {\r\n\r\n const dataObj = dataRow.Value[year].RecordCount;\r\n yearTotal += dataObj;\r\n });\r\n\r\n yearArray.push(yearTotal);\r\n });\r\n\r\n return (\r\n \r\n Totals:\r\n {\r\n yearArray.map(year => {\r\n return ({year})\r\n })\r\n }\r\n \r\n )\r\n }\r\n\r\n getTableRows = () => {\r\n\r\n let index = 0;\r\n return this.state.dataResults.map(dataRow => {\r\n const stateAbbr = dataRow.Key\r\n index++;\r\n return (\r\n \r\n {stateAbbr}\r\n {\r\n this.state.reportYears.map(year => {\r\n const dataObj = dataRow.Value[year];\r\n const displayValue = dataObj[\"RecordCount\"];\r\n\r\n return ({displayValue})\r\n })\r\n }\r\n \r\n )\r\n });\r\n\r\n }\r\n\r\n\r\n getDates = (startYear, endYear) => {\r\n\r\n var arr = [];\r\n var dt = startYear;\r\n\r\n while (dt <= endYear) {\r\n arr.push(dt);\r\n dt += 1;\r\n }\r\n\r\n return arr;\r\n };\r\n\r\n queryData = () => {\r\n if (!this.state.datesValid) {\r\n return;\r\n }\r\n this.setState({ isQuerying: true });\r\n\r\n window.api.queryNonFederalRXFiresForYear(this.state.startYear, this.state.endYear).then(\r\n result => {\r\n this.setState(\r\n {\r\n dataResults: JSON.parse(result),\r\n queryingComplete: true,\r\n dataLoaded: true\r\n });\r\n }\r\n )\r\n }\r\n\r\n render() {\r\n if (!this.props.visible) {\r\n return null;\r\n }\r\n\r\n if (!this.state.isQuerying && !this.state.dataLoaded) {\r\n this.queryData();\r\n }\r\n\r\n let tableHeader = (this.state.dataLoaded) ? this.buildTable() : (
);\r\n //\r\n return (this.props.visible) ? (\r\n \r\n
\r\n
\r\n
\r\n Start Year: {\r\n const datesValid = (event.target.value <= this.state.endYear);\r\n\r\n this.setState({\r\n startYear: Number(event.target.value),\r\n datesValid: datesValid,\r\n reportYears: (datesValid) ? this.getDates(Number(event.target.value), this.state.endYear) : [],\r\n dataLoaded: false,\r\n isQuerying: false\r\n });\r\n }}\r\n >\r\n {\r\n this.state.optionYears.map(year => {\r\n return ()\r\n }\r\n )\r\n }\r\n \r\n\r\n End Year: {\r\n const datesValid = (event.target.value >= this.state.startYear);\r\n\r\n this.setState({\r\n endYear: Number(event.target.value),\r\n datesValid: datesValid,\r\n reportYears: (datesValid) ? this.getDates(this.state.startYear, Number(event.target.value)) : [],\r\n dataLoaded: false,\r\n isQuerying: false\r\n });\r\n }}\r\n >\r\n {\r\n this.state.optionYears.map(year => {\r\n return ()\r\n }\r\n )\r\n }\r\n \r\n
\r\n {tableHeader}\r\n
\r\n
\r\n
\r\n ) : ('');\r\n }\r\n}\r\n\r\nexport default NonFederalRXFires\r\n","import React, { Component } from 'react';\r\nimport { loadModules } from 'esri-loader';\r\nimport { getMapExtent} from '../../esri/mapHub';\r\nimport symbols from '../../../defaults/Symbols.json'\r\nimport { configOperations } from '../../../redux/config';\r\nimport { bindActionCreators } from 'redux';\r\nimport { connect } from 'react-redux';\r\n\r\nexport class MissingAcreageMap extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state =\r\n {\r\n mapIsLoaded: false\r\n };\r\n\r\n this.mapRef = React.createRef();\r\n this.startup();\r\n }\r\n\r\n componentWillReceiveProps(nextProps) {\r\n if (!this.state.mapIsLoaded && nextProps.open && !this.props.open) {\r\n this.startup();\r\n }\r\n\r\n if (nextProps.x !== null && nextProps.x !== this.props.x && nextProps.y !== null && nextProps.y !== this.props.y) {\r\n this.updatePoint(nextProps.x, nextProps.y);\r\n }\r\n }\r\n\r\n shouldComponentUpdate(nextProps, nextState) {\r\n return false;\r\n }\r\n\r\n componentWillUnmount() {\r\n // Clean up jsapi's dirty little mess\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n );\r\n }\r\n\r\n updatePoint = (x, y) => {\r\n loadModules(['esri/geometry/coordinateFormatter', 'esri/Graphic', 'esri/symbols/SimpleMarkerSymbol'])\r\n .then(([coordinateFormatter, Graphic, SimpleMarkerSymbol]) => {\r\n coordinateFormatter.load().then(() => {\r\n var newPoint = coordinateFormatter.fromLatitudeLongitude(y + \" \" + x);\r\n\r\n this.originGraphicsLayer.removeAll();\r\n\r\n this.originGraphicsLayer.graphics.add(\r\n new Graphic(\r\n {\r\n geometry: newPoint,\r\n symbol: new SimpleMarkerSymbol(symbols.newIncidentSymbol)\r\n })\r\n );\r\n\r\n let options =\r\n {\r\n target: newPoint,\r\n zoom: 14\r\n }\r\n\r\n this.view.goTo(options);\r\n this.view.center = newPoint;\r\n });\r\n });\r\n }\r\n\r\n startup = () => {\r\n loadModules([\r\n 'esri/Map',\r\n 'esri/views/MapView',\r\n 'esri/widgets/BasemapToggle',\r\n 'esri/layers/GraphicsLayer',\r\n 'esri/layers/FeatureLayer'], { css: true })\r\n .then(([\r\n ArcGISMap,\r\n MapView,\r\n BasemapToggle,\r\n GraphicsLayer,\r\n FeatureLayer]) => {\r\n const perimeterConfig = {\r\n visible: true,\r\n title: \"NIFS Perimeters\", //TODO: Fix layername hardcode\r\n //definitionExpression: \"1=2\",\r\n outFields: [\"*\"],\r\n renderer: {\r\n type: \"simple\", // autocasts as new SimpleRenderer()\r\n symbol: symbols.selectedPerimeterSymbol\r\n }\r\n };\r\n\r\n debugger;\r\n\r\n const fireHistoryConfig = {\r\n portalItem: this.props.appConfig.fireHistoryLayer.jsInit[this.props.appConfig.env].portalItem,\r\n visible: true,\r\n title: \"Fire History Perimeters\",\r\n opacity: 0.5,\r\n outFields: [\"IncidentName\", \"FeatureCategory\", \"MapMethod\", \"Comments\", \"GISAcres\", \"DeleteThis\", \"FeatureAccess\", \"FeatureStatus\", \"IRWINID\", \"Source\"],\r\n renderer: {\r\n type: \"simple\",\r\n symbol: symbols.selectedPerimeterSymbol\r\n }\r\n };\r\n\r\n const finalFireConfig = {\r\n portalItem: this.props.appConfig.finalFireFeatureLayer.jsInit[this.props.appConfig.env].portalItem,\r\n visible: true,\r\n title: \"Final Fire Perimeters\",\r\n opacity: 0.5,\r\n outFields: [\"IncidentName\", \"FeatureCategory\", \"MapMethod\", \"GISAcres\", \"FeatureStatus\", \"IRWINID\"],\r\n renderer: {\r\n type: \"simple\",\r\n symbol: symbols.selectedPerimeterSymbol\r\n }\r\n };\r\n\r\n const map = new ArcGISMap({\r\n basemap: 'topo-vector'\r\n });\r\n\r\n this.view = new MapView({\r\n container: this.mapRef.current,\r\n map: map,\r\n center: [-118, 34],\r\n zoom: 8\r\n });\r\n\r\n this.basemapToggle = new BasemapToggle({\r\n view: this.view\r\n });\r\n\r\n this.map = this.view.map;\r\n\r\n this.perimeterFeatureLayer = new FeatureLayer(Object.assign({}, perimeterConfig, this.props.appConfig.perimeterLayer.jsInit[this.props.appConfig.env]));\r\n this.perimeterFeatureLayer.listMode = \"hide\";\r\n\r\n this.fireHistoryLayer = new FeatureLayer(Object.assign({}, fireHistoryConfig, this.props.appConfig.fireHistoryLayer.jsInit[this.props.appConfig.env]));\r\n this.fireHistoryLayer.listMode = \"show\";\r\n this.fireHistoryLayer.popupTemplate = {\r\n title: \"{IncidentName}\",\r\n content: [\r\n {\r\n type: \"fields\",\r\n fieldInfos: [\r\n {\r\n fieldName: \"IncidentName\",\r\n label: \"Incident Name\"\r\n },\r\n {\r\n fieldName: \"FeatureCategory\",\r\n label: \"Category\"\r\n },\r\n {\r\n fieldName: \"MapMethod\",\r\n label: \"Map Method\"\r\n },\r\n {\r\n fieldName: \"IRWINID\",\r\n label: \"IRWIN ID\"\r\n },\r\n {\r\n fieldName: \"GisAcres\",\r\n label: \"Acres\"\r\n },\r\n {\r\n fieldName: \"PolygonDateTime\",\r\n label: \"Polygon Date Time\"\r\n },\r\n {\r\n fieldName: \"FeatureStatus\",\r\n label: \"Feature Status\"\r\n },\r\n {\r\n fieldName: \"Collector\",\r\n label: \"Collector\"\r\n }\r\n ]\r\n }\r\n ]\r\n };\r\n\r\n this.finalFireLayer = new FeatureLayer(Object.assign({}, finalFireConfig, this.props.appConfig.finalFireFeatureLayer.jsInit[this.props.appConfig.env]));\r\n this.finalFireLayer.listMode = \"show\";\r\n\r\n if (this.fireHistoryLayer) this.map.add(this.fireHistoryLayer);\r\n if (this.perimeterFeatureLayer) this.map.add(this.perimeterFeatureLayer);\r\n if (this.finalFireLayer) this.map.add(this.finalFireLayer);\r\n this.view.ui.add(this.basemapToggle, 'bottom-right');\r\n\r\n let originGraphicsLayer = new GraphicsLayer();\r\n map.add(originGraphicsLayer);\r\n this.originGraphicsLayer = originGraphicsLayer;\r\n\r\n //Set map extent to main map extent\r\n getMapExtent().then(\r\n result => {\r\n this.view.extent = result;\r\n }\r\n );\r\n\r\n //Set map extent to main map extent\r\n /*getCurrentBasemap().then(\r\n result =>\r\n {\r\n if (result.id !== this.view.map.basemap.id)\r\n {\r\n this.view.map.basemap = result.id;\r\n this.basemapToggle.nextBasemap = (result.id === \"satellite\") ? 'topo-vector' : 'satellite';\r\n //this.basemapToggle.activeBasemap = (result.id === \"satellite\") ? 'satellite' : 'topo-vector';\r\n }\r\n }\r\n ); */\r\n\r\n //handler to move new incident graphic to user click point\r\n /*this.view.on(\"click\", (event) => {\r\n this.setState({\r\n userLatitude: event.mapPoint.latitude,\r\n userLongitude: event.mapPoint.longitude\r\n });\r\n\r\n this.props.onCoordinateUpdate(event.mapPoint.latitude, event.mapPoint.longitude);\r\n\r\n this.originGraphicsLayer.removeAll();\r\n\r\n this.originGraphicsLayer.graphics.add(\r\n new Graphic(\r\n {\r\n geometry: event.mapPoint,\r\n symbol: new SimpleMarkerSymbol(symbols.newIncidentSymbol)\r\n })\r\n );\r\n }); */\r\n\r\n this.setState({\r\n mapIsLoaded: true\r\n });\r\n }\r\n\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n appConfig: state.config\r\n})\r\n\r\nconst mapDispatchToProps = function (dispatch) {\r\n return bindActionCreators({\r\n ...configOperations\r\n }, dispatch);\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(MissingAcreageMap)\r\n\r\n","import React, { Component, Fragment } from 'react';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport CircularProgress from 'material-ui/CircularProgress';\r\nimport { DataGrid } from '@material-ui/data-grid';\r\nimport Link from '@material-ui/core/Link';\r\nimport moment from 'moment';\r\nimport { formatIdentifierForApi } from '../../../utils/incidentHelper';\r\nimport originFields from '../../../defaults/PointOfOriginFields.json'\r\nimport theme from '../../../muiTheme';\r\nimport XLSX from 'xlsx';\r\nimport MissingAcreageMap from './MissingAcreageMap';\r\nimport Table from '@material-ui/core/Table';\r\nimport TableBody from '@material-ui/core/TableBody';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport TableRow from '@material-ui/core/TableRow';\r\n\r\nclass MissingAcreages extends Component\r\n{\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state =\r\n {\r\n x: null,\r\n y: null\r\n };\r\n }\r\n\r\n formatCsvData = () =>\r\n {\r\n let firstRow = ['Fire Occurence Record ID', 'FORID', 'Unique Fire Identifier', 'Incident Name', 'Incident Size', 'Calculated Acres', 'Created By System'];\r\n let dataRows = [firstRow];\r\n\r\n for (let i = 0; i < this.props.data.length; i++)\r\n {\r\n let newRow = [this.props.data[i].FireOccurenceRecordID, this.props.data[i].FORID, this.props.data[i].UniqueFireIdentifier, this.props.data[i].IncidentName, this.props.data[i].IncidentSize, this.props.data[i].CalculatedAcres, this.props.data[i].CreatedBySystem];\r\n dataRows.push(newRow);\r\n }\r\n\r\n return dataRows;\r\n }\r\n\r\n handleOnRowClick = (row) => {\r\n this.setState({\r\n x: row.x,\r\n y: row.y\r\n });\r\n }\r\n\r\n downloadCsv = () =>\r\n {\r\n const workbook = XLSX.utils.book_new();\r\n let csvData = this.formatCsvData();\r\n let reportSheet = XLSX.utils.aoa_to_sheet(csvData);\r\n XLSX.utils.book_append_sheet(workbook, reportSheet, \"MissingAcreages\");\r\n XLSX.writeFile(workbook, \"MissingAcreages.xlsx\");\r\n }\r\n\r\n render()\r\n {\r\n if (!this.props.visible)\r\n {\r\n return null;\r\n }\r\n\r\n const columns = [\r\n { field: 'FireOccurenceRecordID', headerName: 'ID', width: 90 },\r\n { \r\n field: 'UniqueFireIdentifier', \r\n headerName: 'Unique Fire Identifier', \r\n width: 170, \r\n renderCell: (params) => (\r\n {params.row.UniqueFireIdentifier}\r\n )\r\n },\r\n { field: 'IncidentName', headerName: 'Incident Name', width: 180 },\r\n { field: 'IncidentSize', headerName: 'Incident Size', width: 120 },\r\n { field: 'CalculatedAcres', headerName: 'Calculated Acres', width: 140 },\r\n { field: 'CreatedBySystem', headerName: 'Created By System', width: 170 }\r\n ];\r\n\r\n const rows = this.props.data.map(incident =>\r\n {\r\n return {\r\n id: incident.FireOccurenceRecordID,\r\n FireOccurenceRecordID: incident.FireOccurenceRecordID,\r\n UniqueFireIdentifier: incident.UniqueFireIdentifier,\r\n IncidentName: incident.IncidentName,\r\n IncidentSize: incident.IncidentSize,\r\n CalculatedAcres: incident.CalculatedAcres,\r\n CreatedBySystem: incident.CreatedBySystem,\r\n FORID: incident.FORID,\r\n x: incident.x,\r\n y: incident.y\r\n }\r\n });\r\n\r\n \r\n const loadingIcon = (this.props.isQuerying) ? (\r\n
Querying for Missing Acreages ...
\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 this.handleOnRowClick(rowData.row)} />\r\n \r\n
\r\n
\r\n );\r\n\r\n return (this.props.visible) ? (\r\n \r\n
\r\n {loadingIcon}\r\n
\r\n
\r\n ) : \"\";\r\n }\r\n}\r\n\r\n\r\nexport default MissingAcreages","import Grid from '@material-ui/core/Grid';\r\nimport React, { Component } from 'react';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Select from '@material-ui/core/Select';\r\nimport CircularProgress from 'material-ui/CircularProgress';\r\nimport { DataGrid } from '@material-ui/data-grid';\r\nimport moment from 'moment';\r\nimport { formatIdentifierForApi } from '../../../utils/incidentHelper';\r\nimport originFields from '../../../defaults/PointOfOriginFields.json'\r\nimport theme from '../../../muiTheme';\r\nimport { getMapExtent } from '../../esri/mapHub';\r\nimport XLSX from 'xlsx';\r\n\r\nclass PerimeterAttributes extends Component\r\n{\r\n\r\n constructor (props)\r\n {\r\n super(props);\r\n this.state =\r\n {\r\n isQuerying: false,\r\n perimeterMapMethod: '',\r\n perimeterFeatureAccess: '',\r\n perimeterFeatureStatus: '',\r\n incidentsMatchingPerimeterCriteria: []\r\n };\r\n }\r\n\r\n queryForPerimeters = () =>\r\n {\r\n this.setState({\r\n isQuerying: true\r\n });\r\n\r\n getMapExtent().then(mapExtent => {\r\n window.api.getIdsForPerimeterFilters(this.state.perimeterMapMethod, this.state.perimeterFeatureStatus, this.state.perimeterFeatureAccess, mapExtent, 0, []).then(\r\n results =>\r\n {\r\n const filteredIrwinIds = results.filter(result => result.attributes.IRWINID && result.attributes.IRWINID.length > 5).map(filteredResult =>\r\n {\r\n return formatIdentifierForApi(filteredResult.attributes.IRWINID);\r\n });\r\n\r\n\r\n const matchingPerimeterCriteria = this.props.incidentList.visibleIncidents.filter(incident => filteredIrwinIds.includes(formatIdentifierForApi(incident.attributes[originFields.irwinId])));\r\n this.setState({\r\n isQuerying: false,\r\n incidentsMatchingPerimeterCriteria: matchingPerimeterCriteria\r\n });\r\n });\r\n });\r\n }\r\n\r\n formatCsvData = () =>\r\n {\r\n let firstRow = ['IrwinID', 'Incident Name', 'Fire Discovery Date', 'Fire Size'];\r\n let dataRows = [firstRow];\r\n\r\n for (let i = 0; i < this.state.incidentsMatchingPerimeterCriteria.length; i++)\r\n {\r\n let newRow = [formatIdentifierForApi(this.state.incidentsMatchingPerimeterCriteria[i].attributes[originFields.irwinId]), this.state.incidentsMatchingPerimeterCriteria[i].attributes[originFields.name], moment(new Date(this.state.incidentsMatchingPerimeterCriteria[i].attributes[originFields.discoveryDate])).format(\"MM/DD/YYYY h:mm A\"), this.state.incidentsMatchingPerimeterCriteria[i].attributes[originFields.incidentSize]]\r\n dataRows.push(newRow);\r\n }\r\n\r\n return dataRows;\r\n }\r\n\r\n downloadCsv = () =>\r\n {\r\n\r\n const workbook = XLSX.utils.book_new();\r\n let csvData = this.formatCsvData();\r\n let reportSheet = XLSX.utils.aoa_to_sheet(csvData);\r\n\r\n XLSX.utils.book_append_sheet(workbook, reportSheet, \"PerimeterAttributes\");\r\n XLSX.writeFile(workbook, \"PerimeterAttributes.xlsx\");\r\n }\r\n\r\n render()\r\n {\r\n if (!this.props.visible)\r\n {\r\n return null;\r\n }\r\n\r\n const columns = [\r\n { field: 'irwinId', headerName: 'Irwin ID', width: 320},\r\n { field: 'incidentName', headerName: 'Incident Name', width: 180 },\r\n { field: 'fireDiscoveryDate', headerName: 'Fire Discovery Date', width: 180 },\r\n { field: 'incidentSize', headerName: 'Fire Size', width: 90 }\r\n ];\r\n\r\n const rows = this.state.incidentsMatchingPerimeterCriteria.map(incident =>\r\n {\r\n return {\r\n id: incident.attributes[originFields.irwinId],\r\n irwinId: formatIdentifierForApi(incident.attributes[originFields.irwinId]),\r\n incidentName: incident.attributes[originFields.name],\r\n fireDiscoveryDate: moment(new Date(incident.attributes[originFields.discoveryDate])).format(\"MM/DD/YYYY h:mm A\"),\r\n incidentSize: incident.attributes[originFields.incidentSize]\r\n }\r\n });\r\n\r\n const loadingIcon = (this.state.isQuerying) ? (\r\n
Querying for Perimeters ...
\r\n ) : \"\";\r\n\r\n return (this.props.visible) ? (\r\n \r\n \r\n \r\n \r\n \r\n Map Method \r\n {\r\n this.setState({\r\n perimeterMapMethod: event.target.value\r\n });\r\n this.queryForPerimeters();\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\n \r\n \r\n \r\n \r\n Feature Status \r\n {\r\n this.setState({\r\n perimeterFeatureStatus: event.target.value\r\n });\r\n this.queryForPerimeters();\r\n }}>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Feature Access\r\n {\r\n this.setState({\r\n perimeterFeatureAccess: event.target.value\r\n });\r\n this.queryForPerimeters();\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 {loadingIcon}\r\n
\r\n \r\n
\r\n
\r\n ) : \"\";\r\n }\r\n}\r\n\r\nexport default PerimeterAttributes\r\n","import React, { Component } from 'react';\r\nimport { bindActionCreators } from 'redux';\r\nimport { connect } from 'react-redux';\r\n\r\nimport Dialog from 'material-ui/Dialog';\r\nimport FlatButton from 'material-ui/FlatButton';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport AppBar from '@material-ui/core/AppBar';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport NonFederalFires from './reports/NonFederalFires';\r\nimport NonFederalRXFires from './reports/NonFederalRXFires';\r\nimport MissingAcreages from './reports/MissingAcreages';\r\nimport PerimeterAttributes from './reports/PerimeterAttributes';\r\nimport Button from '@material-ui/core/Button';\r\nimport ButtonGroup from '@material-ui/core/ButtonGroup';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport './ReportingDialog.css';\r\nimport { filterOperations } from '../../redux/filter';\r\nimport { formatIdentifierForApi } from '../../utils/incidentHelper';\r\nimport originFields from '../../defaults/PointOfOriginFields.json'\r\nimport { incidentsOperations } from '../../redux/incidentList';\r\nimport { getMapExtent } from '../esri/mapHub';\r\nclass GeneralReportingDialog extends Component {\r\n\r\n constructor (props)\r\n {\r\n super(props);\r\n this.state =\r\n {\r\n activeReport: '',\r\n missingPerimeterQuerying: false,\r\n missingPerimetersDataLoaded: false,\r\n missingPerimetersData: []\r\n };\r\n\r\n this.nonFederalFiresChild = React.createRef();\r\n this.nonFederalRXFiresChild = React.createRef();\r\n this.missingPerimetersChild = React.createRef();\r\n this.perimeterAttributesChild = React.createRef();\r\n }\r\n\r\n setMissingPerimetersActive = () => {\r\n debugger;\r\n this.setState({ activeReport: \"MissingPerimeters\"});\r\n\r\n if (!this.state.missingPerimeterQuerying)\r\n {\r\n this.setState({missingPerimeterQuerying: true});\r\n window.api.getMissingPerimeterIncidents().then( results =>\r\n {\r\n debugger;\r\n this.setState(\r\n {\r\n missingPerimeterQuerying: false,\r\n missingPerimetersDataLoaded: true,\r\n missingPerimetersData: results\r\n });\r\n });\r\n } \r\n }\r\n /* getMapExtent().then(mapExtent => {\r\n window.api.getIrwinIdsForPerimeterForGeometry(mapExtent, 0, []).then( results =>\r\n {\r\n const nifsPerimeteredIrwinIds = results.map(incident =>\r\n {\r\n return formatIdentifierForApi(incident.attributes[\"IRWINID\"]); //TODO: Fix hardcodes\r\n });\r\n\r\n window.api.getIrwinIdsForCertifiedPerimetersForGeometry(mapExtent, 0, []).then( certifiedResults =>\r\n {\r\n const certifiedPerimeteredIrwinIds = certifiedResults.map(incident =>\r\n {\r\n return formatIdentifierForApi(incident.attributes[\"IRWINID\"]); //TODO: Fix hardcodes\r\n });\r\n\r\n const allPerimeteredIrwinIds = [...nifsPerimeteredIrwinIds, ...certifiedPerimeteredIrwinIds];\r\n\r\n const incidentsWithNoPerimeters = this.props.incidentList.visibleIncidents.filter(incident => !allPerimeteredIrwinIds.includes(formatIdentifierForApi(incident.attributes[originFields.irwinId])));\r\n\r\n this.setState(\r\n {\r\n missingPerimeterQuerying: false,\r\n missingPerimetersDataLoaded: true,\r\n missingPerimetersData: incidentsWithNoPerimeters\r\n });\r\n });\r\n });\r\n }); */\r\n\r\n\r\n close = () =>\r\n {\r\n this.setState({\r\n activeReport: '',\r\n missingPerimeterQuerying: false,\r\n missingPerimetersDataLoaded: false,\r\n missingPerimetersData: []\r\n });\r\n\r\n this.props.onClose();\r\n }\r\n downloadCsv = () =>\r\n {\r\n //TODO: Fix hardcodes\r\n if (this.state.activeReport === \"NonFederalFires\")\r\n {\r\n this.nonFederalFiresChild.current.downloadCsv();\r\n }\r\n\r\n //TODO: Fix hardcodes\r\n if (this.state.activeReport === \"NonFederalRXFires\")\r\n {\r\n this.nonFederalRXFiresChild.current.downloadCsv();\r\n }\r\n\r\n if (this.state.activeReport === \"MissingPerimeters\")\r\n {\r\n this.missingPerimetersChild.current.downloadCsv();\r\n }\r\n/*\r\n if (this.state.activeReport === \"PerimeterAttributes\")\r\n {\r\n this.perimeterAttributesChild.current.downloadCsv();\r\n }\r\n\r\n\r\n \r\n \r\n */\r\n\r\n }\r\n render() {\r\n\r\n const actions = [\r\n ,\r\n \r\n ];\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n Reports\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\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n filter: state.filter,\r\n incidentList: state.incidentList\r\n})\r\n\r\n\r\nconst mapDispatchToProps = function (dispatch) {\r\n return bindActionCreators({\r\n ...filterOperations,\r\n ...incidentsOperations\r\n }, dispatch);\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(GeneralReportingDialog)\r\n","import React, { Component } from 'react';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport Dialog from 'material-ui/Dialog';\r\nimport FlatButton from 'material-ui/FlatButton';\r\nimport Table from '@material-ui/core/Table';\r\nimport TableBody from '@material-ui/core/TableBody';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport TableRow from '@material-ui/core/TableRow';\r\nimport AppBar from '@material-ui/core/AppBar';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport IconButton from '@material-ui/core/IconButton';\r\n\r\nimport './DataDictionary.css';\r\n\r\nclass DataDictionaryPanel extends Component {\r\n\r\n render() {\r\n const actions = [\r\n \r\n ];\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n Data Dictionary\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n INSPECTOR Name\r\n Field Name\r\n Definition\r\n Data Type\r\n INSPECTOR UI Grouping\r\n \r\n\r\n\r\n \r\n **ABCD Misc\r\n ABCDMisc\r\n A code used to indicate the Forest Service job accounting code for the incident. This is specific to the Forest Service. Usually displayed as 2 char prefix on FireCode.\r\n varchar(4)\r\n Incident\r\n \r\n \r\n Activity / Group\r\n FireCauseActivityGroup\r\n For Fire Cause, further refines information for prevention programs for targeted messaging. Examples: Private/Residential; Farming/Ranching; Logging\r\n domain\r\n Fire Cause/Fire Summary\r\n \r\n \r\n Age Category\r\n NA\r\n For Fire Cause, when Human, discriminates between children (0-12), adolescents (13-17), and adults (18+)\r\n domain\r\n Fire Cause/Fire Summary\r\n\r\n \r\n Calculated Size (ac)\r\n CalculatedAcres\r\n A measure of acres calculated (i.e., infrared) from a geospatial perimeter of a fire. More specifically, the number of acres within the current perimeter of a specific, individual incident, including unburned and unburnable islands. The minimum size must be 0.1.\r\n double\r\n Size\r\n\r\n \r\n Cause Comments\r\n FireCauseComments\r\n Add comments related to Fire Cause\r\n Text box\r\n Fire Cause/Fire Summary\r\n\r\n \r\n Cause Investigated?\r\n IsFireCauseInvestigated\r\n Indicates if an investigation is underway or was completed to determine the cause of a fire.\r\n boolean\r\n Fire Cause/Fire Summary\r\n\r\n \r\n Certified Date\r\n FinalFireReportApprovedDate\r\n The date that the final fire report was approved for the incident.\r\n datetime\r\n Chronology\r\n\r\n \r\n Containment/Containment Date Time\r\n ContainmentDateTime\r\n The date and time a wildfire was declared contained.\r\n datetime\r\n Chronology/Certification\r\n\r\n \r\n Control\r\n ControlDateTime\r\n The date and time a wildfire was declared under control.\r\n datetime\r\n Chronology\r\n\r\n \r\n *(S)County\r\n POOCounty\r\n The County Name identifying the county or equivalent entity at point of origin designated at the time of collection.\r\n varchar(100)\r\n Point of Origin/Fire Summary\r\n\r\n \r\n Created by System\r\n CreatedBySystem\r\n ArcGIS Server Username of system that created the IRWIN Incident record. Assigned by IRWIN\r\n Varchar(255)\r\n Miscellaneous\r\n\r\n \r\n Created On Date Time\r\n CreatedOndatetime\r\n Date/time that the IRWIN Incident record was created.\r\n datetime\r\n Chronology\r\n\r\n \r\n *(S)Incident Size (ac)\r\n IncidentSize\r\n A measure of acres reported for a fire. More specifically, the number of acres within the current perimeter of a specific, individual incident, including unburned and unburnable islands. The minimum size must be 0.1.\r\n double\r\n Size\r\n\r\n \r\n Derived Dispatch Center ID \r\n POODispatchCenterID\r\n A unique identifier for the dispatch center that intersects with the incident point of origin.\r\n varchar(6)\r\n Point of Origin\r\n\r\n \r\n *(S)Discovery\r\n FireDiscoverydatetime\r\n The date and time a fire was reported as discovered or confirmed to exist. May also be the start date for reporting purposes.\r\n datetime\r\n Chronology/Fire Summary/Certification\r\n\r\n \r\n Dispatch Center ID\r\n DispatchCenterID\r\n A unique identifier for a dispatch center currently responsible for supporting and managing the incident. NOTE: if the incident was created by a NON CAD application, then this DispatchCenterID is derived from a geospatial lookup based on POO Latitude and Longitude and may NOT reflect the center currently responsible if it has not been updated by a CAD.\r\n varchar(6)\r\n NA\r\n\r\n \r\n Estimated Containment Date\r\n EstimatedContainmentDate\r\n The estimated date a wildfire will be contained.\r\n datetime\r\n Chronology\r\n\r\n \r\n Final Fire Report Approved By\r\n FinalFireReportApprovedBy\r\n The name of the person that approved the final fire report for the incident.\r\n varchar(100)\r\n Approval\r\n\r\n \r\n Final Fire Report Approved By Title\r\n FinalFireReportApprovedByTitle\r\n The title of the person that approved the final fire report for the incident.\r\n varchar(100)\r\n Approval\r\n\r\n \r\n Final Fire Report Approved By Unit\r\n FinalFireReportApprovedByUnit\r\n NWCG Unit ID associated with the individual who approved the final report for the incident.\r\n varchar(6)\r\n Approval\r\n\r\n \r\n Final Strategy Attained\r\n FinalStrategyAttainedDateTime\r\n The date/time the final fire strategy was accomplished on the incident.\r\n datetime\r\n Chronology\r\n\r\n \r\n *(S)Fire Cause\r\n FireCause\r\n Broad classification of the reason the fire occurred identified as human, natural or unknown.\r\n varchar(15)\r\n Fire Cause/Fire Summary\r\n\r\n \r\n *(S)Fire Cause General\r\n FireCauseGeneral\r\n Agency or circumstance which started a fire or set the stage for its occurrence; source of a fire's ignition. For statistical purposes, fire causes are further broken into specific causes.\r\n varchar(100)\r\n Fire Cause/Fire Summary\r\n\r\n \r\n Fire Cause Specific\r\n FireCauseSpecific\r\n A further categorization of each General Fire Cause to indicate more specifically the agency or circumstance which started a fire or set the stage for its occurrence; source of a fire's ignition.\r\n varchar(200)\r\n Fire Cause/Fire Summary\r\n\r\n \r\n *Fire Declared Out\r\n FireOutdatetime\r\n The date and time when a fire is declared out.\r\n datetime\r\n Chronology/Fire Summary\r\n\r\n \r\n Fire Detection Method\r\n NA\r\n Domain list indicating how or who detected the fire \r\n domain\r\n Point of Origin\r\n\r\n \r\n *Firecode\r\n FireCode\r\n A code used within the interagency wildland fire community to track and compile cost information for emergency fire suppression expenditures for the incident.\r\n varchar(4)\r\n Incident/Fire Summary (Fire Code)/Header\r\n\r\n\r\n \r\n FORID\r\n NA\r\n Unique identifier assigned to each incident that is converted to a FODR in InFORM\r\n NA\r\n Incident\r\n\r\n \r\n *Fuel Group\r\n PredominantFuelGroup\r\n The fuel majority fuel model type that best represents fire behavior in the incident area, grouped into one of seven categories.\r\n varchar(100)\r\n Site Descriptors\r\n\r\n \r\n *Fuel Model\r\n PredominantFuelModel\r\n Describes the type of fuels found within the majority of the incident area.\r\n varchar(100)\r\n Site Descriptors\r\n\r\n \r\n *(S)Geographic Area Coordination Center Code\r\n GACC\r\n A code that identifies one of the wildland fire geographic area coordination centers.\r\n A geographic area coordination center is a facility that is used for the coordination of agency or jurisdictional resources in support of one or more incidents within a geographic coordination area.\r\n varchar(50)\r\n Point of Origin\r\n\r\n \r\n Growth Cessation\r\n FireGrowthCessationdatetime\r\n The date/time that the fire perimeter stopped growing in size.\r\n datetime\r\n Chronology\r\n\r\n \r\n Ignition\r\n FireIgnitiondatetime\r\n The actual date/time that the fire began ignition. This date may be different from the fire discovery date.\r\n datetime\r\n Chronology\r\n\r\n \r\n In Fuels Treatment?\r\n InFuelTreatment\r\n Indicates if any part of the fire interacts with a completed fuels treatment. Used for reporting in the Fuels Treatment Effectiveness Monitoring (FTEM) program.\r\n boolean\r\n Miscellaneous\r\n\r\n \r\n In NFPORS?\r\n InNFPORS\r\n Indicates whether a determination has been made that acres burned in a naturally-caused wildfire accomplish resource objectives in National Fire Operations Reporting System (NFPORS)\r\n boolean\r\n Miscellaneous\r\n\r\n \r\n (S)Incident Category\r\n IncidentTypeCategory\r\n The Event Category is a sub-group of the Event Kind code and description. The Event Category further breaks down the Event Kind into more specific event categories.\r\n varchar(2)\r\n Incident\r\n\r\n \r\n *(S)Incident Name\r\n IncidentName\r\n The name assigned to an incident.\r\n varchar(50)\r\n Incident/Fire Summary/Header\r\n\r\n\r\n \r\n Incident Status\r\n \r\n Indicates the current status of the incident in InFORM. Possible statuses include certified, complete, incomplete, quarantined (in IRWIN), non-quarantined (In IRWIN)\r\n \r\n \r\n\r\n\r\n \r\n *(S)Incident Type\r\n IncidentTypeKind\r\n A general, high-level code and description of the types of incidents and planned events to which the interagency wildland fire community responds.\r\n varchar(2)\r\n Incident\r\n\r\n \r\n INFORM User Name\r\n INFORMUserName\r\n Temporary meta data field to capture inform user information. Will be deprecated for V6.\r\n varchar(50)\r\n ?\r\n\r\n \r\n InFORM Inspector Role\r\n \r\n InFORM Inspector has three roles: read only, editor and certifier.\r\n \r\n \t\r\n\r\n \r\n *Initial Response\r\n InitialResponsedatetime\r\n The date/time of the initial response to the incident. More specifically when the IC arrives and performs initial size up.\r\n datetime\r\n Chronology\r\n\r\n\r\n \r\n *Initial Strategy\r\n InitialFireStrategy\r\n The fire strategy initially used on a wildland fire; the general plan or direction utilized until it succeeds or changes.\r\n varchar(50)\r\n Complexity & Management\r\n\r\n \r\n Initial Strategy Successful?\r\n isInitialFireStrategyMet\r\n Indicates if the initial fire strategy for the incident was successful.\r\n boolean\r\n Complexity & Management\r\n\r\n \r\n *(S)Irwin ID\r\n IrwinID\r\n Unique identifier assigned to each incident record in IRWIN.\r\n guid\r\n Incident\r\n\r\n \r\n Is FS Assisted\r\n IsFSAssisted\r\n Indicates if the Forest Service provided assistance on an incident outside their jurisdiction.\r\n boolean\r\n Incident/Fire Summary\r\n\r\n \r\n Is Quarantined\r\n IsQuarantined\r\n Indicates whether an incident of type WF is potentially conflicting with another incident of type WF.\r\n Boolean\r\n NA\r\n\r\n \r\n Is Valid\r\n IsValid\r\n Indicates whether the incident is valid within IRWIN. Valid incidents are Wildfire Incident records from the Dispatch Center having primary responsibility for that fire. Invalid incidents are a result of duplicates or invalid entries.\r\n boolean\r\n Conflict resolution\r\n\r\n \r\n Jurisdictional Agency\r\n POOJurisdictionalAgency\r\n The agency having land and resource management responsibility for a incident as provided by federal, state or local law.\r\n varchar(50)\r\n Point of Origin\r\n\r\n \r\n *Jurisdictional Unit\r\n POOJurisdictionalUnit\r\n NWCG Unit Identifier to identify the unit with jurisdiction for the land where the point of origin of a fire falls.\r\n varchar(6)\r\n Point of Origin/Certification\r\n\r\n\r\n *(S)Landowner Category\r\n POOLandownerCategory\r\n More specific classification of land ownership within land owner kinds identifying the owner at the point of origin at the time of the incident.\r\n Owner in the context of this data element refers to the agency or entity having the land management responsibility at the point of origin.\r\n varchar(7)\r\n Point of Origin/Fire Summary\r\n\r\n Landowner Kind\r\n POOLandownerKind\r\n Broad classification of land ownership at the point of origin.\r\n varchar(7)\r\n Point of Origin\r\n\r\n Last Modified:\r\n ModifiedOndatetime\r\n Date/time that the IRWIN Incident record was last modified.\r\n double*\r\n Header\r\n\r\n Latitude\r\n Shape\r\n Geographic representation of POO in NAD83 datum.\r\n The latitude location is the point of origin specified in decimal degrees.\r\n Point of origin is the location where a competent ignition source came into contact with the material first ignited and sustained combustion occurred.\r\n The longitude location is the point of origin specified in decimal degrees.\r\n Point of origin is the location where a competent ignition source came into contact with the material first ignited and sustained combustion occurred.\r\n geom\r\n Point of Origin\r\n\r\n *(S)Local Incident Identifier\r\n LocalIncidentIdentifier\r\n A number or code that uniquely identifies an incident for a particular local fire management organization within a particular calendar year.\r\n varchar(10)\r\n Incident\r\n\r\n\r\n\r\n Longitude\r\n Shape\r\n Geographic representation of POO in NAD83 datum.\r\n The latitude location is the point of origin specified in decimal degrees.\r\n Point of origin is the location where a competent ignition source came into contact with the material first ignited and sustained combustion occurred.\r\n The longitude location is the point of origin specified in decimal degrees.\r\n Point of origin is the location where a competent ignition source came into contact with the material first ignited and sustained combustion occurred.\r\n geom\r\n Point of Origin\r\n\r\n Modified By System\r\n ModifiedBySystem\r\n ArcGIS Server username of system that last modified the IRWIN Incident record.\r\n varchar(255)\r\n Header\r\n\r\n Multi-Agency Response\r\n \r\n Allows for assigning separate agencies who respond to an incident\r\n \r\n \r\n\r\n\r\n\r\n Other Structures Destroyed\r\n OtherStructuresDestroyed\r\n The total number of structures, other than residences, destroyed as a result of a fire.\r\n int\r\n Outcomes/Fire Summary\r\n\r\n Other Structures Threatened\r\n OtherStructuresThreatened\r\n The total number of structures, other than residences, threatened by a fire.\r\n int\r\n Outcomes/Fire Summary\r\n\r\n Protecting Agency\r\n POOProtectingAgency\r\n Indicates the agency that has protection responsibility at the point of origin.\r\n varchar(50)\r\n Point of Origin\r\n\r\n\r\n\r\n Protecting Fire Dept ID\r\n FireDepartmentID\r\n The U.S. Fire Administration (USFA) has created a national database of Fire Departments. Most Fire Departments do not have an NWCG Unit ID and so it is the intent of the IRWIN team to create a new field that includes this data element to assist the National Association of State Foresters (NASF) with data collection.\r\n \r\n Point of Origin\r\n\r\n *(S)Protecting Unit\r\n POOProtectingUnit\r\n NWCG Unit responsible for providing direct incident management and services to a an incident pursuant to its jurisdictional responsibility or as specified by law, contract or agreement. Definition Extension:\r\n
    \r\n
  • Protection can be re-assigned by agreement.
  • \r\n
  • The nature and extent of the incident determines protection (for example Wildfire vs. All Hazard.)
  • \r\n
\r\n varchar(6)\r\n Point of Origin\r\n
\r\n Report Narrative\r\n FinalFireReportNarrative\r\n A summary of the comments in narrative form as entered on the final fire report to describe important aspects of the incident.\r\n varchar(4000)\r\n Miscellaneous\r\n\r\n Request Firecode\r\n IsFireCodeRequested\r\n When a source application sends the SubmitIncident or Update Incident request to IRWIN, FirecodeRequested is a Boolean value indicating whether a Fire Code needs to be generated from Fire Code for the incident. The combination of FirecodeRequested and the value in the FireCode column determines the validity of the current FireCode in the IRWIN incidents table - valid or pending (waiting for firecode)\r\n boolean\r\n Header\r\n\r\n Residences Destroyed\r\n ResidencesDestroyed\r\n The total number of residences destroyed, or damaged to an extent requiring rebuilding, as a result of a fire.\r\n int\r\n Outcomes/Fire Summary\r\n\r\n Residences Threatened\r\n ResidencesThreatened\r\n The total number of residences threatened by the fire.\r\n int\r\n Outcomes/Fire Summary\r\n\r\n Responder Fatalities\r\n Fatalities\r\n The total number of deaths of personnel assigned to an incident.\r\n smallint\r\n Outcomes/Fire Summary\r\n\r\n\r\n\r\n Responder Fatalities\r\n HasFatalities\r\n Indicates whether there were fatalities related to the incident.\r\n boolean\r\n Filters/Outcomes/Fire Summary\r\n\r\n Responder Injuries\r\n Injuries\r\n The total number of reportable occupational injuries and illnesses that occurred in conjunction with an incident.\r\n smallint\r\n Outcomes/Fire Summary\r\n\r\n Responder Injuries\r\n HasInjuries\r\n Indicates whether there were injuries related to the incident.\r\n boolean\r\n Filters/Outcomes/Fire Summary\r\n\r\n Specific Cause Detail\r\n \r\n For Fire Cause, more specific information about the cause or factors contributing to the ignition \r\n \r\n \t\r\n\r\n USFS Job Code Prefix\r\n FSJobCode\r\n A code use to indicate the Forest Service job accounting code for the incident. This is specific to the Forest Service. Usually displayed as 2 char prefix on FireCode.\r\n varchar(2)\r\n Incident\r\n\r\n\r\n *(S)State\r\n POOState\r\n The State alpha code identifying the state or equivalent entity at point of origin.\r\n varchar(6)\r\n Point of Origin/Fire Summary\r\n\r\n Trespass?\r\n IsTrespass\r\n Indicates if the incident is a trespass claim or if a bill will be pursued.\r\n boolean\r\n Miscellaneous\r\n\r\n *(S)Unique Fire Identifier\r\n UniqueFireIdentifier\r\n Unique identifier assigned to each wildland fire. yyyy = calendar year, SSUUUU = POO protecting unit identifier (5 or 6 characters), xxxxxx = local incident identifier (6 to 10 characters)\r\n varchar(22)\r\n Incident/Fire Summary/Header\r\n \r\n Uniqueness Score\r\n \r\n The uniqueness score compares the new FODR to existing FODRs to detect how closely related those records are. InFORM WR considers the following factors in calculating the uniqueness score:\r\n
    \r\n
  • Location
  • \r\n
  • Discovery Date
  • \r\n
  • Incident Size
  • \r\n
  • Incident Name
  • \r\n
  • Created by system
  • \r\n
  • Cause
  • \r\n
\r\n The possible score is from 0-1, and FODRs with a score of 0.4 and below are flagged and displayed by InFORM WR as a potential duplicate FODR. Potential duplicates (FODRs with low uniqueness) are displayed on the map as purple circles.
\r\n \r\n \t\r\n
\r\n \r\n USFS Job Code Prefix\r\n FSJobCode\r\n A code use to indicate the Forest Service job accounting code for the incident. This is specific to the Forest Service. Usually displayed as 2 char prefix on FireCode.\r\n varchar(2)\r\n Incident\r\n\r\n \r\n WIMS Weather Station Identifier\r\n NA\r\n Enter the Weather Station Identifier from the Weather Information Management System (WIMS). The Weather Information Management System (WIMS) is a comprehensive system that manages weather information.\r\n domain\r\n Point of Origin\r\n\r\n\r\n
\r\n
\r\n
\r\n \r\n );\r\n }\r\n}\r\nexport default DataDictionaryPanel;\r\n","import React, { Component } from 'react';\r\nimport Table, {\r\n TableHeader,\r\n TableHeaderRow,\r\n TableHeaderCell,\r\n TableBody,\r\n TableRow,\r\n TableCell\r\n} from 'calcite-react/Table'\r\n\r\nimport Search from 'calcite-react/Search';\r\nimport Accordion from '@mui/material/Accordion';\r\nimport AccordionSummary from '@mui/material/AccordionSummary';\r\nimport AccordionDetails from '@mui/material/AccordionDetails';\r\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport fieldsDefinition from '../arcgisFilter/defaults/incidentFields.json';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport moment from 'moment';\r\n\r\nclass IncidentEditDetails extends Component {\r\n\r\n constructor(props) {\r\n super(props)\r\n this.state =\r\n {\r\n searchIdentifer: null,\r\n searchValue: '',\r\n filterFields: [],\r\n showEditInfo: false,\r\n editInfoPackage: null,\r\n userFilterField: null\r\n };\r\n this.updateSearchValue = this.updateSearchValue.bind(this);\r\n this.onUserAction = this.onUserAction.bind(this);\r\n this.clearSearch = this.clearSearch.bind(this);\r\n }\r\n\r\n componentDidUpdate(prevProps) \r\n {\r\n if (prevProps.editInfoPackage !== this.props.editInfoPackage) \r\n { \r\n if (this.props.editInfoPackage === null || this.props.editInfoPackage.EditEvents === null || this.props.editInfoPackage.EditEvents.length === 0) \r\n {\r\n this.setState({\r\n filterFields: []\r\n });\r\n return;\r\n }\r\n let newFilterFields = [];\r\n for (var i = 0; i < this.props.editInfoPackage.EditEntries.length; i++) \r\n {\r\n if (newFilterFields.indexOf(this.props.editInfoPackage.EditEntries[i].Attribute) === -1) \r\n {\r\n newFilterFields.push(this.props.editInfoPackage.EditEntries[i].Attribute);\r\n }\r\n } \r\n\r\n this.setState({\r\n filterFields: newFilterFields\r\n });\r\n }\r\n }\r\n\r\n onUserAction(value) \r\n {\r\n this.setState({\r\n searchValue: value\r\n });\r\n }\r\n \r\n clearSearch() {\r\n this.setState({\r\n searchValue: '',\r\n userFilterField: null,\r\n })\r\n }\r\n\r\n updateSearchValue = (value) => {\r\n this.setState({\r\n searchValue: value,\r\n userFilterField: value\r\n });\r\n }\r\n\r\n getTitleForAttributeName = (attributeName) => \r\n { \r\n if (attributeName === \"InformLastModifiedDate\") \r\n {\r\n return \"InFORM Last Modified Date\"\r\n }\r\n\r\n if (attributeName === \"IsCauseProhibited\") \r\n {\r\n return \"Is Cause Prohibited\"\r\n }\r\n\r\n const fieldObject = fieldsDefinition[attributeName];\r\n return (fieldObject !== undefined && fieldObject !== null) ? fieldObject.alias : attributeName;\r\n }\r\n\r\n getDisplayValue = (attributeName, value) => \r\n { \r\n if (attributeName === \"InformLastModifiedDate\") \r\n { \r\n return moment(new Date(parseInt(value))).format(\"MM/DD/YYYY h:mm A\");\r\n }\r\n\r\n const fieldObject = fieldsDefinition[attributeName];\r\n if (fieldObject !== undefined && fieldObject !== null) \r\n {\r\n if (fieldObject.domain !== undefined && fieldObject.domain !== null) \r\n {\r\n try \r\n {\r\n const codedValue = fieldObject.domain.codedValues.find(codedValue => codedValue.code.toString() === value.toString());\r\n return (codedValue) ? codedValue.name : value;\r\n }\r\n\r\n catch (err) \r\n {\r\n return (value === null || value === undefined) ? \"NULL\" : value;\r\n }\r\n }\r\n\r\n switch(fieldObject.type) \r\n {\r\n case \"esriFieldTypeDate\":\r\n return (value) ? moment(new Date(parseInt(value))).format(\"MM/DD/YYYY h:mm A\") : \"NULL\";\r\n default:\r\n return value;\r\n }\r\n } else \r\n {\r\n return value;\r\n }\r\n }\r\n\r\n getFilteredEditLog = (editLogEntries) => {\r\n return (\r\n \r\n \r\n \r\n Attribute\r\n Changed From\r\n Changed To\r\n \r\n \r\n \r\n {editLogEntries.map(editLog => {\r\n return (\r\n \r\n {this.getTitleForAttributeName(editLog.Attribute)}\r\n {(editLog.OldValue === null || editLog.OldValue === \"\") ? \"NULL\" : this.getDisplayValue(editLog.Attribute, editLog.OldValue)}\r\n {this.getDisplayValue(editLog.Attribute, editLog.NewValue)}\r\n \r\n );\r\n })}\r\n \r\n
\r\n )\r\n\r\n }\r\n getUserEditContent = () => {\r\n const content = (this.props.editInfoPackage.EditEvents.length > 0) ?\r\n (\r\n this.props.editInfoPackage.EditEvents.map(editEvent => {\r\n const editID = editEvent.EditID;\r\n const filteredEditLog = this.props.editInfoPackage.EditEntries.filter(entry => entry.EditID === editID);\r\n const hasUserFilter = (this.state.userFilterField !== null);\r\n const editEventContainsFilter = (hasUserFilter) ? filteredEditLog.find(entry => entry.Attribute === this.state.userFilterField) : true;\r\n\r\n //const shouldShould = (this.state.userFilterField === null || ((this.state.userFilterField !== null) && \r\n return (editEventContainsFilter) ? (\r\n \r\n }\r\n aria-controls=\"panel1a-content\"\r\n id=\"panel1a-header\">\r\n {editEvent.UserName} at {moment(editEvent.EditDate).format(\"MM/DD/YYYY h:mm A\")}\r\n \r\n \r\n {this.getFilteredEditLog(filteredEditLog)}\r\n \r\n \r\n ) : \"\";\r\n })\r\n ) : \"\";\r\n return content;\r\n }\r\n\r\n render() {\r\n if (!this.props.visible) \r\n {\r\n return null;\r\n }\r\n\r\n if (this.props.editInfoPackage.Error !== null && this.props.editInfoPackage.Error !== undefined && this.props.editInfoPackage.Error !== \"\") \r\n {\r\n return (\r\n \r\n
\r\n {this.props.editInfoPackage.Error}\r\n
\r\n
\r\n );\r\n }\r\n\r\n const content =\r\n (\r\n
\r\n Fire Occurence Record ID: {this.props.editInfoPackage.FireOccurenceRecord.FireOccurenceRecordID}
\r\n Incident Name: {this.props.editInfoPackage.FireOccurenceRecord.IncidentName}

\r\n
\r\n Filter by attribute: \r\n
\r\n {this.getUserEditContent()}\r\n\r\n
\r\n );\r\n\r\n return (\r\n \r\n
\r\n {content}\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\n\r\nexport default IncidentEditDetails\r\n\r\n","import React, { Component } from 'react';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport Dialog from 'material-ui/Dialog';\r\nimport FlatButton from 'material-ui/FlatButton';\r\nimport AppBar from '@material-ui/core/AppBar';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport Radio from '@mui/material/Radio';\r\nimport RadioGroup from '@mui/material/RadioGroup';\r\nimport FormControlLabel from '@mui/material/FormControlLabel';\r\nimport FormControl from '@mui/material/FormControl';\r\nimport FormLabel from '@mui/material/FormLabel';\r\nimport Button from '@mui/material/Button';\r\nimport Stack from '@mui/material/Stack';\r\nimport Search from 'calcite-react/Search';\r\nimport IncidentEditDetails from './IncidentEditDetails';\r\n\r\nclass AdminPanel extends Component {\r\n\r\n constructor (props)\r\n {\r\n super(props);\r\n this.state =\r\n {\r\n isSearching: false,\r\n canSearch: false,\r\n searchIdentifer: null,\r\n searchValue: '',\r\n showEditInfo: false,\r\n editInfoPackage: null\r\n };\r\n\r\n this.updateSearchValue = this.updateSearchValue.bind(this);\r\n this.onUserAction = this.onUserAction.bind(this)\r\n }\r\n\r\n onClose = () => {\r\n \r\n this.setState({\r\n isSearching: false,\r\n canSearch: false,\r\n searchIdentifer: null,\r\n searchValue: '',\r\n showEditInfo: false,\r\n editInfoPackage: null\r\n });\r\n\r\n this.props.onClose();\r\n }\r\n\r\n onUserAction(value) \r\n {\r\n const searchEnabled = this.state.searchIdentifer !== null && (value !== null && value !== '');\r\n\r\n this.setState({\r\n searchValue: value,\r\n canSearch: searchEnabled\r\n });\r\n }\r\n\r\n updateSearchValue = (value) => {\r\n const searchEnabled = (this.state.searchIdentifer !== null && this.state.searchIdentifer !== '') && (value !== null && value !== '');\r\n\r\n this.setState({\r\n searchValue: value,\r\n canSearch: searchEnabled\r\n });\r\n}\r\n\r\n searchIncident = () => {\r\n window.api.searchAdminIncident(this.state.searchValue, this.state.searchIdentifer).then((response) => \r\n {\r\n this.setState({\r\n showEditInfo: true,\r\n editInfoPackage: response\r\n });\r\n });\r\n }\r\n\r\n updateIdentifier = (value) => {\r\n\r\n const searchEnabled = (this.state.searchValue !== null && this.state.searchValue !== '') && value !== null;\r\n this.setState({\r\n searchIdentifer: value,\r\n canSearch: searchEnabled\r\n });\r\n }\r\n\r\n render() {\r\n const actions = [\r\n \r\n ];\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n Administration\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n Search by:\r\n {\r\n this.updateIdentifier(event.target.value);\r\n }}>\r\n } label=\"Unique Fire Identifier\" />\r\n } label=\"FORID\" />\r\n } label=\"IRWIN ID\" />\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 AdminPanel;\r\n","import React, { Fragment, Component } from 'react';\r\nimport { bindActionCreators } from 'redux';\r\nimport { connect } from 'react-redux';\r\n\r\nimport { mapOperations } from '../redux/map';\r\nimport { authOperations } from '../redux/auth';\r\nimport { filterOperations } from '../redux/filter';\r\nimport { configOperations } from '../redux/config';\r\nimport { incidentsOperations } from '../redux/incidentList';\r\n\r\nimport Avatar from 'material-ui/Avatar';\r\nimport FlatButton from 'material-ui/FlatButton';\r\nimport Popover from 'material-ui/Popover';\r\nimport Menu from 'material-ui/Menu';\r\nimport MenuItem from 'material-ui/MenuItem';\r\nimport DropdownIcon from 'material-ui/svg-icons/navigation/arrow-drop-down';\r\nimport ContactsIcon from '@mui/icons-material/Contacts';\r\nimport AdminPanelSettingsIcon from '@mui/icons-material/AdminPanelSettings';\r\nimport Link from '@material-ui/core/Link';\r\nimport Divider from '@material-ui/core/Divider';\r\nimport InsertChartIcon from '@material-ui/icons/InsertChart';\r\nimport SignoutIcon from 'material-ui/svg-icons/action/power-settings-new';\r\nimport FeedbackIcon from 'material-ui/svg-icons/action/feedback';\r\nimport AssignmentIcon from 'material-ui/svg-icons/action/assignment';\r\nimport ReportIcon from 'material-ui/svg-icons/content/report';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport NewIncidentDialog from './newIncident/NewIncidentDialog';\r\nimport GeneralReportingDialog from './reporting/GeneralReportingDialog';\r\nimport DataDictionaryPanel from './dictionary/DataDictionaryPanel';\r\nimport AdminPanel from './admin/AdminPanel';\r\nimport theme from '../muiTheme';\r\n\r\nclass Header extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n userMenuOpen: false,\r\n dataDictionaryOpen: false,\r\n changeLogOpen: false,\r\n knownIssuesOpen: false,\r\n showingNewIncidentDialog: false,\r\n showingReportingDialog: false,\r\n adminPanelOpen: false\r\n };\r\n }\r\n\r\n userMenuClick = (event) => {\r\n event.preventDefault();\r\n\r\n this.setState({\r\n userMenuOpen: true,\r\n anchorEl: event.currentTarget,\r\n });\r\n };\r\n\r\n openAdminPanel = (event) => {\r\n event.preventDefault();\r\n\r\n this.setState({\r\n userMenuOpen: false,\r\n adminPanelOpen: true,\r\n });\r\n\r\n}\r\n openDataDictionary = (event) => {\r\n event.preventDefault();\r\n //history.push(\"/dictionary\");\r\n\r\n this.setState({\r\n userMenuOpen: false,\r\n dataDictionaryOpen: true,\r\n });\r\n\r\n }\r\n\r\n closeChangeLog = () =>\r\n {\r\n this.setState({\r\n changeLogOpen: false\r\n });\r\n }\r\n\r\n closeKnownIssues = () =>\r\n {\r\n this.setState({\r\n knownIssuesOpen: false\r\n });\r\n }\r\n\r\n openChangeLog = (event) => {\r\n event.preventDefault();\r\n\r\n this.setState({\r\n userMenuOpen: false,\r\n changeLogOpen: true,\r\n });\r\n }\r\n\r\n openKnownIssues = (event) => {\r\n event.preventDefault();\r\n\r\n this.setState({\r\n userMenuOpen: false,\r\n knownIssuesOpen: true,\r\n });\r\n }\r\n\r\n loadReporting = (event) =>\r\n {\r\n event.preventDefault();\r\n\r\n this.setState({\r\n userMenuOpen: false,\r\n showingReportingDialog: true\r\n });\r\n\r\n };\r\n\r\n reportNewIncident = (event) =>\r\n {\r\n event.preventDefault();\r\n\r\n this.setState({\r\n userMenuOpen: false,\r\n showingNewIncidentDialog: true\r\n });\r\n\r\n };\r\n\r\n generalReportingClose = () =>\r\n {\r\n this.setState({\r\n showingReportingDialog: false\r\n });\r\n }\r\n\r\n adminPanelClose = () =>\r\n {\r\n this.setState({\r\n adminPanelOpen: false\r\n });\r\n }\r\n\r\n dataDictionaryClose = () =>\r\n {\r\n this.setState({\r\n dataDictionaryOpen: false\r\n });\r\n }\r\n\r\n onCloseAddIrwinIdToPerimeter = () => {\r\n this.props.setAddIrwinIdToPerimeter(null);\r\n }\r\n\r\n newIncidentClose = () =>\r\n {\r\n this.setState({\r\n showingNewIncidentDialog: false\r\n });\r\n\r\n };\r\n\r\n handleAddNewIncident = () =>\r\n {\r\n this.setState({\r\n showingNewIncidentDialog: false\r\n });\r\n\r\n };\r\n\r\n userMenuClose = () => {\r\n this.setState({\r\n userMenuOpen: false,\r\n });\r\n };\r\n\r\n render() {\r\n let userAvatar;\r\n let environmentLabel = (this.props.appConfig.env !== 'prod')\r\n ? (

TESTING - {this.props.appConfig.env.toUpperCase()} - {this.props.appConfig.appVersion + \".\" + this.props.appConfig.minorReleaseVersion}

)\r\n : (
v{this.props.appConfig.appVersion + \".\" + this.props.appConfig.minorReleaseVersion}
);\r\n\r\n let trainingLink = (this.props.appConfig.env === 'prod') ? (\r\n \r\n Inspector - Training Version (OAT-NEXT)
\r\n
\r\n ) : ('');\r\n\r\n if (this.props.auth.user.thumbnailUrl) {\r\n userAvatar = (\r\n \r\n )\r\n } else {\r\n userAvatar = (\r\n \r\n {this.props.auth.user.fullName[0]}\r\n \r\n )\r\n }\r\n\r\n return (\r\n
\r\n
\r\n

INSPECTOR

\r\n {environmentLabel}\r\n
\r\n
\r\n {userAvatar}\r\n }/>\r\n \r\n \r\n {this.props.auth.isAdmin &&\r\n } primaryText=\"Admin\" />\r\n }\r\n } primaryText=\"Report a new Incident\" />\r\n } primaryText=\"Data Dictionary\" />\r\n } primaryText=\"Reports\" />\r\n } primaryText=\"Sign out\" />\r\n } primaryText=\"Contacts\" />\r\n } primaryText=\"Feedback\" />\r\n\r\n \r\n \r\n \r\n Links\r\n \r\n
\r\n {trainingLink}\r\n Known bugs
\r\n Irwin Observer
\r\n InFORM Training Materials
\r\n InFORM User Guide
\r\n Sit209
\r\n FamWeb
\r\n NIFC AGOL
\r\n WFMI Unit ID Module
\r\n NWCG
\r\n Fire Behavior Fuel Models
\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 const mapStateToProps = state => ({\r\n map: state.map,\r\n auth: state.auth,\r\n appConfig: state.config,\r\n filter: state.filter,\r\n incidentList: state.incidentList\r\n })\r\n\r\n const mapDispatchToProps = function (dispatch) {\r\n return bindActionCreators({\r\n ...mapOperations,\r\n ...authOperations,\r\n ...filterOperations,\r\n ...configOperations,\r\n ...incidentsOperations\r\n }, dispatch);\r\n }\r\n\r\n export default connect(mapStateToProps, mapDispatchToProps)(Header)\r\n","// Framework and third-party non-ui\r\nimport React from 'react';\r\nimport {history} from '../../index';\r\n// Redux operations and local helpers/utils/modules\r\nimport originFields from '../../defaults/PointOfOriginFields.json';\r\n\r\n// Component specific modules (Component-styled, etc.)\r\n\r\n// App components\r\n\r\n// Third-party components (buttons, icons, etc.)\r\nimport RaisedButton from 'material-ui/RaisedButton';\r\n\r\n// JSON\r\n\r\n// CSS\r\n\r\nconst ReportHeader = props => {\r\n const {incident} = props.selectedIncident;\r\n\r\n return (\r\n
\r\n {\r\n history.push(`/incidents/${incident.attributes[originFields.forId]}`)\r\n }}\r\n label=\"Back\" />\r\n
\r\n

Final Fire Report

\r\n

Incident Name: {incident.attributes[originFields.name]}

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

FireCode: {incident.attributes[originFields.fireCode] || 'NA'}

\r\n

Unique Fire ID: {incident.attributes[originFields.uniqueFireId]}

\r\n
\r\n {document.title='INFORM_' + incident.attributes[originFields.uniqueFireId] + '_' + new Date().toISOString(); window.print(); return false;} }\r\n label=\"Print\" />\r\n
\r\n );\r\n}\r\n\r\nReportHeader.propTypes = {};\r\n\r\nReportHeader.defaultProps = {};\r\n\r\nexport default ReportHeader;\r\n","import React, { Component } from 'react';\r\nimport Table from '@material-ui/core/Table';\r\nimport TableBody from '@material-ui/core/TableBody';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport TableHead from '@material-ui/core/TableHead';\r\nimport TableRow from '@material-ui/core/TableRow';\r\nimport TextField from 'material-ui/TextField';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport Button from '@material-ui/core/Button';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport Select from '@material-ui/core/Select';\r\n\r\nconst Landowners = [\r\n {\r\n LandownerCategoryID: 1,\r\n Name: \"Bureau of Indian Affairs\",\r\n Code: \"BIA\",\r\n LandownerKind: \"Federal\"\r\n },\r\n {\r\n LandownerCategoryID: 2,\r\n Name: \"Bureau of Land Management\",\r\n Code: \"BLM\",\r\n LandownerKind: \"Federal\"\r\n },\r\n {\r\n LandownerCategoryID: 3,\r\n Name: \"Bureau of Reclamation\",\r\n Code: \"BOR\",\r\n LandownerKind: \"Federal\"\r\n },\r\n {\r\n LandownerCategoryID: 4,\r\n Name: \"Department of Defense\",\r\n Code: \"DOD\",\r\n LandownerKind: \"Federal\"\r\n },\r\n {\r\n LandownerCategoryID: 5,\r\n Name: \"Department of Energy\",\r\n Code: \"DOE\",\r\n LandownerKind: \"Federal\"\r\n },\r\n {\r\n LandownerCategoryID: 6,\r\n Name: \"National Park Service\",\r\n Code: \"NPS\",\r\n LandownerKind: \"Federal\"\r\n },\r\n {\r\n LandownerCategoryID: 7,\r\n Name: \"US Forest Service\",\r\n Code: \"USFS\",\r\n LandownerKind: \"Federal\"\r\n },\r\n {\r\n LandownerCategoryID: 8,\r\n Name: \"US Fish and Wildlife Service\",\r\n Code: \"USFWS\",\r\n LandownerKind: \"Federal\"\r\n },\r\n {\r\n LandownerCategoryID: 9,\r\n Name: \"Foreign Government\",\r\n Code: \"Foreign\",\r\n LandownerKind: \"Private\"\r\n },\r\n {\r\n LandownerCategoryID: 10,\r\n Name: \"Tribal Government (non-trust lands) or Alaska Native Corporation\",\r\n Code: \"Tribal\",\r\n LandownerKind: \"Other\"\r\n },\r\n {\r\n LandownerCategoryID: 11,\r\n Name: \"City or Equivalent Government\",\r\n Code: \"City\",\r\n LandownerKind: \"Other\"\r\n },\r\n {\r\n LandownerCategoryID: 12,\r\n Name: \"County or Equivalent Government\",\r\n Code: \"County\",\r\n LandownerKind: \"Other\"\r\n },\r\n {\r\n LandownerCategoryID: 13,\r\n Name: \"State or Equivalent Government\",\r\n Code: \"State\",\r\n LandownerKind: \"Other\"\r\n },\r\n {\r\n LandownerCategoryID: 14,\r\n Name: \"Individual or Private Corporation\",\r\n Code: \"Private\",\r\n LandownerKind: \"Private\"\r\n },\r\n {\r\n LandownerCategoryID: 15,\r\n Name: \"Alaska Native Claims Settlement Act\",\r\n Code: \"ANCSA\",\r\n LandownerKind: \"Private\"\r\n },\r\n {\r\n LandownerCategoryID: 16,\r\n Name: \"Other Local\",\r\n Code: \"OthLoc\",\r\n LandownerKind: \"Other\"\r\n },\r\n {\r\n LandownerCategoryID: 18,\r\n Name: \"Other Federal\",\r\n Code: \"OthFed\",\r\n LandownerKind: \"Federal\"\r\n }\r\n];\r\n\r\nclass EditableAcreageTable extends Component {\r\n\r\n constructor(props) {\r\n\r\n super(props);\r\n this.state = {\r\n perimeterAcreage: null\r\n }\r\n }\r\n\r\n componentDidUpdate = (prevProps, prevState) => \r\n {\r\n try {\r\n const perimeterWasRecalculated = (this.props.perimeterWasRecalced === true && prevProps.perimeterWasRecalced === false);\r\n \r\n if (this.props.editWasCancelled === true && !prevProps.editWasCancelled) \r\n {\r\n console.log(\"Edit was cancelled\");\r\n this.setState({\r\n perimeterAcreage: null\r\n });\r\n this.forceUpdate();\r\n return;\r\n }\r\n\r\n if (perimeterWasRecalculated) //prevProps.perimeterAcreage !== this.props.perimeterAcreage \r\n {\r\n this.setState({\r\n perimeterAcreage: this.props.perimeterAcreage\r\n });\r\n\r\n this.props.resetAcreageRecalc();\r\n\r\n this.forceUpdate();\r\n return;\r\n }\r\n\r\n var clonedCopy = JSON.parse(JSON.stringify(this.props.perimeterAcreage));\r\n\r\n if (this.state.perimeterAcreage === null && this.props.perimeterAcreage !== null) \r\n {\r\n this.setState({\r\n perimeterAcreage: clonedCopy\r\n });\r\n }\r\n\r\n if (prevProps.fireOccurenceRecordID !== this.props.fireOccurenceRecordID) \r\n {\r\n this.setState({\r\n perimeterAcreage: clonedCopy\r\n });\r\n }\r\n }\r\n\r\n catch(e) \r\n {\r\n console.warn('Editable Acreage table error, componentDidUpdate');\r\n }\r\n };\r\n\r\n acreageRemoved = (idx) => {\r\n let updatedProp = Object.assign({}, this.state.perimeterAcreage);\r\n updatedProp.AcreageRecords = [];\r\n\r\n for (var i = 0; i < this.state.perimeterAcreage.AcreageRecords.length; i++ ) \r\n {\r\n if (i !== idx) \r\n {\r\n updatedProp.AcreageRecords.push(Object.assign({}, this.state.perimeterAcreage.AcreageRecords[i]));\r\n }\r\n }\r\n this.setState({\r\n perimeterAcreage: updatedProp\r\n });\r\n \r\n this.props.onAcreageRemoved(idx);\r\n }\r\n\r\n addNewRow = () =>\r\n {\r\n let updatedProp = Object.assign({}, this.state.perimeterAcreage);\r\n\r\n updatedProp.AcreageRecords.push({\r\n LandownerCategoryID: 18, \r\n UserProvidedAcreage: 0,\r\n CanEditLandowner: true,\r\n AcreageRecordID: -1 \r\n })\r\n\r\n this.setState({\r\n perimeterAcreage: updatedProp\r\n });\r\n\r\n this.props.onAddNewRow();\r\n }\r\n\r\n acreageLandownerCategoryUpdated = (idx, value) => {\r\n let updatedProp = Object.assign({}, this.state.perimeterAcreage);\r\n\r\n updatedProp.AcreageRecords[idx] = Object.assign({}, this.state.perimeterAcreage.AcreageRecords[idx]);\r\n updatedProp.AcreageRecords[idx].LandownerCategoryID = value;\r\n\r\n\r\n this.setState({\r\n perimeterAcreage: updatedProp\r\n });\r\n\r\n this.props.acreageLandownerCategoryUpdated(idx, value);\r\n }\r\n \r\n onUpdateAcreageProp = (num, idx) => {\r\n\r\n let updatedProp = Object.assign({}, this.state.perimeterAcreage);\r\n updatedProp.AcreageRecords[idx].LandownerCategoryID = this.state.perimeterAcreage.AcreageRecords[idx].LandownerCategoryID;\r\n updatedProp.AcreageRecords[idx].IsUserOverriden = true;\r\n updatedProp.AcreageRecords[idx].UserProvidedAcreage = (isNaN(num)) ? null : num;\r\n\r\n this.setState({\r\n perimeterAcreage: updatedProp\r\n });\r\n\r\n this.props.onUpdateAcreageProp(num, idx);\r\n }\r\n\r\n recalculate = () => \r\n {\r\n let updatedProp = Object.assign({}, this.state.perimeterAcreage);\r\n updatedProp.AcreageRecords = [];\r\n\r\n /*for (var i = 0; i < this.state.perimeterAcreage.AcreageRecords.length; i++ ) \r\n {\r\n let updateRow = Object.assign({}, this.state.perimeterAcreage.AcreageRecords[i]);\r\n if (updateRow.AcreageRecordID !== -1 && updateRow.CanEditLandowner === false) \r\n {\r\n updateRow.UserProvidedAcreage = null;\r\n updateRow.IsUserOverriden = false;\r\n updatedProp.AcreageRecords.push(updateRow);\r\n } \r\n }*/\r\n\r\n this.setState({\r\n perimeterAcreage: updatedProp\r\n });\r\n\r\n this.props.onRecalculate();\r\n } \r\n\r\n\r\n getSummaryRow = () => {\r\n return (this.state.perimeterAcreage && this.state.perimeterAcreage.AcreageRecords) ? \r\n (\r\n \r\n Total:\r\n \r\n {this.state.perimeterAcreage.AcreageRecords.reduce((pv, cv) => pv + ((cv.UserProvidedAcreage !== null) ? parseFloat(cv.UserProvidedAcreage) : parseFloat(cv.CalculatedAcreage)), 0).toFixed(2).toLocaleString()}\r\n \r\n \r\n ) :\r\n ()\r\n }\r\n\r\n render() {\r\n\r\n return (\r\n \r\n \r\n \r\n Landowner Kind\r\n Landowner Category\r\n Calculated Acres\r\n User Acres\r\n \r\n \r\n \r\n \r\n {(this.state.perimeterAcreage && this.state.perimeterAcreage.AcreageRecords) ?\r\n (\r\n this.state.perimeterAcreage.AcreageRecords.map((row, idx) => (\r\n \r\n \r\n {Landowners.find(s => s.LandownerCategoryID === row.LandownerCategoryID).LandownerKind}\r\n \r\n \r\n {\r\n this.acreageLandownerCategoryUpdated(idx, event.target.value);\r\n }}>\r\n {\r\n Landowners.map(landownerValue => {\r\n return (\r\n \r\n {landownerValue.Name}\r\n \r\n );\r\n }\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n event.preventDefault();\r\n const num = parseFloat(value)\r\n this.onUpdateAcreageProp(num, idx);\r\n }}\r\n disabled={this.props.mode === \"read\" || this.props.shouldDisable} />\r\n \r\n {\r\n this.acreageRemoved(idx);\r\n }}>\r\n \r\n \r\n \r\n \r\n ))\r\n )\r\n :\r\n ()\r\n }\r\n {this.getSummaryRow()}\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 EditableAcreageTable;\r\n","// Framework and third-party non-ui\r\nimport React, { Fragment } from 'react';\r\n\r\n// Redux operations and local helpers/utils/modules\r\nimport originFields from '../../defaults/PointOfOriginFields.json';\r\nimport moment from 'moment';\r\nimport { getFieldAliasOverrides, getNameForCategory, getNameForKind, getDomainForCauses } from '../../utils/incidentHelper';\r\nimport EditableAcreageTable from '../../components/incidentDetails/EditableAcreageTable';\r\nimport Button from '@mui/material/Button';\r\n\r\nimport {\r\n Table,\r\n TableBody,\r\n TableRow,\r\n TableRowColumn,\r\n} from 'material-ui/Table';\r\n\r\n// JSON\r\n\r\n// CSS\r\n\r\nconst ReportInfoSection = props => {\r\n\r\n let isShowingRelatedRecordsDialog = false;\r\n\r\n const getGeneralFireInfoTables = () => {\r\n const { generalFireInfo } = originFields.reportInfoFields;\r\n\r\n return (\r\n
\r\n {getTable(generalFireInfo.slice(0, (generalFireInfo.length / 2)))}\r\n {getTable(generalFireInfo.slice((generalFireInfo.length / 2), generalFireInfo.length))}\r\n
\r\n )\r\n }\r\n\r\n const getPerimeterTable = (fieldNames) => {\r\n const hasAcreages = (props.selectedIncident.incident && props.selectedIncident.incident.perimeterAcreage && props.selectedIncident.incident.perimeterAcreage.AcreageRecords)\r\n const acreageTable = (hasAcreages) \r\n ? \r\n (\r\n \r\n ) \r\n : \"\";\r\n \r\n const tableRows = fieldNames.map(fieldName => {\r\n\r\n if (props.selectedIncident.perimeter) {\r\n let fieldValue = props.selectedIncident.perimeter.attributes[fieldName];\r\n if (fieldName.includes(\"Date\")) {\r\n fieldValue = moment(fieldValue).format(props.dateFormat);\r\n }\r\n return (\r\n \r\n {fieldName}\r\n {fieldValue}\r\n \r\n );\r\n } else {\r\n return \"\";\r\n }\r\n });\r\n\r\n return (\r\n
\r\n \r\n \r\n {tableRows}\r\n \r\n
\r\n {acreageTable}\r\n
\r\n )\r\n }\r\n\r\n const getTable = (fieldNames, skipField) => {\r\n const tableRows = fieldNames.filter(fieldName => fieldName !== skipField)\r\n .map(fieldName => {\r\n\r\n\r\n const fieldInfo = props.fieldInfos.find(info => info.name === fieldName);\r\n const fieldAlias = getFieldAliasOverrides(fieldInfo);\r\n \r\n let fieldValue = props.selectedIncident.incident.attributes[fieldName];\r\n\r\n if (fieldValue && (originFields.dateFieldsWithTypeDouble.includes(fieldName) || fieldInfo.type === \"date\")) {\r\n fieldValue = moment(fieldValue).format(props.dateFormat);\r\n }\r\n\r\n if (fieldValue && fieldName === originFields.incidentTypeCategory) {\r\n fieldValue = getNameForCategory(fieldValue);\r\n }\r\n\r\n if (fieldValue && fieldName === originFields.incidentTypeKind) {\r\n fieldValue = getNameForKind(fieldValue);\r\n }\r\n\r\n if (fieldName === originFields.fireCauseId || fieldName === originFields.fireCauseGeneralId || fieldName === originFields.fireCauseSpecificId) {\r\n fieldValue = getDomainForCauses(fieldValue, fieldInfo.domain.codedValues);\r\n }\r\n\r\n if ((fieldName === \"_pointGeometryLatitude\" || fieldName === \"_pointGeometryLongitude\") && fieldValue !== null) {\r\n fieldValue = parseFloat(fieldValue).toFixed(6);\r\n }\r\n\r\n if ((fieldValue !== null) && (originFields.trueFalseZeroOnes.includes(fieldName))) {\r\n fieldValue = (fieldValue === 0 || fieldValue === \"0\") ? \"False\" : \"True\";\r\n }\r\n\r\n return (\r\n \r\n {fieldAlias}\r\n {fieldValue}\r\n \r\n );\r\n });\r\n\r\n return (\r\n
\r\n \r\n \r\n {tableRows}\r\n \r\n \r\n
\r\n )\r\n }\r\n\r\n const { incident, pointOfOrigin, sizeAndPerimeter, perimeter, chronology, complexityManagement, siteDescriptors, outcomes, fireCause, miscellaneous } = originFields.reportInfoFields;\r\n\r\n return (\r\n \r\n
\r\n
\r\n

Fire Summary

\r\n {getGeneralFireInfoTables()}\r\n
\r\n
\r\n
\r\n\r\n
\r\n

Incident

\r\n {getTable(incident)}\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n

Complexity & Management

\r\n {getTable(complexityManagement)}\r\n
\r\n\r\n
\r\n

Site Descriptors

\r\n {getTable(siteDescriptors)}\r\n
\r\n\r\n
\r\n

Outcomes

\r\n {getTable(outcomes)}\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

Point of Origin

\r\n {getTable(pointOfOrigin)}\r\n
\r\n\r\n
\r\n

Size

\r\n {getTable(sizeAndPerimeter)}\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n

Fire Cause

\r\n {getTable(fireCause)}\r\n
\r\n\r\n
\r\n

Miscellaneous

\r\n {getTable(miscellaneous, originFields.report)}\r\n
\r\n\r\n
\r\n

Chronology

\r\n {getTable(chronology)}\r\n
\r\n\r\n
\r\n\r\n\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n

Perimeter

\r\n {getPerimeterTable(perimeter)}\r\n
\r\n
\r\n );\r\n}\r\n\r\nReportInfoSection.propTypes = {};\r\n\r\nReportInfoSection.defaultProps = {};\r\n\r\nexport default ReportInfoSection;\r\n","// Framework and third-party non-ui\r\nimport React, { Component, Fragment } from 'react';\r\nimport moment from 'moment';\r\nimport Button from '@mui/material/Button';\r\n// Redux operations and local helpers/utils/modules\r\nimport {getIncidentStatus} from '../../utils/incidentHelper';\r\nimport originFields from '../../defaults/PointOfOriginFields.json';\r\n\r\nimport {\r\n Table,\r\n TableBody,\r\n TableRow,\r\n TableRowColumn,\r\n} from 'material-ui/Table';\r\n\r\nimport TextField from 'material-ui/TextField';\r\nimport { getFieldAliasOverrides } from '../../utils/incidentHelper';\r\n\r\n\r\n// JSON\r\n\r\n// CSS\r\nconst styles = {\r\n checkbox: {\r\n marginBottom: 16,\r\n },\r\n textField: {\r\n width: '100%'\r\n }\r\n};\r\n\r\nclass ReportMapSection extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n getCertTable = () => {\r\n const {certFields} = originFields.reportInfoFields;\r\n\r\n let statusVal = getIncidentStatus(this.props.selectedIncident.incident);\r\n \r\n const certifierBlock =\r\n this.props.certifierInfo ?\r\n (\r\n \r\n Certifier Name\r\n {this.props.certifierInfo.fullName}\r\n \r\n \r\n \r\n \r\n Certifier Description\r\n {this.props.certifierInfo.description}\r\n \r\n \r\n \r\n Certifier Email\r\n {this.props.certifierInfo.email}\r\n \r\n \r\n \r\n ) : \"\";\r\n \r\n return (\r\n
\r\n \r\n \r\n \r\n Status\r\n {statusVal}\r\n \r\n {certFields.map(fieldName => {\r\n const fieldInfo = this.props.fieldInfos.find(info => info.name === fieldName);\r\n const fieldAlias = getFieldAliasOverrides(fieldInfo);\r\n //const fieldAlias = fieldInfo && fieldInfo.alias ? fieldInfo.alias : fieldName;\r\n\r\n let fieldValue = this.props.selectedIncident.incident.attributes[fieldName];\r\n if( fieldValue && (originFields.dateFieldsWithTypeDouble.includes(fieldName) || fieldInfo.type === \"date\")){\r\n fieldValue = moment(fieldValue).format(this.props.dateFormat);\r\n }\r\n\r\n return (\r\n \r\n {fieldAlias.replace('POO ', '')}\r\n {fieldValue}\r\n \r\n );\r\n })\r\n }\r\n {certifierBlock}\r\n \r\n \r\n
\r\n )\r\n }\r\n\r\n showRecords = () => \r\n {\r\n this.props.showRelatedRecords();\r\n }\r\n getRelatedRecordsTable = () => {\r\n const tableRows = []\r\n \r\n if (this.props.relatedRecords !== null && this.props.relatedRecords !== undefined)\r\n {\r\n const hasFireStatIncidents = this.props.relatedRecords.FireStatIncidents.length > 0;\r\n const hasIrwinIncidents = this.props.relatedRecords.IrwinIncidents.length > 0;\r\n const hasBulkUploadIncidents = this.props.relatedRecords.BulkUploadIncidents.length > 0;\r\n const hasWFMIIncidents =this. props.relatedRecords.WFMIIncidents.length > 0;\r\n const hasFODIncidents = this.props.relatedRecords.FODIncidents.length > 0;\r\n const hasCertificationRecords = this.props.relatedRecords.CertificationRecords.length > 0;\r\n \r\n if (hasIrwinIncidents)\r\n {\r\n for (var i = 0; i < this.props.relatedRecords.IrwinIncidents.length; i++)\r\n {\r\n const irwinRow = (\r\n \r\n Related IRWIN ID:\r\n \r\n \r\n );\r\n tableRows.push(irwinRow);\r\n }\r\n }\r\n \r\n if (hasFireStatIncidents)\r\n {\r\n for (var j = 0; j < this.props.relatedRecords.FireStatIncidents.length; j++)\r\n {\r\n const fireStatRow = (\r\n \r\n Related FireStat ID:\r\n \r\n \r\n );\r\n tableRows.push(fireStatRow);\r\n }\r\n }\r\n \r\n if (hasBulkUploadIncidents)\r\n {\r\n for (var k = 0; k < this.props.relatedRecords.BulkUploadIncidents.length; k++)\r\n {\r\n const bulkUploadRow = (\r\n \r\n Related Bulk Upload ID:\r\n \r\n \r\n );\r\n tableRows.push(bulkUploadRow);\r\n }\r\n }\r\n \r\n if (hasWFMIIncidents)\r\n {\r\n for (var l = 0; l < this.props.relatedRecords.WFMIIncidents.length; l++)\r\n {\r\n const wfmiRow = (\r\n \r\n Related WFMI ID:\r\n \r\n \r\n );\r\n tableRows.push(wfmiRow);\r\n }\r\n }\r\n \r\n if (hasFODIncidents)\r\n {\r\n for (var m = 0; m < this.props.relatedRecords.FODIncidents.length; m++)\r\n {\r\n const fodRow = (\r\n \r\n Related FOD ID:\r\n \r\n \r\n );\r\n tableRows.push(fodRow);\r\n }\r\n }\r\n \r\n if (hasCertificationRecords)\r\n {\r\n for (var n = 0; n < this.props.relatedRecords.CertificationRecords.length; n++)\r\n {\r\n const certRow = (\r\n \r\n Previous Certification ID:\r\n \r\n \r\n );\r\n tableRows.push(certRow);\r\n }\r\n }\r\n }\r\n \r\n return (\r\n
\r\n \r\n \r\n {tableRows}\r\n \r\n
\r\n
\r\n )\r\n }\r\n render() {\r\n\r\n const mapImage =\r\n this.props.screenshot && this.props.screenshot.url ?\r\n (\r\n
\r\n \"Map\"\r\n
\r\n ) : \"\";\r\n\r\n\r\n\r\n return (\r\n
\r\n {mapImage}\r\n
\r\n
\r\n

Narrative

\r\n

{this.props.selectedIncident.incident.attributes[originFields.report]}

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

Certification

\r\n {this.getCertTable()}\r\n
\r\n
\r\n

Approval

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

Related Records

\r\n {this.getRelatedRecordsTable()}\r\n
\r\n

*Note: Specific approval and record management requirements are defined by the jurisdictional agency at Point of Origin

\r\n
\r\n );\r\n}\r\n}\r\n\r\nReportMapSection.propTypes = {};\r\n\r\nReportMapSection.defaultProps = {};\r\n\r\nexport default ReportMapSection;\r\n\r\n","import React, { Component, Fragment } from 'react';\r\nimport Snackbar from 'material-ui/Snackbar';\r\nimport Button from '@material-ui/core/Button';\r\n\r\nclass IrwinIdTextField extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n showSnackbar: false\r\n };\r\n }\r\n\r\n closeSnackbar = () => {\r\n this.setState({showSnackbar: false})\r\n }\r\n\r\n render()\r\n {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n}\r\n\r\nexport default IrwinIdTextField;\r\n","import React, { Component } from 'react';\r\n\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Table from '@material-ui/core/Table';\r\nimport TableBody from '@material-ui/core/TableBody';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport TableRow from '@material-ui/core/TableRow';\r\nimport IrwinIdTextField from '../../incidentDetails/components/IrwinIdTextField';\r\nimport Tooltip from '@mui/material/Tooltip';\r\nimport HelpIcon from '@mui/icons-material/Help';\r\nimport moment from 'moment';\r\n\r\nclass RelatedIrwinRecord extends Component {\r\n\r\n //TODO: Duplicated\r\n getDateString = (value) =>\r\n {\r\n return (value) ? moment(new Date(value)).format(\"MM/DD/YYYY h:mm A\") : \"\";\r\n }\r\n\r\n getYesNo = (value) =>\r\n {\r\n return (value && (value === 1 || value === \"1\")) ? \"Yes\" : \"No\";\r\n }\r\n\r\n getStyle = (attributeName) =>\r\n {\r\n const outlineStyle = {outlineColor:'red', outlineStyle: 'dotted'};\r\n const incidentId = this.props.record.IncidentID;\r\n\r\n const matchingItems = this.props.AttributeDeltas[incidentId].filter( function(item){return (item.AttributeName === attributeName);} );\r\n return (matchingItems && matchingItems.length > 0) ? outlineStyle : null;\r\n }\r\n\r\n getElement = (attributeName, attributeTitle) =>\r\n {\r\n const incidentId = this.props.record.IncidentID;\r\n const matchingItems = this.props.AttributeDeltas[incidentId].filter( function(item){return (item.AttributeName === attributeName);} );\r\n const hasDiff = (matchingItems && matchingItems.length > 0);\r\n \r\n return (hasDiff) ? (\r\n \r\n \r\n {attributeTitle}\r\n \r\n \r\n ) : attributeTitle;\r\n }\r\n\r\n render()\r\n {\r\n return (\r\n \r\n \r\n \r\n \r\n IRWIN ID:\r\n \r\n {this.getElement('ABCDMisc', 'ABCD Misc:')}\r\n {this.props.record.ABCDMisc}\r\n \r\n \r\n {this.getElement('ADSPermissionState', 'ADS Permission State:')}\r\n {this.props.record.ADSPermissionState}\r\n {this.getElement('CalculatedAcres', 'Calculated Acres:')}\r\n {this.props.record.CalculatedAcres}\r\n \r\n \r\n {this.getElement('ContainmentDateTime', 'Containment Date:')}\r\n {this.getDateString(this.props.record.ContainmentDateTime)}\r\n {this.getElement('ControlDateTime', 'Control Date Time:')}\r\n {this.getDateString(this.props.record.ControlDateTime)}\r\n \r\n \r\n {this.getElement('CreatedBySystem', 'Created By System:')}\r\n {this.props.record.CreatedBySystem}\r\n {this.getElement('CreatedOnDateTime', 'Created On Date Time:')}\r\n {this.getDateString(this.props.record.CreatedOnDateTime)}\r\n \r\n \r\n {this.getElement('IncidentSize', 'Incident Size:')}\r\n {this.props.record.IncidentSize}\r\n {this.getElement('DispatchCenterID', 'Dispatch Center ID:')}\r\n {this.props.record.DispatchCenterID}\r\n \r\n \r\n {this.getElement('EstimatedContainmentDate', 'Estimated Containment Date:')}\r\n {this.getDateString(this.props.record.EstimatedContainmentDate)}\r\n {this.getElement('Fatalities', 'Fatalities:')}\r\n {this.props.record.Fatalities}\r\n \r\n \r\n {this.getElement('FinalFireReportApprovedBy', 'Final Fire Report Approved By:')}\r\n {this.props.record.FinalFireReportApprovedBy}\r\n {this.getElement('FinalFireReportApprovedByTitle', 'Final Fire Report Approved By Title:')}\r\n {this.props.record.FinalFireReportApprovedByTitle}\r\n \r\n \r\n {this.getElement('FinalFireReportApprovedByUnit', 'Final Fire Report Approved By Unit:')}\r\n {this.props.record.FinalFireReportApprovedByUnit}\r\n {this.getElement('FinalFireReportApprovedDate', 'Final Fire Report Approved Date:')}\r\n {this.getDateString(this.props.record.FinalFireReportApprovedDate)}\r\n \r\n \r\n {this.getElement('FinalFireReportNarrative', 'Final Fire Report Narrative:')}\r\n {this.props.record.FinalFireReportNarrative}\r\n {this.getElement('FinalStrategyAttainedDateTime', 'Final Strategy Attained Date:')}\r\n {this.getDateString(this.props.record.FinalStrategyAttainedDateTime)}\r\n \r\n \r\n {this.getElement('FireCauseID', 'Fire Cause:')}\r\n {this.props.record.FireCause}\r\n {this.getElement('FireCauseGeneralID', 'Fire Cause General:')}\r\n {this.props.record.FireCauseGeneral}\r\n \r\n \r\n {this.getElement('FireCauseSpecificID', 'Fire Cause Specific:')}\r\n {this.props.record.FireCauseSpecific}\r\n {this.getElement('FireCode', 'FireCode:')}\r\n {this.props.record.FireCode}\r\n \r\n \r\n {this.getElement('FireDepartmentID', 'Fire Department ID:')}\r\n {this.props.record.FireDepartmentID}\r\n {this.getElement('FireDiscoveryDateTime', 'Fire Discovery Date:')}\r\n {this.getDateString(this.props.record.FireDiscoveryDateTime)}\r\n \r\n \r\n {this.getElement('FireIgnitionDateTime', 'Fire Ignition Date:')}\r\n {this.getDateString(this.props.record.FireIgnitionDateTime)}\r\n {this.getElement('FireMgmtComplexity', 'Fire Mgmt Complexity:')}\r\n {this.props.record.FireMgmtComplexity}\r\n \r\n \r\n {this.getElement('FireOutDateTime', 'Fire Out Date:')}\r\n {this.getDateString(this.props.record.FireOutDateTime)}\r\n {this.getElement('FSJobCode', 'FS Job Code:')}\r\n {this.props.record.FSJobCode}\r\n \r\n \r\n {this.getElement('FSOverrideCode', 'FS Override Code:')}\r\n {this.props.record.FSOverrideCode}\r\n {this.getElement('GACC', 'GACC:')}\r\n {this.props.record.GACC}\r\n \r\n \r\n {this.getElement('HasFatalities', 'Has Fatalities:')}\r\n {this.getYesNo(this.props.record.HasFatalities)}\r\n {this.getElement('HasInjuries', 'Has Injuries:')}\r\n {this.getYesNo(this.props.record.HasInjuries)}\r\n \r\n \r\n {this.getElement('IncidentManagementOrganization', 'Incident Management Organization:')}\r\n {this.props.record.IncidentManagementOrganization}\r\n {this.getElement('IncidentName', 'Incident Name:')}\r\n {this.props.record.IncidentName}\r\n \r\n \r\n {this.getElement('IncidentTypeCategory', 'Incident Type Category:')}\r\n {this.props.record.IncidentTypeCategory}\r\n {this.getElement('IncidentTypeKind', 'Incident Type Kind:')}\r\n {this.props.record.IncidentTypeKind}\r\n \r\n \r\n {this.getElement('IncidentStatus', 'Incident Status:')}\r\n {this.props.record.IncidentStatus}\r\n {this.getElement('INFORMUserName', 'INFORM User Name:')}\r\n {this.props.record.INFORMUserName}\r\n \r\n \r\n {this.getElement('InitialFireStrategy', 'Initial Fire Strategy:')}\r\n {this.props.record.InitialFireStrategy}\r\n {this.getElement('InitialLatitude', 'Initial Latitude:')}\r\n {this.props.record.InitialLatitude}\r\n \r\n \r\n {this.getElement('InitialLongitude', 'Initial Longitude:')}\r\n {this.props.record.InitialLongitude}\r\n {this.getElement('InitialResponseDateTime', 'Initial Response Date:')}\r\n {this.getDateString(this.props.record.InitialResponseDateTime)}\r\n \r\n \r\n {this.getElement('Injuries', 'Injuries:')}\r\n {this.props.record.Injuries}\r\n {this.getElement('InNFPORS', 'In NFPORS?')}\r\n {this.getYesNo(this.props.record.InNFPORS)}\r\n \r\n \r\n {this.getElement('InFuelTreatment', 'In Fuel Treatment?')}\r\n {this.getYesNo(this.props.record.InFuelTreatment)}\r\n {this.getElement('IsFireCauseInvestigated', 'Is Fire Cause Investigated?')}\r\n {this.getYesNo(this.props.record.IsFireCauseInvestigated)}\r\n \r\n \r\n {this.getElement('IsFireCodeRequested', 'Is Fire Code Requested?')}\r\n {this.getYesNo(this.props.record.IsFireCodeRequested)}\r\n {this.getElement('IsFSAssisted', 'Is FS Assisted?')}\r\n {this.getYesNo(this.props.record.IsFSAssisted)}\r\n \r\n \r\n {this.getElement('IsQuarantined', 'Is Quarantined?')}\r\n {this.getYesNo(this.props.record.IsQuarantined)}\r\n {this.getElement('IsTrespass', 'Is Trespass?')}\r\n {this.getYesNo(this.props.record.IsTrespass)}\r\n \r\n \r\n {this.getElement('IsValid', 'Is Valid?')}\r\n {this.getYesNo(this.props.record.IsValid)}\r\n {this.getElement('LocalIncidentIdentifier', 'Local Incident Identifier:')}\r\n {this.props.record.LocalIncidentIdentifier}\r\n \r\n \r\n {this.getElement('y', 'Latitude')}\r\n {this.props.record.y}\r\n {this.getElement('x', 'Longitude')}\r\n {this.props.record.x}\r\n \r\n \r\n {this.getElement('ModifiedBySystem', 'Modified By System:')}\r\n {this.props.record.ModifiedBySystem}\r\n {this.getElement('ModifiedOnDateTime', 'Modified On Date:')}\r\n {this.getDateString(this.props.record.ModifiedOnDateTime)}\r\n \r\n \r\n {this.getElement('OtherStructuresDestroyed', 'Other Structures Destroyed:')}\r\n {this.props.record.OtherStructuresDestroyed}\r\n {this.getElement('OtherStructuresThreatened', 'Other Structures Threatened:')}\r\n {this.props.record.OtherStructuresThreatened}\r\n \r\n \r\n {this.getElement('POOCity', 'City:')}\r\n {this.props.record.POOCity}\r\n {this.getElement('POOCounty', 'County:')}\r\n {this.props.record.POOCounty}\r\n \r\n \r\n \r\n {this.getElement('POODispatchCenterID', 'Dispatch Center ID:')}\r\n {this.props.record.POODispatchCenterID}\r\n {this.getElement('POOFips', 'Fips:')}\r\n {this.props.record.POOFips}\r\n\r\n \r\n \r\n {this.getElement('POOJurisdictionalAgency', 'Jurisdictional Agency:')}\r\n {this.props.record.POOJurisdictionalAgency}\r\n {this.getElement('POOJurisdictionalUnit', 'Jurisdictional Unit:')}\r\n {this.props.record.POOJurisdictionalUnit}\r\n\r\n \r\n \r\n {this.getElement('POOLandownerCategory', 'Landowner Category:')}\r\n {this.props.record.POOLandownerCategory}\r\n {this.getElement('POOLandownerKind', 'Landowner Kind:')}\r\n {this.props.record.POOLandownerKind}\r\n\r\n \r\n \r\n {this.getElement('POOProtectingAgency', 'Protecting Agency:')}\r\n {this.props.record.POOProtectingAgency}\r\n {this.getElement('POOProtectingUnit', 'Protecting Unit:')}\r\n {this.props.record.POOProtectingUnit}\r\n\r\n \r\n \r\n {this.getElement('POOState', 'State:')}\r\n {this.props.record.POOState}\r\n {this.getElement('PredominantFuelGroup', 'Fuel Group:')}\r\n {this.props.record.PredominantFuelGroup}\r\n\r\n \r\n \r\n {this.getElement('PredominantFuelModel', 'Fuel Model:')}\r\n {this.props.record.PredominantFuelModel}\r\n {this.getElement('ResidencesDestroyed', 'Residences Destroyed:')}\r\n {this.props.record.ResidencesDestroyed}\r\n\r\n \r\n \r\n {this.getElement('ResidencesThreatened', 'Residences Threatened:')}\r\n {this.props.record.ResidencesThreatened}\r\n {this.getElement('UniqueFireIdentifier', 'Unique Fire Identifier:')}\r\n {this.props.record.UniqueFireIdentifier}\r\n\r\n \r\n \r\n
\r\n
\r\n )\r\n }\r\n}\r\n\r\nexport default RelatedIrwinRecord;\r\n","import React, { Component } from 'react';\r\n\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Table from '@material-ui/core/Table';\r\nimport TableBody from '@material-ui/core/TableBody';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport TableRow from '@material-ui/core/TableRow';\r\nimport moment from 'moment';\r\n\r\n\r\nclass RelatedBulkUploadRecord extends Component {\r\n\r\n//TODO: Duplicated with WFMI\r\n getDateString = (value) =>\r\n {\r\n return (value) ? moment(new Date(value)).format(\"MM/DD/YYYY h:mm A\") : \"\";\r\n }\r\n\r\n getYesNo = (value) =>\r\n {\r\n return (value && (value === 1 || value === \"1\")) ? \"Yes\" : \"No\";\r\n }\r\n\r\n render()\r\n {\r\n return (\r\n \r\n \r\n \r\n \r\n Bulk Upload ID:\r\n {this.props.record.BulkUploadID}\r\n Local Incident ID:\r\n {this.props.record.LocalIncidentID}\r\n \r\n \r\n Fire Discovery Date:\r\n {this.props.record.FireDiscoveryDate}\r\n Fire Discovery Time:\r\n {this.props.record.FireDiscoveryTime}\r\n \r\n \r\n Fire Reporting Agency Unit Identifier:\r\n {this.props.record.FireReportingAgencyUnitIdentifier}\r\n State:\r\n {this.props.record.State}\r\n \r\n \r\n Latitude:\r\n {this.props.record.Latitude}\r\n Longitude:\r\n {this.props.record.Longitude}\r\n \r\n \r\n Statistical Cause Code:\r\n {this.props.record.StatisticalCauseCode}\r\n Final Fire Acre Quantity:\r\n {this.props.record.FinalFireAcreQuantity}\r\n \r\n \r\n Fire Containment Date:\r\n {this.props.record.FireContainmentDate}\r\n Fire Containment Time:\r\n {this.props.record.FireContainmentTime}\r\n \r\n \r\n Incident Name:\r\n {this.props.record.IncidentName}\r\n State FIPS:\r\n {this.props.record.StateFIPS}\r\n \r\n \r\n County:\r\n {this.props.record.County}\r\n County FIPS:\r\n {this.props.record.CountyFIPS}\r\n \r\n \r\n District:\r\n {this.props.record.District}\r\n Ownership Code:\r\n {this.props.record.OwnershipCode}\r\n \r\n \r\n Residences Threatened:\r\n {this.props.record.ResidencesThreatened}\r\n Residences Destroyed:\r\n {this.props.record.ResidencesDestroyed}\r\n \r\n \r\n Fire Department ID:\r\n {this.props.record.FireDepartmentID}\r\n Fire Discovery Date:\r\n {this.props.record.FireDiscoveryDateTime}\r\n \r\n \r\n Other Structures Threatened:\r\n {this.props.record.OtherStructuresThreatened}\r\n Other Structures Destroyed:\r\n {this.props.record.OtherStructuresDestroyed}\r\n \r\n \r\n Number Injuries:\r\n {this.props.record.NumberInjuries}\r\n Number Fatalities:\r\n {this.props.record.NumberFatalities}\r\n \r\n \r\n
\r\n
\r\n )\r\n }\r\n}\r\n\r\nexport default RelatedBulkUploadRecord;\r\n","import React, { Component } from 'react';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Table from '@material-ui/core/Table';\r\nimport TableBody from '@material-ui/core/TableBody';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport TableRow from '@material-ui/core/TableRow';\r\n\r\nimport moment from 'moment';\r\n\r\nclass RelatedWFMIRecord extends Component {\r\n\r\n//TODO: Throw into util\r\n getDateString = (value) =>\r\n {\r\n return (value) ? moment(new Date(value)).format(\"MM/DD/YYYY h:mm A\") : \"\";\r\n }\r\n\r\n getYesNo = (value) =>\r\n {\r\n return (value && (value === 1 || value === \"1\")) ? \"Yes\" : \"No\";\r\n }\r\n\r\n render()\r\n {\r\n return (\r\n \r\n \r\n \r\n \r\n WFMI ID:\r\n {this.props.record.WFMIID}\r\n Fire ID:\r\n {this.props.record.FireId}\r\n \r\n \r\n Organization:\r\n {this.props.record.Organization}\r\n Region:\r\n {this.props.record.RegionState}\r\n \r\n \r\n Reporting Unit:\r\n {this.props.record.ReportingUnit}\r\n Calendar Year:\r\n {this.props.record.CalendarYear}\r\n \r\n \r\n Fiscal Year:\r\n {this.props.record.FiscalYear}\r\n Fire Number:\r\n {this.props.record.FireNumber}\r\n \r\n \r\n Fire Code:\r\n {this.props.record.FireCode}\r\n FireName:\r\n {this.props.record.FireName}\r\n \r\n \r\n Fire Type:\r\n {this.props.record.FireTypeDisplay}\r\n Protection Type:\r\n {this.props.record.ProtectionTypeDisplay}\r\n \r\n \r\n Completion Code:\r\n {this.props.record.CompletionCode}\r\n Index Time:\r\n {this.props.record.IndexTime}\r\n \r\n \r\n Index Time Source:\r\n {this.props.record.IndexTimeSource}\r\n Size Class:\r\n {this.props.record.SizeClass}\r\n \r\n \r\n Last Modified:\r\n {this.props.record.LastModified}\r\n Cause Category:\r\n {this.props.record.Cause}\r\n \r\n \r\n Reimbursable:\r\n {this.props.record.Reimbursable}\r\n Burning Index:\r\n {this.props.record.BurningIndex}\r\n \r\n \r\n Area:\r\n {this.props.record.AreaName}\r\n Owner:\r\n {this.props.record.OwnerDisplay}\r\n \r\n \r\n Merged Fire:\r\n {this.props.record.MergedFire}\r\n Parent Fire:\r\n {this.props.record.ParentFire}\r\n \r\n \r\n Origin Accuracy:\r\n {this.props.record.OriginAccuracy}\r\n Location Method:\r\n {this.props.record.LocationMethod}\r\n \r\n \r\n Coordinate Type:\r\n {this.props.record.CoordinateType}\r\n Datum Type:\r\n {this.props.record.DatumType}\r\n \r\n \r\n Latitude DD:\r\n {this.props.record.LatitudeDD}\r\n Longitude DD:\r\n {this.props.record.LongitudeDD}\r\n \r\n \r\n Latitude DMS:\r\n {this.props.record.LatitudeDMS}\r\n Longitude DMS:\r\n {this.props.record.LongitudeDMS}\r\n \r\n \r\n Latitude Entered:\r\n {this.props.record.LatitudeEntered}\r\n Longitude Entered:\r\n {this.props.record.LongitudeEntered}\r\n \r\n \r\n Latitude NAD83:\r\n {this.props.record.LatitudeNAD83}\r\n Longitude NAD83:\r\n {this.props.record.LongitudeNAD83}\r\n \r\n \r\n Utm Zone:\r\n {this.props.record.UtmZone}\r\n Utm Easting:\r\n {this.props.record.UtmEasting}\r\n \r\n \r\n Utm Northing:\r\n {this.props.record.UtmNorthing}\r\n Start Time:\r\n {this.props.record.StartTime}\r\n \r\n \r\n Detection:\r\n {this.props.record.DetectionDisplay}\r\n Start Acres:\r\n {this.props.record.StartAcres}\r\n \r\n \r\n Initial Attack Time:\r\n {this.props.record.InitialAttackTime}\r\n Initial Attack Acres:\r\n {this.props.record.InitialAttackAcres}\r\n \r\n \r\n Contained Time:\r\n {this.props.record.ContainedTime}\r\n Contained Acres:\r\n {this.props.record.ContainedAcres}\r\n \r\n \r\n Control Time:\r\n {this.props.record.ControlTime}\r\n Control Acres:\r\n {this.props.record.ControlAcres}\r\n \r\n \r\n Out Date:\r\n {this.props.record.OutDate}\r\n Easting:\r\n {this.props.record.UtmEasting}\r\n \r\n \r\n Topography:\r\n {this.props.record.TopographyDisplay}\r\n Aspect:\r\n {this.props.record.AspectDisplay}\r\n \r\n \r\n Slope:\r\n {this.props.record.SlopeDisplay}\r\n Elevation:\r\n {this.props.record.ElevationDisplay}\r\n \r\n \r\n Station:\r\n {this.props.record.Station}\r\n Fuel Model:\r\n {this.props.record.FbpsFuelModel}\r\n \r\n \r\n Msgc Model:\r\n {this.props.record.MsgcModelDisplay}\r\n Msgc Slope:\r\n {this.props.record.MsgcSlope}\r\n \r\n \r\n Msgc Grass:\r\n {this.props.record.MsgcGrassDisplay}\r\n Msgc Climate:\r\n {this.props.record.MsgcClimateDisplay}\r\n \r\n \r\n Special Area:\r\n {this.props.record.SpecialArea}\r\n Wildland Urban:\r\n {this.props.record.WildlandUrban}\r\n \r\n \r\n Intersect Fuels:\r\n {this.props.record.IntersectFuels}\r\n Add To NFPORS:\r\n {this.props.record.AddToNFPORS}\r\n \r\n \r\n Total Structures:\r\n {this.props.record.TotalStructures}\r\n Residence Structures:\r\n {this.props.record.ResidenceStructures}\r\n \r\n \r\n Other Structures:\r\n {this.props.record.OtherStructures}\r\n Authorized By Name:\r\n {this.props.record.AuthorizedByName}\r\n \r\n \r\n Authorized By Title:\r\n {this.props.record.AuthorizedByTitle}\r\n Authorized Date:\r\n {this.props.record.AuthorizedDate}\r\n \r\n\r\n \r\n Entered By Name:\r\n {this.props.record.EnteredByName}\r\n Entered By Title:\r\n {this.props.record.EnteredByTitle}\r\n \r\n \r\n Entered Date:\r\n {this.props.record.EnteredDate}\r\n Provided By Name:\r\n {this.props.record.ProvidedByName}\r\n \r\n \r\n Provided By Title:\r\n {this.props.record.ProvidedByTitle}\r\n Provided Date:\r\n {this.props.record.ProvidedDate}\r\n \r\n \r\n Trespass General Cause:\r\n {this.props.record.TrespassGeneralCauseDisplay}\r\n Trespass Specific Cause:\r\n {this.props.record.TrespassSpecificCauseDisplay}\r\n \r\n \r\n Trespass Investigated:\r\n {this.props.record.TrespassInvestigated}\r\n \r\n \r\n \r\n\r\n \r\n Statistics 1 Owner\r\n {this.props.record.Statistics1OwnerDisplay}\r\n Statistics 1 Acres\r\n {this.props.record.Statistics1Acres}\r\n \r\n\r\n \r\n Statistics 2 Owner\r\n {this.props.record.Statistics2OwnerDisplay}\r\n Statistics 2 Acres\r\n {this.props.record.Statistics2Acres}\r\n \r\n\r\n \r\n Statistics 3 Owner\r\n {this.props.record.Statistics3OwnerDisplay}\r\n Statistics 3 Acres\r\n {this.props.record.Statistics3Acres}\r\n \r\n\r\n \r\n Statistics 4 Owner\r\n {this.props.record.Statistics4OwnerDisplay}\r\n Statistics 4 Acres\r\n {this.props.record.Statistics4Acres}\r\n \r\n\r\n \r\n Statistics 5 Owner\r\n {this.props.record.Statistics5OwnerDisplay}\r\n Statistics 5 Acres\r\n {this.props.record.Statistics5Acres}\r\n \r\n\r\n \r\n Statistics 6 Owner\r\n {this.props.record.Statistics6OwnerDisplay}\r\n Statistics 6 Acres\r\n {this.props.record.Statistics6Acres}\r\n \r\n\r\n \r\n Statistics 7 Owner\r\n {this.props.record.Statistics7OwnerDisplay}\r\n Statistics 7 Acres\r\n {this.props.record.Statistics7Acres}\r\n \r\n\r\n \r\n Remarks\r\n {this.props.record.Remarks}\r\n \r\n\r\n\r\n \r\n
\r\n
\r\n )\r\n }\r\n}\r\n\r\nexport default RelatedWFMIRecord;\r\n","import React, { Component } from 'react';\r\n\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Table from '@material-ui/core/Table';\r\nimport TableBody from '@material-ui/core/TableBody';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport TableRow from '@material-ui/core/TableRow';\r\nimport moment from 'moment';\r\n\r\n\r\nclass RelatedFireStatRecord extends Component {\r\n\r\n//TODO: Duplicated with WFMI\r\n getDateString = (value) =>\r\n {\r\n return (value) ? moment(new Date(value)).format(\"MM/DD/YYYY h:mm A\") : \"\";\r\n }\r\n\r\n getYesNo = (value) =>\r\n {\r\n return (value && (value === 1 || value === \"1\")) ? \"Yes\" : \"No\";\r\n }\r\n\r\n render()\r\n {\r\n return (\r\n \r\n \r\n \r\n \r\n FireStat ID:\r\n {this.props.record.FireStatID}\r\n Discovery Calendar Year:\r\n {this.props.record.DiscoveryCalendarYear}\r\n \r\n \r\n Fire ID:\r\n {this.props.record.FireID}\r\n Fire Name:\r\n {this.props.record.FireName}\r\n \r\n \r\n Local Fire Number:\r\n {this.props.record.LocalFireNumber}\r\n Complex Name:\r\n {this.props.record.ComplexName}\r\n \r\n \r\n Unique Fire ID:\r\n {this.props.record.UniqueFireID}\r\n Location:\r\n {this.props.record.Location}\r\n \r\n \r\n Region Forest:\r\n {this.props.record.RegionForest}\r\n District:\r\n {this.props.record.District}\r\n \r\n \r\n Fire Number:\r\n {this.props.record.FireNumber}\r\n Unit ID:\r\n {this.props.record.UnitID}\r\n \r\n \r\n Protection Agency:\r\n {this.props.record.ProtectionAgency}\r\n Ownership Origin:\r\n {this.props.record.OwnershipOrigin}\r\n \r\n \r\n State Abbreviation:\r\n {this.props.record.StateAbbreviation}\r\n Fire Class Size:\r\n {this.props.record.FireClassSize}\r\n \r\n \r\n Latitude Decimal Degrees:\r\n {this.props.record.LatitudeDecimalDegrees}\r\n Longitude Decimal Degrees:\r\n {this.props.record.LongitudeDecimalDegrees}\r\n \r\n \r\n Ignition Date:\r\n {this.props.record.IgnitionDate}\r\n Discovery Date:\r\n {this.props.record.DiscoveryDate}\r\n \r\n \r\n Detection Method:\r\n {this.props.record.DetectionMethod}\r\n Discovered By:\r\n {this.props.record.DiscoveredBy}\r\n \r\n \r\n Statistical Fire Cause Description:\r\n {this.props.record.StatisticalFireCauseDescription}\r\n General Fire Cause Description:\r\n {this.props.record.GeneralFireCauseDescription}\r\n \r\n \r\n Specific Fire Cause Description:\r\n {this.props.record.SpecificFireCauseDescription}\r\n Class People Cause Description:\r\n {this.props.record.ClassPeopleCauseDescription}\r\n \r\n \r\n Incident Job Code:\r\n {this.props.record.IncidentJobCode}\r\n Initial Strategy:\r\n {this.props.record.InitialStrategy}\r\n \r\n \r\n In Large Complex:\r\n {this.props.record.InLargeComplex}\r\n Acres Burned in WUI:\r\n {this.props.record.AcresBurnedinWUI}\r\n \r\n \r\n Escaped Fire:\r\n {this.props.record.EscapedFire}\r\n Incident Job Code After Escape:\r\n {this.props.record.IncidentJobCodeAfterEscape}\r\n \r\n \r\n Escape Date Time:\r\n {this.props.record.EscapeDateTime}\r\n Initial Action Date:\r\n {this.props.record.InitialActionDate}\r\n \r\n \r\n Suppression Strategy Attained Date:\r\n {this.props.record.SuppressionStrategyAttainedDate}\r\n Fire Out Date:\r\n {this.props.record.FireOutDate}\r\n \r\n \r\n FS Acres:\r\n {this.props.record.FSAcresAutoTotal}\r\n Non-FS Acres Protected by FS:\r\n {this.props.record.NonFSAcresProtectedbyFSAutoTotal}\r\n \r\n \r\n Non-FS Acres Not Protected by FS:\r\n {this.props.record.NonFSAcresNotProtectedbyFSAutoTotal}\r\n Total Acres Burned:\r\n {this.props.record.TotalAcresBurnedAutoTotal}\r\n \r\n \r\n Acres Burned in WUI:\r\n {this.props.record.AcresBurnedinWUITotal}\r\n Fire Intensity Level:\r\n {this.props.record.FireIntensityLevelDescription}\r\n \r\n \r\n Report Weather Station:\r\n {this.props.record.ReportWeatherStation}\r\n Cover Class:\r\n {this.props.record.CoverClassDescription}\r\n \r\n \r\n Slope Percentage:\r\n {this.props.record.SlopePercentage}\r\n Aspect:\r\n {this.props.record.Aspect}\r\n \r\n \r\n \r\n Ownership Unit:\r\n {this.props.record.OwnershipUnitID}\r\n Protection Unit:\r\n {this.props.record.ProtectionUnitID}\r\n \r\n\r\n \r\n Specific:\r\n {this.props.record.Specific}\r\n Class:\r\n {this.props.record.Class}\r\n \r\n \r\n Elevation Feet:\r\n {this.props.record.ElevationFeet}\r\n Residences Destroyed:\r\n {this.props.record.ResidencesDestroyedAutoTotal}\r\n \r\n \r\n Other Structures Destroyed:\r\n {this.props.record.OtherStructuresDestroyedAutoTotal}\r\n Remarks:\r\n {this.props.record.Remarks}\r\n \r\n\r\n \r\n Submitted By:\r\n {this.props.record.SubmittedBy}\r\n Submitted Date:\r\n {this.props.record.SubmittedDate}\r\n \r\n\r\n \r\n Approved By:\r\n {this.props.record.ApprovedBy}\r\n Approved Date:\r\n {this.props.record.ApprovedDate}\r\n \r\n\r\n \r\n Fuel Type:\r\n {this.props.record.FuelType}\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 RelatedFireStatRecord;\r\n","import React, { Component } from 'react';\r\n\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Table from '@material-ui/core/Table';\r\nimport TableBody from '@material-ui/core/TableBody';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport TableRow from '@material-ui/core/TableRow';\r\nimport moment from 'moment';\r\n\r\nclass RelatedFODRecord extends Component {\r\n\r\n\r\n getDateString = (value) =>\r\n {\r\n return (value) ? moment(new Date(value)).format(\"MM/DD/YYYY h:mm A\") : \"\";\r\n }\r\n\r\n getYesNo = (value) =>\r\n {\r\n return (value && (value === 1 || value === \"1\")) ? \"Yes\" : \"No\";\r\n }\r\n\r\n render()\r\n {\r\n return (\r\n \r\n \r\n \r\n \r\n FOD ID:\r\n {this.props.record.FOD_ID}\r\n FPA ID:\r\n {this.props.record.FPA_ID}\r\n \r\n \r\n Source System Type:\r\n {this.props.record.SOURCE_SYSTEM_TYPE}\r\n Source System:\r\n {this.props.record.SOURCE_SYSTEM}\r\n \r\n \r\n NWCG Reporting Agency:\r\n {this.props.record.NWCG_REPORTING_AGENCY}\r\n NWCG Reporting Unit ID:\r\n {this.props.record.NWCG_REPORTING_UNIT_ID}\r\n \r\n \r\n NWCG Reporting Unit Name:\r\n {this.props.record.NWCG_REPORTING_UNIT_NAME}\r\n Source Reporting Unit:\r\n {this.props.record.SOURCE_REPORTING_UNIT}\r\n \r\n \r\n Source Reporting Unit Name:\r\n {this.props.record.SOURCE_REPORTING_UNIT_NAME}\r\n Local Fire Report ID:\r\n {this.props.record.LOCAL_FIRE_REPORT_ID}\r\n \r\n \r\n Local Incident ID:\r\n {this.props.record.LOCAL_INCIDENT_ID}\r\n Fire Code:\r\n {this.props.record.FIRE_CODE}\r\n \r\n \r\n Fire Name:\r\n {this.props.record.FIRE_NAME}\r\n ICS209 Join ID:\r\n {this.props.record.ICS_209_PLUS_INCIDENT_JOIN_ID}\r\n \r\n \r\n ICS209 Complex Join ID:\r\n {this.props.record.ICS_209_PLUS_COMPLEX_JOIN_ID}\r\n MTBS ID:\r\n {this.props.record.MTBS_ID}\r\n \r\n \r\n MTBS Fire Name:\r\n {this.props.record.MTBS_FIRE_NAME}\r\n Complex Name:\r\n {this.props.record.COMPLEX_NAME}\r\n \r\n \r\n Fire Year:\r\n {this.props.record.FIRE_YEAR}\r\n Discovery Date:\r\n {this.props.record.DISCOVERY_DATE}\r\n \r\n \r\n Discovery Day of Year:\r\n {this.props.record.DISCOVERY_DOY}\r\n Discovery Time:\r\n {this.props.record.DISCOVERY_TIME}\r\n \r\n \r\n NWGC Cause Classification:\r\n {this.props.record.NWCG_CAUSE_CLASSIFICATION}\r\n NWGC General Cause:\r\n {this.props.record.NWCG_GENERAL_CAUSE}\r\n \r\n \r\n Age Category:\r\n {this.props.record.NWCG_CAUSE_AGE_CATEGORY}\r\n Containment Date:\r\n {this.props.record.CONT_DATE}\r\n \r\n \r\n Containment Day of Year:\r\n {this.props.record.CONT_DOY}\r\n Containment Time:\r\n {this.props.record.CONT_TIME}\r\n \r\n \r\n Fire Size:\r\n {this.props.record.FIRE_SIZE}\r\n Fire Size Class:\r\n {this.props.record.FIRE_SIZE_CLASS}\r\n \r\n \r\n Latitude:\r\n {this.props.record.LATITUDE}\r\n Longitude:\r\n {this.props.record.LONGITUDE}\r\n \r\n \r\n Owner Description:\r\n {this.props.record.OWNER_DESCR}\r\n State:\r\n {this.props.record.STATE}\r\n \r\n \r\n County:\r\n {this.props.record.COUNTY}\r\n FIPS Code:\r\n {this.props.record.FIPS_CODE}\r\n \r\n \r\n
\r\n
\r\n )\r\n }\r\n}\r\n\r\nexport default RelatedFODRecord;\r\n","import React, { Component } from 'react';\r\n\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Table from '@material-ui/core/Table';\r\nimport TableBody from '@material-ui/core/TableBody';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport TableRow from '@material-ui/core/TableRow';\r\nimport IrwinIdTextField from '../../incidentDetails/components/IrwinIdTextField';\r\nimport Tooltip from '@mui/material/Tooltip';\r\nimport HelpIcon from '@mui/icons-material/Help';\r\nimport moment from 'moment';\r\n\r\nclass RelatedCertificationRecord extends Component {\r\n\r\n //TODO: Duplicated\r\n getDateString = (value) =>\r\n {\r\n return (value) ? moment(new Date(value)).format(\"MM/DD/YYYY h:mm A\") : \"\";\r\n }\r\n\r\n getYesNo = (value) =>\r\n {\r\n return (value && (value === 1 || value === \"1\")) ? \"Yes\" : \"No\";\r\n }\r\n\r\n getStyle = (attributeName) =>\r\n {\r\n const outlineStyle = {outlineColor:'red', outlineStyle: 'dotted'};\r\n const incidentId = this.props.record.IncidentID;\r\n\r\n const matchingItems = this.props.AttributeDeltas[incidentId].filter( function(item){return (item.AttributeName === attributeName);} );\r\n return (matchingItems && matchingItems.length > 0) ? outlineStyle : null;\r\n }\r\n\r\n getElement = (attributeName, attributeTitle) =>\r\n {\r\n //const incidentId = this.props.record.IncidentID;\r\n //const matchingItems = this.props.AttributeDeltas[incidentId].filter( function(item){return (item.AttributeName === attributeName);} );\r\n //const hasDiff = (matchingItems && matchingItems.length > 0);\r\n \r\n /*return (hasDiff) ? (\r\n \r\n \r\n {attributeTitle}\r\n \r\n \r\n ) : attributeTitle;\r\n */\r\n return attributeTitle;\r\n }\r\n\r\n render()\r\n {\r\n return (\r\n \r\n \r\n \r\n \r\n Previous Certification\r\n \r\n {this.getElement('ABCDMisc', 'ABCD Misc:')}\r\n {this.props.record.ABCDMisc}\r\n \r\n \r\n {this.getElement('ADSPermissionState', 'ADS Permission State:')}\r\n {this.props.record.ADSPermissionState}\r\n {this.getElement('CalculatedAcres', 'Calculated Acres:')}\r\n {this.props.record.CalculatedAcres}\r\n \r\n \r\n {this.getElement('ContainmentDateTime', 'Containment Date:')}\r\n {this.getDateString(this.props.record.ContainmentDateTime)}\r\n {this.getElement('ControlDateTime', 'Control Date Time:')}\r\n {this.getDateString(this.props.record.ControlDateTime)}\r\n \r\n \r\n {this.getElement('CreatedBySystem', 'Created By System:')}\r\n {this.props.record.CreatedBySystem}\r\n {this.getElement('CreatedOnDateTime', 'Created On Date Time:')}\r\n {this.getDateString(this.props.record.CreatedOnDateTime)}\r\n \r\n \r\n {this.getElement('IncidentSize', 'Incident Size:')}\r\n {this.props.record.IncidentSize}\r\n {this.getElement('DispatchCenterID', 'Dispatch Center ID:')}\r\n {this.props.record.DispatchCenterID}\r\n \r\n \r\n {this.getElement('EstimatedContainmentDate', 'Estimated Containment Date:')}\r\n {this.getDateString(this.props.record.EstimatedContainmentDate)}\r\n {this.getElement('Fatalities', 'Fatalities:')}\r\n {this.props.record.Fatalities}\r\n \r\n \r\n {this.getElement('FinalFireReportApprovedBy', 'Final Fire Report Approved By:')}\r\n {this.props.record.FinalFireReportApprovedBy}\r\n {this.getElement('FinalFireReportApprovedByTitle', 'Final Fire Report Approved By Title:')}\r\n {this.props.record.FinalFireReportApprovedByTitle}\r\n \r\n \r\n {this.getElement('FinalFireReportApprovedByUnit', 'Final Fire Report Approved By Unit:')}\r\n {this.props.record.FinalFireReportApprovedByUnit}\r\n {this.getElement('FinalFireReportApprovedDate', 'Final Fire Report Approved Date:')}\r\n {this.getDateString(this.props.record.FinalFireReportApprovedDate)}\r\n \r\n \r\n {this.getElement('FinalFireReportNarrative', 'Final Fire Report Narrative:')}\r\n {this.props.record.FinalFireReportNarrative}\r\n {this.getElement('FinalStrategyAttainedDateTime', 'Final Strategy Attained Date:')}\r\n {this.getDateString(this.props.record.FinalStrategyAttainedDateTime)}\r\n \r\n \r\n {this.getElement('FireCause', 'Fire Cause:')}\r\n {this.props.record.FireCause}\r\n {this.getElement('FireCauseGeneral', 'Fire Cause General:')}\r\n {this.props.record.FireCauseGeneral}\r\n \r\n \r\n {this.getElement('FireCauseSpecific', 'Fire Cause Specific:')}\r\n {this.props.record.FireCauseSpecific}\r\n {this.getElement('FireCode', 'FireCode:')}\r\n {this.props.record.FireCode}\r\n \r\n \r\n {this.getElement('FireDepartmentID', 'Fire Department ID:')}\r\n {this.props.record.FireDepartmentID}\r\n {this.getElement('FireDiscoveryDateTime', 'Fire Discovery Date:')}\r\n {this.getDateString(this.props.record.FireDiscoveryDateTime)}\r\n \r\n \r\n {this.getElement('FireIgnitionDateTime', 'Fire Ignition Date:')}\r\n {this.getDateString(this.props.record.FireIgnitionDateTime)}\r\n {this.getElement('FireMgmtComplexity', 'Fire Mgmt Complexity:')}\r\n {this.props.record.FireMgmtComplexity}\r\n \r\n \r\n {this.getElement('FireOutDateTime', 'Fire Out Date:')}\r\n {this.getDateString(this.props.record.FireOutDateTime)}\r\n {this.getElement('FSJobCode', 'FS Job Code:')}\r\n {this.props.record.FSJobCode}\r\n \r\n \r\n {this.getElement('FSOverrideCode', 'FS Override Code:')}\r\n {this.props.record.FSOverrideCode}\r\n {this.getElement('GACC', 'GACC:')}\r\n {this.props.record.GACC}\r\n \r\n \r\n {this.getElement('HasFatalities', 'Has Fatalities:')}\r\n {this.getYesNo(this.props.record.HasFatalities)}\r\n {this.getElement('HasInjuries', 'Has Injuries:')}\r\n {this.getYesNo(this.props.record.HasInjuries)}\r\n \r\n \r\n {this.getElement('IncidentManagementOrganization', 'Incident Management Organization:')}\r\n {this.props.record.IncidentManagementOrganization}\r\n {this.getElement('IncidentName', 'Incident Name:')}\r\n {this.props.record.IncidentName}\r\n \r\n \r\n {this.getElement('IncidentTypeCategory', 'Incident Type Category:')}\r\n {this.props.record.IncidentTypeCategory}\r\n {this.getElement('IncidentTypeKind', 'Incident Type Kind:')}\r\n {this.props.record.IncidentTypeKind}\r\n \r\n \r\n {this.getElement('IncidentStatus', 'Incident Status:')}\r\n {this.props.record.IncidentStatus}\r\n {this.getElement('INFORMUserName', 'INFORM User Name:')}\r\n {this.props.record.INFORMUserName}\r\n \r\n \r\n {this.getElement('InitialFireStrategy', 'Initial Fire Strategy:')}\r\n {this.props.record.InitialFireStrategy}\r\n {this.getElement('InitialLatitude', 'Initial Latitude:')}\r\n {this.props.record.InitialLatitude}\r\n \r\n \r\n {this.getElement('InitialLongitude', 'Initial Longitude:')}\r\n {this.props.record.InitialLongitude}\r\n {this.getElement('InitialResponseDateTime', 'Initial Response Date:')}\r\n {this.getDateString(this.props.record.InitialResponseDateTime)}\r\n \r\n \r\n {this.getElement('Injuries', 'Injuries:')}\r\n {this.props.record.Injuries}\r\n {this.getElement('InNFPORS', 'In NFPORS?')}\r\n {this.getYesNo(this.props.record.InNFPORS)}\r\n \r\n \r\n {this.getElement('InFuelTreatment', 'In Fuel Treatment?')}\r\n {this.getYesNo(this.props.record.InFuelTreatment)}\r\n {this.getElement('IsFireCauseInvestigated', 'Is Fire Cause Investigated?')}\r\n {this.getYesNo(this.props.record.IsFireCauseInvestigated)}\r\n \r\n \r\n {this.getElement('IsFireCodeRequested', 'Is Fire Code Requested?')}\r\n {this.getYesNo(this.props.record.IsFireCodeRequested)}\r\n {this.getElement('IsFSAssisted', 'Is FS Assisted?')}\r\n {this.getYesNo(this.props.record.IsFSAssisted)}\r\n \r\n \r\n {this.getElement('IsQuarantined', 'Is Quarantined?')}\r\n {this.getYesNo(this.props.record.IsQuarantined)}\r\n {this.getElement('IsTrespass', 'Is Trespass?')}\r\n {this.getYesNo(this.props.record.IsTrespass)}\r\n \r\n \r\n {this.getElement('IsValid', 'Is Valid?')}\r\n {this.getYesNo(this.props.record.IsValid)}\r\n {this.getElement('LocalIncidentIdentifier', 'Local Incident Identifier:')}\r\n {this.props.record.LocalIncidentIdentifier}\r\n \r\n \r\n {this.getElement('ModifiedBySystem', 'Modified By System:')}\r\n {this.props.record.ModifiedBySystem}\r\n {this.getElement('ModifiedOnDateTime', 'Modified On Date:')}\r\n {this.getDateString(this.props.record.ModifiedOnDateTime)}\r\n \r\n \r\n {this.getElement('OtherStructuresDestroyed', 'Other Structures Destroyed:')}\r\n {this.props.record.OtherStructuresDestroyed}\r\n {this.getElement('OtherStructuresThreatened', 'Other Structures Threatened:')}\r\n {this.props.record.OtherStructuresThreatened}\r\n \r\n \r\n {this.getElement('POOCity', 'City:')}\r\n {this.props.record.POOCity}\r\n {this.getElement('POOCounty', 'County:')}\r\n {this.props.record.POOCounty}\r\n \r\n \r\n \r\n {this.getElement('POODispatchCenterID', 'Dispatch Center ID:')}\r\n {this.props.record.POODispatchCenterID}\r\n {this.getElement('POOFips', 'Fips:')}\r\n {this.props.record.POOFips}\r\n\r\n \r\n \r\n {this.getElement('POOJurisdictionalAgency', 'Jurisdictional Agency:')}\r\n {this.props.record.POOJurisdictionalAgency}\r\n {this.getElement('POOJurisdictionalUnit', 'Jurisdictional Unit:')}\r\n {this.props.record.POOJurisdictionalUnit}\r\n\r\n \r\n \r\n {this.getElement('POOLandownerCategory', 'Landowner Category:')}\r\n {this.props.record.POOLandownerCategory}\r\n {this.getElement('POOLandownerKind', 'Landowner Kind:')}\r\n {this.props.record.POOLandownerKind}\r\n\r\n \r\n \r\n {this.getElement('POOProtectingAgency', 'Protecting Agency:')}\r\n {this.props.record.POOProtectingAgency}\r\n {this.getElement('POOProtectingUnit', 'Protecting Unit:')}\r\n {this.props.record.POOProtectingUnit}\r\n\r\n \r\n \r\n {this.getElement('POOState', 'State:')}\r\n {this.props.record.POOState}\r\n {this.getElement('PredominantFuelGroup', 'Fuel Group:')}\r\n {this.props.record.PredominantFuelGroup}\r\n\r\n \r\n \r\n {this.getElement('PredominantFuelModel', 'Fuel Model:')}\r\n {this.props.record.PredominantFuelModel}\r\n {this.getElement('ResidencesDestroyed', 'Residences Destroyed:')}\r\n {this.props.record.ResidencesDestroyed}\r\n\r\n \r\n \r\n {this.getElement('ResidencesThreatened', 'Residences Threatened:')}\r\n {this.props.record.ResidencesThreatened}\r\n {this.getElement('UniqueFireIdentifier', 'Unique Fire Identifier:')}\r\n {this.props.record.UniqueFireIdentifier}\r\n\r\n \r\n \r\n
\r\n
\r\n )\r\n }\r\n}\r\n\r\nexport default RelatedCertificationRecord;\r\n","import React, { Component } from 'react';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport Dialog from 'material-ui/Dialog';\r\nimport Button from '@material-ui/core/Button';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport MobileStepper from '@material-ui/core/MobileStepper';\r\nimport KeyboardArrowLeft from '@material-ui/icons/KeyboardArrowLeft';\r\nimport KeyboardArrowRight from '@material-ui/icons/KeyboardArrowRight';\r\nimport RelatedIrwinRecord from './RelatedIrwinRecord';\r\nimport RelatedBulkUploadRecord from './RelatedBulkUploadRecord';\r\nimport RelatedWFMIRecord from './RelatedWFMIRecord';\r\nimport RelatedFireStatRecord from './RelatedFireStatRecord';\r\nimport RelatedFODRecord from './RelatedFODRecord';\r\nimport RelatedCertificationRecord from './RelatedCertificationRecord';\r\n\r\nimport theme from '../../../muiTheme';\r\n\r\nconst styles = {\r\n errorDialogContent: {\r\n width: \"500px\"\r\n },\r\n errorDialogTitle: {\r\n color: theme.palette.accent1Color\r\n }\r\n}\r\n\r\nclass RelatedRecordsDialog extends Component {\r\n\r\n constructor (props)\r\n {\r\n super(props);\r\n this.state =\r\n {\r\n currentIndex: 0,\r\n hasData: false,\r\n incidentCount: 0,\r\n relatedRecords:[]\r\n };\r\n\r\n }\r\n\r\n handleBack = () =>\r\n {\r\n const previousVal = this.state.currentIndex - 1;\r\n this.setState({\r\n currentIndex: previousVal\r\n });\r\n }\r\n\r\n handleNext = () =>\r\n {\r\n const nextVal = this.state.currentIndex + 1;\r\n this.setState({\r\n currentIndex: nextVal\r\n });\r\n }\r\n getDisplayContent = () =>\r\n {\r\n const currentRecord = this.state.relatedRecords[this.state.currentIndex];\r\n if (currentRecord.hasOwnProperty(\"IrwinID\") && !currentRecord.hasOwnProperty(\"FireStatID\")) //TODO: Get rid of hardcodes\r\n { \r\n return this.getIrwinPanel(currentRecord, this.state.irwinDeltas);\r\n }\r\n\r\n if (currentRecord.hasOwnProperty(\"CertificationRecordID\")) //TODO: Get rid of hardcodes\r\n { \r\n return this.getCertificationPanel(currentRecord);\r\n }\r\n\r\n if (currentRecord.hasOwnProperty(\"WFMIID\")) //TODO: Get rid of hardcodes\r\n {\r\n return this.getWFMIPanel(currentRecord);\r\n }\r\n\r\n if (currentRecord.hasOwnProperty(\"BulkUploadID\")) //TODO: Get rid of hardcodes\r\n {\r\n return this.getBulkUploadPanel(currentRecord);\r\n }\r\n\r\n if (currentRecord.hasOwnProperty(\"FireStatID\")) //TODO: Get rid of hardcodes\r\n {\r\n return this.getFireStatPanel(currentRecord);\r\n }\r\n\r\n \r\n if (currentRecord.hasOwnProperty(\"FODID\")) //TODO: Get rid of hardcodes\r\n {\r\n return this.getFODPanel(currentRecord);\r\n }\r\n }\r\n\r\n getIrwinPanel = (dataRecord, attributeDeltas) =>\r\n {\r\n return ()\r\n }\r\n\r\n getCertificationPanel = (dataRecord, attributeDeltas) =>\r\n {\r\n return ()\r\n }\r\n\r\n getWFMIPanel = (dataRecord) =>\r\n {\r\n return ()\r\n }\r\n\r\n getBulkUploadPanel = (dataRecord) =>\r\n {\r\n return ()\r\n }\r\n\r\n getFireStatPanel = (dataRecord) =>\r\n {\r\n return ()\r\n }\r\n\r\n getFODPanel = (dataRecord) =>\r\n {\r\n return ()\r\n }\r\n\r\n componentDidUpdate(prevProps)\r\n {\r\n const hasData = (this.props.relatedRecords);\r\n\r\n if (hasData !== this.state.hasData)\r\n {\r\n this.setState({\r\n hasData: hasData\r\n });\r\n }\r\n\r\n if (hasData && this.props.relatedRecords !== prevProps.relatedRecords)\r\n {\r\n const numFireStatIncidents = this.props.relatedRecords.FireStatIncidents.length;\r\n const numIrwinIncidents = this.props.relatedRecords.IrwinIncidents.length;\r\n const numBulkUploadIncidents = this.props.relatedRecords.BulkUploadIncidents.length;\r\n const numWFMIIncidents = this.props.relatedRecords.WFMIIncidents.length;\r\n const numFODIncidents = this.props.relatedRecords.FODIncidents.length;\r\n const numCertificationRecords = this.props.relatedRecords.CertificationRecords.length;\r\n\r\n const totalIncidentCount = (numIrwinIncidents + numBulkUploadIncidents + numWFMIIncidents + numFireStatIncidents + numFODIncidents + numCertificationRecords);\r\n\r\n let recordsArray = [];\r\n for (var i = 0; i < this.props.relatedRecords.IrwinIncidents.length; i++)\r\n {\r\n recordsArray.push(this.props.relatedRecords.IrwinIncidents[i]);\r\n }\r\n\r\n for (var j = 0; j < this.props.relatedRecords.BulkUploadIncidents.length; j++)\r\n {\r\n recordsArray.push(this.props.relatedRecords.BulkUploadIncidents[j]);\r\n }\r\n\r\n for (var k = 0; k < this.props.relatedRecords.WFMIIncidents.length; k++)\r\n {\r\n recordsArray.push(this.props.relatedRecords.WFMIIncidents[k]);\r\n }\r\n\r\n for (var l = 0; l < this.props.relatedRecords.FireStatIncidents.length; l++)\r\n {\r\n recordsArray.push(this.props.relatedRecords.FireStatIncidents[l]);\r\n }\r\n\r\n for (var m = 0; m < this.props.relatedRecords.FODIncidents.length; m++)\r\n {\r\n recordsArray.push(this.props.relatedRecords.FODIncidents[m]);\r\n }\r\n\r\n for (var s = 0; s < this.props.relatedRecords.CertificationRecords.length; s++)\r\n {\r\n recordsArray.push(this.props.relatedRecords.CertificationRecords[s]);\r\n }\r\n\r\n this.setState({\r\n incidentCount: totalIncidentCount,\r\n relatedRecords: recordsArray,\r\n irwinDeltas: this.props.relatedRecords.IrwinDeltas\r\n });\r\n }\r\n }\r\n\r\n render()\r\n {\r\n let panelContent = (this.state.hasData) ? ( this.getDisplayContent() ) : (\"\");\r\n\r\n let stepperContent = (this.state.hasData) ?\r\n (\r\n \r\n Next\r\n {theme.direction === 'rtl' ? : }\r\n \r\n }\r\n backButton={\r\n \r\n }\r\n />\r\n )\r\n :\r\n (\r\n \r\n );\r\n\r\n return (\r\n \r\n
\r\n {panelContent}\r\n {stepperContent}\r\n
\r\n \r\n \r\n \r\n \r\n )\r\n\r\n }\r\n}\r\n\r\nexport default RelatedRecordsDialog;\r\n","// Framework and third-party non-ui\r\nimport React, { Component } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { bindActionCreators } from 'redux';\r\n\r\n// Redux operations and local helpers/utils/modules\r\nimport { incidentOperations } from '../../redux/incident';\r\nimport { getIncidentStatus } from '../../utils/incidentHelper';\r\nimport enums from '../../defaults/Enums.json';\r\nimport { history } from '../../index';\r\n\r\n// App components\r\nimport ReportHeader from './ReportHeader';\r\nimport ReportInfoSection from './ReportInfoSection';\r\nimport ReportMapSection from './ReportMapSection';\r\nimport RelatedRecordsDialog from '../../components/incidentDetails/relatedRecords/RelatedRecordsDialog';\r\n\r\n// Third-party components (buttons, icons, etc.)\r\n\r\n// JSON\r\n\r\n// CSS\r\nimport './Report.css';\r\n\r\nclass Report extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state =\r\n {\r\n certifierInfo: null,\r\n showingRelatedRecordsDialog: false\r\n };\r\n\r\n this.getCertifierFromIncident();\r\n this.getRelatedRecordIdentifiersFromIncident();\r\n }\r\n\r\n getRelatedRecordIdentifiersFromIncident = () => {\r\n if (this.props.selectedIncident.incident !== null) {\r\n\r\n window.api.getRelatedRecords(this.props.selectedIncident.incident.attributes.FORID).then(resp =>\r\n {\r\n this.setState({\r\n relatedRecords: resp\r\n });\r\n }); \r\n }\r\n }\r\n\r\n getCertifierFromIncident = () => {\r\n if (this.props.selectedIncident.incident !== null) {\r\n let statusVal = getIncidentStatus(this.props.selectedIncident.incident);\r\n if (statusVal === enums.incidentStatus.certified) {\r\n const lastUpdateUser = this.props.selectedIncident.incident.attributes[\"INFORMUserName\"];\r\n if (lastUpdateUser !== null) {\r\n window.api.getUserGroups(lastUpdateUser).then(response => {\r\n this.setState({\r\n certifierInfo: response\r\n });\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n showRelatedRecordsDialog = () => {\r\n debugger;\r\n this.setState({\r\n showingRelatedRecordsDialog: true\r\n });\r\n }\r\n\r\n hideRelatedRecords = () => {\r\n this.setState({\r\n showingRelatedRecordsDialog: false\r\n });\r\n }\r\n\r\n componentDidMount() {\r\n const routeIncidentId = this.props.match.params.incidentId || null;\r\n\r\n if (!this.props.selectedIncident || !this.props.selectedIncident.incident) {\r\n if (routeIncidentId) {\r\n history.push(`/incidents/${routeIncidentId}`)\r\n }\r\n else {\r\n history.push('/incidents')\r\n }\r\n }\r\n }\r\n\r\n\r\n render() {\r\n if (!this.props.selectedIncident || !this.props.selectedIncident.incident) {\r\n return (
No Incident Found
);\r\n }\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\nReport.propTypes = {};\r\n\r\nReport.defaultProps = {};\r\n\r\nconst mapStateToProps = state => ({\r\n appConfig: state.config,\r\n selectedIncident: state.incident,\r\n screenshot: state.report.screenshot,\r\n certifierInfo: state.certifierInfo\r\n})\r\n\r\nconst mapDispatchToProps = function (dispatch) {\r\n return bindActionCreators({\r\n ...incidentOperations\r\n }, dispatch);\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Report)\r\n","import * as esriLoader from 'esri-loader';\r\n\r\nexport function bootstrapJSAPI(portalUrl, jsapiUrl, use3D) {\r\n return new Promise((resolve, reject) => {\r\n if (esriLoader.isLoaded()) {\r\n resolve();\r\n return;\r\n }\r\n const basename = process.env.PUBLIC_URL;\r\n const options = {\r\n url: jsapiUrl,\r\n dojoConfig: {\r\n has: {\r\n \"graphite-js-3\": false,\r\n \"esri-featurelayer-webgl\": (supportsWebGL() && !use3D) ? 1 : 0\r\n },\r\n async: true,\r\n packages: [{\r\n // location: 'https://arcgis.github.io/graphite-js/src',\r\n location: basename + '/graphite',\r\n name: 'graphite'\r\n }]\r\n }\r\n };\r\n\r\n esriLoader.loadScript(options)\r\n .then(() => {\r\n initApi(portalUrl).then(\r\n success => resolve(),\r\n error => reject(error)\r\n );\r\n })\r\n .catch(err => {\r\n reject(err);\r\n });\r\n\r\n });\r\n}\r\n\r\nexport function createView(node, basemapId, use3D, viewOptions) {\r\n return new Promise((resolve, reject) => {\r\n if (!esriLoader.isLoaded()) {\r\n reject('JSAPI is not yet loaded');\r\n return;\r\n }\r\n\r\n initView(node, basemapId, use3D, viewOptions).then(\r\n response => {\r\n postInitView(response.view);\r\n resolve(response);\r\n },\r\n error => {\r\n reject(error);\r\n }\r\n );\r\n\r\n });\r\n}\r\n\r\nexport function createSearch(view, node, searchOptions) {\r\n return new Promise((resolve, reject) => {\r\n esriLoader.loadModules(['esri/widgets/Search'])\r\n .then(([Search]) => {\r\n let options = Object.assign({}, {\r\n view: view,\r\n container: document.createElement(\"searchDiv\"),\r\n includeDefaultSources: false\r\n }, searchOptions);\r\n\r\n let search = new Search(options);\r\n view.ui.add(search, {\r\n position: \"top-right\"\r\n });\r\n \r\n view.ui.add(\"measurementTopbar\", \"top-right\");\r\n\r\n resolve(search);\r\n });\r\n });\r\n}\r\n\r\nexport function createLegend(view, originLayer, viirsLayer) {\r\n return new Promise((resolve, reject) => {\r\n esriLoader.loadModules(['esri/widgets/Legend', 'esri/widgets/Expand','esri/widgets/ScaleBar'])\r\n .then(([Legend, Expand, ScaleBar]) => {\r\n\r\n let incidentsLegend = new Legend({\r\n container: document.createElement(\"div\"),\r\n view: view,\r\n layerInfos: [{\r\n layer: originLayer,\r\n title: \"Incidents\"\r\n },\r\n {\r\n layer: viirsLayer,\r\n title: \"VIIRS\"\r\n }]\r\n });\r\n\r\n var scaleBar = new ScaleBar({\r\n view: view,\r\n unit: \"dual\" // The scale bar displays both metric and non-metric units.\r\n });\r\n\r\n // Add the widget to the bottom left corner of the view\r\n view.ui.add(scaleBar, {\r\n position: \"bottom-right\"\r\n });\r\n\r\n const legendExpand = new Expand({\r\n expandIconClass: \"esri-icon-layer-list\", // see https://developers.arcgis.com/javascript/latest/guide/esri-icon-font/\r\n expandTooltip: \"Show Legend\",\r\n view: view,\r\n content: incidentsLegend.domNode\r\n });\r\n view.ui.add(legendExpand, \"bottom-left\");\r\n\r\n incidentsLegend.style = \"card\";\r\n incidentsLegend.layout = \"side-by-side\";\r\n resolve(incidentsLegend);\r\n });\r\n });\r\n}\r\n\r\nexport function createLayerList(view, portalItemIds) {\r\n return new Promise((resolve, reject) => {\r\n esriLoader.loadModules(['esri/widgets/LayerList', 'esri/widgets/Expand'])\r\n .then(([LayerList, Expand]) => {\r\n\r\n let layerList = new LayerList({\r\n container: document.createElement(\"div\"),\r\n view: view\r\n /*,\r\n listItemCreatedFunction: function (event) {\r\n const items = layerList.operationalItems.filter(item =>\r\n {\r\n //TODO: Fix titles\r\n if (item.layer.title === \"GACC\" || item.layer.title === \"National Dispatch Centers\" || item.layer.title === \"Forest Service Topo\" || item.layer.title === \"States\" || item.layer.title === \"Counties\" || item.layer.title === \"VIIRS\" || item.layer.title === \"Certified Perimeters\") //TODO: Fix\r\n {\r\n return true;\r\n }\r\n\r\n if (item.layer.portalItem)\r\n {\r\n let isJurisdictional = (item.layer.title === consts.layerTitles.jurisdictionalUnitsLayer);\r\n let isSupportLayer = portalItemIds.includes(item.layer.portalItem.id);\r\n let isSinglePerimeterLayer = (item.layer.title === consts.layerTitles.perimetersLayer);\r\n let isCertifiedPerimeterLayer = (item.layer.title === consts.layerTitles.finalPerimetersLayer);\r\n\r\n return (isJurisdictional || isCertifiedPerimeterLayer || (isSupportLayer && !isSinglePerimeterLayer));\r\n }\r\n else\r\n {\r\n return false;\r\n }\r\n });\r\n layerList.operationalItems = items;\r\n } */\r\n });\r\n const layerListExpand = new Expand({\r\n expandIconClass: \"esri-icon-layers\", // see https://developers.arcgis.com/javascript/latest/guide/esri-icon-font/\r\n expandTooltip: \"Show Layer List\",\r\n view: view,\r\n content: layerList.domNode\r\n });\r\n\r\n view.ui.add(layerListExpand, \"top-left\");\r\n\r\n resolve(layerList);\r\n });\r\n });\r\n}\r\n\r\nfunction initApi(portalUrl) {\r\n return new Promise((resolve, reject) => {\r\n esriLoader.loadModules(['esri/identity/IdentityManager', 'esri/config'])\r\n .then(([IdentityManager, esriConfig]) => {\r\n //esriConfig.request.corsEnabledServers.push(\"nifc.maps.arcgis.com\");\r\n resolve();\r\n });\r\n\r\n });\r\n}\r\n\r\nfunction initView(node, basemapId, use3D, viewOptions) {\r\n return new Promise((resolve, reject) => {\r\n esriLoader.loadModules([\r\n 'esri/Basemap',\r\n 'esri/Map',\r\n 'esri/views/SceneView',\r\n 'esri/views/MapView',\r\n 'dojo/dom-construct'\r\n ])\r\n .then(([Basemap, Map, SceneView, MapView, domConstruct]) => {\r\n const basemap = (!basemapId) ? 'topo' : new Basemap({\r\n portalItem: {\r\n id: basemapId\r\n }\r\n });\r\n const map = new Map({\r\n basemap: basemap\r\n // ground: 'world-elevation'\r\n });\r\n\r\n const viewConfig = Object.assign({}, {\r\n map: map,\r\n container: node\r\n },\r\n viewOptions\r\n );\r\n\r\n if (use3D && supportsWebGL()) {\r\n const sceneView = new SceneView(viewConfig);\r\n sceneView.when(\r\n response => {\r\n resolve({\r\n view: response\r\n });\r\n },\r\n //webgl check is not bullet proof. If failure on 3D go with 2D\r\n error => {\r\n domConstruct.empty(node);\r\n let view = new MapView(viewConfig);\r\n\r\n view.when(\r\n response => {\r\n resolve({\r\n view: response\r\n });\r\n },\r\n error => {\r\n reject(error)\r\n }\r\n );\r\n }\r\n );\r\n } else {\r\n const view = new MapView(viewConfig);\r\n view.when(\r\n response => {\r\n resolve({\r\n view: response\r\n });\r\n },\r\n error => {\r\n reject(error)\r\n }\r\n );\r\n }\r\n\r\n });\r\n });\r\n}\r\n\r\nfunction postInitView(view) {\r\n esriLoader.loadModules(['esri/widgets/BasemapGallery', 'esri/widgets/Expand', 'esri/Basemap', 'esri/widgets/BasemapGallery/support/LocalBasemapsSource'])\r\n .then(([BasemapGallery, Expand, Basemap, LocalBasemapsSource]) => \r\n {\r\n if (view.type === '2d' && supportsWebGL()) \r\n {\r\n view.map.basemap = 'topo-vector'\r\n }\r\n view.ui.remove(\"navigation-toggle\");\r\n\r\n\r\n const basemapGallery = new BasemapGallery({\r\n view: view,\r\n container: document.getElementById(\"basemapGalleryDiv\"),\r\n source: new LocalBasemapsSource({\r\n basemaps: [\r\n new Basemap({\r\n portalItem: {\r\n id: \"42e152344ffb46f28ba49d7f4d0b91ab\"\r\n },\r\n title: \"USA Topo Maps\"\r\n }), \r\n Basemap.fromId(\"topo-vector\"),\r\n Basemap.fromId(\"satellite\")\r\n // create a basemap from a well known id\r\n ]\r\n })\r\n });\r\n\r\n const bgExpand = new Expand({\r\n view: view,\r\n content: basemapGallery\r\n });\r\n\r\n view.ui.add(bgExpand, 'bottom-right');\r\n });\r\n}\r\n\r\n\r\n\r\nfunction supportsWebGL() {\r\n // Create canvas element. The canvas is not added to the\r\n // document itself, so it is never displayed in the\r\n // browser window.\r\n var canvas = document.createElement(\"canvas\");\r\n // Get WebGLRenderingContext from canvas element.\r\n var gl = canvas.getContext(\"webgl\") ||\r\n canvas.getContext(\"experimental-webgl\");\r\n // Report the result.\r\n if (gl && gl instanceof WebGLRenderingContext) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n}\r\n","import { loadModules } from 'esri-loader';\r\nimport debounce from 'lodash/debounce';\r\nimport moment from 'moment';\r\nimport originFields from '../../defaults/PointOfOriginFields.json'\r\nimport uncertifiedPerimeterFields from '../../defaults/UncertifiedPerimeterFields.json'\r\nimport { getSQLDate, getSQLDateEndOfDay } from '../../utils/incidentHelper';\r\nimport consts from '../../defaults/Enums.json'\r\nimport symbols from '../../defaults/Symbols.json'\r\nimport { createLegend } from '../../utils/esriLoader';\r\nimport { getAcresFieldName } from '../../utils/incidentHelper';\r\nimport Graphic from \"@arcgis/core/Graphic.js\";\r\n\r\nexport default class LayerManager {\r\n\r\n constructor(view, config, search, isReadOnly) {\r\n\r\n //TODO: Resolve this.capabilityRequestIrwinIds = [];\r\n //TODO: Resolve this.perimeterFilterIrwinIds = [];\r\n this.shouldFilterOnPerimeters = false;\r\n this.perimeterMapMethod = null;\r\n this.perimeterFeatureStatus = null;\r\n this.perimeterFeatureAccess = null;\r\n this.capabilityRequestOption = null;\r\n this.spatialFilterPolygon = null;\r\n this.maxCountForIncidents = 1000;\r\n this.searchWidget = search;\r\n\r\n return new Promise((resolve, reject) => {\r\n this.view = view;\r\n this.map = view.map;\r\n this.config = config;\r\n this.isReadOnly = isReadOnly;\r\n\r\n this.initLayers()\r\n .then(\r\n result => {\r\n createLegend(this.view, this.originFeatureLayer, this.viirsFeatureLayer);\r\n window.api.setOriginApiUrl(this.config.originApiUrl[this.config.env]);\r\n this.initEventHandlers();\r\n this.initSearch(search);\r\n\r\n if (this.jurisdictionalFeatureLayer) \r\n {\r\n window.api.setJurisdictionalFeatureLayerUrl(this.jurisdictionalFeatureLayer.url + '/0');\r\n window.api.setJurisdictionalFeatureLayerToken(this.jurisdictionalFeatureLayer.portalItem.portal.credential.token)\r\n }\r\n resolve();\r\n },\r\n error => {\r\n reject();\r\n }\r\n );\r\n });\r\n }\r\n\r\n initSearch(searchWidget) {\r\n loadModules(['esri/tasks/Locator', 'esri/layers/FeatureLayer'])\r\n .then(([Locator, FeatureLayer]) => {\r\n searchWidget.sources.removeAll();\r\n\r\n searchWidget.sources.add({\r\n layer: new FeatureLayer({\r\n url: this.originFeatureLayer.url + '/' + this.originFeatureLayer.layerId,\r\n outFields: [\"OBJECTID\", \"IncidentName\", \"UniqueFireIdentifier\", \"FORID\"]\r\n }),\r\n searchFields: this.config.originLayer.search.fields,\r\n exactMatch: false,\r\n outFields: [\"OBJECTID\", \"IncidentName\", \"UniqueFireIdentifier\", \"FORID\"],\r\n name: \"Incidents\",\r\n maxSuggestions: 10,\r\n suggestionsEnabled: true,\r\n suggestionTemplate: \"Name: {IncidentName} \\nID: {UniqueFireIdentifier}\",\r\n minSuggestCharacters: 0,\r\n withinViewEnabled: false,\r\n resultGraphicEnabled: false,\r\n popupTemplate: this.originPopupTemplate\r\n },0);\r\n\r\n searchWidget.sources.add({\r\n locator: new Locator({\r\n url: \"https://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer\", //TODO: Fix URL hardcode\r\n name: \"US Locator\",\r\n countryCode: 'US'\r\n }),\r\n singleLineFieldName: \"SingleLine\",\r\n outFields: [\"Addr_type\"],\r\n name: \"US Locator\",\r\n countryCode: 'US',\r\n localSearchOptions: {\r\n minScale: 300000,\r\n distance: 50000\r\n },\r\n maxResults: 3,\r\n maxSuggestions: 3\r\n }, 1);\r\n searchWidget.activeSourceIndex = -1;\r\n });\r\n }\r\n\r\n\r\n initEventHandlers() {\r\n loadModules(['dojo/topic'])\r\n .then(([topic]) => {\r\n\r\n //GET\r\n topic.subscribe('LayerManager/get-origin-definition-expression', this.handleGetOriginDefinitionExpression.bind(this));\r\n topic.subscribe('LayerManager/get-origin-fields', this.handleGetOriginFields.bind(this));\r\n topic.subscribe('LayerManager/get-origin-features', this.handleGetOriginFeatures.bind(this));\r\n topic.subscribe('LayerManager/get-full-origin-features-from-api', this.handleGetFullOriginFeaturesFromApi.bind(this));\r\n topic.subscribe('LayerManager/get-origin-feature', this.handleGetOriginFeature.bind(this));\r\n topic.subscribe('LayerManager/set-origin-selection-graphics', this.handleSetOriginSelectionGraphics.bind(this));\r\n topic.subscribe('LayerManager/set-origin-selection-graphic', this.handleSetOriginSelectionGraphic.bind(this));\r\n topic.subscribe('LayerManager/set-origin-definition-expression', debounce(this.handleSetOriginDefinitionExpression.bind(this), 500));\r\n topic.subscribe('LayerManager/set-custom-filter-definition-expression', this.handleSetCustomFilterDefinitionExpression.bind(this));\r\n topic.subscribe('LayerManager/set-visible-perimeters', this.handleSetVisiblePerimeters.bind(this));\r\n topic.subscribe('LayerManager/get-forids-for-query', this.handleGetFORIDsForQuery.bind(this));\r\n topic.subscribe('LayerManager/set-perimeter-graphic', this.handleSetPerimeterGraphic.bind(this)); \r\n topic.subscribe('LayerManager/clear-perimeter-graphics', this.handleClearPerimeterGraphics.bind(this)); \r\n topic.subscribe('LayerManager/set-modified-perimeter', this.handleSetModifiedPerimeter.bind(this));\r\n topic.subscribe('LayerManager/set-modified-perimeter-no-clear', this.handleSetModifiedPerimeterNoClear.bind(this));\r\n topic.subscribe('LayerManager/add-debug-graphic', this.handleAddDebugGraphic.bind(this));\r\n topic.subscribe('LayerManager/set-perimeters-symbology', this.handleSetPerimetersSymbol.bind(this));\r\n topic.subscribe('LayerManager/set-origin-visible', this.handleSetOriginVisible.bind(this));\r\n topic.subscribe('LayerManager/clear-visible-perimeters', this.handleClearVisiblePerimeters.bind(this));\r\n topic.subscribe('LayerManager/clear-origin-selection-graphics', this.handleClearOriginSelectionGraphics.bind(this));\r\n topic.subscribe('LayerManager/clear-modified-perimeter', this.handleClearModifiedPerimeter.bind(this));\r\n topic.subscribe('LayerManager/origin-refresh', this.handleOriginRefresh.bind(this));\r\n topic.subscribe('LayerManager/is-origin-within-perimeter', this.handleOriginWithinPerimeter.bind(this));\r\n topic.subscribe('LayerManager/on-update-end-origin-layer', this.handleOriginUpdateEnd.bind(this));\r\n topic.subscribe('LayerManager/set-spatial-filter-polygon', this.handleSetSpatialFilterPolygon.bind(this));\r\n });\r\n }\r\n\r\n initLayers() {\r\n return new Promise((resolve, reject) => {\r\n loadModules([\r\n 'esri/geometry/Polygon',\r\n 'esri/geometry/SpatialReference',\r\n 'esri/geometry/support/webMercatorUtils',\r\n 'esri/layers/Layer',\r\n 'esri/layers/FeatureLayer',\r\n 'esri/layers/TileLayer',\r\n 'esri/layers/GraphicsLayer',\r\n 'esri/symbols/SimpleMarkerSymbol',\r\n 'esri/core/watchUtils'\r\n ])\r\n .then((\r\n [\r\n Polygon,\r\n SpatialReference,\r\n WebMercatorUtils,\r\n Layer,\r\n FeatureLayer,\r\n TileLayer,\r\n GraphicsLayer,\r\n SimpleMarkerSymbol,\r\n watchUtils\r\n ]\r\n ) => {\r\n\r\n this.heatmapRenderer = {\r\n type: \"heatmap\",\r\n colorStops: [\r\n { ratio: 0, color: \"rgba(255, 255, 255, 0)\" },\r\n { ratio: 0.2, color: \"rgba(255, 255, 255, 1)\" },\r\n { ratio: 0.5, color: \"rgba(255, 140, 0, 1)\" },\r\n { ratio: 0.8, color: \"rgba(255, 140, 0, 1)\" },\r\n { ratio: 1, color: \"rgba(255, 0, 0, 1)\" }\r\n ],\r\n maxPixelIntensity: 500,\r\n minPixelIntensity: 100\r\n };\r\n\r\n this.originPopupTemplate = {\r\n title: `Incident Name: {${originFields.name}}`,\r\n alignment: \"bottom-center\",\r\n actions: [\r\n {\r\n title: \"View Incident\",\r\n id: \"popup-view-incident\",\r\n className: \"esri-icon-review\"\r\n },\r\n {\r\n title: \"Zoom To\",\r\n id: \"popup-zoom-to-incident\",\r\n className: \"esri-icon-zoom-in-magnifying-glass\"\r\n }\r\n ],\r\n overwriteActions: true,\r\n fieldInfos: [\r\n {\r\n fieldName: \"FORID\",\r\n label: \"FORID\"\r\n },\r\n {\r\n fieldName: \"IncidentSize\",\r\n label: \"Fire Size\",\r\n },\r\n {\r\n fieldName: \"FireCode\",\r\n label: \"Fire Code\"\r\n },\r\n {\r\n fieldName: \"FireDiscoveryDateTime\",\r\n label: \"Discovery\",\r\n /*format:\r\n {\r\n dateFormat: \"short-date\"\r\n }*/\r\n },\r\n {\r\n fieldName: \"FireOutDateTime\",\r\n label: \"Fire Out\",\r\n /*format:\r\n {\r\n dateFormat: \"short-date\"\r\n }*/\r\n } \r\n ],\r\n expressionInfos:\r\n [\r\n {\r\n name: \"arcade-for-id\",\r\n expression: \"DefaultValue($feature.FORID, '--')\"\r\n },\r\n {\r\n name: \"arcade-incident-size\",\r\n expression: \"DefaultValue($feature.IncidentSize, '--')\"\r\n },\r\n {\r\n name: \"arcade-fire-code\",\r\n expression: \"DefaultValue($feature.FireCode, '--')\"\r\n },\r\n {\r\n name: \"arcade-discovery-date\",\r\n expression: \"When(IsEmpty($feature.FireDiscoveryDateTime), '--', Text(Date($feature.FireDiscoveryDateTime), 'MM/DD/YYYY'))\"\r\n },\r\n {\r\n name: \"arcade-fire-out-date\",\r\n expression: \"When(IsEmpty($feature.FireOutDateTime), '--', Text(Date($feature.FireOutDateTime), 'MM/DD/YYYY'))\"\r\n }\r\n /*{\r\n name: \"arcade-discovery-date\",\r\n expression: \"When(IsEmpty($feature.FireDiscoveryDateTime), '--', Text($feature.FireDiscoveryDateTime, 'MM/DD/YYYY'))\"\r\n },\r\n {\r\n name: \"arcade-fire-out-date\",\r\n expression: \"When(IsEmpty($feature.FireOutDateTime), '--', Text($feature.FireOutDateTime, 'MM/DD/YYYY'))\"\r\n }*/\r\n ],\r\n content: [\r\n {\r\n type: \"text\",\r\n text:\r\n '
' +\r\n '
' +\r\n '
' +\r\n '' +\r\n '

{IncidentName}

' +\r\n '
' +\r\n '
' +\r\n '' +\r\n '

{UniqueFireIdentifier}

' +\r\n '
' +\r\n '
' +\r\n '' +\r\n '

{expression/arcade-incident-size}

' +\r\n '
' +\r\n '
' +\r\n '' +\r\n '

{expression/arcade-fire-code}

' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '' +\r\n '

{expression/arcade-discovery-date}

' +\r\n '
' +\r\n '
' +\r\n '' +\r\n '

{expression/arcade-fire-out-date}

' +\r\n '
' +\r\n '
' +\r\n '
'\r\n }\r\n ]\r\n };\r\n\r\n this.pointRenderer = {\r\n type: \"unique-value\",\r\n valueExpression: `\r\n var nonWildfire = ($feature.IncidentTypeCategory != 'RX' && $feature.IncidentTypeCategory != 'WF');\r\n var isComplete = ($feature.StatusID == 1);\r\n var isCertified = ($feature.StatusID == 3);\r\n var nonWildFireIncomplete = (nonWildfire && !isComplete && !isCertified);\r\n var nonWildFireComplete = (nonWildfire && isComplete && !isCertified);\r\n var isQuarantined = ($feature.IsQuarantined == 1);\r\n var prescribed = ($feature.IncidentTypeCategory == 'RX');\r\n var notUnique = (!IsEmpty($feature.MinUniqueness) && ($feature.MinUniqueness <= .25 && !isCertified));\r\n var notUniqueAndPrescribed = (prescribed && notUnique && !isCertified);\r\n var nonWildFireNonUnique = (nonWildFireIncomplete && notUnique && !isCertified));\r\n return When($feature.IsQuarantined == 1, 'IsQuarantined', notUniqueAndPrescribed, 'NonUniquePrescribed', notUnique, 'NonUnique', prescribed, 'PrescribedFire', isCertified, 'Certified', nonWildFireIncomplete, 'NonWildfire', nonWildFireComplete, 'NonWildfireComplete', isComplete, 'Complete', 'Incomplete')`,\r\n uniqueValueInfos: [\r\n {\r\n value: 'Certified',\r\n label: \"Certified\",\r\n symbol: symbols.certifiedSymbol\r\n },\r\n {\r\n value: consts.incidentStatus.complete,\r\n label: \"Complete\",\r\n symbol: symbols.completeSymbol\r\n },\r\n {\r\n value: consts.incidentStatus.incomplete,\r\n label: \"Incomplete\",\r\n symbol: symbols.defaultIncidentSymbol\r\n },\r\n {\r\n value: 'IsQuarantined',\r\n label: \"Is Quarantined\",\r\n symbol: symbols.conflictIncidentSymbol\r\n },\r\n {\r\n value: 'NonUnique',\r\n label: \"Non Unique\",\r\n symbol: symbols.nonUniqueSymbol\r\n },\r\n {\r\n value: 'NonUniquePrescribed',\r\n label: \"Non Unique - Prescribed\",\r\n symbol: symbols.prescribedFireNonUniqueSymbol\r\n },\r\n {\r\n value: 'NonUniqueNonWildFire',\r\n label: \"Non Unique - Other\",\r\n symbol: symbols.otherFireNonUniqueSymbol\r\n },\r\n {\r\n value: 'PrescribedFire',\r\n label: \"Prescribed Fire\",\r\n symbol: symbols.prescribedFireSymbol\r\n },\r\n {\r\n value: 'NonWildfire',\r\n label: \"Other Fire Type\",\r\n symbol: symbols.otherFireSymbol\r\n },\r\n {\r\n value: 'NonWildfireComplete',\r\n label: \"Other Fire Type - Complete\",\r\n symbol: symbols.otherFireSymbolComplete\r\n }\r\n ],\r\n visualVariables: [{\r\n type: \"size\",\r\n field: \"IncidentSize\",\r\n stops: [\r\n { value: 0.25, size: 10, label: \"Class A\" },\r\n { value: 10, size: 14, label: \"Class B\" },\r\n { value: 100, size: 18, label: \"Class C\" },\r\n { value: 300, size: 22, label: \"Class D\" },\r\n { value: 1000, size: 26, label: \"Class E\" },\r\n { value: 5000, size: 30, label: \"Class F\" },\r\n { value: 50000, size: 34, label: \"Class G\" }\r\n ]\r\n }]\r\n };\r\n\r\n let originConfig = {\r\n portalItem: { id: this.config.originLayer.portalItemId },\r\n definitionExpression: this.config.originLayer.defaultWhere,\r\n outFields: [...new Set([...originFields.requiredOutFields])],\r\n visible: true,\r\n recordCount: 20,\r\n //renderer: this.pointRenderer,\r\n popupTemplate: this.originPopupTemplate\r\n };\r\n\r\n\r\n this.fodrGraphicsLayer = new GraphicsLayer();\r\n this.fodrGraphicsLayer.renderer = this.pointRenderer;\r\n this.fodrGraphicsLayer.visible = true;\r\n this.fodrGraphicsLayer.listMode = \"hide\";\r\n\r\n this.originFeatureLayer = new FeatureLayer(Object.assign({}, originConfig, this.config.originLayer.jsInit[this.config.env]));\r\n this.originFeatureLayer.listMode = \"hide\";\r\n this.originFeatureLayer.visible = true;\r\n this.originFeatureLayer.renderer = this.pointRenderer;\r\n\r\n this.jurisdictionalRenderer = {\r\n type: \"unique-value\",\r\n field: \"LegendJurisdictionalAgency\", //TODO: Fix hardcode\r\n uniqueValueInfos: [\r\n {\r\n value: \"ANSCA\",\r\n label: \"ANSCA\",\r\n symbol: symbols.jurisdictionalLayer.TribalSymbol\r\n },\r\n {\r\n value: \"BIA\",\r\n label: \"BIA\",\r\n symbol: symbols.jurisdictionalLayer.TribalSymbol\r\n },\r\n {\r\n value: \"Tribal\",\r\n label: \"Tribal\",\r\n symbol: symbols.jurisdictionalLayer.TribalSymbol\r\n },\r\n {\r\n value: \"BLM\",\r\n label: \"Bureau of Land Management (BLM)\",\r\n symbol: symbols.jurisdictionalLayer.BLMSymbol\r\n },\r\n {\r\n value: \"BOR\",\r\n label: \"Bureau of Reclamation\",\r\n symbol: symbols.jurisdictionalLayer.BORSymbol\r\n },\r\n {\r\n value: \"DOD\",\r\n label: \"Military Reservations and Corps of Engineer\",\r\n symbol: symbols.jurisdictionalLayer.MRCESymbol\r\n },\r\n {\r\n value: \"DOE\",\r\n label: \"Military Reservations and Corps of Engineer\",\r\n symbol: symbols.jurisdictionalLayer.MRCESymbol\r\n },\r\n {\r\n value: \"NPS\",\r\n label: \"National Park Service (NPS)\",\r\n symbol: symbols.jurisdictionalLayer.NPSSymbol\r\n },\r\n {\r\n value: \"OtherFed\",\r\n label: \"OtherFederal\",\r\n symbol: symbols.jurisdictionalLayer.OtherFedSymbol\r\n },\r\n {\r\n value: \"State\",\r\n label: \"State\",\r\n symbol: symbols.jurisdictionalLayer.StateSymbol\r\n },\r\n {\r\n value: \"CNTY\",\r\n label: \"City/County\",\r\n symbol: symbols.jurisdictionalLayer.CityCountySymbol\r\n },\r\n {\r\n value: \"Private\",\r\n label: \"Private\",\r\n symbol: symbols.jurisdictionalLayer.PrivateSymbol\r\n },\r\n {\r\n value: \"USACOE\",\r\n label: \"Corps of Engineer\",\r\n symbol: symbols.jurisdictionalLayer.MRCESymbol\r\n },\r\n {\r\n value: \"USFS\",\r\n label: \"US Forest Service (USFS)\",\r\n symbol: symbols.jurisdictionalLayer.ForestServiceSymbol\r\n },\r\n {\r\n value: \"USFWS\",\r\n label: \"US Fish and Wildlife (USFW) National Wildlife Refuge\",\r\n symbol: symbols.jurisdictionalLayer.USFWSSymbol\r\n },\r\n {\r\n value: \"USGS\",\r\n label: \"USGS\",\r\n symbol: symbols.jurisdictionalLayer.OtherFedSymbol\r\n },\r\n {\r\n value: \"USCG\",\r\n label: \"USCG\",\r\n symbol: symbols.jurisdictionalLayer.MRCESymbol\r\n }\r\n ]\r\n };\r\n\r\n let jurisdictionalFeatureConfig = {\r\n portalItem: { id: this.config.jurisdictionalFeatureLayer.portalItemId },\r\n title: \"Jurisdictional Units\",\r\n outFields: [\"*\"], //TODO: Fix hardcode\r\n visible: false,\r\n popupTemplate: { // autocasts as new PopupTemplate()\r\n title: \"{JurisdictionalUnitName}\",\r\n content: \"
Landowner Kind: {LandownerKind}
Landowner Category: {LandownerCategory}
Unit ID: {JurisdictionalUnitID_sansUS}
Unit Name: {JurisdictionalUnitName}
\",\r\n overwriteActions: true\r\n },\r\n opacity: .75,\r\n labelsVisible: true,\r\n legendEnabled: false,\r\n renderer: this.jurisdictionalRenderer\r\n };\r\n\r\n\r\n const perimeterConfig = {\r\n visible: false,\r\n title: \"NIFS Perimeters\", //TODO: Fix layername hardcode\r\n //definitionExpression: \"1=2\",\r\n outFields: [\"*\"],\r\n renderer: {\r\n type: \"simple\", // autocasts as new SimpleRenderer()\r\n symbol: symbols.selectedPerimeterSymbol\r\n }\r\n };\r\n\r\n const fireHistoryConfig = {\r\n portalItem: this.config.fireHistoryLayer.jsInit[this.config.env].portalItem,\r\n visible: false,\r\n title: \"Fire History Perimeters\",\r\n opacity: 0.5,\r\n outFields: [\"IncidentName\", \"FeatureCategory\", \"MapMethod\", \"Comments\", \"GISAcres\", \"DeleteThis\", \"FeatureAccess\", \"FeatureStatus\", \"IRWINID\", \"Source\"],\r\n renderer: {\r\n type: \"simple\",\r\n symbol: symbols.selectedPerimeterSymbol\r\n }\r\n };\r\n\r\n const finalFireConfig = {\r\n portalItem: this.config.finalFireFeatureLayer.jsInit[this.config.env].portalItem,\r\n visible: false,\r\n title: \"Final Fire Perimeters\", \r\n opacity: 0.5, \r\n outFields: [\"IncidentName\",\"FeatureCategory\",\"MapMethod\",\"GISAcres\",\"FeatureStatus\",\"IRWINID\"],\r\n renderer: {\r\n type: \"simple\", \r\n symbol: symbols.selectedPerimeterSymbol\r\n }\r\n };\r\n this.jurisdictionalFeatureLayer = new FeatureLayer(Object.assign({}, jurisdictionalFeatureConfig, this.config.jurisdictionalFeatureLayer));\r\n this.jurisdictionalFeatureLayer.listMode = \"hide\";\r\n this.jurisdictionalFeatureLayer.title = consts.layerTitles.jurisdictionalUnitsFeatureLayer;\r\n //TODO: Fix layername hardcode\r\n this.gaccFeatureLayer = new FeatureLayer(\r\n {\r\n url: 'https://services3.arcgis.com/T4QMspbfLg3qTGWY/arcgis/rest/services/National_GACC_Current/FeatureServer', //TODO: Fix hardcode\r\n title: \"GACC\",\r\n outFields: [\"GACCName\", \"GACCUnitID\", \"GACCAbbreviation\", \"ContactPhone\"], //TODO: Fix hardcode\r\n popupTemplate: { // autocasts as new PopupTemplate()\r\n title: \"{GACCName}\",\r\n content: \"
Name: {GACCName}
Unit ID: {GACCUnitID}
Abbreviation: {GACCAbbreviation}
Contact Phone: {ContactPhone}
\",\r\n overwriteActions: true\r\n },\r\n popupEnabled: true,\r\n visible: false,\r\n opacity: 0.4,\r\n labelsVisible: true,\r\n legendEnabled: true,\r\n renderer: {\r\n type: \"simple\",\r\n symbol: symbols.gaccSymbol\r\n }\r\n\r\n });\r\n\r\n this.viirsFeatureLayer = new FeatureLayer(\r\n {\r\n url: 'https://services9.arcgis.com/RHVPKKiFTONKtxq3/arcgis/rest/services/Satellite_VIIRS_Thermal_Hotspots_and_Fire_Activity/FeatureServer', //TODO: Fix hardcode\r\n title: \"VIIRS\",\r\n outFields: [\"OBJECTID\",\r\n \"satellite\",\r\n \"esritimeutc\",\r\n \"latitude\",\r\n \"longitude\",\r\n \"FRP\",\r\n \"confidence\",\r\n \"hours_old\"],\r\n visible: false,\r\n popupEnabled: true,\r\n popupTemplate: {\r\n title: \"VIIRS\",\r\n expressionInfos:\r\n [\r\n {\r\n name: \"arcade-for-satellite\",\r\n title: \"Satellite\",\r\n expression: \"When($feature.satellite == 'N', 'Suomi NPP', $feature.satellite == '1', 'NOAA-20', $feature.satellite)\"\r\n }\r\n ],\r\n content: [\r\n {\r\n type: \"fields\",\r\n fieldInfos: [\r\n {\r\n fieldName: \"expression/arcade-for-satellite\"\r\n },\r\n {\r\n fieldName: \"esritimeutc\",\r\n label: \"Time (UTC)\"\r\n },\r\n {\r\n fieldName: \"latitude\",\r\n label: \"Latitude\"\r\n },\r\n {\r\n fieldName: \"longitude\",\r\n label: \"Longitude\"\r\n },\r\n {\r\n fieldName: \"FRP\",\r\n label: \"Fire Radiative Power\"\r\n },\r\n {\r\n fieldName: \"confidence\",\r\n label: \"Confidence\"\r\n },\r\n {\r\n fieldName: \"hours_old\",\r\n label: \"Hours Old\"\r\n },\r\n ]\r\n }\r\n ]\r\n },\r\n opacity: 0.6,\r\n labelsVisible: true,\r\n legendEnabled: true,\r\n renderer: {\r\n type: \"class-breaks\",\r\n field: \"hours_old\",\r\n classBreakInfos: [\r\n {\r\n minValue: 48,\r\n maxValue: 168,\r\n symbol: {\r\n type: \"simple-marker\",\r\n style: \"circle\",\r\n color: \"#FFFF00\",\r\n size: \"10px\"\r\n }\r\n },\r\n {\r\n minValue: 24,\r\n maxValue: 48,\r\n symbol: {\r\n type: \"simple-marker\",\r\n style: \"circle\",\r\n color: \"#FFA900\",\r\n size: \"10px\"\r\n }\r\n },\r\n {\r\n minValue: 12,\r\n maxValue: 24,\r\n symbol: {\r\n type: \"simple-marker\",\r\n style: \"circle\",\r\n color: \"#FF5500\",\r\n size: \"10px\"\r\n }\r\n },\r\n {\r\n minValue: 6,\r\n maxValue: 12,\r\n symbol: {\r\n type: \"simple-marker\",\r\n style: \"circle\",\r\n color: \"#E64D00\",\r\n size: \"10px\"\r\n }\r\n },\r\n {\r\n minValue: 0,\r\n maxValue: 6,\r\n symbol: {\r\n type: \"simple-marker\",\r\n style: \"circle\",\r\n color: \"#A80000\",\r\n size: \"10px\"\r\n }\r\n }\r\n ]\r\n }\r\n });\r\n\r\n const stateLabelClass = {\r\n // autocasts as new LabelClass()\r\n symbol: {\r\n type: \"text\", // autocasts as new TextSymbol()\r\n color: \"black\",\r\n font: { // autocast as new Font()\r\n family: \"Avenir Next\",\r\n size: 12,\r\n weight: \"bold\"\r\n }\r\n },\r\n labelPlacement: \"above-center\",\r\n labelExpressionInfo: {\r\n expression: \"$feature.NAME\"\r\n }\r\n };\r\n\r\n\r\n //TODO: Fix Url hardcode and title\r\n this.stateFeatureLayer = new FeatureLayer(\r\n {\r\n url: 'https://services3.arcgis.com/T4QMspbfLg3qTGWY/arcgis/rest/services/US_State_and_County/FeatureServer/1', //TODO: Fix hardcode\r\n title: \"States\",\r\n popupEnabled: true,\r\n popupTemplate: { // autocasts as new PopupTemplate()\r\n title: \"{NAME}\",\r\n content: \"
State: {NAME}
\",\r\n overwriteActions: true\r\n },\r\n visible: false,\r\n opacity: 0.4,\r\n labelsVisible: true,\r\n legendEnabled: true,\r\n labelingInfo: [stateLabelClass],\r\n renderer: {\r\n type: \"simple\",\r\n symbol: symbols.gaccSymbol\r\n }\r\n });\r\n\r\n const countyLabelClass = {\r\n // autocasts as new LabelClass()\r\n symbol: {\r\n type: \"text\", // autocasts as new TextSymbol()\r\n color: \"black\",\r\n font: { // autocast as new Font()\r\n family: \"Avenir Next\",\r\n size: 12,\r\n weight: \"bold\"\r\n }\r\n },\r\n labelPlacement: \"above-center\",\r\n labelExpressionInfo: {\r\n expression: \"$feature.NAME\"\r\n }\r\n };\r\n\r\n //TODO: Fix Url hardcode and title\r\n this.countyFeatureLayer = new FeatureLayer(\r\n {\r\n url: 'https://services3.arcgis.com/T4QMspbfLg3qTGWY/arcgis/rest/services/US_State_and_County/FeatureServer/2', //TODO: Fix hardcode\r\n title: \"Counties\",\r\n popupEnabled: true,\r\n popupTemplate: {\r\n title: \"{NAME}\",\r\n content: \"
County: {NAME}
\",\r\n overwriteActions: true\r\n },\r\n visible: false,\r\n opacity: 0.4,\r\n labelsVisible: true,\r\n legendEnabled: true,\r\n labelingInfo: [countyLabelClass],\r\n renderer: {\r\n type: \"simple\",\r\n symbol: symbols.gaccSymbol\r\n }\r\n\r\n });\r\n\r\n //TODO: Fix Url hardcode and title\r\n this.fsTopoLayer = new TileLayer(\r\n {\r\n url: \"https://apps.fs.usda.gov/arcx/rest/services/EDW/EDW_FSTopo_01/MapServer\", //TODO: Fix hardcode\r\n title: \"Forest Service Topo\",\r\n visible: false,\r\n opacity: 0.75,\r\n legendEnabled: true\r\n });\r\n\r\n //TODO: Fix Url hardcode and title\r\n this.dispatchCenterFeatureLayer = new FeatureLayer(\r\n {\r\n url: 'https://services3.arcgis.com/T4QMspbfLg3qTGWY/arcgis/rest/services/National_Dispatch_Current/FeatureServer/0', //TODO: Fix hardcodes\r\n title: \"National Dispatch Centers\",\r\n outFields: [\"OBJECTID\", \"DispUnitID\", \"DispName\", \"GACCAbbreviation\"],\r\n fields: [\"OBJECTID\", \"DispUnitID\", \"DispName\", \"GACCAbbreviation\"],\r\n popupTemplate: { // autocasts as new PopupTemplate()\r\n title: \"{DispName}\",\r\n content: \"
Name: {DispName}
Unit ID: {DispUnitID}
\",\r\n overwriteActions: true\r\n },\r\n popupEnabled: true,\r\n visible: false,\r\n opacity: 0.4,\r\n labelsVisible: true,\r\n legendEnabled: true,\r\n renderer: {\r\n type: \"simple\",\r\n symbol: symbols.dispatchCenterSymbol\r\n }\r\n\r\n });\r\n\r\n\r\n this.jurisdictionalTileLayer = new TileLayer({\r\n url: \"https://tiles.arcgis.com/tiles/T4QMspbfLg3qTGWY/arcgis/rest/services/Jurisdictional_Agencies/MapServer\",\r\n title: \"Jurisdictional Units\",\r\n visible: false,\r\n opacity: 1,\r\n legendEnabled: true\r\n });\r\n this.perimeterFeatureLayer = new FeatureLayer(Object.assign({}, perimeterConfig, this.config.perimeterLayer.jsInit[this.config.env]));\r\n this.perimeterFeatureLayer.listMode = \"hide\";\r\n\r\n this.fireHistoryLayer = new FeatureLayer(Object.assign({}, fireHistoryConfig, this.config.fireHistoryLayer.jsInit[this.config.env]));\r\n this.fireHistoryLayer.listMode = \"show\";\r\n this.fireHistoryLayer.popupTemplate = {\r\n title: \"{IncidentName}\",\r\n actions: \r\n [\r\n {\r\n title: \"Edit\",\r\n id: \"popup-add-irwinid-firehistory\",\r\n className: \"esri-icon-edit\"\r\n }],\r\n content: [\r\n {\r\n type: \"fields\",\r\n fieldInfos: [\r\n {\r\n fieldName: \"IncidentName\",\r\n label: \"Incident Name\"\r\n },\r\n {\r\n fieldName: \"FeatureCategory\",\r\n label: \"Category\"\r\n },\r\n {\r\n fieldName: \"MapMethod\",\r\n label: \"Map Method\"\r\n },\r\n {\r\n fieldName: \"IRWINID\",\r\n label: \"IRWIN ID\"\r\n },\r\n {\r\n fieldName: \"GisAcres\",\r\n label: \"Acres\"\r\n },\r\n {\r\n fieldName: \"PolygonDateTime\",\r\n label: \"Polygon Date Time\"\r\n },\r\n {\r\n fieldName: \"FeatureStatus\",\r\n label: \"Feature Status\"\r\n },\r\n {\r\n fieldName: \"Collector\",\r\n label: \"Collector\"\r\n }\r\n ]\r\n }\r\n ]\r\n };\r\n \r\n this.finalFireLayer = new FeatureLayer(Object.assign({}, finalFireConfig, this.config.finalFireFeatureLayer.jsInit[this.config.env]));\r\n this.finalFireLayer.listMode = \"show\";\r\n\r\n this.perimeterGraphicsLayer = new GraphicsLayer();\r\n this.perimeterGraphicsLayer.listMode = \"hide\";\r\n\r\n this.originSelectionGraphicsLayer = new GraphicsLayer();\r\n this.originSelectionGraphicsLayer.listMode = \"hide\";\r\n\r\n this.perimeterModifiedGraphicsLayer = new GraphicsLayer();\r\n this.perimeterModifiedGraphicsLayer.listMode = \"hide\";\r\n\r\n this.spatialFilterGraphicsLayer = new GraphicsLayer();\r\n this.spatialFilterGraphicsLayer.listMode = \"hide\";\r\n\r\n this.originSelectionSymbol = new SimpleMarkerSymbol(symbols.selectionSymbol);\r\n this.originDisabledSymbol = new SimpleMarkerSymbol(symbols.disabledSymbol);\r\n\r\n if (this.gaccFeatureLayer) this.map.add(this.gaccFeatureLayer);\r\n if (this.dispatchCenterFeatureLayer) this.map.add(this.dispatchCenterFeatureLayer);\r\n if (this.jurisdictionalFeatureLayer) this.map.add(this.jurisdictionalFeatureLayer);\r\n \r\n if (this.jurisdictionalTileLayer) this.map.add(this.jurisdictionalTileLayer);\r\n if (this.fireHistoryLayer) this.map.add(this.fireHistoryLayer);\r\n if (this.perimeterFeatureLayer) this.map.add(this.perimeterFeatureLayer);\r\n if (this.finalFireLayer) this.map.add(this.finalFireLayer);\r\n if (this.fsTopoLayer) this.map.add(this.fsTopoLayer);\r\n if (this.viirsFeatureLayer) this.map.add(this.viirsFeatureLayer);\r\n if (this.countyFeatureLayer) this.map.add(this.countyFeatureLayer);\r\n if (this.stateFeatureLayer) this.map.add(this.stateFeatureLayer);\r\n\r\n if (this.originFeatureLayer) this.map.add(this.originFeatureLayer);\r\n \r\n this.map.add(this.fodrGraphicsLayer);\r\n this.map.add(this.perimeterGraphicsLayer);\r\n this.map.add(this.perimeterModifiedGraphicsLayer);\r\n this.map.add(this.spatialFilterGraphicsLayer);\r\n this.map.add(this.originSelectionGraphicsLayer);\r\n\r\n //Yoke JurisdictionalFeatureLayer visiblity (empty symbology) to JurisdictionalTileLayer visibility\r\n watchUtils.watch(this.jurisdictionalTileLayer, 'visible', function () {\r\n var jurisdictionalUnitsFeatureLayer = this.parent.allLayers.find(function (layer) {\r\n return layer.title === consts.layerTitles.jurisdictionalUnitsFeatureLayer;\r\n });\r\n\r\n if (jurisdictionalUnitsFeatureLayer) {\r\n jurisdictionalUnitsFeatureLayer.visible = this.visible;\r\n }\r\n });\r\n\r\n //the universe in lat lon\r\n var latLonUniverse = new Polygon(new SpatialReference(4269));\r\n latLonUniverse.rings = [[[-179.9999999, -80.1], [-179.9999999, 80.1], [179.9999999, 80.1], [179.999999, -80.1], [-179.99999999, -80.1]]];\r\n\r\n //the universe in web mercator\r\n this.universeWebMercator = WebMercatorUtils.geographicToWebMercator(latLonUniverse);\r\n\r\n this.view.whenLayerView(this.originFeatureLayer).then(\r\n layerview => {\r\n window.api.setOriginLayerUrl(this.originFeatureLayer.url + '/' + this.originFeatureLayer.layerId);\r\n window.api.setOriginLayerToken(this.originFeatureLayer.portalItem.portal.credential.token);\r\n this.originLayerView = layerview;\r\n resolve();\r\n },\r\n error => {\r\n console.log(\"No Layer view for origin layer\")\r\n reject();\r\n }\r\n );\r\n\r\n\r\n this.view.watch(\"scale\", (newValue) => {\r\n if (this.jurisdictionalTileLayer.visible) {\r\n if (newValue > 72300) {\r\n this.jurisdictionalFeatureLayer.renderer = {\r\n type: \"simple\",\r\n symbol: {\r\n \"type\": \"simple-fill\",\r\n \"style\": \"solid\",\r\n \"color\": [0, 0, 0, 0],\r\n \"outline\": {\r\n \"color\": [0, 0, 0, 0],\r\n \"width\": 1\r\n }\r\n }\r\n };\r\n this.jurisdictionalFeatureLayer.refresh();\r\n }\r\n else {\r\n this.jurisdictionalFeatureLayer.renderer = this.jurisdictionalRenderer;\r\n this.jurisdictionalFeatureLayer.refresh();\r\n }\r\n\r\n }\r\n //this.originFeatureLayer.renderer = (parseFloat(newValue) <= 500000) ? this.pointRenderer : this.heatmapRenderer;\r\n //this.originFeatureLayer.effect = (parseFloat(newValue) >= 500000) ? \"bloom(1.3, 0.1px, 15%)\" : null;\r\n\r\n });\r\n\r\n //TODO: Change this.\r\n for (let portalJson of this.config.supportLayers[this.config.env]) {\r\n\r\n Layer.fromPortalItem(portalJson).then(layer => {\r\n\r\n layer.visible = false;\r\n layer.opacity = 0.5;\r\n layer.title = \"NIFS Perimeters\"; //TODO: Fix title hardcode\r\n\r\n this.map.add(layer, 5);\r\n\r\n layer.on(\"layerview-create\", function (event) {\r\n for (var i = 0; i < event.layerView.layer.layers.items.length; i++) {\r\n var layer = event.layerView.layer.layers.items[i];\r\n if (layer.layerId !== 6) \r\n {\r\n layer.visible = false;\r\n }\r\n else \r\n {\r\n layer.definitionExpression = `DeleteThis IS NULL OR DeleteThis = 'NO' OR DeleteThis = 'No'`\r\n // Add this action to the popup so it is always available in this view\r\n var template = {\r\n // autocasts as new PopupTemplate()\r\n title: \"{IncidentName}\",\r\n actions: (this.isReadOnly) ? [] :\r\n [\r\n {\r\n title: \"Edit\",\r\n id: \"popup-add-irwinid-nifs\",\r\n className: \"esri-icon-edit\"\r\n }],\r\n //TODO: Fix field hardcodes\r\n content: [\r\n {\r\n type: \"fields\",\r\n fieldInfos: [\r\n {\r\n fieldName: \"IncidentName\",\r\n label: \"Incident Name\"\r\n },\r\n {\r\n fieldName: \"FeatureCategory\",\r\n label: \"Category\"\r\n },\r\n {\r\n fieldName: \"MapMethod\",\r\n label: \"Map Method\"\r\n },\r\n {\r\n fieldName: \"IRWINID\",\r\n label: \"IRWIN ID\"\r\n },\r\n {\r\n fieldName: \"GisAcres\",\r\n label: \"Acres\"\r\n },\r\n {\r\n fieldName: \"PolygonDateTime\",\r\n label: \"Polygon Date Time\"\r\n },\r\n {\r\n fieldName: \"FeatureStatus\",\r\n label: \"Feature Status\"\r\n },\r\n {\r\n fieldName: \"Collector\",\r\n label: \"Collector\"\r\n }\r\n ]\r\n }\r\n ]\r\n };\r\n layer.popupTemplate = template;\r\n }\r\n }\r\n });\r\n });\r\n }\r\n });\r\n });\r\n\r\n\r\n }\r\n\r\n getSymbolForFeature = (feature, renderValue) => {\r\n\r\n switch (renderValue) \r\n {\r\n case 'Certified':\r\n return symbols.certifiedSymbol;\r\n\r\n case 'Complete':\r\n return symbols.completeSymbol;\r\n\r\n case 'Incomplete':\r\n return symbols.defaultIncidentSymbol;\r\n\r\n case 'IsQuarantined':\r\n return symbols.conflictIncidentSymbol;\r\n\r\n case 'NonUnique':\r\n return symbols.nonUniqueSymbol;\r\n\r\n case 'NonUniquePrescribed':\r\n return symbols.prescribedFireNonUniqueSymbol;\r\n\r\n case 'PrescribedFire':\r\n return symbols.prescribedFireSymbol;\r\n\r\n case 'NonUniqueNonWildFire':\r\n return symbols.otherFireNonUniqueSymbol;\r\n\r\n case 'NonWildfire':\r\n return symbols.otherFireSymbol;\r\n\r\n case 'NonWildfireComplete':\r\n return symbols.otherFireCompleteSymbol;\r\n\r\n default:\r\n return symbols.defaultIncidentSymbol;\r\n }\r\n }\r\n\r\n getSizeForSymbol = (incidentSize) => {\r\n if (incidentSize) {\r\n if (incidentSize <= 0.25) return 10;\r\n else if (incidentSize <= 10) return 14;\r\n else if (incidentSize <= 100) return 18;\r\n else if (incidentSize <= 300) return 22;\r\n else if (incidentSize <= 1000) return 26;\r\n else if (incidentSize <= 5000) return 30;\r\n else if (incidentSize <= 50000) return 34;\r\n else return 38;\r\n }\r\n else {\r\n return 18;\r\n }\r\n }\r\n\r\n getRenderValueForFeature = (feature) => {\r\n const nonWildfire = (feature.attributes.IncidentTypeCategory !== 'RX' && feature.attributes.IncidentTypeCategory !== 'WF');\r\n const isComplete = (feature.attributes.StatusID === 1);\r\n const isCertified = (feature.attributes.StatusID === 3 || feature.attributes.ADSPermissionState === 'CERTIFIED');\r\n const nonWildFireIncomplete = (nonWildfire && !isComplete && !isCertified);\r\n const isQuarantined = (feature.attributes.IsQuarantined === 1);\r\n const prescribed = (feature.attributes.IncidentTypeCategory === 'RX');\r\n const notUnique = ((feature.attributes.MinUniqueness) && feature.attributes.MinUniqueness <= .25 && !isCertified);\r\n const notUniqueAndPrescribed = (prescribed && notUnique);\r\n\r\n\r\n if (isCertified) \r\n {\r\n return 'Certified';\r\n }\r\n\r\n if (isQuarantined) \r\n {\r\n return 'IsQuarantined';\r\n }\r\n\r\n if (notUnique) \r\n {\r\n \r\n if (notUniqueAndPrescribed) \r\n {\r\n return 'NonUniquePrescribed';\r\n }\r\n else \r\n {\r\n return 'NonUnique';\r\n }\r\n }\r\n\r\n if (prescribed) \r\n {\r\n return 'PrescribedFire';\r\n }\r\n\r\n if (nonWildFireIncomplete) \r\n {\r\n return 'NonWildfire';\r\n }\r\n\r\n if (nonWildFireIncomplete) \r\n {\r\n return 'NonWildfireComplete';\r\n }\r\n\r\n if (isComplete) \r\n {\r\n return 'Complete';\r\n }\r\n\r\n return 'Incomplete';\r\n }\r\n\r\n //\r\n // PUBLIC METHODS\r\n //\r\n handleGetOriginDefinitionExpression = (done, failed) => {\r\n done(this.originFeatureLayer.definitionExpression);\r\n }\r\n\r\n handleSetCustomFilterDefinitionExpression = (where, done, failed) => {\r\n loadModules(['esri/geometry/Point', 'esri/geometry/SpatialReference'])\r\n .then(([Point, SpatialReference]) => {\r\n\r\n if (!where.includes(originFields.isValid)) \r\n {\r\n where += \" AND \" + originFields.isValid + \" = 1\";\r\n }\r\n\r\n this.originFeatureLayer.definitionExpression = where;\r\n this.setSearchWidgetDefinition(where);\r\n if (this.originFeatureLayer) \r\n {\r\n //this.originFeatureLayer.definitionExpression = expression;\r\n //TODO: Refactor this, duplicated in setOriginLayerDefinitionExpression\r\n const queryUrl = this.originFeatureLayer.url + '/' + this.originFeatureLayer.layerId + '/query';\r\n window.api.getIncidentCountForQuery(this.view.extent, where, queryUrl).then(featureCount => {\r\n if (featureCount > 0) \r\n {\r\n window.api.getIncidentsForQuery(this.view.extent, 0, [], where, queryUrl, this.maxCountForIncidents).then(features => \r\n {\r\n \r\n this.fodrGraphicsLayer.graphics.removeAll();\r\n\r\n for (var i = 0; i < features.length; i++) {\r\n const currentFeature = features[i];\r\n var symbol = this.getSymbolForFeature(currentFeature, this.getRenderValueForFeature(currentFeature));\r\n symbol.size = this.getSizeForSymbol(currentFeature.attributes.IncidentSize);\r\n\r\n const g = new Graphic({\r\n geometry: new Point({\r\n x: currentFeature.geometry.x,\r\n y: currentFeature.geometry.y,\r\n spatialReference: new SpatialReference(3857)\r\n }),\r\n attributes: currentFeature.attributes,\r\n symbol: symbol,\r\n popupTemplate: this.originPopupTemplate\r\n }); \r\n\r\n this.fodrGraphicsLayer.graphics.add(g);\r\n }\r\n \r\n done(\r\n {\r\n total: featureCount, \r\n features: features\r\n });\r\n \r\n });\r\n } \r\n else \r\n {\r\n this.fodrGraphicsLayer.graphics.removeAll();\r\n \r\n done(\r\n {\r\n total: 0, \r\n features: []\r\n });\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n handleGetFORIDsForQuery = (spatialFilterId, filterGeometry, resultOffset, results, whereClause, resolve, reject) => \r\n {\r\n\r\n //Override filter geometry if we're passing in filterID\r\n const geometryToUse = (spatialFilterId !== null) ? this.spatialFilterPolygon : filterGeometry;\r\n const url = this.originFeatureLayer.url + '/' + this.originFeatureLayer.layerId + '/query';\r\n window.api.GetForIDsForQuery(geometryToUse, resultOffset, results, whereClause, url).then(results => {\r\n resolve(results);\r\n });\r\n }\r\n \r\n //TODO: Refactor this entire thing.\r\n handleSetOriginDefinitionExpression = (filter, done, failed) => {\r\n this.shouldFilterOnPerimeters = (filter.perimeterMapMethod !== null || filter.perimeterFeatureStatus !== null || filter.perimeterFeatureAccess !== null);\r\n\r\n loadModules(['esri/geometry/Polygon'])\r\n .then(([Polygon]) => {\r\n\r\n if (this.originFeatureLayer) {\r\n let terms = [];\r\n //add individual where clauses to terms array\r\n //set clause to null if not applicable\r\n const fireCauseWhere = (filter.fireCauses.length > 0) ? `( ${originFields.fireCauseId} IN ('${filter.fireCauses.join(\"', '\")}') )` : null;\r\n terms.push(fireCauseWhere);\r\n\r\n const utcOffsetWhere = (filter.utcOffset) ? `( UtcOffset = ${filter.utcOffset} )` : null;\r\n terms.push(utcOffsetWhere);\r\n\r\n const dataSourcesWhere = (filter.dataSources.length > 0) ? `( ${originFields.dataSources} IN ('${filter.dataSources.join(\"', '\")}') )` : null;\r\n terms.push(dataSourcesWhere);\r\n\r\n const multiRootWhere = (filter.multiRootOnly) ? `( ${originFields.isMultiRoot} = 1)` : null;\r\n terms.push(multiRootWhere);\r\n\r\n /*\r\n PrescribedEscapeRelationship\r\nComplexRelationship\r\nMergeRelationship\r\nPostFireRelationship\r\nPotentialConflictRelationship\r\nProvidingResponseRelationship\r\n\r\n1\t\t\t\t\t\tProvidingResponseTo\r\n2\t\t\t\t\t\tComplex\r\n3\t\t\t\t\t\tPotentialConflict\r\n4\t\t\t\t\t\tMerge\r\n5\t\t\t\t\t\tPrescribedEscape\r\n6\t\t\t\t\t\tPostFire\r\n\r\n*/\r\n\r\n if (filter.irwinRelationships) \r\n {\r\n let relationshipTerms = []; //validTerms.join(\" AND \");\r\n if (filter.irwinRelationships.includes(\"1\")) {\r\n relationshipTerms.push(\" (ProvidingResponseRelationship = 1) \");\r\n }\r\n\r\n if (filter.irwinRelationships.includes(\"2\")) {\r\n relationshipTerms.push(\" (ComplexRelationship = 1) \");\r\n }\r\n\r\n if (filter.irwinRelationships.includes(\"3\")) {\r\n relationshipTerms.push(\" (PotentialConflictRelationship = 1) \");\r\n }\r\n\r\n if (filter.irwinRelationships.includes(\"4\")) {\r\n relationshipTerms.push(\" (MergeRelationship = 1) \");\r\n }\r\n\r\n if (filter.irwinRelationships.includes(\"5\")) {\r\n relationshipTerms.push(\" (PrescribedEscapeRelationship = 1) \");\r\n }\r\n\r\n if (filter.irwinRelationships.includes(\"6\")) {\r\n relationshipTerms.push(\" (PostFireRelationship = 1) \");\r\n }\r\n\r\n let relationshipWhere = \"\";\r\n if (relationshipTerms.length > 0) \r\n {\r\n if (relationshipTerms.length === 1) {\r\n relationshipWhere = relationshipTerms[0];\r\n } else \r\n {\r\n relationshipWhere = \"( \" + relationshipTerms.join(\" OR \") + \" ) \";\r\n }\r\n\r\n terms.push(relationshipWhere);\r\n }\r\n }\r\n\r\n const strategyWhere = (filter.strategies.length > 0) ? `( ${originFields.initialFireStrategy} IN ('${filter.strategies.join(\"', '\")}') )` : null;\r\n terms.push(strategyWhere);\r\n\r\n const categoryWhere = (filter.categories.length > 0) ? `( ${originFields.incidentTypeCategory} IN ('${filter.categories.join(\"', '\")}') )` : null;\r\n terms.push(categoryWhere);\r\n\r\n if (!categoryWhere) {\r\n const incidentTypeKindWhere = `(${originFields.incidentTypeKind} = 'FI' OR (${originFields.incidentTypeKind} = 'FM' AND (${originFields.incidentTypeCategory} = 'FA' OR ${originFields.incidentTypeCategory} = 'OR')))`;\r\n terms.push(incidentTypeKindWhere);\r\n }\r\n\r\n const landownerCategoryWhere = (filter.landownerCategories.length > 0) ? `( ${originFields.landownerCategory} IN ('${filter.landownerCategories.join(\"', '\")}') )` : null;\r\n terms.push(landownerCategoryWhere);\r\n\r\n const acresMin = (filter.fireAcresMin === null) ? null : `( (${originFields.calculatedAcres} >= ${filter.fireAcresMin}) OR (${originFields.incidentSize} >= ${filter.fireAcresMin}) )`;\r\n terms.push(acresMin);\r\n\r\n if (filter.fireAcresMax !== null) {\r\n\r\n const dailyMax = `((${originFields.incidentSize} is NULL) OR (${originFields.incidentSize} <= ${filter.fireAcresMax}))`;\r\n const calculatedMax = `((${originFields.calculatedAcres} is NULL) OR (${originFields.calculatedAcres} <= ${filter.fireAcresMax}))`;\r\n let acresMax = `( ${dailyMax} AND ${calculatedMax} )`;\r\n\r\n terms.push(acresMax);\r\n }\r\n\r\n const maxDiscoveryDateString = (filter.discoveryDateMax) ? getSQLDateEndOfDay(filter.discoveryDateMax) : null;\r\n const maxDiscoveryDate = (maxDiscoveryDateString) ? `( ${originFields.discoveryDate} <= '${maxDiscoveryDateString}' )` : null;\r\n terms.push(maxDiscoveryDate);\r\n\r\n const minDiscoveryDateString = (filter.discoveryDateMin) ? getSQLDate(filter.discoveryDateMin) : null;\r\n const minDiscoveryDate = (minDiscoveryDateString) ? `( ${originFields.discoveryDate} >= '${minDiscoveryDateString}' )` : null;\r\n terms.push(minDiscoveryDate);\r\n\r\n const maxOutDateString = (filter.outDateMax) ? getSQLDateEndOfDay(filter.outDateMax) : null;\r\n const maxOutDate = (maxOutDateString) ? `( ${originFields.outDate} <= '${maxOutDateString}' )` : null;\r\n terms.push(maxOutDate);\r\n\r\n const minOutDateString = (filter.outDateMin) ? getSQLDate(filter.outDateMin) : null;\r\n const minOutDate = (minOutDateString) ? `( ${originFields.outDate} >= '${minOutDateString}' )` : null;\r\n terms.push(minOutDate);\r\n\r\n const maxModifiedString = (filter.modifiedDateMax) ? getSQLDateEndOfDay(filter.modifiedDateMax) : null;\r\n const maxModifiedDate = (maxModifiedString) ? `( ${originFields.modifiedDate} <= '${maxModifiedString}' )` : null;\r\n terms.push(maxModifiedDate);\r\n\r\n const minModifiedDateString = (filter.modifiedDateMin) ? getSQLDate(filter.modifiedDateMin) : null;\r\n const minModifiedDate = (minModifiedDateString) ? `( ${originFields.modifiedDate} >= '${minModifiedDateString}' )` : null;\r\n terms.push(minModifiedDate);\r\n\r\n const gaccWhere = (filter.gacc && filter.gacc.length > 0) ? `( ${originFields.gacc} IN ('${filter.gacc.join(\"', '\")}') )` : null;\r\n terms.push(gaccWhere);\r\n\r\n if (filter.state && filter.state.length > 0) {\r\n let stateWhere = \"\";\r\n if (filter.county === null || filter.county.length === 0) {\r\n stateWhere = `( ${originFields.state} IN ('${filter.state.join(\"', '\")}') )`\r\n }\r\n else {\r\n stateWhere = (filter.county.length === 1)\r\n ? `(${originFields.state} = '${filter.state[0]}' AND ${originFields.county} = '${filter.county}')`\r\n : `(${originFields.state} = '${filter.state[0]}' AND ${originFields.county} IN ('${filter.county.join(\"', '\")}'))`;\r\n }\r\n terms.push(stateWhere);\r\n }\r\n\r\n if (filter.structuresDestroyed !== null) {\r\n const structuresWhere = (filter.structuresDestroyed) ? `( ${originFields.residencesDestroyed} > 0 )` : `( ${originFields.residencesDestroyed} = 0 OR ${originFields.residencesDestroyed} IS NULL )`\r\n terms.push(structuresWhere);\r\n }\r\n\r\n if (filter.injuries !== null) {\r\n const injuriesWhere = (filter.injuries) ? `( ${originFields.injuries} > 0 )` : `( ${originFields.injuries} = 0 OR ${originFields.injuries} IS NULL )`\r\n terms.push(injuriesWhere);\r\n }\r\n //IMH\r\n if (filter.uniqueness !== null) {\r\n const uniquenessIndexWhere = `( MinUniqueness IS NOT NULL AND MinUniqueness <= ` + filter.uniqueness + `)`;\r\n terms.push(uniquenessIndexWhere);\r\n }\r\n\r\n if (filter.perimeterAcreageLandowner && filter.perimeterAcreageOperator && filter.perimeterAcreageNumber) \r\n { \r\n const acreageField = getAcresFieldName(filter.perimeterAcreageLandowner);\r\n const perimeterAcreageWhere = `( ${acreageField} ${filter.perimeterAcreageOperator} ${filter.perimeterAcreageNumber} )`;\r\n terms.push(perimeterAcreageWhere); \r\n }\r\n\r\n if (filter.fatalities !== null) {\r\n const fatalitiesWhere = (filter.fatalities) ? `( ${originFields.fatalities} > 0 )` : `( ${originFields.fatalities} = 0 OR ${originFields.fatalities} IS NULL )`\r\n terms.push(fatalitiesWhere);\r\n }\r\n\r\n if (filter.otherStructuresDestroyed !== null) {\r\n const otherStructuresDestroyedWhere = (filter.otherStructuresDestroyed) ? `( ${originFields.structuresDestroyed} > 0 )` : `( ${originFields.structuresDestroyed} = 0 OR ${originFields.structuresDestroyed} IS NULL )`\r\n terms.push(otherStructuresDestroyedWhere);\r\n }\r\n\r\n if (filter.residencesThreatened !== null) {\r\n const residencesThreatenedWhere = (filter.residencesThreatened) ? `( ${originFields.residencesThreatened} > 0 )` : `( ${originFields.residencesThreatened} = 0 OR ${originFields.residencesThreatened} IS NULL )`\r\n terms.push(residencesThreatenedWhere);\r\n }\r\n\r\n if (filter.otherStructuresThreatened !== null) {\r\n const otherStructuresThreatenedWhere = (filter.otherStructuresThreatened) ? `( ${originFields.otherStructuresThreatened} > 0 )` : `( ${originFields.otherStructuresThreatened} = 0 OR ${originFields.otherStructuresThreatened} IS NULL )`\r\n terms.push(otherStructuresThreatenedWhere);\r\n }\r\n\r\n const modifiedBySystemWhere = (filter.modifiedBySystem && filter.modifiedBySystem.length > 0) ? `( ${originFields.modifiedBySystem} IN ('${filter.modifiedBySystem.join(\"', '\")}') )` : null;\r\n terms.push(modifiedBySystemWhere);\r\n\r\n let createdBySystemWhere = (filter.createdBySystem && filter.createdBySystem.length > 0) ? `( ${originFields.createdBySystem} IN ('${filter.createdBySystem.join(\"', '\")}') )` : null;\r\n if (!createdBySystemWhere) {\r\n createdBySystemWhere = `( ${originFields.createdBySystem} NOT IN ('irwinimp') )`;\r\n }\r\n\r\n terms.push(createdBySystemWhere);\r\n\r\n if (filter.certified !== null) //TODO: Whatever this was, change it.\r\n {\r\n const isFederal = `(${originFields.incidentJurisdictionalAgency} IN ('${consts.federal_POOJurisdictionalAgency.join(\"', '\")}'))`;\r\n const isNonFederal = `(${originFields.incidentJurisdictionalAgency} IS NULL OR ${originFields.incidentJurisdictionalAgency} NOT IN ('${consts.federal_POOJurisdictionalAgency.join(\"', '\")}'))`;\r\n const federalHasRequired = `(${originFields.requiredFederal.join(\" IS NOT NULL AND \")} IS NOT NULL )`;\r\n const nonFederalHasRequired = `(${originFields.requiredAllAgencies.join(\" IS NOT NULL AND \")} IS NOT NULL )`;\r\n\r\n const federalComplete = `(${isFederal} AND ${federalHasRequired})`;\r\n const federalIncomplete = `(${isFederal} AND NOT ${federalHasRequired})`;\r\n\r\n const nonFederalComplete = `(${isNonFederal} AND ${nonFederalHasRequired})`;\r\n const nonFederalIncomplete = `(${isNonFederal} AND NOT ${nonFederalHasRequired})`;\r\n\r\n const certifiedWhere = `( ${originFields.certifiedField} = '${originFields.certifiedCodedValue}' AND IsValid = 1 AND ${originFields.isQuarantined} = 0)`;\r\n const completeWhere = `( NOT ${certifiedWhere} AND (${federalComplete} OR ${nonFederalComplete}) AND IsValid = 1 AND ${originFields.isQuarantined} = 0)`;\r\n const incompleteWhere = `((${federalIncomplete} OR ${nonFederalIncomplete}) AND IsValid = 1 AND ${originFields.isQuarantined} = 0 AND ${originFields.certifiedField} <> '${originFields.certifiedCodedValue}')`;\r\n\r\n //const isQuarantinedOptionalWhere = `(${originFields.isQuarantined} IN (0,1) AND IsValid = 1)`;\r\n const isQuarantinedOnlyWhere = `(${originFields.isQuarantined} = 1 AND IsValid = 1)`;\r\n const isNotQuarantinedOnlyWhere = `(${originFields.isQuarantined} = 0 AND IsValid = 1)`;\r\n\r\n var certified = filter.certified;\r\n let foundCert = false;\r\n\r\n let certifiedSubterms = [];\r\n\r\n if (certified.includes(\"ALL\") || !certified) {\r\n const allStatusTypes = `(${originFields.isQuarantined} IN (0,1) AND IsValid = 1)`;\r\n terms.push(allStatusTypes);\r\n }\r\n else {\r\n for (let i = 0; i < certified.length; i++) {\r\n if (certified[i] === consts.incidentStatus.certified) {\r\n certifiedSubterms.push(certifiedWhere);\r\n foundCert = true;\r\n }\r\n\r\n if (certified[i] === consts.incidentStatus.complete) {\r\n certifiedSubterms.push(completeWhere);\r\n foundCert = true;\r\n }\r\n\r\n if (certified[i] === consts.incidentStatus.incomplete) {\r\n certifiedSubterms.push(incompleteWhere);\r\n foundCert = true;\r\n }\r\n\r\n if (certified[i] === consts.incidentStatus.conflict) {\r\n certifiedSubterms.push(isQuarantinedOnlyWhere);\r\n foundCert = true;\r\n }\r\n\r\n if (certified[i] === 'IsNotQuarantined') {\r\n certifiedSubterms.push(isNotQuarantinedOnlyWhere);\r\n foundCert = true;\r\n }\r\n }\r\n\r\n if (!foundCert) {\r\n const allStatusTypes = `(${originFields.isQuarantined} IN (0,1) AND IsValid = 1)`;\r\n terms.push(allStatusTypes);\r\n }\r\n else {\r\n if (certified.length === 1) {\r\n terms.push(\"(\" + certifiedSubterms[0] + \") AND IsValid = 1\");\r\n }\r\n else {\r\n let certifiedSubClause = \"(\" + certifiedSubterms.join(\" OR \") + \" AND IsValid = 1)\";\r\n terms.push(certifiedSubClause);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n const allStatusTypes = `(${originFields.isQuarantined} IN (0,1) AND IsValid = 1)`;\r\n terms.push(allStatusTypes);\r\n }\r\n\r\n if (filter.narrativeFilter) {\r\n const reportWhere = `( ${filter.narrativeFilter} )`;\r\n terms.push(reportWhere);\r\n }\r\n\r\n if (filter.incidentJurisdictionalAgency) {\r\n const incidentJurisdictionalAgencyWhere = `( UPPER(${originFields.incidentJurisdictionalAgency}) LIKE '%${filter.incidentJurisdictionalAgency.toUpperCase()}%' )`;\r\n terms.push(incidentJurisdictionalAgencyWhere);\r\n }\r\n\r\n if (filter.dispatchCenterID) {\r\n const dispatchCenterIDWhere = `( UPPER(${originFields.pooDispatchCenterID}) LIKE '${filter.dispatchCenterID.toUpperCase()}%' )`;\r\n terms.push(dispatchCenterIDWhere);\r\n }\r\n\r\n if (filter.jurisdictionalUnit) {\r\n const jurisdictionalUnitWhere = `( UPPER(${originFields.jurisdictionalUnit}) LIKE '%${filter.jurisdictionalUnit.toUpperCase()}%' )`;\r\n terms.push(jurisdictionalUnitWhere);\r\n }\r\n\r\n if (filter.pooProtectingUnit) {\r\n const pooProtectingUnitWhere = `( UPPER(${originFields.pooProtectingUnit}) LIKE '%${filter.pooProtectingUnit.toUpperCase()}%' )`;\r\n terms.push(pooProtectingUnitWhere);\r\n }\r\n\r\n if (filter.pooProtectingAgency) {\r\n const pooProtectingAgencyWhere = `( UPPER(${originFields.pooProtectingAgency}) LIKE '%${filter.pooProtectingAgency.toUpperCase()}%' )`;\r\n terms.push(pooProtectingAgencyWhere);\r\n }\r\n\r\n let overrideUniqueIdWhere = null;\r\n if (filter.uniqueFireIds && filter.uniqueFireIds.length > 0) {\r\n overrideUniqueIdWhere = `( ${originFields.forId} IN ('${filter.uniqueFireIds.join(\"', '\")}') )`\r\n }\r\n\r\n \r\n const validTerms = terms.filter(cause => cause !== null);\r\n let where = (validTerms.length === 0) ? this.config.originLayer.defaultWhere : validTerms.join(\" AND \");\r\n\r\n if (overrideUniqueIdWhere) \r\n {\r\n where = (where) ? `(${where}) OR ${overrideUniqueIdWhere}` : null;\r\n }\r\n \r\n this.setSearchWidgetDefinition(where);\r\n let spatialGeometry;\r\n if (filter.geometry) \r\n {\r\n const rings = (filter.geometry.rings) ? filter.geometry.rings : filter.geometry.geometry.rings;\r\n const poly = new Polygon({\r\n rings: rings,\r\n spatialReference: { wkid: 3857 }\r\n }); \r\n\r\n this.handleSetSpatialFilterPolygon(poly);\r\n spatialGeometry = filter.geometry;\r\n this.queryForFeatures(where, spatialGeometry, done);\r\n } \r\n else if (filter.hasSpatialFilter)\r\n {\r\n window.api.getSpatialFilterById(filter.spatialFilterID).then( response => {\r\n \r\n //this.props.setFilterGeometry(response.geometry);\r\n \r\n spatialGeometry = response.geometry;\r\n\r\n const poly = new Polygon({\r\n rings: response.geometry.rings,\r\n spatialReference: { wkid: 3857 }\r\n }); \r\n\r\n this.handleSetSpatialFilterPolygon(poly);\r\n this.queryForFeatures(where, spatialGeometry, done);\r\n });\r\n } \r\n else\r\n {\r\n this.spatialFilterGraphicsLayer.removeAll();\r\n var extents = this.view.extent.normalize();\r\n spatialGeometry = this.view.extent;\r\n if (extents.length > 1) \r\n {\r\n this.queryForMultiExtentFeatures(where, extents[0], extents[1], done); \r\n } \r\n else \r\n {\r\n this.queryForFeatures(where, extents[0], done);\r\n }\r\n }\r\n }\r\n else {\r\n failed('layer not found');\r\n }\r\n });\r\n }\r\n\r\n setSearchWidgetDefinition = (whereClause) => \r\n {\r\n var mySource = this.searchWidget.sources.items[0];\r\n mySource.filter = { where: whereClause};\r\n } \r\n\r\n queryForFeatures = (where, spatialGeometry, done) => {\r\n\r\n loadModules(['esri/Graphic', 'esri/geometry/Point', 'esri/geometry/SpatialReference'])\r\n .then(([Graphic, Point, SpatialReference]) => {\r\n\r\n this.originFeatureLayer.definitionExpression = where;\r\n\r\n const queryUrl = this.originFeatureLayer.url + '/' + this.originFeatureLayer.layerId + '/query';\r\n window.api.getIncidentCountForQuery(spatialGeometry, where, queryUrl).then(featureCount => {\r\n if (featureCount > 0) \r\n {\r\n window.api.getIncidentsForQuery(spatialGeometry, 0, [], where, queryUrl, this.maxCountForIncidents).then(features => \r\n {\r\n \r\n this.fodrGraphicsLayer.graphics.removeAll();\r\n\r\n for (var i = 0; i < features.length; i++) {\r\n const currentFeature = features[i];\r\n var symbol = this.getSymbolForFeature(currentFeature, this.getRenderValueForFeature(currentFeature));\r\n symbol.size = this.getSizeForSymbol(currentFeature.attributes.IncidentSize);\r\n\r\n const g = new Graphic({\r\n geometry: new Point({\r\n x: currentFeature.geometry.x,\r\n y: currentFeature.geometry.y,\r\n spatialReference: new SpatialReference(3857)\r\n }),\r\n attributes: currentFeature.attributes,\r\n symbol: symbol,\r\n popupTemplate: this.originPopupTemplate\r\n }); \r\n \r\n this.fodrGraphicsLayer.graphics.add(g);\r\n } \r\n done(\r\n {\r\n total: featureCount, \r\n features: features\r\n });\r\n \r\n });\r\n } \r\n else \r\n {\r\n this.fodrGraphicsLayer.graphics.removeAll();\r\n \r\n done(\r\n {\r\n total: 0, \r\n features: []\r\n });\r\n }\r\n });\r\n });\r\n }\r\n\r\n queryForMultiExtentFeatures = (where, extent1, extent2, done) => {\r\n\r\n loadModules(['esri/Graphic', 'esri/geometry/Point', 'esri/geometry/SpatialReference'])\r\n .then(([Graphic, Point, SpatialReference]) => {\r\n\r\n this.originFeatureLayer.definitionExpression = where;\r\n\r\n const queryUrl = this.originFeatureLayer.url + '/' + this.originFeatureLayer.layerId + '/query';\r\n \r\n this.fodrGraphicsLayer.graphics.removeAll();\r\n\r\n let totalFeatureCount = 0;\r\n var totalFeatures = [];\r\n\r\n window.api.getIncidentCountForQuery(extent1, where, queryUrl).then(featureCount1 => {\r\n totalFeatureCount += featureCount1;\r\n window.api.getIncidentsForQuery(extent1, 0, [], where, queryUrl, this.maxCountForIncidents).then(features1 => \r\n {\r\n for (var i = 0; i < features1.length; i++) {\r\n const currentFeature = features1[i];\r\n var symbol = this.getSymbolForFeature(currentFeature, this.getRenderValueForFeature(currentFeature));\r\n symbol.size = this.getSizeForSymbol(currentFeature.attributes.IncidentSize);\r\n\r\n const g = new Graphic({\r\n geometry: new Point({\r\n x: currentFeature.geometry.x,\r\n y: currentFeature.geometry.y,\r\n spatialReference: new SpatialReference(3857)\r\n }),\r\n attributes: currentFeature.attributes,\r\n symbol: symbol,\r\n popupTemplate: this.originPopupTemplate\r\n }); \r\n \r\n totalFeatures.push(currentFeature);\r\n this.fodrGraphicsLayer.graphics.add(g);\r\n }\r\n \r\n window.api.getIncidentCountForQuery(extent2, where, queryUrl).then(featureCount2 => {\r\n totalFeatureCount += featureCount2;\r\n window.api.getIncidentsForQuery(extent2, 0, [], where, queryUrl, this.maxCountForIncidents).then(features2 => \r\n {\r\n \r\n //this.fodrGraphicsLayer.graphics.removeAll();\r\n \r\n for (var i = 0; i < features2.length; i++) {\r\n const currentFeature = features2[i];\r\n var symbol = this.getSymbolForFeature(currentFeature, this.getRenderValueForFeature(currentFeature));\r\n symbol.size = this.getSizeForSymbol(currentFeature.attributes.IncidentSize);\r\n \r\n const g = new Graphic({\r\n geometry: new Point({\r\n x: currentFeature.geometry.x,\r\n y: currentFeature.geometry.y,\r\n spatialReference: new SpatialReference(3857)\r\n }),\r\n attributes: currentFeature.attributes,\r\n symbol: symbol,\r\n popupTemplate: this.originPopupTemplate\r\n }); \r\n \r\n totalFeatures.push(currentFeature);\r\n this.fodrGraphicsLayer.graphics.add(g);\r\n }\r\n \r\n done(\r\n {\r\n total: totalFeatureCount, \r\n features: totalFeatures\r\n });\r\n\r\n });\r\n })\r\n });\r\n });\r\n });\r\n}\r\n\r\n handleGetOriginFields = (done, failed) => {\r\n loadModules(['esri/layers/support/Field'])\r\n .then(([Field]) => {\r\n if (this.originFeatureLayer) {\r\n const fields = this.originFeatureLayer.fields.concat(\r\n [\r\n new Field({\r\n alias: \"Latitude\",\r\n name: \"y\",\r\n type: \"double\"\r\n }),\r\n new Field({\r\n alias: \"Longitude\",\r\n name: \"x\",\r\n type: \"double\"\r\n })\r\n ]\r\n );\r\n done(fields);\r\n }\r\n else {\r\n failed('Point of origin layer not found');\r\n }\r\n });\r\n }\r\n\r\n handleOriginWithinPerimeter = (perimeter, x, y, done, failed) => {\r\n loadModules(['esri/geometry/Polygon', 'esri/geometry/Point', 'esri/geometry/SpatialReference'])\r\n .then(([Polygon, Point, SpatialReference]) => {\r\n\r\n const incidentGeometry = new Point({\r\n x: x,\r\n y: y,\r\n spatialReference: new SpatialReference(4269)\r\n });\r\n\r\n if (perimeter === undefined || perimeter === null || incidentGeometry === undefined || incidentGeometry === null) \r\n {\r\n done(false);\r\n }\r\n else {\r\n let perimeterPolygon = new Polygon(perimeter.geometry);\r\n const wasContained = perimeterPolygon.contains(incidentGeometry);\r\n done(wasContained);\r\n }\r\n });\r\n }\r\n\r\n handleOriginUpdateEnd = (cb, done, failed) => {\r\n\r\n if (this.originLayerView) {\r\n let handle = this.originLayerView.watch('updating', isUpdating => {\r\n if (isUpdating) {\r\n cb({ updating: true }, handle);\r\n }\r\n else {\r\n let query = this.originFeatureLayer.createQuery();\r\n query.returnGeometry = true;\r\n\r\n this.originLayerView.queryFeatures(query).then(\r\n results => {\r\n\r\n const filterResultsForPerimeter = (this.shouldFilterOnPerimeters && this.perimeterFilterIrwinIds && this.perimeterFilterIrwinIds.length > 0);\r\n\r\n const features = results ? results.features : [];\r\n const inViewGraphics = features.filter(graphic => this.view.extent.contains(graphic.geometry));\r\n const graphics = features.map(graphic => {\r\n return {\r\n attributes: graphic.attributes,\r\n geometry: graphic.geometry\r\n }\r\n });\r\n\r\n const visibleGraphics = inViewGraphics.map(graphic => {\r\n return {\r\n attributes: graphic.attributes,\r\n geometry: graphic.geometry\r\n }\r\n });\r\n\r\n cb({\r\n updating: false,\r\n graphics: (filterResultsForPerimeter) ? graphics.filter(graphic => this.perimeterFilterIrwinIds.includes(graphic.attributes[originFields.irwinId])) : graphics,\r\n visibleGraphics: (filterResultsForPerimeter) ? visibleGraphics.filter(graphic => this.perimeterFilterIrwinIds.includes(graphic.attributes[originFields.irwinId])) : visibleGraphics\r\n },\r\n handle\r\n )\r\n });\r\n }\r\n });\r\n\r\n\r\n }\r\n else {\r\n failed('Origin Layer View not found');\r\n }\r\n }\r\n\r\n\r\n handleGetOriginFeature = (id, done, failed) => {\r\n loadModules(['esri/rest/support/Query', 'esri/tasks/QueryTask', 'esri/geometry/support/webMercatorUtils'])\r\n .then(([Query, QueryTask, webMercatorUtils]) => {\r\n if (this.originLayerView) {\r\n\r\n let query = new Query({\r\n outFields: ['*'],\r\n where: `(${originFields.irwinId} = '${id}' AND ${originFields.isQuarantined} IN (0,1) AND IsValid = 1)`,\r\n returnGeometry: true,\r\n outSpatialReference: this.view.spatialReference.toJSON()\r\n });\r\n\r\n const url = this.originApiItem.url + '/0';\r\n\r\n let queryTask = new QueryTask({ url: url });\r\n\r\n queryTask.execute(query).then(results => {\r\n let feature = null;\r\n\r\n if (results.features.length === 1) {\r\n\r\n const graphic = results.features[0];\r\n let geomWGS84 = webMercatorUtils.webMercatorToGeographic(graphic.geometry);\r\n feature = {\r\n attributes: Object.assign({}, graphic.attributes,\r\n {\r\n \"_pointGeometryLatitude\": geomWGS84.y, //TODO: Can we just nuke _pointGeometryLatitude ?\r\n \"_pointGeometryLongitude\": geomWGS84.x\r\n }\r\n ),\r\n geometry: graphic.geometry.toJSON()\r\n };\r\n }\r\n done(feature);\r\n });\r\n }\r\n });\r\n }\r\n\r\n handleGetOriginFeatures = (geometry, done, failed) => {\r\n loadModules(['esri/rest/support/Query'])\r\n .then(([Query]) => {\r\n const query = (!geometry) ? null : new Query({\r\n geometry: geometry,\r\n spatialRelationship: \"contains\",\r\n returnGeometry: true\r\n });\r\n if (this.originLayerView) {\r\n const filterResultsForPerimeter = (this.shouldFilterOnPerimeters && this.perimeterFilterIrwinIds && this.perimeterFilterIrwinIds.length > 0);\r\n\r\n this.originLayerView.queryFeatures(query).then(\r\n results => {\r\n\r\n const featureToMapFrom = (filterResultsForPerimeter) ? results.features.filter(graphic => this.perimeterFilterIrwinIds.includes(graphic.attributes[originFields.irwinId])) : results.features;\r\n\r\n done({\r\n graphics: featureToMapFrom.map(graphic => {\r\n return {\r\n attributes: graphic.attributes,\r\n geometry: graphic.geometry\r\n }\r\n })\r\n })\r\n }\r\n );\r\n }\r\n else {\r\n failed('Origin Layer View null');\r\n }\r\n\r\n });\r\n }\r\n\r\n handleGetFullOriginFeaturesFromApi = async (ids, done, failed) => {\r\n\r\n loadModules(['esri/rest/support/Query', 'esri/tasks/QueryTask'])\r\n .then(([Query, QueryTask]) => {\r\n const query = new Query({\r\n where: `( ${originFields.irwinId} IN ('${ids.join(\"', '\")}') AND ${originFields.isQuarantined} IN (0,1) AND IsValid = 1)`,\r\n outFields: ['*'],\r\n returnGeometry: true\r\n });\r\n\r\n const url = this.originApiItem.url + '/0';\r\n const queryTask = new QueryTask({ url: url });\r\n\r\n queryTask.execute(query).then(results => {\r\n done({\r\n graphics: (!results.features) ? [] : results.features.map(graphic => {\r\n return {\r\n attributes: Object.assign({}, graphic.attributes,\r\n {\r\n \"_pointGeometryLatitude\": graphic.geometry.y,\r\n \"_pointGeometryLongitude\": graphic.geometry.x\r\n }\r\n ),\r\n geometry: null\r\n }\r\n })\r\n });\r\n\r\n });\r\n });\r\n }\r\n\r\n\r\n handleSetOriginSelectionGraphic = (point, done, failed) => {\r\n\r\n this.originSelectionGraphicsLayer.removeAll();\r\n\r\n this.originSelectionGraphicsLayer.add({\r\n geometry: point,\r\n symbol: this.originSelectionSymbol\r\n });\r\n\r\n done();\r\n }\r\n\r\n handleSetOriginSelectionGraphics = (args, done, failed) => {\r\n loadModules(['esri/geometry/Point'])\r\n .then(([Point]) => {\r\n\r\n if (args.clearExisting) \r\n {\r\n this.originSelectionGraphicsLayer.removeAll();\r\n }\r\n \r\n if (args.graphics) \r\n {\r\n args.graphics.map(graphic => {\r\n if (graphic && (graphic.geometry)) \r\n {\r\n const point = new Point({\r\n x: graphic.geometry.x,\r\n y: graphic.geometry.y,\r\n spatialReference: {\r\n wkid: 3857\r\n }\r\n });\r\n\r\n return this.originSelectionGraphicsLayer.add({\r\n geometry: point,\r\n attributes: graphic.attributes,\r\n symbol: (args.useDisabledSymbol) ? this.originDisabledSymbol : this.originSelectionSymbol\r\n });\r\n }\r\n else \r\n {\r\n return null;\r\n }\r\n\r\n });\r\n }\r\n\r\n done();\r\n });\r\n }\r\n\r\n handleClearOriginSelectionGraphics = (args, done, failed) => {\r\n if (args.clearExisting) {\r\n this.originSelectionGraphicsLayer.removeAll();\r\n }\r\n else if (args.graphics && args.graphics.length > 0) {\r\n const selectedUniqueIds = args.graphics.map(graphic => { return (graphic) ? graphic.attributes[originFields.forId] : null; });\r\n this.originSelectionGraphicsLayer.graphics.removeMany(\r\n this.originSelectionGraphicsLayer.graphics.filter(graphic => {\r\n return (graphic.attributes) ? selectedUniqueIds.includes(graphic.attributes[originFields.forId]) : true;\r\n })\r\n );\r\n }\r\n done();\r\n }\r\n\r\n handleSetOriginVisible = (visible, done, failed) => {\r\n if (!this.originFeatureLayer) {\r\n failed();\r\n return;\r\n }\r\n\r\n this.originFeatureLayer.visible = visible;\r\n this.fodrGraphicsLayer.visible = visible;\r\n done();\r\n }\r\n\r\n handleClearPerimeterGraphics = (done, failed) => {\r\n if (!this.perimeterGraphicsLayer) {\r\n failed();\r\n return;\r\n }\r\n\r\n this.perimeterGraphicsLayer.removeAll();\r\n done();\r\n }\r\n\r\n handleSetPerimeterGraphic = (perimeter, done, failed) => {\r\n loadModules(['esri/geometry/support/jsonUtils'])\r\n .then(([geometryJsonUtils]) => {\r\n\r\n if (!this.perimeterGraphicsLayer) {\r\n failed();\r\n return;\r\n }\r\n\r\n this.perimeterGraphicsLayer.removeAll();\r\n this.perimeterGraphicsLayer.add({\r\n geometry: geometryJsonUtils.fromJSON(perimeter.geometry),\r\n attributes: perimeter.attributes,\r\n symbol: symbols.selectedPerimeterSymbol\r\n });\r\n done();\r\n });\r\n }\r\n\r\n handleSetVisiblePerimeters = (args, done, failed) => {\r\n if (!this.perimeterFeatureLayer) {\r\n console.log(\"Could not set visible perimeters, perimeterFeatureLayer not found.\")\r\n failed();\r\n return;\r\n }\r\n\r\n this.getCurrentPerimeterFeatures(args.id, args.useFinalService).then(\r\n results => {\r\n var targetPerimeterLayer = (args.useFinalService) ? this.finalPerimeterFeatureLayer : this.perimeterFeatureLayer;\r\n const oidField = targetPerimeterLayer.objectIdField;\r\n let features = [];\r\n const foundFeatures = (results.features && results.features.length > 0 && results.features[0] !== undefined);\r\n\r\n if (foundFeatures) {\r\n features = results.features;\r\n const oids = results.features.map(f => { return f.attributes[oidField]; });\r\n const oidWhere = ` ${targetPerimeterLayer.objectIdField} IN (${oids.join(\", \")}) `;\r\n targetPerimeterLayer.visible = true;\r\n targetPerimeterLayer.definitionExpression = oidWhere;\r\n }\r\n else {\r\n //this.finalPerimeterFeatureLayer.definitionExpression = '';\r\n //this.finalPerimeterFeatureLayer.visible = false;\r\n //this.perimeterFeatureLayer.definitionExpression = '';\r\n // this.perimeterFeatureLayer.visible = false;\r\n }\r\n done({ features: (args.returnFeatures) ? features : null })\r\n },\r\n error => {\r\n //this.finalPerimeterFeatureLayer.definitionExpression = '';\r\n //this.finalPerimeterFeatureLayer.visible = false;\r\n // this.perimeterFeatureLayer.definitionExpression = '';\r\n // this.perimeterFeatureLayer.visible = false;\r\n failed();\r\n }\r\n\r\n )\r\n }\r\n\r\n handleClearVisiblePerimeters = (args, done, failed) => {\r\n if (this.perimeterFeatureLayer) {\r\n // this.perimeterFeatureLayer.visible = false;\r\n // this.perimeterFeatureLayer.definitionExpression = \"1=2\";\r\n // this.perimeterFeatureLayer.refresh();\r\n\r\n //this.finalPerimeterFeatureLayer.visible = false;\r\n // this.finalPerimeterFeatureLayer.definitionExpression = \"1=2\";\r\n //this.finalPerimeterFeatureLayer.refresh();\r\n }\r\n done();\r\n }\r\n\r\n handleSetPerimetersSymbol = (args, done, failed) => {\r\n loadModules(['esri/renderers/SimpleRenderer'])\r\n .then(([SimpleRenderer]) => {\r\n if (this.perimeterFeatureLayer) {\r\n const renderer = new SimpleRenderer({ symbol: args.symbol });\r\n this.perimeterFeatureLayer.renderer = renderer;\r\n this.perimeterFeatureLayer.refresh();\r\n }\r\n\r\n if (this.finalPerimeterFeatureLayer) {\r\n const renderer = new SimpleRenderer({ symbol: args.symbol });\r\n this.finalPerimeterFeatureLayer.renderer = renderer;\r\n this.finalPerimeterFeatureLayer.refresh();\r\n }\r\n done();\r\n });\r\n }\r\n\r\n getCurrentPerimeterFeatures = (irwinId, useFinalService) => {\r\n return new Promise((resolve, reject) => {\r\n loadModules(['esri/rest/support/Query', 'esri/tasks/QueryTask'])\r\n .then(([Query, QueryTask]) => {\r\n\r\n resolve({ feature: [] });\r\n\r\n //TODO: Resolve Perimeter issues\r\n if (!this.perimeterFeatureLayer || (useFinalService && !this.finalPerimeterFeatureLayer)) {\r\n resolve({ feature: [] });\r\n return;\r\n }\r\n //remove guid braces { }\r\n let idStore = {};\r\n\r\n const formattedId = irwinId.replace(/\\{|\\}/g, '');\r\n idStore[irwinId] = { maxDate: -1 };\r\n\r\n let idWhere = `( ${uncertifiedPerimeterFields.irwinId} = '${formattedId}' OR ${uncertifiedPerimeterFields.irwinId} = '${irwinId}')`;\r\n if (!useFinalService) {\r\n idWhere += \" AND (DeleteThis IS NULL OR DeleteThis = 'NO' OR DeleteThis = 'No')\"\r\n }\r\n const perimeterTypes = uncertifiedPerimeterFields.perimeterTypeFeatureCategories;\r\n const featureCategoryWhereWhere = `${uncertifiedPerimeterFields.featureCategory} IN ('${perimeterTypes.join(\"', '\")}')`\r\n\r\n //where: `${idWhere} AND ${featureCategoryWhereWhere} AND SHAPE IS NOT NULL`,\r\n\r\n const query = new Query({\r\n where: `${idWhere} AND ${featureCategoryWhereWhere}`,\r\n outFields: [\"*\"],\r\n returnGeometry: true\r\n });\r\n const url = (useFinalService) ? (this.finalPerimeterFeatureLayer.url + '/' + this.finalPerimeterFeatureLayer.layerId) : (this.perimeterFeatureLayer.url + '/' + this.perimeterFeatureLayer.layerId);\r\n const perimetersToken = (useFinalService) ? this.finalPerimeterFeatureLayer.token : this.perimeterFeatureLayer.token;\r\n const queryTask = new QueryTask({ url: url });\r\n const dateField = uncertifiedPerimeterFields.mostCurrentDateField;\r\n\r\n queryTask.execute(query, { token: perimetersToken }).then(\r\n results => {\r\n if (results.features && results.features.length > 0) {\r\n for (let i = 0; i < results.features.length; i++) {\r\n const feature = results.features[i];\r\n\r\n\r\n if (feature.attributes[\"FeatureStatus\"] === \"proposed\") {\r\n feature.attributes[\"FeatureStatus\"] = \"Proposed\";\r\n }\r\n\r\n let irwinId = feature.attributes[uncertifiedPerimeterFields.irwinId].toUpperCase();\r\n\r\n let irwinKey = (irwinId.slice(-1) !== '}' && irwinId.charAt(0) !== '{') ? '{' + irwinId + '}' : irwinId;\r\n\r\n const date = new Date(feature.attributes[dateField]).getTime();\r\n if (date > idStore[irwinKey].maxDate && (feature.geometry) && feature.geometry.rings.length > 0) {\r\n idStore[irwinKey].maxDate = date;\r\n idStore[irwinKey].feature = {\r\n\r\n attributes: Object.assign({}, feature.attributes,\r\n {\r\n \"PerimeterSource\": (useFinalService) ? uncertifiedPerimeterFields.finalPerimeterSource : uncertifiedPerimeterFields.nifsPerimeterSource\r\n }),\r\n geometry: feature.geometry.toJSON()\r\n };\r\n }\r\n }\r\n\r\n let features = []\r\n for (var prop in idStore) {\r\n // skip loop if the property is from prototype\r\n if (idStore.hasOwnProperty(prop)) {\r\n const item = idStore[prop];\r\n features.push(item.feature)\r\n }\r\n\r\n }\r\n resolve({ features: features });\r\n }\r\n else {\r\n //IMH: No features found. Try again with NIFS if we were checking final, or resolve with nothing.\r\n if (useFinalService) {\r\n return this.getCurrentPerimeterFeatures(irwinId, false);\r\n }\r\n else {\r\n resolve({ feature: [] });\r\n }\r\n }\r\n },\r\n error => {\r\n reject();\r\n }\r\n );\r\n });\r\n });\r\n }\r\n\r\n getPerimeterFeaturesForIrwinIds = async (irwinIds) => {\r\n return new Promise((resolve, reject) => {\r\n loadModules(['esri/rest/support/Query', 'esri/tasks/QueryTask'])\r\n .then(([Query, QueryTask]) => {\r\n if (!this.perimeterFeatureLayer) {\r\n resolve({ feature: [] });\r\n return;\r\n }\r\n let idClauses = [];\r\n let idStore = {};\r\n\r\n for (var i = 0; i < irwinIds.length; i++) {\r\n idClauses.push(\"'\" + irwinIds[i].replace(/\\{|\\}/g, '') + \"'\");\r\n idClauses.push(\"'\" + irwinIds[i] + \"'\");\r\n idStore[irwinIds[i]] = { maxDate: -1 };\r\n if (i === 1999) { break; } //Geoplatform has a 2000 record limit\r\n }\r\n //remove guid braces { }\r\n //const formattedId = irwinId.replace(/\\{|\\}/g,'');\r\n\r\n const idWhere = `${uncertifiedPerimeterFields.irwinId} IN (${idClauses.join(\",\")})`;\r\n\r\n const query = new Query({\r\n where: `${idWhere}`,\r\n outFields: [\"*\"],\r\n returnGeometry: false\r\n });\r\n const url = (this.perimeterFeatureLayer.url + '/' + this.perimeterFeatureLayer.layerId);\r\n const queryTask = new QueryTask({ url: url });\r\n const dateField = uncertifiedPerimeterFields.mostCurrentDateField;\r\n\r\n queryTask.execute(query, { token: this.perimeterFeatureLayer.token }).then(\r\n results => {\r\n if (results.features && results.features.length > 0) {\r\n for (let i = 0; i < results.features.length; i++) {\r\n const feature = results.features[i];\r\n let irwinId = feature.attributes[uncertifiedPerimeterFields.irwinId].toUpperCase();\r\n\r\n let irwinKey = (irwinId.slice(-1) !== '}' && irwinId.charAt(0) !== '{') ? '{' + irwinId + '}' : irwinId;\r\n\r\n const date = new Date(feature.attributes[dateField]).getTime();\r\n if (idStore[irwinKey] !== undefined && date > idStore[irwinKey].maxDate) {\r\n idStore[irwinKey].maxDate = date;\r\n idStore[irwinKey].feature = {\r\n\r\n attributes: Object.assign({}, feature.attributes,\r\n {\r\n \"PerimeterSource\": uncertifiedPerimeterFields.nifsPerimeterSource\r\n })\r\n };\r\n }\r\n }\r\n\r\n let features = []\r\n for (var prop in idStore) {\r\n // skip loop if the property is from prototype\r\n if (idStore.hasOwnProperty(prop)) {\r\n const item = idStore[prop];\r\n features.push(item.feature)\r\n }\r\n\r\n }\r\n resolve({ features: features });\r\n } else {\r\n resolve({ features: [] });\r\n }\r\n },\r\n error => {\r\n reject();\r\n }\r\n );\r\n });\r\n });\r\n }\r\n\r\n handleSetModifiedPerimeter = (args, done, failed) => {\r\n loadModules(['esri/geometry/support/jsonUtils'])\r\n .then(([geometryJsonUtils]) => {\r\n this.perimeterModifiedGraphicsLayer.removeAll();\r\n if (args.graphics) {\r\n args.graphics.map(graphic => {\r\n if (graphic) {\r\n return this.perimeterModifiedGraphicsLayer.add({\r\n geometry: geometryJsonUtils.fromJSON(graphic.geometry),\r\n attributes: graphic.attributes,\r\n symbol: symbols.selectedPerimeterSymbol\r\n });\r\n }\r\n else {\r\n return null;\r\n }\r\n\r\n });\r\n }\r\n\r\n done();\r\n });\r\n }\r\n\r\n handleAddDebugGraphic = (graphic, attributes, isConflict, done, failed) => {\r\n loadModules(['esri/geometry/support/jsonUtils'])\r\n .then(([geometryJsonUtils]) => {\r\n return this.debugGraphicsLayer.add({\r\n geometry: geometryJsonUtils.fromJSON(graphic),\r\n attributes: attributes,\r\n symbol: (isConflict) ? symbols.debugIncidentGraphic : symbols.debugBlueIncidentGraphic\r\n });\r\n });\r\n }\r\n\r\n handleSetModifiedPerimeterNoClear = (args, done, failed) => {\r\n loadModules(['esri/geometry/support/jsonUtils'])\r\n .then(([geometryJsonUtils]) => {\r\n if (args.graphics) {\r\n args.graphics.map(graphic => {\r\n if (graphic) {\r\n return this.perimeterModifiedGraphicsLayer.add({\r\n geometry: geometryJsonUtils.fromJSON(graphic.geometry),\r\n attributes: graphic.attributes,\r\n symbol: symbols.selectedPerimeterSymbol\r\n });\r\n }\r\n else {\r\n return null;\r\n }\r\n\r\n });\r\n }\r\n\r\n done();\r\n });\r\n }\r\n\r\n handleClearModifiedPerimeter = (args, done, failed) => {\r\n this.perimeterModifiedGraphicsLayer.removeAll();\r\n done();\r\n }\r\n\r\n setSpatialFilterGraphic = (geometryJSON) => {\r\n loadModules([\r\n 'esri/geometry/geometryEngine',\r\n 'esri/geometry/support/jsonUtils',\r\n 'esri/geometry/support/webMercatorUtils'\r\n ])\r\n .then(([GeometryEngine, geometryJsonUtils, WebMercatorUtils]) => {\r\n\r\n if (geometryJSON === null) \r\n {\r\n return;\r\n }\r\n\r\n this.spatialFilterGraphicsLayer.removeAll();\r\n let geometry = geometryJsonUtils.fromJSON(geometryJSON)\r\n if (geometry.spatialReference.isGeographic) \r\n {\r\n geometry = WebMercatorUtils.geographicToWebMercator(geometry);\r\n }\r\n\r\n var maskGeometry = GeometryEngine.difference(this.universeWebMercator, geometry);\r\n\r\n this.spatialFilterGraphicsLayer.add({\r\n geometry: maskGeometry,\r\n symbol: symbols.maskSymbol\r\n })\r\n });\r\n }\r\n\r\n handleSetSpatialFilterPolygon = (polygon) => {\r\n loadModules([\r\n 'esri/geometry/geometryEngine',\r\n ])\r\n .then(([GeometryEngine]) => {\r\n\r\n this.spatialFilterPolygon = polygon;\r\n this.spatialFilterGraphicsLayer.removeAll();\r\n if (polygon === null) \r\n {\r\n return;\r\n }\r\n \r\n this.spatialFilterGraphicsLayer.add({\r\n geometry: GeometryEngine.difference(this.universeWebMercator, polygon),\r\n symbol: symbols.maskSymbol\r\n })\r\n\r\n });\r\n }\r\n\r\n handleOriginRefresh = (done, failed) => {\r\n\r\n if (this.view.type === '2d') \r\n {\r\n this.originFeatureLayer.refresh();\r\n }\r\n else \r\n {\r\n if (this.originFeatureLayer.definitionExpression) \r\n {\r\n this.originFeatureLayer.definitionExpression += \" AND 1=1\";\r\n }\r\n else {\r\n this.originFeatureLayer.definitionExpression = \"1=1\";\r\n }\r\n }\r\n done();\r\n\r\n }\r\n\r\n getOriginPopupContent = (target) => {\r\n return new Promise((resolve, reject) => {\r\n\r\n loadModules(['esri/rest/support/Query', 'esri/tasks/QueryTask'])\r\n .then(([Query, QueryTask]) => {\r\n const query = new Query({\r\n where: `OBJECTID = '${target.graphic.attributes[\"OBJECTID\"]}'`,\r\n outFields: [\"*\"],\r\n returnGeometry: false\r\n });\r\n const url = this.originFeatureLayer.url + '/' + this.originFeatureLayer.layerId;\r\n const queryTask = new QueryTask({ url: url });\r\n\r\n queryTask.execute(query).then(\r\n results => {\r\n let content;\r\n if (results && results.features && results.features.length === 1) {\r\n const attrs = results.features[0].attributes;\r\n let acres = attrs[originFields.incidentSize];\r\n const dateFormat = \"MM/DD/YYYY\";\r\n\r\n if (acres) {\r\n acres = acres.toFixed(2)\r\n }\r\n\r\n content = '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '' +\r\n '

' + (attrs[originFields.name] || '––') + '

' +\r\n '
' +\r\n '
' +\r\n '' +\r\n '

' + (attrs[originFields.uniqueFireId] || '––') + '

' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '' +\r\n '

' + (acres || '––') + '

' +\r\n '
' +\r\n '
' +\r\n '' +\r\n '

' + (attrs[originFields.fireCode] || '––') + '

' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '' +\r\n '

' + (attrs[originFields.discoveryDate] ? moment(attrs[originFields.discoveryDate]).format(dateFormat) : '––') + '

' +\r\n '
' +\r\n '
' +\r\n '' +\r\n '

' + (attrs[originFields.outDate] ? moment(attrs[originFields.outDate]).format(dateFormat) : \"––\") + '

' +\r\n '
' +\r\n '
' +\r\n '
';\r\n }\r\n resolve(content);\r\n },\r\n error => {\r\n reject();\r\n }\r\n );\r\n\r\n });\r\n\r\n });\r\n\r\n }\r\n\r\n\r\n getPerimeterPopup = (target) => {\r\n return new Promise((resolve, reject) => {\r\n\r\n loadModules(['esri/rest/support/Query', 'esri/tasks/QueryTask'])\r\n .then(([Query, QueryTask]) => {\r\n const query = new Query({\r\n where: `${originFields.irwinId} = '${target.graphic.attributes[originFields.irwinId]}'`,\r\n outFields: [\"*\"],\r\n returnGeometry: false\r\n });\r\n\r\n const url = this.originFeatureLayer.url + '/' + this.originFeatureLayer.layerId;\r\n const queryTask = new QueryTask({ url: url });\r\n\r\n queryTask.execute(query).then(\r\n results => {\r\n let content;\r\n if (results && results.features && results.features.length === 1) {\r\n const attrs = results.features[0].attributes;\r\n let acres = attrs[originFields.incidentSize];\r\n const dateFormat = \"MM/DD/YYYY\";\r\n\r\n if (acres) {\r\n acres = acres.toFixed(2)\r\n }\r\n\r\n content = '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '' +\r\n '

' + (attrs[originFields.name] || '––') + '

' +\r\n '
' +\r\n '
' +\r\n '' +\r\n '

' + (attrs[originFields.uniqueFireId] || '––') + '

' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '' +\r\n '

' + (acres || '––') + '

' +\r\n '
' +\r\n '
' +\r\n '' +\r\n '

' + (attrs[originFields.fireCode] || '––') + '

' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '' +\r\n '

' + (attrs[originFields.discoveryDate] ? moment(attrs[originFields.discoveryDate]).format(dateFormat) : '––') + '

' +\r\n '
' +\r\n '
' +\r\n '' +\r\n '

' + (attrs[originFields.outDate] ? moment(attrs[originFields.outDate]).format(dateFormat) : \"––\") + '

' +\r\n '
' +\r\n '
' +\r\n '
';\r\n }\r\n resolve(content);\r\n },\r\n error => {\r\n reject();\r\n }\r\n );\r\n\r\n });\r\n\r\n });\r\n\r\n }\r\n}\r\n","import * as esriLoader from 'esri-loader';\r\nimport { setViewPopupEnabled } from './mapHub';\r\n//import symbols from '../../defaults/Symbols.json'\r\nimport { setModifiedPerimeter, clearVisiblePerimeters } from '../esri/mapHub';\r\n\r\nexport default class DrawToolbar {\r\n // This class wraps the JSAPI Draw ** and Edit ** Toolbars.\r\n // Additionally, it manages a \"sketchLayer\" which contains any graphics\r\n // that have been drawn.\r\n\r\n constructor(view) {\r\n this.startup(view);\r\n this.view = view;\r\n this.uploadingPerimeter = false;\r\n this.uploadLoadedPerimeterGeometry = null;\r\n this.shouldUpdateGraphic = true;\r\n this.drawingNew = false;\r\n }\r\n\r\n startup(view) {\r\n\r\n esriLoader.loadModules(['esri/widgets/Sketch/SketchViewModel', 'esri/layers/GraphicsLayer'])\r\n .then(([SketchViewModel, GraphicsLayer]) => {\r\n\r\n const graphicsLayer = new GraphicsLayer({\r\n id: \"tempGraphics\",\r\n visible: true\r\n });\r\n\r\n this.polyGraphicLayer = graphicsLayer;\r\n\r\n const sketchViewModel = new SketchViewModel({\r\n view: view,\r\n layer: this.polyGraphicLayer,\r\n updateOnGraphicClick: false,\r\n defaultCreateOptions: {\r\n mode: 'hybrid'\r\n },\r\n defaultUpdateOptions: {\r\n // set the default options for the update operations\r\n toggleToolOnClick: false // only reshape operation will be enabled\r\n }\r\n });\r\n\r\n this.sketchViewModel = sketchViewModel;\r\n\r\n this.initEventHandlers();\r\n });\r\n }\r\n\r\n initEventHandlers() {\r\n esriLoader.loadModules(['dojo/topic'])\r\n .then(([topic]) => {\r\n topic.subscribe('Draw/enable-draw-mode', this.enableDrawMode.bind(this));\r\n topic.subscribe('Draw/disable-draw-mode', this.disableDrawMode.bind(this));\r\n topic.subscribe('Draw/pause-draw-mode', this.pauseDrawMode.bind(this));\r\n topic.subscribe('Draw/resume-draw-mode', this.resumeDrawMode.bind(this));\r\n topic.subscribe('Draw/set-on-geometry-update-callback', this.setGeometryUpdateCallback.bind(this));\r\n topic.subscribe('Draw/get-polygon-geometry', this.getPolygonGeometry.bind(this));\r\n topic.subscribe('Draw/set-upload-polygon-geometry', this.setPolygonUploadGeometry.bind(this));\r\n topic.subscribe('Draw/complete-update', this.completeUpdate.bind(this));\r\n });\r\n }\r\n\r\n enableDrawMode(args, done) {\r\n\r\n esriLoader.loadModules(['esri/geometry/Polygon','esri/geometry/support/jsonUtils', 'esri/geometry/support/webMercatorUtils', 'esri/Graphic'])\r\n .then(([Polygon, geometryJsonUtils, WebMercatorUtils, Graphic]) => {\r\n //console.log(args);\r\n this.uploadingPerimeter = false;\r\n this.uploadLoadedPerimeterGeometry = null;\r\n this.shouldUpdateGraphic = true;\r\n this.drawingNew = false;\r\n\r\n this.drawAction = args.drawAction;\r\n this.drawTool = '';\r\n this.enableSketchOnDrawComplete = args.enableSketchOnDrawComplete;\r\n\r\n setViewPopupEnabled({ enabled: false });\r\n if (args.drawAction === 'point') {\r\n this.drawTool = 'sketch';\r\n\r\n this.sketchViewModel.create(args.drawAction);\r\n this.drawCompleteHandler = this.sketchViewModel.on('create', (args) =>\r\n {\r\n if (args.state === \"complete\" && args.graphic && args.graphic.geometry) {\r\n done({ geometry: args.graphic.geometry.toJSON() });\r\n this.disableDrawMode();\r\n }\r\n });\r\n }\r\n else if (args.drawAction === 'polygon')\r\n {\r\n if (args.geometry)\r\n {\r\n const mercatorGeometry = WebMercatorUtils.geographicToWebMercator(geometryJsonUtils.fromJSON(args.geometry));\r\n const polyGeometry = Polygon.fromJSON(mercatorGeometry.toJSON());\r\n //this.sketchViewModel.layer.removeAll();\r\n const polyGraphic = new Graphic({\r\n geometry: polyGeometry,\r\n attributes: {\r\n newDevelopment: \"new store\"\r\n },\r\n symbol: {\r\n type: \"simple-fill\", // autocasts as new SimpleFillSymbol()\r\n color: \"rgba(138,43,226, 0.8)\",\r\n style: \"solid\",\r\n outline: {\r\n color: \"black\",\r\n width: 1\r\n }\r\n }\r\n });\r\n\r\n clearVisiblePerimeters();\r\n this.polyGraphicLayer.add(polyGraphic);\r\n\r\n this.updateHandler = this.sketchViewModel.on([\"update\"], this.onGraphicUpdate);\r\n this.sketchViewModel.update(polyGraphic, {tool: \"reshape\"});\r\n }\r\n else\r\n {\r\n this.drawingNew = true;\r\n this.drawTool = 'sketch';\r\n this.sketchViewModel.create('polygon');\r\n this.drawCompleteHandler = this.sketchViewModel.on('create', (args) =>\r\n {\r\n if (args.state === \"complete\" && args.graphic && args.graphic.geometry)\r\n {\r\n this.disableDrawMode();\r\n done({ geometry: args.graphic.geometry.toJSON() });\r\n }\r\n });\r\n }\r\n\r\n }\r\n\r\n });\r\n }\r\n\r\n onGraphicUpdate = (event) => {\r\n\r\n // get the graphic as it is being updated\r\n const graphic = event.graphics[0];\r\n if (this.shouldUpdateGraphic)\r\n {\r\n setModifiedPerimeter({\r\n graphics: [\r\n {\r\n geometry: graphic.geometry\r\n }\r\n ]\r\n })\r\n }\r\n }\r\n\r\n //TODO: Remove\r\n pauseDrawMode(done) {\r\n /*if (this.simpleDrawEngine && this.drawTool === 'graphite') {\r\n this.simpleDrawEngine.pause();\r\n }*/\r\n done();\r\n }\r\n\r\n //TODO: Remove\r\n resumeDrawMode(done) {\r\n /*if (this.simpleDrawEngine && this.drawTool === 'graphite') {\r\n this.simpleDrawEngine.resume();\r\n }*/\r\n done();\r\n }\r\n\r\n disableDrawMode(done) {\r\n this.shouldUpdateGraphic = false;\r\n this.sketchViewModel.cancel();\r\n this.sketchViewModel.layer.graphics.removeAll();\r\n\r\n if (this.updateHandler) {\r\n this.updateHandler.remove();\r\n delete this.updateHandler;\r\n }\r\n\r\n setTimeout(setViewPopupEnabled, 500, { enabled: true })\r\n }\r\n\r\n completeUpdate(done, failed) {\r\n this.sketchViewModel.complete();\r\n\r\n const isUploading = this.uploadingPerimeter;\r\n const uploadedPerim = this.uploadLoadedPerimeterGeometry ;\r\n\r\n const geometry = (isUploading && uploadedPerim !== null) ? uploadedPerim : this.sketchViewModel.layer.graphics.items[0].geometry;\r\n this.sketchViewModel.layer.graphics.removeAll();\r\n\r\n done(geometry);\r\n setTimeout(setViewPopupEnabled, 500, { enabled: true })\r\n }\r\n\r\n //TODO: Remove\r\n setGeometryUpdateCallback(callback, done, failed)\r\n {\r\n /*if (this.simpleDrawEngine)\r\n {\r\n\r\n let handle = this.simpleDrawEngine.inputHandler.on(\"graphic-update-complete\", (args) => {\r\n callback({\r\n updated: true\r\n }, handle);\r\n });\r\n }\r\n else {\r\n failed('SimpleDrawEngine not initialized');\r\n }\r\n */\r\n\r\n }\r\n\r\n setPolygonUploadGeometry(geometry, done, failed) {\r\n this.uploadingPerimeter = true;\r\n this.uploadLoadedPerimeterGeometry = geometry;\r\n done();\r\n }\r\n\r\n getPolygonGeometry(done, failed)\r\n {\r\n if (this.uploadingPerimeter)\r\n {\r\n done({geometry: this.uploadLoadedPerimeterGeometry.toJSON()});\r\n }\r\n else\r\n {\r\n if (this.simpleDrawEngine && this.simpleDrawEngine.activeDrawType &&\r\n this.simpleDrawEngine.activeDrawType.geometry)\r\n {\r\n const geom = this.simpleDrawEngine.activeDrawType.geometry.toJSON()\r\n this.simpleDrawEngine.inputHandler.finish();\r\n done({\r\n geometry: geom\r\n });\r\n\r\n }\r\n else {\r\n done({ geometry: null });\r\n }\r\n }\r\n }\r\n\r\n\r\n}\r\n","// NOTE\r\n// This is a \"special\" react component that does not strictly play by\r\n// React's rules.\r\n//\r\n// Conceptually, this component creates a \"portal\" in React by\r\n// closing its render method off from updates (by simply rendering a div and\r\n// never accepting re-renders) then reconnecting itself to the React lifecycle\r\n// by listening for any new props (using componentWillReceiveProps)\r\n\r\nimport React, { Component } from 'react';\r\nimport { loadModules } from 'esri-loader';\r\nimport { createView, createSearch, createLayerList } from '../../utils/esriLoader';\r\nimport { isIncidentCertified, formatIdentifierForApi } from '../../utils/incidentHelper';\r\nimport LayerManager from './LayerManager';\r\nimport DrawToolbar from './DrawToolbar';\r\nimport { filterOperations } from '../../redux/filter';\r\nimport { userOperations } from '../../redux/user';\r\nimport { incidentsOperations } from '../../redux/incidentList';\r\nimport { connect } from 'react-redux';\r\nimport { bindActionCreators } from 'redux';\r\nimport { setOriginLayerDefinitionExpression, setVisiblePerimeters, setCustomFilterDefinitionExpression } from './mapHub';\r\n\r\nimport consts from '../../defaults/Enums.json'\r\nimport originFields from '../../defaults/PointOfOriginFields.json';\r\nimport printConfig from '../../defaults/Print.json';\r\n\r\nimport './Map.css'\r\n\r\nclass Map extends Component \r\n{\r\n componentDidMount() {\r\n if (!this.props.mapState.loaded) \r\n {\r\n this.startup(this.props.appConfig.viewOptions);\r\n }\r\n }\r\n\r\n shouldComponentUpdate(nextProps, nextState) {\r\n // Tell React to never update this component, that's up to us\r\n return false;\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n );\r\n }\r\n\r\n //\r\n // JSAPI Stuff\r\n //\r\n\r\n startup = (viewOptions) => {\r\n const node = 'viewContainer';\r\n if (this.props.mapState.currentExtent) \r\n {\r\n viewOptions.extent = this.props.mapState.currentExtent\r\n }\r\n\r\n createView(node, null, this.props.appConfig.use3D, viewOptions).then(\r\n args => {\r\n this.init(args);\r\n createSearch(this.view, 'geosearch', this.props.appConfig.searchWidgetOptions).then(\r\n search => {\r\n this.search = search;\r\n this.layerManager = new LayerManager(this.view, this.props.appConfig, this.search, this.props.isReadOnly);\r\n this.layerManager.then(() => {\r\n if (this.props.filter.isBasicFilterActive) \r\n {\r\n this.props.setFilterLoading(true);\r\n setOriginLayerDefinitionExpression(this.props.filter).then( response => \r\n {\r\n debugger;\r\n this.props.setQueriedIncidentsTotal(response.total);\r\n this.props.setDisplayedIncidentsCount(response.features.length);\r\n this.props.setIncidents(response.features);\r\n this.props.setVisibleIncidents(response.features);\r\n this.props.setFilterLoading(false);\r\n });\r\n }\r\n else \r\n {\r\n setCustomFilterDefinitionExpression(this.props.user.activeCustomFilter).then( response => \r\n {\r\n this.props.setQueriedIncidentsTotal(response.total);\r\n this.props.setDisplayedIncidentsCount(response.features.length);\r\n this.props.setIncidents(response.features);\r\n this.props.setVisibleIncidents(response.features);\r\n this.props.setFilterLoading(false);\r\n });\r\n }\r\n this.setupEventHandlers(this.view);\r\n this.finishedLoading();\r\n\r\n },\r\n error => {\r\n console.log('Error initializing layer manager');\r\n this.props.onMapLoadError();\r\n }\r\n );\r\n }\r\n );\r\n\r\n createLayerList(this.view, this.props.appConfig.supportLayers[this.props.appConfig.env].map(item => { return item.portalItem.id }));\r\n },\r\n error => console.error(error)\r\n\r\n );\r\n }\r\n\r\n finishedLoading = () => {\r\n // Update app state only after map and widgets are loaded\r\n this.props.onMapLoaded();\r\n }\r\n\r\n init = (args) => {\r\n this.map = args.view.map;\r\n this.view = args.view;\r\n this.drawToolbar = new DrawToolbar(this.view);\r\n this.activeWidget = null;\r\n }\r\n\r\n //This code is garbage but I'm unsure how to get ESRI event handlers wrapped into a React paradigm, especially with their Dojo.\r\n setupEventHandlers = (view) => {\r\n\r\n loadModules([\r\n 'esri/core/watchUtils',\r\n 'dojo/topic',\r\n 'esri/geometry/support/jsonUtils',\r\n 'esri/rest/print',\r\n 'esri/rest/support/PrintParameters',\r\n 'esri/rest/support/PrintTemplate',\r\n 'esri/widgets/FeatureForm',\r\n 'esri/widgets/DistanceMeasurement2D',\r\n 'esri/widgets/AreaMeasurement2D'\r\n ])\r\n .then((\r\n [\r\n watchUtils,\r\n topic,\r\n geometryJsonUtils,\r\n print,\r\n PrintParameters,\r\n PrintTemplate,\r\n FeatureForm,\r\n DistanceMeasurement2D,\r\n AreaMeasurement2D\r\n ]\r\n ) => {\r\n\r\n // Add a new feature form with grouped fields\r\n var activeWidget = null;\r\n const perimeterFeatureLayer = view.map.allLayers.find(function (layer) \r\n {\r\n return layer.title === consts.layerTitles.perimetersLayer;\r\n });\r\n\r\n const fireHistoryFeatureLayer = view.map.allLayers.find(function (layer) \r\n {\r\n return layer.title === \"Fire History Perimeters\";\r\n });\r\n\r\n const closeNifsPerimeterButton = document.getElementById(\"btnCloseUpdateNifsPerimeter\");\r\n const closeFireHistoryPerimeterButton = document.getElementById(\"btnCloseUpdateFireHistoryPerimeter\");\r\n \r\n const nifsFeatureForm = new FeatureForm({\r\n container: \"updateNifsPerimeterForm\",\r\n layer: perimeterFeatureLayer,\r\n fieldConfig: [\r\n {\r\n name: \"IncidentName\",\r\n label: \"Incident Name\",\r\n editable: false\r\n },\r\n {\r\n name: \"IRWINID\",\r\n label: \"IRWIN ID\"\r\n }\r\n ]\r\n });\r\n\r\n const fireHistoryFeatureForm = new FeatureForm({\r\n container: \"updateFireHistoryPerimeterForm\",\r\n layer: fireHistoryFeatureLayer,\r\n fieldConfig: [\r\n {\r\n name: \"IncidentName\",\r\n label: \"Incident Name\",\r\n editable: false\r\n },\r\n {\r\n name: \"IRWINID\",\r\n label: \"IRWIN ID\"\r\n }\r\n ]\r\n });\r\n\r\n document.getElementById(\"distanceButton\").addEventListener(\"click\", function () {\r\n setActiveWidget(null);\r\n if (!this.classList.contains(\"active\")) {\r\n setActiveWidget(\"distance\");\r\n } else {\r\n setActiveButton(null);\r\n }\r\n });\r\n\r\n document.getElementById(\"areaButton\").addEventListener(\"click\", function () {\r\n setActiveWidget(null);\r\n if (!this.classList.contains(\"active\")) {\r\n setActiveWidget(\"area\");\r\n } else {\r\n setActiveButton(null);\r\n }\r\n });\r\n\r\n document.getElementById(\"clearButton\").addEventListener(\"click\", function () {\r\n setActiveWidget(null);\r\n setActiveButton(null);\r\n });\r\n\r\n function setActiveWidget(type) {\r\n switch (type) {\r\n case \"distance\":\r\n activeWidget = new DistanceMeasurement2D({\r\n view: view,\r\n unit: \"imperial\"\r\n });\r\n\r\n activeWidget.viewModel.start();\r\n\r\n view.ui.add(activeWidget, \"top-right\");\r\n setActiveButton(document.getElementById(\"distanceButton\"));\r\n break;\r\n\r\n case \"area\":\r\n activeWidget = new AreaMeasurement2D({\r\n view: view,\r\n unit: \"acres\",\r\n defaultCreateOptions: {\r\n mode: 'hybrid'\r\n }\r\n });\r\n\r\n activeWidget.viewModel.start();\r\n\r\n view.ui.add(activeWidget, \"top-right\");\r\n setActiveButton(document.getElementById(\"areaButton\"));\r\n break;\r\n\r\n default:\r\n if (activeWidget) {\r\n view.ui.remove(activeWidget);\r\n activeWidget.destroy();\r\n activeWidget = null;\r\n }\r\n break;\r\n }\r\n }\r\n\r\n function setActiveButton(selectedButton) {\r\n // focus the view to activate keyboard shortcuts for sketching\r\n view.focus();\r\n var elements = document.getElementsByClassName(\"active\");\r\n for (var i = 0; i < elements.length; i++) {\r\n elements[i].classList.remove(\"active\");\r\n }\r\n if (selectedButton) \r\n {\r\n selectedButton.classList.add(\"active\");\r\n }\r\n }\r\n\r\n // Update attributes of the selected feature.\r\n document.getElementById(\"btnUpdateNifsPerimeter\").onclick = function () {\r\n nifsFeatureForm.submit();\r\n };\r\n\r\n // Update attributes of the selected feature.\r\n document.getElementById(\"btnUpdateFireHistoryPerimeter\").onclick = function () {\r\n fireHistoryFeatureForm.submit();\r\n };\r\n\r\n // Listen to the feature form's submit event.\r\n // Update feature attributes shown in the form.\r\n nifsFeatureForm.on(\"submit\", function () {\r\n if (nifsFeatureForm.feature) {\r\n // Grab updated attributes from the form.\r\n const updated = nifsFeatureForm.getValues();\r\n\r\n const irwinID = updated[\"IRWINID\"];\r\n const objectID = updated[\"OBJECTID\"];\r\n\r\n window.api.updateIrwinIDForNifs(irwinID, objectID).then(response => \r\n {\r\n\r\n });\r\n \r\n nifsFeatureForm.feature = null;\r\n document.getElementById(\"updatePerimeterDiv\").classList.add(\"esri-hidden\");\r\n document.getElementById(\"updateNifsPerimeterForm\").classList.add(\"esri-hidden\");\r\n //view.ui.remove(nifsFeatureForm);\r\n }\r\n });\r\n\r\n fireHistoryFeatureForm.on(\"submit\", function () {\r\n if (fireHistoryFeatureForm.feature) {\r\n // Grab updated attributes from the form.\r\n const updated = fireHistoryFeatureForm.getValues();\r\n\r\n const irwinID = updated[\"IRWINID\"];\r\n const objectID = updated[\"OBJECTID\"];\r\n\r\n window.api.updateIrwinIDForFireHistory(irwinID, objectID).then(response => \r\n {\r\n\r\n });\r\n \r\n fireHistoryFeatureForm.feature = null;\r\n document.getElementById(\"updatePerimeterDiv\").classList.add(\"esri-hidden\");\r\n document.getElementById(\"updateFireHistoryPerimeterForm\").classList.add(\"esri-hidden\");\r\n //view.ui.remove(fireHistoryFeatureForm);\r\n }\r\n });\r\n\r\n\r\n view.popup.on(\"trigger-action\", function (event) {\r\n if (event.action.id === \"popup-add-irwinid-nifs\") \r\n {\r\n editNifs();\r\n }\r\n\r\n if (event.action.id === \"popup-add-irwinid-firehistory\") \r\n {\r\n editFireHistory();\r\n }\r\n });\r\n\r\n function editNifs() {\r\n // If the EditorViewModel's activeWorkflow is null, make the popup not visible\r\n view.popup.visible = false;\r\n // Call the Editor update feature edit workflow\r\n nifsFeatureForm.feature = view.popup.selectedFeature;\r\n if (document.getElementById(\"updatePerimeterDiv\").classList.contains(\"esri-hidden\")) \r\n {\r\n document.getElementById(\"updatePerimeterDiv\").classList.remove(\"esri-hidden\");\r\n }\r\n\r\n if (document.getElementById(\"updateNifsPerimeterForm\") && document.getElementById(\"updateNifsPerimeterForm\").classList.contains(\"esri-hidden\")) \r\n {\r\n document.getElementById(\"updateNifsPerimeterForm\").classList.remove(\"esri-hidden\");\r\n }\r\n\r\n \r\n if (document.getElementById(\"updateFireHistoryPerimeterForm\") && !document.getElementById(\"updateFireHistoryPerimeterForm\").classList.contains(\"esri-hidden\")) \r\n {\r\n document.getElementById(\"updateFireHistoryPerimeterForm\").classList.add(\"esri-hidden\");\r\n }\r\n\r\n view.ui.add(nifsFeatureForm, \"top-right\");\r\n view.ui.move(\"btnUpdatePerimeter\", \"top-right\")\r\n view.popup.spinnerEnabled = false;\r\n\r\n closeNifsPerimeterButton.addEventListener(\"click\", function (evt) {\r\n // Prevent the default behavior for the back button and instead remove the editor and reopen the popup\r\n evt.preventDefault();\r\n document.getElementById(\"updatePerimeterDiv\").classList.add(\"esri-hidden\");\r\n document.getElementById(\"updateNifsPerimeterForm\").classList.add(\"esri-hidden\");\r\n });\r\n }\r\n\r\n function editFireHistory() {\r\n // If the EditorViewModel's activeWorkflow is null, make the popup not visible\r\n view.popup.visible = false;\r\n // Call the Editor update feature edit workflow\r\n\r\n fireHistoryFeatureForm.feature = view.popup.selectedFeature;\r\n if (document.getElementById(\"updatePerimeterDiv\").classList.contains(\"esri-hidden\")) \r\n {\r\n document.getElementById(\"updatePerimeterDiv\").classList.remove(\"esri-hidden\");\r\n }\r\n\r\n if (document.getElementById(\"updateNifsPerimeterForm\") && !document.getElementById(\"updateNifsPerimeterForm\").classList.contains(\"esri-hidden\")) \r\n {\r\n document.getElementById(\"updateNifsPerimeterForm\").classList.add(\"esri-hidden\");\r\n }\r\n\r\n if (document.getElementById(\"updateFireHistoryPerimeterForm\") && document.getElementById(\"updateFireHistoryPerimeterForm\").classList.contains(\"esri-hidden\")) \r\n {\r\n document.getElementById(\"updateFireHistoryPerimeterForm\").classList.remove(\"esri-hidden\");\r\n }\r\n\r\n view.ui.add(fireHistoryFeatureForm, \"top-right\");\r\n view.ui.move(\"btnUpdatePerimeter\", \"top-right\")\r\n view.popup.spinnerEnabled = false;\r\n\r\n closeFireHistoryPerimeterButton.addEventListener(\"click\", function (evt) {\r\n // Prevent the default behavior for the back button and instead remove the editor and reopen the popup\r\n evt.preventDefault();\r\n document.getElementById(\"updatePerimeterDiv\").classList.add(\"esri-hidden\");\r\n document.getElementById(\"updateFireHistoryPerimeterForm\").classList.add(\"esri-hidden\");\r\n });\r\n }\r\n\r\n view.popup.viewModel.on(\"trigger-action\", (event) => {\r\n let popupIncident = {};\r\n\r\n if (event.action.id === \"popup-view-incident\") {\r\n this.props.onIncidentSelection(view.popup.viewModel.selectedFeature.attributes.FORID);\r\n view.popup.close();\r\n }\r\n\r\n if (event.action.id === \"popup-zoom-to-incident\") {\r\n //TODO: All this perimeter stuff needs to go\r\n popupIncident = {\r\n attributes: view.popup.selectedFeature.attributes,\r\n geometry: (view.popup.selectedFeature.geometry) ? view.popup.selectedFeature.geometry.toJSON() : null\r\n }\r\n\r\n setVisiblePerimeters({\r\n id: formatIdentifierForApi(popupIncident.attributes[originFields.forId]),\r\n useFinalService: isIncidentCertified(popupIncident),\r\n returnFeatures: true\r\n }).then(result => {\r\n //IMH: If no result here from final service, need to swap to NIFS\r\n if (result.features && result.features.length === 1) {\r\n let options =\r\n {\r\n target: geometryJsonUtils.fromJSON(result.features[0].geometry)\r\n }\r\n view.goTo(options);\r\n view.popup.close();\r\n }\r\n else {\r\n let options =\r\n {\r\n target: view.popup.selectedFeature.geometry,\r\n zoom: 14\r\n }\r\n\r\n view.goTo(options);\r\n view.popup.close();\r\n }\r\n }\r\n );\r\n }\r\n });\r\n\r\n\r\n /*view.popup.watch('selectedFeature', function(graphic){\r\n if (graphic)\r\n {\r\n const showIncidentActions = (graphic.attributes && graphic.attributes.hasOwnProperty(originFields.name));\r\n \r\n if (showIncidentActions)\r\n {\r\n view.popup.actions.forEach((item, i) => {\r\n if(item.id === \"popup-view-incident\"){\r\n item.visible = showIncidentActions;\r\n }\r\n });\r\n }\r\n }\r\n }); */\r\n\r\n\r\n // extent-change\r\n watchUtils.whenTrue(view, \"stationary\", () => {\r\n \r\n this.props.updateExtent(view.extent.toJSON());\r\n\r\n if (this.props.filter.isBasicFilterActive) \r\n {\r\n this.props.setFilterLoading(true);\r\n \r\n setOriginLayerDefinitionExpression(this.props.filter).then( response => {\r\n this.props.setQueriedIncidentsTotal(response.total);\r\n this.props.setDisplayedIncidentsCount(response.features.length);\r\n this.props.setIncidents(response.features);\r\n this.props.setVisibleIncidents(response.features);\r\n this.props.setFilterLoading(false);\r\n });\r\n }\r\n else \r\n {\r\n setCustomFilterDefinitionExpression(this.props.user.activeCustomFilter).then( response => {\r\n this.props.setQueriedIncidentsTotal(response.total);\r\n this.props.setDisplayedIncidentsCount(response.features.length);\r\n this.props.setIncidents(response.features);\r\n this.props.setVisibleIncidents(response.features);\r\n this.props.setFilterLoading(false);\r\n });\r\n }\r\n });\r\n\r\n topic.subscribe('Map/extent-changed', (cb, done, failed) => {\r\n watchUtils.whenTrue(view, \"stationary\", () => {\r\n cb(view.extent);\r\n });\r\n });\r\n\r\n topic.subscribe('Map/set-extent', (args, done, failed) => {\r\n\r\n // Set the extent on the view\r\n let newExtent = args.target.extent.expand(1.3);\r\n this.view.extent = newExtent.toJSON();\r\n });\r\n\r\n topic.subscribe('Map/get-extent', (done, failed) => {\r\n // Get the extent on the view\r\n done(this.view.extent);\r\n //const extents = this.view.extent.normalize();\r\n });\r\n\r\n topic.subscribe('Map/get-current-basemap', (done, failed) => {\r\n // Get the extent on the view\r\n done(this.view.map.basemap);\r\n });\r\n\r\n topic.subscribe('Map/set-map-view-target', (args, done, failed) => {\r\n let options = {\r\n target: geometryJsonUtils.fromJSON(args.target)\r\n }\r\n if (view.type === '3d') {\r\n options.tilt = args.tilt;\r\n }\r\n if (args.zoom) {\r\n options.zoom = args.zoom;\r\n }\r\n\r\n view.goTo(options).then(() => {\r\n done();\r\n });\r\n });\r\n\r\n topic.subscribe('Map/zoom-to-polygon', (poly, done, failed) => {\r\n\r\n view.goTo(poly).then(() => {\r\n done();\r\n });\r\n });\r\n\r\n topic.subscribe('Map/get-map-screenshot', (done, failed) => {\r\n // Get the extent on the view\r\n this.view.takeScreenshot().then(screenshot => {\r\n done(screenshot);\r\n });\r\n });\r\n\r\n topic.subscribe('Map/get-screenshot', (name, done, failed) => {\r\n\r\n \r\n const printUrl = printConfig.printTaskUrl;\r\n const template = new PrintTemplate({\r\n format: \"png32\",\r\n scalePreserved: false,\r\n exportOptions: {\r\n dpi: 384\r\n },\r\n layout: \"a4-portrait\",\r\n layoutOptions: {\r\n titleText: name\r\n }\r\n });\r\n\r\n let printParameters = new PrintParameters({\r\n view: view,\r\n template: template\r\n });\r\n\r\n print.execute(printUrl, printParameters).then(\r\n result => {\r\n done(result);\r\n },\r\n error => {\r\n console.log(error);\r\n failed(error);\r\n }\r\n );\r\n });\r\n\r\n\r\n\r\n topic.subscribe('Map/set-view-popup', (args, done, failed) => {\r\n // view.popupManager.enabled = args.enabled;\r\n if (!args.enabled && view.popup) {\r\n //close popup if disabled\r\n view.popup.visible = false;\r\n\r\n }\r\n done();\r\n });\r\n\r\n\r\n });\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n filter: state.filter,\r\n incidentList: state.incidentList,\r\n user: state.user\r\n})\r\n\r\nconst mapDispatchToProps = function (dispatch) {\r\n return bindActionCreators({\r\n ...filterOperations,\r\n ...incidentsOperations,\r\n ...userOperations\r\n }, dispatch);\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Map);\r\n\r\n","const operators = {\r\n string: [\r\n {\r\n alias: 'is',\r\n operator: '='\r\n },\r\n {\r\n alias: 'is not',\r\n operator: '<>'\r\n },\r\n {\r\n alias: 'starts with',\r\n operator: 'LIKE',\r\n suffix: '%'\r\n },\r\n {\r\n alias: 'ends with',\r\n operator: 'LIKE',\r\n prefix: '%'\r\n },\r\n {\r\n alias: 'contains',\r\n operator: 'LIKE',\r\n prefix: '%',\r\n suffix: '%'\r\n },\r\n {\r\n alias: 'does not contain',\r\n operator: 'NOT LIKE',\r\n prefix: '%',\r\n suffix: '%'\r\n },\r\n {\r\n alias: 'is blank',\r\n operator: 'IS NULL',\r\n omitValue: true\r\n },\r\n {\r\n alias: 'is not blank',\r\n operator: 'IS NOT NULL',\r\n omitValue: true\r\n }\r\n ],\r\n limitedString: [\r\n {\r\n alias: 'contains',\r\n operator: 'LIKE',\r\n prefix: '%',\r\n suffix: '%'\r\n },\r\n {\r\n alias: 'does not contain',\r\n operator: 'NOT LIKE',\r\n prefix: '%',\r\n suffix: '%'\r\n }\r\n ],\r\n number: [\r\n {\r\n alias: 'is',\r\n operator: '='\r\n },\r\n {\r\n alias: 'is not',\r\n operator: '<>'\r\n },\r\n {\r\n alias: 'is at least',\r\n operator: '>='\r\n },\r\n {\r\n alias: 'is less than',\r\n operator: '<'\r\n },\r\n {\r\n alias: 'is at most',\r\n operator: '<='\r\n },\r\n {\r\n alias: 'is greater than',\r\n operator: '>'\r\n },\r\n {\r\n alias: 'is blank',\r\n operator: 'IS NULL',\r\n omitValue: true\r\n },\r\n {\r\n alias: 'is not blank',\r\n operator: 'IS NOT NULL',\r\n omitValue: true\r\n }\r\n ],\r\n date: [\r\n {\r\n alias: 'is on',\r\n fullDay: true,\r\n operator: 'BETWEEN'\r\n },\r\n {\r\n alias: 'is not on',\r\n fullDay: true,\r\n operator: 'NOT BETWEEN'\r\n },\r\n {\r\n alias: 'is before',\r\n fullDay: true,\r\n operator: '<'\r\n },\r\n {\r\n alias: 'is after',\r\n fullDay: true,\r\n operator: '>'\r\n },\r\n {\r\n alias: 'is on or before',\r\n operator: '<='\r\n },\r\n {\r\n alias: 'is on or after',\r\n operator: '>='\r\n },\r\n {\r\n alias: 'is blank',\r\n operator: 'IS NULL',\r\n omitValue: true\r\n },\r\n {\r\n alias: 'is not blank',\r\n operator: 'IS NOT NULL',\r\n omitValue: true\r\n },\r\n {\r\n alias: 'in the last',\r\n operator: 'BETWEEN',\r\n relativeDate: true\r\n },\r\n {\r\n alias: 'not in the last',\r\n operator: 'NOT BETWEEN',\r\n relativeDate: true\r\n }\r\n ],\r\n epoch: [\r\n {\r\n alias: 'is on',\r\n fullDay: true,\r\n operator: 'BETWEEN'\r\n },\r\n {\r\n alias: 'is not on',\r\n fullDay: true,\r\n operator: 'NOT BETWEEN'\r\n },\r\n {\r\n alias: 'is before',\r\n operator: '<'\r\n },\r\n {\r\n alias: 'is after',\r\n operator: '>'\r\n },\r\n {\r\n alias: 'is on or before',\r\n operator: '<='\r\n },\r\n {\r\n alias: 'is on or after',\r\n operator: '>='\r\n },\r\n {\r\n alias: 'is blank',\r\n operator: 'IS NULL',\r\n omitValue: true\r\n },\r\n {\r\n alias: 'is not blank',\r\n operator: 'IS NOT NULL',\r\n omitValue: true\r\n }\r\n ]\r\n};\r\n\r\nexport default operators;\r\n","import { v4 as uuidv4 } from 'uuid';\r\n\r\nimport operatorDefs from '../defaults/operators';\r\n\r\nexport function getDefaultFilterValue(field) {\r\n if (field.domain && field.domain.codedValues) {\r\n return field.domain.codedValues[0];\r\n }\r\n\r\n return { name: '', code: '' };\r\n}\r\nexport function getShortStringOperators()\r\n{\r\n const operators = operatorDefs['limitedString'];\r\n\r\n return operators || [];\r\n}\r\n\r\nexport function getValidOperators(fieldType) {\r\n const operators = operatorDefs[getGenericFieldType(fieldType)];\r\n\r\n return operators || [];\r\n}\r\n\r\nexport function getGenericFieldType(fieldType) {\r\n // REST API Field Types\r\n // strings: 'esriFieldTypeString',\r\n // dates: 'esriFieldTypeDate',\r\n // numbers: ['esriFieldTypeOID',\r\n // 'esriFieldTypeSmallInteger',\r\n // 'esriFieldTypeInteger',\r\n // 'esriFieldTypeSingle',\r\n // 'esriFieldTypeDouble'],\r\n\r\n // JSAPI Field Types\r\n //small-integer | integer | single | double | long | string | date | oid | geometry | blob | raster | guid | global-id | xml\r\n\r\n switch (fieldType) {\r\n case null:\r\n return null;\r\n\r\n case 'esriFieldTypeString':\r\n case 'esriFieldTypeGUID':\r\n case 'oid':\r\n case 'guid':\r\n case 'global-id':\r\n case 'string':\r\n return 'string';\r\n\r\n case 'esriFieldTypeOID':\r\n case 'esriFieldTypeSmallInteger':\r\n case 'esriFieldTypeInteger':\r\n case 'esriFieldTypeSingle':\r\n case 'esriFieldTypeDouble':\r\n case 'small-integer':\r\n case 'integer':\r\n case 'single':\r\n case 'double':\r\n case 'long':\r\n return 'number';\r\n\r\n case 'esriFieldTypeDate':\r\n case 'date':\r\n return 'date';\r\n\r\n case 'epoch':\r\n return 'epoch';\r\n\r\n default:\r\n return 'string';\r\n }\r\n}\r\n\r\nexport function generateId() {\r\n return uuidv4();\r\n}\r\n","import React, { Fragment } from 'react';\r\nimport Select from 'calcite-react/Select';\r\nimport { MenuItem } from 'calcite-react/Menu';\r\n\r\nimport { getGenericFieldType } from '../utils/genericUtils';\r\n\r\nconst FieldChooser = props => {\r\n const handleOnChange = field => {\r\n props.onChange(props.fields[field]);\r\n };\r\n\r\nconst getFieldChooser = () =>\r\n{\r\n return (Object.keys(props.fields).length > 1 ) ?\r\n (\r\n \r\n {getOptions(props.fields)}\r\n \r\n )\r\n :\r\n (\r\n \r\n );\r\n}\r\n const getFieldType = esriFieldType => {\r\n const shortFieldType = getGenericFieldType(esriFieldType);\r\n\r\n return (\r\n shortFieldType.charAt(0).toUpperCase() +\r\n shortFieldType.substr(1).toLowerCase()\r\n );\r\n };\r\n\r\n const getOptions = fields => {\r\n return Object.keys(fields).map(key => {\r\n const field = fields[key];\r\n return (\r\n \r\n {field.alias || key}\r\n \r\n );\r\n });\r\n };\r\n\r\n return (\r\n \r\n {getFieldChooser()}\r\n \r\n );\r\n};\r\n\r\nexport default FieldChooser;\r\n","import React from 'react';\r\n\r\nimport { find } from 'lodash';\r\n\r\nimport Select from 'calcite-react/Select';\r\nimport { MenuItem } from 'calcite-react/Menu';\r\n\r\nconst OperatorChooser = props => {\r\n const handleOnChange = value => {\r\n props.onChange(find(props.operators, { alias: value }));\r\n };\r\n\r\n const getOptions = operators => {\r\n return operators.map(operator => {\r\n return (\r\n \r\n {operator.alias}\r\n \r\n );\r\n });\r\n };\r\n\r\n return (\r\n \r\n {getOptions(props.operators)}\r\n \r\n );\r\n};\r\n\r\nconst style = {\r\n select: {\r\n flex: '0 0 80px'\r\n }\r\n};\r\n\r\nexport default OperatorChooser;\r\n","import React, { Component } from 'react';\r\nimport moment from 'moment';\r\n\r\nimport TextField from 'calcite-react/TextField';\r\nimport DatePicker from 'calcite-react/DatePicker';\r\n\r\nclass ValueInput extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n datePickerFocused: false\r\n };\r\n }\r\n\r\n onFocusChange = ({ focused }) => {\r\n this.setState({\r\n datePickerFocused: focused\r\n });\r\n };\r\n\r\n handleOnChange = e => {\r\n this.props.onChange({\r\n name: e.target.value,\r\n code: e.target.value\r\n });\r\n };\r\n\r\n handleOnDateChange = e => {\r\n this.props.onChange({\r\n name: e,\r\n code: e\r\n });\r\n };\r\n\r\n getMomentDate = date => {\r\n if (date && date !== '') {\r\n return moment(date);\r\n }\r\n\r\n return moment();\r\n };\r\n\r\n getElement = type => {\r\n switch (type) {\r\n case 'string':\r\n return (\r\n \r\n );\r\n case 'number':\r\n return (\r\n \r\n );\r\n case 'date':\r\n case 'epoch':\r\n return (\r\n false}\r\n numberOfMonths={1}\r\n anchorDirection=\"right\"\r\n onDateChange={this.handleOnDateChange}\r\n focused={this.state.datePickerFocused}\r\n onFocusChange={this.onFocusChange}\r\n />\r\n );\r\n default:\r\n return (\r\n \r\n );\r\n }\r\n };\r\n\r\n render() {\r\n return this.getElement(this.props.type);\r\n }\r\n}\r\n\r\nexport default ValueInput;\r\n","import React from 'react';\r\n\r\nimport Select from 'calcite-react/Select';\r\nimport { MenuItem } from 'calcite-react/Menu';\r\n\r\nconst UniqueValueChooser = props => {\r\n return (\r\n \r\n Coming Soon!\r\n \r\n \r\n );\r\n};\r\n\r\nexport default UniqueValueChooser;\r\n","import React from 'react';\r\n\r\nimport Select from 'calcite-react/Select';\r\nimport { MenuItem } from 'calcite-react/Menu';\r\n\r\nconst ValueTypeChooser = props => {\r\n const handleOptionChange = e => {\r\n props.onChange(e);\r\n };\r\n\r\n return (\r\n \r\n Value\r\n Unique\r\n \r\n );\r\n};\r\n\r\nexport default ValueTypeChooser;\r\n","import React from 'react';\r\n\r\nimport { find } from 'lodash';\r\n\r\nimport Select from 'calcite-react/Select';\r\nimport { MenuItem } from 'calcite-react/Menu';\r\n\r\nconst DomainValueChooser = props => {\r\n const handleOnChange = code => {\r\n props.onChange(find(props.codedValues, { code }));\r\n };\r\n\r\n const getOptions = codedValues => {\r\n return codedValues.map(codedValue => {\r\n return (\r\n \r\n {codedValue.name}\r\n \r\n );\r\n });\r\n };\r\n\r\n return (\r\n \r\n {getOptions(props.codedValues)}\r\n \r\n );\r\n};\r\n\r\nexport default DomainValueChooser;\r\n","import React, { Component } from 'react';\r\n\r\nimport Select from 'calcite-react/Select';\r\nimport { MenuItem } from 'calcite-react/Menu';\r\n\r\nimport ValueInput from '../components/ValueInput';\r\n\r\nclass RelativeDateChooser extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n value: {\r\n timeSizeValue: 1,\r\n timeSpanValue: 'days'\r\n }\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n const timeSizeValue =\r\n this.props.value.timeSizeValue || this.state.value.timeSizeValue;\r\n const timeSpanValue =\r\n this.props.value.timeSpanValue || this.state.value.timeSpanValue;\r\n\r\n this.setState(\r\n {\r\n value: {\r\n timeSizeValue: Number(timeSizeValue),\r\n timeSpanValue: timeSpanValue\r\n }\r\n },\r\n () => this.props.onChange(this.state.value)\r\n );\r\n }\r\n\r\n handleNumberValueChange = e => {\r\n this.setState(\r\n {\r\n value: {\r\n ...this.state.value,\r\n timeSizeValue: Number(e.code)\r\n }\r\n },\r\n () => this.props.onChange(this.state.value)\r\n );\r\n };\r\n\r\n handleSelectOptionChange = e => {\r\n this.setState(\r\n {\r\n value: {\r\n ...this.state.value,\r\n timeSpanValue: e\r\n }\r\n },\r\n () => this.props.onChange(this.state.value)\r\n );\r\n };\r\n\r\n render() {\r\n return (\r\n
\r\n \r\n \r\n minute(s)\r\n hour(s)\r\n day(s)\r\n week(s)\r\n month(s)\r\n year(s)\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nconst style = {\r\n valueInput: {\r\n // overrides here?\r\n },\r\n selectInput: {\r\n // overrides here?\r\n }\r\n};\r\n\r\nexport default RelativeDateChooser;\r\n","import React, { Component } from 'react';\r\n\r\nimport FieldChooser from '../components/FieldChooser';\r\nimport OperatorChooser from '../components/OperatorChooser';\r\nimport ValueInput from '../components/ValueInput';\r\nimport UniqueValueChooser from '../components/UniqueValueChooser';\r\nimport ValueTypeChooser from '../components/ValueTypeChooser';\r\nimport DomainValueChooser from '../components/DomainValueChooser';\r\nimport RelativeDateChooser from '../components/RelativeDateChooser';\r\n\r\nimport { FormControl, Fieldset } from 'calcite-react/Form';\r\nimport Panel from 'calcite-react/Panel';\r\nimport Button from 'calcite-react/Button';\r\nimport Tooltip from 'calcite-react/Tooltip';\r\nimport DeleteIcon from '../icons/DeleteIcon';\r\n\r\nimport {\r\n getValidOperators,\r\n getShortStringOperators,\r\n getDefaultFilterValue,\r\n getGenericFieldType\r\n} from '../utils/genericUtils';\r\n\r\nconst formControlStyles = {\r\n marginBottom: '5px',\r\n justifyContent: 'flex-end'\r\n};\r\n\r\nclass Expression extends Component {\r\n componentDidMount() {\r\n // Kinda nasty, but grabs the \"first\" property in the fields object\r\n // in the same way the FieldChooser will.\r\n // const field = this.props.fields[Object.keys(this.props.fields)[0]];\r\n // this.setOptionsFromField(field);\r\n if (this.props.fields.length === 1)\r\n {\r\n const field = this.props.fields[Object.keys(this.props.fields)[0]];\r\n this.setOptionsFromField(field);\r\n }\r\n }\r\n\r\n updateExpression = updates => {\r\n const id = this.props.id;\r\n this.props.updateExpression({ ...updates, id });\r\n };\r\n\r\n removeExpression = () => {\r\n const id = this.props.id;\r\n this.props.removeExpression(id);\r\n };\r\n\r\n handleFieldChanged = field => {\r\n this.setOptionsFromField(field);\r\n };\r\n\r\n handleOperatorChanged = operator => {\r\n this.updateExpression({ operator });\r\n };\r\n\r\n handleValueChanged = value => {\r\n this.updateExpression({ value });\r\n };\r\n\r\n handleValueTypeChanged = valueType => {\r\n this.updateExpression({ valueType });\r\n };\r\n\r\n setOptionsFromField = field => {\r\n const operator = getValidOperators(field.type)[0];\r\n const value = getDefaultFilterValue(field);\r\n\r\n this.updateExpression({\r\n field,\r\n value,\r\n operator\r\n });\r\n\r\n this.setState({\r\n field,\r\n value,\r\n operator\r\n });\r\n };\r\n\r\n getValueTypeChooser = (valueType, disableUnique) => {\r\n if (disableUnique) return null;\r\n return (\r\n \r\n );\r\n };\r\n\r\n getValueElement = expressionDef => {\r\n const { valueType, field, operator, value } = expressionDef;\r\n\r\n // Operator does not require a value\r\n if (operator && operator.omitValue) return null;\r\n\r\n // TODO: need to implement this\r\n if (valueType === 'unique') {\r\n return ;\r\n }\r\n\r\n // NOTE: only supporting coded value domains for now\r\n if (field && field.domain && field.domain.codedValues) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n if (operator && operator.relativeDate) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n // Freeform text input (TextField) or non-relative Date input (DatePicker)\r\n return (\r\n \r\n );\r\n };\r\n\r\n render() {\r\n\r\n if (!this.props.fields) return null;\r\n\r\n const { field, operator, valueType } = this.props.expressionDef;\r\n const operators = (this.props.overrideStringOperators) ? getShortStringOperators() : getValidOperators(field && field.type);\r\n return (\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.getValueElement(this.props.expressionDef)}\r\n \r\n \r\n {this.getValueTypeChooser(valueType, this.props.disableUnique)}\r\n \r\n \r\n \r\n }\r\n onClick={this.removeExpression}\r\n />\r\n \r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default Expression;\r\n","import styled from 'styled-components';\r\nimport { unitCalc } from 'calcite-react/utils/helpers';\r\n\r\nconst StyledSetHeaderRow = styled.div`\r\n display: flex;\r\n justify-content: space-between;\r\n`;\r\n\r\nconst StyledAddSetButton = styled.div`\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n padding: ${props => unitCalc(props.theme.baseline, 3, '/')};\r\n cursor: pointer;\r\n background: ${props => props.theme.palette.lightestGray};\r\n border: 1px solid ${props => props.theme.palette.lighterGray};\r\n opacity: 0.7;\r\n transition: opacity 175ms linear;\r\n\r\n &:hover {\r\n opacity: 1;\r\n }\r\n`;\r\n\r\nexport { StyledSetHeaderRow, StyledAddSetButton };\r\n","import React from 'react';\r\n\r\nimport Expression from './Expression';\r\n\r\nimport Panel from 'calcite-react/Panel';\r\nimport Button, { ButtonGroup } from 'calcite-react/Button';\r\nimport { FormControl, FormControlLabel } from 'calcite-react/Form';\r\nimport Tooltip from 'calcite-react/Tooltip';\r\nimport PlusIcon from '../icons/PlusIcon';\r\n\r\nimport { StyledSetHeaderRow, StyledAddSetButton } from './Set-styled';\r\nimport { CalciteTheme } from 'calcite-react/CalciteThemeProvider';\r\n\r\nconst Set = props => {\r\n const addExpression = () => {\r\n props.addExpression(props.id);\r\n };\r\n\r\n const removeSet = () => {\r\n props.removeSet(props.id);\r\n };\r\n\r\n const updateSetOperator = mustMatchAll => {\r\n props.updateSetOperator(props.id, mustMatchAll);\r\n };\r\n\r\n const handleRemoveExpression = expressionId => {\r\n props.removeExpression(props.id, expressionId);\r\n };\r\n\r\n const handleUpdateExpression = expression => {\r\n props.updateExpression(props.id, expression);\r\n };\r\n\r\n const removeSetButton = () => {\r\n return (!props.canRemoveSet)\r\n ? ('')\r\n :\r\n (\r\n \r\n );\r\n }\r\n\r\n const getExpressions = expressions => {\r\n return Object.keys(expressions).map(key => {\r\n const expression = expressions[key];\r\n return (\r\n \r\n );\r\n });\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n Set Operator:\r\n \r\n \r\n \r\n updateSetOperator(true)}\r\n >\r\n AND\r\n \r\n \r\n \r\n updateSetOperator(false)}\r\n >\r\n OR\r\n \r\n \r\n \r\n \r\n\r\n {removeSetButton}\r\n \r\n {getExpressions(props.expressions)}\r\n \r\n Add Expression\r\n \r\n \r\n );\r\n};\r\n\r\nexport default Set;\r\n","import moment from 'moment';\r\n\r\nexport function getDayStart(date) {\r\n let startDate = new Date(date);\r\n startDate.setHours(0,0,0);\r\n let returnString = startDate.toISOString();\r\n returnString = returnString.replace(\"T\", \" \");\r\n returnString = returnString.replace(\".000Z\", \"\");\r\n return returnString;\r\n /*const dayStart = formatDate(\r\n moment(date)\r\n .startOf('day')\r\n .toDate(),\r\n 'datetime'\r\n );\r\n return dayStart;*/\r\n}\r\n\r\nexport function getDayEnd(date) {\r\n /*const dayEnd = formatDate(\r\n moment(date)\r\n .endOf('day')\r\n .toDate(),\r\n 'datetime'\r\n );\r\n return dayEnd; */\r\n let endDate = new Date(date);\r\n endDate.setHours(23,59,59,999);\r\n let returnString = endDate.toISOString();\r\n returnString = returnString.replace(\"T\", \" \");\r\n returnString = returnString.replace(\".999Z\", \"\");\r\n return returnString;\r\n}\r\n\r\nexport function getEpochDayStart(date) {\r\n const dayStart = formatDate(\r\n moment(date)\r\n .startOf('day')\r\n .toDate(),\r\n 'epoch'\r\n );\r\n return dayStart;\r\n}\r\n\r\nexport function getEpochDayEnd(date) {\r\n const dayEnd = formatDate(\r\n moment(date)\r\n .endOf('day')\r\n .toDate(),\r\n 'epoch'\r\n );\r\n return dayEnd;\r\n}\r\n\r\nexport function formatDate(date, formatter) {\r\n const dateFormat = 'YYYY-MM-DD';\r\n const dateTimeFormat = 'YYYY-MM-DD HH:mm:ss';\r\n const epochFormat = 'x';\r\n\r\n switch (formatter) {\r\n case 'date':\r\n return moment(date).format(dateFormat);\r\n case 'datetime':\r\n return moment(date).format(dateTimeFormat);\r\n case 'epoch':\r\n return moment(date).format(epochFormat);\r\n default:\r\n return moment(date).format(dateTimeFormat);\r\n }\r\n}\r\n\r\nexport function convertTimeSpanToSQLDays(value = 1, unit = 'days') {\r\n switch (unit) {\r\n case 'minutes':\r\n return moment.duration(value, 'minutes').asDays();\r\n case 'hours':\r\n return moment.duration(value, 'hours').asDays();\r\n case 'days':\r\n return moment.duration(value, 'days').asDays();\r\n case 'weeks':\r\n return moment.duration(value, 'weeks').asDays();\r\n case 'months':\r\n return moment.duration(value, 'months').asDays();\r\n case 'years':\r\n return moment.duration(value, 'years').asDays();\r\n default:\r\n console.error(`You have provided an invalid unit: ${unit}`);\r\n return null;\r\n }\r\n}\r\n","import {\r\n formatDate,\r\n getDayStart,\r\n getDayEnd,\r\n getEpochDayStart,\r\n getEpochDayEnd,\r\n convertTimeSpanToSQLDays\r\n} from './dateUtils';\r\nimport { getGenericFieldType } from './genericUtils';\r\n\r\nexport function buildExpression(options) {\r\n if (!options || !options.field) return null;\r\n\r\n const fieldName = options.field.name;\r\n const fieldType = getGenericFieldType(options.field.type);\r\n const inputValue = options.value || { code: '' };\r\n const operator = options.operator;\r\n\r\n let value;\r\n if (!operator.omitValue) {\r\n value = `${operator.prefix || ''}${inputValue.code}${operator.suffix ||\r\n ''}`;\r\n }\r\n\r\n let expression;\r\n switch (fieldType) {\r\n case 'string':\r\n expression = `${fieldName} ${operator.operator}`;\r\n expression += operator.omitValue ? '' : ` '${value}'`;\r\n break;\r\n case 'number':\r\n expression = `${fieldName} ${operator.operator}`;\r\n expression += operator.omitValue ? '' : ` ${value}`;\r\n break;\r\n case 'date':\r\n const d =\r\n inputValue.code && inputValue.code !== ''\r\n ? new Date(inputValue.code)\r\n : new Date();\r\n\r\n const date = new Date(\r\n d.getUTCFullYear(),\r\n d.getUTCMonth(),\r\n d.getUTCDate(),\r\n d.getUTCHours(),\r\n d.getUTCMinutes(),\r\n d.getUTCSeconds()\r\n );\r\n\r\n if (operator.fullDay && operator.alias === \"is after\") {\r\n expression = `${fieldName} ${operator.operator}`;\r\n expression += ` '${getDayEnd(date)}'`;\r\n }\r\n else if (operator.fullDay && operator.alias === \"is before\") {\r\n expression = `${fieldName} ${operator.operator}`;\r\n expression += ` '${getDayStart(date)}'`;\r\n }\r\n else if (operator.fullDay) \r\n {\r\n expression = `${fieldName} ${operator.operator}`;\r\n expression += ` timestamp '${getDayStart(\r\n date\r\n )}' AND timestamp '${getDayEnd(date)}'`;\r\n } else if (operator.relativeDate) {\r\n expression = `${fieldName} ${operator.operator\r\n } CURRENT_TIMESTAMP - ${convertTimeSpanToSQLDays(\r\n inputValue.timeSizeValue,\r\n inputValue.timeSpanValue\r\n )} AND CURRENT_TIMESTAMP`;\r\n }\r\n else {\r\n expression = `${fieldName} ${operator.operator}`;\r\n expression += operator.omitValue\r\n ? ''\r\n : ` '${formatDate(date, 'date')}'`;\r\n }\r\n break;\r\n case 'epoch':\r\n const epochD =\r\n inputValue.code && inputValue.code !== ''\r\n ? new Date(inputValue.code)\r\n : new Date();\r\n\r\n const epochDate = new Date(\r\n epochD.getUTCFullYear(),\r\n epochD.getUTCMonth(),\r\n epochD.getUTCDate(),\r\n epochD.getUTCHours(),\r\n epochD.getUTCMinutes(),\r\n epochD.getUTCSeconds()\r\n );\r\n\r\n expression = `${fieldName} ${operator.operator}`;\r\n\r\n if (operator.fullDay) {\r\n expression += ` ${getEpochDayStart(epochDate)} AND ${getEpochDayEnd(\r\n epochDate\r\n )}`;\r\n } else if (operator.alias === 'is before') {\r\n expression += ` ${getEpochDayStart(epochDate)}`;\r\n } else if (operator.alias === 'is on or before') {\r\n expression += ` ${getEpochDayEnd(epochDate)}`;\r\n } else if (operator.alias === 'is on or after') {\r\n expression += ` ${getEpochDayStart(epochDate)}`;\r\n } else {\r\n expression += operator.omitValue\r\n ? ''\r\n : ` '${formatDate(epochDate, 'epoch')}'`;\r\n }\r\n\r\n break;\r\n default:\r\n }\r\n\r\n return expression;\r\n}\r\n\r\nexport function buildSet(options) {\r\n // options is an array of expressions and a boolean 'mustMatchAll'\r\n const { mustMatchAll, expressions } = options;\r\n const setOperator = mustMatchAll ? 'AND' : 'OR';\r\n\r\n const set = Object.keys(expressions)\r\n .map(key => {\r\n const expression = buildExpression(expressions[key]);\r\n\r\n if (!expression) return null;\r\n\r\n return `(${expression})`;\r\n })\r\n .filter(expression => expression);\r\n\r\n if (set.length) {\r\n return set.join(` ${setOperator} `);\r\n }\r\n\r\n return '';\r\n}\r\n\r\nexport function buildFilter(options) {\r\n // options is an array of sets and a boolean 'mustMatchAll'\r\n const { mustMatchAll, sets } = options;\r\n const filterOperator = mustMatchAll ? 'AND' : 'OR';\r\n\r\n const filter = Object.keys(sets)\r\n .map(key => {\r\n const set = buildSet(sets[key]);\r\n\r\n if (!set) return null;\r\n\r\n if (Object.keys(sets).length <= 1) {\r\n return set;\r\n }\r\n\r\n return `(${set})`;\r\n })\r\n .filter(set => set);\r\n\r\n if (filter.length) {\r\n return filter.join(` ${filterOperator} `);\r\n }\r\n\r\n return '';\r\n}\r\n","const expression = {\r\n field: null,\r\n operator: null,\r\n value: {\r\n name: '',\r\n code: ''\r\n },\r\n valueType: 'value'\r\n};\r\n\r\nexport default expression;\r\n","import React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport Set from './containers/Set';\r\n\r\nimport { generateId } from './utils/genericUtils';\r\nimport { buildFilter } from './utils/sqlUtils';\r\nimport expressionTemplate from './defaults/expression';\r\n\r\nimport CalciteThemeProvider from 'calcite-react/CalciteThemeProvider';\r\nimport Panel from 'calcite-react/Panel';\r\n\r\nimport { isEqual } from 'lodash';\r\n\r\nimport {\r\n StyledSetHeaderRow\r\n} from './containers/Set-styled';\r\n\r\nclass NarrativeFilterBuilder extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n mustMatchAll: true,\r\n sets: {\r\n [generateId()]: {\r\n mustMatchAll: true,\r\n expressions: {\r\n [generateId()]: expressionTemplate\r\n }\r\n }\r\n }\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n if (\r\n this.props &&\r\n this.props.filterState &&\r\n !isEqual(this.props.filterState, this.state)\r\n )\r\n this.setState({ ...this.props.filterState }, () => {\r\n this.onChange(this.state);\r\n });\r\n }\r\n\r\n componentDidUpdate = (prevProps, prevState) => {\r\n // check if rehydrating from filterState\r\n if (\r\n JSON.stringify(prevProps.filterState) !==\r\n JSON.stringify(this.props.filterState)\r\n ) {\r\n this.setState({ ...this.props.filterState }, () => {\r\n this.onChange(this.state);\r\n });\r\n }\r\n };\r\n\r\n onChange = state => {\r\n const filter = buildFilter(state);\r\n this.props.onChange(filter, state);\r\n };\r\n\r\n updateSets = sets => {\r\n this.setState({ sets }, () => {\r\n this.onChange(this.state);\r\n });\r\n };\r\n\r\n handleAddSet = () => {\r\n const { sets } = this.state;\r\n sets[generateId()] = {\r\n mustMatchAll: true,\r\n expressions: {\r\n [generateId()]: expressionTemplate\r\n }\r\n };\r\n this.updateSets(sets);\r\n };\r\n\r\n handleRemoveSet = setId => {\r\n const { sets } = this.state;\r\n delete sets[setId];\r\n this.updateSets(sets);\r\n };\r\n\r\n handleUpdateSetOperator = (setId, setOperator) => {\r\n const { sets } = this.state;\r\n sets[setId].mustMatchAll = setOperator;\r\n this.updateSets(sets);\r\n };\r\n\r\n handleAddExpression = setId => {\r\n const { sets } = this.state;\r\n sets[setId].expressions[generateId()] = expressionTemplate;\r\n this.updateSets(sets);\r\n };\r\n\r\n handleRemoveExpression = (setId, expressionId) => {\r\n const { sets } = this.state;\r\n delete sets[setId].expressions[expressionId];\r\n this.updateSets(sets);\r\n };\r\n\r\n handleUpdateExpression = (setId, expression) => {\r\n const { sets } = this.state;\r\n const currentExpression = sets[setId].expressions[expression.id];\r\n sets[setId].expressions[expression.id] = {\r\n ...currentExpression,\r\n ...expression\r\n };\r\n this.updateSets(sets);\r\n };\r\n\r\n handleUpdateFilterOperator = mustMatchAll => {\r\n this.setState({ mustMatchAll }, () => {\r\n this.onChange(this.state);\r\n });\r\n };\r\n\r\n getSets = sets => {\r\n return Object.keys(sets).map(key => {\r\n const set = sets[key];\r\n return (\r\n \r\n );\r\n });\r\n };\r\n\r\n render() {\r\n\r\n if (!this.props.fields) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {this.getSets(this.state.sets)}\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nNarrativeFilterBuilder.propTypes = {\r\n /** ArcGIS REST API or JSAPI fields definition object. */\r\n fields: PropTypes.object.isRequired,\r\n /** Object used to persist/rehydrate the filter */\r\n filterState: PropTypes.object,\r\n /** Fired when the filter changes. Receives the filter string as an argument */\r\n onChange: PropTypes.func,\r\n /** Disables the option to pick from unique values. */\r\n disableUnique: PropTypes.bool\r\n};\r\n\r\nNarrativeFilterBuilder.defaultProps = {\r\n disableUnique: false\r\n};\r\n\r\nexport default NarrativeFilterBuilder;\r\n","import React, { Component, Fragment } from 'react';\r\nimport Dialog from 'material-ui/Dialog';\r\nimport Button from '@material-ui/core/Button';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport NarrativeFilterBuilder from '../../arcgisFilter/NarrativeFilterBuilder';\r\nimport theme from '../../../muiTheme';\r\n\r\nconst styles = {\r\n errorDialogContent: {\r\n width: \"800px\"\r\n },\r\n errorDialogTitle: {\r\n color: theme.palette.accent1Color\r\n }\r\n}\r\n\r\nclass NarrativeQueryDialog extends Component {\r\n\r\n constructor (props)\r\n {\r\n super(props);\r\n this.state =\r\n {\r\n filter: '',\r\n filterState: null\r\n };\r\n }\r\n\r\n handleFilterChanged = (filter, filterState) =>\r\n {\r\n this.setState({ filter, filterState });\r\n };\r\n\r\n render() {\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\nexport default NarrativeQueryDialog;\r\n","import React, { Component } from 'react';\r\nimport {ListItem} from 'material-ui/List';\r\nimport Divider from 'material-ui/Divider';\r\nimport KeyboardArrowUp from 'material-ui/svg-icons/hardware/keyboard-arrow-up';\r\nimport TrashIcon from 'material-ui/svg-icons/action/delete';\r\nimport { CSSTransitionGroup } from 'react-transition-group';\r\n\r\nimport theme from '../../../muiTheme.js';\r\n\r\nimport './FilterItemContainer.css';\r\n\r\nclass FilterItemContainer extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {expanded: props.expanded};\r\n }\r\n\r\n handleChange = (value) => {\r\n this.setState({\r\n expanded: !this.state.expanded\r\n });\r\n };\r\n\r\n\r\n\r\n render() {\r\n const {expanded} = this.state;\r\n const children = (expanded) ? this.props.children : '';\r\n\r\n const filterItemStyle = {\r\n color: (expanded ? theme.palette.canvasColor : theme.palette.secondaryTextColor)\r\n };\r\n\r\n let trashIcon;\r\n if (this.props.filter) {\r\n trashIcon = (\r\n {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.props.onClear()\r\n }}\r\n style={{width: \"20px\", height: \"20px\"}} />\r\n )\r\n }\r\n const icons = (\r\n
\r\n {trashIcon}\r\n \r\n
\r\n )\r\n\r\n return (\r\n
\r\n \r\n \r\n {children}\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 FilterItemContainer;\r\n","import React, { Component } from 'react';\r\nimport Checkbox from 'material-ui/Checkbox';\r\n\r\nimport CheckboxOutlineIcon from 'material-ui/svg-icons/toggle/check-box-outline-blank';\r\n\r\nimport theme from '../../../muiTheme.js';\r\n\r\nclass MultiSelect extends Component {\r\n\r\n handleChange = (e, checked) => {\r\n this.props.onChange({\r\n value: e.target.value,\r\n add: checked\r\n });\r\n };\r\n\r\n render() {\r\n const codedValues = (this.props.codedValues) ? this.props.codedValues : [];\r\n\r\n let checkboxes = '';\r\n if(codedValues.length > 0) {\r\n checkboxes = codedValues.map((item, i) => {\r\n const itemStyle = {color: (this.props.selectedCodes.indexOf(item.code) !== -1 ? theme.palette.canvasColor : theme.palette.secondaryTextColor)};\r\n\r\n return (\r\n }\r\n />\r\n )\r\n });\r\n }\r\n\r\n return (\r\n
\r\n {checkboxes}\r\n
\r\n );\r\n }\r\n\r\n}\r\n\r\nexport default MultiSelect;\r\n","import React, { Component } from 'react';\r\nimport TextField from 'material-ui/TextField';\r\n\r\nimport theme from '../../../muiTheme.js';\r\n\r\nclass NumericRange extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n maxValid: true,\r\n internalMax: null,\r\n minValid: true,\r\n internalMin: null\r\n };\r\n }\r\n\r\n maxChanged = (e) => {\r\n this.changeMax(e.target.value);\r\n }\r\n\r\n changeMax = (value) => {\r\n const isEmpty = value === \"\";\r\n const max = (isEmpty) ? null : Number.parseFloat(value);\r\n let maxValid = isEmpty || !Number.isNaN(max);\r\n\r\n //has valid min\r\n const evaluationMin = (this.state.internalMin) ? this.state.internalMin : this.props.min;\r\n const minValid = evaluationMin === null || evaluationMin < max;\r\n\r\n if(!isEmpty && evaluationMin !== null && !Number.isNaN(evaluationMin) ) {\r\n maxValid = Boolean(maxValid && (evaluationMin < max));\r\n }\r\n\r\n let newState = {\r\n maxValid: maxValid,\r\n internalMax: (maxValid) ? null : max\r\n };\r\n\r\n if(!this.state.minValid && maxValid) {\r\n newState.minValid = minValid;\r\n }\r\n\r\n this.setState( newState );\r\n\r\n if(maxValid && minValid) {\r\n this.props.onRangeChange({\r\n min: evaluationMin,\r\n max: max\r\n });\r\n }\r\n }\r\n\r\n minChanged = (e) => {\r\n this.changeMin(e.target.value);\r\n }\r\n\r\n changeMin = (value) => {\r\n const isEmpty = value === \"\";\r\n const min = (isEmpty) ? null : Number.parseFloat(value);\r\n let minValid = isEmpty || !Number.isNaN(min);\r\n\r\n //has valid max\r\n const evaluationMax = (this.state.internalMax) ? this.state.internalMax : this.props.max;\r\n const maxValid = evaluationMax === null || evaluationMax > min;\r\n if(!isEmpty && evaluationMax !== null && !Number.isNaN(evaluationMax) ) {\r\n minValid = Boolean(minValid && (evaluationMax > min));\r\n }\r\n\r\n\r\n\r\n let newState = {\r\n minValid: minValid,\r\n internalMin: (minValid) ? null : min\r\n };\r\n\r\n if(!this.state.maxValid && minValid) {\r\n newState.maxValid = maxValid;\r\n }\r\n\r\n this.setState( newState );\r\n\r\n if(minValid && maxValid ) {\r\n this.props.onRangeChange({\r\n max: evaluationMax,\r\n min: min\r\n });\r\n }\r\n }\r\n\r\n render() {\r\n\r\n const textFileStyle = {\r\n inputStyle: {\r\n color: theme.palette.canvasColor\r\n },\r\n floatingLabelStyle: {\r\n color: theme.palette.secondaryTextColor\r\n },\r\n floatingLabelFocusStyle: {\r\n color: theme.palette.canvasColor\r\n }\r\n };\r\n\r\n let minTB = (\r\n \r\n )\r\n let maxTB = (\r\n \r\n )\r\n\r\n\r\n\r\n return (\r\n
\r\n {minTB}\r\n {maxTB}\r\n
\r\n );\r\n }\r\n\r\n}\r\n\r\nexport default NumericRange;\r\n","import React, { Component } from 'react';\r\nimport Select from '@material-ui/core/Select';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport {\r\n MuiPickersUtilsProvider,\r\n KeyboardDatePicker,\r\n} from '@material-ui/pickers';\r\nimport DateFnsUtils from '@date-io/date-fns';\r\nimport './DateRange.css'\r\n\r\nclass DateRange extends Component {\r\n\r\n maxChanged = (ignore, date) => {\r\n\r\n var timestamp = Date.parse(date);\r\n\r\n if (isNaN(timestamp) === false)\r\n {\r\n this.props.onRangeChange({\r\n max: date,\r\n min: this.props.min\r\n });\r\n }\r\n }\r\n\r\n handleCommonDateChange = (event) =>\r\n {\r\n const today = new Date();\r\n /*\r\n\r\n YESTERDAY\r\n CURRENTYEAR\r\n PRIORYEAR\r\n */\r\n switch (event.target.value)\r\n {\r\n case \"TODAY\":\r\n const todayEnd = new Date();\r\n todayEnd.setHours(23,59,59,999);\r\n\r\n const todayStart = new Date();\r\n todayStart.setHours(0,0,0,0);\r\n\r\n this.props.onRangeChange({\r\n max: todayEnd,\r\n min: todayStart,\r\n commonDate: event.target.value\r\n });\r\n break;\r\n\r\n case \"YESTERDAY\":\r\n const yesterday = new Date();\r\n const yesterdayEnd = new Date();\r\n const yesterdayStart = new Date();\r\n\r\n yesterday.setDate(today.getDate() - 1);\r\n yesterdayEnd.setDate(today.getDate() - 1);\r\n yesterdayStart.setDate(today.getDate() - 1);\r\n\r\n yesterdayEnd.setHours(23,59,59,999);\r\n yesterdayStart.setHours(0,0,0,0);\r\n\r\n this.props.onRangeChange({\r\n max: yesterdayEnd,\r\n min: yesterdayStart,\r\n commonDate: event.target.value\r\n });\r\n break;\r\n \r\n case \"INLASTWEEK\":\r\n const sevenDaysAgo = new Date();\r\n\r\n sevenDaysAgo.setDate(today.getDate() - 7);\r\n\r\n const todaEnd = new Date();\r\n todaEnd.setHours(23,59,59,999);\r\n\r\n //yesterdayEnd.setHours(23,59,59,999);\r\n //yesterdayStart.setHours(0,0,0,0);\r\n\r\n this.props.onRangeChange({\r\n max: todaEnd,\r\n min: sevenDaysAgo,\r\n commonDate: event.target.value\r\n });\r\n break;\r\n\r\n case \"CURRENTYEAR\":\r\n\r\n const firstOfYear = new Date(new Date().getFullYear(), 0, 1,0,0,0,0);\r\n today.setHours(23,59,59,999);\r\n\r\n this.props.onRangeChange({\r\n max: null,\r\n min: firstOfYear,\r\n commonDate: event.target.value\r\n });\r\n break;\r\n\r\n case \"PRIORYEAR\":\r\n\r\n const firstOfPriorYear = new Date(new Date().getFullYear() - 1, 0, 1, 0, 0, 0, 0);\r\n const endOfPriorYear = new Date(new Date().getFullYear() - 1, 11, 31, 23, 59, 59, 999);\r\n\r\n this.props.onRangeChange({\r\n max: endOfPriorYear,\r\n min: firstOfPriorYear,\r\n commonDate: event.target.value\r\n });\r\n break;\r\n\r\n default:\r\n }\r\n\r\n }\r\n\r\n minChanged = (ignore, date) => {\r\n var timestamp = Date.parse(date);\r\n\r\n if (isNaN(timestamp) === false)\r\n {\r\n this.props.onRangeChange({\r\n min: date,\r\n max: this.props.max\r\n });\r\n }\r\n\r\n }\r\n\r\n render() {\r\n const today = new Date();\r\n const yesterday = new Date();\r\n const tomorrow = new Date();\r\n yesterday.setDate(today.getDate() - 1);\r\n tomorrow.setDate(today.getDate() + 1);\r\n\r\n let minDate = (\r\n \r\n )\r\n\r\n let maxDate = (\r\n \r\n )\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n {minDate}\r\n {maxDate}\r\n \r\n
\r\n );\r\n }\r\n\r\n}\r\n\r\nexport default DateRange;\r\n","import React, { Component } from 'react';\r\nimport DropDownMenu from 'material-ui/DropDownMenu'\r\nimport MenuItem from 'material-ui/MenuItem';\r\n\r\n\r\n// import theme from '../../muiTheme.js';\r\n\r\nclass DropDownSelect extends Component {\r\n\r\n handleChange = (e, key, value) => {\r\n this.props.onChange(value);\r\n };\r\n\r\n render() {\r\n const codedValues = (this.props.codedValues) ? this.props.codedValues : [];\r\n\r\n let menuItems = '';\r\n if (this.props.useArray)\r\n {\r\n if(codedValues.length > 0) {\r\n menuItems = codedValues.map((item, i) => {\r\n return (\r\n \r\n )\r\n });\r\n }\r\n\r\n }\r\n else\r\n {\r\n if(codedValues.length > 0) {\r\n menuItems = codedValues.map((item, i) => {\r\n return (\r\n \r\n )\r\n });\r\n }\r\n }\r\n\r\n\r\n return (\r\n
\r\n { (this.props.label !== '') &&\r\n \r\n }\r\n \r\n {menuItems}\r\n \r\n
\r\n );\r\n }\r\n\r\n}\r\n\r\nexport default DropDownSelect;\r\n","import React, { Component } from 'react';\r\nimport TextField from 'material-ui/TextField';\r\n\r\nimport theme from '../../../muiTheme.js';\r\n\r\nclass TextFilter extends Component {\r\n\r\n\r\n handleChange = (e) => {\r\n this.props.onChange(e.target.value);\r\n }\r\n\r\n render() {\r\n\r\n const textFileStyle = {\r\n inputStyle: {\r\n color: theme.palette.canvasColor\r\n },\r\n floatingLabelStyle: {\r\n color: theme.palette.secondaryTextColor\r\n },\r\n floatingLabelFocusStyle: {\r\n color: theme.palette.canvasColor\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 TextFilter;\r\n","import React, { Component } from 'react';\r\nimport TextField from 'material-ui/TextField';\r\nimport theme from '../../../muiTheme.js';\r\n\r\nclass JurisdictionalTextFilter extends Component {\r\n\r\n\r\n handleChange = (e) => {\r\n this.props.onChange(e.target.value);\r\n }\r\n\r\n render() {\r\n\r\n const textFileStyle = {\r\n inputStyle: {\r\n color: theme.palette.canvasColor\r\n },\r\n floatingLabelStyle: {\r\n color: theme.palette.secondaryTextColor\r\n },\r\n floatingLabelFocusStyle: {\r\n color: theme.palette.canvasColor\r\n }\r\n };\r\n\r\n return (\r\n
\r\n \r\n {this.props.iconToShow}\r\n
\r\n );\r\n }\r\n\r\n}\r\n\r\nexport default JurisdictionalTextFilter;\r\n","import React from 'react';\r\nimport pure from 'recompose/pure';\r\nimport SvgIcon from 'material-ui/SvgIcon';\r\n\r\nlet Polygon = (props) => (\r\n \r\n \r\n \r\n);\r\nPolygon = pure(Polygon);\r\nPolygon.displayName = 'Polygon';\r\nPolygon.muiName = 'SvgIcon';\r\n\r\nexport default Polygon;\r\n","import React, { Component } from 'react';\r\nimport { bindActionCreators } from 'redux';\r\nimport { connect } from 'react-redux';\r\nimport { loadModules } from 'esri-loader';\r\nimport IconButton from 'material-ui/IconButton';\r\nimport TrashIcon from 'material-ui/svg-icons/navigation/close';\r\nimport PolygonIcon from '../../../icons/Polygon';\r\nimport UploadFileIcon from '@mui/icons-material/UploadFile';\r\nimport Polygon from \"@arcgis/core/geometry/Polygon\";\r\nimport { filterOperations } from '../../../redux/filter';\r\nimport FormControl from '@material-ui/core/FormControl';\r\n\r\nimport { setMapViewTarget } from '../../esri/mapHub';\r\n\r\nimport theme from '../../../muiTheme';\r\n\r\nconst iconButtonStyles = {\r\n buttonStyle: {\r\n borderRadius: \"50%\",\r\n width: \"36px\",\r\n height: \"36px\",\r\n padding: \"6px\"\r\n },\r\n activeStyle: {\r\n backgroundColor: \"#6f7482\"\r\n },\r\n activeIconStyle: {\r\n color: theme.palette.canvasColor\r\n }\r\n}\r\n\r\nclass LocationFilter extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n activeTool: null,\r\n isUploading: false,\r\n showShapeParseError: false\r\n };\r\n }\r\n\r\n inputFileChanged = async (e) =>\r\n {\r\n if (window.FileReader)\r\n {\r\n this.setState({\r\n isUploading: true\r\n });\r\n }\r\n\r\n let file = e.target.files && e.target.files.length >0 ? e.target.files[0] : null;\r\n this.generateFeatureCollection(file);\r\n this.refs.input_reader.value = null;\r\n}\r\n\r\ngenerateFeatureCollection = (file) =>\r\n {\r\n loadModules(['esri/geometry/SpatialReference', 'esri/geometry/support/webMercatorUtils'])\r\n .then( ([SpatialReference, webMercatorUtils]) =>\r\n {\r\n var params = {\r\n name: file,\r\n targetSR: new SpatialReference(4269),\r\n maxRecordCount: 1000,\r\n enforceInputFileSizeLimit: true,\r\n enforceOutputJsonSizeLimit: true\r\n };\r\n\r\n // generalize features to 10 meters for better performance\r\n //TODO: These are being overwritten by the API call\r\n params.generalize = true;\r\n params.maxAllowableOffset = 5;\r\n params.reducePrecision = false;\r\n //params.numberOfDigitsAfterDecimal = 3;\r\n\r\n window.api.addFilterFromShapefile(params, file, \"test\", \"test\").then(spatialFilter =>\r\n {\r\n if (spatialFilter)\r\n {\r\n const poly = new Polygon({\r\n rings: spatialFilter.geometry.rings,\r\n spatialReference: { wkid: 3857 }\r\n });\r\n this.props.setGeometryFromShapefile(poly);\r\n this.props.setSpatialFilterID(spatialFilter.attributes.OBJECTID);\r\n \r\n let geomWGS84 = webMercatorUtils.webMercatorToGeographic(spatialFilter.geometry);\r\n\r\n setMapViewTarget({\r\n target: geomWGS84\r\n });\r\n }\r\n }\r\n ).catch(err =>\r\n {\r\n this.setState({showShapeParseError: true});\r\n });\r\n\r\n });\r\n }\r\n\r\n\r\n polygonToolSelected = () => {\r\n if (this.props.filter.activeDrawTool === \"polygon\") \r\n {\r\n this.cancelSelectedTool();\r\n } \r\n else \r\n {\r\n this.props.setActiveDrawTool(\"polygon\");\r\n this.props.onToolSelected(\"polygon\");\r\n }\r\n }\r\n\r\n uploadShapefile = (event) => {\r\n event.preventDefault();\r\n let input = this.refs.input_reader;\r\n input.click();\r\n }\r\n\r\n removeGeometryToolSelected = () => {\r\n this.setState({activeTool: null});\r\n this.props.onGeometryCleared();\r\n }\r\n\r\n cancelSelectedTool = () => {\r\n this.props.setActiveDrawTool(null);\r\n this.props.onToolCancel();\r\n }\r\n\r\n render() {\r\n const removeGeometry = (this.props.filter.geometry || this.props.filter.shapefileFilter) ? (\r\n \r\n \r\n \r\n ) : null;\r\n\r\n let polygonSelectedStyle;\r\n let polygonIconSelectedStyle;\r\n if (this.props.filter.activeDrawTool === \"polygon\") {\r\n polygonSelectedStyle = iconButtonStyles.activeStyle;\r\n polygonIconSelectedStyle = iconButtonStyles.activeIconStyle;\r\n }\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\n
\r\n {removeGeometry}\r\n
\r\n
\r\n );\r\n }\r\n\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n map: state.map,\r\n appConfig: state.config,\r\n filter: state.filter\r\n})\r\n\r\nconst mapDispatchToProps = function (dispatch) {\r\n return bindActionCreators({\r\n ...filterOperations\r\n }, dispatch);\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(LocationFilter)\r\n","import React, { Fragment, Component } from 'react';\r\nimport { bindActionCreators } from 'redux';\r\nimport { connect } from 'react-redux';\r\nimport { filterOperations } from '../../../redux/filter';\r\nimport { incidentsOperations } from '../../../redux/incidentList';\r\nimport NarrativeQueryDialog from './NarrativeQueryDialog';\r\nimport FilterItemContainer from './FilterItemContainer';\r\nimport MultiSelect from './MultiSelect';\r\nimport NumericRange from './NumericRange';\r\nimport DateRange from './DateRange';\r\nimport DropDownSelect from './DropDownSelect';\r\nimport TextFilter from './TextFilter';\r\nimport JurisdictionalTextFilter from './JurisdictionalTextFilter';\r\nimport LocationFilter from './LocationFilter';\r\nimport Badge from 'material-ui/Badge';\r\nimport CircularProgress from 'material-ui/CircularProgress';\r\nimport Checkbox from '@mui/material/Checkbox';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport FilterIcon from 'material-ui/svg-icons/content/filter-list';\r\nimport Popover from '@mui/material/Popover';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport HelpIcon from '@mui/icons-material/Help';\r\nimport CheckIcon from '@mui/icons-material/Check';\r\nimport PriorityHighIcon from '@mui/icons-material/PriorityHigh';\r\nimport DoNotDisturbAltIcon from '@mui/icons-material/DoNotDisturbAlt';\r\nimport Typography from '@mui/material/Typography'; \r\nimport { disableDrawMode, enableDrawMode, setSpatialFilterPolygon, zoomToPolygon } from '../../esri/mapHub';\r\nimport { getCountiesForState } from '../../../utils/incidentHelper';\r\nimport originFields from '../../../defaults/PointOfOriginFields.json'\r\nimport enums from '../../../defaults/Enums.json'\r\n\r\nimport './FiltersContainer.css';\r\n\r\nimport theme from '../../../muiTheme';\r\n\r\nclass FiltersContainer extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n narrativeQueryDialogOpen: false,\r\n discoveryDateCommon: '',\r\n outDateCommon: '',\r\n modifiedDateCommon: '',\r\n anchorEl: null,\r\n popoverOpen: false,\r\n jurisdictionalUnitValid: null,\r\n protectingUnitValid: null\r\n };\r\n }\r\n\r\n onNarrativeQueryDialogClose = () => {\r\n this.setState({\r\n narrativeQueryDialogOpen: false\r\n });\r\n }\r\n\r\n clearPerimeterAcreage = () => {\r\n this.props.clearPerimeterAcreage();\r\n }\r\n\r\n onProtectingUnitChange = (unit) => \r\n {\r\n if (!unit || unit === null || unit === '') \r\n {\r\n this.setState({\r\n protectingUnitValid: null\r\n });\r\n } \r\n if (unit && unit !== null && unit !== '') \r\n {\r\n window.api.getUnitId(unit).then(unitIdResponse => \r\n {\r\n const protectingUnitIdIsValid = (unitIdResponse && unitIdResponse.units && unitIdResponse.units.length > 0);\r\n this.setState({\r\n protectingUnitValid: protectingUnitIdIsValid\r\n });\r\n });\r\n }\r\n\r\n this.props.setPOOProtectingUnit(unit);\r\n }\r\n\r\n onJurisdictionalUnitChange = (unit) => \r\n {\r\n if (!unit || unit === null || unit === '') \r\n {\r\n this.setState({\r\n jurisdictionalUnitValid: null\r\n });\r\n } \r\n if (unit && unit !== null && unit !== '') \r\n {\r\n window.api.getUnitId(unit).then(unitIdResponse => \r\n {\r\n const unitIdIsValid = (unitIdResponse && unitIdResponse.units && unitIdResponse.units.length > 0);\r\n this.setState({\r\n jurisdictionalUnitValid: unitIdIsValid\r\n });\r\n });\r\n }\r\n\r\n this.props.setPOOJurisdictionalUnit(unit);\r\n }\r\n\r\n handlePopoverClose = () => {\r\n this.setState({\r\n popoverOpen: false,\r\n anchorEl: null,\r\n });\r\n }\r\n\r\n openPopover = (event) => {\r\n event.preventDefault();\r\n\r\n this.setState({\r\n popoverOpen: true,\r\n anchorEl: event.currentTarget,\r\n });\r\n }\r\n setPerimeterAcreageLandowner = (landowner) => {\r\n this.props.setPerimeterAcreageLandowner(landowner);\r\n\r\n /* if (landowner && this.props.filter.perimeterAcreageOperator && this.props.filter.perimeterAcreageNumber) \r\n {\r\n window.api.getPerimeterAcreageIds(landowner, this.props.filter.perimeterAcreageOperator, this.props.filter.perimeterAcreageNumber).then(response => \r\n {\r\n this.props.setPerimeterAcreageIds(response);\r\n });\r\n } */\r\n }\r\n\r\n setPerimeterAcreageOperator = (operator) => {\r\n this.props.setPerimeterAcreageOperator(operator);\r\n\r\n /*if (this.props.filter.perimeterAcreageLandowner && operator && this.props.filter.perimeterAcreageNumber) \r\n {\r\n window.api.getPerimeterAcreageIds(this.props.filter.perimeterAcreageLandowner, operator, this.props.filter.perimeterAcreageNumber).then(response => \r\n {\r\n this.props.setPerimeterAcreageIds(response);\r\n });\r\n } */\r\n }\r\n\r\n setPerimeterAcreageNumber = (acreage) => {\r\n this.props.setPerimeterAcreageNumber(acreage);\r\n\r\n /*if (this.props.filter.perimeterAcreageLandowner && this.props.filter.perimeterAcreageOperator && acreage) \r\n {\r\n window.api.getPerimeterAcreageIds(this.props.filter.perimeterAcreageLandowner, this.props.filter.perimeterAcreageOperator, acreage).then(response => \r\n {\r\n this.props.setPerimeterAcreageIds(response);\r\n });\r\n } */\r\n }\r\n\r\n showNarrativePopup = () => {\r\n this.setState({\r\n narrativeQueryDialogOpen: true\r\n });\r\n }\r\n\r\n onSaveNarrativeFilter = (narrativeFilter, narrativeFilterState) => {\r\n this.props.setNarrativeFilter(narrativeFilter, narrativeFilterState);\r\n this.setState({\r\n narrativeQueryDialogOpen: false\r\n });\r\n }\r\n\r\n updateDataSourcesFilter = (args) => {\r\n if (!args) {\r\n this.props.clearDataSources();\r\n }\r\n else if (args.add) {\r\n this.props.addDataSource(args.value);\r\n }\r\n else {\r\n this.props.removeDataSource(args.value);\r\n }\r\n }\r\n\r\n handleMultiRootCheckboxChange = (event) => {\r\n const multiRootOnly = (event.target.checked);\r\n this.props.setMultiRoot(multiRootOnly);\r\n }\r\n\r\n updateInitialFireStrategyFilter = (args) => {\r\n if (!args) {\r\n this.props.clearInitialStrategy();\r\n }\r\n else if (args.add) {\r\n this.props.addInitialStrategy(args.value);\r\n }\r\n else {\r\n this.props.removeInitialStrategy(args.value);\r\n }\r\n }\r\n\r\n updateIrwinRelationshipsFilter = (args) => {\r\n debugger;\r\n if (!args) {\r\n this.props.clearIrwinRelationships();\r\n }\r\n else if (args.add) \r\n {\r\n this.props.addIrwinRelationship(args.value);\r\n }\r\n else \r\n {\r\n this.props.removeIrwinRelationship(args.value);\r\n }\r\n }\r\n //\r\n\r\n updateLandownerCategoryFilter = (args) => {\r\n if (!args) {\r\n this.props.clearLandownerCategory();\r\n }\r\n else if (args.add) {\r\n this.props.addLandownerCategory(args.value);\r\n }\r\n else {\r\n this.props.removeLandownerCategory(args.value);\r\n }\r\n }\r\n\r\n\r\n updateIncidentTypeCategoryFilter = (args) => {\r\n if (!args) {\r\n this.props.clearInitialType();\r\n }\r\n else if (args.add) {\r\n this.props.addInitialType(args.value);\r\n }\r\n else {\r\n this.props.removeInitialType(args.value);\r\n }\r\n }\r\n\r\n updateFireCauseFilter = (args) => {\r\n\r\n if (!args) {\r\n this.props.clearFireCause();\r\n }\r\n else if (args.add) {\r\n this.props.addFireCause(parseInt(args.value));\r\n }\r\n else {\r\n this.props.removeFireCause(parseInt(args.value));\r\n }\r\n }\r\n\r\n updateAcresRangeFilter = (args) => {\r\n if (!args) {\r\n this.props.clearFireAcreage();\r\n }\r\n else {\r\n this.props.setFireAcreage(args);\r\n }\r\n }\r\n\r\n updateDiscoveryDateFilter = (args) => {\r\n if (!args) {\r\n this.props.clearFireDiscoveryDates();\r\n this.setState({\r\n discoveryDateCommon: ''\r\n });\r\n }\r\n else {\r\n this.props.setFireDiscoveryDates(args);\r\n if (args.commonDate) {\r\n this.setState({\r\n discoveryDateCommon: args.commonDate\r\n });\r\n }\r\n }\r\n }\r\n\r\n updateOutDateFilter = (args) => {\r\n if (!args) {\r\n this.props.clearFireOutDates();\r\n this.setState({\r\n outDateCommon: ''\r\n });\r\n }\r\n else {\r\n this.props.setFireOutDates(args);\r\n if (args.commonDate) {\r\n this.setState({\r\n outDateCommon: args.commonDate\r\n });\r\n }\r\n }\r\n }\r\n\r\n updateModifiedDateFilter = (args) => {\r\n if (!args) {\r\n this.props.clearModifiedDates();\r\n this.setState({\r\n modifiedDateCommon: ''\r\n });\r\n }\r\n else {\r\n this.props.setModifiedDates(args);\r\n if (args.commonDate) {\r\n this.setState({\r\n modifiedDateCommon: args.commonDate\r\n });\r\n }\r\n }\r\n }\r\n\r\n clearFireDamageFilters = () => {\r\n this.props.setStructuresFilter(null);\r\n this.props.setInjuriesFilter(null);\r\n this.props.setFatalitiesFilter(null);\r\n this.props.setOtherStructuresDestroyedFilter(null);\r\n this.props.setResidencesThreatenedFilter(null);\r\n this.props.setOtherStructuresThreatenedFilter(null);\r\n }\r\n\r\n clearModifiedBySystemFilter = () => {\r\n this.props.setModifiedBySystemFilter(null);\r\n }\r\n\r\n clearCapabilityRequestsFilter = () => {\r\n this.props.setCapabilityRequestsFilter(null);\r\n }\r\n\r\n clearCreatedBySystemFilter = () => {\r\n this.props.setCreatedBySystemFilter(null);\r\n }\r\n\r\n clearCertificationFilter = () => {\r\n this.props.setCertifiedFilter(null);\r\n }\r\n\r\n clearGaccFilter = () => {\r\n this.props.setGaccFilter(null);\r\n }\r\n\r\n clearStateFilter = () => {\r\n this.props.setStateFilter(null);\r\n this.props.setCountyFilter(null);\r\n }\r\n\r\n handleUseExtentChange = (e, checked) => {\r\n this.props.setUseExtentFilter(checked);\r\n }\r\n\r\n drawToolSelected = (toolName) => {\r\n enableDrawMode({ drawAction: \"polygon\" })\r\n .then((args) => {\r\n this.props.setFilterGeometry(args.geometry);\r\n this.props.setActiveDrawTool(null);\r\n });\r\n }\r\n setGeometryFromShapefile = (polygon) => \r\n { \r\n this.props.setHasSpatialFilter(true);\r\n setSpatialFilterPolygon(polygon);\r\n zoomToPolygon(polygon);\r\n }\r\n\r\n drawToolCancelDraw = () => {\r\n disableDrawMode();\r\n }\r\n\r\n clearLocationFilter = () => {\r\n this.handleUseExtentChange(null, false);\r\n this.props.setFilterGeometry(null);\r\n this.props.setHasSpatialFilter(false);\r\n this.props.setSpatialFilterID(null);\r\n setSpatialFilterPolygon(null); \r\n this.props.setActiveDrawTool(null);\r\n }\r\n\r\n\r\n render() {\r\n //const extentToggleStye = {color: (this.props.filter.useExtent ? theme.palette.canvasColor : theme.palette.secondaryTextColor)}\r\n let useExtentToggle = (\r\n \r\n {\r\n this.props.setFilterGeometry(null);\r\n this.props.setHasSpatialFilter(false);\r\n this.props.setSpatialFilterID(null);\r\n setSpatialFilterPolygon(null);\r\n }} />\r\n \r\n )}\r\n />\r\n\r\n );\r\n\r\n const fireCauseInfo = this.props.appConfig.fieldInfos.filter(info => { return info.name === originFields.fireCauseId })\r\n\r\n const fireCauseCodedValues = (fireCauseInfo.length === 1) ? fireCauseInfo[0].domain.codedValues : [];\r\n\r\n let fireCauseMultiSelect = (\r\n \r\n )}\r\n />\r\n );\r\n\r\n let acreageNumericRange = (\r\n \r\n )}\r\n />\r\n );\r\n\r\n let fireDiscoveryDateRange = (\r\n \r\n )}\r\n />\r\n );\r\n\r\n let fireOutDateRange = (\r\n \r\n )}\r\n />\r\n );\r\n\r\n let lastModifiedDateRange = (\r\n \r\n )}\r\n />\r\n );\r\n\r\n let modifiedSystem = (\r\n \r\n \r\n \r\n )}\r\n />\r\n )\r\n\r\n let utcFilter = (\r\n \r\n \r\n \r\n )}\r\n />\r\n )\r\n\r\n let perimeterAcreageFilter = (\r\n \r\n \r\n =\"\r\n },\r\n {\r\n name: \"less than or equal to\",\r\n code: \"<=\"\r\n },\r\n {\r\n name: \"equals\",\r\n code: '='\r\n }\r\n ]}\r\n value={this.props.filter.perimeterAcreageOperator}\r\n />\r\n \r\n \r\n )}\r\n />\r\n )\r\n\r\n let createdBySystem = (\r\n \r\n \r\n \r\n )}\r\n />\r\n )\r\n\r\n let fireDamages = (\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 let gaccFilter = (\r\n \r\n )}\r\n />\r\n )\r\n\r\n let stateFilter = (\r\n \r\n \r\n \r\n \r\n )}\r\n />\r\n )\r\n\r\n let certificationLevels = (\r\n \r\n )}\r\n />\r\n )\r\n\r\n let sourceFilter = (\r\n \r\n \r\n \r\n }\r\n label=\"Only Multi-Root Incidents\"\r\n />\r\n \r\n )}\r\n />\r\n )\r\n\r\n let initialFireStrategyFilter = (\r\n \r\n )}\r\n />\r\n )\r\n\r\n let relationshipsFilter = (\r\n \r\n )}\r\n />\r\n )\r\n\r\n\r\n let incidentTypeCategoryFilter = (\r\n \r\n )}\r\n />\r\n )\r\n\r\n\r\n let finalReportFilter = (\r\n \r\n Edit\r\n \r\n\r\n \r\n )\r\n }\r\n />\r\n )\r\n const showJurisdictionalIcon = this.state.jurisdictionalUnitValid !== null;\r\n const iconToShow = (showJurisdictionalIcon) ? ((this.state.jurisdictionalUnitValid) ? ( ) : ( )) : '';\r\n\r\n let jurisdictionalFilter = (\r\n {\r\n this.props.setPOOIncidentJurisdictionalAgency(null);\r\n this.props.setPOOJurisdictionalUnit(null);\r\n //this.props.setPOOProtectingUnit(null);\r\n this.onJurisdictionalUnitChange(null);\r\n }}\r\n children={(\r\n
\r\n \r\n \r\n
\r\n )} />\r\n )\r\n\r\n let uniquenessIndexFilter = (\r\n {\r\n this.props.setUniquenessFilter(null);\r\n }}\r\n children={(\r\n
\r\n \r\n
\r\n )} />\r\n )\r\n\r\n let dispatchCenterFilter = (\r\n {\r\n this.props.setDispatchCenterID(null);\r\n }}\r\n children={(\r\n
\r\n \r\n
\r\n )} />\r\n )\r\n\r\n \r\n const showProtectingUnitIcon = this.state.protectingUnitValid !== null;\r\n const protectingIconToShow = (showProtectingUnitIcon) ? ((this.state.protectingUnitValid) ? ( ) : ( )) : '';\r\n\r\n let protectingUnitFilter = (\r\n {\r\n //this.props.setPOOProtectingUnit(null);\r\n this.onProtectingUnitChange(null);\r\n this.props.setPOOProtectingAgency(null);\r\n }}\r\n children={(\r\n
\r\n \r\n \r\n
\r\n )} />\r\n )\r\n\r\n let landownerCategoryFields = [];\r\n landownerCategoryFields = this.props.appConfig.fieldInfos.filter(fieldInfo => {\r\n return fieldInfo.name === \"POOLandownerCategory\"\r\n })\r\n if (landownerCategoryFields.length > 0) {\r\n landownerCategoryFields = landownerCategoryFields[0].domain.codedValues\r\n }\r\n\r\n let landownerCategoryFilter = (\r\n \r\n )} />\r\n )\r\n\r\n let filterHeaderContent;\r\n const currentDisplayed = this.props.incidentList.displayedIncidentsCount;\r\n const queryTotal = this.props.incidentList.queriedIncidentsTotal;\r\n const labelText = (queryTotal === currentDisplayed) ? 'Showing All ' + currentDisplayed + ' Incidents' : ' Showing ' + currentDisplayed + ' of ' + queryTotal + ' Incidents';\r\n //const incidentCount = (this.props.filter.useExtent) ? this.props.incidentList.visibleIncidents.length : this.props.incidentList.incidents.length\r\n if (this.props.filter.loading) {\r\n filterHeaderContent = (\r\n \r\n )\r\n }\r\n else if (this.props.filterVisible) {\r\n /*let filteredIncidents;\r\n if (this.props.filter.shouldFilterOnPerimeterAcreageIds) \r\n { \r\n if (this.props.filter.perimeterAcreageIds.length > 0) \r\n {\r\n filteredIncidents = this.props.incidentList.visibleIncidents.filter(item => this.props.filter.perimeterAcreageIds.includes(item.attributes[originFields.fireOccurenceRecordID]));\r\n } \r\n else \r\n {\r\n filteredIncidents = [];\r\n }\r\n } */\r\n filterHeaderContent = (queryTotal !== currentDisplayed) ?\r\n ({labelText}\r\n \r\n \r\n \r\n \r\n Filter criteria matched {queryTotal} incidents, but only {currentDisplayed} are displayed in the map.\r\n Downloading incidents will return all {queryTotal} incidents.\r\n \r\n \r\n )\r\n :\r\n ({'\\u00A0'}{labelText});\r\n\r\n }\r\n else {\r\n let badgeIncidentCount = currentDisplayed;\r\n filterHeaderContent = (\r\n \r\n \r\n \r\n )\r\n }\r\n\r\n let contents = (\r\n
\r\n
\r\n {filterHeaderContent}\r\n
\r\n
\r\n {useExtentToggle}\r\n {sourceFilter}\r\n {certificationLevels}\r\n {gaccFilter}\r\n {stateFilter}\r\n {initialFireStrategyFilter}\r\n {relationshipsFilter}\r\n {incidentTypeCategoryFilter}\r\n {fireCauseMultiSelect}\r\n {acreageNumericRange}\r\n {fireDiscoveryDateRange}\r\n {fireOutDateRange}\r\n {lastModifiedDateRange}\r\n {modifiedSystem}\r\n {createdBySystem}\r\n {fireDamages}\r\n {perimeterAcreageFilter}\r\n {finalReportFilter}\r\n {jurisdictionalFilter}\r\n {dispatchCenterFilter}\r\n {protectingUnitFilter}\r\n {landownerCategoryFilter}\r\n {uniquenessIndexFilter}\r\n {utcFilter}\r\n
\r\n \r\n Reset Filters\r\n
\r\n \r\n );\r\n\r\n return (contents)\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n map: state.map,\r\n auth: state.auth,\r\n appConfig: state.config,\r\n filter: state.filter,\r\n incidentList: state.incidentList\r\n // router: state.router\r\n})\r\n\r\nconst mapDispatchToProps = function (dispatch) {\r\n return bindActionCreators({\r\n ...filterOperations,\r\n ...incidentsOperations\r\n }, dispatch);\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(FiltersContainer)\r\n","import React, { Component } from 'react';\r\nimport Dialog from 'material-ui/Dialog';\r\nimport Button from '@material-ui/core/Button';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport Checkbox from 'material-ui/Checkbox';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport theme from '../../muiTheme';\r\n\r\nconst styles = {\r\n errorDialogContent: {\r\n width: \"500px\"\r\n },\r\n errorDialogTitle: {\r\n color: theme.palette.accent1Color\r\n }\r\n};\r\n\r\nexport class CertifyDialog extends Component\r\n{\r\n\r\n constructor(props)\r\n {\r\n super(props);\r\n\r\n this.state =\r\n {\r\n canCertifyIncident: false\r\n };\r\n }\r\n\r\nrender() {\r\n\r\n return (\r\n\r\n \r\n \r\n
\r\n \r\n {\r\n this.setState({canCertifyIncident: checked});\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 CertifyDialog;\r\n","import React, { Component } from 'react';\r\nimport Table from '@material-ui/core/Table';\r\nimport TableBody from '@material-ui/core/TableBody';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport TableRow from '@material-ui/core/TableRow';\r\nimport XLSX from 'xlsx';\r\n\r\nexport class UploadResults extends Component\r\n{\r\n \r\n formatIncidentData = () =>\r\n {\r\n let dataRows = [];\r\n if (this.props.results.HeaderRow) {\r\n let firstRow = [];\r\n this.props.results.HeaderRow.forEach(rowHeading => {\r\n firstRow.push(rowHeading);\r\n });\r\n firstRow.push(\"Error\");\r\n /*\r\n 'LocalIncidentID',\r\n\t\t'FireDiscoveryDate',\r\n\t\t'FireDiscoveryTime',\r\n\t\t'FireReportingAgencyUnitIdentifier',\r\n\t\t'State',\r\n\t\t'Latitude',\r\n\t\t'Longitude',\r\n\t\t'StatisticalCauseCode',\r\n\t\t'FinalFireAcreQuantity',\r\n\t\t'FireContainmentDate',\r\n\t\t'FireContainmentTime',\r\n\t\t'IncidentName',\r\n\t\t'StateFIPS',\r\n\t\t'County',\r\n\t\t'CountyFIPS',\r\n\t\t'District',\r\n\t\t'OwnershipCode',\r\n\t\t'ResidencesThreatened',\r\n\t\t'ResidencesDestroyed',\r\n\t\t'OtherStructuresThreatened',\r\n\t\t'OtherStructuresDestroyed',\r\n\t\t'NumberInjuries',\r\n\t\t'NumberFatalities',\r\n\t\t'DeleteFlag'\r\n */\r\n\r\n dataRows.push(firstRow);\r\n \r\n var i = 0;\r\n this.props.results.SkippedIncidents.forEach(incident => {\r\n let newRow = [];\r\n incident.forEach(fieldValue => {\r\n newRow.push(fieldValue);\r\n });\r\n newRow.push(this.props.results.SkippedIncidentDetails[i]);\r\n dataRows.push(newRow);\r\n i++;\r\n });\r\n }\r\n /* for (let i = 0; i < this.props.results.SkippedIncidents.length; i++)\r\n {\r\n let newRow = [\r\n this.props.results.SkippedIncidents[i].LocalIncidentID,\r\n \t\tthis.props.results.SkippedIncidents[i].FireDiscoveryDate,\r\n \t\tthis.props.results.SkippedIncidents[i].FireDiscoveryTime,\r\n \t\tthis.props.results.SkippedIncidents[i].FireReportingAgencyUnitIdentifier,\r\n \t this.props.results.SkippedIncidents[i].State,\r\n \t\tthis.props.results.SkippedIncidents[i].Latitude,\r\n \t\tthis.props.results.SkippedIncidents[i].Longitude,\r\n \t\tthis.props.results.SkippedIncidents[i].StatisticalCauseCode,\r\n \t\tthis.props.results.SkippedIncidents[i].FinalFireAcreQuantity,\r\n \t\tthis.props.results.SkippedIncidents[i].FireContainmentDate,\r\n \t\tthis.props.results.SkippedIncidents[i].FireContainmentTime,\r\n \t\tthis.props.results.SkippedIncidents[i].IncidentName,\r\n \t\tthis.props.results.SkippedIncidents[i].StateFIPS,\r\n \t\tthis.props.results.SkippedIncidents[i].County,\r\n \t\tthis.props.results.SkippedIncidents[i].CountyFIPS,\r\n \t\tthis.props.results.SkippedIncidents[i].District,\r\n \t\tthis.props.results.SkippedIncidents[i].OwnershipCode,\r\n \t\tthis.props.results.SkippedIncidents[i].ResidencesThreatened,\r\n \t\tthis.props.results.SkippedIncidents[i].ResidencesDestroyed,\r\n \t\tthis.props.results.SkippedIncidents[i].OtherStructuresThreatened,\r\n \t\tthis.props.results.SkippedIncidents[i].OtherStructuresDestroyed,\r\n \t\tthis.props.results.SkippedIncidents[i].NumberInjuries,\r\n \t\tthis.props.results.SkippedIncidents[i].NumberFatalities,\r\n \t\tthis.props.results.SkippedIncidents[i].DeleteFlag,\r\n this.props.results.SkippedIncidentDetails[i]\r\n ]; */\r\n return dataRows;\r\n }\r\n\r\n writeCsv = () =>\r\n {\r\n const workbook = XLSX.utils.book_new();\r\n let incidentData = this.formatIncidentData();\r\n let incidentSheet = XLSX.utils.aoa_to_sheet(incidentData);\r\n XLSX.utils.book_append_sheet(workbook, incidentSheet, \"RejectedRecords\");\r\n\r\n XLSX.writeFile(workbook, \"RejectedRecords.xlsx\");\r\n }\r\n\r\n componentDidUpdate = (prevProps, prevState) =>\r\n {\r\n if (this.props.results && this.props.results !== prevProps.results)\r\n {\r\n if (this.props.results.SkippedIncidents && this.props.results.SkippedIncidents.length > 0)\r\n {\r\n this.writeCsv();\r\n }\r\n }\r\n }\r\n\r\n render()\r\n {\r\n return (!this.props.isVisible) ? (
) : (\r\n \r\n \r\n \r\n Records parsed from file:\r\n {this.props.results.NumberOfParsedRecords}\r\n \r\n \r\n New incidents created:\r\n {this.props.results.NumberOfUploadedIncidents}\r\n \r\n\r\n \r\n Existing incidents deleted:\r\n {this.props.results.NumberOfDeletedRecords}\r\n \r\n\r\n \r\n Number of skipped records:\r\n {this.props.results.SkippedRecordCount}\r\n \r\n { this.props.results.Rejected &&\r\n \r\n Error:\r\n {this.props.results.ErrorText}\r\n \r\n }\r\n {this.props.results.SkippedRecordCount > 0 &&\r\n \r\n See downloaded spreadsheet for rejected records and related data issues.\r\n \r\n }\r\n\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default UploadResults;\r\n","import originFields from '../../defaults/PointOfOriginFields.json'\r\nimport moment from 'moment';\r\nimport * as esriLoader from 'esri-loader';\r\n\r\nexport async function filterIncidentsByState(selectedState, csvRecords) {\r\n /* results.data[0][12]\r\n'Latitude'\r\nresults.data[0][13]\r\n'Longitude'\r\n*/ \r\n\r\n return new Promise(resolve => {\r\n esriLoader.loadModules(['esri/geometry/Point', 'esri/geometry/SpatialReference', 'esri/geometry/geometryEngine', 'esri/geometry/support/jsonUtils'])\r\n .then(([Point, SpatialReference, geometryEngine, geometryJsonUtils]) => {\r\n window.api.getStateForUpload(selectedState).then(stateGeometry => {\r\n let incidentsOutsideStateBuffer = [];\r\n let expandedStateGeometry = geometryEngine.geodesicBuffer(geometryJsonUtils.fromJSON(stateGeometry.geometry), \"10\", \"miles\", true);\r\n var rowCount = 0;\r\n\r\n var latPosition = 0; //12 ?\r\n var longPosition = 0; //13 ?\r\n \r\n for (var i = 0; i < csvRecords.data[0].length; i++) \r\n {\r\n if (csvRecords.data[0][i].toUpperCase() === \"LATITUDE\") \r\n {\r\n latPosition = i;\r\n }\r\n \r\n if (csvRecords.data[0][i].toUpperCase() === \"LONGITUDE\") \r\n {\r\n longPosition = i;\r\n }\r\n }\r\n \r\n if (latPosition === 0 && longPosition === 0) \r\n {\r\n console.log(\"Error: No Latitude or Longitude found in CSV\");\r\n resolve(null);\r\n }\r\n \r\n csvRecords.data.forEach(record => {\r\n if (rowCount === 0) \r\n {\r\n rowCount++;\r\n return;\r\n }\r\n \r\n let recordPoint = new Point\r\n ({\r\n latitude: record[latPosition],\r\n longitude: record[longPosition],\r\n spatialReference: new SpatialReference(4326)\r\n });\r\n\r\n if (recordPoint) \r\n { \r\n try \r\n {\r\n if (!geometryEngine.within(recordPoint, expandedStateGeometry)) \r\n {\r\n incidentsOutsideStateBuffer.push(rowCount);\r\n }\r\n } \r\n catch (err) \r\n {\r\n debugger;\r\n }\r\n }\r\n else { //cloned geometry wasn't valid....\r\n incidentsOutsideStateBuffer.push(rowCount);\r\n }\r\n rowCount++;\r\n });\r\n\r\n resolve(incidentsOutsideStateBuffer);\r\n });\r\n });\r\n });\r\n}\r\n\r\nexport function getUnixTimeStampMs(args) {\r\n const dateTimeString = args.dateTime ? args.dateTime : args.time ? args.date + ' ' + args.time : args.date;\r\n const value = moment(dateTimeString, 'MM-DD-YYYY HHmm');\r\n return value.unix() * 1000;\r\n}\r\n\r\nexport function getUniqueIdentifierForIncident(attributes) {\r\n const yearCode = new Date(attributes[originFields.discoveryDate]).getFullYear();\r\n const jurisdictionCode = (attributes.FireDepartmentID) ? attributes.FireDepartmentID : attributes.POOProtectingUnit;\r\n const localIncidentIdentifier = attributes[originFields.localIncidentIdentifier];\r\n\r\n let fullUFI = yearCode + \"-\" + jurisdictionCode + \"-\" + localIncidentIdentifier;\r\n if (fullUFI.length > 22) {\r\n fullUFI = fullUFI.substring(0, 22);\r\n }\r\n\r\n return fullUFI;\r\n}\r\n\r\n","import React, { Component, Fragment } from 'react';\r\nimport * as Papa from 'papaparse';\r\nimport Dialog from 'material-ui/Dialog';\r\nimport Button from '@material-ui/core/Button';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport Select from '@material-ui/core/Select';\r\nimport CircularProgress from 'material-ui/CircularProgress';\r\nimport FormLabel from '@mui/material/FormLabel';\r\nimport FormGroup from '@mui/material/FormGroup';\r\nimport FormControl from '@mui/material/FormControl';\r\nimport FormControlLabel from '@mui/material/FormControlLabel';\r\nimport Checkbox from '@mui/material/Checkbox';\r\nimport UploadResults from './UploadResults'\r\nimport theme from '../../muiTheme';\r\nimport { filterIncidentsByState } from './uploadHelper';\r\n\r\n\r\nconst styles = {\r\n errorDialogContent: {\r\n width: \"500px\"\r\n },\r\n errorDialogTitle: {\r\n color: theme.palette.accent1Color\r\n },\r\n formControl: {\r\n minWidth: 120\r\n },\r\n};\r\n\r\nexport class StateUploadDialog extends Component\r\n{\r\n constructor(props)\r\n {\r\n super(props);\r\n\r\n this.state =\r\n {\r\n selectedState: '',\r\n selectedStateName: '',\r\n canUploadIncidents: false,\r\n showCurrentStatus: false,\r\n currentStatusMessage: '',\r\n isUploading: false,\r\n showResults: false,\r\n resultObject: {},\r\n isRx: false\r\n };\r\n }\r\n\r\n handleUploadCSV = () => {\r\n let input = this.refs.input_reader;\r\n input.click();\r\n }\r\n\r\n clearStatus = () => {\r\n this.setState({\r\n showCurrentStatus: false,\r\n currentStatusMessage: '',\r\n resultObject: {},\r\n showResults: false\r\n });\r\n }\r\n\r\n setCurrentStatus = (status) => {\r\n this.setState({\r\n showCurrentStatus: true,\r\n currentStatusMessage: status\r\n });\r\n }\r\n\r\n inputFileChanged = async (e) => {\r\n if(window.FileReader){\r\n this.setState({\r\n isUploading: true,\r\n canUploadIncidents: false\r\n });\r\n \r\n let file = e.target.files && e.target.files.length >0 ? e.target.files[0] : null;\r\n this.refs.input_reader.value = null;\r\n this.setCurrentStatus(\"Parsing records from CSV...\");\r\n Papa.parse(file,\r\n {\r\n delimiter: \"\",\t// auto-detect\r\n newline: \"\",\t// auto-detect\r\n quoteChar: '\"',\r\n escapeChar: '\"',\r\n header: false,\r\n transformHeader: undefined,\r\n dynamicTyping: false,\r\n preview: 0,\r\n encoding: \"\",\r\n worker: false,\r\n comments: false,\r\n step: undefined,\r\n error: undefined,\r\n download: false,\r\n skipEmptyLines: true,\r\n chunk: undefined,\r\n fastMode: undefined,\r\n beforeFirstChunk: undefined,\r\n withCredentials: undefined,\r\n transform: undefined,\r\n complete: async (results,file)=>{\r\n this.setCurrentStatus(\"Validating data file. Keep browser window open to ensure all records are processed and results are displayed...\");\r\n \r\n const indexesOutsideStateBuffer = await filterIncidentsByState(this.state.selectedState, results);\r\n\r\n this.setState({\r\n isUploading: true,\r\n canUploadIncidents: false\r\n });\r\n \r\n debugger;\r\n window.api.postStateUpload(file, indexesOutsideStateBuffer, this.state.isRx).then(response => {\r\n this.setState({\r\n isUploading: false,\r\n canUploadIncidents: false,\r\n showResults: true,\r\n resultObject: response,\r\n showCurrentStatus: false\r\n });\r\n });\r\n\r\n }\r\n });\r\n\r\n \r\n }\r\n else\r\n {\r\n console.error('Browser does not support File Reader');\r\n }\r\n }\r\n\r\n getMissingHeadersMessage = (validationStatus) =>\r\n {\r\n return \"The following required headers were missing: \" + validationStatus.MissingHeaders.join();\r\n }\r\n\r\n\r\n getHeaderRowForIncidents = (incident) =>\r\n {\r\n let headerRow = [];\r\n let attributes = incident.attributes;\r\n for (const property in attributes)\r\n {\r\n headerRow.push(property)\r\n }\r\n return headerRow;\r\n }\r\n\r\n handleIsRxChange = (event) => \r\n {\r\n this.setState({isRx: event.target.checked});\r\n }\r\n\r\nhandleStateChange = (event) => {\r\n this.setState({\r\n selectedState: event.target.value,\r\n selectedStateName: event.target.selectedOptions[0].label,\r\n canUploadIncidents: (event.target.value !== '')\r\n });\r\n\r\n this.clearStatus();\r\n}\r\n\r\nrender() {\r\n let progressNode = (this.state.isUploading) ? () : \"\";\r\n let labelNode = (this.state.showCurrentStatus) ? ({progressNode}) : '';\r\n\r\n return (\r\n\r\n \r\n \r\n
\r\n \r\n \r\n } label=\"Incidents are Prescribed Fires\" />\r\n \r\n State:\r\n \r\n {\r\n this.handleStateChange(event);\r\n }}\r\n id=\"demo-simple-select-helper\">\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\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\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\n \r\n \r\n
\r\n
{labelNode}
\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 StateUploadDialog;\r\n","import React, { Component } from 'react';\r\nimport { bindActionCreators } from 'redux';\r\nimport { connect } from 'react-redux';\r\nimport moment from 'moment';\r\n\r\nimport { authOperations } from \"../../../redux/auth\";\r\nimport { configOperations } from \"../../../redux/config\";\r\n\r\nimport Checkbox from 'material-ui/Checkbox';\r\nimport Paper from 'material-ui/Paper';\r\nimport ArrowRightIcon from 'material-ui/svg-icons/hardware/keyboard-arrow-right';\r\n//import WarnIcon from 'material-ui/svg-icons/alert/warning';\r\nimport GridIcon from 'material-ui/svg-icons/image/grid-on';\r\n\r\nimport { getNameForCategory, belowUniquenessThreshold } from '../../../utils/incidentHelper';\r\n\r\nimport originFields from '../../../defaults/PointOfOriginFields.json'\r\n\r\n\r\nimport './IncidentListItem.css';\r\nimport theme from '../../../muiTheme';\r\n\r\nconst checkboxStyle = {marginRight: 0, textAlign: 'left', fill: theme.palette.canvasColor};\r\n\r\nclass IncidentListItem extends Component {\r\n\r\n render() {\r\n const attrs = this.props.incident.attributes;\r\n const acres = attrs[originFields.incidentSize];\r\n const isQuarantined = attrs[originFields.isQuarantined];\r\n const incidentIsCertified = this.props.incident.attributes[originFields.statusId] === 3;\r\n const incidentIsComplete = this.props.incident.attributes[originFields.statusId] === 1;\r\n const isBelowUniquenessThreshold = belowUniquenessThreshold(this.props.incident);\r\n\r\n let statusColor;\r\n if (incidentIsCertified)\r\n {\r\n statusColor = theme.palette.primary2Color\r\n }\r\n else if (incidentIsComplete)\r\n {\r\n statusColor = theme.palette.primary1Color\r\n }\r\n else if (isQuarantined)\r\n {\r\n statusColor = theme.palette.accent2Color\r\n }\r\n else if (isQuarantined)\r\n {\r\n statusColor = theme.palette.accent2Color\r\n }\r\n else if (isBelowUniquenessThreshold)\r\n {\r\n statusColor = theme.palette.nonUniqueColor\r\n }\r\n else\r\n {\r\n statusColor = theme.palette.secondaryTextColor\r\n }\r\n\r\n return (\r\n this.props.onMouseEnter(this.props.incident)}\r\n onMouseLeave={() => this.props.onMouseExit(this.props.incident)}\r\n onClick={() => this.props.onClicked(this.props.incident, isQuarantined)}\r\n className={\"incident-list-item\"}\r\n >\r\n
\r\n
\r\n
\r\n {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.props.onChecked(this.props.incident)\r\n }} />\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n

{attrs[originFields.name] || \"––\"}

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

{attrs[originFields.uniqueFireId] || \"––\"}

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

{acres ? parseFloat(acres).toLocaleString() : \"––\"}

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

{attrs[originFields.fireCode] || \"––\"}

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

{attrs[originFields.discoveryDate] ? moment(attrs[originFields.discoveryDate]).format(this.props.appConfig.dateFormat) : \"––\"}

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

{attrs[originFields.outDate] ? moment(attrs[originFields.outDate]).format(this.props.appConfig.dateFormat) : \"––\"}

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n }\r\n uncheckedIcon={}\r\n checked={true}\r\n iconStyle={{fill: theme.palette.secondaryTextColor, marginRight: 0}} />\r\n
\r\n \r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n auth: state.auth,\r\n appConfig: state.config\r\n})\r\n\r\nconst mapDispatchToProps = function (dispatch) {\r\n return bindActionCreators({\r\n ...authOperations,\r\n ...configOperations\r\n }, dispatch);\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(IncidentListItem)\r\n","import React, { Component, Fragment } from 'react';\r\nimport Dialog from 'material-ui/Dialog';\r\nimport FlatButton from 'material-ui/FlatButton';\r\nimport TextField from 'material-ui/TextField';\r\nimport IconButton from 'material-ui/IconButton';\r\nimport CopyIcon from 'material-ui/svg-icons/content/content-copy';\r\nimport Snackbar from 'material-ui/Snackbar';\r\n\r\nclass ShareDialog extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n showSnackbar: false\r\n }\r\n }\r\n\r\n copyToClipboard = () => {\r\n this.urlTextField.select();\r\n\r\n try {\r\n var successful = document.execCommand('copy');\r\n\r\n if (successful) {\r\n this.setState({showSnackbar: true})\r\n }\r\n } catch (err) {\r\n\r\n }\r\n }\r\n\r\n closeSnackbar = () => {\r\n this.setState({showSnackbar: false})\r\n }\r\n\r\n render() {\r\n let shareActions = [\r\n \r\n ];\r\n\r\n const dialogContentStyle = {\r\n width: '360px'\r\n }\r\n\r\n return (\r\n \r\n \r\n {\r\n this.urlTextField = textField;\r\n }}\r\n value={this.props.url}\r\n floatingLabelText=\"Share URL\"\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 ShareDialog;\r\n","import React, { Component } from 'react';\r\nimport { bindActionCreators } from 'redux';\r\nimport { connect } from 'react-redux';\r\nimport ReactScrollableList from 'react-scrollable-list';\r\nimport { history } from '../../../index';\r\nimport { authOperations } from \"../../../redux/auth\";\r\nimport { configOperations } from \"../../../redux/config\";\r\nimport { incidentsOperations } from \"../../../redux/incidentList\";\r\nimport { filterOperations } from '../../../redux/filter';\r\n\r\nimport RaisedButton from 'material-ui/RaisedButton';\r\nimport FlatButton from 'material-ui/FlatButton';\r\nimport IconButton from 'material-ui/IconButton';\r\nimport SelectField from 'material-ui/SelectField';\r\nimport MenuItem from 'material-ui/MenuItem';\r\nimport SortIcon from 'material-ui/svg-icons/content/sort';\r\nimport ShareIcon from 'material-ui/svg-icons/social/share';\r\nimport ArrowLeft from 'material-ui/svg-icons/navigation/chevron-left';\r\nimport CircularProgress from 'material-ui/CircularProgress';\r\nimport CertifyDialog from '../../incidentDetails/CertifyDialog';\r\nimport StateUploadDialog from '../../uploads/StateUploadDialog';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport FileSaver from 'file-saver';\r\n\r\nimport theme from '../../../muiTheme';\r\nimport * as esriLoader from 'esri-loader';\r\nimport { isIncidentComplete, isIncidentCertified, formatIdentifierForApi } from '../../../utils/incidentHelper';\r\n\r\nimport {\r\n setOriginSelectionGraphics, clearOriginSelectionGraphics,\r\n refreshOriginLayer, getMapExtent, getOriginLayerDefinitionExpression, getMapScreenshot, getForIdsForQuery\r\n} from '../../esri/mapHub';\r\n\r\nimport originFields from '../../../defaults/PointOfOriginFields.json'\r\nimport IncidentListItem from './IncidentListItem';\r\nimport ShareDialog from './ShareDialog';\r\nimport './IncidentList.css';\r\n\r\nconst collapseBtnIconStyle = {padding: \"5px\", height: \"36px\", width: \"36px\"};\r\nconst snackBtnIconStyle = {color: \"white\"};\r\n\r\nclass IncidentList extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n computedListHeight: 200,\r\n showShareDialog: false,\r\n showBulkUploadDialog: false,\r\n showCertifyAgreement: false,\r\n showDownloadWarning: false,\r\n sortedIncidents: [],\r\n isDownloading: false\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n if (!window.incidentListResizer) {\r\n window.incidentListResizer = window.addEventListener(\"resize\", this.updateListHeight);\r\n }\r\n this.updateListHeight();\r\n }\r\n\r\n handleWarningClose = () =>\r\n {\r\n this.setState({\r\n showDownloadWarning: false\r\n });\r\n }\r\n\r\n bulkCertifyIncidents = () =>\r\n {\r\n this.setState({\r\n showCertifyAgreement: true\r\n });\r\n }\r\n\r\n onCancelStateUpload = () =>\r\n {\r\n this.setState({\r\n showBulkUploadDialog: false\r\n });\r\n }\r\n\r\n onCertifyIncidentCancel = () =>\r\n {\r\n this.setState({\r\n showCertifyAgreement: false\r\n });\r\n }\r\n\r\n updateListHeight = () => {\r\n const computedListHeight = document.getElementsByClassName('incident-list')[0] && document.getElementsByClassName('incident-list')[0].clientHeight;\r\n this.setState({ computedListHeight })\r\n }\r\n\r\n incidentClicked = (incident, openInQuarantine) =>\r\n {\r\n if (!this.props.auth.isCertifier || this.props.auth.isReadOnly)\r\n {\r\n openInQuarantine = 0;\r\n }\r\n this.props.onIncidentSelected(incident, openInQuarantine);\r\n }\r\n\r\n incidentChecked = (incident) => {\r\n if (this.isSelected(incident)) {\r\n this.props.removeSelectedIncident(incident);\r\n this.props.removeUniqueFireIdentifier(incident.attributes[originFields.forId]);\r\n clearOriginSelectionGraphics({\r\n clearExisting: false,\r\n graphics: [incident]\r\n })\r\n\r\n } else {\r\n this.props.addSelectedIncident(incident);\r\n this.props.addUniqueFireIdentifier(incident.attributes[originFields.forId])\r\n setOriginSelectionGraphics({\r\n clearExisting: false,\r\n graphics: [incident]\r\n });\r\n }\r\n }\r\n\r\n handleOnMouseOverIncident = (incident) => {\r\n if(!this.isSelected(incident)){\r\n setOriginSelectionGraphics({\r\n clearExisting: this.props.incidentList.selectedIncidents.length === 0,\r\n graphics: [incident]\r\n });\r\n }\r\n }\r\n\r\n handleOnMouseOutIncident = (incident) => {\r\n if(!this.isSelected(incident)){\r\n clearOriginSelectionGraphics({\r\n clearExisting: this.props.incidentList.selectedIncidents.length === 0,\r\n graphics: [incident]\r\n })\r\n }\r\n }\r\n\r\n sortChange = (event, index, sortField) => {\r\n this.props.onSortChange(sortField);\r\n }\r\n\r\n sortDescChange = () => {\r\n this.props.onToggleSortDesc()\r\n }\r\n\r\n isSelected(incident) {\r\n return (this.props.incidentList.selectedIncidents.filter(item => {\r\n return item.attributes[originFields.forId] === incident.attributes[originFields.forId]\r\n }).length > 0)\r\n }\r\n\r\n clearSelectedIncidents = () => {\r\n this.props.incidentList.selectedIncidents.map(selectedIncident => {\r\n this.incidentChecked(selectedIncident);\r\n return selectedIncident\r\n })\r\n }\r\n\r\n handleDownloadCSV = () => {\r\n esriLoader.loadModules(['esri/geometry/support/webMercatorUtils'])\r\n .then( ([WebMercatorUtils]) =>\r\n {\r\n this.setState({\r\n isDownloading: true\r\n });\r\n\r\n getMapExtent().then( extent => {\r\n getOriginLayerDefinitionExpression().then( definitionExpression =>\r\n {\r\n var geographicExtent = WebMercatorUtils.webMercatorToGeographic(extent);\r\n var filterGeometry = (this.props.filter.geometry) ? this.props.filter.geometry : extent; \r\n getForIdsForQuery(this.props.filter.spatialFilterID, filterGeometry, 0, [], definitionExpression).then(forids => {\r\n\r\n window.api.downloadIncidentData(geographicExtent, definitionExpression, forids).then(\r\n response =>\r\n {\r\n \r\n const now = Date.now();\r\n const blob = new Blob([response], {type: \"text/csv;charset=utf-8\"});\r\n\r\n const queryBlob = new Blob([definitionExpression], { type: \"text/plain\" });\r\n //const url = URL.createObjectURL(blob);\r\n\r\n FileSaver.saveAs(blob, \"Incidents_\" + now + \".csv\");\r\n FileSaver.saveAs(queryBlob, \"Query_\" + now + \".txt\");\r\n\r\n this.setState({\r\n isDownloading: false\r\n });\r\n\r\n });\r\n }); \r\n }\r\n )\r\n })\r\n });\r\n }\r\n\r\n handleSummariesReporting = () =>\r\n {\r\n getMapScreenshot().then( screenshot => {\r\n getMapExtent().then( extent => {\r\n getOriginLayerDefinitionExpression().then( definitionExpression => {\r\n history.push({\r\n pathname: '/reporting',\r\n state:\r\n {\r\n definitionExpression: definitionExpression,\r\n extent: extent,\r\n screenshot: screenshot\r\n }\r\n });\r\n\r\n })\r\n })\r\n })\r\n }\r\n\r\n handleUploadCSV = () => {\r\n this.setState({\r\n showBulkUploadDialog: true\r\n });\r\n }\r\n\r\n onBulkCertifyAgreed = () =>\r\n {\r\n this.setState({\r\n showCertifyAgreement: false\r\n });\r\n\r\n if(this.props.incidentList && this.props.incidentList.selectedIncidents){\r\n const featuresToCertify = this.props.incidentList.selectedIncidents\r\n .filter(item => {return isIncidentComplete(item);})\r\n .map(incident => {\r\n let data = {};\r\n data[originFields.certifiedField] = originFields.certifiedCodedValue;\r\n data[originFields.irwinId] = formatIdentifierForApi(incident.attributes[originFields.forId]);\r\n\r\n return {attributes: data};\r\n });\r\n if(featuresToCertify && featuresToCertify.length > 0) {\r\n window.api.saveOccurenceRecords(featuresToCertify).then(\r\n results => {\r\n this.props.clearSelectedIncidents();\r\n if(results.every(result =>{return result.success})){\r\n\r\n refreshOriginLayer();\r\n\r\n }\r\n else {\r\n //TODO: Notify User 1 or more failed...\r\n }\r\n },\r\n error => {\r\n console.log('edit error', error);\r\n //TODO: Notify User\r\n }\r\n );\r\n }\r\n }\r\n }\r\n\r\n getIsCertifyDisabled = () => {\r\n\r\n if(!this.props.auth.isCertifier)\r\n {\r\n return true;\r\n }\r\n\r\n let disableCertify = false;\r\n\r\n if (this.props.incidentList &&\r\n this.props.incidentList.selectedIncidents &&\r\n this.props.incidentList.selectedIncidents.length > 0) {\r\n disableCertify = false;\r\n } else {\r\n disableCertify = true;\r\n return disableCertify;\r\n }\r\n\r\n disableCertify = !this.props.incidentList.selectedIncidents.every(selectedIncident => {\r\n return isIncidentComplete(selectedIncident) && !isIncidentCertified(selectedIncident) && (!selectedIncident.attributes[originFields.isQuarantined]);\r\n });\r\n\r\n return disableCertify;\r\n }\r\n\r\n showShareDialog = () => {\r\n this.setState({showShareDialog: true});\r\n }\r\n\r\n hideShareDialog = () => {\r\n this.setState({showShareDialog: false});\r\n }\r\n\r\n componentDidUpdate(prevProps) \r\n {\r\n if (this.props.incidentList.incidents !== prevProps.incidentList.incidents || this.props.sortDesc !== prevProps.sortDesc || this.props.sortField !== prevProps.sortField || this.state.sortedIncidents === null ) \r\n {\r\n const incidentsChanged = (this.props.incidentList.incidents !== prevProps.incidentList.incidents);\r\n const descChanged = (this.props.sortDesc !== prevProps.sortDesc );\r\n const fieldChanged = ( this.props.sortField !== prevProps.sortField);\r\n const sortIncidentWereNull = (this.state.sortedIncidents === null );\r\n\r\n this.sortIncidents(incidentsChanged, descChanged, fieldChanged, sortIncidentWereNull);\r\n }\r\n }\r\n\r\n sortIncidents = (incidentsChanged, descChanged, fieldChanged, sortIncidentWereNull) => \r\n {\r\n\r\n const sortDesc = this.props.sortDesc;\r\n let sortField = this.props.sortField;\r\n\r\n //Fix for DailyAcres\r\n if (sortField === \"DailyAcres\")\r\n {\r\n sortField = \"IncidentSize\";\r\n }\r\n\r\n let incidents = [];\r\n\r\n if(this.props.incidentList.incidents.length > 0)\r\n {\r\n incidents = this.props.incidentList.incidents.sort((a, b) => {\r\n\r\n switch (sortField)\r\n {\r\n case \"SelectedIncidents\":\r\n const aField = this.isSelected(a);\r\n const bField = this.isSelected(b);\r\n\r\n if (aField && !bField)\r\n {\r\n return (sortDesc ? 1 : -1)\r\n }\r\n\r\n if (!aField && bField)\r\n {\r\n return (sortDesc ? -1 : 1)\r\n }\r\n\r\n if (!aField && !bField)\r\n {\r\n return (sortDesc ? 1 : -1)\r\n }\r\n\r\n if (aField && bField)\r\n {\r\n return (sortDesc ? -1 : 1)\r\n }\r\n break;\r\n case \"MinUniqueness\":\r\n const aUnqField = (a.attributes[sortField] !== null) ? a.attributes[sortField] : 1;\r\n const bUnqField = (b.attributes[sortField] !== null) ? b.attributes[sortField] : 1;\r\n\r\n if (aUnqField < bUnqField)\r\n {\r\n return (sortDesc ? 1 : -1)\r\n }\r\n\r\n if (aUnqField > bUnqField)\r\n {\r\n return (sortDesc ? -1 : 1)\r\n }\r\n break;\r\n\r\n\r\n default:\r\n try\r\n {\r\n const aDefField = (isNaN(a.attributes[sortField])) ? a.attributes[sortField].toUpperCase().trim() : a.attributes[sortField];\r\n const bDefField = (isNaN(b.attributes[sortField])) ? b.attributes[sortField].toUpperCase().trim() : b.attributes[sortField];\r\n\r\n if (aDefField < bDefField)\r\n {\r\n return (sortDesc ? 1 : -1)\r\n }\r\n\r\n if (aDefField > bDefField)\r\n {\r\n return (sortDesc ? -1 : 1)\r\n }\r\n }\r\n catch (err)\r\n {\r\n console.log(\"Issue found default sorting on \" + sortField);\r\n return 1;\r\n }\r\n break;\r\n }\r\n return 0\r\n }).map((item, i) => {\r\n return {\r\n id: i,\r\n content: (\r\n \r\n )\r\n }\r\n });\r\n }\r\n\r\n this.setState({\r\n sortedIncidents: incidents\r\n });\r\n }\r\n\r\n render() {\r\n\r\n const certifyDisabled = this.getIsCertifyDisabled();\r\n\r\n let clearSelectionPanel;\r\n if (this.props.incidentList.selectedIncidents.length > 0) {\r\n const selectedCount = this.props.incidentList.selectedIncidents.length;\r\n clearSelectionPanel = (\r\n
\r\n \r\n {selectedCount} incident{selectedCount > 1 ? \"s\" : \"\"} selected\r\n \r\n \r\n
\r\n )\r\n }\r\n\r\n const downloadButton = this.state.isDownloading ? (\r\n \r\n ) : (\r\n \r\n );\r\n\r\n let certifyButton = this.props.auth.isCertifier ? (\r\n 1 ? \" All\" : \"\")}\r\n onClick={this.bulkCertifyIncidents}\r\n />\r\n ) : \"\";\r\n\r\n let contents = (\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 1)} />\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n {certifyButton}\r\n {downloadButton}\r\n\r\n {this.state.isUploading ?\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 {clearSelectionPanel}\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 return ( contents )\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n // map: state.map,\r\n auth: state.auth,\r\n appConfig: state.config,\r\n incidentList: state.incidentList,\r\n filter: state.filter\r\n // router: state.router\r\n});\r\n\r\nconst mapDispatchToProps = function (dispatch) {\r\n return bindActionCreators({\r\n ...authOperations,\r\n ...configOperations,\r\n ...incidentsOperations,\r\n ...filterOperations\r\n }, dispatch);\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(IncidentList)\r\n","import React from 'react';\r\n\r\nimport { buildFilter } from '../utils/sqlUtils';\r\n\r\nconst FilterPreviewer = props => {\r\n const sql = options => {\r\n return buildFilter(options);\r\n };\r\n\r\n return (\r\n
\r\n
{sql(props.options)}
\r\n
\r\n );\r\n};\r\n\r\nexport default FilterPreviewer;\r\n","import React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport Set from './containers/Set';\r\nimport FilterPreviewer from './components/FilterPreviewer';\r\n\r\nimport { generateId } from './utils/genericUtils';\r\nimport { buildFilter } from './utils/sqlUtils';\r\nimport expressionTemplate from './defaults/expression';\r\n\r\nimport CalciteThemeProvider, {\r\n CalciteTheme\r\n} from 'calcite-react/CalciteThemeProvider';\r\n\r\nimport Panel from 'calcite-react/Panel';\r\nimport Button, { ButtonGroup } from 'calcite-react/Button';\r\nimport { FormControl, FormControlLabel } from 'calcite-react/Form';\r\nimport Tooltip from 'calcite-react/Tooltip';\r\nimport PlusIcon from './icons/PlusIcon';\r\n\r\nimport { isEqual } from 'lodash';\r\n\r\nimport {\r\n StyledSetHeaderRow,\r\n StyledAddSetButton\r\n} from './containers/Set-styled';\r\n\r\nclass ArcgisFilter extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n mustMatchAll: true,\r\n sets: {\r\n [generateId()]: {\r\n mustMatchAll: true,\r\n expressions: {\r\n [generateId()]: expressionTemplate\r\n }\r\n }\r\n }\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n if (\r\n this.props &&\r\n this.props.filterState &&\r\n !isEqual(this.props.filterState, this.state)\r\n )\r\n this.setState({ ...this.props.filterState }, () => {\r\n this.onChange(this.state);\r\n });\r\n }\r\n\r\n componentDidUpdate = (prevProps, prevState) => {\r\n // check if rehydrating from filterState\r\n if (\r\n JSON.stringify(prevProps.filterState) !==\r\n JSON.stringify(this.props.filterState)\r\n ) {\r\n this.setState({ ...this.props.filterState }, () => {\r\n this.onChange(this.state);\r\n });\r\n }\r\n };\r\n\r\n onChange = state => {\r\n const filter = buildFilter(state);\r\n this.props.onChange(filter, state);\r\n };\r\n\r\n updateSets = sets => {\r\n this.setState({ sets }, () => {\r\n this.onChange(this.state);\r\n });\r\n };\r\n\r\n handleAddSet = () => {\r\n const { sets } = this.state;\r\n sets[generateId()] = {\r\n mustMatchAll: true,\r\n expressions: {\r\n [generateId()]: expressionTemplate\r\n }\r\n };\r\n this.updateSets(sets);\r\n };\r\n\r\n handleRemoveSet = setId => {\r\n const { sets } = this.state;\r\n delete sets[setId];\r\n this.updateSets(sets);\r\n };\r\n\r\n handleUpdateSetOperator = (setId, setOperator) => {\r\n const { sets } = this.state;\r\n sets[setId].mustMatchAll = setOperator;\r\n this.updateSets(sets);\r\n };\r\n\r\n handleAddExpression = setId => {\r\n const { sets } = this.state;\r\n sets[setId].expressions[generateId()] = expressionTemplate;\r\n this.updateSets(sets);\r\n };\r\n\r\n handleRemoveExpression = (setId, expressionId) => {\r\n const { sets } = this.state;\r\n delete sets[setId].expressions[expressionId];\r\n this.updateSets(sets);\r\n };\r\n\r\n handleUpdateExpression = (setId, expression) => {\r\n const { sets } = this.state;\r\n const currentExpression = sets[setId].expressions[expression.id];\r\n sets[setId].expressions[expression.id] = {\r\n ...currentExpression,\r\n ...expression\r\n };\r\n this.updateSets(sets);\r\n };\r\n\r\n handleUpdateFilterOperator = mustMatchAll => {\r\n this.setState({ mustMatchAll }, () => {\r\n this.onChange(this.state);\r\n });\r\n };\r\n\r\n getSets = sets => {\r\n return Object.keys(sets).map(key => {\r\n const set = sets[key];\r\n return (\r\n \r\n );\r\n });\r\n };\r\n\r\n render() {\r\n if (!this.props.fields) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n Filter Operator:\r\n \r\n \r\n \r\n this.handleUpdateFilterOperator(true)}\r\n >\r\n AND\r\n \r\n \r\n \r\n this.handleUpdateFilterOperator(false)}\r\n >\r\n OR\r\n \r\n \r\n \r\n \r\n \r\n {this.getSets(this.state.sets)}\r\n \r\n Add Set\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nArcgisFilter.propTypes = {\r\n /** ArcGIS REST API or JSAPI fields definition object. */\r\n fields: PropTypes.object.isRequired,\r\n /** Object used to persist/rehydrate the filter */\r\n filterState: PropTypes.object,\r\n /** Fired when the filter changes. Receives the filter string as an argument */\r\n onChange: PropTypes.func,\r\n /** Disables the option to pick from unique values. */\r\n disableUnique: PropTypes.bool\r\n};\r\n\r\nArcgisFilter.defaultProps = {\r\n disableUnique: false\r\n};\r\n\r\nexport default ArcgisFilter;\r\n","import React, { Component } from 'react';\r\nimport { bindActionCreators } from 'redux';\r\nimport { connect } from 'react-redux';\r\nimport Dialog from 'material-ui/Dialog';\r\nimport Button from '@material-ui/core/Button';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport ArcgisFilter from './ArcgisFilter';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { filterOperations } from '../../redux/filter';\r\nimport { incidentsOperations } from '../../redux/incidentList';\r\nimport { buildFilter } from './utils/sqlUtils';\r\nimport { userOperations } from '../../redux/user';\r\nimport fieldsDefinition from './defaults/incidentFields.json';\r\nimport { setCustomFilterDefinitionExpression } from '../esri/mapHub';\r\nimport './CustomFiltersDialog.css';\r\n\r\nclass CustomFiltersDialog extends Component {\r\n\r\n constructor (props)\r\n {\r\n super(props);\r\n \r\n this.state =\r\n {\r\n filter: '',\r\n filterState: null,\r\n filterTitle: props.filterTitle\r\n };\r\n }\r\n\r\n componentWillReceiveProps(nextProps)\r\n {\r\n if (nextProps.filterTitle !== this.props.filterTitle)\r\n {\r\n this.setState(\r\n {\r\n filterTitle: nextProps.filterTitle\r\n });\r\n }\r\n }\r\n\r\n saveFilter = () => {\r\n\r\n const filter = Object.assign({},this.state.filterState);\r\n\r\n if (this.props.filterForEdit !== null && this.props.filterForEditId !== null)\r\n {\r\n if (this.props.filterTitle !== this.state.filterTitle && (this.state.filterTitle !== ''))\r\n {\r\n filter.title = this.state.filterTitle;\r\n }\r\n window.api.updateCustomFilter(this.props.filterForEditId, filter.title, filter).then((response) => { \r\n \r\n this.props.setCustomFilters(response);\r\n let activeDefinitionExpression = buildFilter(filter);\r\n this.props.setActiveCustomFilter(filter, activeDefinitionExpression);\r\n\r\n setCustomFilterDefinitionExpression(activeDefinitionExpression).then( response => {\r\n this.props.setQueriedIncidentsTotal(response.total);\r\n this.props.setDisplayedIncidentsCount(response.features.length);\r\n this.props.setIncidents(response.features);\r\n this.props.setVisibleIncidents(response.features);\r\n });\r\n });\r\n }\r\n else\r\n {\r\n filter.title = (this.state.filterTitle !== '') ? this.state.filterTitle : this.props.filterTitle;\r\n filter.filterGuid = uuidv4();\r\n window.api.addCustomFilter(filter.title, filter).then((response) => { \r\n this.props.setCustomFilters(response);\r\n });\r\n }\r\n\r\n this.setState(\r\n {\r\n filter: null,\r\n filterState: null,\r\n filterTitle: '',\r\n isEditingFilter: false\r\n }\r\n );\r\n\r\n let activeDefinitionExpression = buildFilter(filter);\r\n this.props.setActiveCustomFilter(filter, activeDefinitionExpression);\r\n this.props.setBasicFilterActive(false);\r\n\r\n setCustomFilterDefinitionExpression(activeDefinitionExpression).then( response => {\r\n this.props.setQueriedIncidentsTotal(response.total);\r\n this.props.setDisplayedIncidentsCount(response.features.length);\r\n this.props.setIncidents(response.features);\r\n this.props.setVisibleIncidents(response.features);\r\n });\r\n this.props.onClose();\r\n }\r\n handleFilterChanged = (filter, filterState) => {\r\n this.setState({ filter, filterState });\r\n };\r\n\r\n handleOnNameChange = e => {\r\n this.setState(\r\n {\r\n filterTitle: e.target.value\r\n }\r\n );\r\n };\r\n\r\n render() {\r\n\r\n const actions = [\r\n Save,\r\n Close\r\n ];\r\n\r\n return (\r\n \r\n
\r\n Filter Name: \r\n
\r\n \r\n \r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n filter: state.filter,\r\n appConfig: state.config,\r\n user: state.user,\r\n incidentList: state.incidentList\r\n})\r\n\r\n\r\nconst mapDispatchToProps = function (dispatch) {\r\n return bindActionCreators({\r\n ...filterOperations,\r\n ...userOperations,\r\n ...incidentsOperations\r\n }, dispatch);\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(CustomFiltersDialog)\r\n","import React, { Fragment, Component } from 'react';\r\nimport { bindActionCreators } from 'redux';\r\nimport { connect } from 'react-redux';\r\n//import { customFilterOperations } from '../../redux/customFilter';\r\nimport { userOperations } from '../../redux/user';\r\nimport { incidentsOperations } from '../../redux/incidentList';\r\nimport ReactScrollableList from 'react-scrollable-list';\r\nimport RaisedButton from 'material-ui/RaisedButton';\r\nimport Button from '@material-ui/core/Button';\r\nimport CustomFiltersDialog from './CustomFiltersDialog';\r\nimport CircularProgress from 'material-ui/CircularProgress';\r\nimport TrashIcon from 'material-ui/svg-icons/action/delete';\r\nimport CallMadeIcon from '@material-ui/icons/CallMade';\r\nimport EditIcon from '@material-ui/icons/Edit';\r\nimport { buildFilter } from './utils/sqlUtils';\r\nimport { setCustomFilterDefinitionExpression } from '../esri/mapHub';\r\nimport { v4 as uuidv4 } from 'uuid';\r\n\r\nclass CustomFiltersList extends Component {\r\n\r\n constructor (props)\r\n {\r\n super(props);\r\n this.state =\r\n {\r\n showingCustomFilterDialog: false,\r\n filterForEdit: null,\r\n filterIsLoading: false,\r\n filterForEditId: null\r\n };\r\n }\r\n\r\n launchCustomFilters = (event) =>\r\n {\r\n event.preventDefault();\r\n\r\n this.setState({\r\n showingCustomFilterDialog: true\r\n });\r\n };\r\n\r\n customFiltersClose = () =>\r\n {\r\n this.setState({\r\n showingCustomFilterDialog: false,\r\n filterForEdit: null\r\n });\r\n }\r\n\r\n editFilter = (item) =>\r\n {\r\n this.setState({\r\n showingCustomFilterDialog: true,\r\n filterForEdit: item,\r\n filterForEditId: item.CustomFilterID\r\n });\r\n }\r\n\r\n deleteFilter = (item) =>\r\n {\r\n window.api.deleteCustomFilter(item.CustomFilterID).then( response => { \r\n this.props.setCustomFilters(response);\r\n });\r\n }\r\n\r\n duplicateFilter = (item) =>\r\n {\r\n const clonedItem = JSON.parse(JSON.stringify(item));\r\n clonedItem.filterGuid = uuidv4();\r\n clonedItem.Title = \"Copy of \" + clonedItem.Title;\r\n\r\n this.setState({\r\n showingCustomFilterDialog: true,\r\n filterForEdit: clonedItem,\r\n filterForEditId: null\r\n });\r\n }\r\n\r\n filterListItemClicked = (item) =>\r\n {\r\n debugger;\r\n const filterContent = JSON.parse(item.FilterContent);\r\n let activeDefinitionExpression = buildFilter(filterContent);\r\n this.props.setActiveCustomFilter(filterContent, activeDefinitionExpression);\r\n this.setState({\r\n filterIsLoading: true\r\n });\r\n\r\n setCustomFilterDefinitionExpression(activeDefinitionExpression).then( response => {\r\n this.props.setQueriedIncidentsTotal(response.total);\r\n this.props.setDisplayedIncidentsCount(response.features.length);\r\n this.props.setIncidents(response.features);\r\n this.props.setVisibleIncidents(response.features);\r\n this.setState({\r\n filterIsLoading: false\r\n });\r\n });\r\n }\r\n\r\n render() {\r\n\r\n let sortedCustomFilters;\r\n let filterHeaderContent;\r\n\r\n const currentDisplayed = this.props.incidentList.displayedIncidentsCount;\r\n const queryTotal = this.props.incidentList.queriedIncidentsTotal;\r\n const labelText = (queryTotal === currentDisplayed) ? 'Showing All ' + currentDisplayed + ' Incidents' : ' Showing ' + currentDisplayed + ' of ' + queryTotal + ' Incidents';\r\n \r\n if(this.state.filterIsLoading)\r\n {\r\n filterHeaderContent =\r\n (\r\n
\r\n )\r\n }\r\n else\r\n {\r\n filterHeaderContent =\r\n (\r\n
{labelText}
\r\n )\r\n }\r\n\r\n sortedCustomFilters = this.props.user.customFilters.sort((a, b) => {\r\n return (a.Title < b.Title) ? -1 : 1;\r\n }).map((item, i) => {\r\n\r\n const filterContent = JSON.parse(item.FilterContent);\r\n const showHighlighted = (this.props.user.activeCustomFilterState && (filterContent.filterGuid === this.props.user.activeCustomFilterState.filterGuid));\r\n\r\n return {\r\n id: i,\r\n content: (\r\n \r\n { this.filterListItemClicked(item) } }>{item.Title}\r\n\r\n {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.duplicateFilter(item)\r\n }}\r\n style={{width: \"20px\", height: \"20px\", float: \"right\", paddingTop:\"8px\"}} />\r\n {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.editFilter(item)\r\n }}\r\n style={{width: \"20px\", height: \"20px\", float: \"right\", paddingRight: \"15px\", paddingLeft: \"15px\", paddingTop:\"8px\"} } />\r\n\r\n {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.deleteFilter(item);\r\n }}\r\n style={{width: \"20px\", height: \"20px\", float: \"right\", paddingTop:\"8px\"}} />\r\n \r\n )\r\n }\r\n });\r\n\r\n return (\r\n \r\n {filterHeaderContent}\r\n \r\n \r\n\r\n \r\n \r\n\r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n user: state.user,\r\n incidentList: state.incidentList\r\n})\r\n\r\n\r\nconst mapDispatchToProps = function (dispatch) {\r\n return bindActionCreators({\r\n ...userOperations,\r\n ...incidentsOperations\r\n }, dispatch);\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(CustomFiltersList)\r\n","import React, { Fragment, Component } from 'react';\r\nimport { bindActionCreators } from 'redux';\r\nimport { connect } from 'react-redux';\r\nimport { filterOperations } from '../../redux/filter';\r\nimport { configOperations } from '../../redux/config';\r\nimport { userOperations } from '../../redux/user';\r\nimport { incidentsOperations } from '../../redux/incidentList';\r\nimport { history } from '../../index';\r\nimport originFields from '../../defaults/PointOfOriginFields.json'\r\nimport PropTypes from 'prop-types';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport FiltersContainer from './filter/FiltersContainer';\r\nimport IncidentList from './list/IncidentList';\r\nimport Tabs from '@material-ui/core/Tabs';\r\nimport Tab from '@material-ui/core/Tab';\r\nimport Box from '@material-ui/core/Box';\r\nimport CustomFilterList from '../arcgisFilter/CustomFilterList';\r\nimport { setOriginLayerDefinitionExpression, setCustomFilterDefinitionExpression } from '../esri/mapHub';\r\nimport './index.css';\r\n\r\nfunction a11yProps(index) {\r\n return {\r\n id: `simple-tab-${index}`,\r\n 'aria-controls': `simple-tabpanel-${index}`,\r\n };\r\n}\r\n\r\nfunction TabPanel(props) {\r\n const { children, value, index, ...other } = props;\r\n\r\n return (\r\n
\r\n {(this.props.incident.attributes[originFields.isMultiRoot] === 1) &&\r\n \r\n De-splice\r\n \r\n }\r\n {(this.props.incident.attributes[originFields.incidentTypeCategory] === 'RX') &&\r\n \r\n Associate a Prescribed Escape\r\n \r\n }\r\n 0)}>\r\n View Uniqueness Scores\r\n \r\n \r\n View Resource Summary\r\n \r\n \r\n Show related records\r\n \r\n \r\n Share via email\r\n \r\n \r\n Re-center map\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n \r\n );\r\n\r\n let actions;\r\n let editWarning = (this.props.mode !== \"read\" && this.props.isSaveActive) ?\r\n (\r\n (this.props.originValidation.isValid) ?\r\n (Note: Changes may take up to 60 seconds to appear ) :\r\n (Please address data errors below)\r\n )\r\n : \"\";\r\n\r\n if (this.props.mode === \"read\")\r\n {\r\n let disabledReason = \"\";\r\n // if (this.props.isCertified || this.props.isReadOnlyUser || this.props.editIsDisabled || !this.props.isDispatchComplete)\r\n if (this.props.isCertified || this.props.isReadOnlyUser || this.props.editIsDisabled)\r\n {\r\n if (this.props.isCertified)\r\n {\r\n disabledReason = \"This incident must be decertified before editing.\";\r\n }\r\n if (this.props.isReadOnlyUser)\r\n {\r\n disabledReason = \"You currently have read-only permissions and cannot edit incidents.\";\r\n }\r\n\r\n }\r\n actions = (\r\n
\r\n {report}\r\n \r\n Edit\r\n \r\n \r\n Close\r\n {splitButton}\r\n
\r\n )\r\n } else {\r\n actions = (\r\n
\r\n \r\n Save Changes\r\n \r\n Cancel\r\n
\r\n )\r\n }\r\n\r\n const uniquenessPopover = this.state.generatingUniquenessScore ? (\r\n \r\n ) : \"\";\r\n\r\n const resourcesPanel = this.state.resourceReporting ? (\r\n \r\n ) : \"\";\r\n\r\n return (\r\n
\r\n
\r\n

{this.props.label}

\r\n {actions}\r\n
\r\n {missingFieldsButton}\r\n {editWarning}\r\n \r\n \r\n \r\n \r\n {uniquenessPopover}\r\n {resourcesPanel}\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n auth: state.auth\r\n})\r\n\r\nconst mapDispatchToProps = function (dispatch) {\r\n return bindActionCreators({\r\n ...reportOperations\r\n }, dispatch);\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(IncidentDetailsHeader)\r\n","import React, { Component } from 'react';\r\nimport Dialog from 'material-ui/Dialog';\r\nimport Button from '@material-ui/core/Button';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Table from '@material-ui/core/Table';\r\nimport TableBody from '@material-ui/core/TableBody';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport TableRow from '@material-ui/core/TableRow';\r\nimport { connect } from 'react-redux';\r\nimport theme from '../../muiTheme';\r\nconst styles = {\r\n errorDialogContent: {\r\n width: \"500px\"\r\n },\r\n errorDialogTitle: {\r\n color: theme.palette.accent1Color\r\n }\r\n};\r\n\r\nclass RelationshipDialog extends Component\r\n{\r\n constructor(props) {\r\n super(props);\r\n\r\n /* this.state = {\r\n spliceFields: [],\r\n attributesFromLosingFODR: [],\r\n savedSpliceRecord: {},\r\n canSaveSplice: false,\r\n primarySet: false,\r\n primaryFORID: null\r\n }; */\r\n }\r\n\r\n render() {\r\n\r\n if (!this.props.displayPackage) \r\n {\r\n return '';\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n Relationship Type\r\n {this.props.displayPackage.RelationshipType}\r\n \r\n \r\n Created By System\r\n {this.props.displayPackage.CreatedBySystem}\r\n \r\n \r\n Is Active?\r\n {this.props.displayPackage.IsActive}\r\n \r\n \r\n Created On\r\n {this.props.displayPackage.CreatedOn}\r\n \r\n \r\n Last Modified On\r\n {this.props.displayPackage.ModifiedOn}\r\n \r\n \r\n \r\n Expired On\r\n {this.props.displayPackage.ExpiredOn}\r\n \r\n \r\n Relationship Type\r\n {this.props.displayPackage.RelationshipType}\r\n \r\n \r\n Is Parent?\r\n {this.props.displayPackage.IsParent}\r\n \r\n \r\n Is Child?\r\n {this.props.displayPackage.IsChild}\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\nconst mapStateToProps = state => ({\r\n appConfig: state.config\r\n})\r\n\r\nexport default connect(mapStateToProps)(RelationshipDialog)\r\n","import React from 'react';\r\n\r\nimport Chip from 'material-ui/Chip';\r\nimport theme from '../../muiTheme';\r\nimport './InfoBadge.css';\r\n\r\nconst InfoBadge = (props) => {\r\n\r\n return (\r\n \r\n {props.label}\r\n \r\n );\r\n}\r\n\r\nexport default InfoBadge;\r\n","import { React, Component } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport moment from 'moment';\r\nimport Paper from 'material-ui/Paper';\r\nimport RaisedButton from 'material-ui/RaisedButton';\r\nimport RelationshipDialog from './RelationshipDialog';\r\nimport FlatButton from 'material-ui/FlatButton';\r\nimport CheckIcon from 'material-ui/svg-icons/action/check-circle';\r\nimport InfoBadge from './InfoBadge';\r\n\r\nimport originFields from '../../defaults/PointOfOriginFields.json';\r\nimport theme from '../../muiTheme';\r\nimport './DetailsDashboardPanel.css';\r\n\r\nimport {\r\n Table,\r\n TableBody,\r\n TableRow,\r\n TableRowColumn,\r\n} from 'material-ui/Table';\r\n\r\nconst styles = {\r\n decertifyBtn: {\r\n height: \"30px\",\r\n lineHeight: \"30px\",\r\n fontSize: \"12px\"\r\n },\r\n certifiedLabel: {\r\n color: theme.palette.primary2Color,\r\n display: \"flex\",\r\n alignItems: \"center\"\r\n }\r\n};\r\n\r\nclass DetailsDashboardPanel extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n showingRelationshipsDialog: false,\r\n relationshipDisplayPackage: null\r\n };\r\n }\r\n\r\n displayRelationship = (relationshipId, occurenceId) => {\r\n window.api.getIrwinRelationshipPackage(relationshipId, occurenceId).then(resp => {\r\n this.setState({\r\n showingRelationshipsDialog: true,\r\n relationshipDisplayPackage: resp\r\n });\r\n });\r\n }\r\n\r\n onCloseRelationshipDialog = () => {\r\n this.setState({\r\n showingRelationshipsDialog: false\r\n });\r\n }\r\n\r\n render() {\r\n const hasAcreageRows = (this.props.incident.perimeterAcreage && this.props.incident.perimeterAcreage.AcreageRecords && this.props.incident.perimeterAcreage.AcreageRecords.length > 0);\r\n const isFalseAlarm = (this.props.incident.attributes[originFields.incidentTypeCategory] && this.props.incident.attributes[originFields.incidentTypeCategory] === \"FA\");\r\n const attrs = this.props.incident.attributes;\r\n const relationships = this.props.irwinRelationships;\r\n let infoBadges = [];\r\n let isQuarantined = attrs[originFields.isQuarantined] === 1;\r\n\r\n if (relationships) {\r\n for (const relationship of relationships) {\r\n const isChild = (relationship.ChildFireOccurenceRecordID) && relationship.ChildFireOccurenceRecordID === attrs[originFields.fireOccurenceRecordID];\r\n const hasLinks = (relationship.ParentFireOccurenceRecordID && relationship.ChildFireOccurenceRecordID);\r\n let label = \"\";\r\n switch (relationship.IrwinRelationshipTypeID) {\r\n case 1: //ProvidingResponseTo\r\n label = \"Providing Response\";\r\n break;\r\n\r\n case 2: //Complex\r\n label = \"Complex\";\r\n break;\r\n\r\n case 3: //Conflict\r\n label = \"Conflict\";\r\n break;\r\n\r\n case 4: //Merge\r\n label = \"Merge\";\r\n break;\r\n\r\n case 5: //Prescribed Escape\r\n label = \"Prescribed Escape\";\r\n break;\r\n\r\n case 6: //Post-Fire\r\n label = \"Post-Fire\";\r\n break;\r\n }\r\n if (hasLinks) {\r\n const relLabel = (hasLinks) ? (isChild ? \" - Child\" : \" - Parent\") : \"\";\r\n infoBadges.push(\r\n this.displayRelationship(relationship.IrwinRelationshipID, attrs[originFields.fireOccurenceRecordID])} label={label + relLabel} />);\r\n }\r\n else {\r\n infoBadges.push();\r\n }\r\n }\r\n }\r\n let certLabel;\r\n let certAction;\r\n if (this.props.isCertified) {\r\n certLabel = (\r\n \r\n Incident Is Certified\r\n \r\n );\r\n certAction = (\r\n \r\n )\r\n }\r\n else if (this.props.missingFieldsCount === 0) {\r\n certLabel = \"Ready To Be Certified\";\r\n let disableCertify = false;\r\n\r\n if (this.props.isFederal && this.props.isPerimeterTriangle && (this.props.incidentAcres >= 10)) {\r\n certLabel = \"A valid perimeter is required for Federal fires > 10 acres\";\r\n disableCertify = true;\r\n }\r\n\r\n if (!hasAcreageRows && !isFalseAlarm) {\r\n certLabel = \"Missing Landowner acres\";\r\n disableCertify = true;\r\n }\r\n\r\n certAction = (\r\n \r\n )\r\n } else if\r\n (\r\n !this.props.incident.attributes[originFields.fireCode] && this.props.incident.attributes[originFields.isFireCodeRequested] !== originFields.isFireCodeRequested_RequestedCode) {\r\n certLabel = ('');\r\n }\r\n else {\r\n certLabel = (\r\n {this.props.missingFieldsCount} Required Fields Missing\r\n );\r\n certAction = (\r\n \r\n )\r\n }\r\n let fireNameVal = attrs[originFields.name];\r\n let fireIdVal = attrs[originFields.uniqueFireId];\r\n let incidentSizeVal = attrs[originFields.incidentSize];\r\n let discoveryDateVal = moment(attrs[originFields.discoveryDate]).format(this.props.appConfig.timeDateFormat);\r\n\r\n let locations = [];\r\n\r\n if (attrs[originFields.city]) {\r\n locations.push(attrs[originFields.city]);\r\n }\r\n if (attrs[originFields.state]) {\r\n const stateValue = attrs[originFields.state];\r\n const matchingInfos = this.props.appConfig.fieldInfos.filter(fieldInfo => { return (fieldInfo.name === originFields.state && fieldInfo.domain) });\r\n if (matchingInfos[0] && matchingInfos[0].domain.codedValues) {\r\n const matchingCodedValue = matchingInfos[0].domain.codedValues.filter(cv => { return cv.code === stateValue });\r\n locations.push((matchingCodedValue[0]) ? matchingCodedValue[0].name : stateValue);\r\n }\r\n else {\r\n locations.push(stateValue);\r\n }\r\n }\r\n if (locations.length === 0) {\r\n locations.push(\"––\");\r\n }\r\n\r\n let modifiedLabel;\r\n const hasIrwinModifiedDate = (attrs[originFields.modifiedDate]);\r\n const hasInformModifiedDate = (attrs[originFields.informLastModifiedDate]);\r\n const irwinModifiedOnly = (hasIrwinModifiedDate && !hasInformModifiedDate);\r\n\r\n let modifiedBySystem = attrs[originFields.modifiedBySystem];\r\n if (hasIrwinModifiedDate && hasInformModifiedDate && attrs[originFields.informLastModifiedDate] > attrs[originFields.modifiedDate]) {\r\n modifiedBySystem = \"InFORM Inspector\";\r\n }\r\n\r\n const displayDate = (irwinModifiedOnly) ? moment(attrs[originFields.modifiedDate]).format(this.props.appConfig.timeDateFormat) : moment(attrs[originFields.informLastModifiedDate]).format(this.props.appConfig.timeDateFormat);\r\n\r\n if (attrs[originFields.modifiedDate]) {\r\n modifiedLabel = (\r\n
\r\n Last Modified: {displayDate} ({modifiedBySystem})\r\n
\r\n )\r\n }\r\n\r\n return (\r\n \r\n {modifiedLabel}\r\n\r\n \r\n \r\n \r\n NAME\r\n {fireNameVal}\r\n \r\n
\r\n {certLabel}\r\n
\r\n
\r\n {(!this.props.isReadOnlyUser) ? certAction : \"\"}\r\n
\r\n
\r\n
\r\n \r\n ID\r\n {fireIdVal}\r\n \r\n \r\n DISCOVERY DATE\r\n {discoveryDateVal}\r\n \r\n \r\n FIRE SIZE\r\n {incidentSizeVal}\r\n \r\n
\r\n
\r\n\r\n
{infoBadges}
\r\n \r\n
\r\n );\r\n\r\n }\r\n\r\n}\r\nconst mapStateToProps = state => ({\r\n appConfig: state.config,\r\n auth: state.auth\r\n})\r\n\r\nexport default connect(mapStateToProps)(DetailsDashboardPanel)\r\n\r\n","import React, { Component, Fragment } from 'react';\r\nimport Dialog from 'material-ui/Dialog';\r\nimport Button from '@material-ui/core/Button';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport TextField from '@material-ui/core/TextField';\r\n\r\nimport theme from '../../muiTheme';\r\n\r\nconst styles = {\r\n errorDialogContent: {\r\n width: \"500px\"\r\n },\r\n errorDialogTitle: {\r\n color: theme.palette.accent1Color\r\n }\r\n}\r\n\r\nclass NarrativeDialog extends Component {\r\n\r\n render() {\r\n return (\r\n \r\n \r\n \r\n {\r\n this.props.onChange(event, event.currentTarget.value);\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 NarrativeDialog;\r\n","import React, { Component, Fragment } from 'react';\r\nimport theme from '../../muiTheme';\r\nimport Alert from '@material-ui/lab/Alert';\r\nimport CircularProgress from 'material-ui/CircularProgress';\r\nimport Button from '@material-ui/core/Button';\r\nimport Collapse from '@material-ui/core/Collapse';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport IconButton from '@material-ui/core/IconButton';\r\n\r\nclass UnitValidator extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n showUnitIdWarning: false,\r\n isQueryingUnitId: false,\r\n unitIdIsValid: false,\r\n unitIdString:'',\r\n alertIsOpen: false\r\n };\r\n }\r\n\r\n verifyUnitId = () =>\r\n {\r\n this.setState({\r\n isQueryingUnitId: true,\r\n showUnitIdWarning: false\r\n });\r\n\r\n window.api.getUnitId(this.props.unit).then(unitIdResponse => {\r\n const unitIdIsValid = (unitIdResponse && unitIdResponse.units && unitIdResponse.units.length > 0);\r\n const unitIdString = (unitIdIsValid) ? \"Valid\" : \"Invalid\";\r\n\r\n if (unitIdIsValid)\r\n {\r\n this.props.onValidated(unitIdResponse.units[0].AGENCY);\r\n }\r\n\r\n this.setState({\r\n isQueryingUnitId: false,\r\n showUnitIdWarning: true,\r\n unitIdIsValid: unitIdIsValid,\r\n unitIdString: unitIdString,\r\n alertIsOpen: true\r\n });\r\n });\r\n }\r\n\r\n getUnitIdAlert = () =>\r\n {\r\n if (this.state.showUnitIdWarning)\r\n {\r\n return (\r\n \r\n {\r\n this.setState({\r\n alertIsOpen: false\r\n });\r\n }}\r\n >\r\n \r\n \r\n } severity={(this.state.unitIdIsValid) ? \"success\" : \"warning\"}>{this.state.unitIdString});\r\n }\r\n\r\n return (this.state.isQueryingUnitId) ? () : \"\";\r\n }\r\n\r\n render()\r\n {\r\n const alert= this.getUnitIdAlert();\r\n\r\n return (\r\n \r\n \r\n {alert}\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default UnitValidator;\r\n","import React, { Component, Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport moment from 'moment';\r\nimport CircularProgress from 'material-ui/CircularProgress';\r\nimport DateFnsUtils from '@date-io/date-fns';\r\nimport TextField from 'material-ui/TextField';\r\nimport HelpIcon from '@mui/icons-material/Help';\r\nimport CoreTextField from '@material-ui/core/TextField';\r\nimport { RadioButton, RadioButtonGroup} from 'material-ui/RadioButton';\r\nimport Button from '@material-ui/core/Button';\r\nimport { KeyboardDateTimePicker, MuiPickersUtilsProvider } from \"@material-ui/pickers\";\r\nimport SelectField from 'material-ui/SelectField';\r\nimport MenuItem from 'material-ui/MenuItem';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport Tooltip from '@mui/material/Tooltip';\r\nimport CallMadeIcon from '@material-ui/icons/CallMade';\r\nimport NarrativeDialog from './NarrativeDialog';\r\nimport UnitValidator from './UnitValidator';\r\nimport IrwinIdTextField from './components/IrwinIdTextField';\r\nimport theme from '../../muiTheme';\r\nimport { getFieldAliasOverrides, getDependentAttributeMapping, isAcreageField, isClearableDateField } from '../../utils/incidentHelper';\r\nimport originFields from '../../defaults/PointOfOriginFields.json';\r\n\r\nimport './DetailRow.css';\r\n\r\n//TODO: This entire thing is garbage and needs to be completely overhauled\r\n\r\nclass DetailRow extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n narrativeDialogOpen: false,\r\n narrativeValue: (this.props.fieldInfo.name === originFields.report && this.props.attributes[this.props.fieldInfo.name]) ? this.props.attributes[this.props.fieldInfo.name] : '',\r\n calculatedAcresValue: (this.props.fieldInfo.name === originFields.calculatedAcres && this.props.attributes[this.props.fieldInfo.name]) ? this.props.attributes[this.props.fieldInfo.name] : null,\r\n isInvalidLocally: false\r\n };\r\n }\r\n\r\n //TODO: Try to get rid of all componentWillReceiveProps\r\n componentWillReceiveProps(nextProps)\r\n {\r\n if ((nextProps.fieldInfo.name === originFields.calculatedAcres) && nextProps.attributes[nextProps.fieldInfo.name] !== this.state.calculatedAcresValue)\r\n {\r\n this.setState({\r\n calculatedAcresValue: nextProps.attributes[nextProps.fieldInfo.name]\r\n });\r\n }\r\n }\r\n\r\n getFieldValues = (fieldName, fieldOptions, isDependent, dependentAttribute, fieldValue) =>\r\n {\r\n //One off for Predominant Fuel Group / Predominant Fuel Model\r\n if (fieldName === originFields.predominantFuelGroup || fieldName === originFields.predominantFuelModel)\r\n {\r\n if (!isDependent)\r\n {\r\n return fieldOptions.map(option =>\r\n {\r\n return \r\n })\r\n }\r\n else\r\n {\r\n let filterValues = getDependentAttributeMapping(dependentAttribute, this.props.attributes[this.props.dependentAttribute]);\r\n\r\n if (filterValues.length > 0 && (!filterValues.includes(fieldValue) && fieldValue !== null))\r\n {\r\n this.props.onUpdateProp(fieldName, null);\r\n }\r\n\r\n return fieldOptions\r\n .filter(option => filterValues.indexOf(option.code) >= 0)\r\n .map(option => {\r\n return \r\n })\r\n }\r\n }\r\n\r\n\r\n if (!isDependent)\r\n {\r\n return fieldOptions.map(option => {\r\n return \r\n })\r\n }\r\n else\r\n {\r\n let filterValues = getDependentAttributeMapping(dependentAttribute, this.props.attributes[this.props.dependentAttribute]);\r\n\r\n if (filterValues.length > 0 && (!filterValues.includes(fieldValue) && fieldValue !== null))\r\n {\r\n this.props.onUpdateProp(fieldName, null);\r\n }\r\n\r\n return fieldOptions\r\n .filter(option => filterValues.indexOf(option.code) >= 0)\r\n .map(option => {\r\n return \r\n })\r\n }\r\n }\r\n\r\n onUnitValidated = (agency) =>\r\n {\r\n this.props.onAgencyValidated(this.props.fieldInfo.name, agency);\r\n }\r\n\r\n dropdownFieldIsNullable = (fieldName) =>\r\n {\r\n return originFields.nullableDropdownFields.includes(fieldName);\r\n }\r\n\r\n setNullValue = (event) =>\r\n {\r\n event.preventDefault();\r\n this.props.onUpdateProp(this.props.fieldInfo.name, null);\r\n this.setState({\r\n isInvalidLocally: false\r\n });\r\n }\r\n\r\n showNarrativePopup = (event) =>\r\n {\r\n event.preventDefault();\r\n this.setState({\r\n narrativeDialogOpen: true\r\n });\r\n }\r\n\r\n onNarrativeDialogClose = () =>\r\n {\r\n this.setState({\r\n narrativeDialogOpen: false\r\n });\r\n }\r\n\r\n render()\r\n {\r\n if (this.props.fieldInfo.name === \"IncidentSize\") \r\n {\r\n debugger;\r\n };\r\n const isUnitIdField = originFields.unitIdFields.includes(this.props.fieldInfo.name);\r\n\r\n let hasTooltip = false;\r\n let tooltipContent = '';\r\n\r\n if (isUnitIdField) \r\n {\r\n \r\n const matchValue = this.props.attributes[this.props.fieldInfo.name];\r\n const matchedEntry = (this.props.knownUnitIds) ? this.props.knownUnitIds.filter(function (item) \r\n {\r\n return item.UnprefixedUnitID === matchValue;\r\n }) : false;\r\n\r\n if (matchedEntry) \r\n {\r\n if (matchedEntry && matchedEntry.length > 0) \r\n {\r\n hasTooltip = true;\r\n tooltipContent = matchedEntry[0].Name;\r\n }\r\n }\r\n }\r\n\r\n const isInError = this.props.validationInfo && this.props.validationInfo.errors && this.props.validationInfo.errors.hasOwnProperty(this.props.fieldInfo.name);\r\n let isRelatedIrwinID = false;\r\n\r\n let isLatLong = (this.props.fieldInfo.name === \"x\" || this.props.fieldInfo.name === \"y\")\r\n\r\n let fieldVal = null;\r\n try\r\n {\r\n fieldVal = this.props.attributes[this.props.fieldInfo.name];\r\n }\r\n\r\n catch (err)\r\n {\r\n console.log(\"No fieldVal found in DetailRow: \" + this.props.fieldInfo.name)\r\n }\r\n\r\n if (isLatLong && fieldVal !== null)\r\n {\r\n var latLongNum = parseFloat(fieldVal);\r\n fieldVal = latLongNum.toFixed(6);\r\n }\r\n\r\n let domainVal = null;\r\n let fieldAlias = getFieldAliasOverrides(this.props.fieldInfo);\r\n\r\n //Hack for Certified Date, which doesn't exist\r\n if (this.props.fieldInfo.name === originFields.modifiedDate && originFields.certifiedField === \"CERTIFIED\")\r\n {\r\n fieldAlias = \"Certified Date\";\r\n }\r\n\r\n if (this.props.fieldInfo.name === originFields.relatedIrwinIds)\r\n {\r\n isRelatedIrwinID = true;\r\n fieldAlias = (this.props.attributes[originFields.relatedIrwinIds] && this.props.attributes[originFields.relatedIrwinIds].includes(\",\")) ? \"Related Irwin IDs\" : \"Related Irwin ID\"\r\n }\r\n\r\n let isDoubleDate = originFields.dateFieldsWithTypeDouble.includes(this.props.fieldInfo.name);\r\n\r\n let fieldType = this.props.fieldInfo.type;\r\n if (this.props.fieldInfo.domain)\r\n {\r\n fieldType = \"select\";\r\n const matchingCodedValues = this.props.fieldInfo.domain.codedValues.filter(cv => {return cv.code === fieldVal });\r\n domainVal = (matchingCodedValues && matchingCodedValues.length === 1) ? matchingCodedValues[0].name : fieldVal;\r\n }\r\n let fieldNode;\r\n\r\n if ((this.props.mode === \"read\" || this.props.isStatic) && !isRelatedIrwinID) \r\n {\r\n switch (fieldType) {\r\n case \"date\":\r\n case \"esriFieldTypeDate\":\r\n fieldNode = (\r\n {fieldVal ? moment(fieldVal).format(this.props.appConfig.timeDateFormat) : \"––\"}\r\n )\r\n break;\r\n case \"bool\":\r\n fieldNode = (\r\n {fieldVal ? \"True\" : \"False\"}\r\n )\r\n break;\r\n case \"select\":\r\n fieldNode = (this.props.fieldInfo.name === originFields.predominantFuelModel) ? ({fieldVal === null ? \"––\" : fieldVal }) : ({domainVal === null ? \"––\" : domainVal });\r\n break;\r\n default:\r\n if (hasTooltip && this.props.mode === \"read\") \r\n {\r\n fieldNode = ({fieldVal});\r\n } \r\n else \r\n {\r\n fieldNode = (isDoubleDate) ? ({fieldVal ? moment(fieldVal).format(this.props.appConfig.timeDateFormat) : \"––\"}) : ({fieldVal === null ? \"––\" : fieldVal })\r\n }\r\n }\r\n }\r\n else\r\n {\r\n if (fieldType === \"integer\" || fieldType === \"small-integer\" || (fieldType === \"double\" && !isDoubleDate))\r\n {\r\n const shouldOverrideIncidentSizeToZero = (this.props.fieldInfo.name === \"IncidentSize\" && fieldVal === null && !this.props.canPerformADSWrite) ? true : false;\r\n\r\n let isAcreage = isAcreageField(this.props.fieldInfo.name);\r\n let acreNode = (isAcreage && fieldVal !== null && fieldVal > 0 ) ? (' (' + parseFloat(fieldVal).toFixed(2) + ')') : \"\";\r\n const defaultValue = (shouldOverrideIncidentSizeToZero) ? 0 : (isAcreage && (fieldVal !== null) && (fieldVal !== 0)) ? parseFloat(fieldVal).toFixed(2) : fieldVal;\r\n \r\n fieldNode = (shouldOverrideIncidentSizeToZero) ? : ( (this.props.canPerformADSWrite && this.props.fieldInfo.name === originFields.calculatedAcres) ?\r\n (\r\n \r\n )\r\n :\r\n (\r\n \r\n {\r\n const num = parseFloat(value)\r\n this.props.onUpdateProp(this.props.fieldInfo.name, Number.isNaN(num) ? null : num);\r\n }} />\r\n \r\n \r\n )\r\n )\r\n }\r\n else if (fieldType === \"date\" || fieldType === \"esriFieldTypeDate\" || isDoubleDate)\r\n {\r\n let dateClearNode = (isClearableDateField(this.props.fieldInfo.name, this.props.canPerformADSWrite) && ((fieldVal !== null) || this.state.isInvalidLocally)) ?\r\n (\r\n \r\n \r\n \r\n )\r\n : \"\";\r\n fieldNode = (\r\n \r\n \r\n\r\n {\r\n if (event && !isNaN(event.getTime()))\r\n {\r\n this.props.onUpdateProp(this.props.fieldInfo.name, event.getTime());\r\n this.setState({\r\n isInvalidLocally: false\r\n });\r\n }\r\n else\r\n {\r\n this.setState({\r\n isInvalidLocally: true\r\n });\r\n }\r\n }}\r\n format=\"MM/dd/yyyy HH:mm\"\r\n />\r\n \r\n {dateClearNode}\r\n {(isInError && this.props.validationInfo.errors.hasOwnProperty(this.props.fieldInfo.name)) &&\r\n

{this.props.validationInfo.errors[this.props.fieldInfo.name]}

\r\n }\r\n
\r\n )\r\n\r\n }\r\n else if (fieldType === \"bool\")\r\n {\r\n fieldNode = (\r\n {\r\n this.props.onUpdateProp(this.props.fieldInfo.name, value);\r\n }} >\r\n \r\n \r\n \r\n )\r\n }\r\n else if (fieldType === \"select\")\r\n {\r\n let closeIcon = \"\";\r\n if (this.props.canPerformADSWrite && this.dropdownFieldIsNullable(this.props.fieldInfo.name) && (fieldVal !== null))\r\n {\r\n closeIcon = (\r\n \r\n \r\n \r\n )\r\n }\r\n\r\n fieldNode = (\r\n \r\n {\r\n this.props.onUpdateProp(this.props.fieldInfo.name, value);\r\n }} >\r\n {this.getFieldValues(this.props.fieldInfo.name, this.props.fieldInfo.domain.codedValues, this.props.isDependent, this.props.dependentAttribute, fieldVal)}\r\n \r\n {closeIcon}\r\n\t\t\t \r\n )\r\n }\r\n else\r\n {\r\n // \"string\", \"guid\"\r\n if (isRelatedIrwinID) \r\n {\r\n fieldNode = (\r\n \r\n )\r\n } \r\n else \r\n {\r\n let narrativeIcon = \"\";\r\n if (this.props.canPerformADSWrite && this.props.fieldInfo.name === originFields.report)\r\n {\r\n narrativeIcon = (\r\n \r\n \r\n \r\n \r\n {\r\n this.setState({\r\n narrativeValue: value\r\n });\r\n this.props.onUpdateProp(this.props.fieldInfo.name, (value) ? value : null);\r\n }}\r\n />\r\n \r\n );\r\n\r\n fieldNode = (\r\n \r\n {\r\n this.setState({\r\n narrativeValue: value\r\n });\r\n this.props.onUpdateProp(this.props.fieldInfo.name, (value) ? value : null);\r\n }} />\r\n {narrativeIcon}\r\n \r\n );\r\n }\r\n else\r\n {\r\n let unitValidatorBlock = \"\";\r\n if (this.props.showUnitValidator)\r\n {\r\n unitValidatorBlock = (\r\n \r\n );\r\n }\r\n\r\n fieldNode = (this.props.fieldInfo.name === originFields.pooProtectingUnit || this.props.fieldInfo.name === originFields.pooJurisdictionalUnit) ?\r\n (\r\n {\r\n this.props.onUpdateProp(this.props.fieldInfo.name, (event.target.value) ? event.target.value : null);\r\n }} />\r\n {unitValidatorBlock}\r\n \r\n )\r\n :\r\n (\r\n {\r\n this.props.onUpdateProp(this.props.fieldInfo.name, (value) ? value : null);\r\n }} />\r\n )\r\n }\r\n }\r\n }\r\n} \r\n \r\n const label = (isInError)\r\n ? \r\n : ( (this.props.isRequired) ?\r\n ()\r\n :\r\n ()\r\n );\r\n\r\n const derivableLink = (this.props.isDerivable && this.props.mode !== \"read\")\r\n ?\r\n (\r\n (this.props.isDeriving) ?\r\n \r\n :\r\n \r\n )\r\n : '';\r\n\r\n let highlightFieldClass = \"\";\r\n if (this.props.highlightRequiredFields && (fieldVal === undefined || fieldVal === null)) {\r\n highlightFieldClass = \" detail-row-highlight-field\"\r\n }\r\n\r\n return (\r\n
\r\n {label}\r\n
\r\n {fieldNode}\r\n
\r\n {derivableLink}\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n appConfig: state.config\r\n})\r\n\r\nexport default connect(mapStateToProps)(DetailRow)\r\n","import React, { Component } from 'react';\r\n\r\nimport { bindActionCreators } from 'redux';\r\nimport { connect } from 'react-redux';\r\nimport { configOperations } from '../../redux/config';\r\nimport { mapOperations } from '../../redux/map';\r\n\r\nimport { Accordion, AccordionSummary, AccordionDetails } from '@material-ui/core'\r\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\r\nimport Table from '@material-ui/core/Table';\r\nimport TableBody from '@material-ui/core/TableBody';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport TableHead from '@material-ui/core/TableHead';\r\nimport TableRow from '@material-ui/core/TableRow';\r\n\r\nimport moment from 'moment';\r\nimport DetailRow from './DetailRow';\r\nimport RequiredFieldStatus from './RequiredFieldStatus';\r\nimport EditableAcreageTable from './EditableAcreageTable';\r\nimport {getFuelGroupForModel, getDefaultDateForField } from '../../utils/incidentHelper';\r\nimport originFields from '../../defaults/PointOfOriginFields.json'\r\nimport './DetailsIncidentPanel.css';\r\n\r\nclass DetailsIncidentPanel extends Component {\r\n constructor(props) {\r\n\r\n super(props);\r\n this.state = {\r\n open: true,\r\n highlightRequiredFields: false,\r\n primaryRequiredNullFields: [],\r\n requiredNullFields: [],\r\n derivingFields: [],\r\n secondaryRequiredNullFields: [],\r\n totalRequiredNullFields: null,\r\n requiredFields: props.requiredFields ? props.requiredFields : [],\r\n staticFields: props.staticFields ? props.staticFields : [],\r\n attributes: props.attributes,\r\n dependentFields: props.dependentFields ? props.dependentFields : []\r\n };\r\n }\r\n\r\n componentDidMount()\r\n {\r\n this.updateRequiredNullFields(this.props.attributes, this.state.requiredFields);\r\n }\r\n\r\n //TODO: Try to get rid of all componentWillReceiveProps\r\n componentWillReceiveProps(nextProps) {\r\n\r\n if (nextProps.panelCollapseState === true && this.state.totalRequiredNullFields === 0)\r\n {\r\n this.setState({\r\n open: false\r\n });\r\n }\r\n\r\n if (nextProps.panelCollapseState === true && this.state.totalRequiredNullFields > 0)\r\n {\r\n this.setState({\r\n open: true\r\n });\r\n }\r\n\r\n if (nextProps.expandAllPanels === true)\r\n {\r\n this.setState({\r\n open: true\r\n });\r\n }\r\n \r\n if(nextProps.requiredFields && this.props.requiredFields)\r\n {\r\n if (JSON.stringify({...nextProps.requiredFields}) !== JSON.stringify({...this.state.requiredFields}))\r\n {\r\n this.updateRequiredFields(nextProps.requiredFields);\r\n\r\n if(nextProps.attributes && this.props.attributes)\r\n {\r\n this.updateRequiredNullFields(nextProps.attributes, nextProps.requiredFields);\r\n }\r\n }\r\n }\r\n\r\n if(nextProps.attributes && this.props.attributes){\r\n if (JSON.stringify({...nextProps.attributes}) !== JSON.stringify({...this.props.attributes})) {\r\n this.updateRequiredNullFields(nextProps.attributes, nextProps.requiredFields);\r\n }\r\n }\r\n }\r\n\r\nresetAcreageRecalc = () => \r\n{\r\n this.props.onResetAcreageRecalc();\r\n}\r\n\r\nupdateRequiredFields = (updatedRequiredFields) =>\r\n{\r\n this.setState({\r\n requiredFields: updatedRequiredFields\r\n });\r\n}\r\n\r\n updateRequiredNullFields = (attributes, requiredFields) => {\r\n\r\n if (!requiredFields)\r\n {\r\n return;\r\n }\r\n if(!attributes) {\r\n console.warn('missing argument');\r\n return;\r\n }\r\n if(!attributes) {\r\n console.warn('missing argument');\r\n return;\r\n }\r\n //get null required fields\r\n //count in primary\r\n let primaryRequiredNullFields = [];\r\n this.props.primaryFields.forEach(fieldName => {\r\n const fieldVal = attributes[fieldName];\r\n const isRequired = requiredFields.includes(fieldName);\r\n if (isRequired && (fieldVal === undefined || fieldVal === null || this.props.validationInfo.invalidFields.includes(fieldName))) {\r\n primaryRequiredNullFields.push(fieldName)\r\n }\r\n });\r\n\r\n //count in secondary\r\n let secondaryRequiredNullFields = [];\r\n this.props.secondaryFields && this.props.secondaryFields.forEach(fieldName => {\r\n const fieldVal = attributes[fieldName];\r\n const isRequired = requiredFields.includes(fieldName);\r\n if (isRequired && (fieldVal === undefined || fieldVal === null || this.props.validationInfo.invalidFields.includes(fieldName))) {\r\n secondaryRequiredNullFields.push(fieldName)\r\n }\r\n });\r\n\r\n let requiredNullFields = [];\r\n this.props.fields.forEach(fieldName => {\r\n const fieldVal = attributes[fieldName];\r\n const isRequired = requiredFields.includes(fieldName);\r\n if (isRequired && (fieldVal === undefined || fieldVal === null || this.props.validationInfo.invalidFields.includes(fieldName))) {\r\n requiredNullFields.push(fieldName)\r\n }\r\n });\r\n\r\n //total count\r\n const totalRequiredNullFields = primaryRequiredNullFields.length + secondaryRequiredNullFields.length;\r\n this.setState({\r\n primaryRequiredNullFields,\r\n secondaryRequiredNullFields,\r\n totalRequiredNullFields,\r\n requiredNullFields\r\n })\r\n }\r\n\r\ngetDependentAttribute = (fieldName) =>\r\n{\r\n switch (fieldName)\r\n {\r\n case originFields.incidentTypeCategory:\r\n return originFields.incidentTypeKind;\r\n\r\n case originFields.landownerCategory:\r\n return originFields.landownerKind;\r\n\r\n case originFields.predominantFuelModel:\r\n return originFields.predominantFuelGroup;\r\n\r\n case originFields.fireCauseGeneral:\r\n return originFields.fireCause;\r\n\r\n default:\r\n return null;\r\n }\r\n}\r\n\r\nsetDerivingFor = (fieldName) =>\r\n{\r\n let currentDerivingFields = this.state.derivingFields;\r\n\r\n if (!currentDerivingFields.includes(fieldName))\r\n {\r\n currentDerivingFields.push(fieldName);\r\n this.setState({\r\n derivingFields: currentDerivingFields\r\n });\r\n }\r\n}\r\n\r\nstopDerivingFor = (fieldName) =>\r\n{\r\n let currentDerivingFields = this.state.derivingFields;\r\n\r\n if (currentDerivingFields.includes(fieldName))\r\n {\r\n currentDerivingFields = currentDerivingFields.filter(name => name !== fieldName);\r\n this.setState({\r\n derivingFields: currentDerivingFields\r\n });\r\n }\r\n}\r\n\r\nderiveValue = (fieldName) =>\r\n{\r\n\r\n if (fieldName === originFields.predominantFuelModel)\r\n {\r\n this.setDerivingFor(fieldName);\r\n window.api.deriveFuelModel(this.state.attributes[\"_pointGeometryLatitude\"], this.state.attributes[\"_pointGeometryLongitude\"], this.state.attributes[originFields.state], this.props.map.currentExtent).then(response =>\r\n {\r\n const fuelGroup = getFuelGroupForModel(response);\r\n this.props.onDeriveSetUpdated([originFields.predominantFuelGroup, originFields.predominantFuelModel], [fuelGroup, response]);\r\n this.stopDerivingFor(fieldName);\r\n });\r\n }\r\n\r\n if (fieldName === originFields.landownerCategory)\r\n {\r\n this.setDerivingFor(fieldName);\r\n window.api.deriveLandownerCategory(this.state.attributes[\"_pointGeometryLatitude\"], this.state.attributes[\"_pointGeometryLongitude\"]).then(response =>\r\n {\r\n this.props.onDerivedPropUpdated(originFields.landownerCategory, response.LandownerCategory);\r\n this.props.onDerivedPropUpdated(originFields.landownerKind, response.LandownerKind);\r\n this.stopDerivingFor(fieldName);\r\n });\r\n }\r\n\r\n if (fieldName === originFields.calculatedAcres)\r\n {\r\n\r\n let perimeterToDerive = (this.props.editablePerimeter && this.props.editablePerimeter.geometry) ? this.props.editablePerimeter : this.props.perimeter;\r\n if (perimeterToDerive !== null)\r\n {\r\n this.setDerivingFor(fieldName);\r\n window.api.deriveCalculatedAcres(perimeterToDerive).then(response =>\r\n {\r\n this.props.onDerivedPropUpdated(originFields.calculatedAcres, response);\r\n this.stopDerivingFor(fieldName);\r\n });\r\n }\r\n }\r\n}\r\ngetDomainForOverrideField = (name) => \r\n{\r\n switch (name) {\r\n case \"FeatureStatus\":\r\n return {\r\n codedValues: [\r\n {\r\n name:\"Approved\",\r\n code:\"Approved\"\r\n },\r\n {\r\n name:\"In Review\",\r\n code:\"In Review\"\r\n },\r\n {\r\n name:\"Proposed\",\r\n code:\"Proposed\"\r\n },\r\n {\r\n name:\"Archive\",\r\n code:\"Archive\"\r\n }\r\n ]\r\n };\r\n case \"DeleteThis\":\r\n return {\r\n codedValues: [\r\n {\r\n name:\"No\",\r\n code:\"No\"\r\n },\r\n {\r\n name:\"Yes - No Longer Needed\",\r\n code:\"Yes - No Longer Needed\"\r\n },\r\n {\r\n name:\"Yes - Editing Mistake\",\r\n code:\"Yes - Editing Mistake\"\r\n }\r\n ]\r\n };\r\n case \"FeatureAccess\":\r\n return {\r\n codedValues: [\r\n {\r\n name:\"Public\",\r\n code:\"Public\"\r\n },\r\n {\r\n name:\"Cooperators\",\r\n code:\"Cooperators\"\r\n },\r\n {\r\n name:\"Incident\",\r\n code:\"Incident\"\r\n },\r\n {\r\n name:\"Restricted\",\r\n code:\"Restricted\"\r\n },\r\n {\r\n name:\"Unknown\",\r\n code:\"Unknown\"\r\n }\r\n ]\r\n };\r\n }\r\n}\r\n generateJurisdictionalAcresTable = (jurisdictionalAcres) =>\r\n {\r\n /*const divContent = jurisdictionalAcres.map(option => {\r\n return \r\n })*/\r\n return (\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n Agency\r\n Unit\r\n Unit ID\r\n Acres\r\n \r\n \r\n \r\n {jurisdictionalAcres.map((row) => (\r\n \r\n \r\n {row.attributes.JurisdictionalAgency}\r\n \r\n {row.attributes.JurisdictionalUnit}\r\n {row.attributes.JurisdictionalUnitID}\r\n {row.attributes.JurisdictionAcres}\r\n \r\n ))}\r\n \r\n
\r\n
\r\n
\r\n
);\r\n }\r\n\r\n generateDetailRows = (fields, isPrimary) => {\r\n\r\n if (this.props.key === \"Size\") \r\n {\r\n debugger;\r\n console.log(\"Size panel generateDetailRows\");\r\n }\r\n let fieldInfos = this.props.fieldInfos;\r\n\r\n if (fieldInfos === null || fields === null)\r\n {\r\n return;\r\n }\r\n\r\n const isFA = this.props.attributes[originFields.incidentTypeCategory] === \"FA\";\r\n\r\n return fields.map(field => {\r\n let fieldInfo = fieldInfos.filter(fieldInfo => {\r\n return fieldInfo.name === field\r\n })\r\n\r\n fieldInfo = fieldInfo[0]\r\n\r\n if (fieldInfo)\r\n { \r\n let isDerivable = (fieldInfo.name === originFields.predominantFuelModel || fieldInfo.name === originFields.landownerCategory || fieldInfo.name === originFields.calculatedAcres );\r\n let canPerformADSWrite = true;\r\n if ((this.props.adsStatus !== null && this.props.adsStatus !== undefined) && this.props.adsStatus.hasOwnProperty(fieldInfo.name))\r\n {\r\n canPerformADSWrite = this.props.adsStatus[fieldInfo.name].canWrite;\r\n }\r\n\r\n //disable some stuff for FA\r\n if (isFA && fieldInfo.name === originFields.incidentSize) \r\n {\r\n canPerformADSWrite = false;\r\n }\r\n const isRequired = this.state.requiredFields.includes(fieldInfo.name);\r\n const isDependent = this.state.dependentFields.includes(fieldInfo.name);\r\n const isStatic = this.state.staticFields.includes(fieldInfo.name);\r\n const isDeriving = this.state.derivingFields.includes(fieldInfo.name);\r\n const showUnitValidator = this.props.unitValidatorFields.includes(fieldInfo.name);\r\n const overridePerimeterFieldInfo = (this.props.isPerimeter && this.props.overrideDomainFields.includes(fieldInfo.name));\r\n\r\n if (overridePerimeterFieldInfo) \r\n {\r\n fieldInfo.domain = this.getDomainForOverrideField(fieldInfo.name) //this.props.overrideDomainFields[fieldInfo.name] ;\r\n }\r\n return {\r\n this.props.onAgencyValidated(fieldName, agencyVal)\r\n }}\r\n onUpdateProp={(fieldName, newVal) => {\r\n this.props.onPropUpdated(fieldName, newVal)\r\n }}\r\n defaultDate={getDefaultDateForField(fieldInfo.name, this.props.attributes)} />\r\n }\r\n else\r\n {\r\n //This is not ideal.\r\n if (field === \"PerimeterSource\" && this.props.perimeter.Feature.PerimeterSource && this.props.perimeter.Feature)\r\n {\r\n return (\r\n
\r\n \r\n
\r\n {this.props.perimeter.Feature.PerimeterSource}\r\n
\r\n
\r\n )\r\n } \r\n else if (field === \"InformLastModifiedDate\")\r\n {\r\n return (\r\n
\r\n \r\n
\r\n {moment(this.props.attributes[originFields.informLastModifiedDate]).format(this.props.appConfig.timeDateFormat)}\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 highlightRequiredFields = () => {\r\n const open = this.state.open || (this.state.secondaryRequiredNullFields.length > 0);\r\n this.setState({\r\n open,\r\n highlightRequiredFields: true\r\n }, () => {\r\n window.setTimeout(() => {\r\n this.setState({highlightRequiredFields: false})\r\n }, 1000);\r\n });\r\n }\r\n\r\n accordionChange = (event) => {\r\n this.setState({open: !this.state.open});\r\n this.props.resetPanelCollapseFlag();\r\n }\r\n\r\n render() {\r\n\r\n if (this.props.key === \"Size\") {\r\n console.log(\"Size panel render\");\r\n }\r\n\r\n let detailRows;\r\n let acreageTable = (this.state.open && this.props.isPerimeter) ? (\r\n {\r\n this.props.onAcreagePropUpdated(num, index)\r\n }}\r\n resetAcreageRecalc={() => { this.resetAcreageRecalc() }}\r\n onAcreageRemoved={(index) => {\r\n this.props.onAcreagePropRemoved(index)\r\n }}\r\n onRecalculate={() =>\r\n {\r\n this.props.onAcreageRecalculate()\r\n }}\r\n onAddNewRow={() =>\r\n {\r\n this.props.onAddNewAcreageRow()\r\n }}\r\n acreageLandownerCategoryUpdated={(index, value) => {\r\n this.props.onAcreageLandownerCategoryUpdated(index, value)\r\n }}\r\n />) : \"\";\r\n\r\n if (this.state.open)\r\n {\r\n detailRows = this.generateDetailRows(this.props.fields);\r\n }\r\n\r\n let expanderContent;\r\n expanderContent = (\r\n
\r\n {detailRows}\r\n {acreageTable}\r\n
\r\n )\r\n\r\n let requiredFieldStatusNode = '';\r\n if (this.state.totalRequiredNullFields > 0)\r\n {\r\n requiredFieldStatusNode = (\r\n \r\n )\r\n }\r\n\r\n let title = (\r\n
\r\n

{this.props.title}

\r\n {requiredFieldStatusNode}\r\n
\r\n )\r\n\r\n return (\r\n \r\n }>{title}\r\n {expanderContent}\r\n \r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n appConfig: state.config,\r\n map: state.map\r\n})\r\n\r\nconst mapDispatchToProps = function (dispatch) {\r\n return bindActionCreators({\r\n ...configOperations,\r\n ...mapOperations\r\n }, dispatch);\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(DetailsIncidentPanel)\r\n","import React, { Component } from 'react';\r\nimport { bindActionCreators } from 'redux';\r\nimport { connect } from 'react-redux';\r\nimport { configOperations } from '../../../redux/config';\r\nimport { mapOperations } from '../../../redux/map';\r\n\r\nimport { Accordion, AccordionSummary, AccordionDetails } from '@material-ui/core'\r\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\r\nimport Select from '@material-ui/core/Select';\r\nimport TextField from '@mui/material/TextField';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport Radio from '@mui/material/Radio';\r\nimport RadioGroup from '@mui/material/RadioGroup';\r\nimport FormControl from '@mui/material/FormControl';\r\nimport FormControlLabel from '@mui/material/FormControlLabel';\r\n\r\nimport RequiredFieldStatus from '../RequiredFieldStatus';\r\n\r\nimport originFields from '../../../defaults/PointOfOriginFields.json'\r\nimport fireCauseConfig from '../../../defaults/fireCauseConfig.json'\r\nimport '../DetailsIncidentPanel.css';\r\n\r\nclass FireCausePanel extends Component {\r\n constructor(props) {\r\n\r\n super(props);\r\n this.state = {\r\n open: true,\r\n highlightRequiredFields: false,\r\n primaryRequiredNullFields: [],\r\n requiredNullFields: [],\r\n derivingFields: [],\r\n secondaryRequiredNullFields: [],\r\n totalRequiredNullFields: null,\r\n requiredFields: props.requiredFields ? props.requiredFields : [],\r\n staticFields: props.staticFields ? props.staticFields : [],\r\n attributes: props.attributes,\r\n dependentFields: props.dependentFields ? props.dependentFields : [],\r\n fireCauseDisabled: false,\r\n ageCategoryDisabled: false,\r\n specificCauseDetailsDisabled: false,\r\n prohibitedCheckboxDisabled: false,\r\n activityGroupsDisabled: false\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.updateRequiredNullFields(this.props.attributes, this.state.requiredFields);\r\n }\r\n\r\n //TODO: Try to get rid of all componentWillReceiveProps\r\n componentWillReceiveProps(nextProps) {\r\n\r\n if (nextProps.panelCollapseState === true && this.state.totalRequiredNullFields === 0) {\r\n this.setState({\r\n open: false\r\n });\r\n }\r\n\r\n if (nextProps.panelCollapseState === true && this.state.totalRequiredNullFields > 0) {\r\n this.setState({\r\n open: true\r\n });\r\n }\r\n\r\n if (nextProps.expandAllPanels === true) {\r\n this.setState({\r\n open: true\r\n });\r\n }\r\n\r\n\r\n if (nextProps.requiredFields && this.props.requiredFields) {\r\n if (JSON.stringify({ ...nextProps.requiredFields }) !== JSON.stringify({ ...this.state.requiredFields })) {\r\n this.updateRequiredFields(nextProps.requiredFields);\r\n\r\n if (nextProps.attributes && this.props.attributes) {\r\n this.updateRequiredNullFields(nextProps.attributes, nextProps.requiredFields);\r\n }\r\n }\r\n }\r\n\r\n if (nextProps.attributes && this.props.attributes) {\r\n if (JSON.stringify({ ...nextProps.attributes }) !== JSON.stringify({ ...this.props.attributes })) {\r\n this.updateRequiredNullFields(nextProps.attributes, nextProps.requiredFields);\r\n }\r\n\r\n if (nextProps.attributes.FireCauseGeneralID !== this.props.attributes.FireCauseGeneralID) {\r\n this.configureFireCauseStates(nextProps.attributes.FireCauseID, nextProps.attributes.FireCauseGeneralID);\r\n }\r\n }\r\n }\r\n\r\n configureFireCauseStates = (fireCauseId, fireCauseGeneralId) => {\r\n const fireCause = fireCauseConfig.FireCauses.find(cause => cause.FireCauseID === fireCauseId);\r\n const fireCauseGeneral = (fireCause) ? fireCause.GeneralFireCauses.find(causeGeneral => causeGeneral.CauseGeneralID === fireCauseGeneralId) : null;\r\n\r\n const ageCategoryDisabled = (fireCauseGeneral) ? fireCauseGeneral.AgeCategoryDisabled : false;\r\n const specificCauseDetailsDisabled = (fireCauseGeneral) ? fireCauseGeneral.SpecificCauseDetailsDisabled : false;\r\n const prohibitedCheckboxDisabled = (fireCauseGeneral) ? fireCauseGeneral.ProhibitedCheckboxDisabled : false;\r\n const activityGroupsDisabled = (fireCauseGeneral) ? fireCauseGeneral.ActivityGroupsDisabled : false;\r\n\r\n this.setState({\r\n ageCategoryDisabled: ageCategoryDisabled,\r\n specificCauseDetailsDisabled: specificCauseDetailsDisabled,\r\n prohibitedCheckboxDisabled: prohibitedCheckboxDisabled,\r\n activityGroupsDisabled: activityGroupsDisabled\r\n });\r\n }\r\n\r\n updateRequiredFields = (updatedRequiredFields) => {\r\n this.setState({\r\n requiredFields: updatedRequiredFields\r\n });\r\n }\r\n\r\n updateRequiredNullFields = (attributes, requiredFields) => {\r\n\r\n if (!requiredFields) {\r\n return;\r\n }\r\n if (!attributes) {\r\n console.warn('missing argument');\r\n return;\r\n }\r\n\r\n let missingFields = [];\r\n\r\n let fieldVal = attributes[originFields.fireCauseId];\r\n if (requiredFields.includes(originFields.fireCauseId) && (fieldVal === undefined || fieldVal === null)) \r\n {\r\n missingFields.push(originFields.fireCauseId);\r\n }\r\n\r\n fieldVal = attributes[originFields.fireCauseGeneralId];\r\n if (requiredFields.includes(originFields.fireCauseGeneralId) && (fieldVal === undefined || fieldVal === null)) \r\n {\r\n missingFields.push(originFields.fireCauseGeneralId);\r\n }\r\n\r\n fieldVal = attributes[originFields.fireCauseSpecificId];\r\n if (requiredFields.includes(originFields.fireCauseSpecificId) && (fieldVal === undefined || fieldVal === null)) \r\n {\r\n missingFields.push(originFields.fireCauseSpecificId);\r\n }\r\n\r\n fieldVal = attributes[originFields.fireCauseSpecificDetailID];\r\n if (requiredFields.includes(originFields.fireCauseSpecificDetailID) && (fieldVal === undefined || fieldVal === null)) \r\n {\r\n missingFields.push(originFields.fireCauseSpecificDetailID);\r\n }\r\n\r\n fieldVal = attributes[originFields.fireCauseAgeCategoryID];\r\n if (requiredFields.includes(originFields.fireCauseAgeCategoryID) && (fieldVal === undefined || fieldVal === null)) \r\n {\r\n missingFields.push(originFields.fireCauseAgeCategoryID);\r\n }\r\n\r\n fieldVal = attributes[originFields.fireCauseActivityGroupID];\r\n if (requiredFields.includes(originFields.fireCauseActivityGroupID) && (fieldVal === undefined || fieldVal === null)) \r\n {\r\n missingFields.push(originFields.fireCauseActivityGroupID);\r\n }\r\n\r\n fieldVal = attributes[originFields.fireCauseComments];\r\n if (requiredFields.includes(originFields.fireCauseComments) && (fieldVal === undefined || fieldVal === null)) \r\n {\r\n missingFields.push(originFields.fireCauseComments);\r\n }\r\n\r\n fieldVal = attributes[originFields.isCauseProhibited];\r\n if (requiredFields.includes(originFields.isCauseProhibited) && (fieldVal === undefined || fieldVal === null)) \r\n {\r\n missingFields.push(originFields.isCauseProhibited);\r\n }\r\n \r\n this.setState({\r\n totalRequiredNullFields: missingFields.length\r\n }) ;\r\n \r\n /*const validationInfo = getValidationInfo(this.props.validationType, attributes, this.props.fieldInfos);\r\n //get null required fields\r\n //count in primary\r\n let primaryRequiredNullFields = [];\r\n this.props.primaryFields.forEach(fieldName => {\r\n const fieldVal = attributes[fieldName];\r\n const isRequired = requiredFields.includes(fieldName);\r\n if (isRequired && (fieldVal === undefined || fieldVal === null || validationInfo.invalidFields.includes(fieldName))) {\r\n primaryRequiredNullFields.push(fieldName)\r\n }\r\n });\r\n\r\n //count in secondary\r\n let secondaryRequiredNullFields = [];\r\n this.props.secondaryFields && this.props.secondaryFields.forEach(fieldName => {\r\n const fieldVal = attributes[fieldName];\r\n const isRequired = requiredFields.includes(fieldName);\r\n if (isRequired && (fieldVal === undefined || fieldVal === null || validationInfo.invalidFields.includes(fieldName))) {\r\n secondaryRequiredNullFields.push(fieldName)\r\n }\r\n });\r\n\r\n let requiredNullFields = [];\r\n this.props.fields.forEach(fieldName => {\r\n const fieldVal = attributes[fieldName];\r\n const isRequired = requiredFields.includes(fieldName);\r\n if (isRequired && (fieldVal === undefined || fieldVal === null || validationInfo.invalidFields.includes(fieldName))) {\r\n requiredNullFields.push(fieldName)\r\n }\r\n });\r\n\r\n //total count\r\n const totalRequiredNullFields = primaryRequiredNullFields.length + secondaryRequiredNullFields.length;\r\n this.setState({\r\n primaryRequiredNullFields,\r\n secondaryRequiredNullFields,\r\n totalRequiredNullFields,\r\n requiredNullFields\r\n }) */\r\n\r\n }\r\n\r\n getFireCauseGeneralOptions = () => {\r\n if (this.props.attributes.FireCauseID) {\r\n const fireCause = fireCauseConfig.FireCauses.find(cause => cause.FireCauseID === this.props.attributes.FireCauseID);\r\n return fireCause.GeneralFireCauses.map(cause => {\r\n return {cause.CauseGeneral} \r\n });\r\n }\r\n }\r\n\r\n getSpecificCauseDetails = () => {\r\n if (this.props.attributes.FireCauseGeneralID) {\r\n const fireCause = fireCauseConfig.FireCauses.find(cause => cause.FireCauseID === this.props.attributes.FireCauseID);\r\n const fireCauseGeneral = fireCause.GeneralFireCauses.find(causeGeneral => causeGeneral.CauseGeneralID === this.props.attributes.FireCauseGeneralID);\r\n\r\n if (fireCauseGeneral && fireCauseGeneral.SpecificDetailFireCauses) \r\n {\r\n return fireCauseGeneral.SpecificDetailFireCauses.map(causeSpecificDetail => {\r\n return {causeSpecificDetail.SpecificDetail}\r\n });\r\n }\r\n }\r\n }\r\n\r\n getFireCauseSpecificOptions = () => \r\n {\r\n if (this.props.attributes.FireCauseGeneralID) \r\n {\r\n const fireCause = fireCauseConfig.FireCauses.find(cause => cause.FireCauseID === this.props.attributes.FireCauseID);\r\n const fireCauseGeneral = fireCause.GeneralFireCauses.find(causeGeneral => causeGeneral.CauseGeneralID === this.props.attributes.FireCauseGeneralID);\r\n\r\n if (fireCauseGeneral && fireCauseGeneral.SpecificFireCauses) \r\n {\r\n return fireCauseGeneral.SpecificFireCauses.map(causeSpecific => {\r\n return {causeSpecific.CauseSpecific}\r\n });\r\n }\r\n }\r\n }\r\n\r\n\r\n getCauseActivityGroups = () => {\r\n\r\n if (this.props.attributes.FireCauseGeneralID) {\r\n const fireCause = fireCauseConfig.FireCauses.find(cause => cause.FireCauseID === this.props.attributes.FireCauseID);\r\n const fireCauseGeneral = fireCause.GeneralFireCauses.find(causeGeneral => causeGeneral.CauseGeneralID === this.props.attributes.FireCauseGeneralID);\r\n\r\n if (fireCauseGeneral && fireCauseGeneral.CauseActivityGroups) \r\n {\r\n return fireCauseGeneral.CauseActivityGroups.map(causeActivity => {\r\n return {causeActivity.ActivityGroup}\r\n });\r\n }\r\n\r\n }\r\n }\r\n\r\n getAgeCategories = () => {\r\n\r\n if (this.props.attributes.FireCauseGeneralID) {\r\n const fireCause = fireCauseConfig.FireCauses.find(cause => cause.FireCauseID === this.props.attributes.FireCauseID);\r\n const fireCauseGeneral = fireCause.GeneralFireCauses.find(causeGeneral => causeGeneral.CauseGeneralID === this.props.attributes.FireCauseGeneralID);\r\n if (fireCauseGeneral && fireCauseGeneral.AgeCategories) \r\n {\r\n return fireCauseGeneral.AgeCategories.map(ageCategory => {\r\n return {ageCategory.AgeCategory} \r\n });\r\n }\r\n }\r\n }\r\n\r\n updateGeneralProp = (field, val) => {\r\n const fireCause = fireCauseConfig.FireCauses.find(cause => cause.FireCauseID === this.props.attributes.FireCauseID);\r\n const fireCauseGeneral = fireCause.GeneralFireCauses.find(causeGeneral => causeGeneral.CauseGeneralID === val);\r\n\r\n const ageCategoryDisabled = (fireCauseGeneral) ? fireCauseGeneral.AgeCategoryDisabled : false;\r\n const specificCauseDetailsDisabled = (fireCauseGeneral) ? fireCauseGeneral.SpecificCauseDetailsDisabled : false;\r\n const prohibitedCheckboxDisabled = (fireCauseGeneral) ? fireCauseGeneral.ProhibitedCheckboxDisabled : false;\r\n const activityGroupsDisabled = (fireCauseGeneral) ? fireCauseGeneral.ActivityGroupsDisabled : false;\r\n\r\n this.setState({\r\n ageCategoryDisabled: ageCategoryDisabled,\r\n specificCauseDetailsDisabled: specificCauseDetailsDisabled,\r\n prohibitedCheckboxDisabled: prohibitedCheckboxDisabled,\r\n activityGroupsDisabled: activityGroupsDisabled\r\n });\r\n\r\n this.props.onPropUpdated(originFields.fireCauseGeneralId, val);\r\n }\r\n\r\n highlightRequiredFields = () => {\r\n const open = this.state.open || (this.state.secondaryRequiredNullFields.length > 0);\r\n this.setState({\r\n open,\r\n highlightRequiredFields: true\r\n }, () => {\r\n window.setTimeout(() => {\r\n this.setState({ highlightRequiredFields: false })\r\n }, 1000);\r\n });\r\n }\r\n\r\n const \r\n accordionChange = (event) => {\r\n this.setState({ open: !this.state.open });\r\n this.props.resetPanelCollapseFlag();\r\n }\r\n\r\n render() { \r\n const causeRequired = (this.props.requiredFields.includes(originFields.fireCauseId));\r\n const causeGeneralRequired = (this.props.requiredFields.includes(originFields.fireCauseGeneralId));\r\n const causeRequiredAndMissing = (causeRequired && (!this.props.attributes.FireCauseID));\r\n const causeGeneralRequiredAndMissing = (causeGeneralRequired && (!this.props.attributes.FireCauseGeneralID));\r\n const causeHighlight = (causeRequiredAndMissing && this.props.highlightRequiredFields) ? \" detail-row-highlight-field\" : \"\";\r\n const causeGeneralHighlight = (causeGeneralRequiredAndMissing && this.props.highlightRequiredFields) ? \" detail-row-highlight-field\" : \"\";\r\n\r\n const specificRequired = (this.props.requiredFields.includes(originFields.fireCauseSpecificId));\r\n const specificDetailRequired = (this.props.requiredFields.includes(originFields.fireCauseSpecificDetailID));\r\n const specificRequiredAndMissing = (specificRequired && (!this.props.attributes.FireCauseSpecificID));\r\n const specificDetailRequiredAndMissing = (specificDetailRequired && (!this.props.attributes.FireCauseSpecificDetailID));\r\n const specificHighlight = (specificRequiredAndMissing && this.props.highlightRequiredFields) ? \" detail-row-highlight-field\" : \"\";\r\n const specificDetailHighlight = (specificDetailRequiredAndMissing && this.props.highlightRequiredFields) ? \" detail-row-highlight-field\" : \"\";\r\n\r\n const activityGroupRequired = (this.props.requiredFields.includes(originFields.fireCauseActivityGroupID));\r\n const ageCategoryRequired = (this.props.requiredFields.includes(originFields.fireCauseAgeCategoryID));\r\n const activityGroupRequiredAndMissing = (activityGroupRequired && (!this.props.attributes.FireCauseActivityGroupID));\r\n const ageCategoryRequiredAndMissing = (ageCategoryRequired && (!this.props.attributes.FireCauseAgeCategoryID));\r\n const activityGroupHighlight = (activityGroupRequiredAndMissing && this.props.highlightRequiredFields) ? \" detail-row-highlight-field\" : \"\";\r\n const ageCategoryHighlight = (ageCategoryRequiredAndMissing && this.props.highlightRequiredFields) ? \" detail-row-highlight-field\" : \"\";\r\n\r\n const causeCommentsRequired = (this.props.requiredFields.includes(originFields.fireCauseComments));\r\n const isCauseProhibitedRequired = (this.props.requiredFields.includes(originFields.isCauseProhibited));\r\n const causeCommentsRequiredAndMissing = (causeCommentsRequired && (!this.props.attributes.FireCauseComments));\r\n const isCauseProhibitedRequiredAndMissing = (isCauseProhibitedRequired && (!this.props.attributes.IsCauseProhibited));\r\n const causeCommentsHighlight = (causeCommentsRequiredAndMissing && this.props.highlightRequiredFields) ? \" detail-row-highlight-field\" : \"\";\r\n const isCauseProhibitedHighlight = (isCauseProhibitedRequiredAndMissing && this.props.highlightRequiredFields) ? \" detail-row-highlight-field\" : \"\";\r\n\r\n\r\n let fireCauseLabel = (causeRequired) ?\r\n ()\r\n :\r\n ()\r\n ;\r\n\r\n let fireCauseGeneralLabel = (causeGeneralRequired) ?\r\n ()\r\n :\r\n ()\r\n ;\r\n\r\n let specificLabel = (specificRequired) ?\r\n ()\r\n :\r\n ()\r\n ;\r\n\r\n let specificDetailLabel = (specificDetailRequired) ?\r\n ()\r\n :\r\n ()\r\n ;\r\n\r\n let activityGroupLabel = (activityGroupRequired) ?\r\n ()\r\n :\r\n ()\r\n ;\r\n\r\n\r\n let ageCategoryLabel = (ageCategoryRequired) ?\r\n ()\r\n :\r\n ()\r\n ;\r\n\r\n let causeCommentsLabel = (causeCommentsRequired) ?\r\n ()\r\n :\r\n ()\r\n ;\r\n\r\n let isCauseProhibitedLabel = (isCauseProhibitedRequired) ?\r\n ()\r\n :\r\n ()\r\n ;\r\n\r\n\r\n\r\n let requiredFieldStatusNode = '';\r\n if (this.state.totalRequiredNullFields > 0) {\r\n requiredFieldStatusNode = (\r\n \r\n )\r\n }\r\n\r\n let title = (\r\n
\r\n

{this.props.title}

\r\n {requiredFieldStatusNode}\r\n
\r\n )\r\n\r\n //Deal with highlightFieldClass\r\n\r\n return (\r\n \r\n }>{title}\r\n \r\n
\r\n\r\n
\r\n {fireCauseLabel}\r\n
\r\n {\r\n this.props.onPropUpdated(originFields.fireCauseId, (event.target.value) ? event.target.value : null);\r\n }}>\r\n {fireCauseConfig.FireCauses.map(cause => {\r\n return {cause.FireCauseName}\r\n })}\r\n \r\n
\r\n
\r\n\r\n
\r\n {fireCauseGeneralLabel}\r\n
\r\n {\r\n //this.props.onPropUpdated();\r\n this.updateGeneralProp(originFields.fireCauseGeneralId, (event.target.value) ? event.target.value : null)\r\n }}>\r\n {this.getFireCauseGeneralOptions()}\r\n \r\n
\r\n
\r\n\r\n
\r\n {specificLabel}\r\n
\r\n {\r\n this.props.onPropUpdated(originFields.fireCauseSpecificId, (event.target.value) ? event.target.value : null);\r\n }}>\r\n {this.getFireCauseSpecificOptions()}\r\n \r\n
\r\n
\r\n\r\n
\r\n {specificDetailLabel}\r\n
\r\n {\r\n this.props.onPropUpdated(originFields.fireCauseSpecificDetailID, (event.target.value) ? event.target.value : null);\r\n }}>\r\n {this.getSpecificCauseDetails()}\r\n \r\n
\r\n
\r\n\r\n
\r\n {activityGroupLabel}\r\n
\r\n {\r\n this.props.onPropUpdated(originFields.fireCauseActivityGroupID, (event.target.value) ? event.target.value : null);\r\n }}>\r\n {this.getCauseActivityGroups()}\r\n \r\n
\r\n
\r\n\r\n
\r\n {ageCategoryLabel}\r\n
\r\n {\r\n this.props.onPropUpdated(originFields.fireCauseAgeCategoryID, (event.target.value) ? event.target.value : null);\r\n }}>\r\n {this.getAgeCategories()}\r\n \r\n\r\n
\r\n
\r\n\r\n
\r\n {isCauseProhibitedLabel}\r\n
\r\n \r\n \r\n {\r\n this.props.onPropUpdated(originFields.isCauseProhibited, event.target.value );\r\n }}\r\n value={this.props.attributes.IsCauseProhibited}>\r\n } label=\"Yes\" />\r\n } label=\"No\" />\r\n \r\n \r\n
\r\n
\r\n\r\n\r\n
\r\n {causeCommentsLabel}\r\n
\r\n {\r\n this.props.onPropUpdated(originFields.fireCauseComments, (event.target.value) ? event.target.value : null);\r\n }} />\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n {\r\n this.props.onPropUpdated(originFields.isFireCauseInvestigated, event.target.value);\r\n }}\r\n value={this.props.attributes[originFields.isFireCauseInvestigated]}>\r\n } label=\"Yes\" />\r\n } label=\"No\" />\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n \r\n {\r\n this.props.onPropUpdated(originFields.isTrespass, event.target.value);\r\n }}\r\n value={this.props.attributes[originFields.isTrespass]}>\r\n } label=\"Yes\" />\r\n } label=\"No\" />\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\nconst mapStateToProps = state => ({\r\n appConfig: state.config,\r\n map: state.map\r\n})\r\n\r\nconst mapDispatchToProps = function (dispatch) {\r\n return bindActionCreators({\r\n ...configOperations,\r\n ...mapOperations\r\n }, dispatch);\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(FireCausePanel)\r\n","import React, { Component } from 'react';\r\n\r\nimport { bindActionCreators } from 'redux';\r\nimport { connect } from 'react-redux';\r\nimport { configOperations } from '../../../redux/config';\r\nimport { mapOperations } from '../../../redux/map';\r\n\r\nimport { Accordion, AccordionSummary, AccordionDetails } from '@material-ui/core'\r\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\r\nimport FormGroup from '@material-ui/core/FormGroup';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport RequiredFieldStatus from '../RequiredFieldStatus';\r\n\r\nimport '../DetailsIncidentPanel.css';\r\n\r\nclass MultiAgencyResponsePanel extends Component {\r\n constructor(props) {\r\n\r\n super(props);\r\n this.state = {\r\n open: true,\r\n highlightRequiredFields: false,\r\n primaryRequiredNullFields: [],\r\n requiredNullFields: [],\r\n derivingFields: [],\r\n secondaryRequiredNullFields: [],\r\n totalRequiredNullFields: null,\r\n requiredFields: props.requiredFields ? props.requiredFields : [],\r\n staticFields: props.staticFields ? props.staticFields : [],\r\n attributes: props.attributes,\r\n dependentFields: props.dependentFields ? props.dependentFields : []\r\n };\r\n }\r\n\r\n\r\n //TODO: Try to get rid of all componentWillReceiveProps\r\n componentWillReceiveProps(nextProps) {\r\n\r\n if (nextProps.panelCollapseState === true && this.state.totalRequiredNullFields === 0)\r\n {\r\n this.setState({\r\n open: false\r\n });\r\n }\r\n\r\n if (nextProps.panelCollapseState === true && this.state.totalRequiredNullFields > 0)\r\n {\r\n this.setState({\r\n open: true\r\n });\r\n }\r\n\r\n if (nextProps.expandAllPanels === true)\r\n {\r\n this.setState({\r\n open: true\r\n });\r\n }\r\n\r\n\r\n if(nextProps.requiredFields && this.props.requiredFields)\r\n {\r\n if (JSON.stringify({...nextProps.requiredFields}) !== JSON.stringify({...this.state.requiredFields}))\r\n {\r\n this.updateRequiredFields(nextProps.requiredFields);\r\n\r\n if(nextProps.attributes && this.props.attributes)\r\n {\r\n //this.updateRequiredNullFields(nextProps.attributes, nextProps.requiredFields);\r\n }\r\n }\r\n }\r\n\r\n }\r\n\r\nupdateRequiredFields = (updatedRequiredFields) =>\r\n{\r\n this.setState({\r\n requiredFields: updatedRequiredFields\r\n });\r\n}\r\n\r\n /*updateRequiredNullFields = (attributes, requiredFields) => {\r\n\r\n if (!requiredFields)\r\n {\r\n return;\r\n }\r\n if(!attributes) {\r\n console.warn('missing argument');\r\n return;\r\n }\r\n if(!attributes) {\r\n console.warn('missing argument');\r\n return;\r\n }\r\n const validationInfo = getValidationInfo(this.props.validationType, attributes, this.props.fieldInfos);\r\n //get null required fields\r\n //count in primary\r\n let primaryRequiredNullFields = [];\r\n this.props.primaryFields.forEach(fieldName => {\r\n const fieldVal = attributes[fieldName];\r\n const isRequired = requiredFields.includes(fieldName);\r\n if (isRequired && (fieldVal === undefined || fieldVal === null || validationInfo.invalidFields.includes(fieldName))) {\r\n primaryRequiredNullFields.push(fieldName)\r\n }\r\n });\r\n\r\n //count in secondary\r\n let secondaryRequiredNullFields = [];\r\n this.props.secondaryFields && this.props.secondaryFields.forEach(fieldName => {\r\n const fieldVal = attributes[fieldName];\r\n const isRequired = requiredFields.includes(fieldName);\r\n if (isRequired && (fieldVal === undefined || fieldVal === null || validationInfo.invalidFields.includes(fieldName))) {\r\n secondaryRequiredNullFields.push(fieldName)\r\n }\r\n });\r\n\r\n let requiredNullFields = [];\r\n this.props.fields.forEach(fieldName => {\r\n const fieldVal = attributes[fieldName];\r\n const isRequired = requiredFields.includes(fieldName);\r\n if (isRequired && (fieldVal === undefined || fieldVal === null || validationInfo.invalidFields.includes(fieldName))) {\r\n requiredNullFields.push(fieldName)\r\n }\r\n });\r\n\r\n //total count\r\n const totalRequiredNullFields = primaryRequiredNullFields.length + secondaryRequiredNullFields.length;\r\n this.setState({\r\n primaryRequiredNullFields,\r\n secondaryRequiredNullFields,\r\n totalRequiredNullFields,\r\n requiredNullFields\r\n })\r\n } */\r\n\r\n highlightRequiredFields = () =>\r\n {\r\n const open = this.state.open || (this.state.secondaryRequiredNullFields.length > 0);\r\n this.setState({\r\n open,\r\n highlightRequiredFields: true\r\n }, () => {\r\n window.setTimeout(() => {\r\n this.setState({highlightRequiredFields: false})\r\n }, 1000);\r\n });\r\n }\r\n\r\n accordionChange = (event) =>\r\n {\r\n this.setState({open: !this.state.open});\r\n this.props.resetPanelCollapseFlag();\r\n }\r\n\r\n updateAgencies = (code, isChecked) =>\r\n {\r\n if (!isChecked)\r\n {\r\n this.props.removeInitialResponseAgency(code);\r\n }\r\n else\r\n {\r\n this.props.addInitialResponseAgency(code);\r\n }\r\n }\r\n\r\n render()\r\n {\r\n //const showRadios = (this.props.attributes.IsMultiAgencyInitialResponse !== null && this.props.attributes.IsMultiAgencyInitialResponse === 1);\r\n const showRadios = true;\r\n\r\n let requiredFieldStatusNode = '';\r\n if (this.state.totalRequiredNullFields > 0)\r\n {\r\n requiredFieldStatusNode = (\r\n \r\n )\r\n }\r\n\r\n let title = (\r\n
\r\n

{this.props.title}

\r\n {requiredFieldStatusNode}\r\n
\r\n )\r\n\r\n //TODO: Rewrite this checkbox code, it's hideous\r\n return (\r\n \r\n }>{title}\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n {\r\n this.updateAgencies(\"BIA\", (event.target.checked) ? 1 : 0);\r\n }\r\n }\r\n checked={this.props.attributes.InitialResponseAgencies && this.props.attributes.InitialResponseAgencies.includes('BIA')}/>} label=\"Bureau of Indian Affairs\"/>\r\n\r\n {\r\n this.updateAgencies(\"BLM\", (event.target.checked) ? 1 : 0);\r\n }}\r\n checked={this.props.attributes.InitialResponseAgencies && this.props.attributes.InitialResponseAgencies.includes('BLM')}/>} label=\"Bureau of Land Management\"/>\r\n\r\n {\r\n\r\n this.updateAgencies(\"BOR\", (event.target.checked) ? 1 : 0);\r\n }}\r\n checked={this.props.attributes.InitialResponseAgencies && this.props.attributes.InitialResponseAgencies.includes('BOR')}/>} label=\"Bureau of Reclamation\"/>\r\n\r\n {\r\n\r\n this.updateAgencies(\"DOD\", (event.target.checked) ? 1 : 0);\r\n }}\r\n checked={this.props.attributes.InitialResponseAgencies && this.props.attributes.InitialResponseAgencies.includes('DOD')}/>} label=\"Department of Defense\"/>\r\n {\r\n\r\n this.updateAgencies(\"DOE\", (event.target.checked) ? 1 : 0);\r\n }}\r\n checked={this.props.attributes.InitialResponseAgencies && this.props.attributes.InitialResponseAgencies.includes('DOE')}/>} label=\"Department of Energy\"/>\r\n {\r\n this.updateAgencies(\"NPS\", (event.target.checked) ? 1 : 0);\r\n }}\r\n checked={this.props.attributes.InitialResponseAgencies && this.props.attributes.InitialResponseAgencies.includes('NPS')}/>} label=\"National Park Service\"/>\r\n {\r\n this.updateAgencies(\"USFS\", (event.target.checked) ? 1 : 0);\r\n }}\r\n checked={this.props.attributes.InitialResponseAgencies && this.props.attributes.InitialResponseAgencies.includes('USFS')}/>} label=\"US Forest Service\"/>\r\n {\r\n this.updateAgencies(\"USFWS\", (event.target.checked) ? 1 : 0);\r\n }}\r\n checked={this.props.attributes.InitialResponseAgencies && this.props.attributes.InitialResponseAgencies.includes('USFWS')}/>} label=\"US Fish and Wildlife Service\"/>\r\n {\r\n this.updateAgencies(\"OthFed\", (event.target.checked) ? 1 : 0);\r\n }}\r\n checked={this.props.attributes.InitialResponseAgencies && this.props.attributes.InitialResponseAgencies.includes('OthFed')}/>} label=\"Other Federal\"/>\r\n\r\n {\r\n this.updateAgencies(\"Foreign\", (event.target.checked) ? 1 : 0);\r\n }}\r\n checked={this.props.attributes.InitialResponseAgencies && this.props.attributes.InitialResponseAgencies.includes('Foreign')}/>} label=\"Foreign Government\"/>\r\n\r\n {\r\n this.updateAgencies(\"Tribal\", (event.target.checked) ? 1 : 0);\r\n }}\r\n checked={this.props.attributes.InitialResponseAgencies && this.props.attributes.InitialResponseAgencies.includes('Tribal')}/>} label=\"Tribal Government (non-trust lands)\"/>\r\n\r\n {\r\n this.updateAgencies(\"City\", (event.target.checked) ? 1 : 0);\r\n }}\r\n checked={this.props.attributes.InitialResponseAgencies && this.props.attributes.InitialResponseAgencies.includes('City')}/>} label=\"City or Equivalent Government\"/>\r\n\r\n {\r\n this.updateAgencies(\"County\", (event.target.checked) ? 1 : 0);\r\n }}\r\n checked={this.props.attributes.InitialResponseAgencies && this.props.attributes.InitialResponseAgencies.includes('County')}/>} label=\"County or Equivalent Government\"/>\r\n\r\n {\r\n this.updateAgencies(\"State\", (event.target.checked) ? 1 : 0);\r\n }}\r\n checked={this.props.attributes.InitialResponseAgencies && this.props.attributes.InitialResponseAgencies.includes('State')}/>} label=\"State or Equivalent Government\"/>\r\n\r\n {\r\n this.updateAgencies(\"Private\", (event.target.checked) ? 1 : 0);\r\n }}\r\n checked={this.props.attributes.InitialResponseAgencies && this.props.attributes.InitialResponseAgencies.includes('Private')}/>} label=\"Individual or Private Corporation\"/>\r\n\r\n {\r\n this.updateAgencies(\"ANCSA\", (event.target.checked) ? 1 : 0);\r\n }}\r\n checked={this.props.attributes.InitialResponseAgencies && this.props.attributes.InitialResponseAgencies.includes('ANCSA')}/>} label=\"Alaska Native Claims Settlement Act\"/>\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\nconst mapStateToProps = state => ({\r\n appConfig: state.config,\r\n map: state.map\r\n})\r\n\r\nconst mapDispatchToProps = function (dispatch) {\r\n return bindActionCreators({\r\n ...configOperations,\r\n ...mapOperations\r\n }, dispatch);\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(MultiAgencyResponsePanel)\r\n","import React, { Component } from 'react';\r\n\r\nimport Paper from 'material-ui/Paper';\r\nimport IconButton from 'material-ui/IconButton';\r\nimport CloseIcon from 'material-ui/svg-icons/navigation/close';\r\nimport ConfirmIcon from 'material-ui/svg-icons/navigation/check';\r\nimport TextField from 'material-ui/TextField';\r\nimport Select from '@material-ui/core/Select';\r\nimport { ListItem } from '@material-ui/core';\r\nimport * as esriLoader from 'esri-loader';\r\nimport ListItemText from '@material-ui/core/ListItemText';\r\n\r\nimport {\r\n Table,\r\n TableBody,\r\n TableRow,\r\n TableRowColumn,\r\n} from 'material-ui/Table';\r\n\r\nconst paperStyle = {\r\n borderRadius: \"0 0 2px 2px\"\r\n}\r\n\r\nclass EditOriginToolbar extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state =\r\n {\r\n ddFormat: 'dd',\r\n longitudeDisplay: this.props.longitude,\r\n latitudeDisplay: this.props.latitude,\r\n userLatValue: this.props.latitude,\r\n userLongValue: this.props.longitude\r\n };\r\n }\r\n\r\n componentWillReceiveProps(nextProps)\r\n {\r\n /*if (nextProps.latitude !== this.props.latitude || nextProps.longitude !== this.props.longitude)\r\n {\r\n esriLoader.loadModules(['esri/geometry/Point', 'esri/geometry/SpatialReference', 'esri/geometry/coordinateFormatter'])\r\n .then( ([Point, SpatialReference, coordinateFormatter]) =>\r\n {\r\n let newPoint = new Point\r\n ({\r\n latitude: nextProps.latitude,\r\n longitude: nextProps.longitude,\r\n spatialReference: new SpatialReference(4269)\r\n });\r\n\r\n // Load dependencies of \"coordinateFormatter\" module\r\n coordinateFormatter.load().then(() =>\r\n {\r\n var newString = coordinateFormatter.toLatitudeLongitude(newPoint, this.state.ddFormat, 6);\r\n\r\n let lat = newString.substring(0, newString.indexOf(\"N\") + 1);\r\n let long = newString.substring(lat.length+1);\r\n\r\n this.updateUserLatLong(lat,long);\r\n });\r\n });\r\n } */\r\n }\r\n\r\n updatePoint = () =>\r\n {\r\n esriLoader.loadModules(['esri/geometry/coordinateFormatter'])\r\n .then( ([coordinateFormatter]) =>\r\n {\r\n // Load dependencies of \"coordinateFormatter\" module\r\n coordinateFormatter.load().then(() =>\r\n {\r\n var newPoint = coordinateFormatter.fromLatitudeLongitude(this.state.userLatValue + \" \" + this.state.userLongValue);\r\n this.props.onUpdatePoint(newPoint);\r\n });\r\n });\r\n }\r\n\r\n handleChange = (event) =>\r\n {\r\n this.handleFormatChange(event.target.value);\r\n }\r\n\r\nupdateLongValue = (newLong) =>\r\n{\r\n this.setState({\r\n userLongValue: newLong\r\n });\r\n\r\n this.updatePoint();\r\n}\r\n\r\nupdateLatValue = (newLat) =>\r\n{\r\n this.setState({\r\n userLatValue: newLat\r\n });\r\n\r\n this.updatePoint();\r\n}\r\n\r\nupdateUserLatLong = (lat, long) =>\r\n {\r\n this.setState({\r\n userLatValue: lat,\r\n userLongValue:long\r\n });\r\n }\r\n\r\n handleFormatChange = (newFormat) =>\r\n {\r\n esriLoader.loadModules(['esri/geometry/Point', 'esri/geometry/SpatialReference', 'esri/geometry/coordinateFormatter'])\r\n .then( ([Point, SpatialReference, coordinateFormatter]) =>\r\n {\r\n let newPoint = new Point\r\n ({\r\n latitude: this.props.latitude,\r\n longitude: this.props.longitude,\r\n spatialReference: new SpatialReference(4269)\r\n });\r\n\r\n // Load dependencies of \"coordinateFormatter\" module\r\n coordinateFormatter.load().then(() =>\r\n {\r\n var newString = coordinateFormatter.toLatitudeLongitude(newPoint, newFormat, 6);\r\n\r\n let lat = newString.substring(0, newString.indexOf(\"N\") + 1);\r\n let long = newString.substring(lat.length+1);\r\n\r\n this.setState({\r\n ddFormat: newFormat\r\n });\r\n\r\n this.updateUserLatLong(lat,long);\r\n });\r\n });\r\n }\r\n\r\n render()\r\n {\r\n let originPerimeterWarning = (this.props.originWithinPerimeter) ? \"\" : (

WARNING: Origin is outside Perimeter

);\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\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n this.updateLongValue(value);\r\n }}/>\r\n \r\n \r\n {\r\n this.updateLatValue(value);\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 EditOriginToolbar;\r\n","import React from 'react';\r\nimport pure from 'recompose/pure';\r\nimport SvgIcon from 'material-ui/SvgIcon';\r\n\r\nlet CursorPointer = (props) => (\r\n \r\n \r\n \r\n);\r\nCursorPointer = pure(CursorPointer);\r\nCursorPointer.displayName = 'CursorPointer';\r\nCursorPointer.muiName = 'SvgIcon';\r\n\r\nexport default CursorPointer;\r\n","import React, { Component } from 'react';\r\nimport Alert from '@material-ui/lab/Alert';\r\nimport Paper from 'material-ui/Paper';\r\nimport IconButton from 'material-ui/IconButton';\r\nimport TrashIcon from 'material-ui/svg-icons/action/delete';\r\nimport CloseIcon from 'material-ui/svg-icons/navigation/close';\r\nimport PublishIcon from '@material-ui/icons/Publish';\r\nimport ConfirmIcon from 'material-ui/svg-icons/navigation/check';\r\nimport CursorPointer from '../../../icons/CursorPointer';\r\nimport Polygon from '../../../icons/Polygon';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport { loadModules } from 'esri-loader';\r\n\r\nimport theme from '../../../muiTheme';\r\n\r\nconst activeStyle = {\r\n color: theme.palette.primary1Color\r\n}\r\nconst paperStyle = {\r\n borderRadius: \"0 0 2px 2px\"\r\n}\r\n\r\nclass EditPerimeterToolbar extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n activeTool: \"POLYGON\", // null (cursor), POLYGON\r\n isUploading: false,\r\n showShapeParseError: false\r\n };\r\n }\r\n\r\n inputFileChanged = async (e) =>\r\n {\r\n if (window.FileReader)\r\n {\r\n this.setState({\r\n isUploading: true\r\n });\r\n }\r\n\r\n let file = e.target.files && e.target.files.length >0 ? e.target.files[0] : null;\r\n this.generateFeatureCollection(file);\r\n this.refs.input_reader.value = null;\r\n }\r\n\r\n generateFeatureCollection = (file) =>\r\n {\r\n loadModules(['esri/geometry/support/webMercatorUtils', 'esri/geometry/Point', 'esri/geometry/SpatialReference', 'esri/geometry/coordinateFormatter'])\r\n .then( ([webMercatorUtils, Point, SpatialReference, coordinateFormatter]) =>\r\n {\r\n var params = {\r\n name: file,\r\n targetSR: new SpatialReference(4269),\r\n maxRecordCount: 1000,\r\n enforceInputFileSizeLimit: true,\r\n enforceOutputJsonSizeLimit: true\r\n };\r\n\r\n // generalize features to 10 meters for better performance\r\n //TODO: These are being overwritten by the API call\r\n params.generalize = false;\r\n params.maxAllowableOffset = 5;\r\n params.reducePrecision = false;\r\n //params.numberOfDigitsAfterDecimal = 0;\r\n\r\n window.api.generateFeatureFromShapefile(params, file).then(perimeter =>\r\n {\r\n if (perimeter)\r\n {\r\n this.props.onUploadPerimeter(perimeter);\r\n }\r\n }\r\n ).catch(err =>\r\n {\r\n this.setState({showShapeParseError: true});\r\n });\r\n\r\n });\r\n }\r\n\r\n uploadShapefile = () =>\r\n {\r\n let input = this.refs.input_reader;\r\n input.click();\r\n }\r\n\r\n closeSnackbar = () => {\r\n this.setState({showShapeParseError: false})\r\n }\r\n\r\n setTool = (activeTool) =>\r\n {\r\n this.setState({ activeTool });\r\n }\r\n\r\n\r\n render() {\r\n const uploadAlert = (this.state.showShapeParseError) ? (Note: Unable to parse shapefile or found empty geometry. Please verify .zip contents and geometry and try again.) : \"\";\r\n return (\r\n \r\n \r\n \r\n
\r\n { this.setTool(null); this.props.onDeactivate(); this.setState({showShapeParseError: false}); }} >\r\n \r\n \r\n\r\n { this.setTool(\"POLYGON\"); this.props.onActivate(); this.setState({showShapeParseError: false}); }} >\r\n \r\n \r\n\r\n { this.uploadShapefile(); this.props.onDeactivate(); this.setState({showShapeParseError: false}); }} >\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 {uploadAlert}\r\n
\r\n )\r\n }\r\n}\r\n\r\nexport default EditPerimeterToolbar;\r\n","import React, { Component } from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { CSSTransitionGroup } from 'react-transition-group';\r\nimport FlatButton from 'material-ui/FlatButton';\r\nimport Paper from 'material-ui/Paper';\r\nimport OriginIcon from 'material-ui/svg-icons/maps/my-location';\r\nimport PerimeterIcon from '../../../icons/Polygon';\r\n\r\nimport EditOriginToolbar from './EditOriginToolbar';\r\nimport EditPerimeterToolbar from './EditPerimeterToolbar';\r\nimport debounce from 'lodash/debounce';\r\nimport * as esriLoader from 'esri-loader';\r\n\r\nimport { setOriginSelectionGraphics,\r\n enableDrawMode, disableDrawMode, pauseDrawMode, resumeDrawMode, setUploadPolygonGeometry, setModifiedPerimeter,\r\n setPerimeterSymbology, isOriginWithinPerimeter, clearModifiedPerimeter, setMapViewTarget, clearVisiblePerimeters, completeDrawUpdate\r\n } from '../../esri/mapHub';\r\n\r\nimport symbols from '../../../defaults/Symbols.json';\r\n\r\nimport './EditGeometryToolbar.css';\r\n\r\nconst paperStyle = {\r\n borderRadius: \"0 0 2px 2px\"\r\n}\r\n\r\nclass EditGeometryToolbar extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n geometryField: null, // null (selector ui), \"ORIGIN\", \"PERIMETER\"\r\n confirmDisabled: true,\r\n latitude: this.props.incident.attributes[\"y\"],\r\n longitude: this.props.incident.attributes[\"x\"],\r\n originWithinPerimeter: this.props.originWithinPerimeter,\r\n modifiedPerimeterGeometry: null,\r\n };\r\n }\r\n\r\n editWasCancelled = () =>\r\n {\r\n this.cancelPerimeterEdit();\r\n this.cancelOriginEdit();\r\n }\r\n\r\n setGeometryFieldState = (geometryField) => {\r\n\r\n this.setState({\r\n geometryField: geometryField,\r\n confirmDisabled: true\r\n });\r\n if(geometryField === \"ORIGIN\")\r\n {\r\n this.enableOriginDraw();\r\n }\r\n else if (geometryField ===\"PERIMETER\")\r\n {\r\n if (this.props.perimeter === null || this.props.perimeter === undefined)\r\n {\r\n enableDrawMode({drawAction: \"polygon\", geometry: null, enableSketchOnDrawComplete: true}).then((args) =>\r\n {\r\n this.setState(\r\n {\r\n confirmDisabled: false,\r\n modifiedPerimeterGeometry: args.geometry\r\n }\r\n );\r\n\r\n setModifiedPerimeter({\r\n graphics: [\r\n {\r\n geometry:args.geometry\r\n }\r\n ]\r\n })\r\n\r\n });\r\n setPerimeterSymbology({symbol: symbols.selectedPerimeterSymbol});\r\n\r\n }\r\n else\r\n {\r\n this.enablePerimeterDraw();\r\n this.setState(\r\n {\r\n confirmDisabled: false\r\n }\r\n );\r\n }\r\n }\r\n\r\n if(geometryField === null)\r\n {\r\n this.props.onToolbarEditInactive();\r\n }\r\n else\r\n {\r\n this.props.onToolbarEditActive();\r\n }\r\n }\r\n\r\n cancelOriginEdit = () => {\r\n this.setGeometryFieldState(null);\r\n\r\n disableDrawMode();\r\n setOriginSelectionGraphics({\r\n clearExisting: true,\r\n graphics: [this.props.incident],\r\n useDisabledSymbol: false\r\n });\r\n this.props.onCancelOriginEdit();\r\n }\r\n\r\n cancelPerimeterEdit = () => {\r\n\r\n disableDrawMode();\r\n\r\n setModifiedPerimeter({\r\n graphics: [\r\n {\r\n geometry: this.props.originalPerimeterGeometry\r\n }\r\n ]\r\n })\r\n\r\n setPerimeterSymbology({symbol: symbols.selectedPerimeterSymbol});\r\n\r\n //this.props.onCancelPerimeterEdit();\r\n //this.stopWatchingPerimeterUpdates();\r\n }\r\n\r\n confirmOriginEdit = () => {\r\n this.setGeometryFieldState(null);\r\n disableDrawMode();\r\n this.props.onConfirmOriginEdit({geometry: this.originGeometry});\r\n }\r\n\r\n onUploadPerimeter = (shapefilePerimeter) =>\r\n {\r\n esriLoader.loadModules(['esri/geometry/support/jsonUtils'])\r\n .then(([geometryJsonUtils]) => {\r\n\r\n debugger;\r\n clearModifiedPerimeter();\r\n clearVisiblePerimeters();\r\n\r\n const perimeter = geometryJsonUtils.fromJSON(shapefilePerimeter);\r\n\r\n //Zoom to new perimeter\r\n setMapViewTarget({\r\n target: perimeter\r\n })\r\n\r\n //Set modified perimeter graphic\r\n setModifiedPerimeter({\r\n graphics: [\r\n {\r\n geometry: perimeter\r\n }\r\n ]\r\n });\r\n\r\n disableDrawMode();\r\n setUploadPolygonGeometry(perimeter).then(resp => {\r\n setPerimeterSymbology({symbol: symbols.selectedPerimeterSymbol});\r\n this.setState({ confirmDisabled: false});\r\n this.props.onPerimeterUploaded(perimeter);\r\n });\r\n\r\n\r\n });\r\n\r\n /*esriLoader.loadModules(['esri/geometry/support/jsonUtils'])\r\n .then(([geometryJsonUtils]) => {\r\n const perimeter = geometryJsonUtils.fromJSON(shapefilePerimeter);\r\n this.setGeometryFieldState(null);\r\n this.props.onConfirmPerimeterEdit({geometry: perimeter});\r\n\r\n setModifiedPerimeter({\r\n graphics: [\r\n {\r\n geometry: perimeter\r\n }\r\n ]\r\n });\r\n }); */\r\n }\r\n\r\n confirmPerimeterEdit = () => {\r\n debugger;\r\n this.setGeometryFieldState(null);\r\n\r\n if (this.state.modifiedPerimeterGeometry !== null)\r\n {\r\n setModifiedPerimeter({\r\n graphics: [\r\n {\r\n geometry:this.state.modifiedPerimeterGeometry\r\n }\r\n ]\r\n })\r\n\r\n this.props.onConfirmPerimeterEdit({geometry: this.state.modifiedPerimeterGeometry});\r\n }\r\n else\r\n {\r\n completeDrawUpdate().then(geometry =>\r\n {\r\n setModifiedPerimeter({\r\n graphics: [\r\n {\r\n geometry:geometry\r\n }\r\n ]\r\n })\r\n\r\n this.props.onConfirmPerimeterEdit({geometry: geometry});\r\n });\r\n }\r\n\r\n /*getDrawPolygonGeometry().then( result => {\r\n result.geometry.type = 'polygon'\r\n this.props.onConfirmPerimeterEdit({geometry: result.geometry});\r\n\r\n setModifiedPerimeter({\r\n graphics: [\r\n {\r\n geometry:result.geometry\r\n }\r\n ]\r\n })\r\n }); */\r\n }\r\n\r\n enableOriginDraw() {\r\n this.stopWatchingPerimeterUpdates();\r\n\r\n enableDrawMode({drawAction: \"point\"})\r\n .then((args) => {\r\n this.originGeometry = args.geometry;\r\n\r\n isOriginWithinPerimeter(this.props.perimeter, args.geometry).then(\r\n result =>\r\n {\r\n this.setState ({\r\n originWithinPerimeter: result\r\n });\r\n });\r\n\r\n setOriginSelectionGraphics({\r\n clearExisting: true,\r\n graphics: [{\r\n attributes: null,\r\n geometry: args.geometry\r\n }]\r\n }).then( () => {\r\n this.setState({ confirmDisabled: false});\r\n });\r\n\r\n\r\n esriLoader.loadModules(['esri/geometry/Point'])\r\n .then( ([Point]) =>\r\n {\r\n var point = new Point(args.geometry);\r\n this.setState(\r\n {\r\n latitude: point.latitude,\r\n longitude: point.longitude\r\n }\r\n );\r\n });\r\n\r\n this.enableOriginDraw();\r\n });\r\n\r\n }\r\n\r\n enablePerimeterDraw() {\r\n enableDrawMode({drawAction: \"polygon\", geometry: (this.props.perimeter) ? this.props.perimeter.geometry : null} );\r\n }\r\n\r\n clearPerimeter() {\r\n\r\n completeDrawUpdate().then(geometry =>\r\n {\r\n clearModifiedPerimeter();\r\n clearVisiblePerimeters();\r\n\r\n enableDrawMode({drawAction: \"polygon\", geometry: null, enableSketchOnDrawComplete: true}).then((args) =>\r\n {\r\n this.setState(\r\n {\r\n confirmDisabled: false,\r\n modifiedPerimeterGeometry: args.geometry\r\n }\r\n );\r\n\r\n setModifiedPerimeter({\r\n graphics: [\r\n {\r\n geometry:args.geometry\r\n }\r\n ]\r\n })\r\n\r\n });\r\n });\r\n\r\n\r\n }\r\n\r\n activatePerimeterDraw() {\r\n resumeDrawMode();\r\n this.startWatchingPerimeterUpdates();\r\n }\r\n\r\n deactivatePerimeterDraw() {\r\n pauseDrawMode();\r\n }\r\n\r\n startWatchingPerimeterUpdates() {\r\n /*if(!this.handlePerimeterUpdates) {\r\n onDrawGeometryUpdated(this.onPerimeterUpdated);\r\n }*/\r\n }\r\n\r\n manualPointUpdated = (newPoint) =>\r\n {\r\n esriLoader.loadModules(['esri/geometry/support/webMercatorUtils'])\r\n .then( ([webMercatorUtils]) =>\r\n {\r\n this.setState(\r\n {\r\n latitude: newPoint.latitude,\r\n longitude: newPoint.longitude\r\n }\r\n );\r\n\r\n let mercatorPoint = webMercatorUtils.geographicToWebMercator(newPoint);\r\n let mercatorJson = mercatorPoint.toJSON();\r\n\r\n isOriginWithinPerimeter(this.props.perimeter, mercatorPoint).then(\r\n result =>\r\n {\r\n this.setState ({\r\n originWithinPerimeter: result\r\n });\r\n });\r\n\r\n\r\n this.originGeometry = mercatorJson;\r\n\r\n setOriginSelectionGraphics({\r\n clearExisting: true,\r\n graphics: [{\r\n attributes: null,\r\n geometry: mercatorJson\r\n }]\r\n }).then( () => {\r\n this.setState({ confirmDisabled: false});\r\n });\r\n\r\n });\r\n\t}\r\n\r\n stopWatchingPerimeterUpdates() {\r\n if (this.handlePerimeterUpdates) {\r\n this.handlePerimeterUpdates.remove();\r\n delete this.handlePerimeterUpdates;\r\n }\r\n }\r\n\r\nonPerimeterUpdated = (args, handle) => {\r\n this.handlePointOfOriginUpdates = handle;\r\n this.setState({ confirmDisabled: false});\r\n }\r\n\r\n render() {\r\n let selectorEl;\r\n let editOriginEl;\r\n let editPerimeterEl;\r\n //let disallowMessage = (this.props.isMultipartPerimeter) ? \"Editing Multipart polygons is not supported\" : \"\";\r\n\r\n switch (this.state.geometryField) {\r\n case null:\r\n selectorEl = (\r\n \r\n }\r\n onClick={() => {\r\n this.setGeometryFieldState(\"ORIGIN\")\r\n }} />\r\n \r\n }\r\n onClick={() => {\r\n this.setGeometryFieldState(\"PERIMETER\")\r\n }} />\r\n \r\n \r\n )\r\n break;\r\n case \"ORIGIN\":\r\n editOriginEl = (\r\n {\r\n this.manualPointUpdated(point)\r\n },300)}\r\n onConfirmOriginEdit={this.confirmOriginEdit.bind(this)}\r\n onCancelOriginEdit={this.cancelOriginEdit.bind(this)}\r\n confirmDisabled={this.state.confirmDisabled}\r\n />\r\n )\r\n break;\r\n case \"PERIMETER\":\r\n editPerimeterEl = (\r\n \r\n )\r\n break;\r\n default:\r\n\r\n }\r\n\r\n return ReactDOM.createPortal(\r\n (\r\n \r\n {selectorEl}\r\n {editPerimeterEl}\r\n {editOriginEl}\r\n \r\n ),\r\n document.getElementById(\"editPerimeterAnchorEl\")\r\n );\r\n }\r\n}\r\n\r\n\r\n\r\nexport default EditGeometryToolbar;\r\n","import React from 'react';\r\nimport RaisedButton from 'material-ui/RaisedButton';\r\n\r\nimport theme from '../muiTheme';\r\nimport './AlertPanel.css';\r\n\r\nconst panelStyle = {\r\n borderRadius: theme.borderRadius,\r\n marginBottom: \"10px\",\r\n padding: \"12px\",\r\n color: theme.palette.alternateTextColor,\r\n display: \"flex\",\r\n alignItems: \"center\"\r\n}\r\n\r\nconst AlertPanel = (props) => {\r\n let severityColor;\r\n switch (props.severity) {\r\n case 1:\r\n severityColor = theme.palette.accent1Color\r\n break;\r\n case 2:\r\n severityColor = theme.palette.accent2Color\r\n break;\r\n case 3:\r\n severityColor = theme.palette.primary2Color\r\n break;\r\n case 4:\r\n severityColor = theme.palette.secondaryTextColor\r\n break;\r\n case 5:\r\n severityColor = theme.palette.primary1Color\r\n break;\r\n default:\r\n severityColor = theme.palette.primary1Color\r\n }\r\n\r\n let actionBtn;\r\n if (props.alertHasAction) {\r\n actionBtn = (\r\n \r\n )\r\n }\r\n return (\r\n
\r\n
\r\n {props.children}\r\n
\r\n
\r\n {actionBtn}\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default AlertPanel;\r\n","import React, { Component, Fragment } from 'react';\r\nimport { bindActionCreators } from 'redux';\r\nimport { connect } from 'react-redux';\r\nimport { incidentOperations } from '../../redux/incident';\r\nimport debounce from 'lodash/debounce';\r\nimport { loadModules } from 'esri-loader';\r\nimport CertifyDialog from './CertifyDialog';\r\nimport IncidentDetailsHeader from './IncidentDetailsHeader';\r\nimport DetailsDashboardPanel from './DetailsDashboardPanel';\r\nimport DetailsIncidentPanel from './DetailsIncidentPanel';\r\nimport FireCausePanel from './customPanels/FireCausePanel';\r\nimport MultiAgencyResponsePanel from './customPanels/MultiAgencyResponsePanel';\r\nimport EditGeometryToolbar from './editGeometry/EditGeometryToolbar';\r\nimport AlertPanel from '../AlertPanel';\r\nimport Dialog from 'material-ui/Dialog';\r\nimport RaisedButton from 'material-ui/RaisedButton';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport { refreshOriginLayer, setPerimeterGraphic } from '../esri/mapHub';\r\nimport {\r\n getRequiredFields, getValidationInfo, isPerimeterTriangleOrMissing, isPerimeterMultipart, getAcresFromIncident, getMissingFieldsCount,\r\n isIncidentComplete, isIncidentCertified, is209, isIncidentFederal, findDuplicateAttributes\r\n} from '../../utils/incidentHelper';\r\n\r\nimport { clearModifiedPerimeter, setPerimeterSymbology, isOriginWithinPerimeter, setModifiedPerimeter } from '../esri/mapHub';\r\n\r\nimport originFields from '../../defaults/PointOfOriginFields.json';\r\nimport perimeterFields from '../../defaults/UncertifiedPerimeterFields.json';\r\nimport enums from '../../defaults/Enums.json';\r\nimport symbols from '../../defaults/Symbols.json';\r\n\r\nimport './IncidentDetailsContainer.css';\r\nimport theme from '../../muiTheme';\r\n\r\n\r\nconst styles = {\r\n errorDialogContent: {\r\n width: \"500px\"\r\n },\r\n errorDialogTitle: {\r\n color: theme.palette.accent1Color\r\n }\r\n}\r\n\r\nclass IncidentDetailsContainer extends Component {\r\n\r\n constructor(props) {\r\n\r\n super(props);\r\n this.geometryToolbarChild = React.createRef();\r\n\r\n const isFederal = isIncidentFederal(this.props.incident);\r\n const originValidation = getValidationInfo(enums.validationType.origin, this.props.incident.attributes, this.props.appConfig.fieldInfos);\r\n const isCertified = isIncidentCertified(this.props.incident);\r\n const isIncident209 = is209(this.props.incident);\r\n\r\n let perimeterValid = true;\r\n let perimeterTriangle = isPerimeterTriangleOrMissing(this.props.perimeter);\r\n let isMultipartPerimeter = isPerimeterMultipart(this.props.perimeter);\r\n let incidentAcreage = getAcresFromIncident(this.props.incident);\r\n\r\n const emptyValidation =\r\n {\r\n isValid: true,\r\n invalidFields: [],\r\n errors: {}\r\n };\r\n\r\n const perimeterValidationType = (isFederal && (incidentAcreage >= 10)) ? enums.validationType.perimeter : enums.validationType.bypassValidation;\r\n const perimeterValidation = (this.props.perimeter && this.props.perimeter.attributes) ? getValidationInfo(perimeterValidationType, this.props.perimeter.attributes, this.props.appConfig.perimeterFieldInfos) : emptyValidation;\r\n\r\n this.state = {\r\n mode: \"read\", //\"edit\"\r\n editableIncident: null,\r\n editablePerimeter: null,\r\n updateStatus: \"\",\r\n errorMessage: \"\",\r\n editWasCancelled: false,\r\n clientDerivedPolygonAcres: null,\r\n editableAcres: {},\r\n editableAcresDirty: false,\r\n isRetrieving: false,\r\n isComplete: isIncidentComplete(this.props.incident),\r\n isMultipartPerimeter: isMultipartPerimeter,\r\n missingFieldsCount: getMissingFieldsCount(this.props.incident),\r\n originValidation: originValidation,\r\n perimeterValidation: perimeterValidation,\r\n isPerimeterValid: perimeterValid,\r\n isOriginValid: originValidation.isValid,\r\n incidentAcres: incidentAcreage,\r\n originWithinPerimeter: true,\r\n isPerimeterTriangle: perimeterTriangle,\r\n isCertified: isCertified,\r\n is209: isIncident209,\r\n isSaveActive: false,\r\n isFederal: isFederal,\r\n perimeterValidationType: perimeterValidationType,\r\n manualLat: null,\r\n manualLong: null,\r\n isRecalculatingAcres: false,\r\n fireCodeRequested: (this.props.incident.attributes[originFields.isFireCodeRequested] === 1),\r\n warnForMissingRelationships: this.props.missingConflictRelationships,\r\n showCertifyAgreement: false,\r\n requestFireCodeWarnIssued: false,\r\n showUSFSFireCodeDialog: false,\r\n collapseCompletePanels: false,\r\n expandAllPanels: false,\r\n perimeterWasAdded: false,\r\n perimeterWasEdited: false,\r\n perimeterWasRecalced: false\r\n };\r\n }\r\n\r\n componentDidUpdate = (prevProps, prevState) => {\r\n if (this.props.incident && prevProps.incident && this.props.incident.attributes && prevProps.incident.attributes) {\r\n if (this.props.incident.attributes[originFields.forId] !== prevProps.incident.attributes[originFields.forId]) {\r\n this.setState({\r\n isComplete: isIncidentComplete(this.props.incident),\r\n isCertified: isIncidentCertified(this.props.incident),\r\n missingFieldsCount: getMissingFieldsCount(this.props.incident),\r\n });\r\n }\r\n }\r\n };\r\n\r\n componentWillReceiveProps(nextProps) {\r\n if (nextProps.perimeter && Object.entries(nextProps.perimeter).length > 0) {\r\n if (JSON.stringify({ ...nextProps.perimeter }) !== JSON.stringify({ ...this.props.perimeter })) {\r\n const nextPerimeterValidation = getValidationInfo(this.state.perimeterValidationType, nextProps.perimeter.attributes, this.props.appConfig.perimeterFieldInfos);\r\n\r\n this.setState({\r\n perimeterValidation: nextPerimeterValidation.errors,\r\n isPerimeterValid: nextPerimeterValidation.isValid,\r\n isPerimeterTriangle: isPerimeterTriangleOrMissing(nextProps.perimeter),\r\n incidentAcres: getAcresFromIncident(nextProps.incident),\r\n isMultipartPerimeter: isPerimeterMultipart(nextProps.perimeter)\r\n });\r\n\r\n }\r\n }\r\n\r\n if (nextProps.perimeter && nextProps.incident) {\r\n if (JSON.stringify({ ...nextProps.perimeter }) !== JSON.stringify({ ...this.props.perimeter }) || JSON.stringify({ ...nextProps.incident.geometry }) !== JSON.stringify({ ...this.props.incident.geometry })) {\r\n isOriginWithinPerimeter(nextProps.perimeter, nextProps.incident.attributes.x, nextProps.incident.attributes.y).then(\r\n result => {\r\n this.setState({\r\n originWithinPerimeter: result\r\n });\r\n });\r\n }\r\n }\r\n }\r\n\r\n closeDetailsClicked = () => {\r\n this.setState({\r\n mode: \"read\",\r\n editableIncident: null,\r\n editablePerimeter: null,\r\n updateStatus: \"\",\r\n errorMessage: \"\",\r\n editableAcres: null,\r\n originValidation: null,\r\n perimeterValidation: null,\r\n isSaveActive: false,\r\n originWithinPerimeter: true,\r\n perimeterWasRecalced: false\r\n });\r\n this.props.onCloseDetailsClicked();\r\n }\r\n editClicked = () => {\r\n this.setState({\r\n mode: \"edit\",\r\n editableIncident: { attributes: (this.props.incident) ? this.props.incident.attributes : null },\r\n editablePerimeter: { attributes: (this.props.perimeter) ? this.props.perimeter.attributes : null },\r\n editableAcres: Object.assign({}, this.props.incident.perimeterAcreage),\r\n updateStatus: \"\",\r\n errorMessage: \"\",\r\n isSaveActive: false,\r\n editWasCancelled: false,\r\n manualLat: null,\r\n manualLong: null,\r\n perimeterWasRecalced: false\r\n });\r\n }\r\n\r\n cancelEditClicked = () => {\r\n this.setState({\r\n mode: \"read\",\r\n editableIncident: null,\r\n editWasCancelled: true,\r\n editableAcres: null,\r\n editableAcresDirty: false,\r\n editablePerimeter: this.props.perimeter,\r\n updateStatus: \"\",\r\n errorMessage: \"\",\r\n isSaveActive: false,\r\n isRecalculatingAcres: false,\r\n perimeterWasRecalced: false\r\n });\r\n\r\n this.geometryToolbarChild.current.editWasCancelled();\r\n }\r\n\r\n handleErrorDialogClose = () => {\r\n this.setState({ errorMessage: \"\" });\r\n };\r\n\r\n handleRelationshipsDialogClose = () => {\r\n this.setState({ warnForMissingRelationships: false });\r\n };\r\n\r\n handleFSFireCodeYes = () => {\r\n this.setState({ showUSFSFireCodeDialog: false });\r\n this.requestFireCode();\r\n };\r\n\r\n setPanelCollapseFlag = () => {\r\n if (this.state.collapseCompletePanels) {\r\n this.setState({\r\n collapseCompletePanels: false,\r\n expandAllPanels: true\r\n });\r\n }\r\n else {\r\n this.setState({\r\n collapseCompletePanels: true,\r\n expandAllPanels: false\r\n });\r\n }\r\n }\r\n\r\n resetPanelCollapseFlag = () => {\r\n this.setState({\r\n collapseCompletePanels: false,\r\n expandAllPanels: false\r\n });\r\n }\r\n\r\n handleFSFireCodeNo = () => {\r\n this.setState(\r\n {\r\n showUSFSFireCodeDialog: false,\r\n requestFireCodeWarnIssued: false\r\n }\r\n );\r\n };\r\n\r\n fireReportingStatusUpdated = (incident) => {\r\n const updatedIncident = {\r\n //attributes: results[0].attributes,\r\n attributes: Object.assign({}, incident.attributes,\r\n {\r\n \"_pointGeometryLatitude\": incident.geometry.y,\r\n \"_pointGeometryLongitude\": incident.geometry.x\r\n }\r\n ),\r\n geometry: incident.geometry\r\n }\r\n\r\n this.props.refetchIncident(updatedIncident.attributes[originFields.forId]);\r\n // this.props.setIncident(updatedIncident);\r\n }\r\n\r\n //TODO: Rewrite this entire thing\r\n saveChangesClicked = () => {\r\n this.setState({\r\n updateStatus: \"Saving Changes...\"\r\n });\r\n\r\n debugger;\r\n const perimeterIsNew = ((this.state.editablePerimeter && (this.state.editablePerimeter.attributes || this.state.editablePerimeter.geometry)) &&\r\n (this.props.perimeter === null || this.props.perimeter === undefined));\r\n\r\n if (perimeterIsNew) \r\n {\r\n window.api.addNewPerimeter(this.state.editablePerimeter, this.state.editableIncident.attributes).then(\r\n result => {\r\n setPerimeterGraphic(result.Feature);\r\n clearModifiedPerimeter();\r\n\r\n this.setState({\r\n mode: \"read\",\r\n editablePerimeter: result.Feature,\r\n isSaveActive: false\r\n });\r\n });\r\n }\r\n\r\n //If perimeter exists save changes\r\n if ( (!perimeterIsNew) && this.state.editablePerimeter && (this.state.editablePerimeter.attributes || this.state.editablePerimeter.geometry)) \r\n {\r\n const attributesChanged = (JSON.stringify(this.state.editablePerimeter.attributes) !== JSON.stringify(this.props.perimeter.attributes));\r\n\r\n const attrs = (this.state.editablePerimeter.attributes) ? this.state.editablePerimeter.attributes : this.props.perimeter.attributes;\r\n let feature = {\r\n attributes: attrs\r\n };\r\n\r\n let geom = (this.state.editablePerimeter.geometry);\r\n const geometryChanged = (geom !== undefined);\r\n\r\n if (geometryChanged) {\r\n feature.geometry = geom;\r\n\r\n if (!feature.geometry.type) {\r\n feature.geometry.type = 'polygon';\r\n }\r\n }\r\n else {\r\n feature.geometry = this.props.perimeter.geometry;\r\n }\r\n\r\n if (attributesChanged || geometryChanged) {\r\n const perimeterSource = this.props.incident.perimeter.Feature.PerimeterSource;\r\n window.api.updatePerimeter(feature, this.props.incident, geometryChanged, perimeterSource).then(\r\n result => {\r\n\r\n setPerimeterGraphic(result.Feature);\r\n clearModifiedPerimeter();\r\n\r\n this.setState({\r\n mode: \"read\",\r\n editablePerimeter: null,\r\n isSaveActive: false\r\n });\r\n\r\n },\r\n error => {\r\n console.warn(error);\r\n console.warn('View Fire Perimeter failed', error);\r\n this.showError((\r\n \r\n

There was a problem viewing the fire perimeter

\r\n
\r\n ));\r\n }\r\n )\r\n }\r\n }\r\n\r\n const incidentAttributesChanged = (JSON.stringify(this.state.editableIncident.attributes) !== JSON.stringify(this.props.incident.attributes));\r\n const acreageChanged = this.state.editableAcresDirty;\r\n\r\n if (this.state.editableIncident.geometry || incidentAttributesChanged || acreageChanged) {\r\n let updatedIncident = Object.assign({}, this.state.editableIncident);\r\n const updatedAcreage = (acreageChanged) ? Object.assign({}, this.state.editableAcres) : null;\r\n\r\n const unchangedFields = findDuplicateAttributes(this.props.incident, updatedIncident);\r\n window.api.saveOccurenceRecord(updatedIncident, updatedAcreage, unchangedFields)\r\n .then(\r\n result => {\r\n if (result) {\r\n\r\n const originValidation = getValidationInfo(enums.validationType.origin, result.attributes, this.props.appConfig.fieldInfos);\r\n\r\n this.setState({\r\n mode: \"read\",\r\n updateStatus: \"Incident Saved Successfully!\",\r\n editableIncident: null,\r\n isComplete: isIncidentComplete(result),\r\n missingFieldsCount: getMissingFieldsCount(result),\r\n originValidation: originValidation,\r\n isOriginValid: originValidation.isValid,\r\n isFederal: isIncidentFederal(result)\r\n });\r\n\r\n this.props.refetchIncident();\r\n }\r\n });\r\n }\r\n }\r\n\r\n setUpdated = (fields, values) => {\r\n let updatedProp = {};\r\n\r\n for (var i = 0; i < fields.length; i++) {\r\n updatedProp[fields[i]] = values[i];\r\n }\r\n\r\n if (this.state.editableIncident && this.state.editableIncident.attributes) {\r\n const updatedAttributes = {\r\n attributes: Object.assign({}, this.state.editableIncident.attributes, updatedProp)\r\n };\r\n\r\n const updatedIncident = Object.assign({}, this.state.editableIncident, updatedAttributes);\r\n\r\n const originValidation = getValidationInfo(enums.validationType.origin, updatedIncident.attributes, this.props.appConfig.fieldInfos);\r\n this.setState({\r\n editableIncident: updatedIncident,\r\n originValidation: originValidation,\r\n isOriginValid: originValidation.isValid,\r\n isSaveActive: true\r\n });\r\n }\r\n }\r\n\r\n onAcreageLandownerCategoryUpdated = (index, value) => {\r\n let updatedProp = Object.assign({}, this.state.editableAcres);\r\n\r\n updatedProp.AcreageRecords[index] = Object.assign({}, this.state.editableAcres.AcreageRecords[index]);\r\n updatedProp.AcreageRecords[index].LandownerCategoryID = value;\r\n\r\n this.setState({\r\n editableAcres: updatedProp,\r\n editableAcresDirty: true,\r\n isSaveActive: true\r\n });\r\n }\r\n\r\n onAddNewAcreageRow = () => {\r\n let updatedProp = Object.assign({}, this.state.editableAcres);\r\n\r\n updatedProp.AcreageRecords.push({\r\n LandownerCategoryID: 18,\r\n UserProvidedAcreage: 0,\r\n CanEditLandowner: true,\r\n AcreageRecordID: -1\r\n })\r\n\r\n this.setState({\r\n editableAcres: updatedProp,\r\n editableAcresDirty: true,\r\n isSaveActive: true\r\n });\r\n\r\n }\r\n\r\n onAcreageRecalculate = () => {\r\n\r\n //const editablePerimeter = Object.assign({}, this.state.editablePerimeter, { geometry: args.geometry });\r\n //TODO IMH: Perimeter uploaded\r\n debugger;\r\n //const projectedGeometry = webMercatorUtils.webMercatorToGeographic(this.props.incident.perimeter.Feature.geometry);\r\n\r\n window.api.deriveAcresByJurisdiction(this.props.incident.perimeter.Feature.geometry).then(derivedJurisAcresResult => {\r\n this.reconcileEditableAcreages(derivedJurisAcresResult);\r\n this.setState({\r\n clientDerivedPolygonAcres: derivedJurisAcresResult,\r\n perimeterWasRecalced: true,\r\n isSaveActive: true,\r\n editableAcresDirty: true,\r\n });\r\n });\r\n }\r\n onAcreagePropRemoved = (index) => {\r\n let updatedProp = Object.assign({}, this.state.editableAcres);\r\n updatedProp.AcreageRecords = [];\r\n\r\n for (var i = 0; i < this.state.editableAcres.AcreageRecords.length; i++) {\r\n if (i !== index) {\r\n updatedProp.AcreageRecords.push(Object.assign({}, this.state.editableAcres.AcreageRecords[i]));\r\n }\r\n }\r\n\r\n this.setState({\r\n editableAcres: updatedProp,\r\n editableAcresDirty: true,\r\n isSaveActive: true\r\n });\r\n }\r\n\r\n onAcreagePropUpdated = (num, index) => {\r\n\r\n let updatedProp = Object.assign({}, this.state.editableAcres);\r\n updatedProp.AcreageRecords[index].LandownerCategoryID = this.state.editableAcres.AcreageRecords[index].LandownerCategoryID;\r\n updatedProp.AcreageRecords[index].IsUserOverriden = true;\r\n updatedProp.AcreageRecords[index].UserProvidedAcreage = (isNaN(num)) ? null : num;\r\n \r\n this.setState({\r\n editableAcres: updatedProp,\r\n editableAcresDirty: true,\r\n isSaveActive: true\r\n });\r\n\r\n }\r\n\r\n agencyPropUpdated = (fieldName, agencyVal) => {\r\n let valueChanged = false;\r\n let updatedProp = {};\r\n\r\n if (fieldName === originFields.pooProtectingUnit && agencyVal.toUpperCase() !== this.state.editableIncident.attributes[originFields.pooProtectingAgency]) {\r\n updatedProp[originFields.pooProtectingAgency] = agencyVal.toUpperCase();\r\n valueChanged = true;\r\n }\r\n\r\n if (fieldName === originFields.pooJurisdictionalUnit && agencyVal.toUpperCase() !== this.state.editableIncident.attributes[originFields.incidentJurisdictionalAgency]) {\r\n updatedProp[originFields.incidentJurisdictionalAgency] = agencyVal.toUpperCase();\r\n valueChanged = true;\r\n }\r\n\r\n if (this.state.editableIncident && this.state.editableIncident.attributes && valueChanged) {\r\n const updatedAttributes = { attributes: Object.assign({}, this.state.editableIncident.attributes, updatedProp) };\r\n\r\n const updatedIncident = Object.assign({}, this.state.editableIncident, updatedAttributes);\r\n const originValidation = getValidationInfo(enums.validationType.origin, updatedIncident.attributes, this.props.appConfig.fieldInfos);\r\n\r\n this.setState({\r\n editableIncident: updatedIncident,\r\n originValidation: originValidation,\r\n isOriginValid: originValidation.isValid,\r\n isSaveActive: true\r\n });\r\n }\r\n }\r\n\r\n removeInitialResponseAgency = (removeAgency) => {\r\n let updatedProp = {};\r\n updatedProp[\"InitialResponseAgencies\"] = [];\r\n if (this.state.editableIncident.attributes.InitialResponseAgencies !== null && this.state.editableIncident.attributes.InitialResponseAgencies.length > 0) {\r\n for (var i = 0; i < this.state.editableIncident.attributes.InitialResponseAgencies.length; i++) {\r\n if (this.state.editableIncident.attributes.InitialResponseAgencies[i] !== removeAgency) {\r\n updatedProp[\"InitialResponseAgencies\"].push(this.state.editableIncident.attributes.InitialResponseAgencies[i]);\r\n }\r\n }\r\n }\r\n\r\n if (this.state.editableIncident && this.state.editableIncident.attributes) {\r\n const updatedAttributes = {\r\n attributes: Object.assign({}, this.state.editableIncident.attributes, updatedProp)\r\n };\r\n\r\n const updatedIncident = Object.assign({}, this.state.editableIncident, updatedAttributes);\r\n const originValidation = getValidationInfo(enums.validationType.origin, updatedIncident.attributes, this.props.appConfig.fieldInfos);\r\n\r\n this.setState({\r\n editableIncident: updatedIncident,\r\n originValidation: originValidation,\r\n isOriginValid: originValidation.isValid,\r\n isSaveActive: true\r\n });\r\n }\r\n }\r\n\r\n addInitialResponseAgency = (addAgency) => {\r\n let updatedProp = {};\r\n updatedProp[\"InitialResponseAgencies\"] = [];\r\n if (this.state.editableIncident.attributes.InitialResponseAgencies !== null && this.state.editableIncident.attributes.InitialResponseAgencies.length > 0) {\r\n for (var i = 0; i < this.state.editableIncident.attributes.InitialResponseAgencies.length; i++) {\r\n updatedProp[\"InitialResponseAgencies\"].push(this.state.editableIncident.attributes.InitialResponseAgencies[i]);\r\n }\r\n }\r\n updatedProp[\"InitialResponseAgencies\"].push(addAgency);\r\n\r\n if (this.state.editableIncident && this.state.editableIncident.attributes) {\r\n const updatedAttributes = {\r\n attributes: Object.assign({}, this.state.editableIncident.attributes, updatedProp)\r\n };\r\n\r\n const updatedIncident = Object.assign({}, this.state.editableIncident, updatedAttributes);\r\n const originValidation = getValidationInfo(enums.validationType.origin, updatedIncident.attributes, this.props.appConfig.fieldInfos);\r\n\r\n this.setState({\r\n editableIncident: updatedIncident,\r\n originValidation: originValidation,\r\n isOriginValid: originValidation.isValid,\r\n isSaveActive: true\r\n });\r\n }\r\n }\r\n\r\n attemptSetAgency = (unitId, fieldToSet) => {\r\n window.api.getUnitId(unitId).then(unitIdResponse => {\r\n console.log(\"attemptSetAgency\");\r\n console.log(unitIdResponse);\r\n const unitIdIsValid = (unitIdResponse && unitIdResponse.units && unitIdResponse.units.length > 0);\r\n if (unitIdIsValid)\r\n {\r\n console.log(\"should be setting with \" + unitIdResponse.units[0].AGENCY);\r\n this.propUpdated(fieldToSet,unitIdResponse.units[0].AGENCY);\r\n }\r\n });\r\n }\r\n\r\n propUpdated = (fieldName, newVal) => {\r\n let updatedProp = {};\r\n updatedProp[fieldName] = newVal;\r\n\r\n if (fieldName === originFields.incidentTypeCategory) \r\n {\r\n if (newVal === \"FA\") \r\n {\r\n updatedProp[originFields.incidentSize] = null; //null out incident size if we're an FA now\r\n }\r\n }\r\n\r\n if (fieldName === originFields.incidentSize) \r\n {\r\n updatedProp[fieldName] = Math.max(Math.round(newVal * 10) / 10, newVal).toFixed(2);\r\n }\r\n\r\n if (fieldName === originFields.pooJurisdictionalUnit || fieldName === originFields.pooProtectingUnit) \r\n {\r\n updatedProp[fieldName] = newVal.toUpperCase();\r\n const agencyToSet = (fieldName === originFields.pooJurisdictionalUnit) ? originFields.incidentJurisdictionalAgency : originFields.pooProtectingAgency;\r\n this.attemptSetAgency(newVal.toUpperCase(), agencyToSet);\r\n }\r\n\r\n if (fieldName === originFields.fireCauseId) {\r\n // updatedProp[originFields.fireCauseGeneralId] = this.getDefaultCauseGeneral(newVal);\r\n updatedProp[originFields.fireCauseGeneralId] = null;\r\n updatedProp[originFields.fireCauseSpecificId] = null;\r\n updatedProp[originFields.fireCauseActivityGroupID] = null;\r\n updatedProp[originFields.fireCauseAgeCategoryID] = null;\r\n updatedProp[originFields.fireCauseSpecificDetailID] = null;\r\n updatedProp[originFields.isCauseProhibited] = null;\r\n }\r\n\r\n if (fieldName === originFields.fireCauseGeneralId) {\r\n updatedProp[originFields.fireCauseSpecificId] = null;\r\n updatedProp[originFields.fireCauseAgeCategoryID] = null;\r\n updatedProp[originFields.fireCauseActivityGroupID] = null;\r\n updatedProp[originFields.fireCauseSpecificDetailID] = null;\r\n updatedProp[originFields.isCauseProhibited] = null;\r\n }\r\n\r\n if (fieldName === originFields.fireCauseSpecificId) {\r\n updatedProp[originFields.fireCauseAgeCategoryID] = null;\r\n updatedProp[originFields.fireCauseActivityGroupID] = null;\r\n updatedProp[originFields.fireCauseSpecificDetailID] = null;\r\n updatedProp[originFields.isCauseProhibited] = null;\r\n }\r\n\r\n if (this.state.editableIncident && this.state.editableIncident.attributes) {\r\n const updatedAttributes = {\r\n attributes: Object.assign({}, this.state.editableIncident.attributes, updatedProp)\r\n };\r\n\r\n const updatedIncident = Object.assign({}, this.state.editableIncident, updatedAttributes);\r\n const originValidation = getValidationInfo(enums.validationType.origin, updatedIncident.attributes, this.props.appConfig.fieldInfos);\r\n\r\n this.setState({\r\n editableIncident: updatedIncident,\r\n originValidation: originValidation,\r\n isOriginValid: originValidation.isValid,\r\n isSaveActive: true\r\n });\r\n\r\n if (fieldName === \"_pointGeometryLatitude\") {\r\n this.setState({ manualLat: newVal });\r\n }\r\n\r\n if (fieldName === \"_pointGeometryLongitude\") {\r\n this.setState({ manualLong: newVal });\r\n }\r\n }\r\n }\r\n\r\n resetAcreageRecalc = () =>\r\n {\r\n this.setState({perimeterWasRecalced: false });\r\n }\r\n\r\n perimeterPropUpdated = (fieldName, newVal) => {\r\n let updatedProp = {};\r\n updatedProp[fieldName] = newVal;\r\n\r\n if (this.state.editablePerimeter.attributes) {\r\n const updatedAttributes = {\r\n attributes: Object.assign({}, this.state.editablePerimeter.attributes, updatedProp)\r\n };\r\n const updatedPerimeter = Object.assign({}, this.state.editablePerimeter, updatedAttributes);\r\n\r\n this.setState({\r\n editablePerimeter: updatedPerimeter,\r\n isPerimeterValid: getValidationInfo(this.state.perimeterValidationType, updatedPerimeter.attributes, this.props.appConfig.perimeterFieldInfos).isValid,\r\n isSaveActive: true\r\n });\r\n }\r\n\r\n }\r\n\r\n getDetailsIncidentPanels = (configFields, perimeterConfig) => {\r\n const shouldDisableForFA = this.props.incident.attributes && this.props.incident.attributes[originFields.incidentTypeCategory] === \"FA\";\r\n let requiredFields = getRequiredFields((this.state.mode === \"edit\" ? this.state.editableIncident : this.props.incident));\r\n\r\n let panelIncident = this.state.mode === \"edit\" ? this.state.editableIncident : this.props.incident;\r\n\r\n if (panelIncident && !panelIncident.attributes) {\r\n panelIncident.attributes = this.props.incident.attributes\r\n }\r\n\r\n let panelPerimeter = this.state.mode === \"edit\" ? this.state.editablePerimeter : (this.props.incident.perimeter && this.props.incident.perimeter.Feature && this.props.incident.perimeter.Feature.attributes) ? this.props.incident.perimeter.Feature : null;\r\n const overrideDomainFields = (this.state.mode === \"edit\" && (this.props.incident.perimeter && this.props.incident.perimeter.Feature && this.props.incident.perimeter.Feature.attributes && this.props.incident.perimeter.Feature.PerimeterSource === \"Fire History\") ?\r\n [\"FeatureStatus\", \"DeleteThis\", \"FeatureAccess\"] : []);\r\n\r\n let originPanels = configFields.map(configField => {\r\n\r\n switch (configField.identifier) {\r\n case \"causePanel\":\r\n return (\r\n {\r\n this.propUpdated(fieldName, newVal)\r\n }}\r\n fieldInfos={this.props.appConfig.fieldInfos}\r\n title={configField.title}\r\n primaryFields={configField.primary}\r\n fields={configField.fields}\r\n secondaryFields={configField.secondary}\r\n requiredFields={requiredFields}\r\n staticFields={originFields.staticFields}\r\n unitValidatorFields={originFields.unitValidatorFields}\r\n dependentFields={originFields.dependentFields}\r\n validationType={enums.validationType.origin}\r\n validationInfo={this.state.originValidation}\r\n editablePerimeter={this.state.editablePerimeter}\r\n panelCollapseState={this.state.collapseCompletePanels}\r\n expandAllPanels={this.state.expandAllPanels}\r\n resetPanelCollapseFlag={this.resetPanelCollapseFlag.bind(this)}\r\n />\r\n );\r\n case \"multiAgencyResponsePanel\":\r\n return (\r\n {\r\n this.propUpdated(fieldName, newVal)\r\n }}\r\n fieldInfos={this.props.appConfig.fieldInfos}\r\n title={configField.title}\r\n primaryFields={configField.primary}\r\n fields={configField.fields}\r\n addInitialResponseAgency={(addAgency) => {\r\n this.addInitialResponseAgency(addAgency)\r\n }}\r\n removeInitialResponseAgency={(removeAgency) => {\r\n this.removeInitialResponseAgency(removeAgency)\r\n }}\r\n secondaryFields={configField.secondary}\r\n requiredFields={requiredFields}\r\n staticFields={originFields.staticFields}\r\n unitValidatorFields={originFields.unitValidatorFields}\r\n dependentFields={originFields.dependentFields}\r\n validationType={enums.validationType.origin}\r\n validationInfo={this.state.originValidation}\r\n editablePerimeter={this.state.editablePerimeter}\r\n panelCollapseState={this.state.collapseCompletePanels}\r\n expandAllPanels={this.state.expandAllPanels}\r\n resetPanelCollapseFlag={this.resetPanelCollapseFlag.bind(this)}\r\n />\r\n );\r\n default:\r\n const panelSomething = configField.identifier;\r\n if (panelSomething === \"sizePanel\") \r\n {\r\n debugger;\r\n }\r\n return (\r\n {\r\n this.propUpdated(fieldName, newVal)\r\n }}\r\n onAgencyValidated={(fieldName, agencyVal) => {\r\n this.agencyPropUpdated(fieldName, agencyVal)\r\n }}\r\n onDerivedPropUpdated={(fieldName, newVal) => {\r\n this.propUpdated(fieldName, newVal)\r\n }}\r\n onDeriveSetUpdated={(fields, values) => {\r\n this.setUpdated(fields, values)\r\n }}\r\n fieldInfos={this.props.appConfig.fieldInfos}\r\n title={configField.title}\r\n primaryFields={configField.primary}\r\n fields={configField.fields}\r\n knownUnitIds={this.props.incident.knownUnitIds}\r\n clientDerivedPolygonAcres={this.state.clientDerivedPolygonAcres}\r\n secondaryFields={configField.secondary}\r\n requiredFields={requiredFields}\r\n staticFields={originFields.staticFields}\r\n unitValidatorFields={originFields.unitValidatorFields}\r\n dependentFields={originFields.dependentFields}\r\n validationType={enums.validationType.origin}\r\n validationInfo={this.state.originValidation}\r\n editablePerimeter={this.state.editablePerimeter}\r\n panelCollapseState={this.state.collapseCompletePanels}\r\n expandAllPanels={this.state.expandAllPanels}\r\n resetPanelCollapseFlag={this.resetPanelCollapseFlag.bind(this)}\r\n />\r\n )\r\n }\r\n\r\n });\r\n\r\n //let perimeterPanel = (this.props.incident.perimeter && this.props.incident.perimeter.Feature && this.props.incident.perimeter.Feature.attributes) ? (\r\n let perimeterPanel = (\r\n {\r\n this.perimeterPropUpdated(fieldName, newVal)\r\n }, 1)}\r\n fieldInfos={(this.props.incident !== null && this.props.incident.perimeter !== null) ? this.props.incident.perimeter.Fields : null}\r\n title={perimeterConfig.title}\r\n fields={perimeterConfig.fields}\r\n fireOccurenceRecordID={this.props.incident.attributes[originFields.fireOccurenceRecordID]}\r\n onResetAcreageRecalc={this.resetAcreageRecalc}\r\n perimeterWasRecalced={this.state.perimeterWasRecalced}\r\n perimeterFields={(this.props.incident !== null && this.props.incident.perimeter !== null) ? this.props.incident.perimeter.Fields : null}\r\n overrideDomainFields={overrideDomainFields}\r\n //perimeterAcreage={this.props.incident.perimeterAcreage}\r\n perimeter={this.props.incident.perimeter}\r\n unitValidatorFields={[]}\r\n primaryFields={perimeterConfig.primary}\r\n secondaryFields={perimeterConfig.secondary}\r\n validationType={this.state.perimeterValidationType}\r\n validationInfo={this.state.perimeterValidation}\r\n panelCollapseState={this.state.collapseCompletePanels}\r\n expandAllPanels={this.state.expandAllPanels}\r\n editWasCancelled={this.state.editWasCancelled}\r\n acresByOwnership={(this.state.mode === \"edit\") ? this.state.editableAcres : this.props.incident.perimeterAcreage}\r\n onAcreagePropUpdated={(num, index) => {\r\n this.onAcreagePropUpdated(num, index)\r\n }}\r\n onAcreagePropRemoved={(index) => {\r\n this.onAcreagePropRemoved(index)\r\n }}\r\n onAcreageRecalculate={() => {\r\n this.onAcreageRecalculate()\r\n }}\r\n onAddNewAcreageRow={() => {\r\n this.onAddNewAcreageRow()\r\n }}\r\n onAcreageLandownerCategoryUpdated={(index, value) => {\r\n this.onAcreageLandownerCategoryUpdated(index, value)\r\n }}\r\n isRecalculatingAcres={this.state.isRecalculatingAcres}\r\n resetPanelCollapseFlag={this.resetPanelCollapseFlag.bind(this)}\r\n isPerimeter={true}\r\n />\r\n );\r\n\r\n var withPerimeterPanels = originPanels.map(a => ({ ...a }));\r\n withPerimeterPanels.splice(3, 0, perimeterPanel);\r\n\r\n return withPerimeterPanels;\r\n }\r\n\r\n certifyIncident = () => {\r\n this.setState({\r\n showCertifyAgreement: true\r\n });\r\n }\r\n\r\n onCertifyIncidentCancel = () => {\r\n this.setState({\r\n showCertifyAgreement: false\r\n });\r\n }\r\n\r\n onCertifyIncidentAgreed = () => {\r\n this.setState({\r\n showCertifyAgreement: false\r\n });\r\n\r\n let certifiedIncident = { attributes: Object.assign({}, this.props.incident.attributes) };\r\n\r\n certifiedIncident.attributes[originFields.certifiedField] = originFields.certifiedCodedValue;\r\n certifiedIncident.attributes[originFields.finalFireReportApprovedBy] = window.api.getUsername();\r\n certifiedIncident.attributes[originFields.finalFireReportApprovedDate] = new Date().getTime();\r\n\r\n const preCertificationPerimeter = this.props.perimeter;\r\n\r\n window.api.saveOccurenceRecord(certifiedIncident)\r\n .then(\r\n result => {\r\n if (result && !result.error) {\r\n refreshOriginLayer();\r\n\r\n this.handlePerimeterCertification(preCertificationPerimeter);\r\n\r\n this.props.setIncident(result);\r\n\r\n this.setState({\r\n isCertified: isIncidentCertified(result)\r\n });\r\n }\r\n },\r\n error => {\r\n console.log('edit error', error);\r\n this.showError((\r\n

There was a problem saving your changes...

\r\n ));\r\n }\r\n );\r\n }\r\n\r\n handlePerimeterCertification = (perimeterToCertify) => {\r\n\r\n const shouldRemovePerimeter = (isPerimeterTriangleOrMissing(perimeterToCertify) && this.props.incident.attributes[originFields.incidentSize] < 10)\r\n\r\n if (perimeterToCertify && perimeterToCertify.attributes) {\r\n if (shouldRemovePerimeter) {\r\n let perimeterToUpdate = Object.assign({}, perimeterToCertify);\r\n\r\n perimeterToUpdate.attributes[perimeterFields.isVisible] = 'No';\r\n perimeterToUpdate.attributes[perimeterFields.deleteThis] = 'No';\r\n\r\n const perimeterSource = this.props.incident.perimeter.Feature.PerimeterSource;\r\n\r\n //No certifiable perimeter, editing existing one to not visible.\r\n window.api.updatePerimeter(perimeterToUpdate, this.props.incident, false, perimeterSource).then(\r\n result => {\r\n this.props.setPerimeter(null);\r\n });\r\n }\r\n else {\r\n //Certify perimeter\r\n window.api.certifyPerimeter(perimeterToCertify, this.props.incident.attributes[originFields.forId]).then(result => {\r\n this.props.setPerimeter(result);\r\n this.props.refetchIncidentByForID(this.props.incident.attributes[originFields.forId]);\r\n },\r\n error => {\r\n console.log('edit perimeter error', error);\r\n this.showError((\r\n

There was a problem saving your perimeter changes...

\r\n ));\r\n });\r\n\r\n }\r\n }\r\n }\r\n\r\n requestFireCode = () => {\r\n\r\n let incident = { attributes: Object.assign({}, this.props.incident.attributes) };\r\n if ((this.props.incident.attributes[originFields.incidentJurisdictionalAgency] === \"FS\" || this.props.incident.attributes[originFields.incidentJurisdictionalAgency] === \"USFS\") && !this.state.requestFireCodeWarnIssued) {\r\n this.setState({\r\n requestFireCodeWarnIssued: true,\r\n showUSFSFireCodeDialog: true\r\n });\r\n return;\r\n }\r\n\r\n incident.attributes[originFields.isFireCodeRequested] = originFields.isFireCodeRequested_RequestedCode;\r\n this.setState({\r\n fireCodeRequested: true\r\n });\r\n window.api.requestFireCode([incident])\r\n .then(\r\n results => {\r\n if (results && results[0]) {\r\n if (results[0].success) {\r\n const updatedIncident = {\r\n attributes: Object.assign({}, results[0].attributes,\r\n {\r\n \"_pointGeometryLatitude\": results[0].geometry.y,\r\n \"_pointGeometryLongitude\": results[0].geometry.x\r\n }\r\n ),\r\n geometry: results[0].geometry\r\n }\r\n this.props.setIncident(updatedIncident);\r\n this.setState({\r\n isCertified: isIncidentCertified(updatedIncident),\r\n fireCodeRequested: true,\r\n requestFireCodeWarnIssued: false,\r\n showUSFSFireCodeDialog: false\r\n });\r\n\r\n refreshOriginLayer();\r\n }\r\n else {\r\n console.warn('update failed', results[0]);\r\n this.showError((\r\n \r\n

There was a problem saving your changes...

\r\n

{results[0].error.description}

\r\n
\r\n ));\r\n }\r\n }\r\n },\r\n error => {\r\n console.log('edit error', error);\r\n this.showError((\r\n

There was a problem saving your changes...

\r\n ));\r\n }\r\n );\r\n }\r\n\r\n decertifyIncident = () => {\r\n\r\n //Handle perimeter decertification\r\n if (this.props.incident.perimeter && this.props.incident.perimeter.Feature) {\r\n window.api.decertifyPerimeter(this.props.incident.perimeter.Feature, this.props.incident.attributes[originFields.forId]).then(result => {\r\n this.props.setPerimeter(result);\r\n });\r\n }\r\n\r\n let decertifiedIncident = { attributes: Object.assign({}, this.props.incident.attributes) };\r\n decertifiedIncident.attributes[originFields.certifiedField] = originFields.decertifiedCodedValue;\r\n decertifiedIncident.attributes[originFields.finalFireReportApprovedBy] = null;\r\n decertifiedIncident.attributes[originFields.finalFireReportApprovedDate] = null;\r\n\r\n window.api.saveOccurenceRecord(decertifiedIncident).then(\r\n result => {\r\n if (result && !result.error) {\r\n\r\n this.props.setIncident(result);\r\n\r\n this.setState({\r\n isCertified: isIncidentCertified(result)\r\n });\r\n\r\n refreshOriginLayer();\r\n }\r\n else {\r\n console.warn('update failed', result);\r\n this.showError((\r\n \r\n

There was a problem saving your changes...

\r\n

{result.error.description}

\r\n

{result.error.description}

\r\n
\r\n ));\r\n }\r\n },\r\n error => {\r\n console.log('edit error', error);\r\n this.showError((\r\n

There was a problem saving your changes...

\r\n ));\r\n }\r\n );\r\n }\r\n\r\n handleSuccessSnackRequestClose = () => {\r\n this.setState({\r\n updateStatus: \"\",\r\n });\r\n };\r\n\r\n reconcileEditableAcreages = (derivedResult) => \r\n { \r\n if (this.state.editableAcres) \r\n { \r\n \r\n let updatedProp = Object.assign({}, this.state.editableAcres);\r\n if (updatedProp.AcreageRecords === null || updatedProp.AcreageRecords === undefined) \r\n {\r\n updatedProp.AcreageRecords = [];\r\n } \r\n\r\n let catIds = [];\r\n for (var i = 0; i < derivedResult.length; i++) \r\n {\r\n const catID = derivedResult[i].Category.LandownerCategoryID;\r\n const derivedAcres = parseFloat(derivedResult[i].Acres);\r\n catIds.push(catID);\r\n debugger;\r\n let existingRecord = updatedProp.AcreageRecords.find(x => x.LandownerCategoryID === catID);\r\n if (existingRecord) \r\n {\r\n existingRecord.CalculatedAcreage = derivedAcres;\r\n existingRecord.IsUserOverriden = false;\r\n existingRecord.CanEditLandowner = false;\r\n existingRecord.UserProvidedAcreage = null;\r\n } \r\n else \r\n { \r\n updatedProp.AcreageRecords.push({\r\n LandownerCategoryID: catID, \r\n UserProvidedAcreage: null,\r\n CanEditLandowner: false,\r\n IsUserOverriden: false,\r\n AcreageRecordID: -1,\r\n CalculatedAcreage: derivedAcres,\r\n PerimeterID: updatedProp.PerimeterID\r\n });\r\n }\r\n }\r\n\r\n updatedProp.AcreageRecords = updatedProp.AcreageRecords.filter(i => catIds.includes(i.LandownerCategoryID));\r\n \r\n this.setState({\r\n editableAcres: updatedProp\r\n });\r\n } \r\n else \r\n { \r\n let calcedTotal = 0;\r\n let perimeter = {\r\n CalculatedAcreageTotal: -1,\r\n FireOccurenceRecordID: this.props.incident.attributes[originFields.fireOccurenceRecordID],\r\n AcreageRecords: []\r\n };\r\n\r\n for (var j = 0; j < derivedResult.length; j++) {\r\n \r\n calcedTotal += parseFloat(derivedResult[i].Acres);\r\n\r\n perimeter.AcreageRecords.push({\r\n LandownerCategoryID: derivedResult[j].Category.LandownerCategoryID, \r\n UserProvidedAcreage: null,\r\n CanEditLandowner: false,\r\n IsUserOverriden: false,\r\n AcreageRecordID: -1,\r\n CalculatedAcreage: parseFloat(derivedResult[i].Acres)\r\n });\r\n };\r\n \r\n perimeter.CalculatedAcreageTotal = calcedTotal;\r\n this.setState({\r\n editableAcres: perimeter\r\n });\r\n }\r\n }\r\n\r\n handleConfirmOriginEdit = (args) => {\r\n loadModules(['esri/geometry/support/webMercatorUtils'])\r\n .then(([webMercatorUtils]) => {\r\n\r\n let geomWGS84 = webMercatorUtils.webMercatorToGeographic(args.geometry);\r\n const latitude = geomWGS84.y;\r\n const longitude = geomWGS84.x;\r\n\r\n let updatedProp = {};\r\n\r\n updatedProp[\"x\"] = longitude;\r\n updatedProp[\"y\"] = latitude;\r\n\r\n if (this.state.editableIncident && this.state.editableIncident.attributes) \r\n {\r\n const updatedAttributes = { attributes: Object.assign({}, this.state.editableIncident.attributes, updatedProp) };\r\n const updatedGeomIncident = Object.assign({}, this.state.editableIncident, updatedAttributes);\r\n\r\n this.setState({\r\n editableIncident: updatedGeomIncident\r\n });\r\n }\r\n });\r\n }\r\n\r\n handleCancelOriginEdit = (args) => {\r\n const editableIncident = Object.assign({}, this.state.editableIncident, { geometry: null });\r\n this.setState({ editableIncident });\r\n }\r\n\r\n handleOnSpliceComplete = (forId) => {\r\n this.props.refetchIncidentByForID(forId);\r\n }\r\n\r\n handleOnPerimeterUploaded = (args) => {\r\n loadModules(['esri/geometry/support/webMercatorUtils'])\r\n .then(([webMercatorUtils]) => {\r\n\r\n const editablePerimeter = Object.assign({}, this.state.editablePerimeter, { geometry: args.geometry });\r\n //TODO IMH: Perimeter uploaded\r\n\r\n const projectedGeometry = webMercatorUtils.webMercatorToGeographic(args.geometry);\r\n\r\n window.api.deriveAcresByJurisdiction(projectedGeometry).then(derivedJurisAcresResult => {\r\n this.reconcileEditableAcreages(derivedJurisAcresResult);\r\n //Reconcile perimeter acreages with newly derived acres\r\n this.setState({\r\n clientDerivedPolygonAcres: derivedJurisAcresResult,\r\n perimeterWasAdded: true,\r\n perimeterWasRecalced: true\r\n });\r\n });\r\n this.setState({ editablePerimeter });\r\n });\r\n }\r\n\r\n handleConfirmPerimeterEdit = (args) => {\r\n loadModules(['esri/geometry/support/webMercatorUtils'])\r\n .then(([webMercatorUtils]) => {\r\n\r\n\r\n let editablePerimeter = Object.assign({}, this.state.editablePerimeter, { geometry: args.geometry });\r\n\r\n if (editablePerimeter.attributes && editablePerimeter.attributes.MapMethod && editablePerimeter.attributes.MapMethod.toUpperCase() === \"AUTO-GENERATED\") {\r\n editablePerimeter.attributes.MapMethod = \"Hand Sketch\";\r\n }\r\n\r\n if (editablePerimeter.attributes && editablePerimeter.attributes.Comments && editablePerimeter.attributes.Comments.toUpperCase() === \"AUTO-GENERATED BY EGP-IRWIN\") {\r\n editablePerimeter.attributes.Comments = \"Edited in InFORM Inspector\";\r\n }\r\n\r\n const projectedGeometry = webMercatorUtils.webMercatorToGeographic(args.geometry);\r\n\r\n window.api.deriveCalculatedAcres(args).then(response =>\r\n {\r\n this.propUpdated(originFields.calculatedAcres, response);\r\n });\r\n\r\n window.api.deriveAcresByJurisdiction(projectedGeometry).then(derivedJurisAcresResult => {\r\n \r\n this.reconcileEditableAcreages(derivedJurisAcresResult);\r\n\r\n this.setState({\r\n clientDerivedPolygonAcres: derivedJurisAcresResult,\r\n perimeterWasAdded: true,\r\n perimeterWasRecalced: true,\r\n editableAcresDirty: true\r\n });\r\n });\r\n this.setState({ editablePerimeter });\r\n });\r\n }\r\n\r\n handleCancelPerimeterEdit = (args) => {\r\n const editablePerimeter = Object.assign({}, this.props.selectedIncident.perimeter);\r\n this.setState({ editablePerimeter: editablePerimeter });\r\n\r\n this.props.setPerimeter(this.props.selectedIncident.perimeter);\r\n\r\n setModifiedPerimeter({\r\n graphics: [\r\n {\r\n geometry: this.props.selectedIncident.perimeter.geometry\r\n }\r\n ]\r\n })\r\n\r\n setPerimeterSymbology({ symbol: symbols.disabledPerimeterSymbol });\r\n\r\n }\r\n\r\n showError(message) {\r\n this.setState({\r\n errorMessage: message,\r\n updateStatus: \"\"\r\n });\r\n }\r\n\r\n activateSave = () => {\r\n this.setState({\r\n isSaveActive: true\r\n });\r\n }\r\n deactivateSave = () => {\r\n this.setState({\r\n isSaveActive: false\r\n });\r\n }\r\n\r\n render() {\r\n\r\n const isCertified = (this.props.incident && this.props.incident.attributes && this.props.incident.attributes[originFields.certifiedField] !== null && this.props.incident.attributes[originFields.certifiedField].toUpperCase() === originFields.certifiedCodedValue.toUpperCase());\r\n const hasAcreageRows = (this.props.incident.perimeterAcreage && this.props.incident.perimeterAcreage.AcreageRecords && this.props.incident.perimeterAcreage.AcreageRecords.length > 0);\r\n const isFalseAlarm = (this.props.incident && this.props.incident.attributes && this.props.incident.attributes[originFields.incidentTypeCategory] === \"FA\");\r\n\r\n //console.log(\"IncidentDetailsContainer render:\");\r\n //console.log(this.props.incident.perimeterAcreage);\r\n //console.log(this.props.incident.perimeterAcreage.AcreageRecords);\r\n\r\n const configFields = originFields.incidentDetails;\r\n const perimeterConfigFields = perimeterFields.perimeterDetails;\r\n let quarantineAlert;\r\n let incidentStatusAlert;\r\n let fireCodeAlert;\r\n let isQuarantined = false;\r\n if (this.props.incident.attributes[originFields.isQuarantined]) {\r\n isQuarantined = true;\r\n quarantineAlert = (\r\n \r\n

Note: This incident is marked as being in quarantine in IRWIN.

\r\n \r\n )\r\n }\r\n\r\n if (isCertified) {\r\n incidentStatusAlert = (\r\n

This incident is Certified and must be decertified before editing.

\r\n )\r\n }\r\n\r\n else if (this.state.isComplete && (!isCertified)) \r\n {\r\n let certifyText = \"This incident is complete and ready to be certified.\";\r\n let originWarning = \"\";\r\n\r\n let disallowfederalTriangle = this.state.isFederal && this.state.isPerimeterTriangle && (this.state.incidentAcres >= 10);\r\n if (disallowfederalTriangle) \r\n {\r\n certifyText = \"A valid perimeter is required for Federal fires > 10 acres\";\r\n }\r\n\r\n if (!hasAcreageRows && !isFalseAlarm) \r\n {\r\n certifyText = \"Landowner acres needs to be provided before incident can be certified\";\r\n }\r\n\r\n if (!this.state.originWithinPerimeter) \r\n {\r\n originWarning =

Warning: Origin is outside perimeter

;\r\n }\r\n\r\n //TODO: Resolve const canWriteToCertifiedField = (this.props.selectedIncident.adsStatus !== null && this.props.selectedIncident.adsStatus[originFields.certifiedField].canWrite);\r\n const canWriteToCertifiedField = true;\r\n incidentStatusAlert = (\r\n \r\n

{certifyText}

\r\n {originWarning}\r\n \r\n )\r\n }\r\n\r\n let editPerimeterToolbar;\r\n if (this.state.mode === \"edit\") {\r\n const originalPerimeterGeometry = (this.props.selectedIncident.perimeter) ? this.props.selectedIncident.perimeter.geometry : null;\r\n editPerimeterToolbar = (\r\n \r\n )\r\n }\r\n\r\n const incident = (this.state.mode === \"edit\") ? this.state.editableIncident : this.props.incident;\r\n const relationships = this.props.selectedIncident.relationships;\r\n const incidentName = incident.attributes[originFields.name];\r\n\r\n const canInvalidate = (!this.state.isCertified);\r\n\r\n return (\r\n\r\n
\r\n \r\n
\r\n {quarantineAlert}\r\n {incidentStatusAlert}\r\n {fireCodeAlert}\r\n {\r\n this.propUpdated(fieldName, newVal)\r\n }, 1)}\r\n onCertifyIncident={this.certifyIncident.bind(this)}\r\n onDecertifyIncident={this.decertifyIncident.bind(this)}\r\n onRequestFireCode={this.requestFireCode.bind(this)}\r\n />\r\n {this.getDetailsIncidentPanels(configFields, perimeterConfigFields)}\r\n
\r\n {editPerimeterToolbar}\r\n \r\n \r\n ]}\r\n modal={true}\r\n open={this.state.warnForMissingRelationships}\r\n contentStyle={styles.errorDialogContent}\r\n titleStyle={styles.errorDialogTitle}>\r\n This incident is marked as Quarantined, but related Parent/Child Incidents were not found, and conflict resolution cannot proceed.

\r\n This may indicate that this Incident should be marked as invalid.

\r\n \r\n \r\n ]}\r\n modal={false}\r\n open={this.state.errorMessage !== \"\"}\r\n contentStyle={styles.errorDialogContent}\r\n titleStyle={styles.errorDialogTitle}\r\n onRequestClose={this.handleErrorDialogClose} >\r\n {this.state.errorMessage}\r\n \r\n ,\r\n \r\n ]}\r\n modal={true}\r\n open={this.state.showUSFSFireCodeDialog}\r\n contentStyle={styles.errorDialogContent}\r\n titleStyle={styles.errorDialogTitle}>\r\n This incident has USFS as its Jurisdictional Agency, are you sure you want to request a firecode?

\r\n Please enter a ABCD misc code if applicable.\r\n \r\n\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n appConfig: state.config,\r\n selectedIncident: state.incident,\r\n auth: state.auth,\r\n manualLat: state.manualLat,\r\n manualLong: state.manualLong,\r\n isPerimeterTriangle: state.isPerimeterTriangle,\r\n incidentAcres: state.incidentAcres,\r\n fireCodeRequested: state.fireCodeRequested,\r\n originWithinPerimeter: state.originWithinPerimeter\r\n})\r\n\r\nconst mapDispatchToProps = function (dispatch) {\r\n return bindActionCreators({\r\n ...incidentOperations\r\n }, dispatch);\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(IncidentDetailsContainer)\r\n","import React, { Component } from 'react';\r\nimport { bindActionCreators } from 'redux';\r\nimport { connect } from 'react-redux';\r\nimport { history } from '../../index';\r\n\r\nimport * as projection from \"@arcgis/core/geometry/projection\"\r\nimport Point from \"@arcgis/core/geometry/Point\";\r\nimport SpatialReference from \"@arcgis/core/geometry/SpatialReference\";\r\n\r\nimport CircularProgress from 'material-ui/CircularProgress';\r\n\r\nimport theme from '../../muiTheme';\r\nimport { incidentOperations } from '../../redux/incident';\r\nimport IncidentDetailsContainer from './IncidentDetailsContainer';\r\nimport { getMapExtent, setPerimeterGraphic } from '../esri/mapHub';\r\nimport originFields from '../../defaults/PointOfOriginFields.json';\r\n\r\nimport { setMapViewTarget, clearVisiblePerimeters, clearOriginSelectionGraphics, clearModifiedPerimeter, clearPerimeterGraphics, setOriginSelectionGraphic, refreshOriginLayer } from '../esri/mapHub';\r\n\r\nclass Main extends Component {\r\n\r\n _isMounted = false;\r\n\r\n constructor(props)\r\n {\r\n super(props);\r\n this.state =\r\n {\r\n isLoaded: false,\r\n missingConflictRelationships: (props.history.location !== null && props.history.location.state !== undefined && props.history.location.state.conflictRelationshipsMissing === \"true\"),\r\n activeIncidentId: null,\r\n acresByOwnership: []\r\n };\r\n }\r\n\r\n componentWillUnmount()\r\n {\r\n this._isMounted = false;\r\n }\r\n\r\n componentDidMount()\r\n {\r\n this._isMounted = true;\r\n const hasIncidentId = (this.props.match.params.incidentId !== null && this.props.match.params.incidentId !== undefined);\r\n\r\n const routeIncidentId = this.props.match.params.incidentId || null;\r\n\r\n if(hasIncidentId && (routeIncidentId !== null && this.props.map.loaded && this._isMounted))\r\n {\r\n getMapExtent().then(\r\n result =>\r\n {\r\n this.props.setPreIncidentExtent(result);\r\n });\r\n this.fetchIncident(routeIncidentId);\r\n this.setState({\r\n isLoaded: true,\r\n activeIncidentId: routeIncidentId\r\n });\r\n }\r\n\r\n }\r\n\r\n //This entire thing needs to be re-written completely.\r\n componentWillReceiveProps(nextProps)\r\n {\r\n if (!this.props.map.loaded) {\r\n return;\r\n }\r\n const hasIncidentId = (nextProps.match.params.incidentId !== null && nextProps.match.params.incidentId !== undefined);\r\n\r\n //If we have a irwin Incident, load it up if it's not the same as before.\r\n if (hasIncidentId)\r\n {\r\n const newIncidentId = nextProps.match.params.incidentId;\r\n if (newIncidentId !== this.state.activeIncidentId)\r\n {\r\n this.setState({\r\n activeIncidentId: newIncidentId\r\n });\r\n\r\n getMapExtent().then(\r\n result =>\r\n {\r\n this.props.setPreIncidentExtent(result);\r\n });\r\n\r\n this.fetchIncident(newIncidentId);\r\n\r\n let wasMissingConflictRelationships = (nextProps.history.location !== null\r\n && nextProps.history.location.state !== undefined\r\n && nextProps.history.location.state.conflictRelationshipsMissing === \"true\");\r\n\r\n this.setState({missingConflictRelationships: wasMissingConflictRelationships});\r\n this.setState({ isLoaded: true });\r\n }\r\n }\r\n }\r\n\r\n refetchIncidentByForID(forId)\r\n {\r\n this.fetchIncident(forId);\r\n }\r\n\r\n refetchIncident()\r\n {\r\n this.fetchIncident(this.props.selectedIncident.incident.attributes[originFields.forId]);\r\n }\r\n\r\n fetchIncident(uniqueFireId) {\r\n\r\n if(uniqueFireId)\r\n {\r\n \r\n window.api.loadFullIncidentFromApi(uniqueFireId).then(\r\n result => {\r\n\r\n if(result)\r\n { \r\n const nad83Geometry = new Point({\r\n x: result.attributes.x,\r\n y: result.attributes.y,\r\n spatialReference: new SpatialReference(4269)\r\n });\r\n\r\n this.props.setIncident(result);\r\n\r\n /*if (result.acresByOwnership)\r\n {\r\n this.setState({\r\n acresByOwnership: result.acresByOwnership\r\n });\r\n } */\r\n\r\n if (result.perimeter && result.perimeter.Feature)\r\n {\r\n this.props.setPerimeter(result.perimeter.Feature);\r\n this.props.setPerimeterFields(result.perimeter.Fields);\r\n\r\n /*if (result.acresByOwnership === null || result.acresByOwnership[0] === undefined)\r\n {\r\n //Derive Acres by Jurisdiction\r\n window.api.deriveAcresByJurisdiction(result.perimeter.Feature.geometry).then(derivedJurisAcresResult =>\r\n {\r\n this.setState({\r\n acresByOwnership: derivedJurisAcresResult\r\n });\r\n });\r\n }\r\n */\r\n setPerimeterGraphic(result.perimeter.Feature);\r\n\r\n setMapViewTarget({\r\n target: result.perimeter.Feature.geometry\r\n });\r\n refreshOriginLayer();\r\n }\r\n else\r\n {\r\n this.props.setPerimeter(null);\r\n this.props.setPerimeterFields(null);\r\n\r\n projection.load().then(function() \r\n {\r\n const originGeometry = projection.project(nad83Geometry, new SpatialReference({wkid: 102100 }));\r\n\r\n setMapViewTarget({\r\n target: originGeometry.toJSON(),\r\n zoom: 14\r\n });\r\n });\r\n }\r\n \r\n projection.load().then(function() \r\n {\r\n const selectionGeometry = projection.project(nad83Geometry, new SpatialReference({wkid: 102100 }));\r\n\r\n setOriginSelectionGraphic(selectionGeometry).then( () => {\r\n\r\n });\r\n });\r\n }\r\n else\r\n {\r\n this.closeDetails();\r\n }\r\n },\r\n error => {console.error(error);}\r\n )\r\n }\r\n\r\n }\r\n\r\n closeDetails = () => {\r\n this.props.clearIncident();\r\n this.props.clearRelationships();\r\n this.props.clearADSStatus();\r\n\r\n clearVisiblePerimeters();\r\n clearPerimeterGraphics();\r\n clearModifiedPerimeter();\r\n clearOriginSelectionGraphics({\r\n clearExisting: false,\r\n graphics: [this.props.selectedIncident.incident]\r\n }).then( () =>\r\n {\r\n if (this.props.selectedIncident.preIncidentExtent !== null)\r\n {\r\n setMapViewTarget({\r\n target: this.props.selectedIncident.preIncidentExtent\r\n });\r\n this.props.setPreIncidentExtent(null);\r\n }\r\n });\r\n\r\n history.push('/incidents');\r\n }\r\n\r\n openMergeDialog = (incident) => {\r\n if (this.props.match.params.incidentId !== undefined)\r\n {\r\n history.push('/incidents/'+this.props.match.params.incidentId+'/conflict');\r\n }\r\n }\r\n\r\n render() {\r\n let content = (\r\n \r\n );\r\n\r\n if(this.props.selectedIncident.incident)\r\n {\r\n content = (\r\n \r\n );\r\n }\r\n return (\r\n
\r\n {content}\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n map: state.map,\r\n selectedIncident: state.incident,\r\n relationships: state.relationships,\r\n missingConflictRelationships: state.missingConflictRelationships\r\n})\r\n\r\nconst mapDispatchToProps = function (dispatch) {\r\n return bindActionCreators({\r\n ...incidentOperations\r\n }, dispatch);\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Main)\r\n","import React, { Component } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport NewIncidentDialog from './NewIncidentDialog';\r\nimport { history } from '../../index';\r\n\r\nclass Main extends Component {\r\n\r\n render() {\r\n\r\n return (\r\n \r\n {\r\n history.push('/incidents');\r\n }}/>\r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n appConfig: state.config,\r\n map: state.map\r\n})\r\n\r\n/*const mapDispatchToProps = function (dispatch) {\r\n return bindActionCreators({\r\n ...conflictOperations\r\n }, dispatch);\r\n}*/\r\n\r\nexport default connect(mapStateToProps)(Main)\r\n","import React, { Component } from 'react';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport {Pie} from 'react-chartjs-2';\r\nimport Table from '@material-ui/core/Table';\r\nimport TableBody from '@material-ui/core/TableBody';\r\nimport TableHead from '@material-ui/core/TableHead';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport TableRow from '@material-ui/core/TableRow';\r\nimport './AttributeSummary.css';\r\n\r\nclass AttributeSummary extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n chartData: this.props.chartData\r\n };\r\n }\r\n\r\n addSum = (total, num) => {\r\n return total + num;\r\n }\r\n\r\n numberWithCommas = (x) => {\r\n return x.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\r\n}\r\n\r\n render()\r\n {\r\n var tableRows = [];\r\n let data = this.state.chartData;\r\n let totalCount = data.datasets[0].data.reduce(this.addSum);\r\n let totalAcresCount = data.datasets[0].acres.reduce(this.addSum);\r\n\r\n for (var i = 0; i < data.labels.length; i++)\r\n {\r\n tableRows.push(\r\n \r\n \r\n {data.labels[i]}\r\n \r\n {data.datasets[0].data[i]}\r\n {parseFloat((data.datasets[0].data[i] / totalCount * 100)).toFixed(2) + \" %\"}\r\n {this.numberWithCommas(parseFloat((data.datasets[0].acres[i])).toFixed(2))}\r\n \r\n )\r\n }\r\n\r\n tableRows.push(\r\n \r\n Total\r\n {totalCount}\r\n \r\n {this.numberWithCommas(parseFloat(totalAcresCount).toFixed(2))}\r\n \r\n );\r\n\r\n return (\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n {this.props.label}\r\n Number of Incidents\r\n Percentage\r\n Acres\r\n \r\n \r\n \r\n {tableRows}\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 AttributeSummary\r\n","import React, { Component, Fragment } from 'react';\r\nimport AttributeSummary from './AttributeSummary';\r\nimport XLSX from 'xlsx';\r\nimport { getNameForCategory } from '../../utils/incidentHelper';\r\nimport originFields from '../../defaults/PointOfOriginFields.json'\r\nimport fireCauseConfig from '../../defaults/fireCauseConfig.json'\r\nimport { randomColor } from 'randomcolor';\r\nimport './SummariesList.css';\r\n\r\nclass SummariesList extends Component {\r\n\r\n addSum = (total, num) => {\r\n return total + num;\r\n }\r\n\r\n getAcresFromIncident = (incident) => \r\n {\r\n return Math.max(incident[originFields.calculatedAcres], incident[originFields.incidentSize]);\r\n }\r\n\r\n formatCsvData = (data, summary) => {\r\n let firstRow = [summary, 'Number of Incidents', 'Percentage'];\r\n let dataRows = [firstRow];\r\n let totalCount = data.datasets[0].data.reduce(this.addSum);\r\n\r\n for (let i = 0; i < data.labels.length; i++) {\r\n let newRow = [data.labels[i], data.datasets[0].data[i], parseFloat((data.datasets[0].data[i] / totalCount * 100)).toFixed(2) + \" %\"];\r\n dataRows.push(newRow);\r\n }\r\n return dataRows;\r\n }\r\n\r\n downloadCsv = () => {\r\n const workbook = XLSX.utils.book_new();\r\n\r\n this.props.summaries.forEach(\r\n summary => {\r\n let summaryData = this.formatCsvData(this.generateSummaryData(summary), summary);\r\n let summarySheet = XLSX.utils.aoa_to_sheet(summaryData);\r\n XLSX.utils.book_append_sheet(workbook, summarySheet, summary);\r\n });\r\n\r\n XLSX.writeFile(workbook, \"summaries.xlsx\");\r\n }\r\n\r\n getColorsForCounts = (counts) => {\r\n return randomColor({\r\n count: counts.length\r\n });\r\n }\r\n\r\n getFireCauseGeneralData = (fireCauseGeneralIds) => {\r\n let fireCauseGenerals = [];\r\n \r\n fireCauseGeneralIds.forEach( fireCauseGeneralId => {\r\n const pushValue = (fireCauseGeneralId !== null) ? fireCauseConfig.GeneralFireCauses.find(cause => cause.CauseGeneralID === fireCauseGeneralId).CauseGeneral : \"Not Provided\";\r\n fireCauseGenerals.push(pushValue);\r\n });\r\n\r\n return fireCauseGenerals;\r\n }\r\n\r\n\r\n getFireCauseData = (fireCauseIds) => {\r\n let fireCauses = [];\r\n\r\n fireCauseIds.forEach(fireCauseId => {\r\n const pushValue = (fireCauseId !== null) ? fireCauseConfig.FireCauses.find(cause => cause.FireCauseID === fireCauseId).FireCauseName : \"Not Provided\";\r\n fireCauses.push(pushValue);\r\n });\r\n\r\n return fireCauses;\r\n }\r\n\r\n getDataForPieChart = (labels, counts, acresData) => {\r\n var notProvided = \"Not Provided\";\r\n\r\n let modifiedLabels = labels.map(label => {\r\n return (label === null || label === \"\" || label === \"NULL\" || label === undefined) ? notProvided : label;\r\n });\r\n\r\n //Sort everything\r\n var combinedList = [];\r\n for (var j = 0; j < modifiedLabels.length; j++)\r\n combinedList.push({ 'label': modifiedLabels[j], 'count': counts[j], 'acresData': acresData[j]});\r\n\r\n //2) sort:\r\n combinedList.sort(function (a, b) {\r\n return ((a.count > b.count) ? -1 : ((a.count === b.count) ? 0 : 1));\r\n });\r\n\r\n //3) separate them back out\r\n for (var k = 0; k < combinedList.length; k++) {\r\n modifiedLabels[k] = combinedList[k].label;\r\n counts[k] = combinedList[k].count;\r\n acresData[k] = combinedList[k].acresData;\r\n }\r\n\r\n return {\r\n labels: modifiedLabels,\r\n datasets: [\r\n {\r\n data: counts,\r\n acres: acresData,\r\n backgroundColor: this.getColorsForCounts(counts)\r\n }]\r\n };\r\n }\r\n\r\n //TODO: Fix hardcodes\r\n generateSummaryData = (summaryType) => {\r\n let chartData;\r\n\r\n switch (summaryType) {\r\n case \"County\":\r\n debugger;\r\n const distinctCounties = [...new Set(this.props.incidents.map(x => x[originFields.county]))];\r\n let countyCounts = [];\r\n let countyAcresData = [];\r\n\r\n for (let i = 0; i < distinctCounties.length; i++) {\r\n countyCounts.push(this.props.incidents.filter(x => x[originFields.county] === distinctCounties[i]).length);\r\n const acres = this.props.incidents.filter(x => x[originFields.county] === distinctCounties[i]).map(x => this.getAcresFromIncident(x)).reduce(this.addSum);\r\n countyAcresData.push(acres);\r\n }\r\n\r\n chartData = this.getDataForPieChart(distinctCounties, countyCounts, countyAcresData);\r\n break;\r\n\r\n case \"Jurisdictional Unit\":\r\n const distinctJurisdictionalUnits = [...new Set(this.props.incidents.map(x => x[originFields.pooJurisdictionalUnit]))];\r\n chartData = this.getDataForUnits(distinctJurisdictionalUnits, originFields.pooJurisdictionalUnit);\r\n break;\r\n\r\n case \"Protecting Unit\":\r\n let distinctProtectingUnits = [...new Set(this.props.incidents.map(x => x[originFields.pooProtectingUnit]))];\r\n chartData = this.getDataForUnits(distinctProtectingUnits, originFields.pooProtectingUnit);\r\n break;\r\n\r\n case \"Protecting Agency\":\r\n const distinctProtectingAgencies = [...new Set(this.props.incidents.map(x => x[originFields.pooProtectingAgency]))];\r\n chartData = this.getDataForUnits(distinctProtectingAgencies, originFields.pooProtectingAgency);\r\n\r\n break;\r\n\r\n case \"Landowner Category\":\r\n const distinctLandownerCategories = [...new Set(this.props.incidents.map(x => x[originFields.landownerCategory]))];\r\n let landownerCategories = [];\r\n let landownerCategoriesAcresData = [];\r\n for (let i = 0; i < distinctLandownerCategories.length; i++) {\r\n landownerCategories.push(this.props.incidents.filter(x => x[originFields.landownerCategory] === distinctLandownerCategories[i]).length);\r\n const acres = this.props.incidents.filter(x => x[originFields.landownerCategory] === distinctLandownerCategories[i]).map(x => this.getAcresFromIncident(x)).reduce(this.addSum);\r\n landownerCategoriesAcresData.push(acres);\r\n }\r\n\r\n chartData = this.getDataForPieChart(distinctLandownerCategories, landownerCategories, landownerCategoriesAcresData);\r\n break;\r\n\r\n case \"Fire Cause\":\r\n const distinctFireCauseIds = [...new Set(this.props.incidents.map(x => x[originFields.fireCauseId]))];\r\n const distinctFireCauses = this.getFireCauseData(distinctFireCauseIds);\r\n let fireCauses = [];\r\n let fireCausesAcresData = [];\r\n for (let i = 0; i < distinctFireCauseIds.length; i++) {\r\n fireCauses.push(this.props.incidents.filter(x => x[originFields.fireCauseId] === distinctFireCauseIds[i]).length);\r\n const acres = this.props.incidents.filter(x => x[originFields.fireCauseId] === distinctFireCauseIds[i]).map(x => this.getAcresFromIncident(x)).reduce(this.addSum);\r\n fireCausesAcresData.push(acres);\r\n }\r\n\r\n chartData = this.getDataForPieChart(distinctFireCauses, fireCauses, fireCausesAcresData);\r\n break;\r\n\r\n case \"Fire Cause General\":\r\n const distinctFireCauseGeneralIds = [...new Set(this.props.incidents.map(x => x[originFields.fireCauseGeneralId]))];\r\n const distinctFireCauseGenerals = this.getFireCauseGeneralData(distinctFireCauseGeneralIds);\r\n let fireCauseGenerals = [];\r\n let fireCauseGeneralsAcresData = [];\r\n for (let i = 0; i < distinctFireCauseGeneralIds.length; i++) {\r\n fireCauseGenerals.push(this.props.incidents.filter(x => x[originFields.fireCauseGeneralId] === distinctFireCauseGeneralIds[i]).length);\r\n const acres = this.props.incidents.filter(x => x[originFields.fireCauseGeneralId] === distinctFireCauseGeneralIds[i]).map(x => this.getAcresFromIncident(x)).reduce(this.addSum);\r\n fireCauseGeneralsAcresData.push(acres);\r\n }\r\n\r\n chartData = this.getDataForPieChart(distinctFireCauseGenerals, fireCauseGenerals, fireCauseGeneralsAcresData);\r\n break;\r\n\r\n case \"Size Class\":\r\n const sizeClassLabels = [\"Class A\", \"Class B\", \"Class C\", \"Class D\", \"Class E\", \"Class F\", \"Class G\"];\r\n const sizeClassData = this.getSizeClassesForSummaries();\r\n const sizeClassAcresData = this.getSizeClassAcreage(); \r\n\r\n chartData = this.getDataForPieChart(sizeClassLabels, sizeClassData, sizeClassAcresData);\r\n\r\n break;\r\n\r\n case \"Incident Category\":\r\n const distinctCategories = [...new Set(this.props.incidents.map(x => x[\"IncidentTypeCategory\"]))];\r\n const distinctCategoriesByName = [];\r\n for (let i = 0; i < distinctCategories.length; i++) {\r\n distinctCategoriesByName.push(getNameForCategory(distinctCategories[i]));\r\n }\r\n\r\n let categoryCounts = [];\r\n let categoryCountsAcresData = [];\r\n for (let i = 0; i < distinctCategories.length; i++) {\r\n categoryCounts.push(this.props.incidents.filter(x => x[\"IncidentTypeCategory\"] === distinctCategories[i]).length);\r\n const acres = this.props.incidents.filter(x => x[\"IncidentTypeCategory\"] === distinctCategories[i]).map(x => this.getAcresFromIncident(x)).reduce(this.addSum);\r\n categoryCountsAcresData.push(acres);\r\n }\r\n chartData = this.getDataForPieChart(distinctCategoriesByName, categoryCounts, categoryCountsAcresData);\r\n break;\r\n\r\n case \"State\":\r\n const distinctStates = [...new Set(this.props.incidents.map(x => x[\"POOState\"]))];\r\n let stateCounts = [];\r\n let stateCountsAcresData = [];\r\n for (let i = 0; i < distinctStates.length; i++) {\r\n stateCounts.push(this.props.incidents.filter(x => x[\"POOState\"] === distinctStates[i]).length);\r\n const acres = this.props.incidents.filter(x => x[\"POOState\"] === distinctStates[i]).map(x => this.getAcresFromIncident(x)).reduce(this.addSum);\r\n stateCountsAcresData.push(acres);\r\n }\r\n chartData = this.getDataForPieChart(distinctStates, stateCounts, stateCountsAcresData);\r\n break;\r\n\r\n\r\n case \"Jurisdictional Agency\":\r\n const distinctJurisdictionalAgencies = [...new Set(this.props.incidents.map(x => x[\"POOJurisdictionalAgency\"]))];\r\n let jurisdictionalAgencies = [];\r\n let jurisdictionalAgenciesAcresData = [];\r\n for (let i = 0; i < distinctJurisdictionalAgencies.length; i++) {\r\n jurisdictionalAgencies.push(this.props.incidents.filter(x => x[\"POOJurisdictionalAgency\"] === distinctJurisdictionalAgencies[i]).length);\r\n const acres = this.props.incidents.filter(x => x[\"POOJurisdictionalAgency\"] === distinctJurisdictionalAgencies[i]).map(x => this.getAcresFromIncident(x)).reduce(this.addSum);\r\n jurisdictionalAgenciesAcresData.push(acres);\r\n }\r\n\r\n chartData = this.getDataForPieChart(distinctJurisdictionalAgencies, jurisdictionalAgencies, jurisdictionalAgenciesAcresData);\r\n break;\r\n\r\n default:\r\n console.log(\"generateSummaryData: Nothing matched for \" + summaryType);\r\n }\r\n\r\n return chartData;\r\n }\r\n\r\n getDataForUnits = (distinctValues, attributeName) => \r\n {\r\n debugger;\r\n let valuesArray = [];\r\n let acresData = [];\r\n const nonEmptyValues = distinctValues.filter(x => x !== \"\" && x !== null && x !== undefined).map(x => x.toUpperCase().trim());\r\n const emptyValues = distinctValues.filter(x => x === \"\" || x === null || x === undefined);\r\n\r\n for (let i = 0; i < nonEmptyValues.length; i++) \r\n {\r\n valuesArray.push(this.props.incidents.filter(x => x[attributeName] !== null && x[attributeName].toUpperCase().trim().localeCompare(nonEmptyValues[i]) === 0).length);\r\n try \r\n {\r\n const acres = this.props.incidents.filter(x => x[attributeName] !== null && x[attributeName].toUpperCase().trim().localeCompare(nonEmptyValues[i]) ===0).map(x => this.getAcresFromIncident(x)).reduce(this.addSum);\r\n acresData.push(acres);\r\n } \r\n catch (e) \r\n {\r\n acresData.push(0);\r\n } \r\n }\r\n\r\n if (emptyValues.length > 0) \r\n {\r\n const incidentsWithMissingStuff = this.props.incidents.filter(x => x[attributeName] === \"\" || x[attributeName] === null || x[attributeName] === undefined);\r\n debugger;\r\n if (incidentsWithMissingStuff.length > 0) \r\n {\r\n valuesArray.push(incidentsWithMissingStuff.length);\r\n const acres = incidentsWithMissingStuff.map(x => this.getAcresFromIncident(x)).reduce(this.addSum);\r\n acresData.push(acres);\r\n\r\n nonEmptyValues.push(\"NULL\");\r\n }\r\n }\r\n\r\n return this.getDataForPieChart(nonEmptyValues, valuesArray, acresData);\r\n }\r\n\r\n generateSelectedSummaries = () => {\r\n let shouldRender = (this.props.summaries && this.props.summaries.length > 0 &&\r\n this.props.incidents && this.props.incidents.length > 0);\r\n\r\n if (!shouldRender) {\r\n return
;\r\n }\r\n\r\n return this.props.summaries.forEach(summaryType => {\r\n let chartData = this.generateSummaryData(summaryType);\r\n (\r\n
\r\n \r\n
)\r\n }\r\n )\r\n }\r\n\r\n getSizeClassesForSummaries = () => {\r\n let classA = this.props.incidents.filter(x => this.getAcresFromIncident(x) <= 0.25).length;\r\n let classB = this.props.incidents.filter(x => (0.25 < this.getAcresFromIncident(x)) && (this.getAcresFromIncident(x) < 10)).length;\r\n let classC = this.props.incidents.filter(x => (10 <= this.getAcresFromIncident(x)) && (this.getAcresFromIncident(x) < 100)).length;\r\n let classD = this.props.incidents.filter(x => (100 <= this.getAcresFromIncident(x)) && (this.getAcresFromIncident(x) < 300)).length;\r\n let classE = this.props.incidents.filter(x => (300 <= this.getAcresFromIncident(x)) && (this.getAcresFromIncident(x) < 1000)).length;\r\n let classF = this.props.incidents.filter(x => (1000 <= this.getAcresFromIncident(x)) && (this.getAcresFromIncident(x) < 5000)).length;\r\n let classG = this.props.incidents.filter(x => this.getAcresFromIncident(x) > 5000).length;\r\n\r\n return [classA, classB, classC, classD, classE, classF, classG];\r\n }\r\n\r\n //TODO: Junk, refactor\r\n getSizeClassAcreage = () => {\r\n //let acresClassA = this.props.incidents.filter(x => this.getAcresFromIncident(x) <= 0.25).map(x => this.getAcresFromIncident(x)).reduce(this.addSum);\r\n const classAAcres = this.props.incidents.filter(x => this.getAcresFromIncident(x) <= 0.25);\r\n const acresClassA = (classAAcres && classAAcres.length > 0) ? classAAcres.map(x => this.getAcresFromIncident(x)).reduce(this.addSum) : 0;\r\n \r\n //let acresClassB = this.props.incidents.filter(x => (0.25 < this.getAcresFromIncident(x)) && (this.getAcresFromIncident(x) < 10)).map(x => this.getAcresFromIncident(x)).reduce(this.addSum);\r\n const classBAcres = this.props.incidents.filter(x => (0.25 < this.getAcresFromIncident(x)) && (this.getAcresFromIncident(x) < 10));\r\n const acresClassB = (classBAcres && classBAcres.length > 0) ? classBAcres.map(x => this.getAcresFromIncident(x)).reduce(this.addSum) : 0;\r\n \r\n //let acresClassC = this.props.incidents.filter(x => (10 <= this.getAcresFromIncident(x)) && (this.getAcresFromIncident(x) < 100)).map(x => this.getAcresFromIncident(x)).reduce(this.addSum);\r\n const classCAcres = this.props.incidents.filter(x => (10 <= this.getAcresFromIncident(x)) && (this.getAcresFromIncident(x) < 100));\r\n const acresClassC = (classCAcres && classCAcres.length > 0) ? classCAcres.map(x => this.getAcresFromIncident(x)).reduce(this.addSum) : 0;\r\n \r\n //let acresClassD = this.props.incidents.filter(x => (100 <= this.getAcresFromIncident(x)) && (this.getAcresFromIncident(x) < 300)).map(x => this.getAcresFromIncident(x)).reduce(this.addSum);\r\n const classDAcres = this.props.incidents.filter(x => (100 <= this.getAcresFromIncident(x)) && (this.getAcresFromIncident(x) < 300));\r\n const acresClassD = (classDAcres && classDAcres.length > 0) ? classDAcres.map(x => this.getAcresFromIncident(x)).reduce(this.addSum) : 0;\r\n \r\n //let acresClassE = this.props.incidents.filter(x => (300 <= this.getAcresFromIncident(x)) && (this.getAcresFromIncident(x) < 1000)).map(x => this.getAcresFromIncident(x)).reduce(this.addSum);\r\n const classEAcres = this.props.incidents.filter(x => (300 <= this.getAcresFromIncident(x)) && (this.getAcresFromIncident(x) < 1000));\r\n const acresClassE = (classEAcres && classEAcres.length > 0) ? classEAcres.map(x => this.getAcresFromIncident(x)).reduce(this.addSum) : 0;\r\n\r\n //let acresClassF = this.props.incidents.filter(x => (1000 <= this.getAcresFromIncident(x)) && (this.getAcresFromIncident(x) < 5000)).map(x => this.getAcresFromIncident(x)).reduce(this.addSum);\r\n const classFAcres = this.props.incidents.filter(x => (1000 <= this.getAcresFromIncident(x)) && (this.getAcresFromIncident(x) < 5000));\r\n const acresClassF = (classFAcres && classFAcres.length > 0) ? classFAcres.map(x => this.getAcresFromIncident(x)).reduce(this.addSum) : 0;\r\n \r\n //let acresClassG = this.props.incidents.filter(x => this.getAcresFromIncident(x) > 5000).map(x => this.getAcresFromIncident(x)).reduce(this.addSum);\r\n const classGAcres = this.props.incidents.filter(x => this.getAcresFromIncident(x) > 5000);\r\n const acresClassG = (classGAcres && classGAcres.length > 0) ? classGAcres.map(x => this.getAcresFromIncident(x)).reduce(this.addSum) : 0;\r\n\r\n return [acresClassA, acresClassB, acresClassC, acresClassD, acresClassE, acresClassF, acresClassG];\r\n }\r\n\r\n render() {\r\n let shouldRender = (this.props.summaries.length > 0 &&\r\n this.props.incidents.length > 0);\r\n\r\n if (!shouldRender) {\r\n return
;\r\n }\r\n else {\r\n const summaryData = this.props.summaries.map(summaryType => {\r\n let chartData = this.generateSummaryData(summaryType);\r\n return
\r\n \r\n
\r\n }\r\n );\r\n return (\r\n \r\n {summaryData}\r\n
\r\n

Filter: {this.props.definitionExpression}

\r\n
\r\n
\r\n \"Screenshot\"\r\n
\r\n
\r\n )\r\n }\r\n }\r\n}\r\nexport default SummariesList\r\n","import React, { Component } from 'react';\r\nimport { bindActionCreators } from 'redux';\r\nimport { connect } from 'react-redux';\r\nimport * as esriLoader from 'esri-loader';\r\nimport Dialog from 'material-ui/Dialog';\r\nimport FlatButton from 'material-ui/FlatButton';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport AppBar from '@material-ui/core/AppBar';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport List from '@material-ui/core/List';\r\nimport ListItem from '@material-ui/core/ListItem';\r\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\r\nimport ListItemText from '@material-ui/core/ListItemText';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport CircularProgress from 'material-ui/CircularProgress';\r\nimport SummariesList from './SummariesList';\r\nimport theme from '../../muiTheme';\r\nimport './ReportingDialog.css';\r\nimport { filterOperations } from '../../redux/filter';\r\nimport { history } from '../../index';\r\nimport { getMapExtent } from '../esri/mapHub';\r\n\r\nconst styles = makeStyles(theme => ({\r\n root: {\r\n flexGrow: 1,\r\n },\r\n menuButton: {\r\n marginRight: theme.spacing(2),\r\n },\r\n heading: {\r\n fontSize: theme.typography.pxToRem(15),\r\n fontWeight: theme.typography.fontWeightRegular,\r\n }\r\n}));\r\n\r\nclass ReportingDialog extends Component {\r\n\r\n constructor (props) {\r\n super(props);\r\n\r\n this.child = React.createRef();\r\n\r\n this.state = {\r\n selectedSummaries: [],\r\n incidents: [],\r\n dataLoaded: false,\r\n isLoading: false,\r\n userMenuOpen: false,\r\n anchorEl: null\r\n }\r\n\r\n this.menuIconRefElement = null;\r\n\r\n this.setMenuIconInputRef = element =>\r\n {\r\n this.menuIconRefElement = element;\r\n };\r\n }\r\n \r\n componentWillReceiveProps(nextProps)\r\n {\r\n esriLoader.loadModules(['esri/geometry/support/webMercatorUtils'])\r\n .then( ([WebMercatorUtils]) =>\r\n {\r\n if (!this.state.isLoading && !this.state.dataLoaded) \r\n {\r\n this.setState({\r\n isLoading: true\r\n });\r\n\r\n var geographicExtent = WebMercatorUtils.webMercatorToGeographic(nextProps.extent);\r\n window.api.getIncidentDataForSummaries(geographicExtent, nextProps.definitionExpression).then((incidents) => \r\n {\r\n console.log(\"ReportingDialog found \" + incidents.length); \r\n this.setState({\r\n incidents: incidents,\r\n dataLoaded: true,\r\n isLoading: false\r\n });\r\n }); \r\n }\r\n }); \r\n }\r\n\r\n handleCheckboxChange = (name) => event =>\r\n {\r\n let summaries = this.state.selectedSummaries;\r\n\r\n if (event.target.checked)\r\n {\r\n if (this.state.selectedSummaries.includes(event.target.value))\r\n return;\r\n\r\n summaries.push(event.target.value);\r\n this.setState({\r\n selectedSummaries: summaries\r\n });\r\n }\r\n else\r\n {\r\n if (!this.state.selectedSummaries.includes(event.target.value))\r\n return;\r\n\r\n let newSummaries = summaries.filter(summary => summary !== event.target.value);\r\n this.setState({\r\n selectedSummaries: newSummaries\r\n });\r\n }\r\n };\r\n\r\ngenerateFilterList = () => {\r\n\r\nlet shouldRender = (this.state.selectedSummaries.length > 0 && (this.state.incidents.length > 0) && this.state.dataLoaded === true);\r\n\r\n//TODO: Rework this\r\nlet filterNodes = [];\r\nfilterNodes.push(

Active Filters

);\r\n/*\r\nvisible: true,\r\nloading: true,\r\nuseExtent: true,\r\ngeometry: null,\r\ndiscoveryDateMax: null,\r\ndiscoveryDateMin: new Date(new Date().getFullYear(), 0, 1, 0, 0, 0, 0),\r\noutDateMax: null,\r\noutDateMin: null,\r\nmodifiedDateMax: null,\r\nmodifiedDateMin: null,\r\nfireAcresMax: null,\r\nfireAcresMin: null,\r\noriginWhereClause: null,\r\nstructuresDestroyed: null,\r\ninjuries: null,\r\nfatalities: null,\r\ncertified: null,\r\nreportSearchTerms: null,\r\nlandownerCategories: [],\r\nincidentJurisdictionalAgency: null,\r\njurisdictionalUnit: null,\r\njurisdictionalUnitParentUnit: null,\r\nuniqueFireIds: [],\r\nactiveDrawTool: null,\r\nmodifiedBySystem: null\r\n*/\r\n if (this.props.filter.gacc !== null)\r\n {\r\n filterNodes.push(
GACC: {this.props.filter.gacc}
);\r\n }\r\n\r\n if (this.props.filter.fireCauses !== null && this.props.filter.fireCauses.length > 0)\r\n {\r\n filterNodes.push(
Fire Causes: {this.props.filter.fireCauses.join(\", \")}
);\r\n }\r\n\r\n if (this.props.filter.categories !== null && this.props.filter.categories.length > 0)\r\n {\r\n filterNodes.push(
Incident Type: {this.props.filter.categories.join(\", \")}
);\r\n }\r\n\r\n if (this.props.filter.state !== null)\r\n {\r\n filterNodes.push(
State: {this.props.filter.state}
);\r\n }\r\n\r\n if (this.props.filter.county !== null)\r\n {\r\n filterNodes.push(
County: {this.props.filter.county}
);\r\n }\r\n\r\n if (this.props.filter.strategies !== null && this.props.filter.strategies.length > 0)\r\n {\r\n filterNodes.push(
Initial Fire Strategies: {this.props.filter.strategies.join(\", \")}
);\r\n }\r\n\r\n if (this.props.filter.landownerCategories !== null && this.props.filter.landownerCategories.length > 0)\r\n {\r\n filterNodes.push(
Landowner Categories: {this.props.filter.landownerCategories.join(\", \")}
);\r\n }\r\n\r\n if (this.props.filter.fireAcresMin !== null || this.props.filter.fireAcresMax !== null)\r\n {\r\n filterNodes.push(
Fire Acres: Min: {this.props.filter.fireAcresMin} Max: {this.props.filter.fireAcresMax}
);\r\n }\r\n\r\n return filterNodes;\r\n}\r\n\r\nuserMenuClick = (event) => {\r\n event.preventDefault();\r\n\r\n this.setState({\r\n userMenuOpen: true,\r\n anchorEl: event.currentTarget,\r\n });\r\n};\r\n\r\ndownloadCsv = () =>\r\n{\r\n this.child.current.downloadCsv();\r\n}\r\n\r\n\r\nhandleClose = () => {\r\n this.setState({\r\n userMenuOpen: false,\r\n anchorEl: null,\r\n });\r\n}\r\n\r\n handleGenerateSummaries = () =>\r\n {\r\n this.setState({\r\n isLoading: true\r\n });\r\n\r\n let currentIncidents = this.props.scopedIncidents;\r\n\r\n this.setState({\r\n dataLoaded: true,\r\n incidents: currentIncidents,\r\n isLoading: false\r\n });\r\n }\r\n\r\n render() {\r\n\r\n const loadingSpinner = (this.state.isLoading) ? ( ) : \"\";\r\n const actions = [\r\n {\r\n\r\n history.push({\r\n pathname: '/reporting/print',\r\n state:\r\n {\r\n incidents: this.state.incidents,\r\n summaries: this.state.selectedSummaries,\r\n extent: this.props.extent,\r\n definitionExpression: this.props.definitionExpression,\r\n screenshot: this.props.screenshot\r\n }\r\n });\r\n }\r\n }\r\n />,\r\n ,\r\n \r\n ];\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n Reporting\r\n \r\n \r\n \r\n\r\n \r\n
\r\n
\r\n

Available Summaries

\r\n \r\n {['County','Fire Cause','Fire Cause General','Jurisdictional Agency','Jurisdictional Unit', 'Protecting Unit', 'Protecting Agency', 'Incident Category','Landowner Category', 'Size Class', 'State'].map(value => {\r\n const labelId = `checkbox-list-label-${value}`;\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n })}\r\n \r\n {loadingSpinner}\r\n
\r\n
\r\n
\r\n { this.generateFilterList() }\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n appConfig: state.config,\r\n filter: state.filter\r\n})\r\n\r\n\r\nconst mapDispatchToProps = function (dispatch) {\r\n return bindActionCreators({\r\n ...filterOperations\r\n }, dispatch);\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ReportingDialog)\r\n","import React, { Component } from 'react';\r\nimport { connect } from 'react-redux';\r\n\r\nimport ReportingDialog from './ReportingDialog';\r\nimport { history } from '../../index';\r\n\r\nclass Main extends Component {\r\n\r\n render() {\r\n\r\n return (\r\n \r\n {\r\n history.goBack();\r\n }} />\r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n appConfig: state.config,\r\n map: state.map\r\n})\r\n\r\nexport default connect(mapStateToProps)(Main)\r\n","import React, { Component } from 'react';\r\n\r\nimport RaisedButton from 'material-ui/RaisedButton';\r\nimport SummariesList from '../SummariesList';\r\nimport './index.css';\r\nimport {history} from '../../../index';\r\n\r\nclass Main extends Component {\r\n\r\n componentDidMount() {\r\n setTimeout(() => {\r\n window.print()\r\n }, 1500);\r\n }\r\n\r\n render()\r\n {\r\n return (\r\n
\r\n {\r\n history.goBack();\r\n }}\r\n label=\"Back\" />\r\n\r\n \r\n
\r\n )\r\n }\r\n}\r\n\r\nexport default Main\r\n","import React, { Component } from 'react';\r\nimport { connect } from 'react-redux';\r\n\r\nimport DataDictionaryPanel from './DataDictionaryPanel';\r\nimport { history } from '../../index';\r\n\r\nclass Main extends Component {\r\n\r\n render() {\r\n return (\r\n {\r\n history.goBack();\r\n }} />\r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n appConfig: state.config,\r\n map: state.map\r\n})\r\n\r\n\r\nexport default connect(mapStateToProps)(Main)\r\n","import React, { Component } from 'react';\r\nimport { Route, Redirect, Switch } from 'react-router';\r\nimport { bindActionCreators } from 'redux';\r\nimport { connect } from 'react-redux';\r\nimport { history } from '../index';\r\nimport { mapOperations } from '../redux/map';\r\nimport { authOperations } from '../redux/auth';\r\nimport { filterOperations } from '../redux/filter';\r\nimport { userOperations } from '../redux/user';\r\nimport { customFilterOperations } from '../redux/customFilter';\r\nimport { configOperations } from '../redux/config';\r\nimport { incidentsOperations } from '../redux/incidentList';\r\n\r\nimport Header from './Header';\r\nimport Report from './report/Report';\r\nimport Map from './esri/Map';\r\nimport Dialog from 'material-ui/Dialog';\r\nimport FlatButton from 'material-ui/FlatButton';\r\nimport IncidentDiscovery from './incidentDiscovery';\r\nimport IncidentDetails from './incidentDetails';\r\nimport NewIncident from './newIncident';\r\nimport Reporting from './reporting';\r\nimport Print from './reporting/print';\r\nimport Dictionary from './dictionary';\r\nimport * as JsDiff from 'diff';\r\n\r\nimport {\r\n getOriginLayerFieldInfos,\r\n getOriginLayerFeatures,\r\n onOriginLayerUpdateEnd,\r\n setOriginLayerDefinitionExpression, onMapExtentChanged, setCustomFilterDefinitionExpression\r\n} from './esri/mapHub';\r\n\r\n\r\nclass Main extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n showError: false\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n window.api.setAuth(this.props.auth.user);\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n if (JSON.stringify(prevProps.filter) === JSON.stringify(this.props.filter)) {\r\n return;\r\n }\r\n\r\n let filterDiffs = JsDiff.diffWords(JSON.stringify(prevProps.filter), JSON.stringify(this.props.filter));\r\n //Dont refresh map if the only thing happening is we're not loading anymore\r\n if (filterDiffs.length === 4 && filterDiffs[0].value.replace(/\"/g, '').endsWith(\"loading:\")) {\r\n return;\r\n }\r\n\r\n //Dont refresh map if the only thing happening is we're not using basic filter anymore\r\n if (filterDiffs.length === 4 && filterDiffs[0].value.replace(/\"/g, '').endsWith(\"isBasicFilterActive:\")) {\r\n return;\r\n }\r\n\r\n //Don't refresh map if we're just changing selected incidents\r\n if (filterDiffs.length === 4 && filterDiffs[0].value.replace(/\"/g, '').endsWith(\"uniqueFireIds:[\")) {\r\n return;\r\n }\r\n\r\n\r\n this.filterMap();\r\n }\r\n\r\n onMapLoaded = () => {\r\n\r\n getOriginLayerFieldInfos().then(fields => {\r\n //set the fields to the redux store\r\n this.props.setOriginFieldInfos(fields);\r\n });\r\n\r\n\r\n this.startWatchingPointOfOriginUpdates();\r\n this.startWatchingExtent();\r\n\r\n this.props.mapLoaded();\r\n }\r\n\r\n onMapLoadError = () => \r\n {\r\n this.setState({ showError: true });\r\n }\r\n\r\n filterMap = () => {\r\n\r\n if (this.props.filter.isBasicFilterActive) \r\n {\r\n this.props.setFilterLoading(true);\r\n \r\n setOriginLayerDefinitionExpression(this.props.filter).then( response => {\r\n this.props.setQueriedIncidentsTotal(response.total);\r\n this.props.setDisplayedIncidentsCount(response.features.length);\r\n this.props.setIncidents(response.features);\r\n this.props.setVisibleIncidents(response.features);\r\n this.props.setFilterLoading(false);\r\n });\r\n this.props.setBasicFilterActive(true);\r\n }\r\n else \r\n {\r\n setCustomFilterDefinitionExpression(this.props.user.activeCustomFilter).then( response => {\r\n this.props.setQueriedIncidentsTotal(response.total);\r\n this.props.setDisplayedIncidentsCount(response.features.length);\r\n this.props.setIncidents(response.features);\r\n this.props.setVisibleIncidents(response.features);\r\n this.props.setFilterLoading(false);\r\n });\r\n }\r\n }\r\n\r\n startWatchingPointOfOriginUpdates() {\r\n if (!this.handlePointOfOriginUpdates) {\r\n // const originLayerName = this.props.appConfig.originLayer.layerName;\r\n onOriginLayerUpdateEnd(this.onPointOfOriginUpdated);\r\n }\r\n }\r\n\r\n stopWatchingPointOfOriginUpdates() {\r\n if (this.handlePointOfOriginUpdates) {\r\n this.handlePointOfOriginUpdates.remove();\r\n delete this.handlePointOfOriginUpdates;\r\n }\r\n }\r\n\r\n onPointOfOriginUpdated = (args, handle) => {\r\n this.handlePointOfOriginUpdates = handle;\r\n this.props.setFilterLoading(args.updating);\r\n if (args.updating) {\r\n this.stopWatchingExtent();\r\n }\r\n else {\r\n //this.props.setIncidents(args.graphics);\r\n //this.props.setVisibleIncidents(args.visibleGraphics);\r\n this.startWatchingExtent();\r\n }\r\n }\r\n\r\n startWatchingExtent() {\r\n if (!this.extentHandle) {\r\n onMapExtentChanged((extent) => {\r\n this.onExtentChanged(extent);\r\n //this.extentHandle = handle;\r\n });\r\n }\r\n }\r\n\r\n stopWatchingExtent() {\r\n //if (this.extentHandle) {\r\n // this.extentHandle.remove();\r\n // delete this.extentHandle;\r\n // }\r\n }\r\n\r\n onExtentChanged = (extent) => {\r\n getOriginLayerFeatures(extent).then(\r\n results => {\r\n //this.props.setVisibleIncidents(results.graphics);\r\n }\r\n );\r\n }\r\n\r\n handleMapIncidentSelection = (forId) => {\r\n if (forId) \r\n {\r\n history.push('/incidents/' + forId);\r\n }\r\n }\r\n\r\n handlePerimeterAddIrwinId = (incident) => {\r\n this.props.setAddIrwinIdToPerimeter(incident);\r\n }\r\n\r\n render() {\r\n\r\n const errorBlock = (this.props.auth.hasNoRoles) ?\r\n (Your account doesn't appear to have any roles assigned to it for InFORM.

Please request an access role here

Or you can sign out and log back in with a different NIFC Org account\r\n \r\n
)\r\n : (Error: Inspector was unable to load the Incidents layer and cannot proceed.

This typically occurs when the map services are unavailable or offline.

You may try reloading your browser.

)\r\n return (this.state.showError) ? (errorBlock) :\r\n (\r\n
\r\n \r\n (\"\")} exact />\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\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\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n map: state.map,\r\n auth: state.auth,\r\n appConfig: state.config,\r\n filter: state.filter,\r\n customFilter: state.customFilter,\r\n incidentList: state.incidentList,\r\n user: state.user\r\n})\r\n\r\nconst mapDispatchToProps = function (dispatch) {\r\n return bindActionCreators({\r\n ...mapOperations,\r\n ...authOperations,\r\n ...configOperations,\r\n ...filterOperations,\r\n ...customFilterOperations,\r\n ...incidentsOperations,\r\n ...userOperations\r\n }, dispatch);\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Main)\r\n","import { loadModules } from 'esri-loader';\r\nimport { bootstrapJSAPI } from '../../../utils/esriLoader';\r\n\r\nexport default class AuthManager {\r\n constructor(appId, portalUrl, jsapiUrl, loginWithPopup, use3D, useWVLogin) {\r\n this.appId = appId;\r\n this.portalUrl = (useWVLogin) ? \"https://wvdof.maps.arcgis.com\" : portalUrl;\r\n this.jsapiUrl = jsapiUrl;\r\n this.loginWithPopup = loginWithPopup;\r\n this.use3D = use3D\r\n }\r\n\r\n startup = () => {\r\n\r\n return new Promise((resolve, reject) => {\r\n bootstrapJSAPI(this.portalUrl, this.jsapiUrl, this.use3D)\r\n .then(success => {\r\n loadModules([\r\n 'esri/identity/IdentityManager', 'esri/identity/OAuthInfo'\r\n ])\r\n .then( ([esriId, OAuthInfo]) => {\r\n this.idManager = esriId;\r\n this.idManager.useSignInPage = !this.loginWithPopup;\r\n this.oAuthInfo = new OAuthInfo({appId: this.appId, portalUrl: this.portalUrl, popup: this.loginWithPopup});\r\n this.idManager.registerOAuthInfos([this.oAuthInfo]);\r\n resolve();\r\n });\r\n })\r\n .catch(err => { reject(); });\r\n });\r\n }\r\n\r\n login = () => {\r\n return new Promise((resolve, reject) => {\r\n this.checkLogin().then(\r\n success => {\r\n this.getUser().then(resolve, reject);\r\n },\r\n failed => {\r\n this.doLogin().then(user => resolve(user), error => reject(error));\r\n }\r\n )\r\n });\r\n }\r\n\r\n checkLogin = () => {\r\n return new Promise((resolve, reject) => {\r\n const sharingUrl = this.portalUrl + '/sharing';\r\n\r\n this.idManager.checkSignInStatus(sharingUrl)\r\n .then(credential => {\r\n window.api.setToken(credential.token);\r\n window.api.setCredential(credential);\r\n this.getUser().then(resolve, reject);\r\n })\r\n .catch(() => {\r\n reject('User is not logged in');\r\n });\r\n });\r\n }\r\n\r\n doLogin = () => {\r\n \r\n return new Promise((resolve, reject) => {\r\n const sharingUrl = this.portalUrl + '/sharing';\r\n\r\n this.idManager.getCredential(sharingUrl, {oAuthPopupConfirmation: false}).then((credential) => {\r\n this.getUser().then(resolve, reject);\r\n }).catch(err => { reject(); });\r\n });\r\n }\r\n\r\n getUser = () => {\r\n return new Promise((resolve, reject) => {\r\n loadModules(['esri/portal/Portal'])\r\n .then( ([Portal]) => {\r\n let portal = new Portal({\r\n url: this.portalUrl,\r\n authMode: \"immediate\"\r\n });\r\n portal.load().then(() => {\r\n this.user = portal.user;\r\n resolve(portal.user);\r\n }).catch(err => { reject(); });\r\n });\r\n });\r\n }\r\n\r\n logout = () => {\r\n loadModules(['dojo/cookie'])\r\n .then( ([cookie]) => {\r\n // dojo cookies hates me\r\n cookie('esri_auth', '{platbuilder: \"logout\"}', {\r\n expire: -1,\r\n expires: -1,\r\n path: '/'\r\n });\r\n this.idManager.destroyCredentials();\r\n\r\n // it seems strange to sign out of eaglei even for outside org users,\r\n // but this works for both eaglei and outside users, whereas signing out of\r\n // generic arcgis.com only works for outside users.\r\n window.api.logout().then(\r\n success => {\r\n window.location.reload();\r\n },\r\n error => {\r\n console.error(error);\r\n }\r\n )\r\n });\r\n }\r\n\r\n getToken = () => {\r\n return this.idManager.findCredential(this.portalUrl, this.user.username).token;\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\nimport { bindActionCreators } from 'redux';\r\nimport { connect } from 'react-redux';\r\nimport { Switch, Route } from 'react-router';\r\nimport { authOperations } from '../redux/auth';\r\nimport { configOperations } from '../redux/config';\r\nimport { customFilterOperations } from '../redux/customFilter';\r\nimport { userOperations } from '../redux/user';\r\nimport { filterOperations } from '../redux/filter';\r\nimport { mapOperations } from '../redux/map';\r\n\r\nimport Splash from './Splash';\r\nimport ErrorPage from './Error';\r\nimport Login from './Login';\r\nimport Main from './Main';\r\nimport AuthManager from './esri/auth/AuthManager';\r\nimport { history } from '../index';\r\n\r\nimport './App.css';\r\n\r\nclass App extends Component {\r\n\r\n constructor(props) {\r\n\r\n super(props);\r\n this.props.fetchConfig();\r\n\r\n this.state = {\r\n useWVLogin: false,\r\n authStarted: false\r\n };\r\n\r\n }\r\n \r\n componentDidMount () {\r\n\r\n const urlSearchParams = new URLSearchParams(window.location.search);\r\n const useWVLogin = urlSearchParams.get('useWVLogin') === \"true\";\r\n\r\n this.setState({\r\n useWVLogin: useWVLogin\r\n });\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) \r\n {\r\n\r\n const isLoaded = this.props.appConfig && this.props.appConfig.loaded;\r\n const authTried = this.props.auth && this.props.auth.loaded;\r\n const tryGroups = authTried && this.props.auth.user && this.props.auth.user.username && !this.props.auth.rolesLoaded;\r\n\r\n if (isLoaded && !authTried && !this.state.authStarted) \r\n {\r\n window.authManager = new AuthManager(\r\n this.props.appConfig.appId[this.props.appConfig.env],\r\n this.props.appConfig.portalUrl,\r\n this.props.appConfig.jsapiUrl,\r\n this.props.appConfig.loginWithPopup,\r\n this.props.appConfig.use3D,\r\n this.state.useWVLogin\r\n );\r\n window.authManager.startup().then(this.props.checkAuth);\r\n this.setState({\r\n authStarted: true\r\n });\r\n }\r\n if(tryGroups)\r\n {\r\n this.loadPropsFromURL();\r\n\r\n window.api.getUserGroups(this.props.auth.user.username, this.state.useWVLogin).then(response => {\r\n\r\n const inReadOnlyGroup = response.groups.filter(group => { return group.id === this.props.appConfig.readOnlyGroupId[this.props.appConfig.env]}).length === 1;\r\n const inReadWriteGroup = response.groups.filter(group => { return group.id === this.props.appConfig.inspectorGroupId[this.props.appConfig.env]}).length === 1;\r\n const inCertifierGroup = response.groups.filter(group => { return group.id === this.props.appConfig.certifierGroupId[this.props.appConfig.env]}).length === 1;\r\n const inAdminGroup = response.groups.filter(group => { return group.id === this.props.appConfig.adminGroupId[this.props.appConfig.env]}).length === 1;\r\n\r\n const currentlyNonProduction = this.props.appConfig.env !== \"prod\";\r\n let inNoGroups = (!inReadOnlyGroup && !inReadWriteGroup && !inCertifierGroup);\r\n\r\n if (currentlyNonProduction && inNoGroups)\r\n {\r\n if (this.hasProductionRole(response.groups))\r\n {\r\n inNoGroups = false;\r\n this.props.setIsReadOnly(false);\r\n }\r\n }\r\n\r\n if (inNoGroups)\r\n {\r\n this.props.setNoRoles(true);\r\n }\r\n this.props.setIsCertifier(response.groups.filter(group => { return group.id === this.props.appConfig.certifierGroupId[this.props.appConfig.env]}).length === 1);\r\n this.props.setIsReadOnly(inReadOnlyGroup && !inReadWriteGroup);\r\n this.props.setIsAdmin(inAdminGroup);\r\n\r\n const apiUrl = this.props.appConfig.originApiUrl[this.props.appConfig.env];\r\n window.api.getUserSession(apiUrl).then(response => \r\n {\r\n if (this.props.customFilter.customFilters && this.props.customFilter.customFilters.length > 0) \r\n {\r\n window.api.importCustomFiltersFromReduxStore(apiUrl, this.props.customFilter.customFilters).then(response => {\r\n this.props.setCustomFilters(response);\r\n this.props.nukeFilters();\r\n }); \r\n } \r\n else \r\n {\r\n this.props.setCustomFilters(response.CustomFilters);\r\n }\r\n });\r\n });\r\n }\r\n }\r\n\r\n hasProductionRole(groups)\r\n {\r\n const inProductionReadOnlyGroup = groups.filter(group => { return group.id === this.props.appConfig.readOnlyGroupId[\"prod\"]}).length === 1;\r\n const inProductionReadWriteGroup = groups.filter(group => { return group.id === this.props.appConfig.inspectorGroupId[\"prod\"]}).length === 1;\r\n const inProductionCertifierGroup = groups.filter(group => { return group.id === this.props.appConfig.inspectorGroupId[\"prod\"]}).length === 1;\r\n\r\n return (inProductionReadOnlyGroup || inProductionReadWriteGroup || inProductionCertifierGroup);\r\n }\r\n\r\n loadPropsFromURL () {\r\n if(window.location.search) {\r\n const urlSearchParams = new URLSearchParams(window.location.search);\r\n const filterProps = urlSearchParams.get('filter');\r\n const mapProps = urlSearchParams.get('map');\r\n\r\n if(mapProps)\r\n {\r\n this.props.manualRehydrateMap(JSON.parse(mapProps));\r\n }\r\n if(filterProps)\r\n {\r\n this.props.manualRehydrateFilter(JSON.parse(filterProps));\r\n }\r\n history.push('/incidents');\r\n }\r\n }\r\n\r\n render() {\r\n // We'll use these to determine what state the app is in\r\n const configLoaded = this.props.appConfig.loaded;\r\n const authTried = this.props.auth.loaded;\r\n const isAuthenticated = this.props.auth.user && this.props.auth.user.username && this.props.auth.rolesLoaded;\r\n\r\n // Three possible states:\r\n // 1. App is initializing --> show splash component\r\n // 2. User is not logged in --> show login component\r\n // 3. User is logged in --> show Main component\r\n\r\n const hasError = false;\r\n if (hasError) {\r\n return \r\n }\r\n\r\n //\r\n // 1. App is initializing\r\n //\r\n if (!configLoaded || !authTried) {\r\n return \r\n }\r\n //\r\n // 2. User is not logged in\r\n //\r\n else if (!isAuthenticated) {\r\n return (\r\n
\r\n \r\n
\r\n )\r\n }\r\n //\r\n // 3. User is logged in\r\n //\r\n else {\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n auth: state.auth,\r\n appConfig: state.config,\r\n filter: state.filter,\r\n customFilter: state.customFilter,\r\n user: state.userOperations\r\n})\r\n\r\nconst mapDispatchToProps = function (dispatch) {\r\n return bindActionCreators({\r\n ...authOperations,\r\n ...configOperations,\r\n ...filterOperations,\r\n ...customFilterOperations,\r\n ...mapOperations,\r\n ...userOperations\r\n }, dispatch);\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(App)\r\n","//React\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport Dialog from 'material-ui/Dialog';\r\nimport logo from './images/nifc-logo-small.png';\r\nimport Bowser from \"bowser\";\r\n// Redux\r\nimport { Provider } from 'react-redux'\r\n\r\nimport { PersistGate } from 'redux-persist/integration/react';\r\nimport configureStore from './redux/configureStore';\r\n\r\n// React Router\r\nimport { createBrowserHistory } from 'history'\r\nimport { Router, Route } from 'react-router-dom';\r\n\r\n// Material UI\r\nimport MuiThemeProvider from 'material-ui/styles/MuiThemeProvider';\r\nimport theme from './muiTheme';\r\n\r\nimport Api from './services/api';\r\nimport App from './components/App';\r\n// import Splash from './components/Splash';\r\nimport './index.css';\r\n\r\n\r\n// URLSearchParams Polyfill\r\nconst URLSearchParams = require('url-search-params');\r\nif (!window.URLSearchParams) {\r\n window.URLSearchParams = URLSearchParams;\r\n}\r\n\r\nif (!Array.from){\r\n Array.from = require('array-from');\r\n}\r\n\r\nif (!Array.prototype.includes) {\r\n /*eslint no-extend-native: [\"error\", { \"exceptions\": [\"Array\"] }]*/\r\n Object.defineProperty(Array.prototype, 'includes', {\r\n value: function(searchElement, fromIndex) {\r\n\r\n if (this == null) {\r\n throw new TypeError('\"this\" is null or not defined');\r\n }\r\n\r\n // 1. Let O be ? ToObject(this value).\r\n var o = Object(this);\r\n\r\n // 2. Let len be ? ToLength(? Get(O, \"length\")).\r\n var len = o.length >>> 0;\r\n\r\n // 3. If len is 0, return false.\r\n if (len === 0) {\r\n return false;\r\n }\r\n\r\n // 4. Let n be ? ToInteger(fromIndex).\r\n // (If fromIndex is undefined, this step produces the value 0.)\r\n var n = fromIndex | 0;\r\n\r\n // 5. If n ≥ 0, then\r\n // a. Let k be n.\r\n // 6. Else n < 0,\r\n // a. Let k be len + n.\r\n // b. If k < 0, let k be 0.\r\n var k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);\r\n\r\n function sameValueZero(x, y) {\r\n return x === y || (typeof x === 'number' && typeof y === 'number' && isNaN(x) && isNaN(y));\r\n }\r\n\r\n // 7. Repeat, while k < len\r\n while (k < len) {\r\n // a. Let elementK be the result of ? Get(O, ! ToString(k)).\r\n // b. If SameValueZero(searchElement, elementK) is true, return true.\r\n if (sameValueZero(o[k], searchElement)) {\r\n return true;\r\n }\r\n // c. Increase k by 1.\r\n k++;\r\n }\r\n\r\n // 8. Return false\r\n return false;\r\n }\r\n });\r\n}\r\n\r\nwindow.api = new Api();\r\nconst basename = process.env.PUBLIC_URL;\r\n\r\nexport const history = createBrowserHistory({ basename });\r\nconst { store, persistor } = configureStore();\r\n\r\nconst browser = Bowser.getParser(window.navigator.userAgent);\r\nconst isValidBrowser = browser.satisfies({\r\n chrome: \">=65.0.3325\",\r\n edge: \">=65.0.3325\",\r\n firefox: \">=31\"\r\n});\r\n\r\nconst browserHandler = (isValidBrowser) ? () : (\r\n \r\n
\r\n
\r\n \"National\r\n

InFORM Inspector has been optimized to work with Chromium-based browsers, and may not perform adequately with other browsers.

\r\n

You can download Google Chrome by clicking on the link below.

\r\n \r\n \"Google\r\n \r\n\r\n
\r\n
\r\n \r\n);\r\n\r\nReactDOM.render(\r\n \r\n \r\n \r\n \r\n { browserHandler }\r\n \r\n \r\n \r\n ,\r\n document.getElementById('root')\r\n)\r\n","Object.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\n\r\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\r\n\r\nvar _react = require('react');\r\n\r\nvar _react2 = _interopRequireDefault(_react);\r\n\r\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\r\n\r\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\r\n\r\nvar PlusIcon = function PlusIcon(_ref) {\r\n var _ref$width = _ref.width,\r\n width = _ref$width === undefined ? 24 : _ref$width,\r\n _ref$height = _ref.height,\r\n height = _ref$height === undefined ? 24 : _ref$height,\r\n _ref$viewBox = _ref.viewBox,\r\n viewBox = _ref$viewBox === undefined ? '0 0 24 24' : _ref$viewBox,\r\n className = _ref.className,\r\n props = _objectWithoutProperties(_ref, ['width', 'height', 'viewBox', 'className', 'children']);\r\n\r\n var classes = 'mdi-icon';\r\n if (className) classes += ' ' + className;\r\n\r\n return _react2.default.createElement(\r\n 'svg',\r\n _extends({}, props, { width: width, height: height, viewBox: viewBox, className: classes }),\r\n _react2.default.createElement('path', { d: 'M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z' })\r\n );\r\n};\r\n\r\nexports.default = PlusIcon;\r\n","Object.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\n\r\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\r\n\r\nvar _react = require('react');\r\n\r\nvar _react2 = _interopRequireDefault(_react);\r\n\r\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\r\n\r\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\r\n\r\nvar DeleteIcon = function DeleteIcon(_ref) {\r\n var _ref$width = _ref.width,\r\n width = _ref$width === undefined ? 24 : _ref$width,\r\n _ref$height = _ref.height,\r\n height = _ref$height === undefined ? 24 : _ref$height,\r\n _ref$viewBox = _ref.viewBox,\r\n viewBox = _ref$viewBox === undefined ? '0 0 24 24' : _ref$viewBox,\r\n className = _ref.className,\r\n props = _objectWithoutProperties(_ref, ['width', 'height', 'viewBox', 'className', 'children']);\r\n\r\n var classes = 'mdi-icon';\r\n if (className) classes += ' ' + className;\r\n\r\n return _react2.default.createElement(\r\n 'svg',\r\n _extends({}, props, { width: width, height: height, viewBox: viewBox, className: classes }),\r\n _react2.default.createElement('path', { d: 'M19,4H15.5L14.5,3H9.5L8.5,4H5V6H19M6,19C6,20.1 6.9,21 8,21H16C17.1,21 18,20.1 18,19V7H6V19Z' })\r\n );\r\n};\r\n\r\nexports.default = DeleteIcon;\r\n"],"sourceRoot":""}